yypsybs
2023-10-17 9ddc6a9215c98af29ec989b2a0f6cd69f06ff2f5
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
Quintiq file version 2.0
#parent: #root
StaticMethod Update (
  GlobalOTDSOP parent,
  MatAttrSettingAndPlanStrategyDataRow excelRow,
  String userName
) as MatAttrSettingAndPlanStrategy
{
  TextBody:
  [*
    fields := MatAttrSettingAndPlanStrategyDataTable::ExportFields();
    headers := MatAttrSettingAndPlanStrategyDataTable::ExpectedHeaders();
    //info( "--------SaveData--------" );
    // 找待更新记录
    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 ) {
        FeedbackObject::LocalFeedback().AddHard( "the column with index " + [String]i + " should be " + header + ", but found " + cell.MatAttrSettingAndPlanStrategyDataColumn().name() );
        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( isnull( toUpdate ) ) {
          FeedbackObject::LocalFeedback().AddHard( "get MatAttrSettingAndPlanStrategy by matCode [" + matCode + "] failed" );
          error( "get MatAttrSettingAndPlanStrategy by matCode [" + matCode + "] failed" );
        }
      }
    }
    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( "MatAttrSettingAndPlanStrategy", fieldName);
        if( isnull( field ) ) {
          FeedbackObject::LocalFeedback().AddHard( "MatAttrSettingAndPlanStrategy does not have field " + fieldName );
          error( "MatAttrSettingAndPlanStrategy does not have field " + fieldName );
        }
    //    info( "========header:" + header + "========" )
    //    info( "========fieldName:" + fieldName + "========" )
    //    info( "========cell:" + cell.value() + "========" )
        if( fieldName = "MatName" or fieldName = "MatType" or fieldName = "FlagLongTerm" or fieldName = "FlagGeneric" or fieldName = "PlanningStrategyAuto" ) {
          // do nothing
        } else if( fieldName = "MatArrivalLT" or fieldName = "ProductCount" or fieldName = "MinProdDeliverLT" ) {
          // do nothing
        } else if( fieldName = "PlanningStrategyCustom" ) {
          if( cell.value() <> "VMI" and cell.value() <> "安全库存" and cell.value() <> "VIT" ) {
            FeedbackObject::LocalFeedback().AddHard( "unsupported PlanningStrategyCustom : " + cell.value() );
            error( "unsupported PlanningStrategyCustom : " + cell.value() );
          } else if( cell.value() <> toUpdate.PlanningStrategyCustom() ) {
            toUpdate.PlanningStrategyCustom( cell.value() );
            toUpdate.UpdateBy( userName );
            toUpdate.UpdateTime( DateTime::Now() );
          }
        }
      }
    } else {
      FeedbackObject::LocalFeedback().AddHard( "no record with matCode : " + matCode );
      error( "no record with matCode : " + matCode );
    }
    
    return toUpdate;
  *]
}