| Quintiq file version 2.0 | 
| #parent: #root | 
| Method CreateOrUpdateData ( | 
|   GlobalOTDTable globalOTDTable | 
| ) | 
| { | 
|   TextBody: | 
|   [* | 
|     traverse ( this, MatAttrSettingAndPlanStrategyDataRow, masapsdr ) { | 
|       itemCode := select( masapsdr, MatAttrSettingAndPlanStrategyDataCell, tempMASAPSDC, tempMASAPSDC.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" ); | 
|       targetMatAttrSettingAndPlanStrategy := select( globalOTDTable, 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 := globalOTDTable.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( globalOTDTable, MatAttrSettingAndPlanStrategy, tempMASAPS, tempMASAPS.SerialNumber() ).SerialNumber() + 1 );                                                                                 | 
|         } onerror { | 
|           error( "库存最小天数或库存最大天数必须为整数:", targetMatAttrSettingAndPlanStrategy.MatCode() ); | 
|         } | 
|       } | 
|     } | 
|   *] | 
| } |