lazhen
2024-07-12 1e51fbda78f4782a252c5ad187064e96934a1eca
机加件管线报表
已重命名3个文件
已添加38个文件
已修改14个文件
已删除1个文件
1258 ■■■■ 文件已修改
_Main/BL/Relations/Relation_MachiningPipelineCell_Column_MachiningPipelineColumn_Cell.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineCell_Row_MachiningPipelineRow_Cell.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineColumn_Report_MachiningPipelineReport_Column.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineReport_Source_MachiningPipelineSource_Report.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineRow_Report_MachiningPipelineReport_Row.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineSource_MacroPlan_MacroPlan_MachiningPipelineSource.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCAssemblyPlanQty.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCInventoryQty.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCProductionQty.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_CCTransferQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLAssemblyPlanQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLInventoryQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLProductionQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_DLTransferQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Attribute_TotalInventoryQty.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Function_CalcTotalInventoryQty.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Method_Add.qbl 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/Method_Copy.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineCell/StaticMethod_Initialize.qbl 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/Method_GetRow.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCAssemnlyUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCProductionUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLAssemnlyUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLProductionUnit.qbl 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultName.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_Initialize.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_InitializeCell.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellAssemblyValue.qbl 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellDemandValue.qbl 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl 118 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_MatrixEditorTable#870.def 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelHeader#832.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelPeriod.def 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelSearch#957.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelTable#141.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelTimeUnit#778.def 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_matrixEditorActionBarPageTable#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_matrixeditorContextMenuTable#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_ButtonSummaryExport_OnClick.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw 214 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachiningPipelineCell_Column_MachiningPipelineColumn_Cell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineCell_Column_MachiningPipelineColumn_Cell
{
  #keys: '1[415136.0.894469828]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][415136.0.894469847][415136.0.894469841][415136.0.894469848][415136.0.894469842][415136.0.894469849][415136.0.894469843][415136.0.894469850][415136.0.894469844][415136.0.894469851][415136.0.894469845][415136.0.894469852][415136.0.894469846]'
    SequenceElementSuffix: 'CellInColumn'
    SequenceSuffix: 'CellInColumn'
  }
  RelationSide.LeftSide Column
  {
    #keys: '3[415136.0.894469830][415136.0.894469829][415136.0.894469831]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Cell
  {
    #keys: '3[415136.0.894469833][415136.0.894469832][415136.0.894469834]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineColumn
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineCell_Row_MachiningPipelineRow_Cell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineCell_Row_MachiningPipelineRow_Cell
{
  #keys: '1[415136.0.894469858]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Row
  {
    #keys: '3[415136.0.894469860][415136.0.894469859][415136.0.894469861]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Cell
  {
    #keys: '3[415136.0.894469863][415136.0.894469862][415136.0.894469864]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineRow
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineColumn_Report_MachiningPipelineReport_Column.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineColumn_Report_MachiningPipelineReport_Column
{
  #keys: '1[415136.0.894481255]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][415136.0.894481277][415136.0.894481271][415136.0.894481278][415136.0.894481272][415136.0.894481279][415136.0.894481273][415136.0.894481280][415136.0.894481274][415136.0.894481281][415136.0.894481275][415136.0.894481282][415136.0.894481276]'
    SequenceElementSuffix: 'Column'
    SequenceSuffix: 'Column'
  }
  RelationSide.LeftSide Report
  {
    #keys: '3[415136.0.894481257][415136.0.894481256][415136.0.894481258]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Column
  {
    #keys: '3[415136.0.894481260][415136.0.894481259][415136.0.894481261]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineReport
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineReport_Source_MachiningPipelineSource_Report.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineReport_Source_MachiningPipelineSource_Report
{
  #keys: '1[415136.0.894481242]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Source
  {
    #keys: '3[415136.0.894481244][415136.0.894481243][415136.0.894481245]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineReport
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Report
  {
    #keys: '3[415136.0.894481247][415136.0.894481246][415136.0.894481248]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineSource
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineRow_Report_MachiningPipelineReport_Row.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineRow_Report_MachiningPipelineReport_Row
{
  #keys: '1[415136.0.894481229]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Report
  {
    #keys: '3[415136.0.894481231][415136.0.894481230][415136.0.894481232]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Row
  {
    #keys: '3[415136.0.894481234][415136.0.894481233][415136.0.894481235]'
    Cardinality: '1toN'
    ObjectDefinition: MachiningPipelineReport
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineSearch_Source_MachiningPipelineSource_Search
{
  #keys: '1[415136.0.894481216]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Source
  {
    #keys: '3[415136.0.894481218][415136.0.894481217][415136.0.894481219]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineSearch
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Search
  {
    #keys: '3[415136.0.894481221][415136.0.894481220][415136.0.894481222]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineSource
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_MachiningPipelineSource_MacroPlan_MacroPlan_MachiningPipelineSource.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation MachiningPipelineSource_MacroPlan_MacroPlan_MachiningPipelineSource
{
  #keys: '1[415136.0.894481203]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[415136.0.894481205][415136.0.894481204][415136.0.894481206]'
    Cardinality: '0to1'
    ObjectDefinition: MachiningPipelineSource
    OwningSide: 'Reference'
  }
  RelationSide.RightSide MachiningPipelineSource
  {
    #keys: '3[415136.0.894481208][415136.0.894481207][415136.0.894481209]'
    Cardinality: '0to1'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultName.qbl
@@ -5,6 +5,6 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return 'Engine pipelines';
    return 'Machining pipelines';
  *]
}
_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -7,7 +7,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    owner.FinancialProductionSource( relflush );
    owner.EnginePipelineSource( relflush );
    ccunit                    := EnginePipelineReport::GetDefaultCCUnit();
    dlunit                    := EnginePipelineReport::GetDefaultDLUnit();
    //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
_Main/BL/Type_MachiningPipelineCell/Attribute_CCAssemblyPlanQty.qbl
ÎļþÃû´Ó _Main/BL/Type_MachiningPipelineCell/Attribute_DemandQuantity.qbl ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DemandQuantity
Attribute CCAssemblyPlanQty
{
  #keys: '3[415136.0.886711537][415136.0.886711536][415136.0.886711538]'
  Description: '需求'
  Description: '长春装配计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_CCInventoryQty.qbl
ÎļþÃû´Ó _Main/BL/Type_MachiningPipelineCell/Attribute_InventoryQuantity.qbl ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute InventoryQuantity
Attribute CCInventoryQty
{
  #keys: '3[415136.0.886711534][415136.0.886711533][415136.0.886711535]'
  Description: '库存'
  Description: '长春库存'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_CCProductionQty.qbl
ÎļþÃû´Ó _Main/BL/Type_MachiningPipelineCell/Attribute_ProductionQuantity.qbl ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionQuantity
Attribute CCProductionQty
{
  #keys: '3[415136.0.886711531][415136.0.886711530][415136.0.886711532]'
  Description: '生产'
  Description: '长春生产计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_CCTransferQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CCTransferQty
{
  #keys: '3[415136.0.894481176][415136.0.894481175][415136.0.894481177]'
  Description: '长春调拨计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLAssemblyPlanQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLAssemblyPlanQty
{
  #keys: '3[415136.0.894481139][415136.0.894481138][415136.0.894481140]'
  Description: '大连装配计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLInventoryQty
{
  #keys: '3[415136.0.894481162][415136.0.894481161][415136.0.894481163]'
  Description: '大连库存'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLProductionQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLProductionQty
{
  #keys: '3[415136.0.894481152][415136.0.894481151][415136.0.894481153]'
  Description: '大连生产计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_DLTransferQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute DLTransferQty
{
  #keys: '3[415136.0.894481186][415136.0.894481185][415136.0.894481187]'
  Description: '大连调拨计划'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Attribute_TotalInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TotalInventoryQty
{
  #keys: '3[415136.0.894481169][415136.0.894481168][415136.0.894481170]'
  Description: '长春 + å¤§è¿ž åº“å­˜'
  ValueType: Real
}
_Main/BL/Type_MachiningPipelineCell/Function_CalcTotalInventoryQty.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcTotalInventoryQty
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-12-2024 (created)
    value := this.CCInventoryQty() + this.DLInventoryQty();
    this.TotalInventoryQty( value );
  *]
}
_Main/BL/Type_MachiningPipelineCell/Method_Add.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method Add (
  MachiningPipelineCell cell
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-12-2024 (created)
    this.CCAssemblyPlanQty( this.CCAssemblyPlanQty() + cell.CCAssemblyPlanQty() );
    this.CCProductionQty( this.CCProductionQty() + cell.CCProductionQty() );
    this.CCTransferQty( this.CCTransferQty() + cell.CCTransferQty() );
    this.CCInventoryQty( this.CCInventoryQty() + cell.CCInventoryQty() );
    this.DLAssemblyPlanQty( this.DLAssemblyPlanQty() + cell.DLAssemblyPlanQty() );
    this.DLProductionQty( this.DLProductionQty() + cell.DLProductionQty() );
    this.DLTransferQty( this.DLTransferQty() + cell.DLTransferQty() );
    this.DLInventoryQty( this.DLInventoryQty() + cell.DLInventoryQty() );
  *]
}
_Main/BL/Type_MachiningPipelineCell/Method_Copy.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
Method Copy (
  MachiningPipelineColumn column
) as MachiningPipelineCell
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-12-2024 (created)
    cell := column.Cell( relnew, CCAssemblyPlanQty := this.CCAssemblyPlanQty(),
                         CCProductionQty := this.CCProductionQty(),
                         CCTransferQty := this.CCTransferQty(),
                         CCInventoryQty := this.CCInventoryQty(),
                         DLAssemblyPlanQty := this.DLAssemblyPlanQty(),
                         DLProductionQty := this.DLProductionQty(),
                         DLTransferQty := this.DLTransferQty(),
                         DLInventoryQty := this.DLInventoryQty() );
    return cell;
  *]
}
_Main/BL/Type_MachiningPipelineCell/StaticMethod_Initialize.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initialize (
  MachiningPipelineColumn column
) as MachiningPipelineCell
{
  TextBody:
  [*
    // ç”„兰鸽 Jul-12-2024 (created)
    cell := column.Cell( relnew, CCAssemblyPlanQty := 0,
                         CCProductionQty := 0,
                         CCTransferQty := 0,
                         CCInventoryQty := 0,
                         DLAssemblyPlanQty := 0,
                         DLProductionQty := 0,
                         DLTransferQty := 0,
                         DLInventoryQty := 0 );
    return cell;
  *]
}
_Main/BL/Type_MachiningPipelineReport/Method_Generate.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
Method Generate (
  EnginePipelineSearch search,
  MachiningPipelineSearch search,
  Product_MPs products
)
{
@@ -23,22 +23,15 @@
        if( not isnull( column ) ){
          sumcell  := selectobject( column, Cell, c, c.Row() = sumrow );
          if( isnull( sumcell ) ){
            sumcell := column.Cell( relnew, InventoryQuantity := 0 );
            sumcell := MachiningPipelineCell::Initialize( column );
            sumrow.Cell( relinsert, sumcell );
          }
          
          showcell := cell.Copy( column );
          showrow.Cell( relinsert, showcell );
      
          sumcell.InventoryQuantity( cell.InventoryQuantity() + sumcell.InventoryQuantity() );
          sumcell.Add( cell );
          
          traverse( cell, Demand, demand ){
            sumcell.Demand( relnew, EngineType := demand.EngineType(), Model := demand.Model(), Period := demand.Period(), Quantity := demand.Quantity() );
          }
          traverse( cell, Production, production ){
            sumcell.Production( relnew, EngineType := production.EngineType(), Period := production.Period(), DLProduction := production.DLProduction(), CCProduction := production.CCProduction() );
          }
        }
      }
    }
_Main/BL/Type_MachiningPipelineReport/Method_GetRow.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method GetRow (
  String product
) as EnginePipelineRow
) as MachiningPipelineRow
{
  TextBody:
  [*
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCAssemnlyUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultCCAssemnlyUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春装配线';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCProductionUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultCCProductionUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '长春机加产线';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    //return '长春';
    return 'Assembly Plant (France)';
    return '长春';
    //return 'Assembly Plant (France)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLAssemnlyUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultDLAssemnlyUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连装配线';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLProductionUnit.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
Quintiq file version 2.0
#parent: #root
StaticMethod GetDefaultDLProductionUnit () const as String
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return '大连机加产线';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,7 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    //return '大连';
    return 'Assembly Plant (Spain)';
    return '大连';
    //return 'Assembly Plant (Spain)';
  *]
}
_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultName.qbl
@@ -5,6 +5,6 @@
  TextBody:
  [*
    // ç”„兰鸽 Jun-25-2024 (created)
    return 'Engine pipelines';
    return 'Machining pipelines';
  *]
}
_Main/BL/Type_MachiningPipelineRow/Method_Initialize.qbl
@@ -1,13 +1,13 @@
Quintiq file version 2.0
#parent: #root
Method Initialize (
  EnginePipelineColumn column
  MachiningPipelineColumn column
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := column.Cell( relnew, InventoryQuantity := 0 );
    cell := MachiningPipelineCell::Initialize( column );
    
    this.Cell( relinsert, cell );
  *]
_Main/BL/Type_MachiningPipelineRow/Method_InitializeCell.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
Method InitializeCell (
  EnginePipelineReport table
  MachiningPipelineReport table
)
{
  TextBody:
_Main/BL/Type_MachiningPipelineRow/Method_SetCellAssemblyValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method SetCellAssemblyValue (
  MachiningPipelineColumn column,
  String unit,
  Real quantity
)
{
  TextBody:
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() ){
      cell.CCAssemblyPlanQty( cell.CCAssemblyPlanQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){
      cell.DLAssemblyPlanQty( cell.DLAssemblyPlanQty() + quantity );
    }
  *]
}
_Main/BL/Type_MachiningPipelineRow/Method_SetCellDemandValue.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_MachiningPipelineRow/Method_SetCellInventoryValue.qbl
@@ -1,7 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method SetCellInventoryValue (
  EnginePipelineColumn column,
  MachiningPipelineColumn column,
  String unit,
  Real quantity
)
{
@@ -10,6 +11,10 @@
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    
    cell.InventoryQuantity( cell.InventoryQuantity() + quantity );
    if( unit = MachiningPipelineReport::GetDefaultCCUnit() ){
      cell.CCInventoryQty( cell.CCInventoryQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLUnit() ){
      cell.DLInventoryQty( cell.DLInventoryQty() + quantity );
    }
  *]
}
_Main/BL/Type_MachiningPipelineRow/Method_SetCellProductionValue.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
Method SetCellProductionValue (
  EnginePipelineColumn column,
  MachiningPipelineColumn column,
  String unit,
  Real quantity
)
@@ -11,16 +11,10 @@
    // ç”„兰鸽 Jun-24-2024 (created)
    cell := selectobject( this, Cell, cell, cell.Column() = column );
    
    production := selectobject( cell, Production, production, production.EngineType() = cell.Row().Name() and production.Period() = column.Period() );
    if( isnull( production ) ){
      production := cell.Production( relnew, EngineType := cell.Row().Name(), Period := column.Period(), DLProduction := 0, CCProduction := 0 );
    }
    if( unit = EnginePipelineReport::GetDefaultCCUnit() ){
      production.CCProduction( production.CCProduction() + quantity );
    }else if( unit = EnginePipelineReport::GetDefaultDLUnit() ){
      production.DLProduction( production.DLProduction() + quantity );
    if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() ){
      cell.CCProductionQty( cell.CCProductionQty() + quantity );
    }else if( unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){
      cell.DLProductionQty( cell.DLProductionQty() + quantity );
    }
  *]
}
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Download.qbl
@@ -8,7 +8,7 @@
  TextBody:
  [*
    
    table := selectobject( macroPlan, EnginePipelineSource.Report, table, table.IsShow() );
    table := selectobject( macroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
    
    xmlDOMI := XMLDOMImplementation::Create();
    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + table.Name() + '</name></table>' );
@@ -57,32 +57,98 @@
          productcellElement3 := xmlDOM.CreateElement( "cell" );
          productcellElement3.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement3 );
          productcellElement4 := xmlDOM.CreateElement( "cell" );
          productcellElement4.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement4 );
          productcellElement5 := xmlDOM.CreateElement( "cell" );
          productcellElement5.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement5 );
          productcellElement6 := xmlDOM.CreateElement( "cell" );
          productcellElement6.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement6 );
          productcellElement7 := xmlDOM.CreateElement( "cell" );
          productcellElement7.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement7 );
          productcellElement8 := xmlDOM.CreateElement( "cell" );
          productcellElement8.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement8 );
          productcellElement9 := xmlDOM.CreateElement( "cell" );
          productcellElement9.SetAttribute( "value", row.Name() );
          productcolumnelement.AppendChild( productcellElement9 );
          //Attribute
          //生产
          endcellElement := xmlDOM.CreateElement( "cell" );
          endcellElement.SetAttribute( "value", 'ProductionQuantity' );
          attricolumnelement.AppendChild( endcellElement );
          //需求
          mincellElement := xmlDOM.CreateElement( "cell" );
          mincellElement.SetAttribute( "value", 'DemandQuantity' );
          attricolumnelement.AppendChild( mincellElement );
          //库存
          maxcellElement := xmlDOM.CreateElement( "cell" );
          maxcellElement.SetAttribute( "value", 'InventoryQUantity' );
          attricolumnelement.AppendChild( maxcellElement );
          //长春装配计划
          ccaqcellElement := xmlDOM.CreateElement( "cell" );
          ccaqcellElement.SetAttribute( "value", 'CCAssemblyPlanQty' );
          attricolumnelement.AppendChild( ccaqcellElement );
          //长春生产计划
          ccpqcellElement := xmlDOM.CreateElement( "cell" );
          ccpqcellElement.SetAttribute( "value", 'CCProductionQty' );
          attricolumnelement.AppendChild( ccpqcellElement );
          //长春调拨计划
          cctqcellElement := xmlDOM.CreateElement( "cell" );
          cctqcellElement.SetAttribute( "value", 'CCTransferQty' );
          attricolumnelement.AppendChild( cctqcellElement );
          //长春库存
          cciqcellElement := xmlDOM.CreateElement( "cell" );
          cciqcellElement.SetAttribute( "value", 'CCInventoryQty' );
          attricolumnelement.AppendChild( cciqcellElement );
          //大连装配计划
          dlaqcellElement := xmlDOM.CreateElement( "cell" );
          dlaqcellElement.SetAttribute( "value", 'DLAssemblyPlanQty' );
          attricolumnelement.AppendChild( dlaqcellElement );
          //大连生产计划
          dlpqcellElement := xmlDOM.CreateElement( "cell" );
          dlpqcellElement.SetAttribute( "value", 'DLProductionQty' );
          attricolumnelement.AppendChild( dlpqcellElement );
          //大连调拨计划
          dltqcellElement := xmlDOM.CreateElement( "cell" );
          dltqcellElement.SetAttribute( "value", 'DLTransferQty' );
          attricolumnelement.AppendChild( dltqcellElement );
          //大连库存
          dliqcellElement := xmlDOM.CreateElement( "cell" );
          dliqcellElement.SetAttribute( "value", 'DLInventoryQty' );
          attricolumnelement.AppendChild( dliqcellElement );
          //长春 + å¤§è¿ž åº“å­˜
          tiqcellElement := xmlDOM.CreateElement( "cell" );
          tiqcellElement.SetAttribute( "value", 'TotalInventoryQty' );
          attricolumnelement.AppendChild( tiqcellElement );
        }
        //生产
        endcellElement := xmlDOM.CreateElement( "cell" );
        endcellElement.SetAttribute( "value", [String]c.ProductionQuantity() );
        columnelement.AppendChild( endcellElement );
        //需求
        mincellElement := xmlDOM.CreateElement( "cell" );
        mincellElement.SetAttribute( "value", [String]c.DemandQuantity() );
        columnelement.AppendChild( mincellElement );
        //库存
        maxcellElement := xmlDOM.CreateElement( "cell" );
        maxcellElement.SetAttribute( "value", [String]c.InventoryQuantity() );
        columnelement.AppendChild( maxcellElement );
        //长春装配计划
        ccaqcellElement := xmlDOM.CreateElement( "cell" );
        ccaqcellElement.SetAttribute( "value", [String]c.CCAssemblyPlanQty() );
        columnelement.AppendChild( ccaqcellElement );
        //长春生产计划
        ccpqcellElement := xmlDOM.CreateElement( "cell" );
        ccpqcellElement.SetAttribute( "value", [String]c.CCProductionQty() );
        columnelement.AppendChild( ccpqcellElement );
        //长春调拨计划
        cctqcellElement := xmlDOM.CreateElement( "cell" );
        cctqcellElement.SetAttribute( "value", [String]c.CCTransferQty() );
        columnelement.AppendChild( cctqcellElement );
        //长春库存
        cciqcellElement := xmlDOM.CreateElement( "cell" );
        cciqcellElement.SetAttribute( "value", [String]c.CCInventoryQty() );
        columnelement.AppendChild( cciqcellElement );
        //大连装配计划
        dlaqcellElement := xmlDOM.CreateElement( "cell" );
        dlaqcellElement.SetAttribute( "value", [String]c.DLAssemblyPlanQty() );
        columnelement.AppendChild( dlaqcellElement );
        //大连生产计划
        dlpqcellElement := xmlDOM.CreateElement( "cell" );
        dlpqcellElement.SetAttribute( "value", [String]c.DLProductionQty() );
        columnelement.AppendChild( dlpqcellElement );
        //大连调拨计划
        dltqcellElement := xmlDOM.CreateElement( "cell" );
        dltqcellElement.SetAttribute( "value", [String]c.DLTransferQty() );
        columnelement.AppendChild( dltqcellElement );
        //大连库存
        dliqcellElement := xmlDOM.CreateElement( "cell" );
        dliqcellElement.SetAttribute( "value", [String]c.DLInventoryQty() );
        columnelement.AppendChild( dliqcellElement );
        //长春 + å¤§è¿ž åº“å­˜
        tiqcellElement := xmlDOM.CreateElement( "cell" );
        tiqcellElement.SetAttribute( "value", [String]c.TotalInventoryQty() );
        columnelement.AppendChild( tiqcellElement );
      }
      tableElement.AppendChild( columnelement );  
    }
@@ -91,7 +157,7 @@
    
    //info( xmlString );
    
    tableGroupHandle := TableGroupHandle::Create( EnginePipelineReport::GetDefaultName() );
    tableGroupHandle := TableGroupHandle::Create( MachiningPipelineReport::GetDefaultName() );
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
    tableGroupHandle.Add( tableHandle );
    
_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -8,10 +8,10 @@
  [*
    // ç”„兰鸽 Jun-24-2024 (created)
    owner.FinancialProductionSource( relflush );
    ccunit                    := EnginePipelineReport::GetDefaultCCUnit();
    dlunit                    := EnginePipelineReport::GetDefaultDLUnit();
    ccunit                    := MachiningPipelineReport::GetDefaultCCUnit();
    dlunit                    := MachiningPipelineReport::GetDefaultDLUnit();
    //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
    source                    := owner.EnginePipelineSource( relnew, Name := FinancialProductionReport::GetDefaultName() );
    source                    := owner.MachiningPipelineSource( relnew, Name := MachiningPipelineReport::GetDefaultName() );
    table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
    showtable                 := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
    
@@ -21,10 +21,9 @@
    //初始化列
    table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
    
    //生成生产和库存数据
    //生成装配、生产和库存数据
    traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){
      unit := pisp.StockingPoint_MP().UnitID();
    //  info( unit, pisp.ProductID() );
      //初始化行
      row := table.GetRow( pisp.ProductID() );
      
@@ -33,35 +32,47 @@
                      or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){
        periodtime := pispip.Period_MP().StartDate();
        periodname := periodtime.Format( "M2/D2/Y" );
    //    info( '---------------------------------', periodtime, table.Column( relsize ), pispip.Period_MP().TimeUnit() );
        column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() );
    //    info( '---------------------------------', isnull( column ), isnull( row ) );
    //    info( '---------------------------------', column.Name(), row.Name() );
        if( unit = ccunit or unit = dlunit ){
        //装配线
        if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){
          row.SetCellAssemblyValue( column, unit, pispip.NewSupplyProductionQuantity() );
        }
        //机加线
        if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() or unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){
          row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() );
        }
        row.SetCellInventoryValue( column, pispip.PlannedInventoryLevelEnd() );
        if( unit = ccunit or unit = dlunit ){
          row.SetCellInventoryValue( column, unit, pispip.PlannedInventoryLevelEnd() );
        }
      }
    }
    
    //生成需求数据
    traverse( owner, SalesDemand.astype( Forecast ), forecast, ( forecast.EndDate() - forecast.StartDate() ) < 8){
      row := table.GetRow( forecast.ProductID() );
      weekdate   := ( forecast.StartDate() - Duration::Days( 7 ) ).Date();
      periodtime := forecast.StartDate();
      periodname := periodtime.Format( "M2/D2/Y" );
      column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = Translations::MP_GlobalParameters_Day() );
      weekcolumn := minobject( table, Column, wcolumn, wcolumn.Period() <= weekdate and wcolumn.TimeUnit() = Translations::MP_GlobalParameters_Week(), wcolumn.Period() );
      if( not isnull( column ) ){
        row.SetCellDemandValue( column, forecast.SalesSegmentName(), forecast.Quantity() );
    //生成调拨数据
    traverse( owner, TransferPlanRow, tprow, ( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ) or ( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ) ){
      row := selectobject( table, Row, row, row.Name() = tprow.Name() );
      traverse( table, Column, column ){
        cell := selectobject( row, Cell, cell, cell.Column() = column );
        if( column.TimeUnit() = Translations::MP_GlobalParameters_Day() ){
          tpcell := selectobject( tprow, TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() = column.Period() );
          if( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ){
            cell.CCTransferQty( [Real]tpcell.Value() );
          }else if( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
            cell.DLTransferQty( [Real]tpcell.Value() );
      }
        }else if( column.TimeUnit() = Translations::MP_GlobalParameters_Week() ){
          period := column.Period() + Duration::Days( 6 );
          tpcell := selectobject( tprow, TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() = period.Date() );
      
      if( not isnull( weekcolumn ) ){
        row.SetCellDemandValue( weekcolumn, forecast.SalesSegmentName(), forecast.Quantity() );
          if( tprow.SourceStockpoingPointID() = 'CC' and tprow.TargetStockpoingPointID() = 'DL' ){
            cell.CCTransferQty( [Real]tpcell.Value() );
          }else if( tprow.SourceStockpoingPointID() = 'DL' and tprow.TargetStockpoingPointID() = 'CC' ){
            cell.DLTransferQty( [Real]tpcell.Value() );
      }
    }
      }
    }
    rows := selectsortedset( table, Row, row, row.Name() );
    i    := 0;
    traverse( rows, Elements, e ){
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_MatrixEditorTable#870.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
Quintiq file version 2.0
Component MatrixEditorTable id:MatrixEditorTable_870
{
  #keys: '[415136.0.893820897]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellTable
    {
      #keys: '[415136.0.893820898]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorCell
        {
          #keys: '[415136.0.893820899]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MachiningPipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Column.Cell'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'CCAssemblyPlanQty;CCProductionQty;CCTransferQty;CCInventoryQty;DLAssemblyPlanQty;DLProductionQty;DLTransferQty;DLInventoryQty;TotalInventoryQty'
        Column: 'Column'
        Row: 'Row'
        Taborder: 0
      ]
    }
    Component MatrixEditorRowsTable
    {
      #keys: '[415136.0.893820900]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorRow
        {
          #keys: '[415136.0.893820901]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MachiningPipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Row'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'RowNr'
        Taborder: 1
      ]
    }
    Component MatrixEditorColumnsTable
    {
      #keys: '[415136.0.893820902]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorColumn
        {
          #keys: '[415136.0.893820903]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MachiningPipelineReport'
            Source: 'DataHolderTable'
            Taborder: 0
            Transformation: 'Column'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Index'
        Taborder: 2
      ]
    }
    #child: matrixEditorActionBarPageTable_1
    #child: matrixeditorContextMenuTable_1
  ]
  Properties:
  [
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumnsTable'
    ContextMenu: 'matrixeditorContextMenuTable'
    Rows: 'MatrixEditorRowsTable'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelExport
{
  #keys: '[415136.0.893820864]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ButtonSummaryExport
    {
      #keys: '[415136.0.893820865]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelHeader#832.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelHeader id:PanelHeader_832
{
  #keys: '[415136.0.893820859]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelSearch_957
  ]
  Properties:
  [
    FixedSize: true
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelPeriod.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
Quintiq file version 2.0
Component PanelPeriod
{
  #keys: '[415136.0.893820861]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DateSelectorStart
    {
      #keys: '[415136.0.893820862]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'Start date'
        Taborder: 0
      ]
    }
    Component DateSelectorEnd
    {
      #keys: '[415136.0.893820863]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 9999-12-31
        Label: 'End date'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelSearch#957.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
Component PanelSearch id:PanelSearch_957
{
  #keys: '[415136.0.893820860]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelPeriod
    #child: PanelExport
    #child: PanelTimeUnit_778
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelTable#141.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelTable id:PanelTable_141
{
  #keys: '[415136.0.893820896]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: MatrixEditorTable_870
  ]
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelTimeUnit#778.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
Component PanelTimeUnit id:PanelTimeUnit_778
{
  #keys: '[415136.0.893820866]'
  BaseType: 'WebPanel'
  Children:
  [
    Component RadioButtonGroupUseForTimeUnit
    {
      #keys: '[415136.0.893820867]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
        ButtonLabels: 'Day;Week'
        ButtonValues: 'Day;Week'
        Orientation: 'horizontal'
        ShowTitle: false
        Taborder: 0
        Title: 'Periods'
      ]
    }
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_matrixEditorActionBarPageTable#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageTable id:matrixEditorActionBarPageTable_1
{
  #keys: '[415136.0.893820904]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 3
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_matrixeditorContextMenuTable#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixeditorContextMenuTable id:matrixeditorContextMenuTable_1
{
  #keys: '[415136.0.893820905]'
  BaseType: 'matrixeditorContextMenu'
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
Response OnCreated () id:Response_FormMachiningPipelineReport_OnCreated
{
  #keys: '[415136.0.897182652]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      //if( not isnull( MacroPlan.EnginePipelineSource() ) ){
        MachiningPipelineSource::Initialize( MacroPlan );
      //}
      //info( '------------------1----------------' );
      table := selectobject( MacroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
      //info( '------------------2----------------', table.IsShow() );
      DataHolderTable.Data( table );
      dhSearch.Data( table.Source().Search() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_ButtonSummaryExport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: PanelExport/ButtonSummaryExport
Response OnClick () id:Response_PanelExport_ButtonSummaryExport_OnClick
{
  #keys: '[415136.0.893820856]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      binaryValue := MachiningPipelineSource::Download( MacroPlan );
      Application.Download( MachiningPipelineReport::GetDefaultName() + '.xlsx', binaryValue.AsBinaryData() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: PanelPeriod/DateSelectorEnd
Response OnChanged () id:Response_PanelPeriod_DateSelectorEnd_OnChanged
{
  #keys: '[415136.0.893820857]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
  {
    Body:
    [*
      //日期改变后刷新显示
      if( this.Date() < DateSelectorStart.Date() ){
        this.HintError( 'The end date cannot be less than the start date!' );
      }else{
        if( dhSearch.Data().EndDate() <> this.Date() ){
          dhSearch.Data().EndDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: PanelPeriod/DateSelectorStart
Response OnChanged () id:Response_PanelPeriod_DateSelectorStart_OnChanged
{
  #keys: '[415136.0.893820858]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  QuillAction
  {
    Body:
    [*
      //日期改变后刷新显示
      if( this.Date() > DateSelectorEnd.Date() ){
        this.HintError( 'The start date cannot be later than the end date!' );
      }else{
        if( dhSearch.Data().StartDate() <> this.Date() ){
          dhSearch.Data().StartDate( this.Date() );
          DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
        }
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelTimeUnit_778/RadioButtonGroupUseForTimeUnit
Response OnChanged () id:Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged
{
  #keys: '[415136.0.893820855]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
  QuillAction
  {
    Body:
    [*
      //区间改变后刷新显示
      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
        dhSearch.Data().TimeUnit( this.BoundValue() );
        DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: PanelTimeUnit_778/RadioButtonGroupUseForTimeUnit
Response OnCreated () id:Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnCreated
{
  #keys: '[415136.0.893820854]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      this.ButtonValues( Translations::MP_GlobalParameters_Day() + ';' + Translations::MP_GlobalParameters_Week() + ';' + Translations::MP_GlobalParameters_Month() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormMachiningPipelineReport
{
  #keys: '[415136.0.893820723]'
  BaseType: 'WebForm'
  Children:
  [
    Component DataHolderTable
    {
      #keys: '[415136.0.893820797]'
      BaseType: 'WebDataHolder'
      Databinding: 'MachiningPipelineReport'
      Properties:
      [
        Taborder: 0
      ]
    }
    Component dhSearch
    {
      #keys: '[415136.0.893820823]'
      BaseType: 'WebDataHolder'
      Databinding: 'MachiningPipelineSearch'
      Properties:
      [
        Taborder: 1
      ]
    }
    #child: PanelHeader_832
    #child: PanelTable_141
  ]
  Properties:
  [
    Image: 'DOCUMENT_CONNECTION'
    Title: 'Machining pipeline report'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/Engine_pipleline_report.vw
@@ -61,29 +61,13 @@
                {
                  attributes
                  {
                    attribute_ProductionQuantity
                    attribute_Value
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'ProductionQuantity'
                    }
                    attribute_DemandQuantity
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 1
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DemandQuantity'
                    }
                    attribute_InventoryQuantity
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 2
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'InventoryQuantity'
                      attribute: 'Value'
                    }
                  }
                }
@@ -106,122 +90,152 @@
          }
        }
      }
      form_FormEnginePipelineProduction
      form_FormMachiningPipelineReport
      {
        title: 'QMacroPlanner::FormEnginePipelineProduction'
        title: 'QMacroPlanner::FormMachiningPipelineReport'
        shown: true
        componentID: 'QMacroPlanner::FormEnginePipelineProduction'
        componentID: 'QMacroPlanner::FormMachiningPipelineReport'
        layout
        {
          mode: 'open'
          rowPosition: 16
          rowSpan: 6
          rowSpan: 19
          columnPosition: 1
          columnSpan: 6
          columnSpan: 12
        }
        components
        {
          FormEnginePipelineProduction_ListEnginePipelineProduction
          FormMachiningPipelineReport_PanelHeader
          {
            sizeRatio: 1
          }
          FormEnginePipelineProduction_DataSetLevelEnginePipelineProduction
          FormMachiningPipelineReport_PanelSearch
          {
            groupDepth: -1
            column_EngineType
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelPeriod
            {
              columnId: 'EngineType'
              dataPath: 'EngineType'
              dataType: 'string'
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelTimeUnit
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelExport
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_PanelTable
          {
            sizeRatio: 1
          }
          FormMachiningPipelineReport_MatrixEditorTable
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QMacroPlanner::FormMachiningPipelineReport.MatrixEditorTable'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_CCAssemblyPlanQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
              index: 0
              subtotals: ''
              width: 150
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCAssemblyPlanQty'
            }
            column_Period
                    attribute_CCProductionQty
            {
              columnId: 'Period'
              dataPath: 'Period'
              dataType: 'date'
                      type: 'MatrixEditorWebApiCellDataModelInterest'
              index: 1
              subtotals: ''
              width: 150
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCProductionQty'
            }
            column_DLProduction
                    attribute_CCTransferQty
            {
              columnId: 'DLProduction'
              dataPath: 'DLProduction'
              dataType: 'real'
                      type: 'MatrixEditorWebApiCellDataModelInterest'
              index: 2
              subtotals: ''
              width: 150
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCTransferQty'
            }
            column_CCProduction
                    attribute_CCInventoryQty
            {
              columnId: 'CCProduction'
              dataPath: 'CCProduction'
              dataType: 'real'
                      type: 'MatrixEditorWebApiCellDataModelInterest'
              index: 3
              subtotals: ''
              width: 150
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'CCInventoryQty'
                    }
                    attribute_DLAssemblyPlanQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 4
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLAssemblyPlanQty'
                    }
                    attribute_DLProductionQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 5
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLProductionQty'
                    }
                    attribute_DLTransferQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 6
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLTransferQty'
                    }
                    attribute_DLInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 7
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DLInventoryQty'
                    }
                    attribute_TotalInventoryQty
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 8
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'TotalInventoryQty'
            }
          }
        }
                columns
                {
                  sorting
                  {
                    criteria: "datamember:'Index'"
      }
      form_FormEnginePipelineDemand
      {
        title: 'QMacroPlanner::FormEnginePipelineDemand'
        shown: true
        componentID: 'QMacroPlanner::FormEnginePipelineDemand'
        layout
        {
          mode: 'open'
          rowPosition: 16
          rowSpan: 6
          columnPosition: 7
          columnSpan: 6
        }
        components
                rows
        {
          FormEnginePipelineDemand_ListEnginePipelineDemand
                  sorting
          {
                    criteria: "datamember:'RowNr'"
          }
          FormEnginePipelineDemand_DataSetLevelEnginePipelineDemand
          {
            groupDepth: -1
            column_EngineType
            {
              columnId: 'EngineType'
              dataPath: 'EngineType'
              dataType: 'string'
              index: 0
              subtotals: ''
              width: 150
            }
            column_Model
            {
              columnId: 'Model'
              dataPath: 'Model'
              dataType: 'string'
              index: 1
              subtotals: ''
              width: 150
            }
            column_Period
            {
              columnId: 'Period'
              dataPath: 'Period'
              dataType: 'date'
              index: 2
              subtotals: ''
              width: 150
            }
            column_Quantity
            {
              columnId: 'Quantity'
              dataPath: 'Quantity'
              dataType: 'real'
              index: 3
              subtotals: ''
              width: 150
            }
          }
        }