limj
2023-09-27 f8139abd06d83a1260946d600faead9e4b447814
优先级因子计算
已修改7个文件
已添加1个文件
138 ■■■■ 文件已修改
_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_CalculatePriorityResult.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Component_PanelPriorityPolicyOperationButton#713.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PriorityFactorDetails/StaticMethod_InitData.qbl
@@ -43,18 +43,60 @@
                                                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 := "战略",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 := 1,
                                                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 := "120",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 4,
                                                IsRange := false,GradingName := "90",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "60",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 2,
                                                IsRange := false,GradingName := "30",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "0",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 := "有预测",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 := 1,
                                                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());
                                            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 := "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());
                                                IsRange := false,GradingName := "重点",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());
                                                IsRange := false,GradingName := "潜力",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
    if( priorityFactor.Name() = "DOI" or priorityFactor.Name() = "DSI")
    {
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 5,
                                            IsRange := false,GradingName := "<7",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 3,
                                                IsRange := false,GradingName := "<15",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := "<30",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
        priorityFactor.PriorityFactorDetails(relnew,BusinessType := priorityFactor.BusinessType(), IsBusinessType := isBusinessType,GradeTarget := 1,
                                                IsRange := false,GradingName := ">30",RangeMin := 0.0,RangeMax := 0.0,PriorityFactorName := priorityFactor.Name());
    }
  *]
}
_Main/BL/Type_PriorityResult/StaticMethod_CalculateScore.qbl
@@ -76,7 +76,7 @@
            {
                // ä¸æ˜¯ç¬¦å· ç›´æŽ¥èŽ·å–è®¡ç®—åŽçš„æ•°å€¼
                score := PriorityResult::GetDetailsValue( customerOrder,remindFormula,macroPlan,globalOTDTable);
                info( "123123");
                // æˆªå–掉已经计算的优先级因子 é€’归计算
                remindFormula := PriorityResult::GetRemindFormula( remindFormula,macroPlan);
                PriorityResult::CalculateScore( remindFormula,customerOrder,businessType,macroPlan,score,globalOTDTable);
_Main/BL/Type_PriorityResult/StaticMethod_GetDetailsValue.qbl
@@ -10,6 +10,7 @@
  TextBody:
  [*
    // NBoTk Sep-26-2023 (created)
    // å½“前计算优先级因子细分 å¦‚果获取不到全部先默认为1
    
    value := 0.0;
    
@@ -32,41 +33,71 @@
    if( "大张盈利水平" =  priorityFactor.Name())
    {
         obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "大张盈利水平" and  p.GradingName() = customerOrder.SheetProfitability());
         value := priorityFactor.Coefficient() * obj.GradeTarget();
         gradeTarget := 1.0;
         if( not isnull( obj ) )
         {
              gradeTarget := obj.GradeTarget();
         }
         value := priorityFactor.Coefficient() * gradeTarget;
    }
    
    if( "DOI" =  priorityFactor.Name())
    {
         // DOI数据
         obj := selectobject( globalOTDTable,Global_MappingDOI_DSI,doi,doi.ProductID() = customerOrder.ProductID())
         value := priorityFactor.Coefficient() * [Real]obj.DOI();
         doi := 1.0;
         if( not isnull( obj ) )
         {
              doi := [Real]obj.DOI();
         }
         value := priorityFactor.Coefficient() * doi;
    }
    
    if( "DSI" =  priorityFactor.Name())
    {
         // DOI数据
         obj := selectobject( globalOTDTable,Global_MappingDOI_DSI,doi,doi.ProductID() = customerOrder.ProductID())
         value := priorityFactor.Coefficient() * [Real]obj.DSI();
         dsi := 1.0;
         if( not isnull( obj ) )
         {
              dsi := [Real]obj.DSI();
         }
         value := priorityFactor.Coefficient() * dsi;
    }
    
    if( "细分市场等级" =  priorityFactor.Name())
    {
         obj := selectobject( priorityFactor,PriorityFactorDetails,p , p.PriorityFactorName() = "细分市场等级" and p.GradingName() = customerOrder.SegmentPriority());
         value := priorityFactor.Coefficient() * obj.GradeTarget();
         gradeTarget := 1.0;
         if( not isnull( obj ) )
         {
              gradeTarget := obj.GradeTarget();
         }
         value := priorityFactor.Coefficient() * gradeTarget;
    }
    
    if( "需求类型" =  priorityFactor.Name())
    {     
        // æœ‰é¢„测 æ— é¢„测 çº¯é¢„测
         obj := selectobject( priorityFactor,PriorityFactorDetails,p,p.GradingName() = customerOrder.OrderType());
         value := priorityFactor.Coefficient() * obj.GradeTarget();
         gradeTarget := 1.0;
         if( not isnull( obj ) )
         {
              gradeTarget := obj.GradeTarget();
         }
         value := priorityFactor.Coefficient() * 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();
         customerGrade := 1.0;
         if( not isnull( obj ) )
         {
              customerGrade := [Real]obj.CustomerGrade();
         }
         value := priorityFactor.Coefficient() * customerGrade;
    }
    
    if( "订单下单时间" =  priorityFactor.Name())
_Main/BL/Type_PriorityResult/StaticMethod_GetRemindFormula.qbl
@@ -15,9 +15,17 @@
    {  
         if( formula.StartsWith( p.Name()) )
         {
              // åˆ¤æ–­å‰©ä½™å­—符长度
              if( p.Name().Length() = formula.Length() )
              {
                 str := ""
              }
              else
              {
              str := formula.SubString( 0 + p.Name().Length(),formula.Length());
         }
    }
    }
    
    return str;
  *]
