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