⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 orderstats.bsh

📁 Sequoia ERP是一个真正的企业级开源ERP解决方案。它提供的模块包括:电子商务应用(e-commerce), POS系统(point of sales),知识管理,存货与仓库管理
💻 BSH
字号:
/* *  Copyright (c) 2003 The Open For Business Project - www.ofbiz.org * *  Permission is hereby granted, free of charge, to any person obtaining a  *  copy of this software and associated documentation files (the "Software"),  *  to deal in the Software without restriction, including without limitation  *  the rights to use, copy, modify, merge, publish, distribute, sublicense,  *  and/or sell copies of the Software, and to permit persons to whom the  *  Software is furnished to do so, subject to the following conditions: * *  The above copyright notice and this permission notice shall be included  *  in all copies or substantial portions of the Software. * *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF  *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  *  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  *  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT  *  OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR  *  THE USE OR OTHER DEALINGS IN THE SOFTWARE. * *@author     Andy Zeneski (jaz@ofbiz.org) *@version    $Rev: 5462 $ *@since      2.2*/import java.util.*;import java.sql.Timestamp;import org.ofbiz.entity.*;import org.ofbiz.entity.condition.*;import org.ofbiz.entity.util.*;import org.ofbiz.base.util.*;double calcItemTotal(List headers) {    double total = 0.00;    Iterator i = headers.iterator();    while (i.hasNext()) {        GenericValue header = (GenericValue) i.next();                  total += (header.get("grandTotal") != null ? header.getDouble("grandTotal").doubleValue() : 0.00);    }    return total;}    double calcItemCount(List items) {    double count = 0.0000;    Iterator i = items.iterator();    while (i.hasNext()) {        GenericValue item = (GenericValue) i.next();        count += (item.get("quantity") != null ? item.getDouble("quantity").doubleValue() : 0.0000);    }    return count;}delegator = request.getAttribute("delegator");Timestamp endTime = UtilDateTime.nowTimestamp();Calendar cal = Calendar.getInstance();cal.set(Calendar.AM_PM, Calendar.AM);cal.set(Calendar.HOUR, 0);cal.set(Calendar.MINUTE, 0);cal.set(Calendar.SECOND, 0);    cal.set(Calendar.MILLISECOND, 0);   Timestamp dayBegin = new Timestamp(cal.getTime().getTime());               cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);Timestamp weekBegin = new Timestamp(cal.getTime().getTime());        cal.set(Calendar.DAY_OF_MONTH, 1);Timestamp monthBegin = new Timestamp(cal.getTime().getTime());        cal.set(Calendar.MONTH, 0);Timestamp yearBegin = new Timestamp(cal.getTime().getTime());         // order status reportList dayList = delegator.findByAnd("OrderStatus", UtilMisc.toList(new EntityExpr("orderItemSeqId", EntityOperator.EQUALS, null), new EntityExpr("statusDatetime", EntityOperator.GREATER_THAN_EQUAL_TO, dayBegin)));context.put("dayOrder", EntityUtil.filterByAnd(dayList, UtilMisc.toMap("statusId", "ORDER_ORDERED")));context.put("dayApprove", EntityUtil.filterByAnd(dayList, UtilMisc.toMap("statusId", "ORDER_APPROVED")));context.put("dayComplete", EntityUtil.filterByAnd(dayList, UtilMisc.toMap("statusId", "ORDER_COMPLETED")));context.put("dayCancelled", EntityUtil.filterByAnd(dayList, UtilMisc.toMap("statusId", "ORDER_CANCELLED")));context.put("dayRejected", EntityUtil.filterByAnd(dayList, UtilMisc.toMap("statusId", "ORDER_REJECTED")));  List weekList = delegator.findByAnd("OrderStatus", UtilMisc.toList(new EntityExpr("orderItemSeqId", EntityOperator.EQUALS, null), new EntityExpr("statusDatetime", EntityOperator.GREATER_THAN_EQUAL_TO, weekBegin)));context.put("weekOrder", EntityUtil.filterByAnd(weekList, UtilMisc.toMap("statusId", "ORDER_ORDERED")));context.put("weekApprove", EntityUtil.filterByAnd(weekList, UtilMisc.toMap("statusId", "ORDER_APPROVED")));context.put("weekComplete", EntityUtil.filterByAnd(weekList, UtilMisc.toMap("statusId", "ORDER_COMPLETED")));context.put("weekCancelled", EntityUtil.filterByAnd(weekList, UtilMisc.toMap("statusId", "ORDER_CANCELLED")));context.put("weekRejected", EntityUtil.filterByAnd(weekList, UtilMisc.toMap("statusId", "ORDER_REJECTED")));  List monthList = delegator.findByAnd("OrderStatus", UtilMisc.toList(new EntityExpr("orderItemSeqId", EntityOperator.EQUALS, null), new EntityExpr("statusDatetime", EntityOperator.GREATER_THAN_EQUAL_TO, monthBegin)));context.put("monthOrder", EntityUtil.filterByAnd(monthList, UtilMisc.toMap("statusId", "ORDER_ORDERED")));context.put("monthApprove", EntityUtil.filterByAnd(monthList, UtilMisc.toMap("statusId", "ORDER_APPROVED")));context.put("monthComplete", EntityUtil.filterByAnd(monthList, UtilMisc.toMap("statusId", "ORDER_COMPLETED")));context.put("monthCancelled", EntityUtil.filterByAnd(monthList, UtilMisc.toMap("statusId", "ORDER_CANCELLED")));context.put("monthRejected", EntityUtil.filterByAnd(monthList, UtilMisc.toMap("statusId", "ORDER_REJECTED")));  List yearList = delegator.findByAnd("OrderStatus", UtilMisc.toList(new EntityExpr("orderItemSeqId", EntityOperator.EQUALS, null), new EntityExpr("statusDatetime", EntityOperator.GREATER_THAN_EQUAL_TO, yearBegin)));context.put("yearOrder", EntityUtil.filterByAnd(yearList, UtilMisc.toMap("statusId", "ORDER_ORDERED")));context.put("yearApprove", EntityUtil.filterByAnd(yearList, UtilMisc.toMap("statusId", "ORDER_APPROVED")));context.put("yearComplete", EntityUtil.filterByAnd(yearList, UtilMisc.toMap("statusId", "ORDER_COMPLETED")));context.put("yearCancelled", EntityUtil.filterByAnd(yearList, UtilMisc.toMap("statusId", "ORDER_CANCELLED")));context.put("yearRejected", EntityUtil.filterByAnd(yearList, UtilMisc.toMap("statusId", "ORDER_REJECTED")));  // order totals and item countsList dayItemExpr = UtilMisc.toList(new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_REJECTED"), new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_CANCELLED"), new EntityExpr("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, dayBegin), new EntityExpr("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));List dayItems = delegator.findByAnd("OrderHeaderAndItems", dayItemExpr);List dayItemsPending = EntityUtil.filterByAnd(dayItems, UtilMisc.toMap("itemStatusId", "ITEM_ORDERED"));              List dayHeaderExpr = UtilMisc.toList(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "ORDER_REJECTED"), new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "ORDER_CANCELLED"), new EntityExpr("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, dayBegin), new EntityExpr("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));List dayHeaders = delegator.findByAnd("OrderHeader", dayHeaderExpr);List dayHeadersPending = EntityUtil.filterByAnd(dayHeaders, UtilMisc.toMap("statusId", "ORDER_ORDERED"));                                                    double dayItemTotal = calcItemTotal(dayHeaders);double dayItemCount = calcItemCount(dayItems);double dayItemTotalPending = calcItemTotal(dayHeadersPending);double dayItemCountPending = calcItemCount(dayItemsPending);double dayItemTotalPaid = dayItemTotal - dayItemTotalPending;double dayItemCountPaid = dayItemCount - dayItemCountPending;context.put("dayItemTotal", dayItemTotal);context.put("dayItemCount", dayItemCount);context.put("dayItemTotalPending", dayItemTotalPending);context.put("dayItemCountPending", dayItemCountPending);context.put("dayItemTotalPaid", dayItemTotalPaid);context.put("dayItemCountPaid", dayItemCountPaid);  List weekItemExpr = UtilMisc.toList(new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_REJECTED"), new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_CANCELLED"), new EntityExpr("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, weekBegin), new EntityExpr("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));List weekItems = delegator.findByAnd("OrderHeaderAndItems", weekItemExpr);List weekItemsPending = EntityUtil.filterByAnd(weekItems, UtilMisc.toMap("itemStatusId", "ITEM_ORDERED"));          List weekHeaderExpr = UtilMisc.toList(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "ORDER_REJECTED"), new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "ORDER_CANCELLED"), new EntityExpr("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, weekBegin), new EntityExpr("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));List weekHeaders = delegator.findByAnd("OrderHeader", weekHeaderExpr);List weekHeadersPending = EntityUtil.filterByAnd(weekHeaders, UtilMisc.toMap("statusId", "ORDER_ORDERED"));          double weekItemTotal = calcItemTotal(weekHeaders);double weekItemCount = calcItemCount(weekItems);double weekItemTotalPending = calcItemTotal(weekHeadersPending);double weekItemCountPending = calcItemCount(weekItemsPending);  double weekItemTotalPaid = weekItemTotal - weekItemTotalPending;double weekItemCountPaid = weekItemCount - weekItemCountPending;context.put("weekItemTotal", weekItemTotal);context.put("weekItemCount", weekItemCount);context.put("weekItemTotalPending", weekItemTotalPending);context.put("weekItemCountPending", weekItemCountPending);context.put("weekItemTotalPaid", weekItemTotalPaid);context.put("weekItemCountPaid", weekItemCountPaid); List monthItemExpr = UtilMisc.toList(new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_REJECTED"), new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_CANCELLED"), new EntityExpr("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, monthBegin), new EntityExpr("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));List monthItems = delegator.findByAnd("OrderHeaderAndItems", monthItemExpr);List monthItemsPending = EntityUtil.filterByAnd(monthItems, UtilMisc.toMap("itemStatusId", "ITEM_ORDERED"));List monthHeaderExpr = UtilMisc.toList(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "ORDER_REJECTED"), new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "ORDER_CANCELLED"), new EntityExpr("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, monthBegin), new EntityExpr("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));List monthHeaders = delegator.findByAnd("OrderHeader", monthHeaderExpr);List monthHeadersPending = EntityUtil.filterByAnd(monthHeaders, UtilMisc.toMap("statusId", "ORDER_ORDERED"));   double monthItemTotal = calcItemTotal(monthHeaders);double monthItemCount = calcItemCount(monthItems);double monthItemTotalPending = calcItemTotal(monthHeadersPending);double monthItemCountPending = calcItemCount(monthItemsPending);    double monthItemTotalPaid = monthItemTotal - monthItemTotalPending;double monthItemCountPaid = monthItemCount - monthItemCountPending;context.put("monthItemTotal", monthItemTotal);context.put("monthItemCount", monthItemCount);context.put("monthItemTotalPending", monthItemTotalPending);context.put("monthItemCountPending", monthItemCountPending);context.put("monthItemTotalPaid", monthItemTotalPaid);context.put("monthItemCountPaid", monthItemCountPaid);  List yearItemExpr = UtilMisc.toList(new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_REJECTED"), new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_CANCELLED"), new EntityExpr("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, yearBegin), new EntityExpr("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));List yearItems = delegator.findByAnd("OrderHeaderAndItems", yearItemExpr);List yearItemsPending = EntityUtil.filterByAnd(yearItems, UtilMisc.toMap("itemStatusId", "ITEM_ORDERED"));   List yearHeaderExpr = UtilMisc.toList(new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "ORDER_REJECTED"), new EntityExpr("statusId", EntityOperator.NOT_EQUAL, "ORDER_CANCELLED"), new EntityExpr("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, yearBegin), new EntityExpr("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));List yearHeaders = delegator.findByAnd("OrderHeader", yearHeaderExpr);List yearHeadersPending = EntityUtil.filterByAnd(yearHeaders, UtilMisc.toMap("statusId", "ORDER_ORDERED")); double yearItemTotal = calcItemTotal(yearHeaders);double yearItemCount = calcItemCount(yearItems);double yearItemTotalPending = calcItemTotal(yearHeadersPending);double yearItemCountPending = calcItemCount(yearItemsPending);  double yearItemTotalPaid = yearItemTotal - yearItemTotalPending;double yearItemCountPaid = yearItemCount - yearItemCountPending;context.put("yearItemTotal", yearItemTotal);context.put("yearItemCount", yearItemCount);context.put("yearItemTotalPending", yearItemTotalPending);context.put("yearItemCountPending", yearItemCountPending);context.put("yearItemTotalPaid", yearItemTotalPaid);context.put("yearItemCountPaid", yearItemCountPaid);    // order state reportList waitingPayment = delegator.findByAnd("OrderHeader", UtilMisc.toMap("statusId", "ORDER_ORDERED", "orderTypeId", "SALES_ORDER"));context.put("waitingPayment", waitingPayment.size());List waitingApproval = delegator.findByAnd("OrderHeader", UtilMisc.toMap("statusId", "ORDER_PROCESSING", "orderTypeId", "SALES_ORDER"));context.put("waitingApproval", waitingApproval.size());List waitingComplete = delegator.findByAnd("OrderHeader", UtilMisc.toMap("statusId", "ORDER_APPROVED", "orderTypeId", "SALES_ORDER"));context.put("waitingComplete", waitingComplete.size());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -