lihongji
2024-11-01 dba3b5328e7269c3b0ba8339d6ad32399d1f4352
Merge remote-tracking branch 'origin/dev' into dev
已修改24个文件
已添加26个文件
已删除16个文件
1099 ■■■■ 文件已修改
_Main/BL/Relations/Relation_InterfaceForecast_InterfaceDataset_InterfaceDataset_InterfaceForeca.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AOnlineAndMOfflinePlanMS64/StaticMethod_GenerateData.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize#194.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize0.qbl 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerDemandIDS/Method_GenerateColumn.qbl 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerDemandIDS/StaticMethod_GenerateData.qbl 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceDataset/Method_GenerateArchiveData.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/Attribute_Date.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/Attribute_Factory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/Attribute_Generation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/Attribute_MLBMQB.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/Attribute_Origin.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/Attribute_PartNumber.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/Attribute_Power.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/Attribute_Quantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/DefaultValue_Factory.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/DefaultValue_Generation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/DefaultValue_MLBMQB.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/DefaultValue_PartNumber.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/DefaultValue_Power.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/StaticMethod_ArchivedData.qbl 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceForecast/_ROOT_Type_InterfaceForecast.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LockPeriod/Method_Disable.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LockPeriod/Method_Enable.qbl 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LockPeriod/StaticMethod_Create.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/Attribute_StockingPointID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/Attribute_IsLock.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/_ROOT_Type_ProductInStockingPointInPeriodPlanningLeaf.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupRestraint.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonActualDailyProductio.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupRestraint_ButtonLockPeriodData_OnClick.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent661_cbAllProductInStockingPoint_OnChanged.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogZEDPPSMS64/Response_pnlLeft_88_ddslFactory_OnCreated.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_ListActualDailyProduction.def 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_PanelActualDailyProduction.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_PanelActualDailyProduction912.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_listActionBarPageActualDailyProduction.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_listContextMenuActualDailyProduction.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Response_PanelActualDailyProduction_bReSync_OnClick.def 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Response_PanelActualDailyProduction_dsEndDate_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/_ROOT_Component_FormActualDailyProduction.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormArchivePackagingPlan/_ROOT_Component_FormArchivePackagingPlan.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_MatrixEditorArchiveTransferPlan.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_PanelArchiveTransferPlan.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_PanelArchiveTransferPlan515.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_matrixEditorActionBarPageArchiveTransferPlan.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_matrixeditorContextMenuArchiveTransferPlan.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/_ROOT_Component_FormArchiveTransferPlan.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable#384.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_MatrixEditorTable.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelHeader.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelProduct.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Response_OnCreated.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_369_bRefresh_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_bRefresh_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/Component_ListLockPeriod.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/Component_listContextMenuLockPeriod.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/Response_ListLockPeriod_mDisable_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/Response_ListLockPeriod_mEnable_OnClick#21.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/_ROOT_Component_FormLockPeriod.def 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_MatrixEditorTable.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/LockPeriodData.vw 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_InterfaceForecast_InterfaceDataset_InterfaceDataset_InterfaceForeca.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_AOnlineAndMOfflinePlanMS64/StaticMethod_GenerateData.qbl
@@ -29,7 +29,7 @@
                                                      , Name := Translations::InterfaceDataset_AOnlineAndMOfflinePlanMS64_Name()
                                                      , InterfaceDateTime := nowdate
                                                      , Message := '装配上线计划 + æœºåŠ ä¸‹çº¿è®¡åˆ’ - MS64'
                                                      , IsShow := false
    //                                                  , IsShow := false
                                                      , Last := true
                                                      , ReturnSuccess := true
                                                      , ReturnMsg := 'Success'
