yypsybs
2023-09-27 3671a67ca2d29c831e5a2754f7be0d62429262f1
scenarioManager关系移至globalOtdTable
已重命名4个文件
已添加21个文件
已修改30个文件
已删除11个文件
839 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_Capa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_Ca.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_Capacity.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_Capaci.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable.qbl 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_Ca.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTabl.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_MPSync_MPSync_CapacityAndSal.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_Capaci.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_Capac.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_G.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_MPSync_MPSync_Ca.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_Capaci.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_YuxTest_MPSync_MPSync_YuxTest.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart#156.qbl 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart.qbl 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompare.qbl 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompareExport.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter#323.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter0.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/DefaultValue_PlaceOfProductionOfEvaporation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MappingSaleBudge/StaticMethod_Export.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestBoolean.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestDateTime.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestNumber.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestReal.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/Attribute_TestString.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/StaticMethod_Export.qbl 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/StaticMethod_ExportTest#887.qbl 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_YuxTest/_ROOT_Type_YuxTest.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportTest_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC#663.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_Capa.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeChartElement_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeChartElement
{
  #keys: '1[414384.0.921264786]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264788][414384.0.921264787][414384.0.921264789]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeChartElement
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeChartElement
  {
    #keys: '3[414384.0.921264791][414384.0.921264790][414384.0.921264792]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartElement_ScenarioManager_ScenarioManager_Ca.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_Capacity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeChartRow_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeChartRow
{
  #keys: '1[414384.0.921264769]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264771][414384.0.921264770][414384.0.921264772]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeChartRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeChartRow
  {
    #keys: '3[414384.0.921264774][414384.0.921264773][414384.0.921264775]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeChartRow_ScenarioManager_ScenarioManager_Capaci.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeCompareItemColumn_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeCompareItemColumn
{
  #keys: '1[414384.0.921264730]'
  ProceduralSequenceRelationStrategy
  {
    #keys: '13[0.0.0][414384.0.921264749][414384.0.921264743][414384.0.921264750][414384.0.921264744][414384.0.921264751][414384.0.921264745][414384.0.921264752][414384.0.921264746][414384.0.921264753][414384.0.921264747][414384.0.921264754][414384.0.921264748]'
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264732][414384.0.921264731][414384.0.921264733]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeCompareItemColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeCompareItemColumn
  {
    #keys: '3[414384.0.921264735][414384.0.921264734][414384.0.921264736]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemColumn_ScenarioManager_ScenarioManag.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_Ca.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeCompareItemRow_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeCompareItemRow
{
  #keys: '1[414384.0.921264713]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264715][414384.0.921264714][414384.0.921264716]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeCompareItemRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeCompareItemRow
  {
    #keys: '3[414384.0.921264718][414384.0.921264717][414384.0.921264719]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeCompareItemRow_ScenarioManager_ScenarioManager_.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTabl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterBusinessType_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterBusinessType
{
  #keys: '1[414384.0.921264696]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264698][414384.0.921264697][414384.0.921264699]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterBusinessType
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterBusinessType
  {
    #keys: '3[414384.0.921264701][414384.0.921264700][414384.0.921264702]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterBusinessType_MPSync_MPSync_CapacityAndSal.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_Capaci.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterItem_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterItem
{
  #keys: '1[414384.0.921264679]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264681][414384.0.921264680][414384.0.921264682]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterItem
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterItem
  {
    #keys: '3[414384.0.921264684][414384.0.921264683][414384.0.921264685]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterItem_ScenarioManager_ScenarioManager_Capa.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_Capac.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterMonth_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterMonth
{
  #keys: '1[414384.0.921264662]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264664][414384.0.921264663][414384.0.921264665]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterMonth
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterMonth
  {
    #keys: '3[414384.0.921264667][414384.0.921264666][414384.0.921264668]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterMonth_ScenarioManager_ScenarioManager_Cap.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_G.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
{
  #keys: '1[414384.0.921264645]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264647][414384.0.921264646][414384.0.921264648]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterPlaceOfProductionOfArray
  {
    #keys: '3[414384.0.921264650][414384.0.921264649][414384.0.921264651]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray_MPSync_MPSync_Ca.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_Capaci.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation CapacityAndSaleBudgeFilterYear_GlobalOTDTable_GlobalOTDTable_CapacityAndSaleBudgeFilterYear
{
  #keys: '1[414384.0.921264628]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414384.0.921264630][414384.0.921264629][414384.0.921264631]'
    Cardinality: '0to1'
    ObjectDefinition: CapacityAndSaleBudgeFilterYear
    OwningSide: 'Reference'
  }
  RelationSide.RightSide CapacityAndSaleBudgeFilterYear
  {
    #keys: '3[414384.0.921264633][414384.0.921264632][414384.0.921264634]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_CapacityAndSaleBudgeFilterYear_ScenarioManager_ScenarioManager_Capa.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_YuxTest_MPSync_MPSync_YuxTest.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation YuxTest_MPSync_MPSync_YuxTest
{
  #keys: '1[414384.0.915854641]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MPSync
  {
    #keys: '3[414384.0.915854643][414384.0.915854642][414384.0.915854644]'
    Cardinality: '0to1'
    ObjectDefinition: YuxTest
    OwningSide: 'Reference'
  }
  RelationSide.RightSide YuxTest
  {
    #keys: '3[414384.0.915854646][414384.0.915854645][414384.0.915854647]'
    Cardinality: '1toN'
    ObjectDefinition: MPSync
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_CapacityAndSaleBudgeChartElement/StaticMethod_TestData.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod TestData (
  ScenarioManager scenarioManager
  GlobalOTDTable parent
)
{
  Description: '生成测试数据'
@@ -11,7 +11,7 @@
    
    info( "生成年度产销预算报表测试数据" )
    
    scenarioManager.CapacityAndSaleBudgeChartElement( relflush );
    parent.CapacityAndSaleBudgeChartElement( relflush );
    
    for( sc := 0; sc < 4; sc := sc + 1 ) {
      scenarioName := "SC" + [String]sc;
@@ -19,7 +19,7 @@
        businessTypeString := "BT" + [String]i;
        for( j := 1; j <= 12; j := j + 1 ) {
          monthString := "MONTH" + ifexpr( j < 10, "0" + [String]j, [String]j );
          scenarioManager.CapacityAndSaleBudgeChartElement( relnew,
          parent.CapacityAndSaleBudgeChartElement( relnew,
                                                            BusinessTypeOrPlaceOfProductionOfArray := businessTypeString, 
                                                            TimeStringAndScenarioName := monthString + " - " + scenarioName, 
                                                            Quantity := Real::Random( 20.0, 30.0 ) );
_Main/BL/Type_CapacityAndSaleBudgeChartRow/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  ScenarioManager scenarioManager,
  GlobalOTDTable parent,
  String businessType,
  String placeOfProductionOfArray
) as CapacityAndSaleBudgeChartRow
@@ -9,9 +9,9 @@
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    value := select( scenarioManager, CapacityAndSaleBudgeChartRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    value := select( parent, CapacityAndSaleBudgeChartRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    if( isnull( value ) ) {
      value := scenarioManager.CapacityAndSaleBudgeChartRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );
      value := parent.CapacityAndSaleBudgeChartRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );
    } 
    return value;
  *]
_Main/BL/Type_CapacityAndSaleBudgeCompareItemColumn/StaticMethod_CreateIfNotExist.qbl
@@ -1,16 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  ScenarioManager manager,
  GlobalOTDTable parent,
  String columnName
) as CapacityAndSaleBudgeCompareItemColumn
{
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    value := select( manager, CapacityAndSaleBudgeCompareItemColumn, item, item.ColumnName() = columnName );
    value := select( parent, CapacityAndSaleBudgeCompareItemColumn, item, item.ColumnName() = columnName );
    if( isnull( value ) ) {
      value := manager.CapacityAndSaleBudgeCompareItemColumn( relnew, ColumnName := columnName );
      value := parent.CapacityAndSaleBudgeCompareItemColumn( relnew, ColumnName := columnName );
    }
    return value;
  *]
_Main/BL/Type_CapacityAndSaleBudgeCompareItemRow/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  ScenarioManager scenarioManager,
  GlobalOTDTable parent,
  String businessType,
  String placeOfProductionOfArray
) as CapacityAndSaleBudgeCompareItemRow
@@ -9,9 +9,9 @@
  TextBody:
  [*
    // yypsybs Sep-18-2023 (created)
    value := select( scenarioManager, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    value := select( parent, CapacityAndSaleBudgeCompareItemRow, row, row.BusinessType() = businessType and row.PlaceOfProductionOfArray() = placeOfProductionOfArray );
    if( isnull( value ) ) {
      value := scenarioManager.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );
      value := parent.CapacityAndSaleBudgeCompareItemRow( relnew, BusinessType := businessType, PlaceOfProductionOfArray := placeOfProductionOfArray );
    } 
    return value;
  *]
_Main/BL/Type_CapacityAndSaleBudgeFilterBusinessType/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  MPSync parent,
  GlobalOTDTable parent,
  String value
)
{
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  ScenarioManager parent,
  GlobalOTDTable parent,
  String itemName
)
{
_Main/BL/Type_CapacityAndSaleBudgeFilterItem/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initial (
  ScenarioManager parent
  GlobalOTDTable parent
)
{
  Description: '初始化对比项'
_Main/BL/Type_CapacityAndSaleBudgeFilterMonth/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initial (
  ScenarioManager parent
  GlobalOTDTable parent
)
{
  Description: '初始化年份'
_Main/BL/Type_CapacityAndSaleBudgeFilterPlaceOfProductionOfArray/StaticMethod_CreateIfNotExist.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CreateIfNotExist (
  MPSync parent,
  GlobalOTDTable parent,
  String value
)
{
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initial (
  ScenarioManager parent
  GlobalOTDTable parent
)
{
  Description: '初始化年份'
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart#156.qbl
ÎļþÃû´Ó _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart#95.qbl ÐÞ¸Ä
@@ -25,27 +25,27 @@
    // é¢æ¿åŸºåœ°;事业部
    info( byBusinessTypeOrByOrgCode );
    traverse( businessTypes, Elements, businessType ) {
      info( "businessType : " + businessType.BusinessType() );
      debuginfo( "businessType : " + businessType.BusinessType() );
    }
    traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
      info( "placeOfProductionOfArray : " + placeOfProductionOfArray.PlaceOfProductionOfArray() );
      debuginfo( "placeOfProductionOfArray : " + placeOfProductionOfArray.PlaceOfProductionOfArray() );
    }
    traverse( macroPlans, Elements, macroPlan ) {
      info( "macroPlan : " + macroPlan.ScenarioName() );
      debuginfo( "macroPlan : " + macroPlan.ScenarioName() );
    }
    // å¹´ä»½ä¸é€‰æ—¶å…¨é€‰
    if( years.Size() = 0 ) {
      years := selectsortedset( this, CapacityAndSaleBudgeFilterYear, item, true, item.YearNo() );
    }
    traverse( years, Elements, year ) {
      info( "yearNo : " + [String]year.YearNo() );
      debuginfo( "yearNo : " + [String]year.YearNo() );
    }
    // æœˆä»½ä¸é€‰æ—¶å…¨é€‰
    if( months.Size() = 0 ) {
      months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, true, item.MonthNo() );
    }
    traverse( months, Elements, month ) {
      info( "monthNo : " + [String]month.MonthNo() );
      debuginfo( "monthNo : " + [String]month.MonthNo() );
    }
    
    // ====清理旧数据====
@@ -74,7 +74,7 @@
    businessTypeList := selectuniquevalues( historyData, Elements, item, item.BusinessType() );
    // ç”Ÿæˆå›¾è¡¨å…ƒç´ 
    traverse( years, Elements, year ) {
      info( "process year start : " + [String]year.YearNo() );
      debuginfo( "process year start : " + [String]year.YearNo() );
      if( byBusinessTypeOrByOrgCode = "面板基地" and groupBy = "å¹´" ) {
        // ç›®æ ‡
        traverse( placeOfProductionOfArrayList, Elements, placeOfProductionOfArray ) {
@@ -232,7 +232,7 @@
      }
      if ( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "季度" ) {
        for( seasonNo := 1; seasonNo <= 4; seasonNo := seasonNo + 1 ) {
          info( "process season start : " + [String]seasonNo );
          debuginfo( "process season start : " + [String]seasonNo );
          traverse( businessTypeList, Elements, businessType ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
            this.CapacityAndSaleBudgeChartElement( relnew, 
@@ -259,7 +259,7 @@
      }
      if ( byBusinessTypeOrByOrgCode = "事业部" and groupBy = "月" ) {
        traverse( months, Elements, month ) {
          info( "process month start : " + [String]month.MonthNo() );
          debuginfo( "process month start : " + [String]month.MonthNo() );
          monthNoString := ifexpr( month.MonthNo() <= 9, "0" + [String]month.MonthNo(), [String]month.MonthNo() );
          traverse( businessTypeList, Elements, businessType ) {
            productCodeList := CapacityAndSaleBudgeChartRow::GetProductCodesByBusinessType( rows, businessType );
@@ -282,10 +282,10 @@
                                                     ); 
            }            
          }
          info( "process month end : " + [String]month.MonthNo() );
          debuginfo( "process month end : " + [String]month.MonthNo() );
        }
      }
      info( "process year end : " + [String]year.YearNo() )
      debuginfo( "process year end : " + [String]year.YearNo() )
    }
    //info( "CapacityAndSaleBudgeChartElement : " + [String]selectset( this, CapacityAndSaleBudgeChartElement, item, true ).Size() );
    //traverse( this, CapacityAndSaleBudgeChartRow, row ) {
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeChart.qbl
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompare.qbl
ÎļþÃû´Ó _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompare.qbl ÐÞ¸Ä
@@ -22,23 +22,23 @@
      months := selectsortedset( this, CapacityAndSaleBudgeFilterMonth, item, item.MonthNo() );
    }
    traverse( macroPlans, Elements, item ) {
      info( "scenario : " + item.ScenarioName() );
      debuginfo( "scenario : " + item.ScenarioName() );
    }
    traverse( items, Elements, item ) {
      info( "item : " + item.ItemName() );
      debuginfo( "item : " + item.ItemName() );
    }
    traverse( years, Elements, item ) {
      info( "year : " + [String]item.YearNo() );
      debuginfo( "year : " + [String]item.YearNo() );
    }
    traverse( months, Elements, item ) {
      info( "month : " + [String]item.MonthNo() );
      debuginfo( "month : " + [String]item.MonthNo() );
    }
    // ====清理旧数据====
    this.CapacityAndSaleBudgeCompareItemRow( relflush );
    this.CapacityAndSaleBudgeCompareItemColumn( relflush );
    // ====汇总所有出现的产品====
    historyData := selectset( mpSync, MappingCapacityAndSaleBudge, item, true );
    info( "historyData : " + [String]historyData.Size() )
    debuginfo( "historyData : " + [String]historyData.Size() )
    traverse( historyData, Elements, one ) {
      productCode := one.ProductCode();
      MappingBOM::CreateTestData( mappingParent, "事业部" + [String](productCode.Length() mod 3), [String](productCode.Length() mod 4), productCode );
@@ -52,13 +52,13 @@
        // è®°å½•每行包含哪些product
        CapacityAndSaleBudgeCompareItemRowProduct::CreateIfNotExist( row, productCode );
      } else {
        info( "no boms for product : " + productCode );
        debuginfo( "no boms for product : " + productCode );
      }
    }
    info( "CapacityAndSaleBudgeCompareItemRow : " + [String]selectset( this, CapacityAndSaleBudgeCompareItemRow, item, true ).Size() );
    debuginfo( "CapacityAndSaleBudgeCompareItemRow : " + [String]selectset( this, CapacityAndSaleBudgeCompareItemRow, item, true ).Size() );
    // ====从左向右生成列头与内容====
    // äº‹ä¸šéƒ¨ï¼Œç»„织
    info( "dealing businessType and placeOfProductionOfArray" )
    debuginfo( "dealing businessType and placeOfProductionOfArray" )
    columnBusinessType := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "事业部" );
    columnPlaceOfProductionOfArray := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板基地" );
    traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -72,9 +72,9 @@
    info( "dealing é¢æ¿åˆ†é…é‡" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "面板分配量" ) ) {
      traverse( years, Elements, year ) {
        info( "面板分配量" + [String]year.YearNo() + "å¹´" );
        debuginfo( "面板分配量" + [String]year.YearNo() + "å¹´" );
        // åŽ†å²æ•°æ®
        info( "面板分配量" + [String]year.YearNo() + "年历史数据" );
        debuginfo( "面板分配量" + [String]year.YearNo() + "年历史数据" );
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "面板分配量-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -89,7 +89,7 @@
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
        info( "面板分配量" + [String]year.YearNo() + "å¹´S&OP数据" );
        debuginfo( "面板分配量" + [String]year.YearNo() + "å¹´S&OP数据" );
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
@@ -112,12 +112,12 @@
      }
    }
    // å¹´åº¦é”€å”®é¢
    info( "dealing é”€å”®é¢" )
    debuginfo( "dealing é”€å”®é¢" )
    if( CapacityAndSaleBudgeFilterItem::Contains( items, "销售额" ) ) {
      traverse( years, Elements, year ) {
        info( "销售额" + [String]year.YearNo() + "å¹´" );
        debuginfo( "销售额" + [String]year.YearNo() + "å¹´" );
        // åŽ†å²æ•°æ®
        info( "销售额" + [String]year.YearNo() + "年历史数据" );
        debuginfo( "销售额" + [String]year.YearNo() + "年历史数据" );
        traverse( months, Elements, month ) {
          columnMonth := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "对外销售额-" + [String]year.YearNo() + "å¹´-" + [String]month.MonthNo() + "月-年度预算" );
          traverse( this, CapacityAndSaleBudgeCompareItemRow, row ) {
@@ -132,7 +132,7 @@
          cell := columnYear.CapacityAndSaleBudgeCompareItemCell( relnew, CellContent := [String]cellReal );
          cell.CapacityAndSaleBudgeCompareItemRow( relset, row );
        }
        info( "销售额" + [String]year.YearNo() + "年历史数据S&OP数据" );
        debuginfo( "销售额" + [String]year.YearNo() + "年历史数据S&OP数据" );
        // S&OP数据
        traverse( macroPlans, Elements, macroPlan ) {
          traverse( months, Elements, month ) {
@@ -154,7 +154,7 @@
      }
    }
    // å¤§å¼ ç›ˆåˆ©é¢
    info( "dealing å¤§å¼ ç›ˆåˆ©é¢" )
    debuginfo( "dealing å¤§å¼ ç›ˆåˆ©é¢" )
    traverse( years, Elements, year ) {
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "大张盈利额-" + [String]year.YearNo() + "å¹´-年度预算" );
@@ -174,7 +174,7 @@
      }
    }
    // äº§å“ç›ˆåˆ©é¢
    info( "dealing äº§å“ç›ˆåˆ©é¢" )
    debuginfo( "dealing äº§å“ç›ˆåˆ©é¢" )
    traverse( years, Elements, year ) {
      // åŽ†å²æ•°æ®
      columnYear := CapacityAndSaleBudgeCompareItemColumn::CreateIfNotExist( this, "产品盈利额-" + [String]year.YearNo() + "å¹´-年度预算" );
@@ -195,7 +195,7 @@
    }
    
    // è®¾ç½®rowNo和columnNo
    info( "set rowNo and columnNo" );
    debuginfo( "set rowNo and columnNo" );
    rowNo := 1;
    rowSorted := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, item, item.PlaceOfProductionOfArray() + "_" + item.BusinessType() );
    traverse( rowSorted, Elements, item ) {
@@ -207,6 +207,6 @@
      item.ColumnNo( columnNo );
      columnNo := columnNo + 1;
    }
    info( "done" );
    debuginfo( "done" );
  *]
}
_Main/BL/Type_GlobalDTOTable/Method_CapacityAndSaleBudgeCompareExport.qbl
ÎļþÃû´Ó _Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeCompareExport.qbl ÐÞ¸Ä
@@ -13,7 +13,7 @@
    // å¤„理column <column><name>物料编码</name><type>String</type></column>
    columnXml := ""
    traverse( this, CapacityAndSaleBudgeCompareItemColumn, column ) {
      info( "columnName : " + column.ColumnName() );
      debuginfo( "columnName : " + column.ColumnName() );
      columnXml := columnXml + "<column><name>" + column.ColumnName() + "</name><type>String</type></column>";
    }
    text := text + columnXml + "</table>"
@@ -24,7 +24,7 @@
    tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
    rows := selectsortedset( this, CapacityAndSaleBudgeCompareItemRow, row, row.PlaceOfProductionOfArray() + "_" + row.BusinessType() );
    traverse ( rows, Elements, row ) {
      info( "rowNo : " + [String]row.RowNo() );
      debuginfo( "rowNo : " + [String]row.RowNo() );
      traverse( row, CapacityAndSaleBudgeCompareItemCell, cell ) {
        ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, cell.CellContent(), cell.CapacityAndSaleBudgeCompareItemColumn().ColumnName() );  
      }
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter#323.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter.qbl
@@ -1,6 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method RefreshCapacityAndSaleBudgeFilter
Method RefreshCapacityAndSaleBudgeFilter (
  GlobalOTDTable globalOtdTable
)
{
  TextBody:
  [*
@@ -9,12 +11,12 @@
    businessTypes := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, item.BusinessType() );
    info( [String]businessTypes.Size() );
    traverse( businessTypes, Elements, businessType ) {
      CapacityAndSaleBudgeFilterBusinessType::CreateIfNotExist( this, businessType );
      CapacityAndSaleBudgeFilterBusinessType::CreateIfNotExist( globalOtdTable, businessType );
    }
    placeOfProductionOfArrays := selectuniquevalues( this, MappingCapacityAndSaleBudge, item, item.PlaceOfProductionOfArray() );
    info( [String]placeOfProductionOfArrays.Size() );
    traverse( placeOfProductionOfArrays, Elements, placeOfProductionOfArray ) {
      CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::CreateIfNotExist( this, placeOfProductionOfArray );
      CapacityAndSaleBudgeFilterPlaceOfProductionOfArray::CreateIfNotExist( globalOtdTable, placeOfProductionOfArray );
    }
  *]
}
_Main/BL/Type_MPSync/Method_RefreshCapacityAndSaleBudgeFilter0.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method RefreshCapacityAndSaleBudgeFilter (
  Boolean deleteBeforeCreate,
  GlobalOTDTable globalOtdTable
)
{
  TextBody:
  [*
    if( deleteBeforeCreate ) {
      globalOtdTable.CapacityAndSaleBudgeFilterBusinessType( relflush );
      globalOtdTable.CapacityAndSaleBudgeFilterPlaceOfProductionOfArray( relflush );
    }
    this.RefreshCapacityAndSaleBudgeFilter( globalOtdTable );
  *]
}
_Main/BL/Type_MappingSaleBudge/DefaultValue_PlaceOfProductionOfEvaporation.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_MappingSaleBudge/StaticMethod_Export.qbl
@@ -61,7 +61,7 @@
    }
    //---------------------------------------------------------------------------------------------
    xmlTemplate := xmlTemplate + "</table>";
    info( xmlTemplate );
    //info( xmlTemplate );
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
    XLS::SaveTable( tableHandle, OS::TempPath() + "MappingCapacityAndSaleBudge.xlsx" );
    file := OSFile::Construct();
_Main/BL/Type_YuxTest/Attribute_TestBoolean.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestBoolean
{
  #keys: '3[414384.0.915854691][414384.0.915854690][414384.0.915854692]'
  ValueType: Boolean
}
_Main/BL/Type_YuxTest/Attribute_TestDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestDate
{
  #keys: '3[414384.0.915854704][414384.0.915854703][414384.0.915854705]'
  ValueType: Date
}
_Main/BL/Type_YuxTest/Attribute_TestDateTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestDateTime
{
  #keys: '3[414384.0.915854714][414384.0.915854713][414384.0.915854715]'
  ValueType: DateTime
}
_Main/BL/Type_YuxTest/Attribute_TestNumber.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestNumber
{
  #keys: '3[414384.0.915854681][414384.0.915854680][414384.0.915854682]'
  ValueType: Number
}
_Main/BL/Type_YuxTest/Attribute_TestReal.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestReal
{
  #keys: '3[414384.0.915854668][414384.0.915854667][414384.0.915854669]'
  ValueType: Real
}
_Main/BL/Type_YuxTest/Attribute_TestString.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute TestString
{
  #keys: '3[414384.0.915854658][414384.0.915854657][414384.0.915854659]'
  ValueType: String
}
_Main/BL/Type_YuxTest/StaticMethod_Export.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
  YuxTests toExportList
) as String
{
  TextBody:
  [*
    // generate by generate_export_method.py
    xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?>
    <table>
      <name>YuxTest</name>
    ';
    convDateToString := DateToString::StandardConverter();
    convDateToString.SetCustomConversion();
    convDateToString.CustomFormatString( 'yyyy-MM-dd' );
    convDateTimeToString := DateTimeToString::StandardConverter();
    convDateTimeToString.SetCustomConversion();
    convDateTimeToString.CustomFormatString( 'yyyy-MM-dd HH:mm:ss' );
    info( "export start" );
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试数字</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testNumber := toExportItem.TestNumber();
      cellStr := '<cell value="' + [String]testNumber + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试小数</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testReal := toExportItem.TestReal();
      cellStr := '<cell value="' + [String]testReal + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试字符串</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testString := toExportItem.TestString();
      cellStr := '<cell value="' + testString + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试布尔</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testBoolean := toExportItem.TestBoolean();
      cellStr := '<cell value="' + [String]testBoolean + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试日期</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testDate := toExportItem.TestDate();
      cellStr := '<cell value="' + ifexpr( testDate = Date::MinDate(), "", convDateToString.Convert( testDate )) + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    columnStr := "<column><name>测试日期时间</name><type>String</type>";
    traverse( toExportList, Elements, toExportItem ) {
      testDateTime := toExportItem.TestDateTime();
      cellStr := '<cell value="' + ifexpr( testDateTime = DateTime::MinDateTime(), "", convDateTimeToString.Convert( testDateTime )) + '"/>';
      columnStr := columnStr + cellStr;
    }
    columnStr := columnStr + "</column>";
    xmlTemplate := xmlTemplate + columnStr;
    //---------------------------------------------------------------------------------------------
    xmlTemplate := xmlTemplate + "</table>";
    tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
    XLS::SaveTable( tableHandle, OS::TempPath() + "YuxTest.xlsx" );
    file := OSFile::Construct();
    file.Open( OS::TempPath() + "YuxTest.xlsx", "Read", true );
    data := file.ReadBinary()
    info( "export end" );
    return data.AsBase64EncodedString();
  *]
}
_Main/BL/Type_YuxTest/StaticMethod_ExportTest#887.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ExportTest (
  MPSync parent
) as String
{
  TextBody:
  [*
    // yypsybs Sep-25-2023 (created)
    list := selectset( parent, YuxTest, item, true );
    if( list.Size() = 0 ) {
      for( i := 0; i < 100; i := i + 1 ) {
        parent.YuxTest( relnew,
                        TestBoolean := ifexpr( Number::Random( 0, 1 ) = 1, true, false ),
                        TestDate :=   ifexpr( Number::Random( 0, 1 ) = 1, Date::MinDate(), Date::ActualDate() ),
                        TestDateTime :=   ifexpr( Number::Random( 0, 1 ) = 1,DateTime::MinDateTime(), DateTime::ActualTime() ),
                        TestNumber :=  Number::Random( 100, 200 ),
                        TestReal := Real::Random( 10.0, 20.0 ),
                        TestString := [String]Number::Random( 1000, 2000 )
                        );
      }
    }
    list := selectset( parent, YuxTest, item, true );
    return YuxTest::Export( list );
  *]
}
_Main/BL/Type_YuxTest/_ROOT_Type_YuxTest.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type YuxTest
{
  #keys: '5[414384.0.915854638][414384.0.915854636][0.0.0][414384.0.915854637][414384.0.915854639]'
  BaseType: Object
  StructuredName: 'YuxTests'
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -38,6 +38,6 @@
  ]
  Properties:
  [
    Taborder: 1
    Taborder: 2
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportTest_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: ButtonExportTest
Response OnClick () id:Response_FormCapacityAndSaleBudge_ButtonExportTest_OnClick
{
  #keys: '[414384.0.914711825]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MPSync );
  *]
  QuillAction
  {
    Body:
    [*
      base64 := YuxTest::ExportTest( MPSync );
      Application.Download( "result.xlsx", base64 );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
@@ -12,7 +12,7 @@
    [*
      MPSync::TestData( MPSync, MacroPlan );
      GlobalOTDTable.InitTestData();
      MPSync.RefreshCapacityAndSaleBudgeFilter();
      MPSync.RefreshCapacityAndSaleBudgeFilter( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
@@ -19,6 +19,18 @@
        Taborder: 0
      ]
    }
    Component ButtonExportTest
    {
      #keys: '[414384.0.914711826]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出测试'
        Taborder: 1
        Visible: false
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Component_ChartCapacityAndSaleBudgeChart.def
@@ -17,8 +17,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'CapacityAndSaleBudgeChartElement'
          ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
@@ -10,9 +10,9 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeChartElement::TestData( ScenarioManager );
      CapacityAndSaleBudgeChartElement::TestData( GlobalOTDTable );
      
      ScenarioManager.CapacityAndSaleBudgeChart( DataHolderMacroPlansForScenarioComparison.Data(),
      GlobalOTDTable.CapacityAndSaleBudgeChart( DataHolderMacroPlansForScenarioComparison.Data(),
                                                 DropDownSaleOrCapacity.Text(),
                                                 DropDownTimeGroup.Text(),
                                                 DropDownByBusinessTypeOrByOrgCode.Text(),
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Component_MatrixEditorCapacityAndSaleBudgeCompare.def
@@ -17,8 +17,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'CapacityAndSaleBudgeCompareItemColumn.CapacityAndSaleBudgeCompareItemCell'
          ]
@@ -44,8 +44,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'CapacityAndSaleBudgeCompareItemRow'
          ]
@@ -70,8 +70,8 @@
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            Source: 'ScenarioManager'
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'CapacityAndSaleBudgeCompareItemColumn'
          ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonCapacityAndSaleBudgeCompare_OnClick.def
@@ -14,7 +14,7 @@
      info( DataHolderCapacityAndSaleBudgeFilterItem.Data().Size() );
      info( DataHolderCapacityAndSaleBudgeFilterYear.Data().Size() );
      info( DataHolderCapacityAndSaleBudgeFilterMonth.Data().Size() );
      ScenarioManager.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(),
      GlobalOTDTable.CapacityAndSaleBudgeCompare( DataHolderMacroPlansForScenarioComparison.Data(),
                                                   DataHolderCapacityAndSaleBudgeFilterItem.Data(), 
                                                   DataHolderCapacityAndSaleBudgeFilterYear.Data(), 
                                                   DataHolderCapacityAndSaleBudgeFilterMonth.Data(),
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeCompare/Response_ButtonExportCompare_OnClick.def
@@ -13,7 +13,7 @@
  {
    Body:
    [*
      tableBinaryData := ScenarioManager.CapacityAndSaleBudgeCompareExport().AsBinaryData();
      tableBinaryData := GlobalOTDTable.CapacityAndSaleBudgeCompareExport().AsBinaryData();
      Application.Download( "年度产销预算对比.xlsx", tableBinaryData );
    *]
    GroupServerCalls: false
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Component_ListCapacityAndSaleBudgeFilterBusinessType.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MPSync'
        Source: 'MPSync'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterBusinessType'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterBusinessType/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnClick.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      MPSync.RefreshCapacityAndSaleBudgeFilter();
      MPSync.RefreshCapacityAndSaleBudgeFilter( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Component_ListCapacityAndSaleBudgeFilterItem.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'ScenarioManager'
        Source: 'ScenarioManager'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterItem'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterItem/Response_OnCreated.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeFilterItem::Initial( ScenarioManager );
      CapacityAndSaleBudgeFilterItem::Initial( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Component_ListCapacityAndSaleBudgeFilterMonth.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'ScenarioManager'
        Source: 'ScenarioManager'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterMonth'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterMonth/Response_OnCreated.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeFilterMonth::Initial( ScenarioManager );
      CapacityAndSaleBudgeFilterMonth::Initial( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Component_ListCapacityAndSaleBudgeFilterPlaceOfProductionOfArray.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MPSync'
        Source: 'MPSync'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterPlaceOfProductionOfArray'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterPlaceOfProductionOfArray/Response_listContextMenuCapacityAndSaleBudgeFilterYear_1_MenuRefresh_OnC#663.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      MPSync.RefreshCapacityAndSaleBudgeFilter();
      MPSync.RefreshCapacityAndSaleBudgeFilter( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Component_ListCapacityAndSaleBudgeFilterYear.def
@@ -11,8 +11,8 @@
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'ScenarioManager'
        Source: 'ScenarioManager'
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'CapacityAndSaleBudgeFilterYear'
      ]
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeFilterYear/Response_OnCreated.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      CapacityAndSaleBudgeFilterYear::Initial( ScenarioManager );
      CapacityAndSaleBudgeFilterYear::Initial( GlobalOTDTable );
    *]
  }
}