renhao
2023-10-24 7a8fd5ab0aad4a41a8898b7084b1bceb9a2a8a51
Merge branch 'dev'
已添加51个文件
已修改14个文件
已删除1个文件
1129 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_Global_InventorySupplyCategory_GlobalOTDTable_GlobalOTDTable_Global.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_InventorySupplyCategory_Global_MappingInventorySupply_Global.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_InventorySupplyCategory_Global_MappingProduct_MP_Global_Mapp.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_MAPISPIPCategory_GlobalOTDTable_GlobalOTDTable_Global_MAPISP.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_MAPISPIPCategory_Global_MappingActualProductInStockingPointI.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_MAPISPIPCategory_Global_MappingProduct_MP_Global_MappingProd.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_ProductCategory_GlobalOTDTable_GlobalOTDTable_Global_Product.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_ProductCategory_Global_MappingProduct_MP_Global_MappingProdu.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_ProductInLineCategory_GlobalOTDTable_GlobalOTDTable_Global_P.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_ProductInLineCategory_Global_MappingProductInLane_Global_Map.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_ProductInLineCategory_Global_MappingProduct_MP_Global_Mappin.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_StockingPointCostCategory_GlobalOTDTable_GlobalOTDTable_Glob.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_StockingPointCostCategory_Global_MappingProduct_MP_Global_Ma.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_StockingPointCostCategory_Global_MappingStockingPointCost_Gl.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_InventorySupplyCategory/Attribute_IsCommon.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_InventorySupplyCategory/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_InventorySupplyCategory/Function_CalcIsCommon.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_InventorySupplyCategory/StaticMethod_Create.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_InventorySupplyCategory/_ROOT_Type_Global_InventorySupplyCategory.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/Attribute_IsCommon.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/Attribute_KeyProduct.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/Function_CalcIsCommon.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/Function_CalcKeyProduct.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/StaticMethod_Create.qbl 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MAPISPIPCategory/_ROOT_Type_Global_MAPISPIPCategory.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/DeclarativeReferenceRelation_CalcGlobal_MAPISPIPCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingInventorySupply/DeclarativeReferenceRelation_CalcGlobal_InventorySupplyCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProductInLane/DeclarativeReferenceRelation_CalcGlobal_ProductInLineCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_InventorySupplyCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_MAPISPIPCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_ProductCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_ProductInLineCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_StockingPointCostCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingStockingPointCost/DeclarativeReferenceRelation_CalcGlobal_StockingPointCostCategory.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ProductCategory/Attribute_BusinessTypeName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ProductCategory/StaticMethod_Create.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ProductCategory/_ROOT_Type_Global_ProductCategory.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ProductInLineCategory/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ProductInLineCategory/StaticMethod_Create.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_ProductInLineCategory/_ROOT_Type_Global_ProductInLineCategory.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_StockingPointCostCategory/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_StockingPointCostCategory/StaticMethod_Create.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_StockingPointCostCategory/_ROOT_Type_Global_StockingPointCostCategory.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoASync.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingActualPISPIPData.qbl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingExternalSupplyData.qbl 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingInventoryValueAndCostData.qbl 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/Method_DoASyncMappingProductInLaneData.qbl 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/StaticMethod_DoASync#253.qbl 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/StaticMethod_DoASync#896.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/StaticMethod_DoASync.qbl 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_DataHolderAllScenario_OnDataChanged.def 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogDataDistribution/Component_pnlContent.def 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogDataDistribution/Method_DataDistribution.def 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogDataDistribution/Response_pnlActions_btnOk_OnClick.def 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button1_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button2_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button3_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button4_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button5_OnClick.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ButtonGenerateProductCategory_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/接口测试.vw 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_Global_InventorySupplyCategory_GlobalOTDTable_GlobalOTDTable_Global.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_InventorySupplyCategory_GlobalOTDTable_GlobalOTDTable_Global_InventorySupplyCategory
{
  #keys: '1[414702.1.220612437]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414702.1.220612439][414702.1.220612438][414702.1.220612440]'
    Cardinality: '0to1'
    ObjectDefinition: Global_InventorySupplyCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_InventorySupplyCategory
  {
    #keys: '3[414702.1.220612442][414702.1.220612441][414702.1.220612443]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_Global_InventorySupplyCategory_Global_MappingInventorySupply_Global.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_InventorySupplyCategory_Global_MappingInventorySupply_Global_MappingInventorySupply_Global_InventorySupplyCategory
{
  #keys: '1[414702.1.220612411]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingInventorySupply
  {
    #keys: '3[414702.1.220612413][414702.1.220612412][414702.1.220612414]'
    Cardinality: '1toN'
    ObjectDefinition: Global_InventorySupplyCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_InventorySupplyCategory
  {
    #keys: '3[414702.1.220612416][414702.1.220612415][414702.1.220612417]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingInventorySupply
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_InventorySupplyCategory_Global_MappingProduct_MP_Global_Mapp.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_InventorySupplyCategory_Global_MappingProduct_MP_Global_MappingProduct_MP_Global_InventorySupplyCategory
{
  #keys: '1[414702.1.220612424]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingProduct_MP
  {
    #keys: '3[414702.1.220612426][414702.1.220612425][414702.1.220612427]'
    Cardinality: '1toN'
    ObjectDefinition: Global_InventorySupplyCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_InventorySupplyCategory
  {
    #keys: '3[414702.1.220612429][414702.1.220612428][414702.1.220612430]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingProduct_MP
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_MAPISPIPCategory_GlobalOTDTable_GlobalOTDTable_Global_MAPISP.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_MAPISPIPCategory_GlobalOTDTable_GlobalOTDTable_Global_MAPISPIPCategory
{
  #keys: '1[414702.1.226768030]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414702.1.226768032][414702.1.226768031][414702.1.226768033]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MAPISPIPCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_MAPISPIPCategory
  {
    #keys: '3[414702.1.226768035][414702.1.226768034][414702.1.226768036]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_Global_MAPISPIPCategory_Global_MappingActualProductInStockingPointI.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_MAPISPIPCategory_Global_MappingActualProductInStockingPointInPeriod_Global_MappingActualProductInStockingPointInPeriod_Global_MAPISPIPCategory
{
  #keys: '1[414702.1.226768004]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingActualProductInStockingPointInPeriod
  {
    #keys: '3[414702.1.226768006][414702.1.226768005][414702.1.226768007]'
    Cardinality: '1toN'
    ObjectDefinition: Global_MAPISPIPCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_MAPISPIPCategory
  {
    #keys: '3[414702.1.226768009][414702.1.226768008][414702.1.226768010]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingActualProductInStockingPointInPeriod
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_MAPISPIPCategory_Global_MappingProduct_MP_Global_MappingProd.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_MAPISPIPCategory_Global_MappingProduct_MP_Global_MappingProduct_MP_Global_MAPISPIPCategory
{
  #keys: '1[414702.1.226768017]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingProduct_MP
  {
    #keys: '3[414702.1.226768019][414702.1.226768018][414702.1.226768020]'
    Cardinality: '1toN'
    ObjectDefinition: Global_MAPISPIPCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_MAPISPIPCategory
  {
    #keys: '3[414702.1.226768022][414702.1.226768021][414702.1.226768023]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingProduct_MP
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_ProductCategory_GlobalOTDTable_GlobalOTDTable_Global_Product.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_ProductCategory_GlobalOTDTable_GlobalOTDTable_Global_ProductCategory
{
  #keys: '1[414702.1.222746446]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414702.1.222746448][414702.1.222746447][414702.1.222746449]'
    Cardinality: '0to1'
    ObjectDefinition: Global_ProductCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_ProductCategory
  {
    #keys: '3[414702.1.222746451][414702.1.222746450][414702.1.222746452]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_Global_ProductCategory_Global_MappingProduct_MP_Global_MappingProdu.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_ProductCategory_Global_MappingProduct_MP_Global_MappingProduct_MP_Global_ProductCategory
{
  #keys: '1[414702.1.222746433]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingProduct_MP
  {
    #keys: '3[414702.1.222746435][414702.1.222746434][414702.1.222746436]'
    Cardinality: '1toN'
    ObjectDefinition: Global_ProductCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_ProductCategory
  {
    #keys: '3[414702.1.222746438][414702.1.222746437][414702.1.222746439]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingProduct_MP
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_ProductInLineCategory_GlobalOTDTable_GlobalOTDTable_Global_P.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_ProductInLineCategory_GlobalOTDTable_GlobalOTDTable_Global_ProductInLineCategory
{
  #keys: '1[414702.1.220556276]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414702.1.220556278][414702.1.220556277][414702.1.220556279]'
    Cardinality: '0to1'
    ObjectDefinition: Global_ProductInLineCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_ProductInLineCategory
  {
    #keys: '3[414702.1.220556281][414702.1.220556280][414702.1.220556282]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_Global_ProductInLineCategory_Global_MappingProductInLane_Global_Map.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_ProductInLineCategory_Global_MappingProductInLane_Global_MappingProductInLane_Global_ProductInLineCategory
{
  #keys: '1[414702.1.220556250]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingProductInLane
  {
    #keys: '3[414702.1.220556252][414702.1.220556251][414702.1.220556253]'
    Cardinality: '1toN'
    ObjectDefinition: Global_ProductInLineCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_ProductInLineCategory
  {
    #keys: '3[414702.1.220556255][414702.1.220556254][414702.1.220556256]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingProductInLane
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_ProductInLineCategory_Global_MappingProduct_MP_Global_Mappin.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_ProductInLineCategory_Global_MappingProduct_MP_Global_MappingProduct_MP_Global_ProductInLineCategory
{
  #keys: '1[414702.1.220556263]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingProduct_MP
  {
    #keys: '3[414702.1.220556265][414702.1.220556264][414702.1.220556266]'
    Cardinality: '1toN'
    ObjectDefinition: Global_ProductInLineCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_ProductInLineCategory
  {
    #keys: '3[414702.1.220556268][414702.1.220556267][414702.1.220556269]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingProduct_MP
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_StockingPointCostCategory_GlobalOTDTable_GlobalOTDTable_Glob.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_StockingPointCostCategory_GlobalOTDTable_GlobalOTDTable_Global_StockingPointCostCategory
{
  #keys: '1[414702.1.224718240]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[414702.1.224718242][414702.1.224718241][414702.1.224718243]'
    Cardinality: '0to1'
    ObjectDefinition: Global_StockingPointCostCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_StockingPointCostCategory
  {
    #keys: '3[414702.1.224718245][414702.1.224718244][414702.1.224718246]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_Global_StockingPointCostCategory_Global_MappingProduct_MP_Global_Ma.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_StockingPointCostCategory_Global_MappingProduct_MP_Global_MappingProduct_MP_Global_StockingPointCostCategory
{
  #keys: '1[414702.1.224718214]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingProduct_MP
  {
    #keys: '3[414702.1.224718216][414702.1.224718215][414702.1.224718217]'
    Cardinality: '1toN'
    ObjectDefinition: Global_StockingPointCostCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_StockingPointCostCategory
  {
    #keys: '3[414702.1.224718219][414702.1.224718218][414702.1.224718220]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingProduct_MP
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_Global_StockingPointCostCategory_Global_MappingStockingPointCost_Gl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation Global_StockingPointCostCategory_Global_MappingStockingPointCost_Global_MappingStockingPointCost_Global_StockingPointCostCategory
{
  #keys: '1[414702.1.224718227]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Global_MappingStockingPointCost
  {
    #keys: '3[414702.1.224718229][414702.1.224718228][414702.1.224718230]'
    Cardinality: '1toN'
    ObjectDefinition: Global_StockingPointCostCategory
    OwningSide: 'Reference'
  }
  RelationSide.RightSide Global_StockingPointCostCategory
  {
    #keys: '3[414702.1.224718232][414702.1.224718231][414702.1.224718233]'
    Cardinality: '0to1'
    ObjectDefinition: Global_MappingStockingPointCost
    OwningSide: 'Reference'
  }
}
_Main/BL/Type_Global_InventorySupplyCategory/Attribute_IsCommon.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsCommon
{
  #keys: '3[414702.1.228025354][414702.1.228025353][414702.1.228025355]'
  ValueType: Boolean
}
_Main/BL/Type_Global_InventorySupplyCategory/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[414702.1.220612402][414702.1.220612401][414702.1.220612403]'
  ValueType: String
}
_Main/BL/Type_Global_InventorySupplyCategory/Function_CalcIsCommon.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcIsCommon
{
  TextBody:
  [*
    // hongjli Oct-24-2023 (created)
    value := guard( select( this, Global_MappingProduct_MP, tempGMPMP, true ).IsCommon(), false );
    this.IsCommon( value );
  *]
}
_Main/BL/Type_Global_InventorySupplyCategory/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    globalOTDTable.Global_InventorySupplyCategory( relflush );
    productIDs := selectuniquevalues( globalOTDTable, Global_MappingInventorySupply,
                                      tempGMIS, true, tempGMIS.ProductID() );
    traverse ( productIDs, Elements, id ) {
      globalOTDTable.Global_InventorySupplyCategory( relnew, ProductID := id );
    }
  *]
}
_Main/BL/Type_Global_InventorySupplyCategory/_ROOT_Type_Global_InventorySupplyCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_InventorySupplyCategory
{
  #keys: '5[414702.1.220612398][414702.1.220612396][0.0.0][414702.1.220612397][414702.1.220612399]'
  BaseType: Object
  StructuredName: 'Global_InventorySupplyCategorys'
}
_Main/BL/Type_Global_MAPISPIPCategory/Attribute_IsCommon.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsCommon
{
  #keys: '3[414702.1.226768068][414702.1.226768067][414702.1.226768069]'
  ValueType: Boolean
}
_Main/BL/Type_Global_MAPISPIPCategory/Attribute_KeyProduct.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute KeyProduct
{
  #keys: '3[414702.1.226768051][414702.1.226768050][414702.1.226768052]'
  ValueType: Boolean
}
_Main/BL/Type_Global_MAPISPIPCategory/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[414702.1.226767995][414702.1.226767994][414702.1.226767996]'
  ValueType: String
}
_Main/BL/Type_Global_MAPISPIPCategory/Function_CalcIsCommon.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcIsCommon
{
  TextBody:
  [*
    // hongjli Oct-24-2023 (created)
    value := guard( select( this, Global_MappingProduct_MP, tempGMPMP, true ).IsCommon(), false );
    this.IsCommon( value );
  *]
}
_Main/BL/Type_Global_MAPISPIPCategory/Function_CalcKeyProduct.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcKeyProduct
{
  TextBody:
  [*
    // hongjli Oct-24-2023 (created)
    value := guard( select( this, Global_MappingProduct_MP, tempGMPMP, true ).KeyProduct(), false );
    this.KeyProduct( value );
  *]
}
_Main/BL/Type_Global_MAPISPIPCategory/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    globalOTDTable.Global_MAPISPIPCategory( relflush );
    productIDs := selectuniquevalues( globalOTDTable, Global_MappingActualProductInStockingPointInPeriod,
                                      tempGMAPISPIP, true, tempGMAPISPIP.ProductID() );
    traverse ( productIDs, Elements, id ) {
      globalOTDTable.Global_MAPISPIPCategory( relnew, ProductID := id );
    }
  *]
}
_Main/BL/Type_Global_MAPISPIPCategory/_ROOT_Type_Global_MAPISPIPCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_MAPISPIPCategory
{
  #keys: '5[414702.1.226767991][414702.1.226767989][0.0.0][414702.1.226767990][414702.1.226767992]'
  BaseType: Object
  StructuredName: 'Global_MAPISPIPCategorys'
}
_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/DeclarativeReferenceRelation_CalcGlobal_MAPISPIPCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_MAPISPIPCategory
{
  #keys: '1[414702.1.226768045]'
  Expression:
  [*
    targetGlobal_MAPISPIPCategory := select( this.GlobalOTDTable(), Global_MAPISPIPCategory, tempGMAPISPIPC,
                                             tempGMAPISPIPC.ProductID() = this.ProductID() );
    return targetGlobal_MAPISPIPCategory;
  *]
  Relation: Global_MAPISPIPCategory
}
_Main/BL/Type_Global_MappingInventorySupply/DeclarativeReferenceRelation_CalcGlobal_InventorySupplyCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_InventorySupplyCategory
{
  #keys: '1[414702.1.220612460]'
  Expression:
  [*
    targetGlobal_InventorySupplyCategory := select( this.GlobalOTDTable(), Global_InventorySupplyCategory, tempGISC,
                                                    tempGISC.ProductID() = this.ProductID() );
    return targetGlobal_InventorySupplyCategory;
  *]
  Relation: Global_InventorySupplyCategory
}
_Main/BL/Type_Global_MappingProductInLane/DeclarativeReferenceRelation_CalcGlobal_ProductInLineCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_ProductInLineCategory
{
  #keys: '1[414702.1.224718199]'
  Expression:
  [*
    targeGlobal_ProductInLineCategory := select( this.GlobalOTDTable(), Global_ProductInLineCategory, tempGPILC,
                                                 tempGPILC.ProductID() = this.ProductID() );
    return targeGlobal_ProductInLineCategory;
  *]
  Relation: Global_ProductInLineCategory
}
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_InventorySupplyCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_InventorySupplyCategory
{
  #keys: '1[414702.1.220612452]'
  Expression:
  [*
    targetGlobal_InventorySupplyCategory := select( this.GlobalOTDTable(), Global_InventorySupplyCategory, tempGISC,
                                                   tempGISC.ProductID() = this.ID() );
    return targetGlobal_InventorySupplyCategory;
  *]
  Relation: Global_InventorySupplyCategory
}
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_MAPISPIPCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_MAPISPIPCategory
{
  #keys: '1[414702.1.220556366]'
  Expression:
  [*
    targetGlobal_MAPISPIPCategory := select( this.GlobalOTDTable(), Global_MAPISPIPCategory, tempGMAPISPIPC,
                                             tempGMAPISPIPC.ProductID() = this.ID() );
    return targetGlobal_MAPISPIPCategory;
  *]
  Relation: Global_MAPISPIPCategory
}
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_ProductCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_ProductCategory
{
  #keys: '1[414702.1.223351035]'
  Expression:
  [*
    targetGlobal_ProductCategory := select( this.GlobalOTDTable(), Global_ProductCategory, tempGPC,
                                            tempGPC.BusinessTypeName() = this.BusinessType() );
    return targetGlobal_ProductCategory;
  *]
  Relation: Global_ProductCategory
}
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_ProductInLineCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_ProductInLineCategory
{
  #keys: '1[414702.1.220556292]'
  Expression:
  [*
    targetGlobal_ProductInLineCategory := select( this.GlobalOTDTable(), Global_ProductInLineCategory, tempGPILC,
                                                  tempGPILC.ProductID() = this.ID() );
    return targetGlobal_ProductInLineCategory;
  *]
  Relation: Global_ProductInLineCategory
}
_Main/BL/Type_Global_MappingProduct_MP/DeclarativeReferenceRelation_CalcGlobal_StockingPointCostCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_StockingPointCostCategory
{
  #keys: '1[414702.1.224718256]'
  Expression:
  [*
    targetGlobal_StockingPointCostCategory := select( this.GlobalOTDTable(), Global_StockingPointCostCategory, tempGSPCC,
                                                      tempGSPCC.ProductID() = this.ID() );
    return targetGlobal_StockingPointCostCategory;
  *]
  Relation: Global_StockingPointCostCategory
}
_Main/BL/Type_Global_MappingStockingPointCost/DeclarativeReferenceRelation_CalcGlobal_StockingPointCostCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
DeclarativeReferenceRelation CalcGlobal_StockingPointCostCategory
{
  #keys: '1[414702.1.224718261]'
  Expression:
  [*
    targetGlobal_StockingPointCostCategory := select( this.GlobalOTDTable(), Global_StockingPointCostCategory, tempGSPCC,
                                                      tempGSPCC.ProductID() = this.ProductID() );
    return targetGlobal_StockingPointCostCategory;
  *]
  Relation: Global_StockingPointCostCategory
}
_Main/BL/Type_Global_ProductCategory/Attribute_BusinessTypeName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute BusinessTypeName
{
  #keys: '3[414702.1.223351026][414702.1.223351025][414702.1.223351027]'
  ValueType: String
}
_Main/BL/Type_Global_ProductCategory/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    globalOTDTable.Global_ProductCategory( relflush );
    businessTypes := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, tempGMPMP, true, tempGMPMP.BusinessType() );
    traverse ( businessTypes, Elements, bt ) {
      globalOTDTable.Global_ProductCategory( relnew, BusinessTypeName := bt );
    }
  *]
}
_Main/BL/Type_Global_ProductCategory/_ROOT_Type_Global_ProductCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_ProductCategory
{
  #keys: '5[414702.1.222746430][414702.1.222746428][0.0.0][414702.1.222746429][414702.1.222746431]'
  BaseType: Object
  StructuredName: 'Global_ProductCategorys'
}
_Main/BL/Type_Global_ProductInLineCategory/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[414702.1.220556241][414702.1.220556240][414702.1.220556242]'
  ValueType: String
}
_Main/BL/Type_Global_ProductInLineCategory/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    globalOTDTable.Global_ProductInLineCategory( relflush );
    productIDs := selectuniquevalues( globalOTDTable, Global_MappingProductInLane, tempGMPIL, true, tempGMPIL.ProductID() );
    traverse ( productIDs, Elements, id ) {
      globalOTDTable.Global_ProductInLineCategory( relnew, ProductID := id );
    }
  *]
}
_Main/BL/Type_Global_ProductInLineCategory/_ROOT_Type_Global_ProductInLineCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_ProductInLineCategory
{
  #keys: '5[414702.1.220556230][414702.1.220556228][0.0.0][414702.1.220556229][414702.1.220556231]'
  BaseType: Object
  StructuredName: 'Global_ProductInLineCategorys'
}
_Main/BL/Type_Global_StockingPointCostCategory/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[414702.1.224718205][414702.1.224718204][414702.1.224718206]'
  ValueType: String
}
_Main/BL/Type_Global_StockingPointCostCategory/StaticMethod_Create.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  GlobalOTDTable globalOTDTable
)
{
  TextBody:
  [*
    globalOTDTable.Global_StockingPointCostCategory( relflush );
    productIDs := selectuniquevalues( globalOTDTable, Global_MappingStockingPointCost, tempGMSPC, true, tempGMSPC.ProductID() );
    traverse ( productIDs, Elements, id ) {
      globalOTDTable.Global_StockingPointCostCategory( relnew, ProductID := id );
    }
  *]
}
_Main/BL/Type_Global_StockingPointCostCategory/_ROOT_Type_Global_StockingPointCostCategory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type Global_StockingPointCostCategory
{
  #keys: '5[414702.1.220556235][414702.1.220556233][0.0.0][414702.1.220556234][414702.1.220556236]'
  BaseType: Object
  StructuredName: 'Global_StockingPointCostCategorys'
}
_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoASync.qbl
@@ -2,7 +2,8 @@
#parent: #root
StaticMethod DoASync (
  MacroPlan macroPlan,
  const GlobalOTDTable globalOTDTable
  const GlobalOTDTable globalOTDTable,
  String businessTypeName
)
{
  TextBody:
@@ -11,6 +12,6 @@
    //info( "ActualPISPIP Finished, Start InventoryCost Data Broker" );
    //macroPlan.Broker_OTD_InventoryCost().Execute();
    info( "InventoryCost Data Broker Finished, Start InventoryCost Mapping" );
    macroPlan.DoASyncMappingInventoryValueAndCostData(globalOTDTable);
    macroPlan.DoASyncMappingInventoryValueAndCostData(globalOTDTable,businessTypeName);
  *]
}
_Main/BL/Type_MacroPlan/Method_DoASyncMappingActualPISPIPData.qbl
@@ -10,11 +10,21 @@
  TextBody:
  [*
    // renhao Aug-14-2023 (created)
    listtodeal := selectset( globalOTDTable,
                             Global_MappingActualProductInStockingPointInPeriod,
                             actual,
                             ( actual.ActualInventoryLevelEnd() > 0 ) and
                             ( organcodelist.Find( actual.StockingPointID().SubString( 0, 3 ) ) >= 0 ) );
    listtodeal := construct( Global_MappingActualProductInStockingPointInPeriods, constcontent );
    if ( businessTypes.Size() > 0 ) {
      businessTypeName := businessTypes.Element( 0 );
      targetGlobal_ProductCategory := select( globalOTDTable, Global_ProductCategory, tempGPC, tempGPC.BusinessTypeName() = businessTypeName );
      listtodeal := selectset( targetGlobal_ProductCategory, Global_MappingProduct_MP.Global_MAPISPIPCategory.Global_MappingActualProductInStockingPointInPeriod,
                               tempGMPIL,
                               ( tempGMPIL.ActualInventoryLevelEnd() > 0 ) and
                               ( organcodelist.Find( tempGMPIL.StockingPointID().SubString( 0, 3 ) ) >= 0 ) );
    } else {
      listtodeal := selectset( globalOTDTable,
                               Global_MappingActualProductInStockingPointInPeriod,
                               actual,
                               ( actual.ActualInventoryLevelEnd() > 0 ) and
                               ( organcodelist.Find( actual.StockingPointID().SubString( 0, 3 ) ) >= 0 ) );
    }
    totalcount := listtodeal.Size();
    info( "ActualPISPIP has " + totalcount.AsQUILL() + " rows in total" );
    
@@ -24,13 +34,13 @@
      if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
        info( "Now is dealing with the " + count.AsQUILL() + "ActualPISPIP " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
        }
      product := select( globalOTDTable,Global_MappingProduct_MP,product,product.ID() = actual.ProductID() and product.KeyProduct() = nuclear,true);
      if( not isnull( product)){
      //product := select( globalOTDTable,Global_MappingProduct_MP,product,product.ID() = actual.ProductID() and product.KeyProduct() = nuclear,true);
      if( /*not isnull( product*/ guard( actual.Global_MAPISPIPCategory().KeyProduct() = nuclear, false ) ){
      if( not isnull(businessTypes)){
      
        for( i :=0 ;i < businessTypes.Size();i++ ){
          businessType := businessTypes.Element( i );
          if( product.BusinessType() = businessType and not product.IsCommon()){
          //businessType := businessTypes.Element( i );
          if( /*product.BusinessType() = businessType and not product.IsCommon()*/ not actual.Global_MAPISPIPCategory().IsCommon() ){
            ActualProductInStockingPointInPeriod::CreateOrUpdate( this,
                                                                  actual.ProductID(),
                                                                  actual.StockingPointID(),
_Main/BL/Type_MacroPlan/Method_DoASyncMappingExternalSupplyData.qbl
@@ -12,12 +12,25 @@
    // renhao Aug-14-2023 (created)
    queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
    queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
    listtodeal := selectset( globalOTDTable,
                             Global_MappingInventorySupply,
                             externalSupply,
                             ( externalSupply.UserQuantity()>0 ) and
                             ( externalSupply.Date() >= queryStartDate ) and
                             ( organcodelist.Find( externalSupply.StockingPointID().SubString( 0, 3 ) ) >= 0 )/*and externalSupply.Date() <= queryEndDate*/);
    listtodeal := construct( Global_MappingInventorySupplys, constcontent );
    if ( businessTypes.Size() > 0 ) {
      businessTypeName := businessTypes.Element( 0 );
      targetGlobal_ProductCategory := select( globalOTDTable, Global_ProductCategory, tempGPC, tempGPC.BusinessTypeName() = businessTypeName );
      listtodeal := selectset( targetGlobal_ProductCategory, Global_MappingProduct_MP.Global_InventorySupplyCategory.Global_MappingInventorySupply,
                               tempGMIS,
                               ( tempGMIS.UserQuantity()>0 ) and
                               ( tempGMIS.Date() >= queryStartDate ) and
                               ( organcodelist.Find( tempGMIS.StockingPointID().SubString( 0, 3 ) ) >= 0 ) );
    } else {
      listtodeal := selectset( globalOTDTable,
                               Global_MappingInventorySupply,
                               externalSupply,
                               ( externalSupply.UserQuantity()>0 ) and
                               ( externalSupply.Date() >= queryStartDate ) and
                               ( organcodelist.Find( externalSupply.StockingPointID().SubString( 0, 3 ) ) >= 0 )/*and externalSupply.Date() <= queryEndDate*/);
    }
    totalcount := listtodeal.Size();
    description := "在途在制";
    info( "ExternalSupply has " + totalcount.AsQUILL() + " rows in total" );
@@ -28,18 +41,18 @@
      if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
        info( "Now is dealing with the " + count.AsQUILL() + "ExternalSupply " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
       }
      product := select( globalOTDTable,Global_MappingProduct_MP,product,product.ID() = externalSupply.ProductID(),true);
      //product := select( globalOTDTable,Global_MappingProduct_MP,product,product.ID() = externalSupply.ProductID(),true);
      
      
      if( not isnull( product)){
      if( /*not isnull( product)*/ not isnull( externalSupply.Global_InventorySupplyCategory() ) ){
        productMP :=  Product_MP :: FindProductTypeIndex( externalSupply.ProductID());
        stockingpoint := select( this,StockingPoint_MP,st,st.ID() = externalSupply.StockingPointID(),true);
        if( not isnull( stockingpoint) and not isnull( productMP)){
        if( not isnull(businessTypes)){
        
          for( i :=0 ;i < businessTypes.Size();i++ ){
            businessType := businessTypes.Element( i );
            if( product.BusinessType() = businessType and not product.IsCommon()){
            //businessType := businessTypes.Element( i );
            if( /*product.BusinessType() = businessType and not product.IsCommon()*/ not externalSupply.Global_InventorySupplyCategory().IsCommon() ){
              InventorySupply::CreateOrUpdate( externalSupply.ID(),
                                               productMP,
                                               stockingpoint,
_Main/BL/Type_MacroPlan/Method_DoASyncMappingInventoryValueAndCostData.qbl
@@ -1,13 +1,20 @@
Quintiq file version 2.0
#parent: #root
Method DoASyncMappingInventoryValueAndCostData (
  const GlobalOTDTable globalOTDTable
  const GlobalOTDTable globalOTDTable,
  String businessTypeName
)
{
  TextBody:
  [*
    // yypsybs Aug-15-2023 (created)
    listtodeal := selectset( globalOTDTable,Global_MappingStockingPointCost,item,true );
    listtodeal := construct( Global_MappingStockingPointCosts, constcontent );
    if ( businessTypeName = "" ) {
      listtodeal := selectset( globalOTDTable,Global_MappingStockingPointCost,item,true );
    } else {
      targetGlobal_ProductCategory := select( globalOTDTable, Global_ProductCategory, tempGPC, tempGPC.BusinessTypeName() = businessTypeName );
      listtodeal := selectset( targetGlobal_ProductCategory, Global_MappingProduct_MP.Global_StockingPointCostCategory.Global_MappingStockingPointCost, tempGMPIL, true );
    }
    totalcount := listtodeal.Size();
    
    info( "InventoryCost has " + totalcount.AsQUILL() + " rows in total" );
_Main/BL/Type_MacroPlan/Method_DoASyncMappingProductInLaneData.qbl
@@ -1,7 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method DoASyncMappingProductInLaneData (
  const GlobalOTDTable globalOTDTable
  const GlobalOTDTable globalOTDTable,
  String businessTypeName
)
{
  Description: 'Get Product In Line data'
@@ -9,7 +10,13 @@
  [*
    // Administrator Aug-17-2023 (created)
    // list to deal
    listtodeal := selectset( globalOTDTable, Global_MappingProductInLane, item ,true );
    listtodeal := construct( Global_MappingProductInLanes, constcontent );
    if ( businessTypeName = "" ) {
      listtodeal := selectset( globalOTDTable, Global_MappingProductInLane, item ,true );
    } else {
      targetGlobal_ProductCategory := select( globalOTDTable, Global_ProductCategory, tempGPC, tempGPC.BusinessTypeName() = businessTypeName );
      listtodeal := selectset( targetGlobal_ProductCategory, Global_MappingProduct_MP.Global_ProductInLineCategory.Global_MappingProductInLane, tempGMPIL, true );
    }
    totalcount := listtodeal.Size();
    info( "ProductInLane has " + totalcount.AsQUILL() + " rows in total" );
    
_Main/BL/Type_MacroPlan/StaticMethod_DoASync#253.qbl
@@ -2,11 +2,11 @@
#parent: #root
StaticMethod DoASync (
  MacroPlan macroPlan,
  Strings businessTypes,
  const BusinessType businessType,
  Boolean isKeyProduct,
  Boolean createPurchaseSupplyMaterial,
  const GlobalOTDTable globalOTDTable
)
) as stream[MacroPlan]
{
  Description: '单次同步'
  TextBody:
@@ -16,20 +16,8 @@
    //Currency_MP::CreateCurrencyFromJson( macroPlan, jsonDataRow );
    info( "Prepare to do sync" )
    info( "Get organ code list" )
    organcodelist := selectvalues( globalOTDTable, Global_MappingOperationBOM, bom,true, bom.OrganCode() );
    if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) {
        traverse( businessTypes, Elements, item ) {
            info( "Business type : " + item )
        }
        organcodelist := selectvalues( globalOTDTable, BusinessType.OrganCode, organ, businessTypes.Find( organ.BusinessType().BusinessTypeName() ) <> -1, organ.OrganCodeName() );
    }
    else{
      if( businessTypes.Size() = 0 ){
        if( not isnull( selectset( globalOTDTable, BusinessType, b, b.BusinessTypeName() = "" ) ) ){
          organcodelist := selectvalues( globalOTDTable, BusinessType.OrganCode, organ, organ.BusinessType().BusinessTypeName() = "", organ.OrganCodeName() );
          }
        }
      }
    businessTypeName := businessType.BusinessTypeName().Tokenize( "," );
    organcodelist := selectvalues( businessType, OrganCode, organ, true, organ.OrganCodeName() );
    
    if( organcodelist.Size() = 0 ){
      organcodelist := selectvalues( globalOTDTable, Global_MappingOperationBOM, bom,true, bom.OrganCode() );
@@ -46,14 +34,14 @@
    UnitOfMeasure_MP::DoASync( globalOTDTable, macroPlan );
    
    // é”€å”®éƒ¨é—¨-2
    SalesSegment_MP::DoASync( macroPlan, businessTypes,globalOTDTable );
    SalesSegment_MP::DoASync( macroPlan, businessTypeName,globalOTDTable );
    
    // Unit-9 
    // ä¸ŽOperation一同处理
    //info( "BaseConversionFactor Finished, Start Operation Data Broker" );
    //macroPlan.Broker_OTD_Operation().Execute();
    info( "Operation Data Broker Finished, Start Unit Mapping" );
    macroPlan.DoASyncMappingUnitData( businessTypes ,globalOTDTable, organcodelist);
    macroPlan.DoASyncMappingUnitData( businessTypeName ,globalOTDTable, organcodelist);
    
    // åº“存点-3
    info( "Sales Segment Finished, Start Get StockingPoint From Api" )
@@ -90,18 +78,18 @@
    //macroPlan.Broker_OTD_Product().Execute();
    info( "Product Data Broker Finished, Start Product Mapping" );
    //testproduct := construct( Strings );
    macroPlan.DoASyncMappingProductData( businessTypes, globalOTDTable,isKeyProduct );
    macroPlan.DoASyncMappingProductData( businessTypeName, globalOTDTable,isKeyProduct );
    
    //单位转换-7
    BaseConversionFactor::DoASync( macroPlan ,globalOTDTable);
    
    // å·¥è‰ºè·¯çº¿ + BOM-9
    info( "Unit Finished, Start Operation Mapping" );
    macroPlan.DoASyncMappingOperationData( businessTypes ,globalOTDTable, organcodelist );
    macroPlan.DoASyncMappingOperationData( businessTypeName ,globalOTDTable, organcodelist );
    //info( "Operation Finished, Start BOM Data Broker" );
    //macroPlan.Broker_OTD_BOM().Execute();
    info( "BOM Data Broker Finished, Start BOM Mapping" );
    macroPlan.DoASyncMappingOperationBOMData( businessTypes, isKeyProduct, createPurchaseSupplyMaterial,globalOTDTable, organcodelist );
    macroPlan.DoASyncMappingOperationBOMData( businessTypeName, isKeyProduct, createPurchaseSupplyMaterial,globalOTDTable, organcodelist );
    
    //车道信息-10
    info( "BOM Finished, Start Get Lanes From Api" );
@@ -127,32 +115,32 @@
    //info( "Get Lanelegs From Api Finished, Start ProductInLane Data Broker" );
    //macroPlan.Broker_OTD_ProductInLane().Execute();
    info( "ProductInLane Data Broker Finished, Start ProductInLane Mapping" );
    macroPlan.DoASyncMappingProductInLaneData(globalOTDTable);
    macroPlan.DoASyncMappingProductInLaneData(globalOTDTable,guard( businessTypeName.Element( 0 ), "" ));
    
    // åœ¨åº“库存数据-13
    //info( "ProductInLane Finished, Start ActualPISPIP Data Broker" );
    //macroPlan.Broker_OTD_ActualPISPIP().Execute();
    info( "ActualPISPIP Data Broker Finished, Start ActualPISPIP Mapping" );
    macroPlan.DoASyncMappingActualPISPIPData( businessTypes, globalOTDTable,isKeyProduct, organcodelist );
    macroPlan.DoASyncMappingActualPISPIPData( businessTypeName, globalOTDTable,isKeyProduct, organcodelist );
    
    // åœ¨é€”库存-14
    //info( "ActualPISPIP Finished, Start ExternalSupply Data Broker" );
    //macroPlan.Broker_OTD_ExternalSupply().Execute();
    info( "ExternalSupply Data Broker Finished, Start ExternalSupply Mapping" );
    macroPlan.DoASyncMappingExternalSupplyData( businessTypes, isKeyProduct ,globalOTDTable, organcodelist );
    macroPlan.DoASyncMappingExternalSupplyData( businessTypeName, isKeyProduct ,globalOTDTable, organcodelist );
    
    // åº“存成本-15
    InventoryValueAndCost::DoASync( macroPlan,globalOTDTable );
    InventoryValueAndCost::DoASync( macroPlan,globalOTDTable,guard( businessTypeName.Element( 0 ), "" ) );
    
    // todo åˆ¶é€ æˆæœ¬-16
    info( "InventoryCost Finished, Start OperationCost Mapping" );
    macroPlan.DoASyncMappingOperationCostData( globalOTDTable, businessTypes, organcodelist );
    macroPlan.DoASyncMappingOperationCostData( globalOTDTable, businessTypeName, organcodelist );
    
    // è®¢å•预测-17
    Forecast::DoASync( macroPlan, businessTypes, globalOTDTable, organcodelist );
    Forecast::DoASync( macroPlan, businessTypeName, globalOTDTable, organcodelist );
    
    // è®¢å•需求-18
    CustomerOrder::DoASync( macroPlan, businessTypes, globalOTDTable, organcodelist );
    CustomerOrder::DoASync( macroPlan, businessTypeName, globalOTDTable, organcodelist );
    
    //删除多余报错数据-19
    macroPlan.DeleteSnaityCheck();
@@ -162,5 +150,7 @@
    
    //// todo ä¾›åº”商回复
    //info( "ProviderReply::DoSync" )
    return emit( macroPlan );
  *]
}
_Main/BL/Type_MacroPlan/StaticMethod_DoASync#896.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_MacroPlan/StaticMethod_DoASync.qbl
@@ -2,7 +2,7 @@
#parent: #root
StaticMethod DoASync (
  Scenario scenario,
  String businessTypeStr,
  const BusinessType businessType,
  Boolean isKeyProduct,
  Boolean createPurchaseSupplyMaterial,
  const GlobalOTDTable globalOTDTable
@@ -10,10 +10,10 @@
{
  TextBody:
  [*
    info( scenario.DatasetMDSID(), "    äº‹ä¸šéƒ¨ï¼š", businessTypeStr, "    isKeyProduct:", isKeyProduct, "    createPurchaseSupplyMaterial:", createPurchaseSupplyMaterial );
    info( scenario.DatasetMDSID(), "    äº‹ä¸šéƒ¨ï¼š", businessType.BusinessTypeName(), "    isKeyProduct:", isKeyProduct, "    createPurchaseSupplyMaterial:", createPurchaseSupplyMaterial );
    
    MDSMacroPlan::Root( scenario.DatasetMDSID() )
    -> MacroPlan::DoASync( businessTypeStr,
    -> MacroPlan::DoASync( businessType,
                           isKeyProduct,
                           createPurchaseSupplyMaterial,
                           globalOTDTable
_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def
@@ -9,7 +9,7 @@
    
    //CapacityAllocationResultsRuleConfiguration::AutomaticallyGenerateCapacityRules( GlobalOTDTable, MacroPlan );
    
    CapacityAllocationResults::Test( MacroPlan, GlobalOTDTable );
    //CapacityAllocationResults::Test( MacroPlan, GlobalOTDTable );
  *]
  CanBindMultiple: false
  DefinitionID: 'Responsedef_GUIButtonBase_OnClick'
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_DataHolderAllScenario_OnDataChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
Quintiq file version 2.0
#parent: DataHolderAllScenario
Response OnDataChanged () id:Response_TIANMA_JITUAN_ApplicationMacroPlanner_DataHolderAllScenario_OnDataChanged
{
  #keys: '[414702.1.169517835]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      user := QuintiqUser::CurrentUser();
      scenarionodes := construct( ScenarioNodes );
      if( user.IsAdministrator()
          or not exists( ScenarioManager, ScenarioNode.ScenarioAuthorization, sa, true ) )
      {
        scenarionodes := selectset( ScenarioManager, ScenarioNode, scenarionode, true );
      }
      else
      {
        scenarionodes := selectset( ScenarioManager, ScenarioNode, scenarionode,
                                    guard( scenarionode.astype( ScenarioFolder ).IsRecycleBin(), false )
                                    or scenarionode.CreatedBy().ToUpper() = user.ShortName().ToUpper()
                                    or exists( scenarionode, ScenarioAuthorization, sa,
                                               user.IsMemberOfGroup( sa.Name() ) ) );
      }
      DataHolderAvailableScenarios.Data( &scenarionodes );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -80,5 +80,31 @@
    Component DataHolderCurrentUser #extension
    {
    }
    Component DataHolderAllScenario
    {
      #keys: '[414702.1.169450613]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[ScenarioNode]*'
      Children:
      [
        Component DataExtractorAllScenario
        {
          #keys: '[414702.1.166961408]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'ScenarioManager'
            FixedFilter: 'not object.IsDeleted()'
            Source: 'ScenarioManager'
            Taborder: 0
            Transformation: 'ScenarioNode'
          ]
        }
      ]
      Properties:
      [
        Taborder: 46
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogDataDistribution/Component_pnlContent.def
@@ -5,18 +5,6 @@
  BaseType: 'WebPanel'
  Children:
  [
    Component dropDownStringListGeneral id:dropDownStringListGeneral_549
    {
      #keys: '[414702.1.87540205]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        AllowEmpty: true
        DataBinding: 'DataHolderScenario.Data.ScenarioName'
        Label: 'Scenario Name'
        Taborder: 0
      ]
    }
    Component checkboxIsKeyProduct id:checkboxIsKeyProduct_593
    {
      #keys: '[414702.1.87540263]'
@@ -49,6 +37,33 @@
        Taborder: 3
      ]
    }
    Component ddlBusinessType
    {
      #keys: '[414702.1.169614090]'
      BaseType: 'WebDropDownList'
      Databinding: 'BusinessType'
      Children:
      [
        Component deContent
        {
          #keys: '[414702.1.169614092]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'GlobalOTDTable'
            Source: 'GlobalOTDTable'
            Taborder: 0
            Transformation: 'BusinessType'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'ScenarioName'
        Label: 'Scenario Name'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_DialogDataDistribution/Method_DataDistribution.def
@@ -9,8 +9,6 @@
  [*
    DataHolderScenario.Data( scenario );
    
    dropDownStringListGeneral.Strings( GlobalOTDTable::GetBusnessStrings( GlobalOTDTable ) );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogDataDistribution/Response_pnlActions_btnOk_OnClick.def
@@ -10,8 +10,9 @@
    
    activeScenario := DataHolderActiveScenario.Data();
    currentScenario := DataHolderScenario.Data();
    businessType := ddlBusinessType.Data();
    
    if ( activeScenario = currentScenario ) {
    if ( activeScenario = currentScenario or isnull( businessType ) ) {
      flag := false;
      feedback := "无法对当前选中场景进行分发";
    }
@@ -30,15 +31,9 @@
    [*
      Form.ApplyChanges();
      
      businessType := select( GlobalOTDTable,
                              BusinessType,
                              b,
                              b.ScenarioName() = dropDownStringListGeneral.Text()
                             );
      DataDistributionLog::Create( GlobalOTDLog, ApplicationMacroPlanner.GetUserName(), DataHolderScenario.Data().DatasetMDSID(), DataHolderScenario.Data().Name() );
      MacroPlan::DoASync( DataHolderScenario.Data(), 
                          businessType.BusinessTypeName(),
                          ddlBusinessType.Data(),
                          checkboxIsKeyProduct.Checked(), 
                          checkboxCreatePurchaseSupplyProduct.Checked(),
                          GlobalOTDTable );
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button1_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: Button1
Response OnClick () id:Response_FormInterfaceTest_Button1_OnClick
{
  #keys: '[414702.1.224832095]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Global_ProductInLineCategory::Create( GlobalOTDTable );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button2_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: Button2
Response OnClick () id:Response_FormInterfaceTest_Button2_OnClick
{
  #keys: '[414702.1.224832394]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Global_StockingPointCostCategory::Create( GlobalOTDTable );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button3_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: Button3
Response OnClick () id:Response_FormInterfaceTest_Button3_OnClick
{
  #keys: '[414702.1.226882201]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Global_MAPISPIPCategory::Create( GlobalOTDTable );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button4_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: Button4
Response OnClick () id:Response_FormInterfaceTest_Button4_OnClick
{
  #keys: '[414702.1.226892014]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Global_InventorySupplyCategory::Create( GlobalOTDTable );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_Button5_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
#parent: Button5
Response OnClick () id:Response_FormInterfaceTest_Button5_OnClick
{
  #keys: '[414702.1.228751233]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
  *]
  QuillAction
  {
    Body:
    [*
      GlobalOTDTable.Global_ProductCategory( relflush );
      GlobalOTDTable.Global_ProductInLineCategory( relflush );
      GlobalOTDTable.Global_InventorySupplyCategory( relflush );
      GlobalOTDTable.Global_StockingPointCostCategory( relflush );
      GlobalOTDTable.Global_MAPISPIPCategory( relflush );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/Response_ButtonGenerateProductCategory_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ButtonGenerateProductCategory
Response OnClick () id:Response_FormInterfaceTest_ButtonGenerateProductCategory_OnClick
{
  #keys: '[414702.1.220904292]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( GlobalOTDTable );
  *]
  QuillAction
  {
    Body:
    [*
      Global_ProductCategory::Create( GlobalOTDTable );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceTest/_ROOT_Component_FormInterfaceTest.def
@@ -13,6 +13,72 @@
    #child: PanelInterfaceOption3
    #child: PanelInterfaceOption2
    #child: PanelInterfaceOption1
    Component ButtonGenerateProductCategory
    {
      #keys: '[414702.1.220980872]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'TELEPHONE2'
        Label: '根据事业部生成产品分类'
        Taborder: 6
      ]
    }
    Component Button1
    {
      #keys: '[414702.1.225920560]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'BRUSH2'
        Label: '根据产品ID生成ProductInLine分类'
        Taborder: 7
      ]
    }
    Component Button2
    {
      #keys: '[414702.1.225920577]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'INDUSTRIAL_ROBOT'
        Label: '根据产品ID生成StockingPoingCost分类'
        Taborder: 8
      ]
    }
    Component Button3
    {
      #keys: '[414702.1.226882098]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'BANANA'
        Label: '根据产品ID生成MAPISPIP分类'
        Taborder: 9
      ]
    }
    Component Button4
    {
      #keys: '[414702.1.226891739]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'BEER_GLASS'
        Label: '根据产品ID生成InventorySupply分类'
        Taborder: 10
      ]
    }
    Component Button5
    {
      #keys: '[414702.1.228751221]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'BROOM'
        Label: '清空分类'
        Taborder: 11
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Views/½Ó¿Ú²âÊÔ.vw
@@ -13,7 +13,7 @@
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 16
          rowSpan: 23
          columnPosition: 1
          columnSpan: 6
        }
@@ -1184,10 +1184,10 @@
    userconfigurableinformation
    {
    }
    image: 'SKIN_TIGER'
    page: ''
    group: ''
    index: 0
    image: 'SKIN_TIGER'
    description: ''
  }
  formatversion: 2