_Main/BL/Type_AOnlineAndMOfflinePlanPIR/StaticMethod_GenerateData.qbl
@@ -28,7 +28,7 @@
                                                      , Name := Translations::InterfaceDataset_AOnlineAndMOfflinePlanPIR_Name()
                                                      , InterfaceDateTime := nowdate
                                                      , Message := '装配上线计划 + æœºåŠ ä¸‹çº¿è®¡åˆ’ - PIR'
                                                      , IsShow := false
    //                                                  , IsShow := false
                                                      , Last := true
                                                      , ReturnSuccess := true
                                                      , ReturnMsg := 'Success'
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize#194.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Synchronize (
  InterfaceDataset interfaceDataset,
  String executor,
  Date startDate,
  Date endDate
)
{
  TextBody:
  [*
    // rislai Jul-23-2024 (created)
    for( i := startDate; i <= endDate; i := i+1 ){
      ActualDailyProductionData::Synchronize( interfaceDataset, executor, i );
    }
  *]
}
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl
@@ -9,17 +9,6 @@
  [*
    // rislai Jul-23-2024 (created)
    date    := Date::ActualDate() - 1;
    loginfo := interfaceDataset.InterfaceLoginfo( relnew, ExecuteUser := executor
                                       , Name := Translations::InterfaceDataset_ActualDailyProductionData_Name()
                                       , InterfaceDateTime := DateTime::ActualTime()
                                       , Message := '生产实际数据'
                                       , RequestBody := ActualDailyProductionData::GetRequestBody( date ) );
    data := InterfaceLoginfo::CallInterface( interfaceDataset,loginfo );
    options := DatasetFindOptions::Construct( 'Archive' ).IncludeOffline( true ); //to load we must search offline datasets.
    mdskey := DatasetController::FindUnique( options );
    MDSArchive::Root( mdskey ) -> ActualDailyProductionData::ParseData( data );
    ActualDailyProductionData::Synchronize( interfaceDataset,executor,date );
  *]
}
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Synchronize (
  InterfaceDataset interfaceDataset,
  String executor,
  Date date
)
{
  TextBody:
  [*
    // rislai Jul-23-2024 (created)
    loginfo := interfaceDataset.InterfaceLoginfo( relnew, ExecuteUser := executor
                                       , Name := Translations::InterfaceDataset_ActualDailyProductionData_Name()
                                       , InterfaceDateTime := DateTime::ActualTime()
                                       , Message := '生产实际数据'
                                       , RequestBody := ActualDailyProductionData::GetRequestBody( date ) );
    data := InterfaceLoginfo::CallInterface( interfaceDataset,loginfo );
    options := DatasetFindOptions::Construct( 'Archive' ).IncludeOffline( true ); //to load we must search offline datasets.
    mdskey := DatasetController::FindUnique( options );
    MDSArchive::Root( mdskey ) -> ActualDailyProductionData::ParseData( data );
  *]
}
_Main/BL/Type_CustomerDemandIDS/Method_GenerateColumn.qbl
@@ -8,23 +8,33 @@
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    weekstart             := periods.Element( 0 );
    monthstart            := periods.Element( 0 );
    traverse( periods, Elements, periodtime ){
      periodname          := periodtime.Format( "M2/D2/Y" );
      
      this.Column( relnew, Name := periodname, StartDate := periodtime, EndDate := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() );
      
      weekend             := ( weekstart + Duration::Days( 6 ) ).Date();
      if( ( weekend.Year() <> periodtime.Year() and weekend.Month() > 1 ) or ( abs( weekstart.Week() - periodtime.Week() ) > 1 and weekend.Year() = periodtime.Year() ) ){
        weekstart         := periodtime;
      }
      if( periodtime = weekstart ){
        weekperiodname    := weekstart.Format( "M2/D2/Y" );
        this.Column( relnew, Name := weekperiodname, StartDate := weekstart, EndDate := ( weekstart + Duration::Days( 6 ) ).Date(), TimeUnit := Translations::MP_GlobalParameters_Week() );
        weekstart         := ( weekstart + Duration::Days( 7 ) ).Date();
        this.Column( relnew, Name := weekperiodname, StartDate := weekstart, EndDate := ( weekstart.StartOfNextWeek() - Duration::Days( 1 ) ).Date(), TimeUnit := Translations::MP_GlobalParameters_Week() );
      }
      if( ( monthstart.Year() <> periodtime.Year() and abs( monthstart.Month() - periodtime.Month() ) <> 11 ) or ( abs( monthstart.Month() - periodtime.Month() ) > 1 and monthstart.Year() = periodtime.Year() ) ){
        monthstart        := periodtime;
      }
      if( periodtime = monthstart ){
        monthperiodname   := monthstart.Format( "M2/D2/Y" );
        enddate           := ( monthstart.StartOfNextMonth() - Duration::Days( 1 ) ).Date();
        this.Column( relnew, Name := monthperiodname, StartDate := monthstart, EndDate := enddate, TimeUnit := Translations::MP_GlobalParameters_Month() );
        monthstart        := monthstart.StartOfNextMonth();
      }
      weekstart         := periodtime.StartOfNextWeek();
      monthstart        := periodtime.StartOfNextMonth();
    }
  *]
}
_Main/BL/Type_CustomerDemandIDS/StaticMethod_GenerateData.qbl
@@ -2,6 +2,7 @@
#parent: #root
StaticMethod GenerateData (
  InterfaceDataset interface,
  const MacroPlan macroplan,
  RecycleBin recycle,
  const Archive archive
)
@@ -11,10 +12,16 @@
  [*
    // ç”„兰鸽 Aug-20-2024 (created)
    interface.CustomerDemandIDS( relflush );
    interface.CustomerDemandIDSSearch( relflush );
    //interface.CustomerDemandIDSSearch( relflush );
    info( '-------------------------Start---------------------');
    allunit               := CustomerDemandIDS::GetDefaultAllUnit();
    if( isnull( interface.CustomerDemandIDSSearch() ) ){
    interface.CustomerDemandIDSSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit );
    }
    idstable              := selectobject( interface, CustomerDemandIDS, idstable, idstable.ID() = '客户需求' );
    if( isnull( idstable ) ){
    idstable              := interface.CustomerDemandIDS( relnew, ID := '客户需求', Name := '客户需求' );
    }
    binaryValue           := TemplateManager::GetIDSFullTable( archive, Date::ActualDate().Year() );
    source                := GeneralExcelImportAndExportDataSource::Upload( recycle, binaryValue, OS::TempPath() + "template.xlsx" );
    source.ReadStructure();
