lihongji
2024-10-24 12399520daf56b0502e7005cd8dd9ebd73935c4f
料架总数量设置优化
已添加83个文件
已修改1个文件
1993 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_MaterialRackColumn_MacroPlan_MacroPlan_MaterialRackColumn.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackCustomCell_MaterialRackCustomCell_Ma.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackProportionCell_MaterialRackProportio.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackTotalCell_MaterialRackTotalCell_Mate.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackCustomRow_MacroPlan_MacroPlan_MaterialRackCustomRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackCustomRow_MaterialRackCustomCell_MaterialRackCustomCell.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackProportionRow_MacroPlan_MacroPlan_MaterialRackProportio.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackProportionRow_MaterialRackProportionCell_MaterialRackPr.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackTotalRow_MacroPlan_MacroPlan_MaterialRackTotalRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackTotalRow_MaterialRackTotalCell_MaterialRackTotalCell_Ma.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomCell/Attribute_Quantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomCell/StaticMethod_CreateDate.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Export.qbl 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Import.qbl 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomCell/_ROOT_Type_MaterialRackCustomCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomRow/Attribute_Generation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomRow/Attribute_MLB_MQB.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Generation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_MLB_MQB.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackCustomRow/_ROOT_Type_MaterialRackCustomRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionCell/Attribute_Quantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionCell/StaticMethod_CreateDate.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Export.qbl 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Import.qbl 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionCell/_ROOT_Type_MaterialRackProportionCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionRow/Attribute_Generation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionRow/Attribute_MLB_MQB.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Generation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_MLB_MQB.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackProportionRow/_ROOT_Type_MaterialRackProportionRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalCell/Attribute_Quantity.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalCell/StaticMethod_CreateDate.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Export.qbl 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Import.qbl 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalCell/_ROOT_Type_MaterialRackTotalCell.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalColumn/Attribute_Month.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalColumn/Attribute_StartDate.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalColumn/StaticMethod_CreateDate.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalColumn/_ROOT_Type_MaterialRackColumn.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalRow/Attribute_Generation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalRow/Attribute_MLB_MQB.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Generation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_MLB_MQB.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MaterialRackTotalRow/_ROOT_Type_MaterialRackTotalRow.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/Sys/Repr/Global/MaterialRackColumn.qrp 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_mMaterialRackTota.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_MatrixEditor240.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixEditorActionBarPage816.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixeditorContextMenu134.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pContent.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pHeader.def 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bGenerate_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bImport_OnClick.def 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/_ROOT_Component_FormMaterialRackCustom.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_MatrixEditor240#88.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixEditorActionBarPage816#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixeditorContextMenu134#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pContent#338.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pHeader#791.def 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bGenerate_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bImport_OnClick.def 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/_ROOT_Component_FormMaterialRackProportion.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_MatrixEditor240.def 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixEditorActionBarPage816.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixeditorContextMenu134.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pContent.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pHeader.def 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bGenerate_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bImport_OnClick.def 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/_ROOT_Component_FormMaterialRackTotal.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/MaterialRackTotalSetting.vw 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MaterialRackColumn_MacroPlan_MacroPlan_MaterialRackColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackColumn_MacroPlan_MacroPlan_MaterialRackColumn
{
  #keys: '1[413988.1.14566916]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.1.14566918][413988.1.14566917][413988.1.14566919]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MaterialRackColumn
  {
    #keys: '3[413988.1.14566921][413988.1.14566920][413988.1.14566922]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackCustomCell_MaterialRackCustomCell_Ma.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackColumn_MaterialRackCustomCell_MaterialRackCustomCell_MaterialRackColumn
{
  #keys: '1[413988.1.14566935]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MaterialRackCustomCell
  {
    #keys: '3[413988.1.14566937][413988.1.14566936][413988.1.14566938]'
    Cardinality: '1toN'
    ObjectDefinition: MaterialRackColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MaterialRackColumn
  {
    #keys: '3[413988.1.14566940][413988.1.14566939][413988.1.14566941]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackCustomCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackProportionCell_MaterialRackProportio.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackColumn_MaterialRackProportionCell_MaterialRackProportionCell_MaterialRackColumn
{
  #keys: '1[413988.1.14566948]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MaterialRackProportionCell
  {
    #keys: '3[413988.1.14566950][413988.1.14566949][413988.1.14566951]'
    Cardinality: '1toN'
    ObjectDefinition: MaterialRackColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MaterialRackColumn
  {
    #keys: '3[413988.1.14566953][413988.1.14566952][413988.1.14566954]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackProportionCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MaterialRackColumn_MaterialRackTotalCell_MaterialRackTotalCell_Mate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackColumn_MaterialRackTotalCell_MaterialRackTotalCell_MaterialRackColumn
{
  #keys: '1[413988.1.14566964]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MaterialRackTotalCell
  {
    #keys: '3[413988.1.14566966][413988.1.14566965][413988.1.14566967]'
    Cardinality: '1toN'
    ObjectDefinition: MaterialRackColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MaterialRackColumn
  {
    #keys: '3[413988.1.14566969][413988.1.14566968][413988.1.14566970]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackTotalCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MaterialRackCustomRow_MacroPlan_MacroPlan_MaterialRackCustomRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackCustomRow_MacroPlan_MacroPlan_MaterialRackCustomRow
{
  #keys: '1[413988.1.14567062]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.1.14567064][413988.1.14567063][413988.1.14567065]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackCustomRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MaterialRackCustomRow
  {
    #keys: '3[413988.1.14567067][413988.1.14567066][413988.1.14567068]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MaterialRackCustomRow_MaterialRackCustomCell_MaterialRackCustomCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackCustomRow_MaterialRackCustomCell_MaterialRackCustomCell_MaterialRackCustomRow
{
  #keys: '1[413988.1.14567075]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MaterialRackCustomCell
  {
    #keys: '3[413988.1.14567077][413988.1.14567076][413988.1.14567078]'
    Cardinality: '1toN'
    ObjectDefinition: MaterialRackCustomRow
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MaterialRackCustomRow
  {
    #keys: '3[413988.1.14567080][413988.1.14567079][413988.1.14567081]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackCustomCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MaterialRackProportionRow_MacroPlan_MacroPlan_MaterialRackProportio.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackProportionRow_MacroPlan_MacroPlan_MaterialRackProportionRow
{
  #keys: '1[413988.1.14566990]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.1.14566992][413988.1.14566991][413988.1.14566993]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackProportionRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MaterialRackProportionRow
  {
    #keys: '3[413988.1.14566995][413988.1.14566994][413988.1.14566996]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MaterialRackProportionRow_MaterialRackProportionCell_MaterialRackPr.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackProportionRow_MaterialRackProportionCell_MaterialRackProportionCell_MaterialRackProportionRow
{
  #keys: '1[413988.1.14567003]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MaterialRackProportionCell
  {
    #keys: '3[413988.1.14567005][413988.1.14567004][413988.1.14567006]'
    Cardinality: '1toN'
    ObjectDefinition: MaterialRackProportionRow
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MaterialRackProportionRow
  {
    #keys: '3[413988.1.14567008][413988.1.14567007][413988.1.14567009]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackProportionCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MaterialRackTotalRow_MacroPlan_MacroPlan_MaterialRackTotalRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackTotalRow_MacroPlan_MacroPlan_MaterialRackTotalRow
{
  #keys: '1[413988.1.14566875]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.1.14566877][413988.1.14566876][413988.1.14566878]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackTotalRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MaterialRackTotalRow
  {
    #keys: '3[413988.1.14566880][413988.1.14566879][413988.1.14566881]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MaterialRackTotalRow_MaterialRackTotalCell_MaterialRackTotalCell_Ma.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MaterialRackTotalRow_MaterialRackTotalCell_MaterialRackTotalCell_MaterialRackTotalRow
{
  #keys: '1[413988.1.14566888]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MaterialRackTotalCell
  {
    #keys: '3[413988.1.14566890][413988.1.14566889][413988.1.14566891]'
    Cardinality: '1toN'
    ObjectDefinition: MaterialRackTotalRow
    OwningSide: 'Owned'
  }
  RelationSide.RightSide MaterialRackTotalRow
  {
    #keys: '3[413988.1.14566893][413988.1.14566892][413988.1.14566894]'
    Cardinality: '0to1'
    ObjectDefinition: MaterialRackTotalCell
    OwningSide: 'Reference'
  }
}
_Main/BL/Type_MaterialRackCustomCell/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.1.14567048][413988.1.14567047][413988.1.14567049]'
  Description: '数量'
  ValueType: Real
}
_Main/BL/Type_MaterialRackCustomCell/StaticMethod_CreateDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateDate (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    genrations   := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.Generation().TrimBoth() <> "", tempPMP.Generation() );
    mqbmlbs      := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.MQBMLB().TrimBoth() <> "", tempPMP.MQBMLB() );
    traverse ( genrations, Elements, g ) {
      traverse ( mqbmlbs, Elements, m ) {
        mrcr     := select( macroPlan, MaterialRackCustomRow, tempMRCR, tempMRCR.Generation() = g and tempMRCR.MLB_MQB() = m );
        if ( isnull( mrcr ) ) {
          mrcr   := macroPlan.MaterialRackCustomRow( relnew, Generation := g, MLB_MQB := m );
          traverse ( macroPlan, MaterialRackColumn, mrc ) {
            cell := mrcr.MaterialRackCustomCell( relnew, Quantity := 0 );
            cell.MaterialRackColumn( relset, mrc );
          }
        }
      }
    }
  *]
}
_Main/BL/Type_MaterialRackCustomCell/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  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 );
    // ç¬¬ä¸€åˆ—(名称)
    mrcrs       := selectsortedset( macroPlan, MaterialRackCustomRow, tempMRCR, true, tempMRCR.Name() );
    firstColumn := xmlDOM.CreateElement( "column" );
    firstName   := xmlDOM.CreateElement( "name" );
    firstType   := xmlDOM.CreateElement( "type" );
    firstName.TextContent( "*" );
    firstType.TextContent( "String" );
    firstColumn.AppendChild( firstName );
    firstColumn.AppendChild( firstType );
    traverse ( mrcrs, Elements, mrcr ) {
      firstCell := xmlDOM.CreateElement( "cell" );
      firstCell.SetAttribute( "value", mrcr.Name() );
      firstColumn.AppendChild( firstCell );
    }
    tableElement.AppendChild( firstColumn );
    // æ—¶é—´åˆ—
    mrcs         := selectsortedset( macroPlan, MaterialRackColumn, tempMRC, true, tempMRC.Month() );
    traverse ( mrcs, Elements, mrc ) {
      cellColumn := xmlDOM.CreateElement( "column" );
      cellName   := xmlDOM.CreateElement( "name" );
      cellType   := xmlDOM.CreateElement( "type" );
      cellName.TextContent( [String]mrc.Month() );
      cellType.TextContent( "Real" );
      cellColumn.AppendChild( cellName );
      cellColumn.AppendChild( cellType );
      cells := selectsortedset( mrc, MaterialRackCustomCell, tempMRCCell, true, tempMRCCell.MaterialRackCustomRow().Name() );
      traverse ( cells, Elements, c ) {
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.Quantity() ); // æ–™æž¶æ€»æ•°é‡
        cellColumn.AppendChild( cell );
      }
      tableElement.AppendChild( cellColumn );
    }
    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_MaterialRackCustomCell/StaticMethod_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Import (
  MacroPlan macroPlan,
  GeneralExcelImportAndExportDataTable table
)
{
  TextBody:
  [*
    generation := "";
    mqb_mlb    := "";
    traverse ( table, GeneralExcelImportAndExportDataRow, row ) {
      traverse ( table, GeneralExcelImportAndExportDataColumn, column ) {
        // å•元格值
        cellValue := select( row, GeneralExcelImportAndExportDataCell, tempGEIAEDCell, tempGEIAEDCell.GeneralExcelImportAndExportDataColumn() = column ).Value();
        if ( column.ColumnIndex() = 0 and cellValue <> "" ) {
          generation := guard( cellValue.Tokenize( " " ).Element( 0 ), "" );
          mqb_mlb    := guard( cellValue.Tokenize( " " ).Element( 1 ), "" );
        }
        // æ–™æž¶æ€»æ•°è®¾ç½®åˆ—
        mrc  := select( macroPlan, MaterialRackColumn, tempMRC, tempMRC.Month() = guard( [Number]column.Name(), 0 ) );
        // æ–™æž¶æ€»æ•°è®¾ç½®è¡Œ
        mrcr := select( macroPlan, MaterialRackCustomRow, tempMRCR, tempMRCR.Generation() = generation and tempMRCR.MLB_MQB() = mqb_mlb );
        if ( column.ColumnIndex() > 0 and not isnull( mrc ) and not isnull( mrcr ) ) {
          cell := select( mrcr, MaterialRackCustomCell, tempMRCCell, tempMRCCell.MaterialRackColumn() = mrc );
          cell.Quantity( [Real]cellValue );
        }
      }
    }
  *]
}
_Main/BL/Type_MaterialRackCustomCell/_ROOT_Type_MaterialRackCustomCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MaterialRackCustomCell
{
  #keys: '5[413988.1.14566859][413988.1.14566857][0.0.0][413988.1.14566858][413988.1.14566860]'
  BaseType: Object
  Description: '客户料架数量单元格'
  StructuredName: 'MaterialRackCustomCells'
}
_Main/BL/Type_MaterialRackCustomRow/Attribute_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Generation
{
  #keys: '3[413988.1.14567052][413988.1.14567051][413988.1.14567053]'
  ValueType: String
}
_Main/BL/Type_MaterialRackCustomRow/Attribute_MLB_MQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute MLB_MQB
{
  #keys: '3[413988.1.14567058][413988.1.14567057][413988.1.14567059]'
  ValueType: String
}
_Main/BL/Type_MaterialRackCustomRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[413988.1.14567055][413988.1.14567054][413988.1.14567056]'
  ValueType: String
}
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Generation
}
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_MLB_MQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: MLB_MQB
}
_Main/BL/Type_MaterialRackCustomRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MaterialRackCustomRow/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // lihongji Aug-12-2024 (created)
    value := this.Generation() + ifexpr( this.MLB_MQB() <> "", " " + this.MLB_MQB(), "" );
    this.Name( value );
  *]
}
_Main/BL/Type_MaterialRackCustomRow/_ROOT_Type_MaterialRackCustomRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MaterialRackCustomRow
{
  #keys: '5[413988.1.14566854][413988.1.14566852][0.0.0][413988.1.14566853][413988.1.14566855]'
  BaseType: Object
  Description: '客户库料架数量行'
  StructuredName: 'MaterialRackCustomRows'
}
_Main/BL/Type_MaterialRackProportionCell/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.1.14567042][413988.1.14567041][413988.1.14567043]'
  Description: '数量'
  ValueType: Real
}
_Main/BL/Type_MaterialRackProportionCell/StaticMethod_CreateDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateDate (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    genrations   := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.Generation().TrimBoth() <> "", tempPMP.Generation() );
    mqbmlbs      := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.MQBMLB().TrimBoth() <> "", tempPMP.MQBMLB() );
    traverse ( genrations, Elements, g ) {
      traverse ( mqbmlbs, Elements, m ) {
        mrpr     := select( macroPlan, MaterialRackProportionRow, tempMRPR, tempMRPR.Generation() = g and tempMRPR.MLB_MQB() = m );
        if ( isnull( mrpr ) ) {
          mrpr   := macroPlan.MaterialRackProportionRow( relnew, Generation := g, MLB_MQB := m );
          traverse ( macroPlan, MaterialRackColumn, mrc ) {
            cell := mrpr.MaterialRackProportionCell( relnew, Quantity := 0 );
            cell.MaterialRackColumn( relset, mrc );
          }
        }
      }
    }
  *]
}
_Main/BL/Type_MaterialRackProportionCell/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  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 );
    // ç¬¬ä¸€åˆ—(名称)
    mrprs       := selectsortedset( macroPlan, MaterialRackProportionRow, tempMRPR, true, tempMRPR.Name() );
    firstColumn := xmlDOM.CreateElement( "column" );
    firstName   := xmlDOM.CreateElement( "name" );
    firstType   := xmlDOM.CreateElement( "type" );
    firstName.TextContent( "*" );
    firstType.TextContent( "String" );
    firstColumn.AppendChild( firstName );
    firstColumn.AppendChild( firstType );
    traverse ( mrprs, Elements, mrpr ) {
      firstCell := xmlDOM.CreateElement( "cell" );
      firstCell.SetAttribute( "value", mrpr.Name() );
      firstColumn.AppendChild( firstCell );
    }
    tableElement.AppendChild( firstColumn );
    // æ—¶é—´åˆ—
    mrcs         := selectsortedset( macroPlan, MaterialRackColumn, tempMRC, true, tempMRC.Month() );
    traverse ( mrcs, Elements, mrc ) {
      cellColumn := xmlDOM.CreateElement( "column" );
      cellName   := xmlDOM.CreateElement( "name" );
      cellType   := xmlDOM.CreateElement( "type" );
      cellName.TextContent( [String]mrc.Month() );
      cellType.TextContent( "Real" );
      cellColumn.AppendChild( cellName );
      cellColumn.AppendChild( cellType );
      cells := selectsortedset( mrc, MaterialRackProportionCell, tempMRPCell, true, tempMRPCell.MaterialRackProportionRow().Name() );
      traverse ( cells, Elements, c ) {
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.Quantity() ); // æ–™æž¶æ€»æ•°é‡
        cellColumn.AppendChild( cell );
      }
      tableElement.AppendChild( cellColumn );
    }
    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_MaterialRackProportionCell/StaticMethod_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Import (
  MacroPlan macroPlan,
  GeneralExcelImportAndExportDataTable table
)
{
  TextBody:
  [*
    generation := "";
    mqb_mlb    := "";
    traverse ( table, GeneralExcelImportAndExportDataRow, row ) {
      traverse ( table, GeneralExcelImportAndExportDataColumn, column ) {
        // å•元格值
        cellValue := select( row, GeneralExcelImportAndExportDataCell, tempGEIAEDCell, tempGEIAEDCell.GeneralExcelImportAndExportDataColumn() = column ).Value();
        if ( column.ColumnIndex() = 0 and cellValue <> "" ) {
          generation := guard( cellValue.Tokenize( " " ).Element( 0 ), "" );
          mqb_mlb    := guard( cellValue.Tokenize( " " ).Element( 1 ), "" );
        }
        // æ–™æž¶æ€»æ•°è®¾ç½®åˆ—
        mrc  := select( macroPlan, MaterialRackColumn, tempMRC, tempMRC.Month() = guard( [Number]column.Name(), 0 ) );
        // æ–™æž¶æ€»æ•°è®¾ç½®è¡Œ
        mrpr := select( macroPlan, MaterialRackProportionRow, tempMRPR, tempMRPR.Generation() = generation and tempMRPR.MLB_MQB() = mqb_mlb );
        if ( column.ColumnIndex() > 0 and not isnull( mrc ) and not isnull( mrpr ) ) {
          cell := select( mrpr, MaterialRackProportionCell, tempMRPCell, tempMRPCell.MaterialRackColumn() = mrc );
          cell.Quantity( [Real]cellValue );
        }
      }
    }
  *]
}
_Main/BL/Type_MaterialRackProportionCell/_ROOT_Type_MaterialRackProportionCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MaterialRackProportionCell
{
  #keys: '5[413988.1.14566849][413988.1.14566847][0.0.0][413988.1.14566848][413988.1.14566850]'
  BaseType: Object
  Description: '料架比例单元格'
  StructuredName: 'MaterialRackProportionCells'
}
_Main/BL/Type_MaterialRackProportionRow/Attribute_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Generation
{
  #keys: '3[413988.1.14566983][413988.1.14566982][413988.1.14566984]'
  ValueType: String
}
_Main/BL/Type_MaterialRackProportionRow/Attribute_MLB_MQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute MLB_MQB
{
  #keys: '3[413988.1.14566986][413988.1.14566985][413988.1.14566987]'
  ValueType: String
}
_Main/BL/Type_MaterialRackProportionRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[413988.1.14566980][413988.1.14566979][413988.1.14566981]'
  ValueType: String
}
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Generation
}
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_MLB_MQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: MLB_MQB
}
_Main/BL/Type_MaterialRackProportionRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MaterialRackProportionRow/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // lihongji Aug-12-2024 (created)
    value := this.Generation() + ifexpr( this.MLB_MQB() <> "", " " + this.MLB_MQB(), "" );
    this.Name( value );
  *]
}
_Main/BL/Type_MaterialRackProportionRow/_ROOT_Type_MaterialRackProportionRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MaterialRackProportionRow
{
  #keys: '5[413988.1.14566844][413988.1.14566842][0.0.0][413988.1.14566843][413988.1.14566845]'
  BaseType: Object
  Description: '料架比例行'
  StructuredName: 'MaterialRackProportionRows'
}
_Main/BL/Type_MaterialRackTotalCell/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[413988.1.14567025][413988.1.14567024][413988.1.14567026]'
  Description: '数量'
  ValueType: Real
}
_Main/BL/Type_MaterialRackTotalCell/StaticMethod_CreateDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateDate (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    genrations   := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.Generation().TrimBoth() <> "", tempPMP.Generation() );
    mqbmlbs      := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.MQBMLB().TrimBoth() <> "", tempPMP.MQBMLB() );
    traverse ( genrations, Elements, g ) {
      traverse ( mqbmlbs, Elements, m ) {
        mrtr     := select( macroPlan, MaterialRackTotalRow, tempMRTR, tempMRTR.Generation() = g and tempMRTR.MLB_MQB() = m );
        if ( isnull( mrtr ) ) {
          mrtr   := macroPlan.MaterialRackTotalRow( relnew, Generation := g, MLB_MQB := m );
          traverse ( macroPlan, MaterialRackColumn, mrc ) {
            cell := mrtr.MaterialRackTotalCell( relnew, Quantity := 0 );
            cell.MaterialRackColumn( relset, mrc );
          }
        }
      }
    }
  *]
}
_Main/BL/Type_MaterialRackTotalCell/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  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 );
    // ç¬¬ä¸€åˆ—(名称)
    mrtrs       := selectsortedset( macroPlan, MaterialRackTotalRow, tempMRTR, true, tempMRTR.Name() );
    firstColumn := xmlDOM.CreateElement( "column" );
    firstName   := xmlDOM.CreateElement( "name" );
    firstType   := xmlDOM.CreateElement( "type" );
    firstName.TextContent( "*" );
    firstType.TextContent( "String" );
    firstColumn.AppendChild( firstName );
    firstColumn.AppendChild( firstType );
    traverse ( mrtrs, Elements, cerr ) {
      firstCell := xmlDOM.CreateElement( "cell" );
      firstCell.SetAttribute( "value", cerr.Name() );
      firstColumn.AppendChild( firstCell );
    }
    tableElement.AppendChild( firstColumn );
    // æ—¶é—´åˆ—
    mrcs         := selectsortedset( macroPlan, MaterialRackColumn, tempMRC, true, tempMRC.Month() );
    traverse ( mrcs, Elements, mrc ) {
      cellColumn := xmlDOM.CreateElement( "column" );
      cellName   := xmlDOM.CreateElement( "name" );
      cellType   := xmlDOM.CreateElement( "type" );
      cellName.TextContent( [String]mrc.Month() );
      cellType.TextContent( "Real" );
      cellColumn.AppendChild( cellName );
      cellColumn.AppendChild( cellType );
      cells := selectsortedset( mrc, MaterialRackTotalCell, tempMRTCell, true, tempMRTCell.MaterialRackTotalRow().Name() );
      traverse ( cells, Elements, c ) {
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.Quantity() ); // æ–™æž¶æ€»æ•°é‡
        cellColumn.AppendChild( cell );
      }
      tableElement.AppendChild( cellColumn );
    }
    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_MaterialRackTotalCell/StaticMethod_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Import (
  MacroPlan macroPlan,
  GeneralExcelImportAndExportDataTable table
)
{
  TextBody:
  [*
    generation := "";
    mqb_mlb    := "";
    traverse ( table, GeneralExcelImportAndExportDataRow, row ) {
      traverse ( table, GeneralExcelImportAndExportDataColumn, column ) {
        // å•元格值
        cellValue := select( row, GeneralExcelImportAndExportDataCell, tempGEIAEDCell, tempGEIAEDCell.GeneralExcelImportAndExportDataColumn() = column ).Value();
        if ( column.ColumnIndex() = 0 and cellValue <> "" ) {
          generation := guard( cellValue.Tokenize( " " ).Element( 0 ), "" );
          mqb_mlb    := guard( cellValue.Tokenize( " " ).Element( 1 ), "" );
        }
        // æ–™æž¶æ€»æ•°è®¾ç½®åˆ—
        mrc  := select( macroPlan, MaterialRackColumn, tempMRC, tempMRC.Month() = guard( [Number]column.Name(), 0 ) );
        // æ–™æž¶æ€»æ•°è®¾ç½®è¡Œ
        mrtr := select( macroPlan, MaterialRackTotalRow, tempMRTR, tempMRTR.Generation() = generation and tempMRTR.MLB_MQB() = mqb_mlb );
        if ( column.ColumnIndex() > 0 and not isnull( mrc ) and not isnull( mrtr ) ) {
          cell := select( mrtr, MaterialRackTotalCell, tempMRTCell, tempMRTCell.MaterialRackColumn() = mrc );
          cell.Quantity( [Real]cellValue );
        }
      }
    }
  *]
}
_Main/BL/Type_MaterialRackTotalCell/_ROOT_Type_MaterialRackTotalCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MaterialRackTotalCell
{
  #keys: '5[413988.1.14566839][413988.1.14566837][0.0.0][413988.1.14566838][413988.1.14566840]'
  BaseType: Object
  Description: '料架总数量单元格'
  StructuredName: 'MaterialRackTotalCells'
}
_Main/BL/Type_MaterialRackTotalColumn/Attribute_Month.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Month
{
  #keys: '3[413988.1.14031041][413988.1.14031040][413988.1.14031042]'
  Description: '月份'
  ValueType: Number
}
_Main/BL/Type_MaterialRackTotalColumn/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[413988.1.14566904][413988.1.14566903][413988.1.14566905]'
  Description: '开始时间'
  ValueType: Date
}
_Main/BL/Type_MaterialRackTotalColumn/StaticMethod_CreateDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateDate (
  MacroPlan macroPlan
)
{
  TextBody:
  [*
    for ( i := 1; i <= 12; i++ ) {
      mrc := select( macroPlan, MaterialRackColumn, tempMRC, tempMRC.Month() = i );
      if ( isnull( mrc ) ) {
        macroPlan.MaterialRackColumn( relnew, Month := i );
      }
    }
  *]
}
_Main/BL/Type_MaterialRackTotalColumn/_ROOT_Type_MaterialRackColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MaterialRackColumn
{
  #keys: '5[413988.1.14566826][413988.1.14566824][0.0.0][413988.1.14566825][413988.1.14566827]'
  BaseType: Object
  Description: '料架列'
  StructuredName: 'MaterialRackColumns'
}
_Main/BL/Type_MaterialRackTotalRow/Attribute_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Generation
{
  #keys: '3[413988.1.14566865][413988.1.14566864][413988.1.14566866]'
  ValueType: String
}
_Main/BL/Type_MaterialRackTotalRow/Attribute_MLB_MQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute MLB_MQB
{
  #keys: '3[413988.1.14566871][413988.1.14566870][413988.1.14566872]'
  ValueType: String
}
_Main/BL/Type_MaterialRackTotalRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[413988.1.14566868][413988.1.14566867][413988.1.14566869]'
  ValueType: String
}
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Generation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Generation
}
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_MLB_MQB.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: MLB_MQB
}
_Main/BL/Type_MaterialRackTotalRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_MaterialRackTotalRow/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // lihongji Aug-12-2024 (created)
    value := this.Generation() + ifexpr( this.MLB_MQB() <> "", " " + this.MLB_MQB(), "" );
    this.Name( value );
  *]
}
_Main/BL/Type_MaterialRackTotalRow/_ROOT_Type_MaterialRackTotalRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type MaterialRackTotalRow
{
  #keys: '5[413988.1.14566834][413988.1.14566832][0.0.0][413988.1.14566833][413988.1.14566835]'
  BaseType: Object
  Description: '料架总数量行'
  StructuredName: 'MaterialRackTotalRows'
}
_Main/Sys/Repr/Global/MaterialRackColumn.qrp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
TypeRepresentation MaterialRackColumn
{
  AttributeRepresentation Month
  {
    Alignment: 'Right'
    AttributeKey: '[413988.1.14031040]'
  }
  RelationRepresentation MacroPlan { RelationKey: '[413988.1.14566917]' Visibility: 'Normal' }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuEngineLogisticsCostReport.def
@@ -62,6 +62,17 @@
        Title: '大连发动机料架报表'
      ]
    }
    Component mMaterialRackTotalSetting
    {
      #keys: '[413988.1.16000836]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'WINDOW_GEAR'
        Taborder: 5
        Title: '料架总数量设置'
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_mMaterialRackTota.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: ContextMenuEngineLogisticsCostReport/mMaterialRackTotalSetting
Response OnClick () id:Response_MacroPlanner_ContextMenuEngineLogisticsCostReport_mMaterialRackTotalSetting_OnClick
{
  #keys: '[413988.1.16000982]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMenu_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      // åˆ›å»ºæ–™æž¶è®¾ç½®æ€»æ•°é‡è®¾ç½®åˆ—
      MaterialRackColumn::CreateDate( MacroPlan );
      ApplicationScope.ViewManager().ResetUserViewById( "MaterialRackTotalSetting", true );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_MatrixEditor240.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditor240
{
  #keys: '[413988.1.14781785]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell567
    {
      #keys: '[413988.1.14781786]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor775
        {
          #keys: '[413988.1.14781787]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackCustomRow.MaterialRackCustomCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Quantity'
        Column: 'MaterialRackColumn'
        Row: 'MaterialRackCustomRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows741
    {
      #keys: '[413988.1.14781788]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor571
        {
          #keys: '[413988.1.14781789]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackCustomRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Name'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns208
    {
      #keys: '[413988.1.14781790]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor294
        {
          #keys: '[413988.1.14781791]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Month'
        SortCriteria: 'Month'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage816
    #child: matrixeditorContextMenu134
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumns208'
    ContextMenu: 'matrixeditorContextMenu134'
    Rows: 'MatrixEditorRows741'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixEditorActionBarPage816.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage816
{
  #keys: '[413988.1.14781792]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_matrixeditorContextMenu134.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu134
{
  #keys: '[413988.1.14781793]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pContent
{
  #keys: '[413988.1.14781784]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor240
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Component_pHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
Quintiq file version 2.0
Component pHeader
{
  #keys: '[413988.1.14781717]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bImport
    {
      #keys: '[413988.1.14781718]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Label: '导入'
        Taborder: 1
      ]
    }
    Component bExport
    {
      #keys: '[413988.1.14781719]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 2
      ]
    }
    Component bGenerate
    {
      #keys: '[413988.1.14781720]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '生成模板'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader/bExport
Response OnClick () id:Response_pHeader_bExport_OnClick
{
  #keys: '[413988.1.26522395]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := MaterialRackCustomCell::Export( MacroPlan );
      Application.Download( "料架总数量.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bGenerate_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader/bGenerate
Response OnClick () id:Response_pHeader_bGenerate_OnClick
{
  #keys: '[413988.1.26522194]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      MaterialRackCustomCell::CreateDate( MacroPlan );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/Response_pHeader_bImport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
Quintiq file version 2.0
#parent: pHeader/bImport
Response OnClick () id:Response_pHeader_bImport_OnClick
{
  #keys: '[413988.1.26522306]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
          MaterialRackCustomCell::Import( MacroPlan, selection );
          // åŽç»­åˆ é™¤
          generalExcelImportAndExportDataSource.Delete();
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackCustom/_ROOT_Component_FormMaterialRackCustom.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormMaterialRackCustom
{
  #keys: '[413988.1.14711995]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pContent
    #child: pHeader
  ]
  Properties:
  [
    Description: '客户库料架数量'
    Title: '客户库料架数量'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_MatrixEditor240#88.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditor240 id:MatrixEditor240_88
{
  #keys: '[413988.1.14780998]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell567
    {
      #keys: '[413988.1.14780999]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor775
        {
          #keys: '[413988.1.14781000]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackProportionRow.MaterialRackProportionCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Quantity'
        Column: 'MaterialRackColumn'
        Row: 'MaterialRackProportionRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows741
    {
      #keys: '[413988.1.14781001]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor571
        {
          #keys: '[413988.1.14781002]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackProportionRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Name'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns208
    {
      #keys: '[413988.1.14781003]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor294
        {
          #keys: '[413988.1.14781004]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Month'
        SortCriteria: 'Month'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage816_1
    #child: matrixeditorContextMenu134_1
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumns208'
    ContextMenu: 'matrixeditorContextMenu134'
    Rows: 'MatrixEditorRows741'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixEditorActionBarPage816#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage816 id:matrixEditorActionBarPage816_1
{
  #keys: '[413988.1.14781005]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_matrixeditorContextMenu134#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu134 id:matrixeditorContextMenu134_1
{
  #keys: '[413988.1.14781006]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pContent#338.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pContent id:pContent_338
{
  #keys: '[413988.1.14780997]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor240_88
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Component_pHeader#791.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
Quintiq file version 2.0
Component pHeader id:pHeader_791
{
  #keys: '[413988.1.16001292]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bImport
    {
      #keys: '[413988.1.16001293]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Label: '导入'
        Taborder: 1
      ]
    }
    Component bExport
    {
      #keys: '[413988.1.16001294]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 2
      ]
    }
    Component bGenerate
    {
      #keys: '[413988.1.16001295]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '生成模板'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader_791/bExport
Response OnClick () id:Response_pHeader_791_bExport_OnClick
{
  #keys: '[413988.1.26481619]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := MaterialRackProportionCell::Export( MacroPlan );
      Application.Download( "料架总数量.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bGenerate_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader_791/bGenerate
Response OnClick () id:Response_pHeader_791_bGenerate_OnClick
{
  #keys: '[413988.1.25920259]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      MaterialRackProportionCell::CreateDate( MacroPlan );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/Response_pHeader_791_bImport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
Quintiq file version 2.0
#parent: pHeader_791/bImport
Response OnClick () id:Response_pHeader_791_bImport_OnClick
{
  #keys: '[413988.1.24511147]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
          MaterialRackProportionCell::Import( MacroPlan, selection );
          // åŽç»­åˆ é™¤
          generalExcelImportAndExportDataSource.Delete();
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackProportion/_ROOT_Component_FormMaterialRackProportion.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormMaterialRackProportion
{
  #keys: '[413988.1.14711914]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pContent_338
    #child: pHeader_791
  ]
  Properties:
  [
    Description: '空料架比例'
    Title: '空料架比例'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_MatrixEditor240.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
Quintiq file version 2.0
Component MatrixEditor240
{
  #keys: '[413988.1.15920739]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCell567
    {
      #keys: '[413988.1.15920740]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractor775
        {
          #keys: '[413988.1.15920741]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackTotalRow.MaterialRackTotalCell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'Quantity'
        Column: 'MaterialRackColumn'
        Row: 'MaterialRackTotalRow'
        Taborder: 0
      ]
    }
    Component MatrixEditorRows741
    {
      #keys: '[413988.1.15920744]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor571
        {
          #keys: '[413988.1.15920745]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackTotalRow'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Name'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumns208
    {
      #keys: '[413988.1.15920748]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractor294
        {
          #keys: '[413988.1.15920749]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'MaterialRackColumn'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Month'
        SortCriteria: 'Month'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPage816
    #child: matrixeditorContextMenu134
  ]
  Properties:
  [
    Columns: 'MatrixEditorColumns208'
    ContextMenu: 'matrixeditorContextMenu134'
    Rows: 'MatrixEditorRows741'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixEditorActionBarPage816.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPage816
{
  #keys: '[413988.1.15920752]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_matrixeditorContextMenu134.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenu134
{
  #keys: '[413988.1.15920755]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component pContent
{
  #keys: '[413988.1.14712032]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditor240
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Component_pHeader.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
Quintiq file version 2.0
Component pHeader
{
  #keys: '[413988.1.14712020]'
  BaseType: 'WebPanel'
  Children:
  [
    Component bImport
    {
      #keys: '[413988.1.14712119]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Label: '导入'
        Taborder: 1
      ]
    }
    Component bExport
    {
      #keys: '[413988.1.14712131]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 2
      ]
    }
    Component bGenerate
    {
      #keys: '[413988.1.14712143]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '生成模板'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Border: true
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader/bExport
Response OnClick () id:Response_pHeader_bExport_OnClick
{
  #keys: '[413988.1.24570285]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := MaterialRackTotalCell::Export( MacroPlan );
      Application.Download( "料架总数量.xlsx", binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bGenerate_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pHeader/bGenerate
Response OnClick () id:Response_pHeader_bGenerate_OnClick
{
  #keys: '[413988.1.25900711]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      MaterialRackTotalCell::CreateDate( MacroPlan );
      WebMessageBox::Success( Translations::A_VWED_Success() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/Response_pHeader_bImport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
Quintiq file version 2.0
#parent: pHeader/bImport
Response OnClick () id:Response_pHeader_bImport_OnClick
{
  #keys: '[413988.1.25930512]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
          MaterialRackTotalCell::Import( MacroPlan, selection );
          // åŽç»­åˆ é™¤
          generalExcelImportAndExportDataSource.Delete();
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMaterialRackTotal/_ROOT_Component_FormMaterialRackTotal.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormMaterialRackTotal
{
  #keys: '[413988.1.14711841]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pContent
    #child: pHeader
  ]
  Properties:
  [
    Description: '料架总数量'
    Title: '料架总数量'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/MaterialRackTotalSetting.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,212 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_FormMaterialRackTotal
      {
        title: 'QMacroPlanner::FormMaterialRackTotal'
        shown: true
        componentID: 'QMacroPlanner::FormMaterialRackTotal'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 9
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormMaterialRackTotal_pHeader
          {
            sizeRatio: 1
          }
          FormMaterialRackTotal_pContent
          {
            sizeRatio: 1
          }
          FormMaterialRackTotal_MatrixEditor240
          {
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            gridColor: '#c4c4c4'
          }
        }
      }
      form_FormMaterialRackProportion
      {
        title: 'QMacroPlanner::FormMaterialRackProportion'
        shown: true
        componentID: 'QMacroPlanner::FormMaterialRackProportion'
        layout
        {
          mode: 'open'
          rowPosition: 10
          rowSpan: 9
          columnPosition: 1
          columnSpan: 12
        }
        components
        {
          FormMaterialRackProportion_pContent
          {
            sizeRatio: 1
          }
          FormMaterialRackProportion_MatrixEditor240
          {
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            gridColor: '#c4c4c4'
          }
        }
      }
      form_FormMaterialRackCustom
      {
        title: 'QMacroPlanner::FormMaterialRackCustom'
        shown: true
        componentID: 'QMacroPlanner::FormMaterialRackCustom'
        layout
        {
          mode: 'open'
          rowPosition: 19
          rowSpan: 9
          columnPosition: 1
          columnSpan: 12
        }
        components: null
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: 'Description'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: 'Name'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: ''
    group: ''
    index: 0
    image: 'JOYSTICK'
    description: ''
  }
  formatversion: 2
  id: 'MaterialRackTotalSetting'
  name: 'MaterialRackTotalSetting'
  isglobal: false
  isroot: true
}