yypsybs
2023-09-07 c000dc46ef27c081fbc15955bfc9c410f39d7191
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
Quintiq file version 2.0
#parent: #root
StaticMethod update (
  GlobalOTDTable parent,
  MatAttrSettingAndPlanStrategyDataRow excelRow
) as MatAttrSettingAndPlanStrategy
{
  TextBody:
  [*
    fields := MatAttrSettingAndPlanStrategyDataTable::exportFields();
    headers := MatAttrSettingAndPlanStrategyDataTable::expectedHeaders();
    // 找待更新记录
    toUpdate := null( MatAttrSettingAndPlanStrategy );
    matCode := "";
    for( i := 0; i < fields.Size(); i++ ) {
      header := headers.Element( i );
      cell := excelRow.MatAttrSettingAndPlanStrategyDataCell( relget ).Element( i );
      if( cell.MatAttrSettingAndPlanStrategyDataColumn().name() <> header ) {
        error( "the column with index " + [String]i + " should be " + header + ", but found " + cell.MatAttrSettingAndPlanStrategyDataColumn().name() );
      }
      if( cell.MatAttrSettingAndPlanStrategyDataColumn().name() = "物料编码" and cell.value() <> "") {
        matCode := cell.value();
        toUpdate := MatAttrSettingAndPlanStrategy::getExistByMatCode( parent, matCode );
      }
    }
    if( not isnull( toUpdate ) ) {
      // 对比差异
      for( i := 0; i < fields.Size(); i++ ) {
        header := headers.Element( i );
        cell := excelRow.MatAttrSettingAndPlanStrategyDataCell( relget ).Element( i );
        fieldName := fields.Element( i );
        field := Reflection::FindAttribute( "MatAttrSettingAndPlanningStrategy", fieldName);
        if( fieldName = "MatName" or fieldName = "MatType" or fieldName = "FlagLongTerm" or fieldName = "FlagGeneric" or fieldName = "PlanningStrategyAuto" ) {
           fieldValue := guard( field.GetString( toUpdate ), "" );
           if( fieldValue <> cell.value() ) {
             error( "column " + header + " does not support to be changed" );
           }
        } else if( fieldName = "MatArrivalLT" or fieldName = "ProductCount" or fieldName = "MinProdDeliverLT" ) {
           fieldRealValue := guard( field.GetReal( toUpdate ), 0.0 );
           if( fieldRealValue <> [Real]cell.value() ) {
             error( "column " + header + " does not support to be changed" );
           }
        } else if( fieldName = "PlanningStrategyCustom" ) {
          fieldValue := guard( field.GetString( toUpdate ), "" );
          toUpdate.PlanningStrategyCustom( fieldValue );
        }
      }
    } else {
      error( "no record with matCode : " + matCode )
    }
    
    return toUpdate;
  *]
}