lazhen
2024-10-15 a02eb284e0492ebb023df6e86e4beda1f96b6a41
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
已修改10个文件
已添加71个文件
1936 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanCell_Detailed_NewAssemblyOnlinePlanCell_Total.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_MacroPlan_MacroPlan_NewAssemblyOnlinePl.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_NewAssemblyOnlinePlanCell_NewAssemblyOn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_MacroPlan_MacroPlan_NewAssemblyOnlinePlanR.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_NewAssemblyOnlinePlanCell_NewAssemblyOnlin.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl 156 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Attribute_A_AssemblyOnlinePlanProductionLineName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/DefaultValue_A_AssemblyOnlinePlanProductionLineName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Order.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_OrderNr.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Quantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternEnd.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternStart.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_TotalQuantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_Order.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternEnd.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternName.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternStart.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcEndDate.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcStartDate.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcTotalQuantity.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/Method_GetNewAssemblyOnlinePlanMatrixTooltip.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_CreateOldAssemblyOnlinePlanData.qbl 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_Download.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_OldDownload.qbl 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanCell/_ROOT_Type_NewAssemblyOnlinePlanCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanColumn/_ROOT_Type_NewAssemblyOnlinePlanColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_OperationID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductID.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductionLine.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Type.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_OperationID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Type.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/Method_Filter.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewAssemblyOnlinePlanRow/_ROOT_Type_NewAssemblyOnlinePlanRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Test/StaticMethod_Test.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/NewAssemblyOnlinePlanCell.qrp 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/NewOfflinePlanCell.qrp 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bNewAssemblyOnlinePlan_OnClic.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlContent.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnOk_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/_ROOT_Component_DialogAssemblyOnlinePlanProductionLineName.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckUnits_OnDataChanged.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor515#474.def 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor583#969.def 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage338#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage623#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu229#1.def 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu267#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pDetail#415.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pHeader#136.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pTotal#61.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mAssemblyOnlinePlanProductionLineName_.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mShowOrHide_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bDownload_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bGenerateReport_OnClick.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bOnlineQuantity_OnClick.def 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/_ROOT_Component_FormNewAssemblyOnlinePlan.def 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison#634.def 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckUnits_OnDataChanged#832.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/NewAssemblyOnlinePlan.vw 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl
@@ -11,7 +11,7 @@
    #keys: '3[413988.0.1348175597][413988.0.1348175596][413988.0.1348175598]'
    Cardinality: '1toN'
    ObjectDefinition: AssemblyOnlinePlanColumn
    OwningSide: 'Owned'
    OwningSide: 'Reference'
  }
  RelationSide.RightSide AssemblyOnlinePlanColumn
  {
_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl
@@ -11,7 +11,7 @@
    #keys: '3[413988.0.1348175623][413988.0.1348175622][413988.0.1348175624]'
    Cardinality: '1toN'
    ObjectDefinition: AssemblyOnlinePlanRow
    OwningSide: 'Reference'
    OwningSide: 'Owned'
  }
  RelationSide.RightSide AssemblyOnlinePlanRow
  {
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanCell_Detailed_NewAssemblyOnlinePlanCell_Total.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation NewAssemblyOnlinePlanCell_Detailed_NewAssemblyOnlinePlanCell_Total
{
  #keys: '1[413988.0.1701591389]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Detailed
  {
    #keys: '3[413988.0.1701591391][413988.0.1701591390][413988.0.1701591392]'
    Cardinality: '1toN'
    ObjectDefinition: NewAssemblyOnlinePlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Total
  {
    #keys: '3[413988.0.1701591394][413988.0.1701591393][413988.0.1701591395]'
    Cardinality: '0to1'
    ObjectDefinition: NewAssemblyOnlinePlanCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_MacroPlan_MacroPlan_NewAssemblyOnlinePl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: #root
Relation NewAssemblyOnlinePlanColumn_MacroPlan_MacroPlan_NewAssemblyOnlinePlanColumn
{
  #keys: '1[413988.0.1702175710]'
  DeclarativeSequenceRelationStrategy
  {
    #keys: '13[0.0.0][413988.0.1702175824][413988.0.1702175818][413988.0.1702175825][413988.0.1702175819][413988.0.1702175826][413988.0.1702175820][413988.0.1702175827][413988.0.1702175821][413988.0.1702175828][413988.0.1702175822][413988.0.1702175829][413988.0.1702175823]'
    SequenceElementSuffix: 'NAOPColumn'
    SequenceSuffix: 'NAOPColumn'
    SortAttributes:
    [
      DeclarativeSequenceRelationSortAttribute
      {
        #keys: '1[413988.0.1702175834]'
        Attribute: 'StartDate'
      }
    ]
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1702175712][413988.0.1702175711][413988.0.1702175713]'
    Cardinality: '0to1'
    ObjectDefinition: NewAssemblyOnlinePlanColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide NewAssemblyOnlinePlanColumn
  {
    #keys: '3[413988.0.1702175715][413988.0.1702175714][413988.0.1702175716]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanColumn_NewAssemblyOnlinePlanCell_NewAssemblyOn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation NewAssemblyOnlinePlanColumn_NewAssemblyOnlinePlanCell_NewAssemblyOnlinePlanCell_NewAssemblyOnlinePlanColumn
{
  #keys: '1[413988.0.1702175723]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide NewAssemblyOnlinePlanCell
  {
    #keys: '3[413988.0.1702175725][413988.0.1702175724][413988.0.1702175726]'
    Cardinality: '1toN'
    ObjectDefinition: NewAssemblyOnlinePlanColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide NewAssemblyOnlinePlanColumn
  {
    #keys: '3[413988.0.1702175728][413988.0.1702175727][413988.0.1702175729]'
    Cardinality: '0to1'
    ObjectDefinition: NewAssemblyOnlinePlanCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_MacroPlan_MacroPlan_NewAssemblyOnlinePlanR.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation NewAssemblyOnlinePlanRow_MacroPlan_MacroPlan_NewAssemblyOnlinePlanRow
{
  #keys: '1[413988.0.1702175667]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1702175669][413988.0.1702175668][413988.0.1702175670]'
    Cardinality: '0to1'
    ObjectDefinition: NewAssemblyOnlinePlanRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide NewAssemblyOnlinePlanRow
  {
    #keys: '3[413988.0.1702175672][413988.0.1702175671][413988.0.1702175673]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_NewAssemblyOnlinePlanRow_NewAssemblyOnlinePlanCell_NewAssemblyOnlin.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: #root
Relation NewAssemblyOnlinePlanRow_NewAssemblyOnlinePlanCell_NewAssemblyOnlinePlanCell_NewAssemblyOnlinePlanRow
{
  #keys: '1[413988.0.1702175696]'
  DeclarativeSequenceRelationStrategy
  {
    #keys: '13[0.0.0][413988.0.1701591359][413988.0.1701591353][413988.0.1701591360][413988.0.1701591354][413988.0.1701591361][413988.0.1701591355][413988.0.1701591362][413988.0.1701591356][413988.0.1701591363][413988.0.1701591357][413988.0.1701591364][413988.0.1701591358]'
    SequenceElementSuffix: 'NAOPCell'
    SequenceSuffix: 'NAOPCell'
    SortAttributes:
    [
      DeclarativeSequenceRelationSortAttribute
      {
        #keys: '1[413988.0.1701591369]'
        Attribute: 'StartDate'
      }
    ]
  }
  RelationSide.LeftSide NewAssemblyOnlinePlanCell
  {
    #keys: '3[413988.0.1702175698][413988.0.1702175697][413988.0.1702175699]'
    Cardinality: '1toN'
    ObjectDefinition: NewAssemblyOnlinePlanRow
    OwningSide: 'Owned'
  }
  RelationSide.RightSide NewAssemblyOnlinePlanRow
  {
    #keys: '3[413988.0.1702175701][413988.0.1702175700][413988.0.1702175702]'
    Cardinality: '0to1'
    ObjectDefinition: NewAssemblyOnlinePlanCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
@@ -7,83 +7,83 @@
{
  TextBody:
  [*
    macroPlan.AssemblyOnlinePlanRow( relflush );
    macroPlan.AssemblyOnlinePlanColumn( relflush );
    // æ‰¾è£…配线行
    oprs := selectsortedset( opt, OfflinePlanRow, tempOPR,
                             tempOPR.ProductionLine() = "DL MoMo"
                             or
                             tempOPR.ProductionLine() = "CC MoMo"
                             or
                             tempOPR.ProductionLine() = "DL ZKM"
                             ,
                             tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
    opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
    // ç”Ÿæˆè¡¨æ ¼
    traverse ( opcs, Elements, opc ) {
      aopc := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := opc.ColumnDate(), ColumnIndex := opc.ColumnIndex() );
      traverse ( oprs, Elements, opr ) {
        aopr := select( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductID() = opr.ProductID() and tempAOPR.ProductionLine() = opr.ProductionLine() and tempAOPR.Type() = opr.Type() );
        if ( isnull( aopr ) ) {
          aopr := macroPlan.AssemblyOnlinePlanRow( relnew, ProductID := opr.ProductID(), ProductionLine := opr.ProductionLine(), Type := opr.Type() );
        }
        cellOPC := select( opr, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanColumn() = opc );
        if ( not isnull( cellOPC ) ) {
          cellAOPC := aopc.AssemblyOnlinePlanCell( relnew, Value := cellOPC.Value() );
          cellAOPC.AssemblyOnlinePlanRow( relset, aopr );
        }
      }
    }
    // å¤„理日历事件
    pls := selectuniquevalues( macroPlan, AssemblyOnlinePlanRow, tempAOPR, true, tempAOPR.ProductionLine() );
    traverse ( pls, Elements, pl ) {
      targetQuantity := ifexpr( pl = "CC MoMo", guard( macroPlan.AssemblyOnlineQuantity().CCMoMo(), 0 ),
                                ifexpr( pl = "DL MoMo", guard( macroPlan.AssemblyOnlineQuantity().DLMoMo(), 0 ), guard( macroPlan.AssemblyOnlineQuantity().DLZKM(), 0 ) )
                               );
      u           := select( macroPlan, Unit, tempU, tempU.ID() = pl );
      drainPs     := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "拉空" ), false ) );
      lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "铺线" ), false ) );
      // å¤„理排空
      info( "当前产线:", pl, "    å¤„理拉空--------------------------" );
      traverse ( drainPs, Elements, p ) {
        traverse ( p, ExplicitTimeInterval, eti ) {
          info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), "    ç»“束时间:", eti.End().Format( "Y-M2-D2" ) );
          // å‰ä¸€å¤©æ—¥åކ
          aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = ( eti.Start().Date() - 1 ) );
          info( "需要拉空的上线计划时间:", aopc.ColumnDate().Format( "Y-M2-D2" ) );
          aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
                              exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
          aopr  := maxselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
                              [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
          cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
                           tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
          cell.Value( [String] ( [Number]cell.Value() - targetQuantity ) );
        }
      }
      info( "当前产线:", pl, "    å¤„理铺线--------------------------" );
      // å¤„理铺线
      traverse ( lineLyingPs, Elements, p ) {
        traverse ( p, ExplicitTimeInterval, eti ) {
          info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), "    ç»“束时间:", eti.End().Format( "Y-M2-D2" ) );
          info( "需要铺线的上线计划时间:", eti.Start().Format( "Y-M2-D2" ) );
          aopc  := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = eti.Start().Date() );
          aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
                              exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
          aopr  := minselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
                              [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
          cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
                           tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
          cell.Value( [String] ( [Number]cell.Value() + targetQuantity ) );
        }
      }
    }
    //macroPlan.AssemblyOnlinePlanRow( relflush );
    //macroPlan.AssemblyOnlinePlanColumn( relflush );
    //
    //// æ‰¾è£…配线行
    //oprs := selectsortedset( opt, OfflinePlanRow, tempOPR,
    //                         tempOPR.ProductionLine() = "DL MoMo"
    //                         or
    //                         tempOPR.ProductionLine() = "CC MoMo"
    //                         or
    //                         tempOPR.ProductionLine() = "DL ZKM"
    //                         ,
    //                         tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
    //opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
    //
    //// ç”Ÿæˆè¡¨æ ¼
    //traverse ( opcs, Elements, opc ) {
    //  aopc := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := opc.ColumnDate(), ColumnIndex := opc.ColumnIndex() );
    //  traverse ( oprs, Elements, opr ) {
    //    aopr := select( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductID() = opr.ProductID() and tempAOPR.ProductionLine() = opr.ProductionLine() and tempAOPR.Type() = opr.Type() );
    //    if ( isnull( aopr ) ) {
    //      aopr := macroPlan.AssemblyOnlinePlanRow( relnew, ProductID := opr.ProductID(), ProductionLine := opr.ProductionLine(), Type := opr.Type() );
    //    }
    //
    //    cellOPC := select( opr, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanColumn() = opc );
    //    if ( not isnull( cellOPC ) ) {
    //      cellAOPC := aopc.AssemblyOnlinePlanCell( relnew, Value := cellOPC.Value() );
    //      cellAOPC.AssemblyOnlinePlanRow( relset, aopr );
    //    }
    //  }
    //}
    //
    //// å¤„理日历事件
    //pls := selectuniquevalues( macroPlan, AssemblyOnlinePlanRow, tempAOPR, true, tempAOPR.ProductionLine() );
    //traverse ( pls, Elements, pl ) {
    //  targetQuantity := ifexpr( pl = "CC MoMo", guard( macroPlan.AssemblyOnlineQuantity().CCMoMo(), 0 ),
    //                            ifexpr( pl = "DL MoMo", guard( macroPlan.AssemblyOnlineQuantity().DLMoMo(), 0 ), guard( macroPlan.AssemblyOnlineQuantity().DLZKM(), 0 ) )
    //                           );
    //
    //  u           := select( macroPlan, Unit, tempU, tempU.ID() = pl );
    //  drainPs     := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "拉空" ), false ) );
    //  lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "铺线" ), false ) );
    //
    //  // å¤„理排空
    //  info( "当前产线:", pl, "    å¤„理拉空--------------------------" );
    //  traverse ( drainPs, Elements, p ) {
    //    traverse ( p, ExplicitTimeInterval, eti ) {
    //      info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), "    ç»“束时间:", eti.End().Format( "Y-M2-D2" ) );
    //      // å‰ä¸€å¤©æ—¥åކ
    //      aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = ( eti.Start().Date() - 1 ) );
    //      info( "需要拉空的上线计划时间:", aopc.ColumnDate().Format( "Y-M2-D2" ) );
    //      aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
    //                          exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
    //      aopr  := maxselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
    //                          [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
    //      cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
    //                       tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
    //
    //      cell.Value( [String] ( [Number]cell.Value() - targetQuantity ) );
    //    }
    //  }
    //
    //  info( "当前产线:", pl, "    å¤„理铺线--------------------------" );
    //  // å¤„理铺线
    //  traverse ( lineLyingPs, Elements, p ) {
    //    traverse ( p, ExplicitTimeInterval, eti ) {
    //      info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), "    ç»“束时间:", eti.End().Format( "Y-M2-D2" ) );
    //      info( "需要铺线的上线计划时间:", eti.Start().Format( "Y-M2-D2" ) );
    //      aopc  := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = eti.Start().Date() );
    //      aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
    //                          exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
    //      aopr  := minselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
    //                          [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
    //      cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
    //                       tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
    //      cell.Value( [String] ( [Number]cell.Value() + targetQuantity ) );
    //    }
    //  }
    //}
  *]
}
_Main/BL/Type_MacroPlan/Attribute_A_AssemblyOnlinePlanProductionLineName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute A_AssemblyOnlinePlanProductionLineName
{
  #keys: '3[413988.0.1701591471][413988.0.1701591470][413988.0.1701591472]'
  Description: '上线计划要生成的产线'
  ValueType: String
}
_Main/BL/Type_MacroPlan/DefaultValue_A_AssemblyOnlinePlanProductionLineName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  ISOValue: 'DL MoMo;CC MoMo;DL ZKM'
  TargetAttribute: A_AssemblyOnlinePlanProductionLineName
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[413988.0.1702175775][413988.0.1702175774][413988.0.1702175776]'
  ValueType: Date
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute InventoryWeight
{
  #keys: '3[413988.0.1702175766][413988.0.1702175765][413988.0.1702175767]'
  Description: '剩余库存 - æœ€å°åº“å­˜'
  ValueType: Real
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Order.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Order
{
  #keys: '3[413988.0.1702175763][413988.0.1702175762][413988.0.1702175764]'
  Description: '生产顺序(String)'
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_OrderNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderNr
{
  #keys: '3[413988.0.1702175781][413988.0.1702175780][413988.0.1702175782]'
  Description: '生产顺序(Number)'
  ValueType: Number
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.0.1702175787][413988.0.1702175786][413988.0.1702175788]'
  Description: '数量'
  ValueType: Real
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternEnd.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternEnd
{
  #keys: '3[413988.0.1702175760][413988.0.1702175759][413988.0.1702175761]'
  Description: '班次结束时间'
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternName
{
  #keys: '3[413988.0.1702175772][413988.0.1702175771][413988.0.1702175773]'
  Description: '班次名'
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_ShiftPatternStart.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ShiftPatternStart
{
  #keys: '3[413988.0.1702175769][413988.0.1702175768][413988.0.1702175770]'
  Description: '班次开始时间'
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[413988.0.1702175778][413988.0.1702175777][413988.0.1702175779]'
  ValueType: Date
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Attribute_TotalQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TotalQuantity
{
  #keys: '3[413988.0.1702175784][413988.0.1702175783][413988.0.1702175785]'
  Description: '合计'
  ValueType: Real
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_Order.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Order
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternEnd.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ShiftPatternEnd
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ShiftPatternName
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/DefaultValue_ShiftPatternStart.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ShiftPatternStart
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcEndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcEndDate
{
  TextBody:
  [*
    // lihongji Oct-11-2024 (created)
    value := guard( this.NewAssemblyOnlinePlanColumn().EndDate(), Date::MinDate() );
    this.EndDate( value );
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcStartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcStartDate
{
  TextBody:
  [*
    // lihongji Oct-11-2024 (created)
    value := guard( this.NewAssemblyOnlinePlanColumn().StartDate(), Date::MinDate() );
    this.StartDate( value );
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Function_CalcTotalQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcTotalQuantity
{
  TextBody:
  [*
    // lihongji Oct-11-2024 (created)
    value := sum( this, Detailed, tempNAOPCell, true, tempNAOPCell.Quantity() );
    this.TotalQuantity( value );
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/Method_GetNewAssemblyOnlinePlanMatrixTooltip.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method GetNewAssemblyOnlinePlanMatrixTooltip () 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_NewAssemblyOnlinePlanCell/StaticMethod_CreateOldAssemblyOnlinePlanData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateOldAssemblyOnlinePlanData (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    macroPlan.AssemblyOnlinePlanRow( relflush );
    macroPlan.AssemblyOnlinePlanColumn( relflush );
    // åˆ›å»ºåˆ—
    firstColumn  := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 );
    secondColumn := macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 );
    traverse ( macroPlan, NewAssemblyOnlinePlanColumn, naopc ) {
      macroPlan.AssemblyOnlinePlanColumn( relnew, ColumnDate := naopc.StartDate() );
    }
    pls := selectuniquevalues( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, true, tempNAOPR.ProductionLine() );
    traverse ( pls, Elements, pl ) {
      // åˆ›å»ºæ˜Žç»†è¡Œ
      detailNAOPRs := selectsortedset( macroPlan, NewAssemblyOnlinePlanRow, tempNAOOPR, tempNAOOPR.ProductionLine() = pl and tempNAOOPR.Type() = "1", tempNAOOPR.ProductionLine(), tempNAOOPR.ProductID() );
      traverse ( detailNAOPRs, Elements, naopr ) {
        quantityOPR := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := naopr.ProductionLine(), ProductID := naopr.ProductID(), Type := "1" );
        orderOPR    := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := naopr.ProductionLine(), ProductID := naopr.ProductID(), Type := "2" );
        // ç¬¬ä¸€åˆ—
        quantityOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := firstColumn,  Value := naopr.Name() );
        orderOPR.AssemblyOnlinePlanCell(    relnew, AssemblyOnlinePlanColumn := firstColumn,  Value := "" );
        // ç¬¬äºŒåˆ—
        quantityOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "Quantity" );
        orderOPR.AssemblyOnlinePlanCell(    relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "Order" );
        // æ—¶é—´åˆ—
        traverse ( naopr, NewAssemblyOnlinePlanCell, naopcell ) {
          aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = naopcell.StartDate() );
          quantityOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := aopc, Value := [String]naopcell.Quantity() );
          orderOPR.AssemblyOnlinePlanCell(    relnew, AssemblyOnlinePlanColumn := aopc, Value := naopcell.Order() );
        }
      }
      // åˆ›å»ºåˆè®¡è¡Œ
      totalNAOPR           := select( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, tempNAOPR.ProductionLine() = pl and tempNAOPR.Type() = "2" );
      totalAOPR             := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := totalNAOPR.ProductionLine(), ProductID := "Z", Type := "3" );
      shiftPatternNameAOPR  := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := totalNAOPR.ProductionLine(), ProductID := "Z", Type := "4" );
      shiftPatternStartAOPR := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := totalNAOPR.ProductionLine(), ProductID := "Z", Type := "5" );
      shiftPatternEndOAPR   := macroPlan.AssemblyOnlinePlanRow( relnew, ProductionLine := totalNAOPR.ProductionLine(), ProductID := "Z", Type := "6" );
      // ç¬¬ä¸€åˆ—
      totalAOPR.AssemblyOnlinePlanCell(             relnew, AssemblyOnlinePlanColumn := firstColumn, Value := "合计" );
      shiftPatternNameAOPR.AssemblyOnlinePlanCell(  relnew, AssemblyOnlinePlanColumn := firstColumn, Value := "" );
      shiftPatternStartAOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := firstColumn, Value := "" );
      shiftPatternEndOAPR.AssemblyOnlinePlanCell(   relnew, AssemblyOnlinePlanColumn := firstColumn, Value := "" );
       // ç¬¬äºŒåˆ—
      totalAOPR.AssemblyOnlinePlanCell(             relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "总量" );
      shiftPatternNameAOPR.AssemblyOnlinePlanCell(  relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "班次" );
      shiftPatternStartAOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "班次开始时间" );
      shiftPatternEndOAPR.AssemblyOnlinePlanCell(   relnew, AssemblyOnlinePlanColumn := secondColumn, Value := "班次结束时间" );
      // æ—¶é—´åˆ—
      traverse ( totalNAOPR, NewAssemblyOnlinePlanCell, naopcell ) {
        opc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = naopcell.StartDate() );
        totalAOPR.AssemblyOnlinePlanCell(             relnew, AssemblyOnlinePlanColumn := opc, Value := [String]naopcell.TotalQuantity() );
        shiftPatternNameAOPR.AssemblyOnlinePlanCell(  relnew, AssemblyOnlinePlanColumn := opc, Value := naopcell.ShiftPatternName() );
        shiftPatternStartAOPR.AssemblyOnlinePlanCell( relnew, AssemblyOnlinePlanColumn := opc, Value := naopcell.ShiftPatternStart() );
        shiftPatternEndOAPR.AssemblyOnlinePlanCell(   relnew, AssemblyOnlinePlanColumn := opc, Value := naopcell.ShiftPatternEnd() );
      }
    }
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_Download.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  MacroPlan macroPlan
) as BinaryValue
{
  TextBody:
  [*
    NewAssemblyOnlinePlanCell::CreateOldAssemblyOnlinePlanData( macroPlan );
    return NewAssemblyOnlinePlanCell::OldDownload( macroPlan );
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_OldDownload.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
Quintiq file version 2.0
#parent: #root
StaticMethod OldDownload (
  MacroPlan macroPlan
) as BinaryValue
{
  TextBody:
  [*
    xmlDOMI      := XMLDOMImplementation::Create();
    xmlDOM       := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' );
    tableElement := xmlDOM.GetElementByTagName( "table", 0 );
    opcs := selectsortedset( macroPlan, AssemblyOnlinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
    oprs := selectsortedset( macroPlan, AssemblyOnlinePlanRow, tempOPR, true, tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
    traverse ( opcs, Elements, opc ) {
      column := xmlDOM.CreateElement( "column" );
      name   := xmlDOM.CreateElement( "name" );
      type   := xmlDOM.CreateElement( "type" );
      name.TextContent( ifexpr( opc.ColumnDate() < macroPlan.StartOfPlanning().Date(), "", opc.ColumnDate().Format( "Y/M2/D2" ) ) );
      type.TextContent( "String" );
      column.AppendChild( name );
      column.AppendChild( type );
      traverse ( oprs, Elements, opr ) {
        c    := select( opc, AssemblyOnlinePlanCell, tempOPC, tempOPC.AssemblyOnlinePlanRow() = opr );
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", guard( c.Value(), "" ) );
        column.AppendChild( cell );
      }
      tableElement.AppendChild( column );
    }
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
    //info( xmlString );
    tableGroupHandle := TableGroupHandle::Create( "Sheet1" );
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
    tableGroupHandle.Add( tableHandle );
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
    return binaryData.AsBinaryValue();
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
Quintiq file version 2.0
#parent: #root
StaticMethod RefreshData (
  MacroPlan macroPlan,
  NewOfflinePlanTable nopt
)
{
  TextBody:
  [*
    macroPlan.NewAssemblyOnlinePlanRow( relflush );
    macroPlan.NewAssemblyOnlinePlanColumn( relflush );
    aopplns := macroPlan.A_AssemblyOnlinePlanProductionLineName().Tokenize( ";" );
    traverse ( nopt, NewOfflinePlanRow, nopr, exists( aopplns, Elements, aoppl, aoppl = nopr.ProductionLine() ) and nopr.Type() = "1" ) {
      // ä¸Šçº¿è®¡åˆ’合计行
      totalNAOPR   := select( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, tempNAOPR.ProductID() = "All" and tempNAOPR.ProductionLine() = nopr.ProductionLine() and tempNAOPR.Type() = "2" );
      if ( isnull( totalNAOPR ) ) {
        totalNAOPR := macroPlan.NewAssemblyOnlinePlanRow( relnew, ProductID := "All", ProductionLine := nopr.ProductionLine(), Type := "2" );
      }
      // ä¸Šçº¿è®¡åˆ’详细行
      detailNAOPR   := select( macroPlan, NewAssemblyOnlinePlanRow, tempNAOPR, tempNAOPR.ProductID() = nopr.ProductID() and tempNAOPR.ProductionLine() = nopr.ProductionLine() and tempNAOPR.Type() = "1" );
      if ( isnull( detailNAOPR ) ) {
        detailNAOPR := macroPlan.NewAssemblyOnlinePlanRow( relnew, OperationID := nopr.OperationID(), ProductID := nopr.ProductID(), ProductionLine := nopr.ProductionLine(), Type := "1" );
      }
      // åˆ›å»ºå•元格
      traverse ( nopr, NewOfflinePlanCell, nopcell ) {
        // ä¸Šçº¿è®¡åˆ’列
        naopc   := select( macroPlan, NewAssemblyOnlinePlanColumn, tempNAOPC, tempNAOPC.StartDate() = nopcell.NewOfflinePlanColumn().StartDate() and tempNAOPC.EndDate() = nopcell.NewOfflinePlanColumn().EndDate() );
        if ( isnull( naopc ) ) {
          naopc := macroPlan.NewAssemblyOnlinePlanColumn( relnew, StartDate := nopcell.NewOfflinePlanColumn().StartDate(), EndDate := nopcell.NewOfflinePlanColumn().EndDate() );
        }
        // è®¾ç½®ä¸Šçº¿è®¡åˆ’合计单元格
        totalNAOPCell   := select( totalNAOPR, NewAssemblyOnlinePlanCell, tempNAOPCell, tempNAOPCell.NewAssemblyOnlinePlanColumn() = naopc );
        if ( isnull( totalNAOPCell ) ) {
          totalNAOPCell := totalNAOPR.NewAssemblyOnlinePlanCell( relnew, ShiftPatternName := nopcell.Total().ShiftPatternName(), ShiftPatternStart := nopcell.Total().ShiftPatternStart(),
                                                                 ShiftPatternEnd := nopcell.Total().ShiftPatternEnd() );
          totalNAOPCell.NewAssemblyOnlinePlanColumn( relset, naopc );
        }
        // è®¾ç½®ä¸Šçº¿è®¡åˆ’详细单元格
        detailNAOPCell   := select( detailNAOPR, NewAssemblyOnlinePlanCell, tempNAOPCell, tempNAOPCell.NewAssemblyOnlinePlanColumn() = naopc );
        if ( isnull( detailNAOPCell ) ) {
          detailNAOPCell := detailNAOPR.NewAssemblyOnlinePlanCell( relnew, InventoryWeight := nopcell.InventoryWeight(), Order := nopcell.Order(), OrderNr := nopcell.OrderNr(), Quantity := nopcell.Quantity(),
                                                                   ShiftPatternEnd := nopcell.ShiftPatternEnd(), ShiftPatternName := nopcell.ShiftPatternName(), ShiftPatternStart := nopcell.ShiftPatternStart() );
          detailNAOPCell.NewAssemblyOnlinePlanColumn( relset, naopc );
        }
        // è®¾ç½®åˆè®¡å•元格的详细单元格
        totalNAOPCell.Detailed( relinsert, detailNAOPCell );
      }
    }
    // å¤„理日历事件
    //pls := selectuniquevalues( macroPlan, AssemblyOnlinePlanRow, tempAOPR, true, tempAOPR.ProductionLine() );
    //traverse ( pls, Elements, pl ) {
    //  targetQuantity := ifexpr( pl = "CC MoMo", guard( macroPlan.AssemblyOnlineQuantity().CCMoMo(), 0 ),
    //                            ifexpr( pl = "DL MoMo", guard( macroPlan.AssemblyOnlineQuantity().DLMoMo(), 0 ), guard( macroPlan.AssemblyOnlineQuantity().DLZKM(), 0 ) )
    //                           );
    //
    //  u           := select( macroPlan, Unit, tempU, tempU.ID() = pl );
    //  drainPs     := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "拉空" ), false ) );
    //  lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "铺线" ), false ) );
    //
    //  // å¤„理排空
    //  info( "当前产线:", pl, "    å¤„理拉空--------------------------" );
    //  traverse ( drainPs, Elements, p ) {
    //    traverse ( p, ExplicitTimeInterval, eti ) {
    //      info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), "    ç»“束时间:", eti.End().Format( "Y-M2-D2" ) );
    //      // å‰ä¸€å¤©æ—¥åކ
    //      aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = ( eti.Start().Date() - 1 ) );
    //      info( "需要拉空的上线计划时间:", aopc.ColumnDate().Format( "Y-M2-D2" ) );
    //      aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
    //                          exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
    //      aopr  := maxselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
    //                          [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
    //      cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
    //                       tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
    //
    //      cell.Value( [String] ( [Number]cell.Value() - targetQuantity ) );
    //    }
    //  }
    //
    //  info( "当前产线:", pl, "    å¤„理铺线--------------------------" );
    //  // å¤„理铺线
    //  traverse ( lineLyingPs, Elements, p ) {
    //    traverse ( p, ExplicitTimeInterval, eti ) {
    //      info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), "    ç»“束时间:", eti.End().Format( "Y-M2-D2" ) );
    //      info( "需要铺线的上线计划时间:", eti.Start().Format( "Y-M2-D2" ) );
    //      aopc  := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = eti.Start().Date() );
    //      aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
    //                          exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
    //      aopr  := minselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
    //                          [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
    //      cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
    //                       tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
    //      cell.Value( [String] ( [Number]cell.Value() + targetQuantity ) );
    //    }
    //  }
    //}
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanCell/_ROOT_Type_NewAssemblyOnlinePlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type NewAssemblyOnlinePlanCell
{
  #keys: '5[413988.0.1702175664][413988.0.1702175662][0.0.0][413988.0.1702175663][413988.0.1702175665]'
  BaseType: Object
  StructuredName: 'NewAssemblyOnlinePlanCells'
}
_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[413988.0.1702175792][413988.0.1702175791][413988.0.1702175793]'
  ValueType: Date
}
_Main/BL/Type_NewAssemblyOnlinePlanColumn/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[413988.0.1702175795][413988.0.1702175794][413988.0.1702175796]'
  ValueType: Date
}
_Main/BL/Type_NewAssemblyOnlinePlanColumn/_ROOT_Type_NewAssemblyOnlinePlanColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type NewAssemblyOnlinePlanColumn
{
  #keys: '5[413988.0.1702175659][413988.0.1702175657][0.0.0][413988.0.1702175658][413988.0.1702175660]'
  BaseType: Object
  StructuredName: 'NewAssemblyOnlinePlanColumns'
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[413988.0.1702175744][413988.0.1702175743][413988.0.1702175745]'
  Description: '显示名'
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_OperationID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute OperationID
{
  #keys: '3[413988.0.1702175747][413988.0.1702175746][413988.0.1702175748]'
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[413988.0.1702175750][413988.0.1702175749][413988.0.1702175751]'
  Description: '产品ID'
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionLine
{
  #keys: '3[413988.0.1702175741][413988.0.1702175740][413988.0.1702175742]'
  Description: '产线名'
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/Attribute_Type.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Attribute Type
{
  #keys: '3[413988.0.1702175753][413988.0.1702175752][413988.0.1702175754]'
  Description:
  [*
    1:明细显示
    2:合计显示
  *]
  ValueType: String
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_OperationID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: OperationID
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ProductID
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ProductionLine
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/DefaultValue_Type.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Type
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // lihongji Oct-12-2024 (created)
    value := this.ProductionLine() + ifexpr( this.ProductID() = "All", "", "_" + this.ProductID() );
    this.Name( value );
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/Method_Filter.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method Filter (
  Entitys entitys
) declarative remote as Boolean
{
  TextBody:
  [*
    flag := false;
    traverse ( entitys, Elements.astype( Unit ), u, not flag ) {
      flag := u.Name() = this.ProductionLine();
    }
    return flag;
  *]
}
_Main/BL/Type_NewAssemblyOnlinePlanRow/_ROOT_Type_NewAssemblyOnlinePlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type NewAssemblyOnlinePlanRow
{
  #keys: '5[413988.0.1702175652][413988.0.1702175650][0.0.0][413988.0.1702175651][413988.0.1702175653]'
  BaseType: Object
  Description: '新版上线计划行'
  StructuredName: 'NewAssemblyOnlinePlanRows'
}
_Main/BL/Type_NewOfflinePlanCell/Function_CalcTotalQuantity.qbl
@@ -6,7 +6,7 @@
  [*
    // lihongji Oct-11-2024 (created)
    
    value := sum( this, Detailed, tempNOPC, true, tempNOPC.Quantity() );
    value := sum( this, Detailed, tempNOPCell, true, tempNOPCell.Quantity() );
    
    this.TotalQuantity( value );
  *]
_Main/BL/Type_NewOfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -69,7 +69,16 @@
        traverse ( nopt, NewOfflinePlanColumn, nopc ) {
          cell   := select( nopr, NewOfflinePlanCell, tempNOPCell, tempNOPCell.NewOfflinePlanColumn() = nopc );
          if ( isnull( cell ) ) {
            cell := nopr.NewOfflinePlanCell( relnew );
            uptb := select( macroPlan, Unit.UnitPeriod.astype( UnitPeriodTimeBase ), tempUPTB,
                            tempUPTB.UnitID() = nopr.ProductionLine() and tempUPTB.StartDate() = nopc.StartDate() and tempUPTB.End().Date() = nopc.EndDate() );
            // ShiftPattern
            sp   := uptb.ShiftPattern();
            // ShiftDayTime
            sdt  := select( sp, ShiftDayTime, tempSDT, tempSDT.Name() = tempSDT.ShiftPattern().Name() );
            cell := nopr.NewOfflinePlanCell( relnew,
                                             ShiftPatternName  := guard( sp.Name(), "" ),
                                             ShiftPatternStart := guard( sdt.StartDateTime().Format( "H:m" ), "" ),
                                             ShiftPatternEnd   := guard( sdt.EndDateTIme().Format( "H:m" ), "" ) );
            cell.NewOfflinePlanColumn( relset, nopc );
          }
        }
@@ -79,15 +88,14 @@
      totalNOPR   := nopt.NewOfflinePlanRow( relnew, ProductID := "All", ProductionLine := u.ID(), Type := "2" );
      detailNOPRs := selectset( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = u.ID() and tempNOPR.Type() = "1" );
      traverse ( detailNOPRs, Elements, detailNOPR ) {
        shiftPatternNOPCell := select( detailNOPR, NewOfflinePlanCell, tempNOPCell, tempNOPCell.ShiftPatternName() <> "" );
        traverse ( detailNOPR, NewOfflinePlanCell, detailNOPCell ) {
          // ç”Ÿäº§ä¸‹çº¿è®¡åˆ’【产线合计】单元格
          totalNOPRCell   := select( totalNOPR, NewOfflinePlanCell, tempNOPCell, tempNOPCell.NewOfflinePlanColumn() = detailNOPCell.NewOfflinePlanColumn() );
          if ( isnull( totalNOPRCell ) ) {
            totalNOPRCell := totalNOPR.NewOfflinePlanCell( relnew, 
                                                           ShiftPatternName  := shiftPatternNOPCell.ShiftPatternName(),
                                                           ShiftPatternStart := shiftPatternNOPCell.ShiftPatternStart(),
                                                           ShiftPatternEnd   := shiftPatternNOPCell.ShiftPatternEnd() );
                                                           ShiftPatternName  := detailNOPCell.ShiftPatternName(),
                                                           ShiftPatternStart := detailNOPCell.ShiftPatternStart(),
                                                           ShiftPatternEnd   := detailNOPCell.ShiftPatternEnd() );
            totalNOPRCell.NewOfflinePlanColumn( relset, detailNOPCell.NewOfflinePlanColumn() ); // è®¾ç½®åˆ—
            // å°†æ˜Žç»†å•元格关联到合计单元格
            totalNOPRCell.Detailed( relinsert, detailNOPCell );
_Main/BL/Type_Test/StaticMethod_Test.qbl
@@ -11,8 +11,10 @@
{
  TextBody:
  [*
    traverse( macroPlan,Product_MP,product ){
      archive.ActualDailyProductionData( relnew,ProductNo := product.ID(),ProductionDate := Date::Construct( 2020,4,1 ),ActualOut := 100);
    traverse( archive,ArchiveFile,object ){
    //  object.Name();
    //  object.FilePath();
    //  object.SourceFileBinaryValue();
    }
  *]
}
_Main/Sys/Repr/Global/NewAssemblyOnlinePlanCell.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation NewAssemblyOnlinePlanCell
{
  AttributeRepresentation Order
  {
    Alignment: 'Right'
    AttributeKey: '[413988.0.1702175762]'
  }
  AttributeRepresentation Quantity
  {
    AttributeKey: '[413988.0.1702175786]'
    Conditional:
    [
      DataRepresentation.Conditional
      {
        BackgroundColor: '$FF3399'
        ConditionBody: 'object.Quantity() > 0.0'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
      }
    ]
  }
  AttributeRepresentation ShiftPatternEnd
  {
    Alignment: 'Right'
    AttributeKey: '[413988.0.1702175759]'
    Synonym: '班次结束时间'
  }
  AttributeRepresentation ShiftPatternName
  {
    Alignment: 'Right'
    AttributeKey: '[413988.0.1702175771]'
    Synonym: '班次'
  }
  AttributeRepresentation ShiftPatternStart
  {
    Alignment: 'Right'
    AttributeKey: '[413988.0.1702175768]'
    Synonym: '班次开始时间'
  }
  AttributeRepresentation TotalQuantity
  {
    AttributeKey: '[413988.0.1702175783]'
    Synonym: '总量'
  }
  RelationRepresentation AsFirstNAOPCell { RelationKey: '[413988.0.1701591354]' Visibility: 'Normal' }
}
_Main/Sys/Repr/Global/NewOfflinePlanCell.qrp
@@ -15,6 +15,7 @@
      DataRepresentation.Conditional
      {
        BackgroundColor: '$FF3399'
        ConditionBody: 'object.Quantity() > 0.0'
        ConversionBody: ''
        DefaultBackgroundColor: false
        InheritConversion: false
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -22,7 +22,7 @@
      BaseType: 'WebButton'
      Properties:
      [
        Taborder: 6
        Taborder: 7
      ]
    }
    Component bOfflinePlan
@@ -47,6 +47,7 @@
        Image: 'PALM_TREE'
        Label: 'Filing plan'
        Taborder: 3
        Visible: false
      ]
    }
    Component bPackagingPlan
@@ -57,7 +58,7 @@
      [
        Image: 'SIXPACK_BEER'
        Label: 'Packaging plan'
        Taborder: 4
        Taborder: 5
      ]
    }
    Component bShippingActualData
@@ -68,7 +69,7 @@
      [
        Image: 'TABLE_CONNECTION'
        Label: 'Shipping data'
        Taborder: 5
        Taborder: 6
      ]
    }
    Component bNewOfflinePlan
@@ -82,6 +83,18 @@
        Taborder: 2
      ]
    }
    Component bNewAssemblyOnlinePlan
    {
      #keys: '[413988.0.1701710485]'
      BaseType: 'WebButton'
      Properties:
      [
        Description: '新版上线计划'
        Image: 'PALM_TREE'
        Label: 'Filing plan'
        Taborder: 4
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bNewAssemblyOnlinePlan_OnClic.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: abgSecondDevelopmentPlan/bNewAssemblyOnlinePlan
Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bNewAssemblyOnlinePlan_OnClick
{
  #keys: '[413988.0.1699330508]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "NewAssemblyOnlinePlan", true );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[413988.0.1703941978]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[413988.0.1703941982]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[413988.0.1703941984]'
      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_DialogAssemblyOnlinePlanProductionLineName/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[413988.0.1703941976]'
  BaseType: 'WebPanel'
  Children:
  [
    Component efAssemblyOnlinePlanProductionLineName
    {
      #keys: '[413988.0.1703822319]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'MacroPlan.A_AssemblyOnlinePlanProductionLineName'
        Label: '产线'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/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: '[413988.0.1703941988]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[413988.0.1703941987]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlinePlanProductionLineName/_ROOT_Component_DialogAssemblyOnlinePlanProductionLineName.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogAssemblyOnlinePlanProductionLineName
{
  #keys: '[413988.0.1703941974]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form701/Component_PanelDemandComparison.def
@@ -76,6 +76,31 @@
      ]
    }
    #child: MatrixEditor
    Component dhCheckUnits
    {
      #keys: '[414996.1.137664350]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[Entity]*'
      Children:
      [
        Component deCheckUnits
        {
          #keys: '[414996.1.137664394]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Entity]'
            Source: 'ApplicationMacroPlanner.DataHolderCheckedEntities'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Taborder: 5
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_Form701/Response_PanelDemandComparison_dhCheckUnits_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: PanelDemandComparison/dhCheckUnits
Response OnDataChanged () id:Response_PanelDemandComparison_dhCheckUnits_OnDataChanged
{
  #keys: '[414996.1.137664549]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      if( this.Data().Size() <> 0 ){
        prods := selectset( dhFinelProduct.Data(),Elements,element,exists( this.Data(),Elements.astype( Unit ).StockingPoint_MP.ProductInStockingPoint_MP.Product_MP,prod,prod = element ));
        // prods := selectset( productInLanes,Elements.Product_MP,prod,true );
        dhFinelProduct.Data( &prods );
      }else{
        dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor515#474.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
Quintiq file version 2.0
Component MatrixEditor515 id:MatrixEditor515_474
{
  #keys: '[413988.0.1703400440]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell568
    {
      #keys: '[413988.0.1703400441]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor802
        {
          #keys: '[413988.0.1703400442]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[NewAssemblyOnlinePlanRow]'
            Source: 'dhSelectedDetailNewAssemblyOnlinePlanRow'
            Taborder: 0
            Transformation: 'Elements.NewAssemblyOnlinePlanCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Quantity;Order'
        Column: 'NewAssemblyOnlinePlanColumn'
        Row: 'NewAssemblyOnlinePlanRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows710
    {
      #keys: '[413988.0.1703400443]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor206
        {
          #keys: '[413988.0.1703400444]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[NewAssemblyOnlinePlanRow]'
            Source: 'dhSelectedDetailNewAssemblyOnlinePlanRow'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'ProductionLine;ProductID'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns748
    {
      #keys: '[413988.0.1703400445]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor675
        {
          #keys: '[413988.0.1703400446]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'NewAssemblyOnlinePlanColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'StartDate'
        SortCriteria: 'StartDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage623_1
    #child: matrixeditorContextMenu229_1
    Component UserConfigurableInformation675
    {
      #keys: '[413988.0.1703400452]'
      BaseType: 'WebUserConfigurableInformation'
      Properties:
      [
        ObjectType: 'NewAssemblyOnlinePlanCell'
        Taborder: 5
        Tooltip: 'VALUE( object.GetNewAssemblyOnlinePlanMatrixTooltip() )'
      ]
    }
  ]
  Properties:
  [
    AllowAttributeConfiguration: true
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumns748'
    ContextMenu: 'matrixeditorContextMenu229'
    Rows: 'MatrixEditorRows710'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_MatrixEditor583#969.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,99 @@
Quintiq file version 2.0
Component MatrixEditor583 id:MatrixEditor583_969
{
  #keys: '[413988.0.1703400520]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell950
    {
      #keys: '[413988.0.1703400521]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor782
        {
          #keys: '[413988.0.1703400522]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[NewAssemblyOnlinePlanRow]'
            Source: 'dhSelectedTotalNewAssemblyOnlinePlanRow'
            Taborder: 0
            Transformation: 'Elements.NewAssemblyOnlinePlanCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'TotalQuantity;ShiftPatternName;ShiftPatternStart;ShiftPatternEnd'
        Column: 'NewAssemblyOnlinePlanColumn'
        Row: 'NewAssemblyOnlinePlanRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows569
    {
      #keys: '[413988.0.1703400523]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor195
        {
          #keys: '[413988.0.1703400524]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[NewAssemblyOnlinePlanRow]'
            Source: 'dhSelectedTotalNewAssemblyOnlinePlanRow'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'ProductionLine;ProductID'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns473
    {
      #keys: '[413988.0.1703400525]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor526
        {
          #keys: '[413988.0.1703400526]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'NewAssemblyOnlinePlanColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'StartDate'
        SortCriteria: 'StartDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage338_1
    #child: matrixeditorContextMenu267_1
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumns473'
    ContextMenu: 'matrixeditorContextMenu267'
    Editable: false
    Rows: 'MatrixEditorRows569'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage338#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage338 id:matrixEditorActionBarPage338_1
{
  #keys: '[413988.0.1703400527]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixEditorActionBarPage623#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage623 id:matrixEditorActionBarPage623_1
{
  #keys: '[413988.0.1703400447]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu229#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
Quintiq file version 2.0
Component matrixeditorContextMenu229 id:matrixeditorContextMenu229_1
{
  #keys: '[413988.0.1703400448]'
  BaseType: 'matrixeditorContextMenu'
  Children:
  [
    Component mSeparator
    {
      #keys: '[413988.0.1703400449]'
      BaseType: 'WebMenu'
      Properties:
      [
        Separator: true
        Taborder: 2
      ]
    }
    Component mShowOrHide
    {
      #keys: '[413988.0.1703400450]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'POWER'
        Taborder: 3
        Title: 'Show/Hide total'
      ]
    }
    Component mAssemblyOnlinePlanProductionLineName
    {
      #keys: '[413988.0.1703400451]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'FACTORY'
        Taborder: 4
        Title: '要生成的产线(测试专用)'
      ]
    }
  ]
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_matrixeditorContextMenu267#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu267 id:matrixeditorContextMenu267_1
{
  #keys: '[413988.0.1703400528]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pDetail#415.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component pDetail id:pDetail_415
{
  #keys: '[413988.0.1703400439]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor515_474
  ]
  Properties:
  [
    Border: true
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pHeader#136.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component pHeader id:pHeader_136
{
  #keys: '[413988.0.1699320629]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bDownload
    {
      #keys: '[413988.0.1699320630]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Download'
        Taborder: 1
      ]
    }
    Component bOnlineQuantity
    {
      #keys: '[413988.0.1699320631]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Filing line volume'
        Taborder: 2
      ]
    }
    Component bGenerateReport
    {
      #keys: '[413988.0.1699320632]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Generate'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Component_pTotal#61.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pTotal id:pTotal_61
{
  #keys: '[413988.0.1703400519]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor583_969
  ]
  Properties:
  [
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mAssemblyOnlinePlanProductionLineName_.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: matrixeditorContextMenu229_1/mAssemblyOnlinePlanProductionLineName
Response OnClick () id:Response_matrixeditorContextMenu229_1_mAssemblyOnlinePlanProductionLineName_OnClick
{
  #keys: '[413988.0.1703400437]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogAssemblyOnlinePlanProductionLineName );
      ApplicationMacroPlanner.ShowFormModal( dlg );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_matrixeditorContextMenu229_1_mShowOrHide_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: matrixeditorContextMenu229_1/mShowOrHide
Response OnClick () id:Response_matrixeditorContextMenu229_1_mShowOrHide_OnClick
{
  #keys: '[413988.0.1703400438]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  QuillAction
  {
    Body:
    [*
      pTotal.Visible( not pTotal.Visible() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bDownload_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader_136/bDownload
Response OnClick () id:Response_pHeader_136_bDownload_OnClick
{
  #keys: '[413988.0.1699320628]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := NewAssemblyOnlinePlanCell::Download( MacroPlan );
      Application.Download( "Filing plan.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bGenerateReport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: pHeader_136/bGenerateReport
Response OnClick () id:Response_pHeader_136_bGenerateReport_OnClick
{
  #keys: '[413988.0.1699320626]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      nopt := maxselect( MacroPlan, NewOfflinePlanTable, tempNOPT, true, tempNOPT.SaveDateTime() );
      NewAssemblyOnlinePlanCell::RefreshData( MacroPlan, nopt );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/Response_pHeader_136_bOnlineQuantity_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: pHeader_136/bOnlineQuantity
Response OnClick () id:Response_pHeader_136_bOnlineQuantity_OnClick
{
  #keys: '[413988.0.1699320627]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      aoq := MacroPlan.AssemblyOnlineQuantity();
      if ( isnull( aoq ) ) {
        MacroPlan.AssemblyOnlineQuantity( relnew );
      }
      dlg := construct( DialogAssemblyOnlineQuantity );
      ApplicationMacroPlanner.ShowFormModal( dlg );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormNewAssemblyOnlinePlan/_ROOT_Component_FormNewAssemblyOnlinePlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormNewAssemblyOnlinePlan
{
  #keys: '[413988.0.1699320466]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pHeader_136
    #child: pDetail_415
    #child: pTotal_61
    Component dhSelectedDetailNewAssemblyOnlinePlanRow
    {
      #keys: '[413988.0.1703400672]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[NewAssemblyOnlinePlanRow]*'
      Children:
      [
        Component deSelectedNewOfflinePlanRow id:deSelectedNewOfflinePlanRow_442
        {
          #keys: '[413988.0.1703400673]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            FilterArguments: 'entities:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedEntities'
            FixedFilter: 'object.Filter( entities ) and object.Type() = "1"'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'NewAssemblyOnlinePlanRow'
          ]
        }
      ]
      Properties:
      [
        Taborder: 3
      ]
    }
    Component dhSelectedTotalNewAssemblyOnlinePlanRow
    {
      #keys: '[413988.0.1703400733]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[NewAssemblyOnlinePlanRow]*'
      Children:
      [
        Component deSelectedNewOfflinePlanRow681 id:deSelectedNewOfflinePlanRow681_979
        {
          #keys: '[413988.0.1703400734]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            FilterArguments: 'entities:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedEntities'
            FixedFilter: 'object.Filter( entities ) and object.Type() = "2"'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'NewAssemblyOnlinePlanRow'
          ]
        }
      ]
      Properties:
      [
        Taborder: 4
      ]
    }
  ]
  Properties:
  [
    Description: '新版上线计划'
    Title: 'Assembly online plan'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison#634.def
@@ -76,6 +76,31 @@
        Taborder: 4
      ]
    }
    Component dhCheckUnits id:dhCheckUnits_21
    {
      #keys: '[414996.1.137664654]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[Entity]*'
      Children:
      [
        Component deCheckUnits id:deCheckUnits_368
        {
          #keys: '[414996.1.137664655]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Entity]'
            Source: 'ApplicationMacroPlanner.DataHolderCheckedEntities'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Taborder: 5
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckUnits_OnDataChanged#832.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: PanelDemandComparison_634/dhCheckUnits_21
Response OnDataChanged () id:Response_PanelDemandComparison_dhCheckUnits_OnDataChanged_832
{
  #keys: '[414996.1.137664652]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      if( this.Data().Size() <> 0 ){
        prods := selectset( dhFinelProduct.Data(),Elements,element,exists( this.Data(),Elements.astype( Unit ).StockingPoint_MP.ProductInStockingPoint_MP.Product_MP,prod,prod = element ));
        // prods := selectset( productInLanes,Elements.Product_MP,prod,true );
        dhFinelProduct.Data( &prods );
      }else{
        dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
      }
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Views/NewAssemblyOnlinePlan.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,215 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormNewAssemblyOnlinePlan
      {
        title: 'QMacroPlanner::FormNewAssemblyOnlinePlan'
        shown: true
        componentID: 'QMacroPlanner::FormNewAssemblyOnlinePlan'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 14
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormNewAssemblyOnlinePlan_pHeader
          {
            sizeRatio: 1
          }
          FormNewAssemblyOnlinePlan_pDetail
          {
            sizeRatio: 1
          }
          FormNewAssemblyOnlinePlan_MatrixEditor515
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 530
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormNewAssemblyOnlinePlan.MatrixEditor515'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_Quantity
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Quantity'
                    }
                    attribute_Order
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Order'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'StartDate'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'ProductionLine';datamember:'ProductID'"
                  }
                }
              }
            }
          }
          FormNewAssemblyOnlinePlan_pTotal
          {
            sizeRatio: 1
          }
          FormNewAssemblyOnlinePlan_MatrixEditor583
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 532
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormNewAssemblyOnlinePlan.MatrixEditor583'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_TotalQuantity
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'TotalQuantity'
                    }
                    attribute_ShiftPatternName
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'ShiftPatternName'
                    }
                    attribute_ShiftPatternStart
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 2
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'ShiftPatternStart'
                    }
                    attribute_ShiftPatternEnd
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 3
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'ShiftPatternEnd'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'StartDate'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'ProductionLine';datamember:'ProductID'"
                  }
                }
              }
            }
          }
        }
      }
      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
    {
    }
    page: ''
    group: ''
    index: 0
    image: 'BEAR'
    description: ''
  }
  formatversion: 2
  id: 'NewAssemblyOnlinePlan'
  name: 'NewAssemblyOnlinePlan'
  isglobal: false
  isroot: true
}