From abd9a6012b961968a92dc2cdfa4b6a2ce0de2b74 Mon Sep 17 00:00:00 2001 From: hongji.li <hongji.a.li@capgemini.com> Date: 星期三, 27 九月 2023 11:44:13 +0800 Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lhj --- _Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl | 71 +++++ _Main/BL/Type_CustomerOrder/Attribute_ProductGrade.qbl | 8 _Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerOrderID.qbl | 7 _Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastID.qbl | 7 _Main/BL/Type_CustomerOrder/Attribute_OrderType.qbl | 8 _Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl | 19 + _Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlContent.def | 33 ++ _Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl | 49 +++ _Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated.def | 18 + _Main/BL/Type_CustomerOrder/Attribute_CustomerPolicy.qbl | 8 _Main/BL/Type_CustomerOrder/Attribute_IsAvailable.qbl | 8 _Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_OpenChoose.def | 10 _Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnCancel_OnClick.def | 15 + _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick.def | 8 _Main/BL/Type_CustomerOrder/Attribute_OrderTime.qbl | 8 _Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_listContextMenuSD.def | 17 + _Main/BL/Type_CustomerAndForecastOrder/StaticMethod_RefreshData.qbl | 46 +++ _Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlActions.def | 40 +++ _Main/BL/Type_PriorityFactor/Attribute_ReflectionType.qbl | 7 _Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/_ROOT_Component_DialogChoosePriorityPolicy.def | 22 + _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def | 4 _Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def | 16 + _Main/BL/KnowledgeBaseDomain_MacroPlanner/KnowledgeBase_Knowledge_MP/_ROOT_KnowledgeBase_Knowledge_MP.qbl | 6 _Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl | 89 +++++++ _Main/BL/Type_CustomerOrder/Attribute_SheetProfitability.qbl | 8 _Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuPriorityResult_OnClick.def | 19 + _Main/BL/Type_CustomerOrder/Attribute_SegmentPriority.qbl | 8 _Main/BL/Type_PriorityFactor/Attribute_ReflectionAttribute.qbl | 7 _Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl | 83 ++++++ _Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl | 24 ++ _Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged.def | 18 + _Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl | 3 _Main/BL/Type_PriorityResult/Attribute_CustomerOrderID.qbl | 7 _Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def | 2 _Main/BL/Type_CustomerOrder/Attribute_BusinessType.qbl | 8 _Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def | 4 36 files changed, 697 insertions(+), 18 deletions(-) diff --git a/_Main/BL/KnowledgeBaseDomain_MacroPlanner/KnowledgeBase_Knowledge_MP/_ROOT_KnowledgeBase_Knowledge_MP.qbl b/_Main/BL/KnowledgeBaseDomain_MacroPlanner/KnowledgeBase_Knowledge_MP/_ROOT_KnowledgeBase_Knowledge_MP.qbl new file mode 100644 index 0000000..ea0a67e --- /dev/null +++ b/_Main/BL/KnowledgeBaseDomain_MacroPlanner/KnowledgeBase_Knowledge_MP/_ROOT_KnowledgeBase_Knowledge_MP.qbl @@ -0,0 +1,6 @@ +Quintiq file version 2.0 +#root +#parent: #root +KnowledgeBase Knowledge_MP #extension +{ +} diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerOrderID.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerOrderID.qbl new file mode 100644 index 0000000..19d7605 --- /dev/null +++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerOrderID.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute CustomerOrderID +{ + #keys: '3[414382.0.554303146][414382.0.554303145][414382.0.554303147]' + ValueType: String +} diff --git a/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastID.qbl b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastID.qbl new file mode 100644 index 0000000..d3d12e5 --- /dev/null +++ b/_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastID.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ForecastID +{ + #keys: '3[414382.0.554303156][414382.0.554303155][414382.0.554303157]' + ValueType: String +} diff --git a/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_RefreshData.qbl b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_RefreshData.qbl new file mode 100644 index 0000000..f3c1564 --- /dev/null +++ b/_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_RefreshData.qbl @@ -0,0 +1,46 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod RefreshData ( + MacroPlan owner, + GlobalOTDTable globalOTDTable +) +{ + TextBody: + [* + // NBoTk Sep-26-2023 (created) + + // 鑾峰彇宸茬粡瀛樺湪 customerOrderID 鍜宖orecastID + customerOrderIDs := selectvalues( owner,CustomerAndForecastOrder,c, + c.CustomerOrderID() <> '', + c.CustomerID() + ); + + forecastIDs := selectvalues( owner,CustomerAndForecastOrder,c, + c.ForecastID() <> '', + c.ForecastID() + ); + + + // 浠庢暟鎹箹 Global_MappingCustomerOrder Global_MappingForecast 涓幏鍙栨柊鐨勮鍗曟暟鎹� + + traverse( globalOTDTable,Global_MappingCustomOrder,cus) + { + if(customerOrderIDs.Find( cus.ID()) = -1 ) + { + owner.CustomerAndForecastOrder(relnew,OrderID := cus.OrderID(),ProductID := cus.ProductID(),BusinessType := cus.BusinessType(),Customer := cus.Customer(),CustomerID := cus.CustomerID(), + Quantity := cus.Quantity(),UnitOfMeasureName := cus.UnitOfMeasureName(),DemandDate := cus.OrderDate() + ); + } + } + + traverse( globalOTDTable,Global_MappingForecast,forecast) + { + if(forecastIDs.Find( forecast.ID()) = -1 ) + { + owner.CustomerAndForecastOrder(relnew,ProductID := forecast.ProductID(),BusinessType := forecast.BusinessType(), + Quantity := forecast.Quantity(),UnitOfMeasureName := forecast.UnitOfMeasureName(),DemandDate := forecast.EndDate() + ); + } + } + *] +} diff --git a/_Main/BL/Type_CustomerOrder/Attribute_BusinessType.qbl b/_Main/BL/Type_CustomerOrder/Attribute_BusinessType.qbl new file mode 100644 index 0000000..a39b026 --- /dev/null +++ b/_Main/BL/Type_CustomerOrder/Attribute_BusinessType.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute BusinessType +{ + #keys: '3[414382.0.554303217][414382.0.554303216][414382.0.554303218]' + Description: '浜嬩笟閮�' + ValueType: String +} diff --git a/_Main/BL/Type_CustomerOrder/Attribute_CustomerPolicy.qbl b/_Main/BL/Type_CustomerOrder/Attribute_CustomerPolicy.qbl new file mode 100644 index 0000000..6647d7a --- /dev/null +++ b/_Main/BL/Type_CustomerOrder/Attribute_CustomerPolicy.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute CustomerPolicy +{ + #keys: '3[414382.0.554014841][414382.0.554014840][414382.0.554014842]' + Description: '瀹㈡埛绛栫暐' + ValueType: String +} diff --git a/_Main/BL/Type_CustomerOrder/Attribute_IsAvailable.qbl b/_Main/BL/Type_CustomerOrder/Attribute_IsAvailable.qbl new file mode 100644 index 0000000..1a6ca55 --- /dev/null +++ b/_Main/BL/Type_CustomerOrder/Attribute_IsAvailable.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute IsAvailable +{ + #keys: '3[414382.0.554303237][414382.0.554303236][414382.0.554303238]' + Description: '璁㈠崟鏄惁鍙備笌璁″垝' + ValueType: Boolean +} diff --git a/_Main/BL/Type_CustomerOrder/Attribute_OrderTime.qbl b/_Main/BL/Type_CustomerOrder/Attribute_OrderTime.qbl new file mode 100644 index 0000000..e89a41d --- /dev/null +++ b/_Main/BL/Type_CustomerOrder/Attribute_OrderTime.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute OrderTime +{ + #keys: '3[414382.0.554303277][414382.0.554303276][414382.0.554303278]' + Description: '璁㈠崟涓嬪崟鏃堕棿' + ValueType: Date +} diff --git a/_Main/BL/Type_CustomerOrder/Attribute_OrderType.qbl b/_Main/BL/Type_CustomerOrder/Attribute_OrderType.qbl new file mode 100644 index 0000000..4efd905 --- /dev/null +++ b/_Main/BL/Type_CustomerOrder/Attribute_OrderType.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute OrderType +{ + #keys: '3[414382.0.554303227][414382.0.554303226][414382.0.554303228]' + Description: '璁㈠崟绫诲瀷' + ValueType: String +} diff --git a/_Main/BL/Type_CustomerOrder/Attribute_ProductGrade.qbl b/_Main/BL/Type_CustomerOrder/Attribute_ProductGrade.qbl new file mode 100644 index 0000000..76e256b --- /dev/null +++ b/_Main/BL/Type_CustomerOrder/Attribute_ProductGrade.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ProductGrade +{ + #keys: '3[414382.0.554303247][414382.0.554303246][414382.0.554303248]' + Description: '浜у搧绛夌骇' + ValueType: String +} diff --git a/_Main/BL/Type_CustomerOrder/Attribute_SegmentPriority.qbl b/_Main/BL/Type_CustomerOrder/Attribute_SegmentPriority.qbl new file mode 100644 index 0000000..6f488d6 --- /dev/null +++ b/_Main/BL/Type_CustomerOrder/Attribute_SegmentPriority.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute SegmentPriority +{ + #keys: '3[414382.0.554303257][414382.0.554303256][414382.0.554303258]' + Description: '缁嗗垎甯傚満浼樺厛绾�' + ValueType: String +} diff --git a/_Main/BL/Type_CustomerOrder/Attribute_SheetProfitability.qbl b/_Main/BL/Type_CustomerOrder/Attribute_SheetProfitability.qbl new file mode 100644 index 0000000..726b8ab --- /dev/null +++ b/_Main/BL/Type_CustomerOrder/Attribute_SheetProfitability.qbl @@ -0,0 +1,8 @@ +Quintiq file version 2.0 +#parent: #root +Attribute SheetProfitability +{ + #keys: '3[414382.0.554303267][414382.0.554303266][414382.0.554303268]' + Description: '澶у紶鐩堝埄姘村钩' + ValueType: String +} diff --git a/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl b/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl index e0aa42b..3f0ea88 100644 --- a/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl +++ b/_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl @@ -34,8 +34,7 @@ salesSegmentName := salesSegmentNameList.Concatenate( ",") schemeDate := Date::Today(); - - filllingCapacityOrderScheme := owner.FilllingCapacityOrderScheme(relnew,SchemeName := schemeName,SchemeDate := schemeDate,BusinessType := businessType,Customer := customer,CustomerID := customerID, + owner.FilllingCapacityOrderScheme(relnew,SchemeName := schemeName,SchemeDate := schemeDate,BusinessType := businessType,Customer := customer,CustomerID := customerID, SalesSegmentName := salesSegmentName); diff --git a/_Main/BL/Type_PriorityFactor/Attribute_ReflectionAttribute.qbl b/_Main/BL/Type_PriorityFactor/Attribute_ReflectionAttribute.qbl new file mode 100644 index 0000000..3f5a69d --- /dev/null +++ b/_Main/BL/Type_PriorityFactor/Attribute_ReflectionAttribute.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ReflectionAttribute +{ + #keys: '3[414382.0.554303396][414382.0.554303395][414382.0.554303397]' + ValueType: String +} diff --git a/_Main/BL/Type_PriorityFactor/Attribute_ReflectionType.qbl b/_Main/BL/Type_PriorityFactor/Attribute_ReflectionType.qbl new file mode 100644 index 0000000..49b163b --- /dev/null +++ b/_Main/BL/Type_PriorityFactor/Attribute_ReflectionType.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute ReflectionType +{ + #keys: '3[414382.0.554014806][414382.0.554014805][414382.0.554014807]' + ValueType: String +} diff --git a/_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl index c6c69c4..01917f6 100644 --- a/_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl +++ b/_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl @@ -15,15 +15,46 @@ isBusinessType := true; } - priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5, + if( priorityFactor.Name() = "澶у紶鐩堝埄姘村钩" ) + { + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5, IsRange := false,GradingName := "澶х泩",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); - priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3, - IsRange := false,GradingName := "灏忕泩",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); - priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 0, - IsRange := false,GradingName := "鎸佸钩",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); - priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -3, - IsRange := false,GradingName := "灏忎簭",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); - priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -5, - IsRange := false,GradingName := "澶т簭",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3, + IsRange := false,GradingName := "灏忕泩",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 0, + IsRange := false,GradingName := "鎸佸钩",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -3, + IsRange := false,GradingName := "灏忎簭",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := -5, + IsRange := false,GradingName := "澶т簭",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + } + + if( priorityFactor.Name() = "瀹㈡埛绛栫暐" ) + { + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5, + IsRange := false,GradingName := "81%鈮鈮�100%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 4, + IsRange := false,GradingName := "61%鈮鈮�80%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3, + IsRange := false,GradingName := "41%鈮鈮�60%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 2, + IsRange := false,GradingName := "21%鈮鈮�40%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1, + IsRange := false,GradingName := "1%鈮鈮�20%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + } + + if( priorityFactor.Name() = "瀹㈡埛绛夌骇" ) + { + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5, + IsRange := false,GradingName := "81%鈮鈮�100%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 4, + IsRange := false,GradingName := "61%鈮鈮�80%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3, + IsRange := false,GradingName := "41%鈮鈮�60%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 2, + IsRange := false,GradingName := "21%鈮鈮�40%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1, + IsRange := false,GradingName := "1%鈮鈮�20%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name()); + } *] } diff --git a/_Main/BL/Type_PriorityResult/Attribute_CustomerOrderID.qbl b/_Main/BL/Type_PriorityResult/Attribute_CustomerOrderID.qbl new file mode 100644 index 0000000..f65a510 --- /dev/null +++ b/_Main/BL/Type_PriorityResult/Attribute_CustomerOrderID.qbl @@ -0,0 +1,7 @@ +Quintiq file version 2.0 +#parent: #root +Attribute CustomerOrderID +{ + #keys: '3[414382.0.554015006][414382.0.554015005][414382.0.554015007]' + ValueType: String +} diff --git a/_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl b/_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl new file mode 100644 index 0000000..962e51e --- /dev/null +++ b/_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl @@ -0,0 +1,19 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CalculateBracketScore ( + String calcStr, + CustomerOrder customerOrder, + String businessType, + MacroPlan macroPlan, + GlobalOTDTable globalOTDTable +) as Real +{ + Description: '璁$畻鍏紡涓嫭鍙峰唴鐨勬暟鎹�' + TextBody: + [* + // NBoTk Sep-26-2023 (created) + + + return PriorityResult::CalculateScore( calcStr,customerOrder,businessType,macroPlan,0.0,globalOTDTable); + *] +} diff --git a/_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl b/_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl new file mode 100644 index 0000000..decca69 --- /dev/null +++ b/_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl @@ -0,0 +1,89 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CalculateScore ( + String formula, + CustomerOrder customerOrder, + String businessType, + MacroPlan macroPlan, + Real lastScore, + GlobalOTDTable globalOTDTable +) as Real +{ + TextBody: + [* + // NBoTk Sep-26-2023 (created) + + score := 0.0; + remindFormula := formula; + + // 閬嶅巻浼樺厛绾у洜瀛愰厤缃� + + if( not remindFormula = '' ) + { + // 浠庤捣濮嬩綅缃紑濮嬪尮閰� + if(remindFormula.StartsWith( "+" )) + { + remindFormula := remindFormula.SubString( 1,remindFormula.Length()); + score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); + score := lastScore + score; + + // 鎴彇鎺夊凡缁忚绠楃殑浼樺厛绾у洜瀛� 閫掑綊璁$畻 + remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); + } + else if( remindFormula.StartsWith( "-" )) + { + remindFormula := remindFormula.SubString( 1,remindFormula.Length()); + score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); + score := lastScore - score; + + // 鎴彇鎺夊凡缁忚绠楃殑浼樺厛绾у洜瀛� 閫掑綊璁$畻 + remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); + } + else if( remindFormula.StartsWith( "*" ) ) + { + remindFormula := remindFormula.SubString( 1,remindFormula.Length()); + score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); + score := lastScore * score; + + // 鎴彇鎺夊凡缁忚绠楃殑浼樺厛绾у洜瀛� 閫掑綊璁$畻 + remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); + } + else if( remindFormula.StartsWith( "/" ) ) + { + remindFormula := remindFormula.SubString( 1,remindFormula.Length()); + score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); + score := lastScore / score; + + // 鎴彇鎺夊凡缁忚绠楃殑浼樺厛绾у洜瀛� 閫掑綊璁$畻 + remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); + } + else if( remindFormula.StartsWith( "(" ) ) + { + // 鎵惧埌绗竴涓粨鏉熺殑 ) + // 璁$畻鎷彿涓殑鍐呭 + rightBracket := remindFormula.FindString( ")",0); + calcStr := remindFormula.SubString( 1,rightBracket); + PriorityResult::CalculateBracketScore(calcStr,customerOrder,businessType,macroPlan,globalOTDTable); + + // 鎴彇 ) 鍚庣殑瀛楃缁х画杩涜璁$畻 + remindFormula := remindFormula.SubString( rightBracket,remindFormula.Length()); + } + else + { + // 涓嶆槸绗﹀彿 鐩存帴鑾峰彇璁$畻鍚庣殑鏁板�� + score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable); + + // 鎴彇鎺夊凡缁忚绠楃殑浼樺厛绾у洜瀛� 閫掑綊璁$畻 + remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan); + PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable); + } + } + + // 娌℃湁鍖归厤 鍏紡璁$畻瀹屾垚 + return lastScore; + *] +} diff --git a/_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl b/_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl new file mode 100644 index 0000000..f12f852 --- /dev/null +++ b/_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl @@ -0,0 +1,83 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod GetDetailsValue ( + CustomerOrder customerOrder, + String formula, + MacroPlan macroPlan, + GlobalOTDTable globalOTDTable +) as Real +{ + TextBody: + [* + // NBoTk Sep-26-2023 (created) + + value := 0.0; + + priorityFactor := null( PriorityFactor); + + traverse( macroPlan,PriorityFactor,p) + { + if( formula.StartsWith( p.Name()) ) + { + priorityFactor := p; + } + } + + if( "瀹㈡埛绛栫暐" = priorityFactor.Name()) + { + obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "瀹㈡埛绛栫暐" and p.GradingName() = customerOrder.CustomerPolicy()); + value := priorityFactor.Coefficient() * obj.GradeTarget(); + } + + if( "澶у紶鐩堝埄姘村钩" = priorityFactor.Name()) + { + obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "澶у紶鐩堝埄姘村钩" and p.GradingName() = customerOrder.SheetProfitability()); + value := priorityFactor.Coefficient() * obj.GradeTarget(); + } + + if( "DOI" = priorityFactor.Name()) + { + // DOI鏁版嵁 + obj := selectobject( globalOTDTable,Global_MappingDOI_DSI,doi,doi.ProductID() = customerOrder.ProductID()) + value := priorityFactor.Coefficient() * [Real]obj.DOI(); + } + + if( "DSI" = priorityFactor.Name()) + { + // DOI鏁版嵁 + obj := selectobject( globalOTDTable,Global_MappingDOI_DSI,doi,doi.ProductID() = customerOrder.ProductID()) + value := priorityFactor.Coefficient() * [Real]obj.DSI(); + } + + if( "缁嗗垎甯傚満绛夌骇" = priorityFactor.Name()) + { + obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "缁嗗垎甯傚満绛夌骇" and p.GradingName() = customerOrder.SegmentPriority()); + value := priorityFactor.Coefficient() * obj.GradeTarget(); + } + + if( "闇�姹傜被鍨�" = priorityFactor.Name()) + { + // 鏈夐娴� 鏃犻娴� 绾娴� + obj := selectobject( priorityFactor,PriorityFactorDetails,p,p.GradingName() = customerOrder.OrderType()); + value := priorityFactor.Coefficient() * obj.GradeTarget(); + } + + if( "瀹㈡埛绛夌骇" = priorityFactor.Name()) + { + // 閫氳繃鏁版嵁婀栬绠楀鎴风瓑绾� + obj := selectobject( globalOTDTable,Global_MappingCustomerGrade,doi,doi.BusinessType() = customerOrder.BusinessType() and doi.Customer() = customerOrder.CustomerName()) + value := priorityFactor.Coefficient() * [Real]obj.CustomerGrade(); + } + + if( "璁㈠崟涓嬪崟鏃堕棿" = priorityFactor.Name()) + { + // 涓嬪崟鏃堕棿 + orderTime := customerOrder.OrderTime(); + days := orderTime.TotalInDays() - customerOrder.EndDate().TotalInDays(); + obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "璁㈠崟涓嬪崟鏃堕棿" and days >= [Number]p.GradingName()); + value := priorityFactor.Coefficient() * obj.GradeTarget(); + } + + return value; + *] +} diff --git a/_Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl b/_Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl new file mode 100644 index 0000000..7c211d6 --- /dev/null +++ b/_Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl @@ -0,0 +1,24 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod GetRemindFormula ( + String formula, + MacroPlan macroPlan +) as String +{ + TextBody: + [* + // NBoTk Sep-26-2023 (created) + + str := ""; + + traverse( macroPlan,PriorityFactor,p) + { + if( formula.StartsWith( p.Name()) ) + { + str := formula.SubString( 0 + p.Name().Length(),formula.Length()); + } + } + + return str; + *] +} diff --git a/_Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl b/_Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl new file mode 100644 index 0000000..1b2da12 --- /dev/null +++ b/_Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl @@ -0,0 +1,71 @@ +Quintiq file version 2.0 +#parent: #root +StaticMethod CalculatePriorityResult ( + String priorityPolicyName, + MacroPlan macroPlan, + GlobalOTDTable globalOTDTable +) +{ + TextBody: + [* + // NBoTk Sep-26-2023 (created) + + // 璁$畻瀹㈡埛璁㈠崟鐨勪紭鍏堢骇寰楀垎 鍥炲~鏉冮噸鏁版嵁 鐢熸垚鏂扮殑Priority鏄庣粏鏁版嵁 + + traverse( macroPlan,SalesDemand.astype( CustomerOrder ),e) + { + // 浜嬩笟閮ㄤ俊鎭� + businessType := e.BusinessType(); + + // 鑾峰彇瀵瑰簲浜嬩笟閮ㄨ绠楀叕寮� + priorityPolicys := selectobject( macroPlan,PriorityPolicy,p,p.BusinessType() = businessType and p.Name() = priorityPolicyName); + formula := priorityPolicys.Formula(); + + // 閫掑綊澶勭悊璁$畻鍏紡 鑾峰彇褰撳墠璁㈠崟鐨勫緱鍒� + value := PriorityResult::CalculateScore( formula,e,businessType,macroPlan,0.0,globalOTDTable); + + // 鐢熸垚浼樺厛绾у洜瀛愯窇鍒嗙粨鏋� + priorityResult := macroPlan.PriorityResult(relnew,CustomerOrderID := e.ID(),BusinessType := businessType,Customer := e.CustomerName(),CustomerID := e.CustomerID(), + DemandDate := e.EndDate(),ProductID := e.ProductID(),Quantity := e.Quantity(),SalesSegmentName := e.SalesSegmentName(), + StockingPointID := e.StockingPointID(),UnitOfMeasureName := e.UnitOfMeasureName() + ); + + // 鍒ゆ柇鏄泦鍥� 杩樻槸浜嬩笟閮� + if( businessType.FindString( "闆嗗洟",0 ) <> -1) + { + priorityResult.PriorityResultGroupDetail( relnew,BusinessType := businessType,Customer := e.CustomerName(),CustomerID := e.CustomerID(), + DemandDate := e.EndDate(),PriorityPolicyName := priorityPolicyName,PriorityResultScore := value, + Quantity := e.Quantity(),SalesSegmentName := e.SalesSegmentName(),StockingPointID := e.StockingPointID(), + UnitOfMeasureName := e.UnitOfMeasureName(),PriorityTotalScore := value + ); + } + else + { + priorityResult.PriorityResultBusinessTypeDetail( relnew,BusinessType := businessType,Customer := e.CustomerName(),CustomerID := e.CustomerID(), + DemandDate := e.EndDate(),PriorityPolicyName := priorityPolicyName,PriorityResultScore := value, + Quantity := e.Quantity(),SalesSegmentName := e.SalesSegmentName(),StockingPointID := e.StockingPointID(), + UnitOfMeasureName := e.UnitOfMeasureName(),PriorityTotalScore := value + ); + } + } + + // 浼樺厛绾у洜瀛愬鐞嗗畬鎴愬悗 鎺掑簭鍥炲~鏁版嵁 + resultList := selectsortedset( macroPlan,PriorityResult,result, + true, + result.PriorityResultScore() + ) + + priorityValue := 1; + traverse( resultList,Elements,e) + { + obj := selectobject( macroPlan,SalesDemand.astype( CustomerOrder ),order, + order.ID() = e.CustomerOrderID() + ); + obj.PriorityName([String]priorityValue); + + // 鍒涘缓浼樺厛绾ф暟鎹� + macroPlan.Priority(relnew,Weight := priorityValue,Name := [String]priorityValue); + priorityValue := priorityValue + 1; + } + *] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def index 7c1b15d..fbfa4cc 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def @@ -15,7 +15,7 @@ businessType := DataHolderBusinessType.Data().BusinessTypeName(); DataHolderBusinessType.Data().Commit(); - // PriorityFactor + PriorityFactor::InitData( MacroPlan,businessType); this.Close(); diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlActions.def new file mode 100644 index 0000000..d27cc39 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlActions.def @@ -0,0 +1,40 @@ +Quintiq file version 2.0 +Component pnlActions +{ + #keys: '[414382.0.563131222]' + BaseType: 'WebPanel' + Children: + [ + Component btnOk + { + #keys: '[414382.0.563131226]' + BaseType: 'WebButton' + Properties: + [ + Label: 'OK' + Taborder: 0 + ] + } + Component btnCancel + { + #keys: '[414382.0.563131228]' + BaseType: 'WebButton' + Properties: + [ + Label: 'Cancel' + Taborder: 1 + ] + } + ] + Properties: + [ + Alignment: 'trailing' + Border: true + ExcludeFromActiveComponent: true + FixedSize: true + Orientation: 'horizontal' + Padding: 'true' + Style: 'footer' + Taborder: 1 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlContent.def new file mode 100644 index 0000000..38aee9e --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlContent.def @@ -0,0 +1,33 @@ +Quintiq file version 2.0 +Component pnlContent +{ + #keys: '[414382.0.563131220]' + BaseType: 'WebPanel' + Children: + [ + Component PriorityPolicyStringList + { + #keys: '[414382.0.563131262]' + BaseType: 'WebDropDownStringList' + Properties: + [ + Taborder: 0 + ] + } + Component DataHolderChoosePriorityPolicy + { + #keys: '[414382.0.563131279]' + BaseType: 'WebDataHolder' + Databinding: 'structured[PriorityPolicy]*' + Properties: + [ + Taborder: 1 + ] + } + ] + Properties: + [ + Padding: 'true' + Taborder: 0 + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_OpenChoose.def b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_OpenChoose.def new file mode 100644 index 0000000..bae85c8 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_OpenChoose.def @@ -0,0 +1,10 @@ +Quintiq file version 2.0 +#parent: #root +Method OpenChoose () id:Method_DialogChoosePriorityPolicy_OpenChoose +{ + #keys: '[414382.0.563950563]' + Body: + [* + ApplicationMacroPlanner.ShowFormModal( this ); + *] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnCancel_OnClick.def new file mode 100644 index 0000000..1d6fe8b --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnCancel_OnClick.def @@ -0,0 +1,15 @@ +Quintiq file version 2.0 +#parent: pnlActions/btnCancel +Response OnClick () id:Response_pnlActions_btnCancel_OnClick +{ + #keys: '[414382.0.563131232]' + DefinitionID: 'Responsedef_WebButton_OnClick' + GroupServerCalls: true + QuillAction + { + Body: + [* + Form.Close(); + *] + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def new file mode 100644 index 0000000..7750e77 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def @@ -0,0 +1,16 @@ +Quintiq file version 2.0 +#parent: pnlActions/btnOk +Response OnClick () id:Response_pnlActions_btnOk_OnClick +{ + #keys: '[414382.0.563131231]' + DefinitionID: 'Responsedef_WebButton_OnClick' + QuillAction + { + Body: + [* + name := PriorityPolicyStringList.Text(); + PriorityResult::CalculatePriorityResult(name,MacroPlan,GlobalOTDTable); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated.def new file mode 100644 index 0000000..dd31dea --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated.def @@ -0,0 +1,18 @@ +Quintiq file version 2.0 +#parent: pnlContent/DataHolderChoosePriorityPolicy +Response OnCreated () id:Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated +{ + #keys: '[414382.0.563131469]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebComponent_OnCreated' + QuillAction + { + Body: + [* + dataList := selectuniquevalues( MacroPlan,PriorityPolicy,p,p.Name()); + strings := dataList.Concatenate( ";"); + PriorityPolicyStringList.Strings(strings); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged.def new file mode 100644 index 0000000..956d116 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged.def @@ -0,0 +1,18 @@ +Quintiq file version 2.0 +#parent: pnlContent/DataHolderChoosePriorityPolicy +Response OnDataChanged () id:Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged +{ + #keys: '[414382.0.563131545]' + CanBindMultiple: false + DefinitionID: 'Responsedef_WebComponent_OnDataChanged' + QuillAction + { + Body: + [* + dataList := selectuniquevalues( MacroPlan,PriorityPolicy,p,p.Name()); + strings := dataList.Concatenate( ";"); + PriorityPolicyStringList.Strings(strings); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/_ROOT_Component_DialogChoosePriorityPolicy.def b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/_ROOT_Component_DialogChoosePriorityPolicy.def new file mode 100644 index 0000000..11665d9 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/_ROOT_Component_DialogChoosePriorityPolicy.def @@ -0,0 +1,22 @@ +Quintiq file version 2.0 +#root +#parent: MacroPlannerWebApp +OrphanComponent DialogChoosePriorityPolicy +{ + #keys: '[414382.0.563131218]' + BaseType: 'WebForm' + Children: + [ + #child: pnlContent + #child: pnlActions + ] + Properties: + [ + Alignment: 'trailing' + EnterButton: 'btnOk' + EscapeButton: 'btnCancel' + ExcludeFromActiveComponent: true + Padding: 'false' + Title: '閫夋嫨浼樺厛绾х瓥鐣�' + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def index 352a599..54be6e2 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def @@ -5,6 +5,10 @@ [ Component DataSetLevelSalesDemands #extension { + Children: + [ + #child: listContextMenuSD + ] Properties: [ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPoint_MP.ID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPoint_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegment_MP.Name","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegment_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"Customer name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"Customer ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"Order ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"Order line ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Order date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Product_MP.ID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Product_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure_MP.Name","title":"UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"UnitOfMeasure_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantity","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue( object.Quantity() - object.FulfilledQuantity(), 0.0).Round( 2)"}},{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfilled demand","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round( 2)"}}]}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"Is firmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"Is eligible for netting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriceUoM","title":"PriceUoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PriceUoM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderTag","title":"璁㈠崟鏍囩","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderTag"}}]' diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_listContextMenuSD.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_listContextMenuSD.def new file mode 100644 index 0000000..d9aacef --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_listContextMenuSD.def @@ -0,0 +1,17 @@ +Quintiq file version 2.0 +Component listContextMenuSD #extension +{ + Children: + [ + Component MenuPriorityResult + { + #keys: '[414382.0.562012014]' + BaseType: 'WebMenu' + Properties: + [ + Taborder: 10 + Title: '浜嬩笟閮ㄤ紭鍏堢骇璁$畻' + ] + } + ] +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuPriorityResult_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuPriorityResult_OnClick.def new file mode 100644 index 0000000..c4f3379 --- /dev/null +++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuPriorityResult_OnClick.def @@ -0,0 +1,19 @@ +Quintiq file version 2.0 +#parent: ListSalesDemands +Response OnClick () id:Response_ListSalesDemands_MenuPriorityResult_OnClick +{ + #keys: '[414382.0.563130924]' + CanBindMultiple: false + DefinitionID => //FormSalesDemands/ListSalesDemands/Responsedef_ListSalesDemands_WebMenu_OnClick + Initiator: 'MenuPriorityResult' + QuillAction + { + Body: + [* + + dlg := construct( DialogChoosePriorityPolicy ); + dlg.OpenChoose(); + *] + GroupServerCalls: false + } +} diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def index 01848c5..8ba1423 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def @@ -16,7 +16,7 @@ Title: 'Filling' ] } - Component MenuTest + Component MenuRefresh { #keys: '[414382.0.415603149]' BaseType: 'WebMenu' @@ -24,7 +24,7 @@ [ Image: 'ADD2' Taborder: 4 - Title: 'Test' + Title: '鍒锋柊' ] } ] diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick.def similarity index 70% rename from _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def rename to _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick.def index f292299..aba413a 100644 --- a/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick.def +++ b/_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick.def @@ -1,17 +1,17 @@ Quintiq file version 2.0 #parent: ListCustomerAndFillingCapacityOrder -Response OnClick () id:Response_ListCustomerAndFillingCapacityOrder_MenuTest_OnClick +Response OnClick () id:Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick { #keys: '[414382.0.415724061]' CanBindMultiple: false DefinitionID => /ListCustomerAndFillingCapacityOrder/Responsedef_ListCustomerAndFillingCapacityOrder_WebMenu_OnClick - GroupServerCalls: true - Initiator: 'MenuTest' + Initiator: 'MenuRefresh' QuillAction { Body: [* - CustomerAndForecastOrder::CreateTestData( MacroPlan); + CustomerAndForecastOrder::RefreshData( MacroPlan,GlobalOTDTable); *] + GroupServerCalls: false } } -- Gitblit v1.9.3