@@ -23,14 +30,12 @@
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "yyyy/MM/dd" );
    idsdates              := selectuniquevalues( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() > 2, cnv2.Convert( column.Name() ) );
    ppadates              := selectuniquevalues( interface, InterfaceForecast, forecast, forecast.Origin() = 'PPA', forecast.Date() );
    //ppadates              := construct( Dates );
    //traverse( macroplan, SalesDemand.astype( Forecast ), forecast, forecast.Origin() = 'PPA' ){
    //  ppadates            := ppadates.Union( selectuniquevalues( forecast, PlanningSalesDemandInPeriod, salesdemand, salesdemand.StartDate() ) );
    //}
    ppadates              := selectuniquevalues( macroplan, SalesDemand.astype( Forecast ), forecast, forecast.Origin() = 'PPA', forecast.StartDate() );
    periods               := idsdates.Union( ppadates );
    periods               := selectuniquevalues( periods, Elements, e, e );
    periods               := selectuniquevalues( periods, Elements, e, not exists( idstable, Column, column, column.StartDate() = e ), e );
    if( periods.Size() > 0 ){
    idstable.GenerateColumn( periods.Sort() );
    }
    traverse( recycle, GeneralExcelImportAndExportDataSource.GeneralExcelImportAndExportDataTable, table ){
      traverse( table, GeneralExcelImportAndExportDataRow, row ){
        productcell       := selectobject( row, GeneralExcelImportAndExportDataCell, cell, cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() = 2 );
@@ -41,22 +46,27 @@
          daycolumn       := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), period );
          weekcolumn      := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), period );
          monthcolumn     := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), period );
          idsrow.SetCellValue( daycolumn, [Number]cell.Value() );
          idsrow.SetCellValue( weekcolumn, [Number]cell.Value() );
          idsrow.SetCellValue( monthcolumn, [Number]cell.Value() );
        }
      }
    }
    traverse( interface, InterfaceForecast, forecast, forecast.Origin() = 'PPA' ){
      idsrow              := idstable.GetRowByUnit( forecast.PartNumber(), forecast.Factory() );
      daycolumn           := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), forecast.Date() );
      weekcolumn          := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), forecast.Date() );
      monthcolumn         := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), forecast.Date() );
      idsrow.SetCellValue( daycolumn, [Number]forecast.Quantity() );
      idsrow.SetCellValue( weekcolumn, [Number]forecast.Quantity() );
      idsrow.SetCellValue( monthcolumn, [Number]forecast.Quantity() );
    traverse ( macroplan, SalesDemand.astype( Forecast ), forecast, not isnull( forecast.Product_MP() ) and forecast.Origin() = 'PPA' ){
      traverse( forecast, PlanningSalesDemandInPeriod, sdip ){
        idsrow              := idstable.GetRowByUnit( forecast.ProductID(), forecast.SalesSegmentName() );
        daycolumn           := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), sdip.StartDate() );
        weekcolumn          := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), sdip.StartDate() );
        monthcolumn         := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), sdip.StartDate() );
        info( '-----------------', isnull( idsrow ), isnull( daycolumn ), isnull( weekcolumn ), isnull( monthcolumn ), sdip.StartDate() );
        idsrow.SetCellValue( daycolumn, [Number]sdip.Quantity() );
        idsrow.SetCellValue( weekcolumn, [Number]sdip.Quantity() );
        idsrow.SetCellValue( monthcolumn, [Number]sdip.Quantity() );
      }
    }
    
    source.Delete();
    info( '-------------------------End---------------------');
  *]
}
_Main/BL/Type_InterfaceDataset/Method_GenerateArchiveData.qbl
@@ -18,7 +18,7 @@
  [*
    // ç”„兰鸽 Oct-30-2024 (created)
    if( iscustomdemand ){//全年日度需求/客户需求
      CustomerDemandIDS::GenerateData( this, recyclebin, archive );
      CustomerDemandIDS::GenerateData( this, macroplan, recyclebin, archive );
    }
    if( isofflineplan ){//各产线下线计划
      OfflinePlanArchiveVersion::RefreshData( this, macroplan, archive );
_Main/BL/Type_InterfaceForecast/Attribute_Date.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/Attribute_Factory.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/Attribute_Generation.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/Attribute_MLBMQB.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/Attribute_Origin.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/Attribute_PartNumber.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/Attribute_Power.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/Attribute_Quantity.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/DefaultValue_Factory.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/DefaultValue_Generation.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/DefaultValue_MLBMQB.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/DefaultValue_PartNumber.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/DefaultValue_Power.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/StaticMethod_ArchivedData.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_InterfaceForecast/_ROOT_Type_InterfaceForecast.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_LockPeriod/Method_Disable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method Disable
{
  TextBody:
  [*
    // Akari Nov-1-2024 (created)
    if( this.IsEnable()){
      this.IsEnable( false );
      pispips := selectset( this,ProductInStockingPoint_MP.ProductInStockingPointInPeriod.astype( ProductInStockingPointInPeriodPlanningLeaf ),period,period.Period_MP().StartDate() <= this.LockDate() );
      traverse( pispips,Elements,element ){
        element.IsLock( false );
      }
      ProductInStockingPointInPeriod::LockUnlockPlanning( pispips, false, true );
    }
  *]
}
_Main/BL/Type_LockPeriod/Method_Enable.qbl
@@ -7,26 +7,57 @@
  TextBody:
  [*
    // Akari Oct-30-2024 (created)
    offlinePlanRow := select( offlinePlanTable,NewOfflinePlanRow,row,row.ProductID() = this.ProductInStockingPoint_MP().ProductID() );
    offlinePlanRow := select( offlinePlanTable,NewOfflinePlanRow,row,row.ProductID() = this.ProductInStockingPoint_MP().ProductID() and row.StockingPointID() = this.ProductInStockingPoint_MP().StockingPointID() );
    offlinePlanCells := selectset( offlinePlanRow, NewOfflinePlanCell,cell,true );
    offlinePlanCellIndexTree := NamedValueTree::Create();
    for( i := 0; i< offlinePlanCells.Size(); i++ ){
      offlinePlanCell := offlinePlanCells.Element( i );
      offlinePlanCellHandle := offlinePlanCellIndexTree.GetHandle( offlinePlanCell.NewOfflinePlanColumn().StartDate().AsQUILL() );
      offlinePlanCellIndexTree.Root().AddChild( offlinePlanCellHandle,i );
    }
    
    if( not this.IsEnable() ){
      this.IsEnable( true );
      pispips := selectset( this,ProductInStockingPoint_MP.ProductInStockingPointInPeriod.astype( ProductInStockingPointInPeriodPlanningLeaf ),period,period.Period_MP().StartDate() <= this.LockDate() );
      traverse( pispips,Elements,element ){
        element.IsLock( true );
        offlinePlanCellHandle := offlinePlanCellIndexTree.GetHandle( element.Period_MP().StartDate().AsQUILL() );
        offlinePlanCellIndex := guard( offlinePlanCellIndexTree.Root().Child( offlinePlanCellHandle),null( NamedValue ));
        offlinePlanCellQuantity := 0.0;
        if( not isnull( offlinePlanCellIndex )){
          offlinePlanCell := offlinePlanCells.Element( offlinePlanCellIndex.GetValueAsNumber() );
          offlinePlanCellQuantity := offlinePlanCell.Quantity();
        }
        if( element.NewSupply( relsize ) = 1 ){
          traverse( element,NewSupply,newSupply ){
            newSupply.Update( offlinePlanCellQuantity );
          }
        }else if( element.NewSupply( relsize ) > 1 ){
          newSupplys := selectset( element,NewSupply,newSupply,true );
          for( i := 1; i < newSupplys.Size(); i++ ){
            newSupply := newSupplys.Element( i );
            newSupply.Update( 0.0 );
          }
          newSupplys.Element( 0 ).Update( offlinePlanCellQuantity )
        }else if( element.NewSupply( relsize ) = 0 ){
          if( offlinePlanCellQuantity <> 0 ){
            info( "new supply is null" );
          unit := element.StockingPointInPeriod().StockingPoint_MP().Unit();
          operaction := select( unit,Operation,op,true );
          // PeriodTaskOperation::Create( )
        }
            if( not isnull( operaction )){
              info( "operaction is null" );
              // unitPeriod := element.Period_MP().UnitPeriod()
              // PeriodTaskOperation::Create( operaction,unitPeriod,quantity,false );
            }else{
    
      }
    }
        }
      }
      ProductInStockingPointInPeriod::LockUnlockPlanning( pispips, true, true );
    }
  *]
}
_Main/BL/Type_LockPeriod/StaticMethod_Create.qbl
@@ -8,6 +8,14 @@
  TextBody:
  [*
    // rislai Jun-13-2024 (created)
    owner.LockPeriod( relnew, LockDate := lockDate );
    lockPeriod := owner.LockPeriod( relnew, LockDate := lockDate );
    macroPlan := owner.MacroPlan();
    offlineTable := select( macroPlan,NewOfflinePlanTable,table,true );
    if( not isnull( offlineTable )){
      lockPeriod.Enable( offlineTable );
    }
  *]
}
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -39,9 +39,9 @@
          sdt      := select( sp, ShiftDayTime, tempSDT, tempSDT.Name() = tempSDT.ShiftPattern().Name() );
          
          // ç”Ÿæˆä¸‹çº¿è®¡åˆ’【产线明细】行
          detailedNOPR   := select( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = u.ID() and tempNOPR.ProductID() = pisp.ProductID() and tempNOPR.Type() = "1" );
          detailedNOPR   := select( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = u.ID() and tempNOPR.ProductID() = pisp.ProductID() and tempNOPR.StockingPointID() = pisp.StockingPointID() and tempNOPR.Type() = "1" );
          if ( isnull( detailedNOPR ) ) {
            detailedNOPR := nopt.NewOfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := pisp.ProductID(), Type := "1", OperationID := o.ID() );
            detailedNOPR := nopt.NewOfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := pisp.ProductID(),StockingPointID := pisp.StockingPointID(), Type := "1", OperationID := o.ID() );
          }
          
          // ç”Ÿæˆä¸‹çº¿è®¡åˆ’列
