From 0d5e8862a684d9d2945b35a6f46d9e2e459d3e36 Mon Sep 17 00:00:00 2001
From: yanyuan <yuan.yan@capgemini.com>
Date: 星期一, 09 十月 2023 11:17:48 +0800
Subject: [PATCH] 填充优化
---
_Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeMacroPlanData.qbl | 3 +
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_PanelFillingCapacityOrder_ButtonDeduct_OnClick.def | 6 ++
_Main/BL/Type_FillingCapacityOrder/StaticMethod_OrderOffset.qbl | 58 +++++++++++++++++++++++++++++
_Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl | 36 ++++++++++++++++++
4 files changed, 101 insertions(+), 2 deletions(-)
diff --git a/_Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl b/_Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl
new file mode 100644
index 0000000..c40a89b
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/StaticMethod_CreateCustomOrder.qbl
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateCustomOrder (
+ MacroPlan macroPlan,
+ FillingCapacityOrder fillingCapacityOrder,
+ Real quantity
+) as CustomerOrder
+{
+ TextBody:
+ [*
+ targetProduct_MP := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = fillingCapacityOrder.ProductID() );
+ targetStockingPoint_MP := select( macroPlan, StockingPoint_MP, tempSPMP, tempSPMP.ID() = fillingCapacityOrder.StockingPointID() );
+
+ targetCustomerOrder := CustomerOrder::Create( targetProduct_MP,
+ targetStockingPoint_MP,
+ OS::GenerateGUIDAsString(),
+ fillingCapacityOrder.OrderDate(),
+ quantity,
+ 0.0,
+ "Normal",
+ fillingCapacityOrder.SalesSegmentName(),
+ fillingCapacityOrder.CurrencyID(),
+ fillingCapacityOrder.UnitOfMeasureName(),
+ false,
+ fillingCapacityOrder.Customer(),
+ fillingCapacityOrder.CustomerID(),
+ "",
+ "",
+ true,
+ true,
+ false
+ );
+
+ return targetCustomerOrder;
+ *]
+}
diff --git a/_Main/BL/Type_FillingCapacityOrder/StaticMethod_OrderOffset.qbl b/_Main/BL/Type_FillingCapacityOrder/StaticMethod_OrderOffset.qbl
new file mode 100644
index 0000000..9dfb713
--- /dev/null
+++ b/_Main/BL/Type_FillingCapacityOrder/StaticMethod_OrderOffset.qbl
@@ -0,0 +1,58 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod OrderOffset (
+ MacroPlan macroPlan
+)
+{
+ TextBody:
+ [*
+ needOffsetFillingCapacityOrders := selectset( macroPlan, FillingCapacityOrder, tempFCO, tempFCO.State() = "鏈啿鍑�" or tempFCO.State() ="" );
+
+ traverse ( needOffsetFillingCapacityOrders, Elements, fco, fco.Quantity() > 0 ) {
+ originalCounterSignedOrder := select( macroPlan, SalesDemand.astype( CustomerOrder ), tempCO, tempCO.CustomerName() = fco.Customer() and
+ tempCO.ProductID() = fco.ProductID() and
+ tempCO.OrderTag() = "鍙嶇"
+ );
+ if ( fco.OrderType() = "鍙嶇" ) {
+ if ( isnull( originalCounterSignedOrder ) ) {
+ customerOrder := FillingCapacityOrder::CreateCustomOrder( macroPlan, fco, fco.Quantity() );
+ customerOrder.OrderTag( "鍙嶇" );
+ } else {
+ originalCounterSignedOrder.Quantity( originalCounterSignedOrder.Quantity() + fco.Quantity() );
+ }
+ } else if ( fco.OrderType() = "鎺堟潈" ) {
+ originalAuthorizedOrder := select( macroPlan, SalesDemand.astype( CustomerOrder ), tempCO, tempCO.CustomerName() = fco.Customer() and
+ tempCO.ProductID() = fco.ProductID() and
+ tempCO.OrderTag() = "鎺堟潈"
+ );
+ if ( isnull( originalCounterSignedOrder ) ) {
+ if ( isnull( originalAuthorizedOrder ) ) {
+ customOrder := FillingCapacityOrder::CreateCustomOrder( macroPlan, fco, fco.Quantity() );
+ customOrder.OrderTag( "鎺堟潈" );
+ } else {
+ originalAuthorizedOrder.Quantity( originalAuthorizedOrder.Quantity() + fco.Quantity() );
+ }
+ } else {
+ numberOfReverseSignatures := originalCounterSignedOrder.Quantity();
+ newNumberOfAuthorizations := ifexpr( ( fco.Quantity() - numberOfReverseSignatures ) >= 0, fco.Quantity() - numberOfReverseSignatures, 0 );
+ numberOfReverseSignatures := ifexpr( ( fco.Quantity() - numberOfReverseSignatures ) >= 0, 0, numberOfReverseSignatures - fco.Quantity() );
+
+ if ( numberOfReverseSignatures >= 0 ) {
+ originalCounterSignedOrder.Quantity( numberOfReverseSignatures );
+ } else {
+ originalCounterSignedOrder.Delete();
+ }
+
+ if ( newNumberOfAuthorizations > 0 ) {
+ if ( isnull( originalAuthorizedOrder ) ) {
+ customerOrder := FillingCapacityOrder::CreateCustomOrder( macroPlan, fco, newNumberOfAuthorizations );
+ customerOrder.OrderTag( "鎺堟潈" );
+ } else {
+ originalAuthorizedOrder.Quantity( originalAuthorizedOrder.Quantity() + newNumberOfAuthorizations );
+ }
+ }
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeMacroPlanData.qbl b/_Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeMacroPlanData.qbl
index 5365af6..9a69cf5 100644
--- a/_Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeMacroPlanData.qbl
+++ b/_Main/BL/Type_Global_MappingCustomOrder/StaticMethod_SynchronizeMacroPlanData.qbl
@@ -14,8 +14,9 @@
ExecuteUser := executionUser
);
- Global_MappingCustomOrder::CreateCustomOrder( globalOTDTable, macroPlan );
+
try {
+ Global_MappingCustomOrder::CreateCustomOrder( globalOTDTable, macroPlan );
global_BrokerExecuteLog.ExecutionStatus( "Complete" );
global_BrokerExecuteLog.SuccessDateTime( DateTime::ActualTime().Format( "Y-M-D H2:m:s" ) );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_PanelFillingCapacityOrder_ButtonDeduct_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_PanelFillingCapacityOrder_ButtonDeduct_OnClick.def
index 1ea13f8..12efac1 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_PanelFillingCapacityOrder_ButtonDeduct_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityOrder/Response_PanelFillingCapacityOrder_ButtonDeduct_OnClick.def
@@ -13,7 +13,11 @@
{
Body:
[*
- H_FunctionClass::SM_OrderHedgingEx( MacroPlan, ApplicationMacroPlanner.GetUserName() );
+ //H_FunctionClass::SM_OrderHedgingEx( MacroPlan, ApplicationMacroPlanner.GetUserName() );
+
+ FillingCapacityOrder::OrderOffset( MacroPlan );
+
+ WebMessageBox::Success( "鍐插噺鎴愬姛锛侊紒锛�", true );
*]
GroupServerCalls: false
}
--
Gitblit v1.9.3