xiaoding721
2024-10-14 527527e0692b647362616756cfef333e7d9c9ed7
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已修改18个文件
已添加8个文件
299 ■■■■ 文件已修改
_Main/BL/InfoMessages.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_CheckImport.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionReport/Method_GenerateShow.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesReport/Method_GenerateShow.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Method_GetNewOfflinePlanMatrixTooltip.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_DeductionOfReplacementLoss.qbl 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_SynchronizeToNewSupply.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanRow/Attribute_OperationID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_mOfflinePlanInterface_OnClick.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_MatrixEditor515.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Response_pHeader_bConfirm_OnClick.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Response_pHeader_bDeductChangeoverLoss_OnClick.def 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionPlan/Component_MatrixEditorPISPIP.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionPlan/Component_PanelMatrix.def 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionPlan/_ROOT_Component_FormProductionPlan.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/NewOfflinePlan.vw 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/InfoMessages.qbl
@@ -174,9 +174,11 @@
  {
    DefaultText: 'The import ChangeLossNr is not positive number.'
  }
  InfoMessage MP_ChangeLossSettingExcel_Import_ProductNoExist
  InfoMessage MP_ChangeLossSettingExcel_Import_ProductNoExist (
    const String productids
  )
  {
    DefaultText: 'The entered product does not exist.'
    DefaultText: 'The entered products @productids@does not exist.'
  }
  InfoMessage MP_ChangeLossSettingExcel_Import_UnitNoExist
  {
_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl
@@ -19,7 +19,8 @@
    owner.CCEngineLogisticsCostReport( relflush );
    cnv2 := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "M2/D2/Y" );
    //cnv2.CustomFormatString( "M2/D2/Y" );
    cnv2.CustomFormatString( "MM/dd/yyyy" );
    
    products                  := construct( Product_MPs );
    productcolumn             := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 0 );
_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl
@@ -19,7 +19,8 @@
    owner.DLEngineLogisticsCostReport( relflush );
    cnv2 := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "M2/D2/Y" );
    //cnv2.CustomFormatString( "M2/D2/Y" );
    cnv2.CustomFormatString( "MM/dd/yyyy" );
    
    products                  := construct( Product_MPs );
    productcolumn             := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 0 );
