hongji.li
2023-09-27 abd9a6012b961968a92dc2cdfa4b6a2ce0de2b74
Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lhj
已重命名1个文件
已添加30个文件
已修改5个文件
715 ■■■■■ 文件已修改
_Main/BL/KnowledgeBaseDomain_MacroPlanner/KnowledgeBase_Knowledge_MP/_ROOT_KnowledgeBase_Knowledge_MP.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerAndForecastOrder/Attribute_CustomerOrderID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerAndForecastOrder/Attribute_ForecastID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerAndForecastOrder/StaticMethod_RefreshData.qbl 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_BusinessType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_CustomerPolicy.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_IsAvailable.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_OrderTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_OrderType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_ProductGrade.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_SegmentPriority.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_SheetProfitability.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FilllingCapacityOrderScheme/StaticMethod_CreateFillingCapacityOrderScheme.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityFactor/Attribute_ReflectionAttribute.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityFactor/Attribute_ReflectionType.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/Attribute_CustomerOrderID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_CalculateBracketScore.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogBusinessType/Method_ClickBtnOk.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Component_pnlContent.def 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_OpenChoose.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnCreated.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlContent_DataHolderChoosePriorityPolicy_OnDataChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/_ROOT_Component_DialogChoosePriorityPolicy.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_listContextMenuSD.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Response_TIANMA_JITUAN_ListSalesDemands_MenuPriorityResult_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Component_listContextMenuCustomerAndFillingCapacityOrder.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_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
{
}
_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
}
_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
}
_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 å’ŒforecastID
    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()
                                    );
        }
    }
  *]
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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);
    
    
_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
}
_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
}
_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%≤X≤100%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 4,
                                                IsRange := false,GradingName := "61%≤X≤80%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "41%≤X≤60%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 2,
                                                IsRange := false,GradingName := "21%≤X≤40%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "1%≤X≤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%≤X≤100%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 4,
                                                IsRange := false,GradingName := "61%≤X≤80%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "41%≤X≤60%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 2,
                                                IsRange := false,GradingName := "21%≤X≤40%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "1%≤X≤20%",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
  *]
}
_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
}
_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);
  *]
}
_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;
  *]
}
_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;
  *]
}
_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;
  *]
}
_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;
    }
  *]
}
_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();
_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
  ]
}
_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
  ]
}
_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 );
  *]
}
_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();
    *]
  }
}
_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
  }
}
_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
  }
}
_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
  }
}
_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: '选择优先级策略'
  ]
}
_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"}}]'
_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: '事业部优先级计算'
      ]
    }
  ]
}
_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
  }
}
_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: '刷新'
      ]
    }
  ]
_Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuRefresh_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormFillingCapacityScheme/Response_ListCustomerAndFillingCapacityOrder_MenuTest_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
  }
}