_Main/BL/Type_NewOfflinePlanRow/Attribute_StockingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StockingPointID
{
  #keys: '3[414996.1.183584732][414996.1.183584731][414996.1.183584733]'
  ValueType: String
}
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/Attribute_IsLock.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsLock
{
  #keys: '3[414996.1.185600021][414996.1.185600020][414996.1.185600022]'
  ValueType: Boolean
}
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/_ROOT_Type_ProductInStockingPointInPeriodPlanningLeaf.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
TypeSpecialization ProductInStockingPointInPeriodPlanningLeaf #extension
{
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupArchiveReport.def
@@ -38,6 +38,17 @@
        Taborder: 2
      ]
    }
    Component ButtonActualDailyProduction
    {
      #keys: '[414996.1.186223693]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'RSS'
        Label: '实际每日生产计划'
        Taborder: 3
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupRestraint.def
@@ -27,6 +27,17 @@
        Taborder: 1
      ]
    }
    Component ButtonLockPeriodData
    {
      #keys: '[414996.1.185742569]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'GEAR_VIEW'
        Label: 'Lock period data'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonActualDailyProductio.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ActionBarGroupArchiveReport/ButtonActualDailyProduction
Response OnClick () id:Response_MacroPlanner_ActionBarGroupArchiveReport_ButtonActualDailyProduction_OnClick
{
  #keys: '[414996.1.186223803]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      // Open view
      ApplicationMacroPlanner.OpenView( 'ActualDailyProduction', this );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupRestraint_ButtonLockPeriodData_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: ActionBarGroupRestraint/ButtonLockPeriodData
Response OnClick () id:Response_MacroPlanner_ActionBarGroupRestraint_ButtonLockPeriodData_OnClick
{
  #keys: '[414996.1.185904137]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      // Open view
      ApplicationMacroPlanner.OpenView( 'LockPeriodData', this );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateLockPeriod/Response_pnlContent661_cbAllProductInStockingPoint_OnChanged.def
@@ -14,6 +14,7 @@
        ddlProductInStockingPoint.Enabled( false,"" ); 
      }else{
        ddlProductInStockingPoint.Enabled( true,"" );
        cbAllProduct.Checked( false );
      }
    *]
  }
