lihongji
2024-09-27 46ddfed5009f83c7238e11254154c03aa8260774
下线计划优化
已重命名5个文件
已修改10个文件
已添加24个文件
已删除1个文件
758 ■■■■ 文件已修改
_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanImportData_MacroPlan_MacroPlan_OfflinePlanImportData.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Attribute_IsQuantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Function_CalcIsQuantity.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Function_CalcQuantity.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Method_QuantityGreaterThan0.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/StaticMethod_Download.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/Attribute_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/DefaultValue_IsShow.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnIndex.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanImportData/Attribute_Date.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanImportData/Attribute_Order.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanImportData/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanImportData/Attribute_Quantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanImportData/StaticMethod_UpdateCell.qbl 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanImportData/StaticMethod_Upload.qbl 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanImportData/_ROOT_Type_OfflinePlanImportData.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/Attribute_Notes.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/OfflinePlanCell.qrp 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysis627/Component_swTop.def 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysis627/Component_swTopMost.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_frmStandardAnalysis627/_ROOT_Component_frmStandardAnalysis627.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader1#799.def 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader2.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bConfirm_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bDeductionOfReplacementLoss_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bDownload_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bImport_OnClick.def 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bRefresh_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bRestore_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bSaveAsDraft_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader2_sDateFilter_OnUserChanged.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanColumn_OfflinePlanColumn_OfflinePlanCell.qbl
@@ -18,6 +18,6 @@
    #keys: '3[413988.0.1296697094][413988.0.1296697093][413988.0.1296697095]'
    Cardinality: '1toN'
    ObjectDefinition: OfflinePlanColumn
    OwningSide: 'Owned'
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_OfflinePlanCell_OfflinePlanRow_OfflinePlanRow_OfflinePlanCell.qbl
@@ -18,6 +18,6 @@
    #keys: '3[413988.0.1296697107][413988.0.1296697106][413988.0.1296697108]'
    Cardinality: '1toN'
    ObjectDefinition: OfflinePlanRow
    OwningSide: 'Reference'
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_OfflinePlanImportData_MacroPlan_MacroPlan_OfflinePlanImportData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OfflinePlanImportData_MacroPlan_MacroPlan_OfflinePlanImportData
{
  #keys: '1[413988.0.1558681405]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1558681407][413988.0.1558681406][413988.0.1558681408]'
    Cardinality: '0to1'
    ObjectDefinition: OfflinePlanImportData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OfflinePlanImportData
  {
    #keys: '3[413988.0.1558681410][413988.0.1558681409][413988.0.1558681411]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_OfflinePlanCell/Attribute_IsQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsQuantity
{
  #keys: '3[413988.0.1565814440][413988.0.1565814439][413988.0.1565814441]'
  ValueType: Boolean
}
_Main/BL/Type_OfflinePlanCell/Function_CalcIsQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcIsQuantity
{
  TextBody:
  [*
    // lihongji Sep-27-2024 (created)
    value := ifexpr( this.OfflinePlanRow().Type() = "1" and this.OfflinePlanColumn().ColumnIndex() > 1 and this.Quantity() > 0, true, false );
    this.IsQuantity( value );
  *]
}
_Main/BL/Type_OfflinePlanCell/Function_CalcQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Function CalcQuantity
{
  TextBody:
  [*
    // lihongji Sep-27-2024 (created)
    value := ifexpr( ( this.OfflinePlanRow().Type() = "1" or this.OfflinePlanRow().Type() = "2" ) and this.OfflinePlanColumn().ColumnIndex() > 1,
                     guard( [Number]this.Value(), 0 ), 0 );
    this.Quantity( value );
  *]
}
_Main/BL/Type_OfflinePlanCell/Method_QuantityGreaterThan0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Method QuantityGreaterThan0 (
  String type,
  String pl
) as Boolean
{
  TextBody: 'return this.OfflinePlanRow().Type() = type and this.OfflinePlanRow().ProductionLine() = pl and this.Quantity() > 0.0;'
}
_Main/BL/Type_OfflinePlanCell/StaticMethod_Download.qbl
@@ -1,7 +1,8 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  MacroPlan macroPlan
  MacroPlan macroPlan,
  OfflinePlanRows selectedOPRs
) as BinaryValue
{
  TextBody:
@@ -13,12 +14,12 @@
    
    opt  := maxselect( macroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
    opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
    oprs := selectsortedset( opt, OfflinePlanRow, tempOPR, true, tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
    oprs := selectsortedset( selectedOPRs, Elements, tempOPR, true, tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
    traverse ( opcs, Elements, opc ) {
      column := xmlDOM.CreateElement( "column" );
      name   := xmlDOM.CreateElement( "name" );
      type   := xmlDOM.CreateElement( "type" );
      name.TextContent( ifexpr( opc.ColumnDate() < macroPlan.StartOfPlanning().Date(), "", opc.ColumnDate().Format( "Y/M2/D2" ) ) );
      name.TextContent( ifexpr( opc.ColumnDate() < macroPlan.StartOfPlanning().Date(), "*", opc.ColumnDate().Format( "Y/M2/D2" ) ) );
      type.TextContent( "String" );
      column.AppendChild( name );
      column.AppendChild( type );
_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -35,12 +35,13 @@
          }
          
          // èµ‹å€¼å•元格
          cellQuantity := opc.OfflinePlanCell( relnew, Value := [String]ns.Quantity().Round( 0 ), Shift := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern().Name(), Quantity := ns.Quantity() );
          cellQuantity.OfflinePlanRow( relset, oprQuantity );
          cellOrder := opc.OfflinePlanCell( relnew, Value := "单号" + [String]ns.Quantity().Round( 0 ) + "_" + [String]( ns.ProductInStockingPointInPeriodPlanningLeaf().InventoryLevelEnd() - ns.ProductInStockingPointInPeriodPlanningLeaf().MinInventoryLevel() ),
                                            Quantity := ns.Quantity(),
          cellQuantity := oprQuantity.OfflinePlanCell( relnew, Value := [String]ns.Quantity().Round( 0 ), Shift := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern().Name() );
          cellQuantity.OfflinePlanColumn( relset, opc );
          cellOrder := oprOrder.OfflinePlanCell( relnew,
    //                                             Value := "单号" + [String]ns.Quantity().Round( 0 ) + "_" + [String]( ns.ProductInStockingPointInPeriodPlanningLeaf().InventoryLevelEnd() - ns.ProductInStockingPointInPeriodPlanningLeaf().MinInventoryLevel() ),
                                                 Value := [String]ns.Quantity().Round( 0 ),
                                            InventoryWeight := ns.ProductInStockingPointInPeriodPlanningLeaf().InventoryLevelEnd() - ns.ProductInStockingPointInPeriodPlanningLeaf().MinInventoryLevel() );
          cellOrder.OfflinePlanRow( relset, oprOrder );
          cellOrder.OfflinePlanColumn( relset, opc );
        }
      }
      
@@ -59,30 +60,30 @@
    typeOPC    := opt.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 );
    traverse ( opt, OfflinePlanRow, opr ) {
      if ( opr.Type() = "0" ) {
        productLineCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductionLine() );
        productLineCell.OfflinePlanRow( relset, opr );
        productLineCell := opr.OfflinePlanCell( relnew, Value := opr.ProductionLine() );
        productLineCell.OfflinePlanColumn( relset, productOPC );
      } else if( opr.Type() = "1" ) {
        productCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductID() + ifexpr( opr.Notes() = "", "", "-" + opr.Notes() ) );
        productCell.OfflinePlanRow( relset, opr );
        typeCell    := typeOPC.OfflinePlanCell( relnew, Value :=  "Quantity" );
        typeCell.OfflinePlanRow( relset, opr );
        productCell := opr.OfflinePlanCell( relnew, Value := opr.ProductID() + ifexpr( opr.Notes() = "", "", "-" + opr.Notes() ) );
        productCell.OfflinePlanColumn( relset, productOPC );
        typeCell    := opr.OfflinePlanCell( relnew, Value :=  "Quantity" );
        typeCell.OfflinePlanColumn( relset, typeOPC );
      } else if ( opr.Type() = "2" ) {
        typeCell    := typeOPC.OfflinePlanCell( relnew, Value :=  "Order" );
        typeCell.OfflinePlanRow( relset, opr );
        typeCell    := opr.OfflinePlanCell( relnew, Value :=  "Order" );
        typeCell.OfflinePlanColumn( relset, typeOPC );
      } else if ( opr.Type() = "3" ) {
        totalCell := productOPC.OfflinePlanCell( relnew, Value := "合计" );
        totalCell.OfflinePlanRow( relset, opr );
        totalCell := typeOPC.OfflinePlanCell( relnew, Value :=  "总量" );
        totalCell.OfflinePlanRow( relset, opr );
        totalCell := opr.OfflinePlanCell( relnew, Value := "合计" );
        totalCell.OfflinePlanColumn( relset, productOPC );
        totalCell := opr.OfflinePlanCell( relnew, Value :=  "总量" );
        totalCell.OfflinePlanColumn( relset, typeOPC );
      } else if ( opr.Type() = "4" ) {
        shiftCell := typeOPC.OfflinePlanCell( relnew, Value :=  "班次" );
        shiftCell.OfflinePlanRow( relset, opr );
        shiftCell := opr.OfflinePlanCell( relnew, Value :=  "班次" );
        shiftCell.OfflinePlanColumn( relset, typeOPC );
      } else if ( opr.Type() = "5" ) {
        shiftStartDateCell := typeOPC.OfflinePlanCell( relnew, Value :=  "班次开始时间" );
        shiftStartDateCell.OfflinePlanRow( relset, opr );
        shiftStartDateCell := opr.OfflinePlanCell( relnew, Value :=  "班次开始时间" );
        shiftStartDateCell.OfflinePlanColumn( relset, typeOPC );
      } else if ( opr.Type() = "6" ) {
        shiftEndDateCell := typeOPC.OfflinePlanCell( relnew, Value :=  "班次结束时间" );
        shiftEndDateCell.OfflinePlanRow( relset, opr );
        shiftEndDateCell := opr.OfflinePlanCell( relnew, Value :=  "班次结束时间" );
        shiftEndDateCell.OfflinePlanColumn( relset, typeOPC );
      }
    }
    
@@ -95,16 +96,16 @@
      // è¡¥å…¨æ€»é‡
      traverse ( totalOPRs, Elements, totalOPR ) {
        total     := sum( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = totalOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1", [Real]tempOPC.Value() );
        totalCell := opc.OfflinePlanCell( relnew, Value := [String]total );
        totalCell.OfflinePlanRow( relset, totalOPR );
        totalCell := totalOPR.OfflinePlanCell( relnew, Value := [String]total );
        totalCell.OfflinePlanColumn( relset, opc );
      }
      
      // &班次
      traverse ( shiftOPRs, Elements, shiftOPR ) {
        shift := select( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = shiftOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1" ); 
        if ( not isnull( shift ) ) {
          shiftCell := opc.OfflinePlanCell( relnew, Value := shift.Shift() );
          shiftCell.OfflinePlanRow( relset, shiftOPR );
          shiftCell := shiftOPR.OfflinePlanCell( relnew, Value := shift.Shift() );
          shiftCell.OfflinePlanColumn( relset, opc );
        }
      }
      
@@ -113,8 +114,8 @@
        shift := select( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = ssdOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1" ); 
        if ( not isnull( shift ) ) {
          startDate     := guard( minselect( macroPlan, ShiftPattern.ShiftDayTime, tempSDT, tempSDT.ShiftPattern().Name() = shift.Shift(), tempSDT.Sequence() ).StartDateTime().Format( "H:m" ), "" );
          startDateCell := opc.OfflinePlanCell( relnew, Value := startDate );
          startDateCell.OfflinePlanRow( relset, ssdOPR );
          startDateCell := ssdOPR.OfflinePlanCell( relnew, Value := startDate );
          startDateCell.OfflinePlanColumn( relset, opc );
        }
      }
      
@@ -123,8 +124,8 @@
        shift := select( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = sedOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1" ); 
        if ( not isnull( shift ) ) {
          endDate     := guard( maxselect( macroPlan, ShiftPattern.ShiftDayTime, tempSDT, tempSDT.ShiftPattern().Name() = shift.Shift(), tempSDT.Sequence() ).EndDateTIme().Format( "H:m" ), "" );
          endDateCell := opc.OfflinePlanCell( relnew, Value := endDate );
          endDateCell.OfflinePlanRow( relset, sedOPR );
          endDateCell := sedOPR.OfflinePlanCell( relnew, Value := endDate );
          endDateCell.OfflinePlanColumn( relset, opc );
        }
      }
    }
@@ -145,12 +146,13 @@
      traverse ( opt, OfflinePlanColumn, opc ) {
        cell := select( opr, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanColumn() = opc );
        if ( isnull( cell ) ) {
          cell := opc.OfflinePlanCell( relnew, Value := "" );
          cell.OfflinePlanRow( relset, opr );
          cell := opr.OfflinePlanCell( relnew, Value := "" );
          cell.OfflinePlanColumn( relset, opc );
        }
      }
    }
    
    Transaction::Transaction().Propagate( attribute( OfflinePlanCell, Quantity ) );
    Transaction::Transaction().PropagateAll();
    
    // è®¾ç½®ç”Ÿäº§é¡ºåº
@@ -161,11 +163,12 @@
      nextColumn     := indexColumn.NextColumn();
      
      while ( not isnull( indexColumn.NextColumn() ) 
    //          and indexColumn.ColumnDate() <= Date::Construct( 2024, 4, 16 ) // æµ‹è¯•实际场景时可以过滤
    //          and indexColumn.ColumnDate() <= Date::Construct( 2020, 4, 1 ) // æµ‹è¯•实际场景时可以过滤
             ) {
        productionSerialNumber := 1;
        opcs                   := selectsortedset( indexColumn, OfflinePlanCell, tempOPC, tempOPC.FindType( "2", pl ), tempOPC.InventoryWeight() );
        initialSize            := opcs.Size();
        info( "计划开始时间:", macroPlan.StartOfPlanning().Date().Format( "Y-M2-D2" ), "    ç´¢å¼•时间:", indexDate.Format( "Y-M2-D2" ), "    ä¸ªæ•°ï¼š", opcs.Size() );
        if ( opcs.Size() > 0 ) {
          // åˆ¤å®š1
          previousOPC := maxselect( previousColumn, OfflinePlanCell, tempOPC, tempOPC.FindType( "2", pl ), tempOPC.ProductionSerialNumber() );
_Main/BL/Type_OfflinePlanColumn/Attribute_IsShow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsShow
{
  #keys: '3[413988.0.1565821671][413988.0.1565821670][413988.0.1565821672]'
  ValueType: Boolean
}
_Main/BL/Type_OfflinePlanColumn/DefaultValue_IsShow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: 'true'
  TargetAttribute: IsShow
}
_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcColumnIndex
{
  TextBody:
  [*
    // lihongji Sep-27-2024 (created)
    value := guard( this.PreviousColumn().ColumnIndex() + 1, 0 )
    this.ColumnIndex( value );
  *]
}
_Main/BL/Type_OfflinePlanImportData/Attribute_Date.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Date
{
  #keys: '3[413988.0.1558681449][413988.0.1558681448][413988.0.1558681450]'
  ValueType: Date
}
_Main/BL/Type_OfflinePlanImportData/Attribute_Order.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Order
{
  #keys: '3[413988.0.1558681429][413988.0.1558681428][413988.0.1558681430]'
  ValueType: String
}
_Main/BL/Type_OfflinePlanImportData/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[413988.0.1558681419][413988.0.1558681418][413988.0.1558681420]'
  ValueType: String
}
_Main/BL/Type_OfflinePlanImportData/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.0.1558681439][413988.0.1558681438][413988.0.1558681440]'
  ValueType: String
}
_Main/BL/Type_OfflinePlanImportData/StaticMethod_UpdateCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#parent: #root
StaticMethod UpdateCell (
  GeneralExcelImportAndExportDataTable table,
  GeneralExcelImportAndExportDataRow row,
  OfflinePlanTable opt,
  OfflinePlanRow opr
)
{
  TextBody:
  [*
    traverse ( table, GeneralExcelImportAndExportDataColumn, column ) {
      if ( column.ColumnIndex() = 0 ) {
        cell := select( column, GeneralExcelImportAndExportDataCell, tempColumn, tempColumn.GeneralExcelImportAndExportDataRow() = row );
        opc  := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnIndex() = 0 );
        opcell := opr.OfflinePlanCell( relnew, Value := cell.Value() );
        opcell.OfflinePlanColumn( relset, opc );
      } else if ( column.ColumnIndex() = 1 ) {
        cell := select( column, GeneralExcelImportAndExportDataCell, tempColumn, tempColumn.GeneralExcelImportAndExportDataRow() = row );
        opc  := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnIndex() = 1 );
        opcell := opr.OfflinePlanCell( relnew, Value := cell.Value() );
        opcell.OfflinePlanColumn( relset, opc );
      } else {
        cell   := select( column, GeneralExcelImportAndExportDataCell, tempColumn, tempColumn.GeneralExcelImportAndExportDataRow() = row );
        opc    := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnName() = column.Name() );
        opcell := opr.OfflinePlanCell( relnew, Value := cell.Value() );
        opcell.OfflinePlanColumn( relset, opc );
      }
    }
  *]
}
_Main/BL/Type_OfflinePlanImportData/StaticMethod_Upload.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Upload (
  MacroPlan macroPlan,
  OfflinePlanTable opt,
  GeneralExcelImportAndExportDataTable table
)
{
  TextBody:
  [*
    indexUnitID    := "";
    indexProductID := "";
    traverse ( table, GeneralExcelImportAndExportDataRow, row ) {
      firstColumn  := select( table, GeneralExcelImportAndExportDataColumn, tempC, tempC.ColumnIndex() = 0 );
      secondColumn := select( table, GeneralExcelImportAndExportDataColumn, tempC, tempC.ColumnIndex() = 1 );
      firstCell    := select( row, GeneralExcelImportAndExportDataCell, tempC, tempC.GeneralExcelImportAndExportDataColumn() = firstColumn );
      u            := select( macroPlan, Unit, tempU, tempU.ID() = firstCell.Value() );
      product      := select( macroPlan, Product_MP, tempPMP, tempPMP.ID() = firstCell.Value() );
      secondCell    := select( row, GeneralExcelImportAndExportDataCell, tempC, tempC.GeneralExcelImportAndExportDataColumn() = secondColumn );
      if ( not isnull( u ) and secondCell.Value() = "" ) {
        indexUnitID := u.ID();
        opr         := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = indexUnitID and tempOPR.ProductID() = "" and tempOPR.Type() = "0" );
        opr.OfflinePlanCell( relflush );
        OfflinePlanImportData::UpdateCell( table, row, opt, opr );
      } else if ( not isnull( product ) and secondCell.Value() = "Quantity" ) {
        indexProductID := product.ID();
        opr            := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = indexUnitID and tempOPR.ProductID() = indexProductID and tempOPR.Type() = "1" );
        opr.OfflinePlanCell( relflush );
        OfflinePlanImportData::UpdateCell( table, row, opt, opr );
      } else if ( isnull( product ) and secondCell.Value() = "Order" ) {
        opr := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = indexUnitID and tempOPR.ProductID() = indexProductID and tempOPR.Type() = "2" );
        opr.OfflinePlanCell( relflush );
        OfflinePlanImportData::UpdateCell( table, row, opt, opr );
      } else if ( firstCell.Value() = "合计" and secondCell.Value() = "总量" ) {
        opr := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = indexUnitID and tempOPR.ProductID() = "Z" and tempOPR.Type() = "3" );
        opr.OfflinePlanCell( relflush );
        OfflinePlanImportData::UpdateCell( table, row, opt, opr );
      } else if ( firstCell.Value() = "" and secondCell.Value() = "班次" ) {
        opr := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = indexUnitID and tempOPR.ProductID() = "Z" and tempOPR.Type() = "4" );
        opr.OfflinePlanCell( relflush );
        OfflinePlanImportData::UpdateCell( table, row, opt, opr );
      } else if ( firstCell.Value() = "" and secondCell.Value() = "班次开始时间" ) {
        opr := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = indexUnitID and tempOPR.ProductID() = "Z" and tempOPR.Type() = "5" );
        opr.OfflinePlanCell( relflush );
        OfflinePlanImportData::UpdateCell( table, row, opt, opr );
      } else if ( firstCell.Value() = "" and secondCell.Value() = "班次结束时间" ) {
        opr := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = indexUnitID and tempOPR.ProductID() = "Z" and tempOPR.Type() = "6" );
        opr.OfflinePlanCell( relflush );
        OfflinePlanImportData::UpdateCell( table, row, opt, opr );
      } else {
        error( "导入失败,数据异常" );
      }
    }
  *]
}
_Main/BL/Type_OfflinePlanImportData/_ROOT_Type_OfflinePlanImportData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type OfflinePlanImportData
{
  #keys: '5[413988.0.1558681402][413988.0.1558681400][0.0.0][413988.0.1558681401][413988.0.1558681403]'
  BaseType: Object
  StructuredName: 'OfflinePlanImportDatas'
}
_Main/BL/Type_OfflinePlanRow/Attribute_Notes.qbl
@@ -3,5 +3,6 @@
Attribute Notes
{
  #keys: '3[415754.0.180041713][415754.0.180041712][415754.0.180041714]'
  Description: '4位码'
  ValueType: String
}
_Main/Sys/Repr/Global/OfflinePlanCell.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation OfflinePlanCell
{
  AttributeRepresentation Value
  {
    AttributeKey: '[413988.0.1296697079]'
    Conditional:
    [
      DataRepresentation.Conditional
      {
        BackgroundColor: '$FF3399'
        ConditionBody: 'object.IsQuantity()'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
    ]
  }
  RelationRepresentation OfflinePlanColumn { RelationKey: '[413988.0.1296697090]' Visibility: 'Normal' }
}
_Main/UI/MacroPlanner/Component_ApplicationLibMacroPlanner/Component_mbMainMenu.def
@@ -85,6 +85,8 @@
        Component ComponentMenu702 { #keys: '[413988.0.1234424010]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'frmStandardAnalysis822' Text: 'Interface Dataset' ] }
        Component menuSeparator891 { #keys: '[413988.0.1263894630]' BaseType: 'Menu' Properties: [ Separator: true ] }
        Component MenuWholeShift { #keys: '[413988.0.1263894682]' BaseType: 'Menu' Properties: [ Image: 'FISH_BOWL' Text: '测试整班' ] }
        Component menuSeparator604 { #keys: '[413988.0.1559834087]' BaseType: 'Menu' Properties: [ Separator: true ] }
        Component ComponentMenu710 { #keys: '[413988.0.1559834106]' BaseType: 'ComponentMenu' Properties: [ ComponentType: 'frmStandardAnalysis627' Text: '' ] }
      ]
      Properties:
      [
@@ -104,10 +106,12 @@
          c: ComponentMenu469
          c: ComponentMenu357
          c: ComponentMenu702
          c: ComponentMenu710
          c: menuSeparator222
          c: ComponentMenu347
          c: menuSeparator891
          c: MenuWholeShift
          c: menuSeparator604
        }
      ]
    }
_Main/UI/MacroPlanner/Component_frmStandardAnalysis627/Component_swTop.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
Quintiq file version 2.0
Component swTop
{
  #keys: '[530.0.3531806]'
  BaseType: 'swTop'
  IsDerived: true
  Children:
  [
    Component spTopLeft
    {
      #keys: '[530.0.3531807]'
      BaseType: 'spTopLeft'
      IsDerived: true
      Children:
      [
        Component Analysis
        {
          #keys: '[530.0.3532065]'
          BaseType: 'Analysis'
          IsDerived: true
          Properties:
          [
            GlobalInstance: 'RecycleBin'
          ]
        }
      ]
    }
  ]
}
_Main/UI/MacroPlanner/Component_frmStandardAnalysis627/Component_swTopMost.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
Component swTopMost
{
  #keys: '[530.0.3531801]'
  BaseType: 'swTopMost'
  IsDerived: true
  Children:
  [
    Component SplitterPane1
    {
      #keys: '[530.0.3531802]'
      BaseType: 'SplitterPane1'
      IsDerived: true
      Children:
      [
        #child: swTop
      ]
    }
  ]
}
_Main/UI/MacroPlanner/Component_frmStandardAnalysis627/_ROOT_Component_frmStandardAnalysis627.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#root
#parent: MacroPlanner
OrphanComponent frmStandardAnalysis627
{
  #keys: '[413988.0.1559834123]'
  BaseType: 'frmStandardAnalysis'
  Children:
  [
    #child: swTopMost
  ]
  Properties:
  [
    Title: 'RecycleBin'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def
@@ -44,12 +44,10 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'OfflinePlanTable'
            FilterArguments: 'entities:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedEntities'
            FixedFilter: 'object.Filter( entities )'
            Source: 'dhOfflinePlanTable'
            DataType: 'structured[OfflinePlanRow]'
            Source: 'dhSelectedOfflinePlanRow'
            Taborder: 0
            Transformation: 'OfflinePlanRow'
            Transformation: 'Elements'
          ]
        }
      ]
@@ -73,6 +71,7 @@
          Properties:
          [
            DataType: 'OfflinePlanTable'
            FixedFilter: 'object.IsShow()'
            Source: 'dhOfflinePlanTable'
            Taborder: 0
            Transformation: 'OfflinePlanColumn'
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def
@@ -16,6 +16,33 @@
        Taborder: 1
      ]
    }
    Component dhSelectedOfflinePlanRow
    {
      #keys: '[413988.0.1557550767]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[OfflinePlanRow]*'
      Children:
      [
        Component deSelectedOfflinePlanRow
        {
          #keys: '[413988.0.1557550817]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'OfflinePlanTable'
            FilterArguments: 'entities:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedEntities'
            FixedFilter: 'object.Filter( entities )'
            Source: 'dhOfflinePlanTable'
            Taborder: 0
            Transformation: 'OfflinePlanRow'
          ]
        }
      ]
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader.def
@@ -1,76 +1,17 @@
Quintiq file version 2.0
Component pHeader
{
  #keys: '[413988.0.1296872680]'
  #keys: '[413988.0.1568330469]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bRefresh
    {
      #keys: '[413988.0.1296860898]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 0
      ]
    }
    Component bDownload
    {
      #keys: '[413988.0.1296875316]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Download'
        Taborder: 1
      ]
    }
    Component bDeductionOfReplacementLoss
    {
      #keys: '[413988.0.1297911732]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Deduction of replacement loss'
        Taborder: 2
      ]
    }
    Component bRestore
    {
      #keys: '[413988.0.1297911774]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Restore'
        Taborder: 3
      ]
    }
    Component bSaveAsDraft
    {
      #keys: '[413988.0.1297973728]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Save as draft'
        Taborder: 4
      ]
    }
    Component bConfirm
    {
      #keys: '[413988.0.1297973782]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Confirm'
        Taborder: 5
      ]
    }
    #child: pHeader1_799
    #child: pHeader2
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader1#799.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
Quintiq file version 2.0
Component pHeader1 id:pHeader1_799
{
  #keys: '[413988.0.1568330588]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bRefresh
    {
      #keys: '[413988.0.1568330589]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'REFRESH'
        Taborder: 0
      ]
    }
    Component bDownload
    {
      #keys: '[413988.0.1568330590]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Download'
        Taborder: 1
      ]
    }
    Component bDeductionOfReplacementLoss
    {
      #keys: '[413988.0.1568330591]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Deduction of replacement loss'
        Taborder: 3
      ]
    }
    Component bRestore
    {
      #keys: '[413988.0.1568330592]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Restore'
        Taborder: 4
      ]
    }
    Component bSaveAsDraft
    {
      #keys: '[413988.0.1568330593]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Save as draft'
        Taborder: 5
      ]
    }
    Component bConfirm
    {
      #keys: '[413988.0.1568330594]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Confirm'
        Taborder: 6
      ]
    }
    Component bImport
    {
      #keys: '[413988.0.1568330595]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Import'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pHeader2.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
Component pHeader2
{
  #keys: '[413988.0.1568330735]'
  BaseType: 'WebPanel'
  Children:
  [
    Component sDateFilter
    {
      #keys: '[413988.0.1567271085]'
      BaseType: 'WebSlider'
      Properties:
      [
        NumberOfColumns: 100
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bConfirm_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bConfirm_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: pHeader/bConfirm
Response OnClick () id:Response_pHeader_bConfirm_OnClick
#parent: pHeader1_799/bConfirm
Response OnClick () id:Response_pHeader1_799_bConfirm_OnClick
{
  #keys: '[413988.0.1297974240]'
  #keys: '[413988.0.1568330582]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bDeductionOfReplacementLoss_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDeductionOfReplacementLoss_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: pHeader/bDeductionOfReplacementLoss
Response OnClick () id:Response_pHeader_bDeductionOfReplacementLoss_OnClick
#parent: pHeader1_799/bDeductionOfReplacementLoss
Response OnClick () id:Response_pHeader1_799_bDeductionOfReplacementLoss_OnClick
{
  #keys: '[413988.0.1297973984]'
  #keys: '[413988.0.1568330585]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bDownload_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader1_799/bDownload
Response OnClick () id:Response_pHeader1_799_bDownload_OnClick
{
  #keys: '[413988.0.1568330586]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := OfflinePlanCell::Download( MacroPlan, dhSelectedOfflinePlanRow.Data() );
      Application.Download( "Offline plan.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bImport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
Quintiq file version 2.0
#parent: pHeader1_799/bImport
Response OnClick () id:Response_pHeader1_799_bImport_OnClick
{
  #keys: '[413988.0.1568330581]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
          OfflinePlanImportData::Upload( MacroPlan, dhOfflinePlanTable.Data(), selection );
          // åŽç»­åˆ é™¤
      //    generalExcelImportAndExportDataSource.Delete();
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bRefresh_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: pHeader/bRefresh
Response OnClick () id:Response_pHeader_bRefresh_OnClick
#parent: pHeader1_799/bRefresh
Response OnClick () id:Response_pHeader1_799_bRefresh_OnClick
{
  #keys: '[413988.0.1297973814]'
  #keys: '[413988.0.1568330587]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bRestore_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: pHeader/bRestore
Response OnClick () id:Response_pHeader_bRestore_OnClick
#parent: pHeader1_799/bRestore
Response OnClick () id:Response_pHeader1_799_bRestore_OnClick
{
  #keys: '[413988.0.1297974069]'
  #keys: '[413988.0.1568330584]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader1_799_bSaveAsDraft_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: pHeader/bSaveAsDraft
Response OnClick () id:Response_pHeader_bSaveAsDraft_OnClick
#parent: pHeader1_799/bSaveAsDraft
Response OnClick () id:Response_pHeader1_799_bSaveAsDraft_OnClick
{
  #keys: '[413988.0.1297974155]'
  #keys: '[413988.0.1568330583]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader2_sDateFilter_OnUserChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: pHeader2/sDateFilter
Response OnUserChanged () id:Response_pHeader2_sDateFilter_OnUserChanged
{
  #keys: '[413988.0.1568579788]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebSlider_OnUserChanged'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      traverse ( dhOfflinePlanTable.Data(), OfflinePlanColumn, opc ) {
       opc.IsShow( true );
        if ( opc.ColumnIndex() > 1 and opc.ColumnIndex() < this.EndReal() ) {
          opc.IsShow( false );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/_ROOT_Component_FormOfflinePlan.def
@@ -7,8 +7,8 @@
  BaseType: 'WebForm'
  Children:
  [
    #child: pHeader
    #child: pContent
    #child: pHeader
  ]
  Properties:
  [