_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_CheckImport.qbl
@@ -20,8 +20,14 @@
      error( Translations::MP_ChangeLossSettingExcel_Import_PositiveInteger() );
    }
    //导入产品是否存在
    if( exists( macroplan, ChangeLossSettingExcel, excel, not exists( macroplan, Product_MP, product, product.ID() = excel.Product1() or product.ID() = excel.Product2() ) ) ){
      error( Translations::MP_ChangeLossSettingExcel_Import_ProductNoExist() );
    productfirsts         := selectuniquevalues( macroplan, ChangeLossSettingExcel, excel, excel.Product1() );
    productseconds        := selectuniquevalues( macroplan, ChangeLossSettingExcel, excel, excel.Product2() );
    productids            := productfirsts.Union( productseconds );
    nonproductids         := selectuniquevalues( productids, Elements, e, not exists( macroplan, Product_MP, product, product.ID() = e ), e );
    if( nonproductids.Size() > 0 ){
      error( Translations::MP_ChangeLossSettingExcel_Import_ProductNoExist( nonproductids.Concatenate( ";" ) ) );
    //if( exists( macroplan, ChangeLossSettingExcel, excel, not exists( macroplan, Product_MP, product, product.ID() = excel.Product1() or product.ID() = excel.Product2() ) ) ){
    //  error( Translations::MP_ChangeLossSettingExcel_Import_ProductNoExist() );
    }
    //导入产线是否存在
    if( exists( macroplan, ChangeLossSettingExcel, excel, not exists( macroplan, Unit, unit, unit.ID() = excel.Unit() ) ) ){
_Main/BL/Type_FinancialProductionReport/Method_GenerateShow.qbl
@@ -27,11 +27,11 @@
          
          sumcell  := selectobject( column, FinancialProductionCell, c, c.FinancialProductionRow() = sumrow );
          if( isnull( sumcell ) ){
            sumcell := column.FinancialProductionCell( relnew, Quantity := 0 );
            sumcell := column.FinancialProductionCell( relnew, Quantity := 0);
            sumrow.FinancialProductionCell( relinsert, sumcell );
          }
          
          showcell := column.FinancialProductionCell( relnew, Quantity := cell.Quantity() );
          showcell := column.FinancialProductionCell( relnew, Quantity := cell.Quantity(), IsUpdate := cell.IsUpdate()  );
          showrow.FinancialProductionCell( relinsert, showcell );
          yearcell.Quantity( yearcell.Quantity() + cell.Quantity() );
          sumyearcell.Quantity( sumyearcell.Quantity() + cell.Quantity() );
_Main/BL/Type_FinancialProductionSource/Method_AfterImport.qbl
@@ -12,7 +12,8 @@
    beforeyearday           := ( yearday - Duration::Days( 1 ) ).Date();
    cnv2                    := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "M2/D2/Y" );
    //cnv2.CustomFormatString( "M2/D2/Y" );
    cnv2.CustomFormatString( "MM/dd/yyyy" );
    traverse( this, FinancialProductionReport, report ){
      //获取导入的产品列和工厂列
      productcolumn         := selectobject( report, FinancialProductionColumn, column, column.Name() = 'Product' );
_Main/BL/Type_FinancialSalesReport/Method_GenerateShow.qbl
@@ -32,7 +32,7 @@
            sumrow.FinancialSalesCell( relinsert, sumcell );
          }
          
          showcell := column.FinancialSalesCell( relnew, Value := cell.Value() );
          showcell := column.FinancialSalesCell( relnew, Value := cell.Value(), IsUpdate := cell.IsUpdate()  );
          showrow.FinancialSalesCell( relinsert, showcell );
          yearcell.Value( [String]( [Real]yearcell.Value() + [Real]cell.Value() ) );
          sumyearcell.Value( [String]( [Real]sumyearcell.Value() + [Real]cell.Value() ) );
_Main/BL/Type_FinancialSalesSource/Method_AfterImport.qbl
@@ -11,7 +11,8 @@
    beforeyearday           := ( yearday - Duration::Days( 1 ) ).Date();
    cnv2                    := StringToDate::StandardConverter();
    cnv2.SetCustomConversion();
    cnv2.CustomFormatString( "M2/D2/Y" );
    //cnv2.CustomFormatString( "M2/D2/Y" );
    cnv2.CustomFormatString( "MM/dd/yyyy" );
    traverse( this, FinancialSalesReport, report ){
      productcolumn         := selectobject( report, FinancialSalesColumn, column, column.Name() = 'Product' );
      unitcolumn            := selectobject( report, FinancialSalesColumn, column, column.Name() = 'Unit' );
_Main/BL/Type_NewOfflinePlanCell/Method_GetNewOfflinePlanMatrixTooltip.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method GetNewOfflinePlanMatrixTooltip () declarative remote as String
{
  TextBody:
  [*
    tooltip := '<table>';
    tooltip := tooltip
                 + '<tr><td><b>总量:</b></td><td>'         + [String]this.Total().TotalQuantity() + '</td></tr>'
                 + '<tr><td><b>班次名:</b></td><td>'       + this.Total().ShiftPatternName()      + '</td></tr>'
                 + '<tr><td><b>班次开始时间:</b></td><td>' + this.Total().ShiftPatternStart()     + '</td></tr>'
                 + '<tr><td><b>班次结束时间:</b></td><td>' + this.Total().ShiftPatternEnd()       + '</td></tr>';
    tooltip := tooltip + '</table>';
    return tooltip;
  *]
}
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_DeductionOfReplacementLoss.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
Quintiq file version 2.0
#parent: #root
StaticMethod DeductionOfReplacementLoss (
  MacroPlan macroPlan,
  NewOfflinePlanTable nopt
)
{
  TextBody:
  [*
    // ä¿å­˜ä¸Šä¸€ä»½å­˜æ¡£
    newNOPT := NewOfflinePlanCell::SaveAsDraft( macroPlan, nopt );
    // æ‰§è¡Œæ¢åž‹æŸå¤±
    allProductionLines := selectuniquevalues( newNOPT, NewOfflinePlanRow, tempNOPR, true, tempNOPR.ProductionLine() );
    traverse ( allProductionLines, Elements, pl
    //           , pl = "eMotor Assy (France)"
             )
    {
      // ä¸‹çº¿è®¡åˆ’当前产线下的行
      noprs      := selectset( newNOPT, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = pl and tempNOPR.Type() = "1" );
      // ä¸Šä¸€ä¸ªç”Ÿäº§çš„产品Cell
      preNOPCell := null( NewOfflinePlanCell );
      traverse ( newNOPT, NewOfflinePlanColumn, nopc
    //             , nopc.StartDate() >= macroPlan.StartOfPlanning().Date() and nopc.StartDate() <= Date::Construct( 2024, 4, 17 ) // æµ‹è¯•时可以过滤时间
               )
      {
        for ( i := 1; i < 10; i++ ) {
          nopcell := select( noprs, Elements.NewOfflinePlanCell, tempNOPC, tempNOPC.NewOfflinePlanColumn() = nopc and tempNOPC.OrderNr() = i );
          // æ¢åž‹æŸå¤±å‚æ•°
          cls     := select( macroPlan, ChangeLossSetting, tempCLS,
                             tempCLS.ProductFirst().ID()  = guard( preNOPCell.NewOfflinePlanRow().ProductID(), "" ) and
                             tempCLS.ProductSecond().ID() = guard( nopcell.NewOfflinePlanRow().ProductID(), "" )    and
                             tempCLS.StartDate()          <= nopc.StartDate()                                       and
                             tempCLS.EndDate()            >= nopc.StartDate()
                            );
          // æ‰£å‡æ¢åž‹æŸå¤±
          if ( not isnull( preNOPCell ) and not isnull( nopcell ) and not isnull( cls ) ) {
            preNOPCell.Quantity( preNOPCell.Quantity() - cls.ChangeLossNumber() );
    //        info( "当前列时间:", nopc.StartDate().Format( "Y-M2-D2" ),
    //              "    ä¸Šä¸€ä¸ªäº§å“å½“前序号:", preNOPCell.Order(), "    ä¸Šä¸€ä¸ªäº§å“æ•°é‡ï¼š", preNOPCell.Quantity(), "    ä¸Šä¸€ä¸ªäº§å“åï¼š", preNOPCell.NewOfflinePlanRow().ProductID(),
    //              "    å½“前产品序号:"      , nopcell.Order()   , "    å½“前产品数量:"     , nopcell.Quantity(), "    å½“前产品名:"  , nopcell.NewOfflinePlanRow().ProductID() );
          }
          // è®¾ç½®ä¸Šä¸€ä¸ªç”Ÿäº§çš„产品Cell
          if ( not isnull( nopcell ) ) {
            preNOPCell := nopcell;
          }
        }
      }
    }
  *]
}
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -41,7 +41,7 @@
          // ç”Ÿæˆä¸‹çº¿è®¡åˆ’【产线明细】行
          detailedNOPR   := select( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = u.ID() and tempNOPR.ProductID() = pisp.ProductID() and tempNOPR.Type() = "1" );
          if ( isnull( detailedNOPR ) ) {
            detailedNOPR := nopt.NewOfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := pisp.ProductID(), Type := "1" );
            detailedNOPR := nopt.NewOfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := pisp.ProductID(), Type := "1", OperationID := o.ID() );
          }
          
          // ç”Ÿæˆä¸‹çº¿è®¡åˆ’列
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_SynchronizeToNewSupply.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
Quintiq file version 2.0
#parent: #root
StaticMethod SynchronizeToNewSupply (
  MacroPlan macroPlan,
  NewOfflinePlanTable nopt
)
{
  TextBody:
  [*
    traverse ( nopt, NewOfflinePlanRow.NewOfflinePlanCell, cell,
               cell.NewOfflinePlanRow().Type() = "1" and cell.Quantity() > 0.0
    //           and cell.NewOfflinePlanRow().ProductionLine() = "eMotor Assy (France)" and cell.NewOfflinePlanColumn().StartDate() = Date::Construct( 2020, 4, 4 )
             )
    {
     pto := select( macroPlan, Unit.Operation.PeriodTaskOperation, tempPTO,
                    exists( tempPTO, NewSupply, tempNS, tempNS.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() = cell.NewOfflinePlanRow().ProductID() ) and
                    tempPTO.Operation().UnitID() = cell.NewOfflinePlanRow().ProductionLine()                                                                                                 and
                    tempPTO.Start().Date()       = cell.NewOfflinePlanColumn().StartDate() );
      if ( isnull( pto ) ) {
        o  := select( macroPlan, Unit.Operation, tempO, tempO.ID() = cell.NewOfflinePlanRow().OperationID() );
        up := select( macroPlan, Unit.UnitPeriod, tempUP, tempUP.UnitID() = cell.NewOfflinePlanRow().ProductionLine() and tempUP.StartDate() = cell.NewOfflinePlanColumn().StartDate() );
        if ( not isnull( o ) and not isnull( up ) ) {
          PeriodTaskOperation::Create( o, up, cell.Quantity(), false );
        }
      } else {
        if ( [Number]cell.Quantity() <> [Number]pto.Quantity() ) {
          pto.Update( cell.Quantity(), false );
        }
      }
    }
  *]
}
_Main/BL/Type_NewOfflinePlanRow/Attribute_OperationID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute OperationID
{
  #keys: '3[413988.0.1695608112][413988.0.1695608111][413988.0.1695608113]'
  ValueType: String
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def
@@ -124,6 +124,17 @@
        Title: 'Inventory report'
      ]
    }
    Component mOfflinePlanInterface
    {
      #keys: '[413988.0.1697411489]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'WIND_ENGINE_OFFSHORE'
        Taborder: 11
        Title: '下线计划'
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -34,6 +34,7 @@
        Image: 'LIGHTBULB'
        Label: 'Output plan'
        Taborder: 1
        Visible: false
      ]
    }
    Component bAssemblyOnlinePlan
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_mOfflinePlanInterface_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: ContextMenuInterface/mOfflinePlanInterface
Response OnClick () id:Response_MacroPlanner_ContextMenuInterface_mOfflinePlanInterface_OnClick
{
  #keys: '[413988.0.1697411525]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan ) and not isnull( InterfaceDataset );
  *]
  QuillAction
  {
    Body:
    [*
      // å­˜æ¡£
      NewOfflinePlanCell::InterfaceArchive( MacroPlan, InterfaceDataset );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
@@ -15,6 +15,10 @@
      ProductGeneration::Initilize( MacroPlan );
      ProductPower::Initilize( MacroPlan );
      ProductMLBMQB::Initilize( MacroPlan );
      dhFactorys.Data( selectset( MacroPlan, Factory, factory, factory.ID() = FinancialProductionReport::GetDefaultAllUnit() ) );
      dhGenerations.Data( selectset( MacroPlan, ProductGeneration, factory, true ) );
      dhPowers.Data( selectset( MacroPlan, ProductPower, factory, true ) );
      dhMQBMLBs.Data( selectset( MacroPlan, ProductMLBMQB, factory, true ) );
      DataHolderTable.Data( table );
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def
@@ -14,6 +14,10 @@
      ProductGeneration::Initilize( MacroPlan );
      ProductPower::Initilize( MacroPlan );
      ProductMLBMQB::Initilize( MacroPlan );
      dhFactorys.Data( selectset( MacroPlan, Factory, factory, factory.ID() = FinancialProductionReport::GetDefaultAllUnit() ) );
      dhGenerations.Data( selectset( MacroPlan, ProductGeneration, factory, true ) );
      dhPowers.Data( selectset( MacroPlan, ProductPower, factory, true ) );
      dhMQBMLBs.Data( selectset( MacroPlan, ProductMLBMQB, factory, true ) );
      DataHolderTable.Data( table );
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
@@ -14,6 +14,10 @@
      ProductGeneration::Initilize( MacroPlan );
      ProductPower::Initilize( MacroPlan );
      ProductMLBMQB::Initilize( MacroPlan );
      dhFactorys.Data( selectset( MacroPlan, Factory, factory, factory.ID() = FinancialProductionReport::GetDefaultAllUnit() ) );
      dhGenerations.Data( selectset( MacroPlan, ProductGeneration, factory, true ) );
      dhPowers.Data( selectset( MacroPlan, ProductPower, factory, true ) );
      dhMQBMLBs.Data( selectset( MacroPlan, ProductMLBMQB, factory, true ) );
      DataHolderTable.Data( table );
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Component_MatrixEditor515.def
@@ -86,6 +86,17 @@
    }
    #child: matrixEditorActionBarPage623
    #child: matrixeditorContextMenu229
    Component UserConfigurableInformation675
    {
      #keys: '[413988.0.1697329605]'
      BaseType: 'WebUserConfigurableInformation'
      Properties:
      [
        ObjectType: 'NewOfflinePlanCell'
        Taborder: 5
        Tooltip: 'VALUE( object.GetNewOfflinePlanMatrixTooltip() )'
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Response_pHeader_bConfirm_OnClick.def
@@ -13,8 +13,8 @@
  {
    Body:
    [*
      // å­˜æ¡£
      NewOfflinePlanCell::InterfaceArchive( MacroPlan, InterfaceDataset );
      // åŒæ­¥åˆ°å‘¨æœŸä»»åŠ¡
      NewOfflinePlanCell::SynchronizeToNewSupply( MacroPlan, dhNewOfflinePlanTable.Data() );
      
      // è®¾ç½®æŒ‰é’®ï¼ˆé™¤ä¸‹è½½ï¼‰ä¸å¯ç”¨
      MacroPlan.A_PreviousScenaioName( MacroPlan.ScenarioName() );
_Main/UI/MacroPlannerWebApp/Component_FormNewOfflinePlan/Response_pHeader_bDeductChangeoverLoss_OnClick.def
@@ -13,6 +13,11 @@
  {
    Body:
    [*
      NewOfflinePlanCell::DeductionOfReplacementLoss( MacroPlan, dhNewOfflinePlanTable.Data() );
      opt := maxselect( MacroPlan, NewOfflinePlanTable, tempNOPT, true, tempNOPT.SaveDateTime() );
      dhNewOfflinePlanTable.Data( opt );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Component_FormProductionPlan/Component_MatrixEditorPISPIP.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component MatrixEditorPISPIP #extension
{
  Children:
  [
    Component UserConfigurableInformationMatrixEditorPISPIP #extension
    {
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionPlan/Component_PanelMatrix.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
Component PanelMatrix #extension
{
  Children:
  [
    #child: MatrixEditorPISPIP
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionPlan/_ROOT_Component_FormProductionPlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: LibMacroPlannerWebUI
OrphanComponent FormProductionPlan #extension
{
  Children:
  [
    #child: PanelMatrix
  ]
}
_Main/UI/MacroPlannerWebApp/Views/NewOfflinePlan.vw
@@ -30,7 +30,7 @@
          FormNewOfflinePlan_MatrixEditor515
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 511
            totalHeaderWidth: 507
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
@@ -50,7 +50,7 @@
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: 'sum'
                      columnsubtotal: ''
                      attribute: 'Quantity'
                    }
                    attribute_Order
@@ -87,7 +87,7 @@
          FormNewOfflinePlan_MatrixEditor583
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 510
            totalHeaderWidth: 509
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
@@ -155,48 +155,6 @@
          }
        }
      }
      form_FormGeneralSettings
      {
        title: 'General Settings'
        shown: true
        componentID: 'FormGeneralSettings'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormGeneralSettings_PanelContent
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelGeneralParameter
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelLeadTimeDependent
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelShelfLife
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelSustainability
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelForecastNetting
          {
            sizeRatio: 1
          }
          FormGeneralSettings_PanelActions
          {
            sizeRatio: 1
          }
        }
      }
    }
    userconfigurableinformation
    {
@@ -204,7 +162,7 @@
    page: ''
    group: ''
    index: 0
    image: 'CHART_DONUT'
    image: 'BEAR'
    description: ''
  }
  formatversion: 2