_Main/UI/MacroPlannerWebApp/Component_DialogZEDPPSMS64/Response_pnlLeft_88_ddslFactory_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pnlLeft_88/ddslFactory
Response OnCreated () id:Response_pnlLeft_88_ddslFactory_OnCreated
{
  #keys: '[415136.0.1271601330]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      valueString := "All";
      this.Strings( valueString.Concat( ";" ).Concat( FinancialProductionReport::GetDefaultCCUnit().Concat( ";" ) ).Concat( FinancialProductionReport::GetDefaultDLUnit() ) );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_ListActualDailyProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
Component ListActualDailyProduction
{
  #keys: '[414996.1.184390814]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorActualDailyProduction
    {
      #keys: '[414996.1.184390815]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'external[Archive]'
        Source: 'Archive'
        Taborder: 0
        Transformation: 'ActualDailyProductionData'
      ]
    }
    #child: listActionBarPageActualDailyProduction
    Component DataSetLevelActualDailyProduction
    {
      #keys: '[414996.1.184390820]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuActualDailyProduction
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ActualOut","title":"实际产出数量","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ActualOut"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Fac","title":"工厂简写","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Fac"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineName","title":"产线名称","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductionDate","title":"生产日期","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductionDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductNo","title":"产品ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftCode","title":"班次号","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShiftCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShiftName","title":"产线名称","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShiftName"}}]'
        ContextMenu: 'listContextMenuActualDailyProduction'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_PanelActualDailyProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component PanelActualDailyProduction
{
  #keys: '[414996.1.184390778]'
  BaseType: 'WebPanel'
  Children:
  [
    Component dsStartDate
    {
      #keys: '[414996.1.184361099]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'Start date'
        Taborder: 0
      ]
    }
    Component dsEndDate
    {
      #keys: '[414996.1.185982342]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'End date'
        Taborder: 1
      ]
    }
    Component bReSync
    {
      #keys: '[414996.1.185982355]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'ARROW_CIRCLE2'
        Label: 'Re Sync'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_PanelActualDailyProduction912.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelActualDailyProduction912
{
  #keys: '[414996.1.184390800]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListActualDailyProduction
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_listActionBarPageActualDailyProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageActualDailyProduction
{
  #keys: '[414996.1.184390817]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Component_listContextMenuActualDailyProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuActualDailyProduction
{
  #keys: '[414996.1.184390822]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Response_PanelActualDailyProduction_bReSync_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
Quintiq file version 2.0
#parent: PanelActualDailyProduction/bReSync
Response OnClick () id:Response_PanelActualDailyProduction_bReSync_OnClick
{
  #keys: '[414996.1.185702537]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  Precondition:
  [*
    return dsEndDate.Date() > dsStartDate.Date();
  *]
  QuillAction
  {
    Body:
    [*
      days := dsEndDate.Date() - dsStartDate.Date();
      if( days >= 365 ){
        if( WebMessageBox::Question( "当前时间跨度【"+ [String]days +"天】过大,是否继续?",Translations::MessageBox_YesNo() ) = 0 ){
          ActualDailyProductionData::Synchronize( InterfaceDataset,"User",dsStartDate.Date(),dsEndDate.Date() );
        }else{
          WebMessageBox::Information( "Canceled." );
        }
      }else{
        ActualDailyProductionData::Synchronize( InterfaceDataset,"User",dsStartDate.Date(),dsEndDate.Date() );
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/Response_PanelActualDailyProduction_dsEndDate_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelActualDailyProduction/dsEndDate
Response OnCreated () id:Response_PanelActualDailyProduction_dsEndDate_OnCreated
{
  #keys: '[414996.1.185563333]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      this.Date( Date::ActualDate() - 1 );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormActualDailyProduction/_ROOT_Component_FormActualDailyProduction.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormActualDailyProduction
{
  #keys: '[414996.1.184390758]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelActualDailyProduction
    #child: PanelActualDailyProduction912
  ]
  Properties:
  [
    Image: 'RSS'
    Title: 'Actual Daily Production'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormArchivePackagingPlan/_ROOT_Component_FormArchivePackagingPlan.def
@@ -10,4 +10,8 @@
    #child: PanelArchivePackagingPlan
    #child: PanelArchivePackagingPlan922
  ]
  Properties:
  [
    Title: 'Archive Packaging Plan'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_MatrixEditorArchiveTransferPlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditorArchiveTransferPlan
{
  #keys: '[414996.1.183850516]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellArchiveTransferPlan
    {
      #keys: '[414996.1.183850517]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorArchiveTransferPlan
        {
          #keys: '[414996.1.183850518]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'Archive'
            Source: 'Archive'
            Taborder: 0
            Transformation: 'ArchiveTransferPlanRow.ArchiveTransferPlanCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Value'
        Column: 'ArchiveTransferPlanColumn'
        Row: 'ArchiveTransferPlanRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRowsArchiveTransferPlan
    {
      #keys: '[414996.1.183850521]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor568
        {
          #keys: '[414996.1.183850522]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'Archive'
            Source: 'Archive'
            Taborder: 0
            Transformation: 'ArchiveTransferPlanRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'SourceStockpoingPointID;TargetStockpoingPointID;ProductID'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumnsArchiveTransferPlan
    {
      #keys: '[414996.1.183850525]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor802
        {
          #keys: '[414996.1.183850526]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'Archive'
            Source: 'Archive'
            Taborder: 0
            Transformation: 'ArchiveTransferPlanColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'ColumnName'
        SortCriteria: 'ColumnDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageArchiveTransferPlan
    #child: matrixeditorContextMenuArchiveTransferPlan
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumnsArchiveTransferPlan'
    ContextMenu: 'matrixeditorContextMenuArchiveTransferPlan'
    Rows: 'MatrixEditorRowsArchiveTransferPlan'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_PanelArchiveTransferPlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
Component PanelArchiveTransferPlan
{
  #keys: '[414996.1.183850471]'
  BaseType: 'WebPanel'
  Properties:
  [
    FixedSize: true
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_PanelArchiveTransferPlan515.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelArchiveTransferPlan515
{
  #keys: '[414996.1.183850483]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditorArchiveTransferPlan
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_matrixEditorActionBarPageArchiveTransferPlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageArchiveTransferPlan
{
  #keys: '[414996.1.183850529]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/Component_matrixeditorContextMenuArchiveTransferPlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuArchiveTransferPlan
{
  #keys: '[414996.1.183850532]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormArchiveTransferPlan/_ROOT_Component_FormArchiveTransferPlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormArchiveTransferPlan
{
  #keys: '[414996.1.183850405]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelArchiveTransferPlan
    #child: PanelArchiveTransferPlan515
  ]
  Properties:
  [
    Title: 'Archive Transfer Plan'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlanVersion/Component_MatrixEditorTable#384.def
@@ -77,7 +77,7 @@
          [
            DataType: 'InterfaceDataset'
            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
            FixedFilter: 'object.TimeUnit() = search.TimeUnit() and object.StartDate() >= search.StartDate() and object.StartDate() <= search.EndDate()'
            FixedFilter: 'object.TimeUnit() = search.TimeUnit() and  ( search.StartDate().IsMinInfinity() or object.StartDate() >= search.StartDate() ) and ( search.EndDate().IsMaxInfinity() or object.StartDate() <= search.EndDate() )'
            Source: 'InterfaceDataset'
            Taborder: 0
            Transformation: 'AssemblyOnlinePlanVersion.Column'
_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_MatrixEditorTable.def
@@ -77,7 +77,7 @@
          [
            DataType: 'InterfaceDataset'
            FilterArguments: 'search:QMacroPlanner::FormCustomerDemandPPAIDS.dhSearch'
            FixedFilter: 'object.TimeUnit() = search.TimeUnit() and object.StartDate() >= search.StartDate() and object.StartDate() <= search.EndDate()'
            FixedFilter: 'object.TimeUnit() = search.TimeUnit() and ( search.StartDate().IsMinInfinity() or object.StartDate() >= search.StartDate() ) and ( search.EndDate().IsMaxInfinity() or object.StartDate() <= search.EndDate() )'
            Source: 'InterfaceDataset'
            Taborder: 0
            Transformation: 'CustomerDemandIDS.Column'
_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelHeader.def
@@ -15,6 +15,7 @@
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 1
  ]
_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Component_PanelProduct.def
@@ -13,6 +13,7 @@
      [
        FixedSize: false
        Label: 'Product'
        Sorting: 'none'
        Taborder: 0
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_FormCustomerDemandPPAIDS/Response_OnCreated.def
@@ -10,9 +10,9 @@
    Body:
    [*
      //初始化 
      CustomerDemandIDS::GenerateData( InterfaceDataset, RecycleBin, Archive );
      //CustomerDemandIDS::GenerateData( InterfaceDataset, RecycleBin, Archive );
      
      dhSearch.Data( InterfaceDataset.CustomerDemandIDSSearch() );
      //dhSearch.Data( InterfaceDataset.CustomerDemandIDSSearch() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_369_bRefresh_OnClick.def
@@ -14,7 +14,7 @@
    Body:
    [*
      FinancialProductionSource::Initialize( MacroPlan );
      excelsource               := selectobject( MacroPlan, FinancialProductionSource, excelsource, excelsource.IsImport() );
      excelsource               := maxobject( MacroPlan, FinancialProductionSource, excelsource, excelsource.IsImport(), excelsource.UploadDateTime() );
      if( not isnull( excelsource ) ){
        excelsource.AfterImport();
      }
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_bRefresh_OnClick.def
@@ -14,7 +14,7 @@
    Body:
    [*
      FinancialSalesSource::InitializeNew( MacroPlan );
      excelsource               := selectobject( MacroPlan, FinancialSalesSource, excelsource, excelsource.IsImport() );
      excelsource               := maxobject( MacroPlan, FinancialSalesSource, excelsource, excelsource.IsImport(), excelsource.UploadDateTime() );
      if( not isnull( excelsource ) ){
        excelsource.AfterImport();
      }
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/Component_ListLockPeriod.def
@@ -28,7 +28,7 @@
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductInStockingPoint_MP.ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductInStockingPoint_MP.ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductInStockingPoint_MP.StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductInStockingPoint_MP.StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LockDate","title":"LockDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LockDate"}}]'
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductInStockingPoint_MP.ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductInStockingPoint_MP.ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductInStockingPoint_MP.StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductInStockingPoint_MP.StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LockDate","title":"LockDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LockDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEnable","title":"IsEnable","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEnable"}}]'
        ContextMenu: 'listContextMenuLockPeriod'
        Taborder: 2
      ]
@@ -38,4 +38,22 @@
  [
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListLockPeriod_WebMenu_OnClick
    {
      #keys: '[414996.1.185430534]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[345.0.11072389]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/Component_listContextMenuLockPeriod.def
@@ -3,6 +3,31 @@
{
  #keys: '[414996.1.179381094]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component mDisable
    {
      #keys: '[414996.1.185701729]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'EMPTYCHECKBOX'
        Taborder: 3
        Title: 'Disable'
      ]
    }
    Component mEnable
    {
      #keys: '[414996.1.184360918]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'CHECKEDCHECKBOX'
        Taborder: 4
        Title: 'Enable'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/Response_ListLockPeriod_mDisable_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ListLockPeriod
Response OnClick (
  structured[LockPeriod] selection
) id:Response_ListLockPeriod_mDisable_OnClick
{
  #keys: '[414996.1.185430554]'
  CanBindMultiple: false
  DefinitionID => /ListLockPeriod/Responsedef_ListLockPeriod_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'mDisable'
  QuillAction
  {
    Body:
    [*
      traverse( selection,Elements,element ,element.IsEnable() ){
        element.Disable();
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/Response_ListLockPeriod_mEnable_OnClick#21.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: ListLockPeriod
Response OnClick (
  structured[LockPeriod] selection
) id:Response_ListLockPeriod_mEnable_OnClick
{
  #keys: '[414996.1.185400954]'
  CanBindMultiple: false
  DefinitionID => /ListLockPeriod/Responsedef_ListLockPeriod_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'mEnable'
  QuillAction
  {
    Body:
    [*
      offlinePlanTable := select( MacroPlan,NewOfflinePlanTable,table,true );
      traverse( selection,Elements,element ,not element.IsEnable() ){
        element.Enable( offlinePlanTable );
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormLockPeriod/_ROOT_Component_FormLockPeriod.def
@@ -10,4 +10,9 @@
    #child: PanelLockPeriod
    #child: PanelLockPeriod633
  ]
  Properties:
  [
    Image: 'GEAR_VIEW'
    Title: 'Lock period data'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanArchive/Component_MatrixEditorTable.def
@@ -77,7 +77,7 @@
          [
            DataType: 'InterfaceDataset'
            FilterArguments: 'search:QMacroPlanner::FormAssemblyOnlinePlanVersion.dhSearch'
            FixedFilter: 'object.TimeUnit() = search.TimeUnit() and object.StartDate() >= search.StartDate() and object.StartDate() <= search.EndDate()'
            FixedFilter: 'object.TimeUnit() = search.TimeUnit() and  ( search.StartDate().IsMinInfinity() or object.StartDate() >= search.StartDate() )  and ( search.EndDate().IsMaxInfinity() or object.StartDate() <= search.EndDate() )'
            Source: 'InterfaceDataset'
            Taborder: 0
            Transformation: 'OfflinePlanArchiveVersion.Column'
_Main/UI/MacroPlannerWebApp/Views/LockPeriodData.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,199 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormLockPeriod
      {
        title: 'QMacroPlanner::FormLockPeriod'
        shown: true
        componentID: 'QMacroPlanner::FormLockPeriod'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 22
          columnPosition: 1
          columnSpan: 8
        }
        components
        {
          FormLockPeriod_PanelLockPeriod
          {
            sizeRatio: 1
          }
          FormLockPeriod_PanelLockPeriod633
          {
            sizeRatio: 1
          }
          FormLockPeriod_ListLockPeriod
          {
          }
          FormLockPeriod_DataSetLevelLockPeriod
          {
            groupDepth: -1
            column_ProductInStockingPoint_MP_ProductID
            {
              columnId: 'ProductInStockingPoint_MP.ProductID'
              dataPath: 'ProductInStockingPoint_MP.ProductID'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_ProductInStockingPoint_MP_StockingPointID
            {
              columnId: 'ProductInStockingPoint_MP.StockingPointID'
              dataPath: 'ProductInStockingPoint_MP.StockingPointID'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_LockDate
            {
              columnId: 'LockDate'
              dataPath: 'LockDate'
              dataType: 'date'
              index: 2
              subtotals: ''
              width: 150
            }
            column_IsEnable
            {
              columnId: 'IsEnable'
              dataPath: 'IsEnable'
              dataType: 'boolean'
              index: 3
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: 'Description'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    image: 'GEAR_VIEW'
    page: ''
    group: ''
    index: 0
    description: ''
  }
  formatversion: 2
  id: 'LockPeriodData'
  name: 'LockPeriodData'
  isglobal: false
  isroot: true
}