hongji.li
2023-10-24 ae5ea57221f6bab29d84e8c58042a07130befcc8
异步分发优化
已添加50个文件
已修改8个文件
945 ■■■■■ 文件已修改
_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 4 ●●●● 补丁 | 查看 | 原始文档 | 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
@@ -115,7 +115,7 @@
    //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" );
@@ -130,7 +130,7 @@
    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" );
_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