lazhen
2024-07-12 d84b3d128563944e812f4a606c4f3c08ee3816ea
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
已添加62个文件
已修改16个文件
已删除4个文件
1559 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_MacroPlan_MacroPlan_AssemblyOnlinePlanColu.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_MacroPlan_MacroPlan_AssemblyOnlinePlanRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlineQuantity_MacroPlan_MacroPlan_AssemblyOnlineQuantity.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanColumn_OfflinePlanTable_OfflinePlanTable_OfflinePlanColu.qbl 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanRow_OfflinePlanTable_OfflinePlanTable_OfflinePlanRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OfflinePlanTable_MacroPlan_MacroPlan_OfflinePlanTable.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_ProductionSerialNumber.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Quantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Shift.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Value.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Shift.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Value.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_Download.qbl 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/_ROOT_Type_AssemblyOnlinePlanCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnIndex.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn/DefaultValue_ColumnName.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn/Function_CalcColumnName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanColumn/_ROOT_Type_AssemblyOnlinePlanColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductionLine.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_RowNr.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_Type.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_RowNr.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_Type.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanRow/_ROOT_Type_AssemblyOnlinePlanRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlineQuantity/Attribute_CCMoMo.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlineQuantity/Attribute_DLMoMo.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlineQuantity/_ROOT_Type_AssemblyOnlineQuantity.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Attribute_InventoryWeight.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Attribute_ProductionSerialNumber.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Attribute_Quantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/Method_FindType2.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/StaticMethod_Download.qbl 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl 103 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanCell/StaticMethod_SaveAsDraft.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanTable/Attribute_SaveDateTime.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OfflinePlanTable/_ROOT_Type_OfflinePlanTable.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanCell/StaticMethod_Download.qbl 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bAssemblyOnlinePlan_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlContent.def 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Response_pnlActions_btnOk_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/_ROOT_Component_DialogAssemblyOnlineQuantity.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_MatrixEditor951#480.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixEditorActionBarPage250#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixeditorContextMenu204#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pContent.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pHeader.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bDownload_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bOnlineQuantity_OnClick.def 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bRefresh_OnClick#774.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/_ROOT_Component_FormAssemblyOnlinePlan.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pContent_dhOfflinePlanTable_OnCreated.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/AssemblyOnlinePlan.vw 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_var/_Main/ProjSettings/EditorTC/Views/车道整班分析_[413988.0.1301140601].vw 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanC.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlinePlanColumn_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell_AssemblyOnlinePlanColumn
{
  #keys: '1[413988.0.1348175595]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide AssemblyOnlinePlanCell
  {
    #keys: '3[413988.0.1348175597][413988.0.1348175596][413988.0.1348175598]'
    Cardinality: '1toN'
    ObjectDefinition: AssemblyOnlinePlanColumn
    OwningSide: 'Owned'
  }
  RelationSide.RightSide AssemblyOnlinePlanColumn
  {
    #keys: '3[413988.0.1348175600][413988.0.1348175599][413988.0.1348175601]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlinePlanCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_AssemblyOnlinePlanColumn_MacroPlan_MacroPlan_AssemblyOnlinePlanColu.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlinePlanColumn_MacroPlan_MacroPlan_AssemblyOnlinePlanColumn
{
  #keys: '1[413988.0.1348175552]'
  DeclarativeSequenceRelationStrategy
  {
    #keys: '13[0.0.0][413988.0.1348175574][413988.0.1348175568][413988.0.1348175575][413988.0.1348175569][413988.0.1348175576][413988.0.1348175570][413988.0.1348175577][413988.0.1348175571][413988.0.1348175578][413988.0.1348175572][413988.0.1348175579][413988.0.1348175573]'
    SequenceElementSuffix: 'Column'
    SequenceSuffix: 'Column'
    SortAttributes:
    [
      DeclarativeSequenceRelationSortAttribute
      {
        #keys: '1[413988.0.1348175584]'
        Attribute: 'ColumnDate'
      }
    ]
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1348175554][413988.0.1348175553][413988.0.1348175555]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlinePlanColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide AssemblyOnlinePlanColumn
  {
    #keys: '3[413988.0.1348175557][413988.0.1348175556][413988.0.1348175558]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlinePlanRow_AssemblyOnlinePlanCell_AssemblyOnlinePlanCell_AssemblyOnlinePlanRow
{
  #keys: '1[413988.0.1348175621]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide AssemblyOnlinePlanCell
  {
    #keys: '3[413988.0.1348175623][413988.0.1348175622][413988.0.1348175624]'
    Cardinality: '1toN'
    ObjectDefinition: AssemblyOnlinePlanRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide AssemblyOnlinePlanRow
  {
    #keys: '3[413988.0.1348175626][413988.0.1348175625][413988.0.1348175627]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlinePlanCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_AssemblyOnlinePlanRow_MacroPlan_MacroPlan_AssemblyOnlinePlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlinePlanRow_MacroPlan_MacroPlan_AssemblyOnlinePlanRow
{
  #keys: '1[413988.0.1348175608]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1348175610][413988.0.1348175609][413988.0.1348175611]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlinePlanRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide AssemblyOnlinePlanRow
  {
    #keys: '3[413988.0.1348175613][413988.0.1348175612][413988.0.1348175614]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_AssemblyOnlineQuantity_MacroPlan_MacroPlan_AssemblyOnlineQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation AssemblyOnlineQuantity_MacroPlan_MacroPlan_AssemblyOnlineQuantity
{
  #keys: '1[413988.0.1348200027]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1348200029][413988.0.1348200028][413988.0.1348200030]'
    Cardinality: '0to1'
    ObjectDefinition: AssemblyOnlineQuantity
    OwningSide: 'Reference'
  }
  RelationSide.RightSide AssemblyOnlineQuantity
  {
    #keys: '3[413988.0.1348200032][413988.0.1348200031][413988.0.1348200033]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_OfflinePlanColumn_MacroPlan_MacroPlan_OfflinePlanColumn.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_OfflinePlanColumn_OfflinePlanTable_OfflinePlanTable_OfflinePlanColu.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: #root
Relation OfflinePlanColumn_OfflinePlanTable_OfflinePlanTable_OfflinePlanColumn
{
  #keys: '1[413988.0.1337732899]'
  DeclarativeSequenceRelationStrategy
  {
    #keys: '13[0.0.0][413988.0.1337732918][413988.0.1337732912][413988.0.1337732919][413988.0.1337732913][413988.0.1337732920][413988.0.1337732914][413988.0.1337732921][413988.0.1337732915][413988.0.1337732922][413988.0.1337732916][413988.0.1337732923][413988.0.1337732917]'
    SequenceElementSuffix: 'Column'
    SequenceSuffix: 'Column'
    SortAttributes:
    [
      DeclarativeSequenceRelationSortAttribute
      {
        #keys: '1[413988.0.1337732928]'
        Attribute: 'ColumnDate'
      }
    ]
  }
  RelationSide.LeftSide OfflinePlanTable
  {
    #keys: '3[413988.0.1337732901][413988.0.1337732900][413988.0.1337732902]'
    Cardinality: '0to1'
    ObjectDefinition: OfflinePlanColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OfflinePlanColumn
  {
    #keys: '3[413988.0.1337732904][413988.0.1337732903][413988.0.1337732905]'
    Cardinality: '1toN'
    ObjectDefinition: OfflinePlanTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_OfflinePlanRow_MacroPlan_MacroPlan_OfflinePlanRow.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_OfflinePlanRow_OfflinePlanTable_OfflinePlanTable_OfflinePlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OfflinePlanRow_OfflinePlanTable_OfflinePlanTable_OfflinePlanRow
{
  #keys: '1[413988.0.1337732881]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide OfflinePlanTable
  {
    #keys: '3[413988.0.1337732883][413988.0.1337732882][413988.0.1337732884]'
    Cardinality: '0to1'
    ObjectDefinition: OfflinePlanRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OfflinePlanRow
  {
    #keys: '3[413988.0.1337732886][413988.0.1337732885][413988.0.1337732887]'
    Cardinality: '1toN'
    ObjectDefinition: OfflinePlanTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_OfflinePlanTable_MacroPlan_MacroPlan_OfflinePlanTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OfflinePlanTable_MacroPlan_MacroPlan_OfflinePlanTable
{
  #keys: '1[413988.0.1337732865]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1337732867][413988.0.1337732866][413988.0.1337732868]'
    Cardinality: '0to1'
    ObjectDefinition: OfflinePlanTable
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OfflinePlanTable
  {
    #keys: '3[413988.0.1337732870][413988.0.1337732869][413988.0.1337732871]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_InventoryWeight.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute InventoryWeight
{
  #keys: '3[413988.0.1348175527][413988.0.1348175526][413988.0.1348175528]'
  Description: '剩余库存 - æœ€å°åº“å­˜'
  ValueType: Real
}
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_ProductionSerialNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionSerialNumber
{
  #keys: '3[413988.0.1348175536][413988.0.1348175535][413988.0.1348175537]'
  ValueType: Number
}
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.0.1348175533][413988.0.1348175532][413988.0.1348175534]'
  ValueType: Real
}
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Shift.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Shift
{
  #keys: '3[413988.0.1348175530][413988.0.1348175529][413988.0.1348175531]'
  Description: '班次'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanCell/Attribute_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Value
{
  #keys: '3[413988.0.1348175524][413988.0.1348175523][413988.0.1348175525]'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Shift.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Shift
}
_Main/BL/Type_AssemblyOnlinePlanCell/DefaultValue_Value.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Value
}
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_Download.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  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_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
Quintiq file version 2.0
#parent: #root
StaticMethod RefreshData (
  MacroPlan macroPlan,
  OfflinePlanTable opt
)
{
  TextBody:
  [*
    macroPlan.AssemblyOnlinePlanRow( relflush );
    macroPlan.AssemblyOnlinePlanColumn( relflush );
    // æ‰¾è£…配线行
    oprs := selectsortedset( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = "Spider Assy Line 1", 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 );
        }
      }
    }
    // å¤„理日历事件
  *]
}
_Main/BL/Type_AssemblyOnlinePlanCell/_ROOT_Type_AssemblyOnlinePlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type AssemblyOnlinePlanCell
{
  #keys: '5[413988.0.1348175520][413988.0.1348175518][0.0.0][413988.0.1348175519][413988.0.1348175521]'
  BaseType: Object
  StructuredName: 'AssemblyOnlinePlanCells'
}
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnDate
{
  #keys: '3[413988.0.1348175542][413988.0.1348175541][413988.0.1348175543]'
  ValueType: Date
}
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnIndex.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnIndex
{
  #keys: '3[413988.0.1348175545][413988.0.1348175544][413988.0.1348175546]'
  ValueType: Number
}
_Main/BL/Type_AssemblyOnlinePlanColumn/Attribute_ColumnName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ColumnName
{
  #keys: '3[413988.0.1348175548][413988.0.1348175547][413988.0.1348175549]'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanColumn/DefaultValue_ColumnName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ColumnName
}
_Main/BL/Type_AssemblyOnlinePlanColumn/Function_CalcColumnName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcColumnName
{
  TextBody:
  [*
    // lihongji Jun-27-2024 (created)
    value := ifexpr( this.ColumnDate() < this.MacroPlan().StartOfPlanning().Date(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
    this.ColumnName( value );
  *]
}
_Main/BL/Type_AssemblyOnlinePlanColumn/_ROOT_Type_AssemblyOnlinePlanColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type AssemblyOnlinePlanColumn
{
  #keys: '5[413988.0.1348175510][413988.0.1348175508][0.0.0][413988.0.1348175509][413988.0.1348175511]'
  BaseType: Object
  StructuredName: 'AssemblyOnlinePlanColumns'
}
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[413988.0.1348175641][413988.0.1348175640][413988.0.1348175642]'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionLine
{
  #keys: '3[413988.0.1348175644][413988.0.1348175643][413988.0.1348175645]'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_RowNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute RowNr
{
  #keys: '3[413988.0.1348175635][413988.0.1348175634][413988.0.1348175636]'
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanRow/Attribute_Type.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Attribute Type
{
  #keys: '3[413988.0.1348175638][413988.0.1348175637][413988.0.1348175639]'
  Description:
  [*
    äº§çº¿åè¡Œ    ï¼š0
    Quantity行:1
    Order行     ï¼š2
    åˆè®¡è¡Œ        ï¼š3
    ç­æ¬¡è¡Œ        ï¼š4
  *]
  ValueType: String
}
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ProductID
}
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ProductionLine
}
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_RowNr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: RowNr
}
_Main/BL/Type_AssemblyOnlinePlanRow/DefaultValue_Type.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Type
}
_Main/BL/Type_AssemblyOnlinePlanRow/_ROOT_Type_AssemblyOnlinePlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type AssemblyOnlinePlanRow
{
  #keys: '5[413988.0.1348175515][413988.0.1348175513][0.0.0][413988.0.1348175514][413988.0.1348175516]'
  BaseType: Object
  StructuredName: 'AssemblyOnlinePlanRows'
}
_Main/BL/Type_AssemblyOnlineQuantity/Attribute_CCMoMo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CCMoMo
{
  #keys: '3[413988.0.1348200056][413988.0.1348200055][413988.0.1348200057]'
  ValueType: Number
}
_Main/BL/Type_AssemblyOnlineQuantity/Attribute_DLMoMo.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute DLMoMo
{
  #keys: '3[413988.0.1348200046][413988.0.1348200045][413988.0.1348200047]'
  ValueType: Number
}
_Main/BL/Type_AssemblyOnlineQuantity/_ROOT_Type_AssemblyOnlineQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type AssemblyOnlineQuantity
{
  #keys: '5[413988.0.1348200024][413988.0.1348200022][0.0.0][413988.0.1348200023][413988.0.1348200025]'
  BaseType: Object
  StructuredName: 'AssemblyOnlineQuantitys'
}
_Main/BL/Type_OfflinePlanCell/Attribute_InventoryWeight.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute InventoryWeight
{
  #keys: '3[413988.0.1322880151][413988.0.1322880150][413988.0.1322880152]'
  Description: '剩余库存 - æœ€å°åº“å­˜'
  ValueType: Real
}
_Main/BL/Type_OfflinePlanCell/Attribute_ProductionSerialNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionSerialNumber
{
  #keys: '3[413988.0.1322244634][413988.0.1322244633][413988.0.1322244635]'
  ValueType: Number
}
_Main/BL/Type_OfflinePlanCell/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.0.1313380008][413988.0.1313380007][413988.0.1313380009]'
  ValueType: Real
}
_Main/BL/Type_OfflinePlanCell/Method_FindType2.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
Method FindType (
  String type,
  String pl
) as Boolean
{
  TextBody: 'return this.OfflinePlanRow().Type() = type and this.OfflinePlanRow().ProductionLine() = pl and this.Quantity() > 0.0;'
}
_Main/BL/Type_OfflinePlanCell/StaticMethod_Download.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  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 );
    opt  := maxselect( macroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
    opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
    oprs := selectsortedset( opt, OfflinePlanRow, tempOPR, true, tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
    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, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow() = 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_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -6,48 +6,51 @@
{
  TextBody:
  [*
    macroPlan.OfflinePlanRow( relflush );
    macroPlan.OfflinePlanColumn( relflush );
    macroPlan.OfflinePlanTable( relflush );
    opt := macroPlan.OfflinePlanTable( relnew, SaveDateTime := DateTime::ActualTime() );
    
    // ç”Ÿæˆä¸‹çº¿è®¡åˆ’表
    traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime() and u.Name() = "ZP4-M3" ) {
    traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime() /*and u.Name() = "Spider Assy Line 1"*/ ) {
      // åˆ›å»ºäº§çº¿è¡Œ
      macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "", Type := "0" );
      opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "", Type := "0" );
      
      traverse ( u, Operation, o ) {
        traverse ( o, PeriodTaskOperation.NewSupply, ns ) {
          // æ‰¾è¡Œ
          oprQuantity := OfflinePlanRow::FindOfflinePlanRowTypeIndex( u.ID(), ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), "1" );
          oprOrder    := OfflinePlanRow::FindOfflinePlanRowTypeIndex( u.ID(), ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), "2" );
          oprQuantity := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = u.ID() and tempOPR.ProductID() = ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID() and tempOPR.Type() = "1" );
          oprOrder    := select( opt, OfflinePlanRow, tempOPR, tempOPR.ProductionLine() = u.ID() and tempOPR.ProductID() = ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID() and tempOPR.Type() = "2" );
          if ( isnull( oprQuantity ) and isnull( oprOrder ) ) {
            oprQuantity := macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "1" );
            oprOrder    := macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "2" );
            oprQuantity := opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "1" );
            oprOrder    := opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := ns.AsProductionSupply().ProductInStockingPoint_MP().ProductID(), Type := "2" );
          }
          
          // æ‰¾åˆ—
          opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( ns.Start().Date() );
          opc := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnDate() = ns.Start().Date() );
          if ( isnull( opc ) ) {
            opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := ns.Start().Date() );
            opc := opt.OfflinePlanColumn( relnew, ColumnDate := ns.Start().Date() );
          }
          
          // èµ‹å€¼å•元格
          cellQuantity := opc.OfflinePlanCell( relnew, Value := [String]ns.Quantity().Round( 0 ), Shift := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern().Name() );
          cellQuantity := opc.OfflinePlanCell( relnew, Value := [String]ns.Quantity().Round( 0 ), Shift := ns.PeriodTask_MP().UnitPeriod().astype( UnitPeriodTimeBase ).ShiftPattern().Name(), Quantity := ns.Quantity() );
          cellQuantity.OfflinePlanRow( relset, oprQuantity );
          cellOrder := opc.OfflinePlanCell( relnew, Value := "单号" );
          cellOrder := opc.OfflinePlanCell( relnew, Value := "单号" + [String]ns.Quantity().Round( 0 ) + "_" + [String]( ns.ProductInStockingPointInPeriodPlanningLeaf().InventoryLevelEnd() - ns.ProductInStockingPointInPeriodPlanningLeaf().MinInventoryLevel() ),
                                            Quantity := ns.Quantity(),
                                            InventoryWeight := ns.ProductInStockingPointInPeriodPlanningLeaf().InventoryLevelEnd() - ns.ProductInStockingPointInPeriodPlanningLeaf().MinInventoryLevel() );
          cellOrder.OfflinePlanRow( relset, oprOrder );
        }
      }
      
      // åˆ›å»ºæ€»é‡è¡Œ
      macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "3" );
      opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "3" );
      // åˆ›å»ºç­æ¬¡è¡Œ
      macroPlan.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "4" );
      opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "Z", Type := "4" );
    }
    
    // åˆ›å»ºäº§å“åˆ—&类型列
    productOPC := macroPlan.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 );
    typeOPC    := macroPlan.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 );
    traverse ( macroPlan, OfflinePlanRow, opr ) {
    productOPC := opt.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 );
    typeOPC    := opt.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 );
    traverse ( opt, OfflinePlanRow, opr ) {
      if ( opr.Type() = "0" ) {
        productLineCell := productOPC.OfflinePlanCell( relnew, Value := opr.ProductionLine() );
        productLineCell.OfflinePlanRow( relset, opr );
@@ -71,9 +74,9 @@
    }
    
    // è¡¥å…¨æ€»é‡å’Œç­æ¬¡
    totalOPRs := selectset( macroPlan, OfflinePlanRow, tempOPR, tempOPR.Type() = "3" );
    shiftOPRs := selectset( macroPlan, OfflinePlanRow, tempOPR, tempOPR.Type() = "4" );
    traverse ( macroPlan, OfflinePlanColumn, opc, opc.OfflinePlanCell( relsize ) > 0 and opc.ColumnDate() >= macroPlan.StartOfPlanning().Date() ) {
    totalOPRs := selectset( opt, OfflinePlanRow, tempOPR, tempOPR.Type() = "3" );
    shiftOPRs := selectset( opt, OfflinePlanRow, tempOPR, tempOPR.Type() = "4" );
    traverse ( opt, OfflinePlanColumn, opc, opc.OfflinePlanCell( relsize ) > 0 and opc.ColumnDate() >= macroPlan.StartOfPlanning().Date() ) {
      traverse ( totalOPRs, Elements, totalOPR ) {
        total     := sum( opc, OfflinePlanCell, tempOPC, tempOPC.OfflinePlanRow().ProductionLine() = totalOPR.ProductionLine() and tempOPC.OfflinePlanRow().Type() = "1", [Real]tempOPC.Value() );
        totalCell := opc.OfflinePlanCell( relnew, Value := [String]total );
@@ -93,11 +96,67 @@
    indexDate := macroPlan.StartOfPlanning().Date();
    endDate   := Date::Construct( indexDate.Year(), 12, 31 );
    while ( indexDate <= endDate ) {
      opc := OfflinePlanColumn::FindOfflinePlanColumnTypeIndex( indexDate );
      opc := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnDate() = indexDate );
      if ( isnull( opc ) ) {
        opc := macroPlan.OfflinePlanColumn( relnew, ColumnDate := indexDate );
        opc := opt.OfflinePlanColumn( relnew, ColumnDate := indexDate );
      }
      indexDate := indexDate + 1;
    }
    Transaction::Transaction().PropagateAll();
    // è®¾ç½®ç”Ÿäº§é¡ºåº
    productionLines := selectuniquevalues( opt, OfflinePlanRow, tempOPR, true, tempOPR.ProductionLine() );
    traverse ( productionLines, Elements, pl ) {
      indexColumn    := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnDate() = macroPlan.StartOfPlanning().Date() );
      previousColumn := indexColumn.PreviousColumn();
      nextColumn     := indexColumn.NextColumn();
      while ( not isnull( indexColumn.NextColumn() ) ) {
        productionSerialNumber := 1;
        opcs                   := selectsortedset( indexColumn, OfflinePlanCell, tempOPC, tempOPC.FindType( "2", pl ), tempOPC.InventoryWeight() );
        if ( opcs.Size() > 0 ) {
          // åˆ¤å®š1
          previousOPC := maxselect( previousColumn, OfflinePlanCell, tempOPC, tempOPC.FindType( "2", pl ), tempOPC.ProductionSerialNumber() );
          if ( isnull( previousOPC ) or indexColumn.ColumnDate() = macroPlan.StartOfPlanning().Date() ) {
            opc := opcs.Element( 0 );
            opc.Value( "#" + productionSerialNumber.Format( "N(LPad0(2))" ) );
            opc.ProductionSerialNumber( productionSerialNumber );
            productionSerialNumber++;
            opcs.Remove( opc );
          } else {
            opc := select( opcs, Elements, tempOPC, tempOPC.OfflinePlanRow().ProductID() = previousOPC.OfflinePlanRow().ProductID() );
            if ( not isnull( opc ) ) {
              opc.Value( "#" + productionSerialNumber.Format( "N(LPad0(2))" ) );
              opc.ProductionSerialNumber( productionSerialNumber );
              productionSerialNumber++;
              opcs.Remove( opc );
            }
          }
          // åˆ¤å®š2
          nextOPCs := selectset( opcs, Elements, tempOPC,
                                 exists( nextColumn, OfflinePlanCell, nextOPC, nextOPC.FindType( "2", pl ) and nextOPC.OfflinePlanRow().ProductID() = tempOPC.OfflinePlanRow().ProductID() ) );
          if ( nextOPCs.Size() = 1 ) {
            opc := nextOPCs.Element( 0 );
            opc.Value( "#" + opcs.Size().Format( "N(LPad0(2))" ) );
            opc.ProductionSerialNumber( opcs.Size() );
            opcs.Remove( opc );
          }
          // åˆ¤å®š3
          traverse ( opcs, Elements, opc ) {
            opc.Value( "#" + productionSerialNumber.Format( "N(LPad0(2))" ) );
            opc.ProductionSerialNumber( productionSerialNumber );
            productionSerialNumber++;
            opcs.Remove( opc );
          }
        }
        indexColumn    := indexColumn.NextColumn();
        previousColumn := indexColumn.PreviousColumn();
        nextColumn     := indexColumn.NextColumn();
      }
    }
  *]
}
_Main/BL/Type_OfflinePlanCell/StaticMethod_SaveAsDraft.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod SaveAsDraft (
  MacroPlan macroPlan,
  OfflinePlanTable opt
) as OfflinePlanTable
{
  TextBody:
  [*
    newTable := opt.DeepCopy().astype( OfflinePlanTable );
    newOPT   := macroPlan.OfflinePlanTable( relinsert, &newTable );
    newOPT.SaveDateTime( DateTime::ActualTime() );
    return newOPT;
  *]
}
_Main/BL/Type_OfflinePlanColumn/Attribute_ColumnDate.qbl
@@ -3,6 +3,5 @@
Attribute ColumnDate
{
  #keys: '3[413988.0.1295080211][413988.0.1295080210][413988.0.1295080212]'
  IsReadOnly: true
  ValueType: Date
}
_Main/BL/Type_OfflinePlanColumn/Function_CalcColumnName.qbl
@@ -6,7 +6,7 @@
  [*
    // lihongji Jun-27-2024 (created)
    
    value := ifexpr( this.ColumnDate() < this.MacroPlan().StartOfPlanning().Date(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
    value := ifexpr( this.ColumnDate() < this.OfflinePlanTable().MacroPlan().StartOfPlanning().Date(), "", this.ColumnDate().Format( "Y/M2/D2" ) );
    
    this.ColumnName( value );
  *]
_Main/BL/Type_OfflinePlanColumn/TypeIndex_OfflinePlanColumnTypeIndex.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_OfflinePlanRow/Attribute_ProductID.qbl
@@ -3,6 +3,5 @@
Attribute ProductID
{
  #keys: '3[413988.0.1296697032][413988.0.1296697031][413988.0.1296697033]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_OfflinePlanRow/Attribute_ProductionLine.qbl
@@ -3,6 +3,5 @@
Attribute ProductionLine
{
  #keys: '3[413988.0.1296697022][413988.0.1296697021][413988.0.1296697023]'
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_OfflinePlanRow/Attribute_Type.qbl
@@ -11,6 +11,5 @@
    åˆè®¡è¡Œ        ï¼š3
    ç­æ¬¡è¡Œ        ï¼š4
  *]
  IsReadOnly: true
  ValueType: String
}
_Main/BL/Type_OfflinePlanRow/TypeIndex_OfflinePlanRowTypeIndex.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_OfflinePlanTable/Attribute_SaveDateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute SaveDateTime
{
  #keys: '3[413988.0.1337732856][413988.0.1337732855][413988.0.1337732857]'
  ValueType: DateTime
}
_Main/BL/Type_OfflinePlanTable/_ROOT_Type_OfflinePlanTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type OfflinePlanTable
{
  #keys: '5[413988.0.1337732852][413988.0.1337732850][0.0.0][413988.0.1337732851][413988.0.1337732853]'
  BaseType: Object
  StructuredName: 'OfflinePlanTables'
}
_Main/BL/Type_TransferPlanCell/StaticMethod_Download.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Download (
  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 );
    // ç¬¬ä¸€åˆ—(名称)
    tprs        := selectsortedset( macroPlan, TransferPlanRow, tempTPR, true, tempTPR.SourceStockpoingPointID(), tempTPR.TargetStockpoingPointID(), tempTPR.ProductID() );
    firstColumn := xmlDOM.CreateElement( "column" );
    firstName   := xmlDOM.CreateElement( "name" );
    firstType   := xmlDOM.CreateElement( "type" );
    firstName.TextContent( "" );
    firstType.TextContent( "String" );
    firstColumn.AppendChild( firstName );
    firstColumn.AppendChild( firstType );
    traverse ( tprs, Elements, tpr ) {
      firstCell := xmlDOM.CreateElement( "cell" );
      firstCell.SetAttribute( "value", tpr.Name() );
      firstColumn.AppendChild( firstCell );
    }
    tableElement.AppendChild( firstColumn );
    tpcs := selectsortedset( macroPlan, TransferPlanColumn, tempTPC, true, tempTPC.ColumnDate() );
    traverse ( tpcs, Elements, tpc ) {
      column := xmlDOM.CreateElement( "column" );
      name   := xmlDOM.CreateElement( "name" );
      type   := xmlDOM.CreateElement( "type" );
      name.TextContent( tpc.ColumnName() );
      type.TextContent( /*ifexpr( tpc.ColumnDate().IsMinInfinity(), "String", "Number" )*/ "String" );
      column.AppendChild( name );
      column.AppendChild( type );
      traverse ( tprs, Elements, tpr ) {
        c    := select( tpc, TransferPlanCell, tempTPC, tempTPC.TransferPlanRow() = tpr );
        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/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -22,7 +22,7 @@
      BaseType: 'WebButton'
      Properties:
      [
        Taborder: 2
        Taborder: 3
      ]
    }
    Component bOfflinePlan
@@ -36,6 +36,18 @@
        Taborder: 1
      ]
    }
    Component bAssemblyOnlinePlan
    {
      #keys: '[413988.0.1351375850]'
      BaseType: 'WebButton'
      Properties:
      [
        Description: 'AssemblyOnlinePlan'
        Image: 'PALM_TREE'
        Label: 'Assembly online plan'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bAssemblyOnlinePlan_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: abgSecondDevelopmentPlan/bAssemblyOnlinePlan
Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bAssemblyOnlinePlan_OnClick
{
  #keys: '[413988.0.1351376064]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      ApplicationScope.ViewManager().ResetUserViewById( "AssemblyOnlinePlan", true);
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[413988.0.1353873495]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[413988.0.1353873499]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[413988.0.1353873501]'
      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_DialogAssemblyOnlineQuantity/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[413988.0.1353873493]'
  BaseType: 'WebPanel'
  Children:
  [
    Component npDL
    {
      #keys: '[413988.0.1352730618]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'MacroPlan.AssemblyOnlineQuantity.DLMoMo'
        Label: 'DL-MoMo (pcs)'
        Taborder: 0
      ]
    }
    Component npCC
    {
      #keys: '[413988.0.1353963744]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'MacroPlan.AssemblyOnlineQuantity.CCMoMo'
        Label: 'CC-MoMo (pcs)'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/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.1353873505]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/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.1353873504]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ApplyChanges();
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogAssemblyOnlineQuantity/_ROOT_Component_DialogAssemblyOnlineQuantity.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogAssemblyOnlineQuantity
{
  #keys: '[413988.0.1353873491]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
    Title: 'Assembly Online Quantity'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_MatrixEditor951#480.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditor951 id:MatrixEditor951_480
{
  #keys: '[413988.0.1351212727]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell491
    {
      #keys: '[413988.0.1351212728]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor548
        {
          #keys: '[413988.0.1351212729]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'AssemblyOnlinePlanColumn.AssemblyOnlinePlanCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Value'
        Column: 'AssemblyOnlinePlanColumn'
        Row: 'AssemblyOnlinePlanRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows271
    {
      #keys: '[413988.0.1351212730]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor869
        {
          #keys: '[413988.0.1351212731]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'AssemblyOnlinePlanRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'RowNr'
        SortCriteria: 'ProductionLine;ProductID;Type'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns844
    {
      #keys: '[413988.0.1351212732]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor259
        {
          #keys: '[413988.0.1351212733]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'AssemblyOnlinePlanColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'ColumnName'
        SortCriteria: 'ColumnDate'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage250_1
    #child: matrixeditorContextMenu204_1
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumns844'
    ContextMenu: 'matrixeditorContextMenu204'
    Rows: 'MatrixEditorRows271'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixEditorActionBarPage250#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage250 id:matrixEditorActionBarPage250_1
{
  #keys: '[413988.0.1351212734]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_matrixeditorContextMenu204#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu204 id:matrixeditorContextMenu204_1
{
  #keys: '[413988.0.1351212735]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pContent
{
  #keys: '[413988.0.1351212599]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor951_480
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Component_pHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component pHeader
{
  #keys: '[413988.0.1351212581]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bDownload
    {
      #keys: '[413988.0.1351212648]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Download'
        Taborder: 1
      ]
    }
    Component bOnlineQuantity
    {
      #keys: '[413988.0.1351212668]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Online quantity'
        Taborder: 2
      ]
    }
    Component bRefresh id:bRefresh_187
    {
      #keys: '[413988.0.1351403370]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Refresh'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bDownload_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader/bDownload
Response OnClick () id:Response_pHeader_bDownload_OnClick
{
  #keys: '[413988.0.1351313883]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := AssemblyOnlinePlanCell::Download( MacroPlan );
      Application.Download( "Assembly online plan.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/Response_pHeader_bOnlineQuantity_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
Quintiq file version 2.0
#parent: pHeader/bOnlineQuantity
Response OnClick () id:Response_pHeader_bOnlineQuantity_OnClick
{
  #keys: '[413988.0.1352760396]'
  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_FormAssemblyOnlinePlan/Response_pHeader_bRefresh_OnClick#774.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: pHeader/bRefresh_187
Response OnClick () id:Response_pHeader_bRefresh_OnClick_774
{
  #keys: '[413988.0.1351403369]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      opt := maxselect( MacroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
      AssemblyOnlinePlanCell::RefreshData( MacroPlan, opt );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormAssemblyOnlinePlan/_ROOT_Component_FormAssemblyOnlinePlan.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormAssemblyOnlinePlan
{
  #keys: '[413988.0.1351212562]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pHeader
    #child: pContent
  ]
  Properties:
  [
    Title: 'Assembly online plan'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_MatrixEditor951.def
@@ -17,8 +17,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            DataType: 'OfflinePlanTable'
            Source: 'dhOfflinePlanTable'
            Taborder: 0
            Transformation: 'OfflinePlanColumn.OfflinePlanCell'
          ]
@@ -44,8 +44,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            DataType: 'OfflinePlanTable'
            Source: 'dhOfflinePlanTable'
            Taborder: 0
            Transformation: 'OfflinePlanRow'
          ]
@@ -70,8 +70,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            DataType: 'OfflinePlanTable'
            Source: 'dhOfflinePlanTable'
            Taborder: 0
            Transformation: 'OfflinePlanColumn'
          ]
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Component_pContent#611.def
@@ -6,6 +6,16 @@
  Children:
  [
    #child: MatrixEditor951
    Component dhOfflinePlanTable
    {
      #keys: '[413988.0.1334780926]'
      BaseType: 'WebDataHolder'
      Databinding: 'OfflinePlanTable'
      Properties:
      [
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pContent_dhOfflinePlanTable_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pContent/dhOfflinePlanTable
Response OnCreated () id:Response_pContent_dhOfflinePlanTable_OnCreated
{
  #keys: '[413988.0.1334780966]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      opt := maxselect( MacroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
      this.Data( opt );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bDownload_OnClick.def
@@ -5,8 +5,18 @@
  #keys: '[413988.0.1297973899]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := OfflinePlanCell::Download( MacroPlan );
      Application.Download( "Offline plan.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRefresh_OnClick.def
@@ -14,6 +14,11 @@
    Body:
    [*
      OfflinePlanCell::RefreshOfflinePlan( MacroPlan );
      opt := maxselect( MacroPlan, OfflinePlanTable, tempOPT, true, tempOPT.SaveDateTime() );
      dhOfflinePlanTable.Data( opt );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bRestore_OnClick.def
@@ -5,8 +5,23 @@
  #keys: '[413988.0.1297974069]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      currentOPT := dhOfflinePlanTable.Data();
      targetOPT  := maxselect( MacroPlan, OfflinePlanTable, tempOPT, tempOPT <> currentOPT, tempOPT.SaveDateTime() );
      if ( not isnull( targetOPT ) ) {
        currentOPT.Delete();
        dhOfflinePlanTable.Data( targetOPT );
      }
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlan/Response_pHeader_bSaveAsDraft_OnClick.def
@@ -5,8 +5,19 @@
  #keys: '[413988.0.1297974155]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      opt := OfflinePlanCell::SaveAsDraft( MacroPlan, dhOfflinePlanTable.Data() );
      dhOfflinePlanTable.Data( opt );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Response_pHeader_bDownload_OnClick.def
@@ -5,8 +5,18 @@
  #keys: '[413988.0.1292330526]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := TransferPlanCell::Download( MacroPlan );
      Application.Download( "Transfer plan.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Views/AssemblyOnlinePlan.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormAssemblyOnlinePlan
      {
        title: 'QMacroPlanner::FormAssemblyOnlinePlan'
        shown: true
        componentID: 'QMacroPlanner::FormAssemblyOnlinePlan'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 14
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormAssemblyOnlinePlan_pHeader
          {
            sizeRatio: 1
          }
          FormAssemblyOnlinePlan_pContent
          {
            sizeRatio: 1
          }
          FormAssemblyOnlinePlan_MatrixEditor951
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 28
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 173
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormAssemblyOnlinePlan.MatrixEditor951'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_Value
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'Value'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'ColumnDate'"
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'ProductionLine';datamember:'ProductID';datamember:'Type'"
                  }
                }
              }
            }
          }
        }
      }
      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: 'HANDHELD_DEVICE'
    description: ''
  }
  formatversion: 2
  id: 'AssemblyOnlinePlan'
  name: 'AssemblyOnlinePlan'
  isglobal: false
  isroot: true
}
_Main/UI/MacroPlannerWebApp/Views/OfflinePlan.vw
@@ -33,7 +33,7 @@
            totalHeaderWidth: 36
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            columnWidth: 177
            horizontalGrid: true
            verticalGrid: true
            backendState
_var/_Main/ProjSettings/EditorTC/Views/³µµÀÕû°à·ÖÎö_[413988.0.1301140601].vw
@@ -17,7 +17,7 @@
  CREATIONUSER 'quintiq/lihongji'
  UPDATEDATETIME '2024-06-28T13:59:54'
  UPDATEUSER 'quintiq/lihongji'
  LASTACCESSDATE '2024-06-28'
  LASTACCESSDATE '2024-07-09'
  VIEWSCOPE 0
}
AUTHORIZATIONS
@@ -43,13 +43,13 @@
INFOOBJECT
{
  KEY [892.10.659695]
  OBJECTTYPE Application // appEditor
  OBJECTTYPE Application
  INFOOBJECTS
  {
   INFOOBJECT
   {
    KEY [892.10.659696]
    OBJECTTYPE Frame // Frame
    OBJECTTYPE Frame
    CONTENTS
    {
     State := maximized
@@ -61,7 +61,7 @@
     INFOOBJECT
     {
      KEY [103784.990.795900613]
      OBJECTTYPE ValueHolder // vhSearchHistory
      OBJECTTYPE ValueHolder
      CONTENTS
      {
       Value ''
@@ -70,7 +70,7 @@
     INFOOBJECT
     {
      KEY [10786.1.820220316]
      OBJECTTYPE ValueHolder // vhLoadingErrCount
      OBJECTTYPE ValueHolder
      CONTENTS
      {
       Value '0'
@@ -79,7 +79,7 @@
     INFOOBJECT
     {
      KEY [10786.1.820229990]
      OBJECTTYPE ValueHolder // vhLoadReason
      OBJECTTYPE ValueHolder
      CONTENTS
      {
       Value 'Startup'
@@ -88,7 +88,7 @@
     INFOOBJECT
     {
      KEY [10786.1.821405088]
      OBJECTTYPE ValueHolder // vhWriteErrorCount
      OBJECTTYPE ValueHolder
      CONTENTS
      {
       Value '0'
@@ -97,13 +97,10 @@
     INFOOBJECT
     {
      KEY [10786.2.342765638]
      OBJECTTYPE ValueHolder // vhGlobals
      OBJECTTYPE ValueHolder
      CONTENTS
      {
       Value ''
      }
      BASEINFOOBJECTS
      {
      }
     }
     INFOOBJECT
@@ -112,7 +109,7 @@
      SINGLEINSTANCE false
      ID 'Type Details'
      PARENTKEY [892.10.659696]
      OBJECTTYPE Form // frmObjectDefinitionBrowser
      OBJECTTYPE Form
      CREATETYPE frmObjectDefinitionBrowser
      CONTENTS
      {
@@ -120,15 +117,12 @@
       (485,0,400,912)
       DockableLocation := Station[MAIN]State[NORM]TreePath[L0.2;B0.5727;]TabIdx[0]Selection[FRONT]
      }
      BASEINFOOBJECTS
      {
      }
      INFOOBJECTS
      {
       INFOOBJECT
       {
        KEY [121142.0.500922030]
        OBJECTTYPE GUIDataSetLevel // dslTypes
        OBJECTTYPE GUIDataSetLevel
        CONTENTS
        {
         Columns
@@ -170,7 +164,7 @@
       INFOOBJECT
       {
        KEY [121142.0.500923128]
        OBJECTTYPE List // lstObjectDefinitionBrowser
        OBJECTTYPE List
        CONTENTS
        {
         Quantorrow := false
@@ -180,7 +174,7 @@
         INFOOBJECT
         {
          KEY [121142.0.500923177]
          OBJECTTYPE GUIDataSetLevel // dslElements
          OBJECTTYPE GUIDataSetLevel
          CONTENTS
          {
           Columns
@@ -224,7 +218,7 @@
           INFOOBJECT
           {
            KEY [121142.0.500923178]
            OBJECTTYPE GUIDataSetLevel // dslOverrides
            OBJECTTYPE GUIDataSetLevel
            CONTENTS
            {
             Columns
@@ -261,7 +255,7 @@
      SINGLEINSTANCE false
      ID 'Types per Module'
      PARENTKEY [892.10.659696]
      OBJECTTYPE Form // frmTypesByModule
      OBJECTTYPE Form
      CREATETYPE frmTypesByModule
      CONTENTS
      {
@@ -274,7 +268,7 @@
       BASEINFOOBJECT
       {
        KEY [136402.0.98084624]
        OBJECTTYPE GUIComponent // frmTypesByModule
        OBJECTTYPE GUIComponent
        COMPONENTDATA
        {
         [136402.0.98084624]:[103784.990.728734692]:[892.10.659816]:[514.0.129466]:[892.10.659835] STR 'true'
@@ -286,7 +280,7 @@
       INFOOBJECT
       {
        KEY [121142.0.1211769996]
        OBJECTTYPE GUIDataSetLevel // GUIDataSetLevel776
        OBJECTTYPE GUIDataSetLevel
        CONTENTS
        {
         Columns
@@ -315,7 +309,7 @@
       INFOOBJECT
       {
        KEY [103784.990.728734692]
        OBJECTTYPE List // ListTypes
        OBJECTTYPE List
        CONTENTS
        {
         Quantorrow := false
@@ -325,7 +319,7 @@
         INFOOBJECT
         {
          KEY [101180.2.890701323]
          OBJECTTYPE ValueHolder // ValueHolder
          OBJECTTYPE ValueHolder
          CONTENTS
          {
           Value 'false'
@@ -334,7 +328,7 @@
         INFOOBJECT
         {
          KEY [10786.2.342808981]
          OBJECTTYPE ValueHolder // vhGlobals
          OBJECTTYPE ValueHolder
          CONTENTS
          {
           Value ''
@@ -343,7 +337,7 @@
         INFOOBJECT
         {
          KEY [892.10.659838]
          OBJECTTYPE GUIDataSetLevel // dslTypes
          OBJECTTYPE GUIDataSetLevel
          CONTENTS
          {
           Columns
@@ -377,7 +371,7 @@
           INFOOBJECT
           {
            KEY [136402.0.98091406]
            OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelTypes
            OBJECTTYPE GUIDataSetLevel
            CONTENTS
            {
             Columns
@@ -410,7 +404,7 @@
             INFOOBJECT
             {
              KEY [135566.0.318964952]
              OBJECTTYPE GUIDataSetLevel // GUIDataSetLevelSpecializations
              OBJECTTYPE GUIDataSetLevel
              CONTENTS
              {
               Columns
@@ -451,7 +445,7 @@
      SINGLEINSTANCE false
      ID 'Model Overview'
      PARENTKEY [892.10.659696]
      OBJECTTYPE Form // frmModelOverview
      OBJECTTYPE Form
      CREATETYPE frmModelOverview
      CONTENTS
      {
@@ -464,7 +458,7 @@
       BASEINFOOBJECT
       {
        KEY [121142.0.36340892]
        OBJECTTYPE GUIContainerComponent // frmModelOverview
        OBJECTTYPE GUIContainerComponent
        COMPONENTDATA
        {
         [121142.0.36340892]:[121142.0.37512339]:[121142.0.40573788] STR 'PeriodTaskOperation:Unit:PeriodTaskLaneLeg:Operation:MacroPlan:Lane:PeriodTask_MP:NewSupply:LaneLeg:UnitPeriod:DependentDemand:ProductInTrip:Trip#601:266:-40:657:238:266:189:211:497:17:178:464:513#168:437:163:276:350:529:165:274:436:277:59:59:244#219:54:197:109:109:54:153:109:87:120:175:153:54#26:26:26:26:26:26:26:26:26:26:26:26:26'
@@ -477,14 +471,11 @@
       INFOOBJECT
       {
        KEY [121142.0.37512339]
        OBJECTTYPE CustomDrawComponent // customDraw
        OBJECTTYPE CustomDrawComponent
        CONTENTS
        {
         ZoomX 1.331
         ZoomY 1.331
        }
        INFOOBJECTS
        {
        }
       }
      }