Kevin Kok Khah Whey
2023-10-18 d5e46a7a9f2cb9123b9aafb39a20e14059faa2e4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Quintiq file version 2.0
#parent: #root
Method CreateOrUpdateData (
  GlobalOTDSOP globalOTDSOP
)
{
  TextBody:
  [*
    traverse ( this, MatAttrSettingAndPlanStrategyDataRow, masapsdr ) {
      itemCode := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" );
      targetMatAttrSettingAndPlanStrategy := select( globalOTDSOP, MatAttrSettingAndPlanStrategy, tempMASAPS, tempMASAPS.MatCode() = itemCode.value() );
      if ( not isnull( targetMatAttrSettingAndPlanStrategy ) ) {
        minimumNumberOfDaysInStock     := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "库存最小天数" ).value();
        maximumNumberOfDaysInInventory := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "库存最大天数" ).value();
        try {
          targetMatAttrSettingAndPlanStrategy.MinimumNumberOfDaysInStock( [Number]minimumNumberOfDaysInStock );
          targetMatAttrSettingAndPlanStrategy.MaximumNumberOfDaysInInventory( [Number]maximumNumberOfDaysInInventory );
          targetMatAttrSettingAndPlanStrategy.UpdateBy( QuintiqUser::CurrentUser().Username() );
          targetMatAttrSettingAndPlanStrategy.UpdateTime( DateTime::ActualTime() );
        } onerror {
          error( "库存最小天数或库存最大天数必须为整数:", targetMatAttrSettingAndPlanStrategy.MatCode() );
        }
      } else {
        businessType                      := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "业务类型" ).value();
        createItemCode                    := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" ).value();
        nameOfMaterial                    := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料名称" ).value();
        itemClassification                := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料分类" ).value();
        LTTimeDays                        := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "LT时间(天)" ).value();
    //    numberOfFinishedSKUs              := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "成品SKU数量" ).value();
    //    finishedProductDeliveryMinLTDays  := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "成品交付Min-LT(天)" ).value();
        longAndShortCycleLabels           := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "长短周期标签" ).value();
        genericSpecialLabels              := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "通用专用标签" ).value();
        automaticMaterialPlanningPolicies := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "自动物料计划策略" ).value();
        usersManuallySchedulePolicies     := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "用户手动计划策略" ).value();
        minimumNumberOfDaysInStock        := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "库存最小天数" ).value();
        maximumNumberOfDaysInInventory    := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "库存最大天数" ).value();
        if ( businessType = "集团面板" ) {
          if ( createItemCode.StartsWith( "103" ) ) {
            if( longAndShortCycleLabels = "长周期" ) {
              if ( genericSpecialLabels = "专用" ) {
                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
                  error( "导入的自动计划策略值出错:", createItemCode );
                }
              } else if ( genericSpecialLabels = "通用" ) {
                if ( automaticMaterialPlanningPolicies <> "安全库存" ) {
                  error( "导入的自动计划策略值出错:", createItemCode );
                }
              } else {
                error( "专通用标签的值出错:", createItemCode );
              }
            } else if ( longAndShortCycleLabels = "短周期" ) {
              if ( genericSpecialLabels = "专用" ) {
                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
                  error( "导入的自动计划策略值出错:", createItemCode );
                }
              } else if ( genericSpecialLabels = "通用" ) {
                if ( automaticMaterialPlanningPolicies <> "安全库存" ) {
                  error( "导入的自动计划策略值出错:", createItemCode );
                }
              } else {
                error( "专通用标签的值出错:", createItemCode );
              }
            } else {
              error( "长短周期的值出错:", createItemCode );
            }
          } else {
            if( longAndShortCycleLabels = "长周期" ) {
              if ( genericSpecialLabels = "专用" ) {
                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
                  error( "导入的自动计划策略值出错:", createItemCode );
                }
              } else if ( genericSpecialLabels = "通用" ) {
                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
                  error( "导入的自动计划策略值出错:", createItemCode );
                }
              } else {
                error( "专通用标签的值出错:", createItemCode );
              }
            } else if ( longAndShortCycleLabels = "短周期" ) {
              if ( genericSpecialLabels = "专用" ) {
                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
                  error( "导入的自动计划策略值出错:", createItemCode );
                }
              } else if ( genericSpecialLabels = "通用" ) {
                if ( automaticMaterialPlanningPolicies <> "JIT" ) {
                  error( "导入的自动计划策略值出错:", createItemCode );
                }
              } else {
                error( "专通用标签的值出错:", createItemCode );
              }
            } else {
              error( "长短周期的值出错:", createItemCode );
            }
          }
        } else {
          if( longAndShortCycleLabels = "长周期" ) {
            if ( genericSpecialLabels = "专用" ) {
              if ( automaticMaterialPlanningPolicies <> "JIT" ) {
                error( "导入的自动计划策略值出错:", createItemCode );
              }
            } else if ( genericSpecialLabels = "通用" ) {
              if ( automaticMaterialPlanningPolicies <> "安全库存" ) {
                error( "导入的自动计划策略值出错:", createItemCode );
              }
            } else {
              error( "专通用标签的值出错:", createItemCode );
            }
          } else if ( longAndShortCycleLabels = "短周期" ) {
            if ( genericSpecialLabels = "专用" ) {
              if ( automaticMaterialPlanningPolicies <> "JIT" ) {
                error( "导入的自动计划策略值出错:", createItemCode );
              }
            } else if ( genericSpecialLabels = "通用" ) {
              if ( automaticMaterialPlanningPolicies <> "VMI" ) {
                error( "导入的自动计划策略值出错:", createItemCode );
              }
            } else {
              error( "专通用标签的值出错:", createItemCode );
            }
          } else {
            error( "长短周期的值出错:", createItemCode );
          }
        }
        try {
          matAttrSettingAndPlanStrategy := globalOTDSOP.MatAttrSettingAndPlanStrategy( relnew,
                                                                                       BusinessType := businessType,
                                                                                       MatCode := createItemCode,
                                                                                       MatName := nameOfMaterial,
                                                                                       MatType := itemClassification,
                                                                                       MatArrivalLT := [Number]LTTimeDays,
    //                                                                                   ProductCount := [Number]numberOfFinishedSKUs,
    //                                                                                   MinProdDeliverLT := [Number]finishedProductDeliveryMinLTDays,
                                                                                       FlagLongTerm := longAndShortCycleLabels,
                                                                                       FlagGeneric := genericSpecialLabels,
    //                                                                                   PlanningStrategyAuto := automaticMaterialPlanningPolicies,
                                                                                       PlanningStrategyCustom := usersManuallySchedulePolicies,
                                                                                       MinimumNumberOfDaysInStock := [Number]minimumNumberOfDaysInStock,
                                                                                       MaximumNumberOfDaysInInventory := [Number]maximumNumberOfDaysInInventory
                                                                                        );
          matAttrSettingAndPlanStrategy.UpdateBy( QuintiqUser::CurrentUser().Username() );   
          matAttrSettingAndPlanStrategy.UpdateTime( DateTime::ActualTime() );
          matAttrSettingAndPlanStrategy.SerialNumber( maxselect( globalOTDSOP, MatAttrSettingAndPlanStrategy, tempMASAPS, tempMASAPS.SerialNumber() ).SerialNumber() + 1 );                                                                                
        } onerror {
          error( "库存最小天数或库存最大天数必须为整数:", targetMatAttrSettingAndPlanStrategy.MatCode() );
        }
      }
    }
  *]
}