_Main/BL/Type_PriorityResult/StaticMethod_calculatePriorityResult.qbl
@@ -15,7 +15,8 @@
    traverse( macroPlan,SalesDemand.astype( CustomerOrder ),e)
    {
         // äº‹ä¸šéƒ¨ä¿¡æ¯
         businessType := e.BusinessType();
         //businessType := e.BusinessType();
         businessType :=  "手机事业部";
         
         // èŽ·å–å¯¹åº”äº‹ä¸šéƒ¨è®¡ç®—å…¬å¼
         priorityPolicys := selectobject( macroPlan,PriorityPolicy,p,p.BusinessType() = businessType and p.Name() = priorityPolicyName);
@@ -61,11 +62,17 @@
        obj := selectobject( macroPlan,SalesDemand.astype( CustomerOrder ),order, 
                             order.ID() = e.CustomerOrderID()
                             );
        // è®¢å•数据不为空再做处理
        if( not isnull( obj ) )
        {
        obj.PriorityName([String]priorityValue);
        
        // åˆ›å»ºä¼˜å…ˆçº§æ•°æ®
        macroPlan.Priority(relnew,Weight := priorityValue,Name := [String]priorityValue);
              macroPlan.Priority(relnew,Weight := priorityValue,Name := obj.OrderID());
        priorityValue := priorityValue + 1;
    }
    }
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Method_CalculatePriorityResult.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
Quintiq file version 2.0
#parent: #root
Method CalculatePriorityResult () id:Method_DialogChoosePriorityPolicy_CalculatePriorityResult
{
  #keys: '[414382.0.577602130]'
  Body:
  [*
    name := PriorityPolicyStringList.Text();
    PriorityResult::CalculatePriorityResult(name,MacroPlan,GlobalOTDTable);
    this.Close();
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogChoosePriorityPolicy/Response_pnlActions_btnOk_OnClick.def
@@ -8,8 +8,8 @@
  {
    Body:
    [*
      name := PriorityPolicyStringList.Text();
      PriorityResult::CalculatePriorityResult(name,MacroPlan,GlobalOTDTable);
      dlg := construct( DialogChoosePriorityPolicy );
      dlg.CalculatePriorityResult();
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormPriorityPolicy/Component_PanelPriorityPolicyOperationButton#713.def
@@ -31,7 +31,7 @@
      BaseType: 'WebButton'
      Properties:
      [
        Label: '*'
        Label: '-'
        Taborder: 3
      ]
    }