rislai
2024-06-10 d05336a8c9f4aefa7f8230093700f508b2bc95cf
添加批量设置shift pattern功能
已添加40个文件
已修改1个文件
1162 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_ProductionLineBatchData_MacroPlan_MacroPlan_ProductionLineBatchData.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductionLineBatchData_ShiftPattern1_ShiftPattern_ProductionLineBa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductionLineBatchData_ShiftPattern2_ShiftPattern_ProductionLineBa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductionLineBatchData_Unit1_Unit_ProductionLineBatchData1.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductionLineBatchData_Unit2_Unit_ProductionLineBatchData2.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Attribute_IsEnable.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/DefaultValue_IsEnable.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_Disable.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_Enable.qbl 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_Update.qbl 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/Method_verifyEnable.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/StaticMethod_Create.qbl 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductionLineBatchData/_ROOT_Type_ProductionLineBatchData.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ShiftPattern/_ROOT_Type_ShiftPattern.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Test/StaticMethod_Test.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDebug.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef#1.def 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Component_pnlContent.def 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Method_Create.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Method_CreateEdit.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Method_Edit.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Response_pnlActions_btnOk_OnClick.def 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/_ROOT_Component_DialogCreateEditProductionLineBatchData.def 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_ListProductionLineBatchData.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_PanelProductionLineBatchData.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_listActionBarPageProductionLineBatchData.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_listContextMenuProductionLineBatchData.def 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnCreate_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnDelete_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnDisable_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnEdit_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnEnable_OnClick.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/_ROOT_Component_FormProductionLineBatchData.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Time_Capacities.vw 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ProductionLineBatchData_MacroPlan_MacroPlan_ProductionLineBatchData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductionLineBatchData_MacroPlan_MacroPlan_ProductionLineBatchData
{
  #keys: '1[412672.0.998406961]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[412672.0.998406963][412672.0.998406962][412672.0.998406964]'
    Cardinality: '0to1'
    ObjectDefinition: ProductionLineBatchData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductionLineBatchData
  {
    #keys: '3[412672.0.998406966][412672.0.998406965][412672.0.998406967]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ProductionLineBatchData_ShiftPattern1_ShiftPattern_ProductionLineBa.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductionLineBatchData_ShiftPattern1_ShiftPattern_ProductionLineBatchData1
{
  #keys: '1[412672.0.998377419]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide ShiftPattern1
  {
    #keys: '3[412672.0.998377421][412672.0.998377420][412672.0.998377422]'
    Cardinality: '0to1'
    ObjectDefinition: ProductionLineBatchData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductionLineBatchData1
  {
    #keys: '3[412672.0.998377424][412672.0.998377423][412672.0.998377425]'
    Cardinality: '1toN'
    ObjectDefinition: ShiftPattern
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_ProductionLineBatchData_ShiftPattern2_ShiftPattern_ProductionLineBa.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductionLineBatchData_ShiftPattern2_ShiftPattern_ProductionLineBatchData2
{
  #keys: '1[412672.0.998377443]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide ShiftPattern2
  {
    #keys: '3[412672.0.998377445][412672.0.998377444][412672.0.998377446]'
    Cardinality: '0to1'
    ObjectDefinition: ProductionLineBatchData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductionLineBatchData2
  {
    #keys: '3[412672.0.998377448][412672.0.998377447][412672.0.998377449]'
    Cardinality: '1toN'
    ObjectDefinition: ShiftPattern
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_ProductionLineBatchData_Unit1_Unit_ProductionLineBatchData1.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductionLineBatchData_Unit1_Unit_ProductionLineBatchData1
{
  #keys: '1[412672.0.998377384]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Unit1
  {
    #keys: '3[412672.0.998377386][412672.0.998377385][412672.0.998377387]'
    Cardinality: '0to1'
    ObjectDefinition: ProductionLineBatchData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductionLineBatchData1
  {
    #keys: '3[412672.0.998377389][412672.0.998377388][412672.0.998377390]'
    Cardinality: '1toN'
    ObjectDefinition: Unit
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_ProductionLineBatchData_Unit2_Unit_ProductionLineBatchData2.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ProductionLineBatchData_Unit2_Unit_ProductionLineBatchData2
{
  #keys: '1[412672.0.998377400]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Unit2
  {
    #keys: '3[412672.0.998377402][412672.0.998377401][412672.0.998377403]'
    Cardinality: '0to1'
    ObjectDefinition: ProductionLineBatchData
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ProductionLineBatchData2
  {
    #keys: '3[412672.0.998377405][412672.0.998377404][412672.0.998377406]'
    Cardinality: '1toN'
    ObjectDefinition: Unit
    OwningSide: 'Reference'
  }
}
_Main/BL/Type_ProductionLineBatchData/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[412672.0.998407025][412672.0.998407024][412672.0.998407026]'
  ValueType: Date
}
_Main/BL/Type_ProductionLineBatchData/Attribute_IsEnable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsEnable
{
  #keys: '3[412672.0.1013479637][412672.0.1013479636][412672.0.1013479638]'
  ValueType: Boolean
}
_Main/BL/Type_ProductionLineBatchData/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[412672.0.998407015][412672.0.998407014][412672.0.998407016]'
  ValueType: Date
}
_Main/BL/Type_ProductionLineBatchData/DefaultValue_IsEnable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: 'false'
  TargetAttribute: IsEnable
}
_Main/BL/Type_ProductionLineBatchData/Method_Disable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
Method Disable
{
  TextBody:
  [*
    // rislai Jun-10-2024 (created)
    this.IsEnable( false );
  *]
}
_Main/BL/Type_ProductionLineBatchData/Method_Enable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
Quintiq file version 2.0
#parent: #root
Method Enable
{
  TextBody:
  [*
    // rislai Jun-7-2024 (created)
    owner := this.MacroPlan();
    // è½®æ¢ç­æ¬¡ç¼“å­˜
    shiftPattern1 := this.ShiftPattern1();
    shiftPattern2 := this.ShiftPattern2();
    tempShiftPattern := shiftPattern1;
    dayPeriod_MPs := selectsortedset( owner,Period_MP,period_MP, period_MP.TimeUnit() = 'Day' and period_MP.StartDate() >= this.StartDate() and period_MP.EndDate() < this.EndDate() ,period_MP.StartDate());
    weekPeriod_MPs := selectsortedset( owner,Period_MP,period_MP, period_MP.TimeUnit() = 'Week' and period_MP.StartDate() >= this.StartDate() and period_MP.EndDate() < this.EndDate() ,period_MP.StartDate());
    // period_MPs := selectsortedset( owner,Period_MP,period_MP, period_MP.StartDate() >= this.StartDate() and period_MP.EndDate() <= this.EndDate() ,period_MP.StartDate());
    if( dayPeriod_MPs.Size() > 0 ){
      startDate := dayPeriod_MPs.Element( 0 ).StartDate();
      endDate := dayPeriod_MPs.Element( dayPeriod_MPs.Size() - 1 ).EndDate();
      // æ¯ä¸ƒå¤©è½®æ¢ç­æ¬¡
      for( i := startDate.StartOfWeek(); i < (endDate.StartOfWeek() - 1).StartOfNextWeek(); i := i.StartOfNextWeek()){
        tempStartDate := i;
        tempEndDate := i.StartOfNextWeek();
        tempPeriod_MPs := selectset( dayPeriod_MPs,Elements,period_MP,period_MP.StartDate() >= tempStartDate and period_MP.EndDate() <= tempEndDate );
        unitPeriodTimes1 := selectset( this.Unit1(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( tempPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP()));
        unitPeriodTimes2 := selectset( this.Unit2(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,exists( tempPeriod_MPs,Elements,period_MP,period_MP = unitPeriodTime.Period_MP()));
        if( unitPeriodTimes1.Size() > 0 ){
          this.OnOK( unitPeriodTimes1,shiftPattern1 );
        }
        if( unitPeriodTimes2.Size() > 0 ){
          this.OnOK( unitPeriodTimes2,shiftPattern2 );
        }
        // æ¢ç­æ¬¡
        tempShiftPattern := shiftPattern1;
        shiftPattern1 := shiftPattern2;
        shiftPattern2 := tempShiftPattern;
      }
    }
    if( weekPeriod_MPs.Size() <> 0 ){
      traverse( weekPeriod_MPs,Elements,period_MP ){
        unitPeriodTimes1 := selectset( this.Unit1(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,period_MP = unitPeriodTime.Period_MP());
        unitPeriodTimes2 := selectset( this.Unit2(),UnitPeriod.astype( UnitPeriodTime ),unitPeriodTime,period_MP = unitPeriodTime.Period_MP());
        if( unitPeriodTimes1.Size() > 0 ){
          this.OnOK( unitPeriodTimes1,shiftPattern1 );
        }
        if( unitPeriodTimes2.Size() > 0 ){
          this.OnOK( unitPeriodTimes2,shiftPattern2 );
        }
        // æ¢ç­æ¬¡
        tempShiftPattern := shiftPattern1;
        shiftPattern1 := shiftPattern2;
        shiftPattern2 := tempShiftPattern;
      }
    }
    this.IsEnable( true );
  *]
}
_Main/BL/Type_ProductionLineBatchData/Method_OnOK.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
Quintiq file version 2.0
#parent: #root
Method OnOK (
  UnitPeriodTimes unitPeriodTimes,
  ShiftPattern shiftPattern
)
{
  TextBody:
  [*
    // rislai Jun-9-2024 (created)
    firstElement := minselect( unitPeriodTimes, Elements, e, true, e.Start() );
    start := this.MacroPlan().Start();
    timeunit := this.MacroPlan().StartOfPlanningPeriod().TimeUnit();
    maintenance := Duration::Zero();
    efficiency := 1.0;
    allocation := 1.0;
    maxloadpercentage := this.MacroPlan().GlobalParameters_MP().DefaultMaxLoadPercentage();
    nrofunitopen := 1;
    minloadthreshold := 0.0;
    if( not isnull( firstElement ) ){
      // To inherit the value from last unit availability while creating a new unit availability
      unitavailability := firstElement.UnitAvailability();
      start := firstElement.Start();
      if( not isnull( unitavailability ) ){
        timeunit := unitavailability.TimeUnit();
        maintenance := unitavailability.Maintenance();
        efficiency := unitavailability.Efficiency();
        allocation := unitavailability.Allocation();
        maxloadpercentage := unitavailability.MaximumLoadPercentage();
        nrofunitopen := unitavailability.NrOfUnitsOpen();
        minloadthreshold := unitavailability.MinimumLoadThreshold();
      }else{
        timeunit := firstElement.Period_MP().TimeUnit();
        maintenance := firstElement.Maintenance();
        efficiency := firstElement.Efficiency();
        allocation := firstElement.Allocation();
        maxloadpercentage := firstElement.MaximumLoadPercentage();
        nrofunitopen := firstElement.NrOfOpen();
        minloadthreshold := firstElement.MinimumLoadThreshold();
      }
    }
    isbatchedit := unitPeriodTimes.Size() > 1;
    UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes,
                                                        not isbatchedit or false,
                                                        timeunit,
                                                        maintenance,
                                                        not isbatchedit or false,
                                                        efficiency,
                                                        false,
                                                        allocation,
                                                        not isbatchedit or true,
                                                        shiftPattern,
                                                        not isbatchedit or false,
                                                        maxloadpercentage,
                                                        not isbatchedit or false,
                                                        nrofunitopen,
                                                        false,
                                                        not isbatchedit or false,
                                                        minloadthreshold
                                                       );
    //UnitAvailability::CreateOrUpdateForUnitPeriodTimes( unitPeriodTimes,
    //                                                    not isbatchedit or CheckBoxBatchEditMaintenance.Checked(),
    //                                                    data.TimeUnit(),
    //                                                    data.Maintenance(),
    //                                                    not isbatchedit or CheckBoxBatchEditEfficiency.Checked(),
    //                                                    data.Efficiency(),
    //                                                    false,
    //                                                    data.Allocation(),
    //                                                    not isbatchedit or CheckBoxBatchEditShiftPattern.Checked(),
    //                                                    data.ShiftPattern(),
    //                                                    not isbatchedit or CheckBoxBatchEditMaxLoadPercentage.Checked(),
    //                                                    data.MaximumLoadPercentage(),
    //                                                    not isbatchedit or CheckBoxBatchEditNrOfUnitsOpen.Checked(),
    //                                                    data.NrOfUnitsOpen(),
    //                                                    DataHolderFromThisPeriodOnward.Data(),
    //                                                    not isbatchedit or CheckBoxBatchEditMinimumLoadThreshold.Checked(),
    //                                                    data.MinimumLoadThreshold()
    //                                                   );
  *]
}
_Main/BL/Type_ProductionLineBatchData/Method_Update.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
#parent: #root
Method Update (
  Unit line1,
  Unit line2,
  ShiftPattern shiftPattern1,
  ShiftPattern shiftPattern2,
  Date startDate,
  Date endDate
)
{
  TextBody:
  [*
    // rislai Jun-7-2024 (created)
    owner := this.MacroPlan();
    if( isnull( shiftPattern1 ) or isnull( shiftPattern2 ) or isnull( line1 ) or isnull( line2 )){
      error( "数据不能为空!" );
    }
    // ï¼ˆ1) æ–°å¢žäº§çº¿1和产线2相同时报错“相同产线无法新增”;
    if( line1 = line2 ){
       error( "相同产线无法新增" );
    }
    // ï¼ˆ2) ç›¸åŒçš„产线班次,生效时间可以维护多个,但是生效时间重复时报错“该数据已维护”;
    verifyData := select( owner,ProductionLineBatchData,data,data.Unit1() = line1 and data.Unit2() = line2 and
                          data.ShiftPattern1() = shiftPattern1 and data.ShiftPattern2() = shiftPattern2 and
                          data.StartDate() = startDate and data.EndDate() = endDate and data <> this );
    if( not isnull( verifyData )){
      error( "该数据已维护" );
    }
    this.ShiftPattern1( relset, shiftPattern1 );
    this.ShiftPattern2( relset, shiftPattern2 );
    this.Unit1( relset, line1 );
    this.Unit2( relset, line2 );
    this.StartDate( startDate );
    this.EndDate( endDate );
  *]
}
_Main/BL/Type_ProductionLineBatchData/Method_verifyEnable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Method VerifyEnable (
  String feeback
) const declarative as Boolean
{
  TextBody:
  [*
    // rislai Jun-6-2024 (created)
    owner := this.MacroPlan();
    value := true;
    //(3)  åŒä¸€æ—¶é—´ï¼Œä¸€æ¡äº§çº¿ä¸å¯ä»¥å’Œå¤šæ¡äº§çº¿è½®æ¢ç”Ÿäº§ï¼Œå¦‚果产线1ZKG和产线2ZK的轮换班次已经在4/29/2024生效,那么产线1ZKG和其他产线的轮换班次无法在同一时间生效,此时【Enable】按钮禁用
    verifyData := select( owner,ProductionLineBatchData,plbd, plbd <> this and plbd.IsEnable() and
                          ( plbd.Unit1() = this.Unit1() or plbd.Unit2() = this.Unit2() or plbd.Unit1() = this.Unit2() or plbd.Unit2() = this.Unit1()) and
                          ( plbd.StartDate() <= this.EndDate() or plbd.EndDate() >= this.StartDate() ));
    if( not isnull( verifyData )){
      feeback := "【" + verifyData.Unit1().Name() + "】【" + verifyData.Unit2().Name() + "】已于" + verifyData.StartDate().Format( "Y-M2-D2" ) +"生效。";
      value := false;
    }else{
      feeback := "";
    }
    return value;
  *]
}
_Main/BL/Type_ProductionLineBatchData/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  MacroPlan owner,
  Unit line1,
  Unit line2,
  ShiftPattern shiftPattern1,
  ShiftPattern shiftPattern2,
  Date startDate,
  Date endDate
)
{
  TextBody:
  [*
    // rislai Jun-7-2024 (created)
    if( isnull( shiftPattern1 ) or isnull( shiftPattern2 ) or isnull( line1 ) or isnull( line2 )){
      error( "数据不能为空!" );
    }
    // ï¼ˆ1) æ–°å¢žäº§çº¿1和产线2相同时报错“相同产线无法新增”;
    if( line1 = line2 ){
       error( "相同产线无法新增" );
    }
    // ï¼ˆ2) ç›¸åŒçš„产线班次,生效时间可以维护多个,但是生效时间重复时报错“该数据已维护”;
    verifyData := select( owner,ProductionLineBatchData,data,data.Unit1() = line1 and data.Unit2() = line2 and
                          data.ShiftPattern1() = shiftPattern1 and data.ShiftPattern2() = shiftPattern2 and
                          data.StartDate() = startDate and data.EndDate() = endDate );
    if( not isnull( verifyData )){
      error( "该数据已维护" );
    }
    data := owner.ProductionLineBatchData( relnew,
                                           ShiftPattern1 := shiftPattern1,
                                           ShiftPattern2 := shiftPattern2,
                                           Unit1 := line1,
                                           Unit2 := line2,
                                           StartDate := startDate,
                                           EndDate := endDate );
  *]
}
_Main/BL/Type_ProductionLineBatchData/_ROOT_Type_ProductionLineBatchData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ProductionLineBatchData
{
  #keys: '5[412672.0.998406958][412672.0.998406956][0.0.0][412672.0.998406957][412672.0.998406959]'
  BaseType: Object
  StructuredName: 'ProductionLineBatchDatas'
}
_Main/BL/Type_ShiftPattern/_ROOT_Type_ShiftPattern.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ShiftPattern #extension
{
}
_Main/BL/Type_Test/StaticMethod_Test.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Test (
  ScenarioManager scenarioManager,
  MacroPlan macroPlan,
  Archive archive
)
{
  TextBody:
  [*
    // rislai Jun-9-2024 (created)
  *]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDebug.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
Component ActionBarGroupDebug
{
  #keys: '[412672.0.1024432948]'
  BaseType: 'WebActionBarGroup'
  Children:
  [
    Component ButtonTest
    {
      #keys: '[412672.0.1024433059]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'BUG'
        Label: 'Test'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Taborder: 4
    Title: 'Debug'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
Component applicationDevelopmentActionBarPageDef id:applicationDevelopmentActionBarPageDef_1 #extension
{
  Children:
  [
    #child: ActionBarGroupDebug
  ]
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: ActionBarGroupDebug/ButtonTest
Response OnClick () id:Response_MacroPlanner_ActionBarGroupDebug_ButtonTest_OnClick
{
  #keys: '[412672.0.1024433074]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Test::Test( ScenarioManager,MacroPlan,Archive );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -13,6 +13,7 @@
        #child: ActionBarPageSales
        #child: applicationConfigureActionBarPageDef
        #child: ActionBarPageInventory
        #child: applicationDevelopmentActionBarPageDef_1
      ]
    }
    Component dhBinaryDataPR id:dhBinaryDataPR_688
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[412672.0.996751937]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[412672.0.996751941]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[412672.0.996751943]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,148 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[412672.0.996751935]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddlLine1
    {
      #keys: '[412672.0.996752425]'
      BaseType: 'WebDropDownList'
      Databinding: 'Unit'
      Children:
      [
        Component deContent
        {
          #keys: '[412672.0.996752427]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Unit]'
            Source: 'ApplicationMacroPlanner.DataHolderUnit'
            Taborder: 0
            Transformation: 'Elements.astype(Unit)'
          ]
        }
      ]
      Properties:
      [
        DataBinding: 'DialogData.Data.Unit1'
        DisplayField: 'Name'
        Label: 'Line 1'
        Taborder: 0
      ]
    }
    Component ddlLine2
    {
      #keys: '[412672.0.996752441]'
      BaseType: 'WebDropDownList'
      Databinding: 'Unit'
      Children:
      [
        Component deContent568
        {
          #keys: '[412672.0.996752443]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Unit]'
            Source: 'ApplicationMacroPlanner.DataHolderUnit'
            Taborder: 0
            Transformation: 'Elements.astype(Unit)'
          ]
        }
      ]
      Properties:
      [
        DataBinding: 'DialogData.Data.Unit2'
        DisplayField: 'Name'
        Label: 'Line 2'
        Taborder: 1
      ]
    }
    Component ddlShiftPattern1
    {
      #keys: '[412672.0.996752456]'
      BaseType: 'WebDropDownList'
      Databinding: 'ShiftPattern'
      Children:
      [
        Component deContent710
        {
          #keys: '[412672.0.996752458]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'ShiftPattern'
          ]
        }
      ]
      Properties:
      [
        DataBinding: 'DialogData.Data.ShiftPattern1'
        DisplayField: 'Name'
        Label: 'Shift pattern 1'
        Taborder: 2
      ]
    }
    Component ddlShiftPattern2
    {
      #keys: '[412672.0.996752472]'
      BaseType: 'WebDropDownList'
      Databinding: 'ShiftPattern'
      Children:
      [
        Component deContent748
        {
          #keys: '[412672.0.996752474]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'ShiftPattern'
          ]
        }
      ]
      Properties:
      [
        DataBinding: 'DialogData.Data.ShiftPattern2'
        DisplayField: 'Name'
        Label: 'Shift pattern 2'
        Taborder: 3
      ]
    }
    Component dsStartDate
    {
      #keys: '[412672.0.996752488]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        DataBinding: 'DialogData.Data.StartDate'
        Label: 'Start date'
        Taborder: 4
      ]
    }
    Component dsEndDate
    {
      #keys: '[412672.0.996752501]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        DataBinding: 'DialogData.Data.EndDate'
        Label: 'End date'
        Taborder: 5
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Method_Create.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#parent: #root
Method Create () id:Method_DialogCreateEditProductionLineBatchData_Create
{
  #keys: '[412672.0.996752047]'
  Body:
  [*
    this.CreateEdit( false );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Method_CreateEdit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
Method CreateEdit (
  Boolean isEdit
) id:Method_DialogCreateEditProductionLineBatchData_CreateEdit
{
  #keys: '[412672.0.996751977]'
  Body:
  [*
    if( isEdit ){
      this.Title( "Edit");
    }else{
      this.Title( "Create");
    }
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Method_Edit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method Edit (
  ProductionLineBatchData data
) id:Method_DialogCreateEditProductionLineBatchData_Edit
{
  #keys: '[412672.0.996752095]'
  Body:
  [*
    if( not isnull( data )){
      DialogData.Data( data );
      this.CreateEdit( true );
    }
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[412672.0.996751947]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[412672.0.996751946]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return ddlLine1.Data() <> ddlLine2.Data() and dsEndDate.Date() > dsStartDate.Date();
  *]
  QuillAction
  {
    Body:
    [*
      if( not isnull( DialogData.Data( ))){
        DialogData.Data( ).Update( ddlLine1.Data(),
                                   ddlLine2.Data(),
                                   ddlShiftPattern1.Data(),
                                   ddlShiftPattern2.Data(),
                                   dsStartDate.Date(),
                                   dsEndDate.Date());
      }else{
        ProductionLineBatchData::Create( MacroPlan,
                                         ddlLine1.Data(),
                                         ddlLine2.Data(),
                                         ddlShiftPattern1.Data(),
                                         ddlShiftPattern2.Data(),
                                         dsStartDate.Date(),
                                         dsEndDate.Date());
      }
      // Form.ApplyChanges();
      Form.Close();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditProductionLineBatchData/_ROOT_Component_DialogCreateEditProductionLineBatchData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogCreateEditProductionLineBatchData
{
  #keys: '[412672.0.996751933]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
    Component DialogData
    {
      #keys: '[412672.0.996752601]'
      BaseType: 'WebDataHolder'
      Databinding: 'ProductionLineBatchData'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_ListProductionLineBatchData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
Component ListProductionLineBatchData
{
  #keys: '[412672.0.996750714]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorProductionLineBatchData
    {
      #keys: '[412672.0.996750715]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MacroPlan'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'ProductionLineBatchData'
      ]
    }
    #child: listActionBarPageProductionLineBatchData
    Component DataSetLevelProductionLineBatchData
    {
      #keys: '[412672.0.996750720]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuProductionLineBatchData
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit1.Name","title":"Unit1","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit1.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit2.Name","title":"Unit2","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit2.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftPattern1.Name","title":"Shift pattern 1","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ShiftPattern1.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftPattern2.Name","title":"Shift pattern 2","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ShiftPattern2.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}}]'
        ContextMenu: 'listContextMenuProductionLineBatchData'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListProductionLineBatchData_WebMenu_OnClick
    {
      #keys: '[412672.0.996751570]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[1917.0.7571120]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_PanelProductionLineBatchData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelProductionLineBatchData
{
  #keys: '[412672.0.996750698]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListProductionLineBatchData
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_listActionBarPageProductionLineBatchData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageProductionLineBatchData
{
  #keys: '[412672.0.996750717]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Component_listContextMenuProductionLineBatchData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
Quintiq file version 2.0
Component listContextMenuProductionLineBatchData
{
  #keys: '[412672.0.996750722]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component mnCreate
    {
      #keys: '[412672.0.996751159]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'NEW'
        Taborder: 3
        Title: 'Create...'
      ]
    }
    Component mnEdit
    {
      #keys: '[412672.0.996751186]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'NOTEBOOK_EDIT'
        Taborder: 4
        Title: 'Edit...'
      ]
    }
    Component mnDelete
    {
      #keys: '[412672.0.996751251]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 5
        Title: 'Delete'
      ]
    }
    Component MenuSeparator1
    {
      #keys: '[412672.0.996751270]'
      BaseType: 'WebMenu'
      Properties:
      [
        Separator: true
        Taborder: 6
      ]
    }
    Component mnEnable
    {
      #keys: '[412672.0.996751332]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'CHECKEDCHECKBOX'
        Taborder: 7
        Title: 'Enable'
      ]
    }
    Component mnDisable
    {
      #keys: '[412672.0.1026802848]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'EMPTYCHECKBOX'
        Taborder: 8
        Title: 'Disable'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnCreate_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListProductionLineBatchData
Response OnClick () id:Response_ListProductionLineBatchData_mnCreate_OnClick
{
  #keys: '[412672.0.1000011939]'
  CanBindMultiple: false
  DefinitionID => /ListProductionLineBatchData/Responsedef_ListProductionLineBatchData_WebMenu_OnClick
  Initiator: 'mnCreate'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogCreateEditProductionLineBatchData );
      dlg.Create();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnDelete_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ListProductionLineBatchData
Response OnClick (
  structured[ProductionLineBatchData] selection
) id:Response_ListProductionLineBatchData_mnDelete_OnClick
{
  #keys: '[412672.0.996751681]'
  CanBindMultiple: false
  DefinitionID => /ListProductionLineBatchData/Responsedef_ListProductionLineBatchData_WebMenu_OnClick
  Initiator: 'mnDelete'
  QuillAction
  {
    Body:
    [*
      traverse( selection,Elements,element){
        element.Delete();
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnDisable_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: ListProductionLineBatchData
Response OnClick (
  structured[ProductionLineBatchData] selection
) id:Response_ListProductionLineBatchData_mnDisable_OnClick
{
  #keys: '[412672.0.1024491799]'
  CanBindMultiple: false
  DefinitionID => /ListProductionLineBatchData/Responsedef_ListProductionLineBatchData_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'mnDisable'
  Precondition:
  [*
    value := select( selection,Elements,element,not element.IsEnable() );
    return isnull( value );
  *]
  QuillAction
  {
    Body:
    [*
      traverse( selection,Elements,element ){
        element.Disable();
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnEdit_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ListProductionLineBatchData
Response OnClick (
  ProductionLineBatchData selection
) id:Response_ListProductionLineBatchData_mnEdit_OnClick
{
  #keys: '[412672.0.1000012043]'
  CanBindMultiple: false
  DefinitionID => /ListProductionLineBatchData/Responsedef_ListProductionLineBatchData_WebMenu_OnClick
  Initiator: 'mnEdit'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogCreateEditProductionLineBatchData );
      dlg.Edit( selection );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/Response_ListProductionLineBatchData_mnEnable_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: ListProductionLineBatchData
Response OnClick (
  ProductionLineBatchData selection
) id:Response_ListProductionLineBatchData_mnEnable_OnClick
{
  #keys: '[412672.0.1018421769]'
  CanBindMultiple: false
  DefinitionID => /ListProductionLineBatchData/Responsedef_ListProductionLineBatchData_WebMenu_OnClick
  Initiator: 'mnEnable'
  Precondition:
  [*
    return selection.VerifyEnable( feedback );
  *]
  QuillAction
  {
    Body:
    [*
      selection.Enable();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchData/_ROOT_Component_FormProductionLineBatchData.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormProductionLineBatchData
{
  #keys: '[412672.0.996750644]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelProductionLineBatchData
  ]
  Properties:
  [
    Title: '批量维护产线班次'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/Time_Capacities.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_legacy_2
      {
        components
        {
          FormTimeCapacities_MatrixEditorTimeCapacities
          {
            totalHeaderWidth: 293
          }
        }
      }
      form_FormProductionLineBatchData
      {
        title: 'QMacroPlanner::FormProductionLineBatchData'
        shown: true
        componentID: 'QMacroPlanner::FormProductionLineBatchData'
        layout
        {
          mode: 'open'
          rowPosition: 18
          rowSpan: 9
          columnPosition: 1
          columnSpan: 8
        }
        components
        {
          FormProductionLineBatchData_PanelProductionLineBatchData
          {
            sizeRatio: 1
          }
          FormProductionLineBatchData_ListProductionLineBatchData
          {
          }
          FormProductionLineBatchData_DataSetLevelProductionLineBatchData
          {
            groupDepth: -1
            column_StartDate
            {
              columnId: 'StartDate'
              dataPath: 'StartDate'
              dataType: 'date'
              index: 0
              subtotals: ''
              width: 150
            }
            column_EndDate
            {
              columnId: 'EndDate'
              dataPath: 'EndDate'
              dataType: 'date'
              index: 1
              subtotals: ''
              width: 150
            }
          }
        }
      }
    }
  }
  formatversion: 2
  id: 'Time Capacities'
  name: 'Time Capacities'
  isglobal: false
  isroot: false
}