lazhen
2024-10-10 ae3b7f21551deb0e163eb5dbd4bea0a70bd54c50
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
已添加42个文件
已修改23个文件
已删除38个文件
2098 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_PackagingPlanCapability_MacroPlan_MacroPlan_PackagingPlanCapability.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_PackagingPlanNewCapability_MacroPlan_MacroPlan_PackagingPlanNewCapa.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CC_EngineRackCell/Function_CalcEstimatedTotalCost.qbl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CC_EngineRackCell/Function_CalcTotalCost.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CC_EngineRackCell/StaticMethod_CreateData.qbl 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CC_EngineRackCell/StaticMethod_Export.qbl 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CC_EngineRackCell/StaticMethod_Import.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DL_EngineRackCell/Attribute_PackagingCapacity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DL_EngineRackCell/Attribute_PlannedInventory.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DL_EngineRackCell/Function_CalcNumberOfEmptyShelves.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_DL_EngineRackCell/StaticMethod_CreateData.qbl 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_KW1_Package#2.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_KW1_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_KW2_Package#3.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_KW2_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_PL_Package#1.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_PL_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_ZKG_Package.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_ZKG_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_ZKM_Package.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_ZKM_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_AGW12_Package#4.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_AGW12_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_AGW3_Package#5.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_AGW3_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_KW_Package#3.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_KW_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_PL_Package#2.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_PL_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZKG_Package.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZKG_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZKM_Package.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZKM_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZK_Package#1.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZK_Unpacking.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCapability/_ROOT_Type_PackagingPlanCapability.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/Attribute_CC_PackagingInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/Attribute_CC_UnpackagedInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/Function_CalcPackagingInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/Function_CalcUnpackagedInventory.qbl 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanNewCapability/Attribute_MaximumDailyPackagingQuantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanNewCapability/Attribute_MaximumDailyUnpackingQuantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanNewCapability/Attribute_ProductionLine.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanNewCapability/_ROOT_Type_PackagingPlanNewCapability.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanRow/Function_CalcName.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_PackagingPlanRow/Method_FilterProduct.qbl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_dhSelectedFactory_OnCreated.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlContent.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Method_Edit.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Method_New.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Method_OnOK.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnOk_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductionLine_OnCreated.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/_ROOT_Component_DialogCreateEditPackagingPlanNewCapability.def 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_abpContent.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_cmContent.def 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_lstContent.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_KW1.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_KW2.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_PL.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_ZKG.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_ZKM.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_AGW12.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_AGW3.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_KW.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_PL.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_ZK.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_ZKG#502.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_ZKM.def 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_pnlContent.def 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Method_Opne.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Response_lstContent_mDelete_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Response_lstContent_mEdit_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Response_lstContent_mNew_OnClick.def 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Response_lstContent_mSelectAll_OnClick.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/_ROOT_Component_DialogPackagingPlanCapability.def 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanLotSize/_ROOT_Component_DialogPackagingPlanLotSize.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Response_pHeader_bImport_OnClick.def 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelFilter.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonClearFilter_OnClick#799.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonFilter_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter#119.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ButtonClearFilter_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ButtonFilter_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Component_MatrixEditor493.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Component_pHeader.def 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_bPackagingCapability_OnClick.def 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_ddslFactorySelection_OnUserSelectionChanged.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_ListUnit#963.def 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_PanelLeft.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_PanelProductionLineBatchSetShiftPattern.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_PanelRight.def 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_listActionBarPageProductionLineBatchSetShiftPattern#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_listContextMenuProductionLineBatchSetShiftPattern#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Response_ListUnit_963_OnUserSelectionChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/_ROOT_Component_FormProductionLineBatchSetShiftPattern.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_PackagingPlanCapability_MacroPlan_MacroPlan_PackagingPlanCapability.qbl
ÎļþÒÑɾ³ý
_Main/BL/Relations/Relation_PackagingPlanNewCapability_MacroPlan_MacroPlan_PackagingPlanNewCapa.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation PackagingPlanNewCapability_MacroPlan_MacroPlan_PackagingPlanNewCapability
{
  #keys: '1[413988.0.1594771453]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[413988.0.1594771455][413988.0.1594771454][413988.0.1594771456]'
    Cardinality: '0to1'
    ObjectDefinition: PackagingPlanNewCapability
    OwningSide: 'Reference'
  }
  RelationSide.RightSide PackagingPlanNewCapability
  {
    #keys: '3[413988.0.1594771458][413988.0.1594771457][413988.0.1594771459]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_AssemblyOnlinePlanCell/StaticMethod_RefreshData.qbl
@@ -13,7 +13,10 @@
    // æ‰¾è£…配线行
    oprs := selectsortedset( opt, OfflinePlanRow, tempOPR, 
                             tempOPR.ProductionLine() = "DL MoMo" 
    //                         or tempOPR.ProductionLine() = "CC MoMo" or tempOPR.ProductionLine() = "DL ZKM"
                             or
                             tempOPR.ProductionLine() = "CC MoMo"
                             or
                             tempOPR.ProductionLine() = "DL ZKM"
                             , 
                             tempOPR.ProductionLine(), tempOPR.ProductID(), tempOPR.Type() );
    opcs := selectsortedset( opt, OfflinePlanColumn, tempOPC, true, tempOPC.ColumnDate() );
@@ -43,17 +46,17 @@
                               );
      
      u           := select( macroPlan, Unit, tempU, tempU.ID() = pl );
      drainPs     := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject() = "排空", false ) );
      lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject() = "铺线", false ) );
      drainPs     := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "拉空" ), false ) );
      lineLyingPs := selectset( u, UnitCalendar.Participation, tempP, guard( tempP.Event().Subject().Regex( "铺线" ), false ) );
      
      // å¤„理排空
      info( "当前产线:", pl, "    å¤„理排空--------------------------" );
      info( "当前产线:", pl, "    å¤„理拉空--------------------------" );
      traverse ( drainPs, Elements, p ) {
        traverse ( p, ExplicitTimeInterval, eti ) {
          info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), "    ç»“束时间:", eti.End().Format( "Y-M2-D2" ) );
          // å‰ä¸€å¤©æ—¥åކ
          aopc := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = ( eti.Start().Date() - 1 ) );
          info( "需要排空的上线计划时间:", aopc.ColumnDate().Format( "Y-M2-D2" ) );
          info( "需要拉空的上线计划时间:", aopc.ColumnDate().Format( "Y-M2-D2" ) );
          aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
                              exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
          aopr  := maxselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
@@ -70,6 +73,15 @@
      traverse ( lineLyingPs, Elements, p ) {
        traverse ( p, ExplicitTimeInterval, eti ) {
          info( "开始时间:", eti.Start().Format( "Y-M2-D2" ), "    ç»“束时间:", eti.End().Format( "Y-M2-D2" ) );
          info( "需要铺线的上线计划时间:", eti.Start().Format( "Y-M2-D2" ) );
          aopc  := select( macroPlan, AssemblyOnlinePlanColumn, tempAOPC, tempAOPC.ColumnDate() = eti.Start().Date() );
          aoprs := selectset( macroPlan, AssemblyOnlinePlanRow, tempAOPR, tempAOPR.ProductionLine() = pl and tempAOPR.Type() = "2" and
                              exists( tempAOPR, AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc and tempAOPC.Value() <> "" ) );
          aopr  := minselect( aoprs, Elements.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanColumn() = aopc,
                              [Number]tempAOPC.Value().ReplaceAll( "#0", "" ) );
          cell  := select( macroPlan, AssemblyOnlinePlanRow.AssemblyOnlinePlanCell, tempAOPC, tempAOPC.AssemblyOnlinePlanRow().ProductionLine() = pl and tempAOPC.AssemblyOnlinePlanColumn() = aopc and
                           tempAOPC.AssemblyOnlinePlanRow().Type() = "1" and tempAOPC.AssemblyOnlinePlanRow().ProductID() = aopr.AssemblyOnlinePlanRow().ProductID() );
          cell.Value( [String] ( [Number]cell.Value() + targetQuantity ) );
        }
      }
    }
_Main/BL/Type_CC_EngineRackCell/Function_CalcEstimatedTotalCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Function CalcEstimatedTotalCost
{
  TextBody:
  [*
    // lihongji Oct-9-2024 (created)
    value := this.StorageFeesForRentedWarehouses()             +
             this.OutboundExpensesForRentedWarehouses()        +
             this.ExternalRentalWarehouseTransportationCosts() +
             this.RentalWarehouseStorageFees()                 +
             this.CleaningCost()
    this.EstimatedTotalCost( value );
  *]
}
_Main/BL/Type_CC_EngineRackCell/Function_CalcTotalCost.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcTotalCost
{
  TextBody:
  [*
    // lihongji Oct-9-2024 (created)
    value := this.EstimatedTotalCost() * this.Coefficient();
    this.TotalCost( value );
  *]
}
_Main/BL/Type_CC_EngineRackCell/StaticMethod_CreateData.qbl
@@ -12,8 +12,8 @@
    // åˆ›å»ºè¡Œ
    genrations := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.Generation().TrimBoth() <> "", tempPMP.Generation() );
    mqbmlbs    := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.MQBMLB().TrimBoth() <> "", tempPMP.MQBMLB() );
    traverse ( genrations, Elements, g, g.ToUpper() = "EVO5" or g.ToUpper() = "GEN3" ) {
      traverse ( mqbmlbs, Elements, m, m.ToUpper() = "MLB" or m.ToUpper() = "MQB" ) {
    traverse ( genrations, Elements, g ) {
      traverse ( mqbmlbs, Elements, m ) {
        macroPlan.CC_EngineRackRow( relnew, Generation := g, MLB_MQB := m );
      }
    }
@@ -26,58 +26,76 @@
    }
    
    // åˆ›å»ºå•元格
    traverse ( macroPlan, CC_EngineRackRow, ccerr ) {
    traverse ( macroPlan, CC_EngineRackRow, ccerr ) { // å¾ªçŽ¯è¡Œ
      info( "当前遍历的行:", ccerr.Generation(), " ", ccerr.MLB_MQB() );
      traverse ( macroPlan, CC_EngineRackColumn, ccerc ) { // å¾ªçŽ¯åˆ—
      // å‘动机成本参数
      lce  := select( macroPlan, LogisticsCostEngine, tempLCE, tempLCE.Generation() = ccerr.Generation() and tempLCE.MLB_MQB() = ccerr.MLB_MQB() and tempLCE.Factory() = "长春工厂" );
        lce  := select( macroPlan, LogisticsCostEngine, tempLCE, tempLCE.Generation() = ccerr.Generation() and tempLCE.MLB_MQB() = ccerr.MLB_MQB() and tempLCE.Factory() = "长春工厂"
                        and tempLCE.StartDate() <= ccerc.StartDate() and tempLCE.EndDate() >= ccerc.StartDate().StartOfNextMonth() );
      
      // æ–™æž¶æˆæœ¬å‚æ•°
      lcmr := select( macroPlan, LogisticsCostMaterialRack, tempLCMR, tempLCMR.Factory() = "长春工厂" );
        lcmr := select( macroPlan, LogisticsCostMaterialRack, tempLCMR, tempLCMR.Factory() = "长春工厂"
                        and tempLCMR.StartDate() <= ccerc.StartDate() and tempLCMR.EndDate() >= ccerc.StartDate().StartOfNextMonth() );
      
      traverse ( macroPlan, CC_EngineRackColumn, ccerc ) {
        // è¿è¾“成本参数
        lct  := select( macroPlan, LogisticsCostTransport, tempLCT, tempLCT.Product() = "发动机料架" and tempLCT.Origin() = "长春外租库" and tempLCT.Destination() = "CC åŽ‚å†…åº“" );
        // å½“前月末最后一天日期
        lastDayOfThisMonth := ccerc.StartDate().StartOfNextMonth() - 1;
        cell := ccerr.CC_EngineRackCell( relnew );
        
        // ç©ºæ–™æž¶æ•°é‡ï¼ˆé•¿æ˜¥åŽ‚è¯¥äº§å“çš„æ–™æž¶æ€»æ•°é‡ - å‘动机库存 / åŒ…装容量 ï¼‰
        lastDayOfThisMonth := ccerc.StartDate().StartOfNextMonth() - 1;
        plannedInventory := sum( macroPlan, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, tempPISPIP,
                                 tempPISPIP.ProductInStockingPoint_MP().Product_MP().IsLeaf()                          and
                                 tempPISPIP.ProductInStockingPoint_MP().Product_MP().ParentID()   = "产成品"           and
                                 exists( tempPISPIP.ProductInStockingPoint_MP().Product_MP(), AllParent.AsParent, tempPMP, tempPMP.ID() = "发动机" )         and
                                 tempPISPIP.ProductInStockingPoint_MP().StockingPointID()         = "长春外租库"       and
                                 tempPISPIP.ProductInStockingPoint_MP().Product_MP().Generation() = ccerr.Generation() and
                                 tempPISPIP.ProductInStockingPoint_MP().Product_MP().MQBMLB()     = ccerr.MLB_MQB()    and
                                 tempPISPIP.Start().Date()                                                  = lastDayOfThisMonth,
                                 tempPISPIP.PlannedInventoryLevelEnd() );
        cell.PackagingCapacity( guard( lce.PackagingCapacity(), 0 ) );
        cell.PackagingCapacity( guard( lce.PackagingCapacity(), 1 ) );
        cell.PlannedInventory( plannedInventory );
        
        // å¤–租库入库费用(发动机销量 / åŒ…装容量[向上取整] * æ–™æž¶å…¥åº“单价)
        engineSales := sum( macroPlan, FSImportData, tempFSID, 
                            tempFSID.Unit()              = "长春工厂"               and
                            tempFSID.Unit()              = FinancialProductionReport::GetDefaultCCUnit() and
                            tempFSID.Generation()        = ccerr.Generation()       and
                            tempFSID.MqbMlb()            = ccerr.MLB_MQB()          and
                            tempFSID.StartDate().Year()  = ccerc.StartDate().Year() and
                            tempFSID.StartDate().Month() = ccerc.StartDate().Month(),
                            tempFSID.Quantity() );
        cell.StorageFeesForRentedWarehouses( guard( [Number] ( engineSales / guard( lce.PackagingCapacity(), 0 ) ) * guard( lcmr.WarehousingPrice(), 0 ), 0 ) );
        cell.StorageFeesForRentedWarehouses( [Number] ( engineSales / guard( lce.PackagingCapacity(), 1 ) * guard( lcmr.WarehousingPrice(), 1 ) ) );
             
        // å¤–租库出库费用(发动机产量 / åŒ…装容量[向上取整] * æ–™æž¶å‡ºåº“单价)
        engineProductions := sum( macroPlan, FPImportData, tempFPID, 
                                  tempFPID.Unit()              = "长春工厂"               and
                                  tempFPID.Unit()              = FinancialProductionReport::GetDefaultCCUnit() and
                                  tempFPID.Generation()        = ccerr.Generation()       and
                                  tempFPID.MqbMlb()            = ccerr.MLB_MQB()          and
                                  tempFPID.StartDate().Year()  = ccerc.StartDate().Year() and
                                  tempFPID.StartDate().Month() = ccerc.StartDate().Month(),
                                  tempFPID.Quantity() );
        cell.OutboundExpensesForRentedWarehouses( guard( [Number] ( engineProductions / guard( lce.PackagingCapacity(), 0 ) ) * guard( lcmr.OutboundPrice(), 0 ), 0 ) );
        cell.OutboundExpensesForRentedWarehouses( [Number] ( engineProductions / guard( lce.PackagingCapacity(), 1 ) ) * guard( lcmr.OutboundPrice(), 1 ) );
        
        // å¤–租库运输费用:发动机运输量 / åŒ…装容量 / è£…载容量(向上取整) * æ–™æž¶è¿è¾“单价
        transportationQuantity := sum( macroPlan, Unit.Lane.LaneLeg.Trip.ProductInTrip, tempPIT,
                                       tempPIT.Product_MP().Generation()                                                =  ccerr.Generation() and
                                       tempPIT.Product_MP().MQBMLB()                                                    =  ccerr.MLB_MQB()    and
                                       tempPIT.Trip().Departure().Date()                                                >= ccerc.StartDate()  and
                                       tempPIT.Trip().Arrival().Date()                                                  <= lastDayOfThisMonth and
                                       tempPIT.Trip().LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID()      = "CC åŽ‚å†…åº“"         and
                                       tempPIT.Trip().LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID() = "长春外租库",
                                       tempPIT.Quantity()
                                      );
    //    info( "时间:", ccerc.StartDate().Format( "Y-M2-D2" ), "    è¿è¾“数据:", transportationQuantity, "     è¿è¾“单价:", lct.TransportPrice() );
        cell.ExternalRentalWarehouseTransportationCosts( transportationQuantity / guard( lce.PackagingCapacity(), 1 ) / guard( lct.LoadingCapacity(), 1 ) * guard( lct.TransportPrice(), 1 ) );
        
        // å¤–租库仓储费用:料架总数量 - å‘动机库存 / åŒ…装容量(向上取整),再乘以空料架仓储单价得到空料架仓储费用。发动机库存取Actual inventories里取到长春外租库该发动机的仓储量,料架总数量需要手动维护。
        cell.UnitPriceOfEmptyShelfStorage( lcmr.StoragePrice() );
        
        // æ¸…洗费用:发动机入库量 / åŒ…装容量 * æ–™æž¶æ¸…洗单价。发动机入库量取发动机销量,包装容量取自发动机成本表。料架清洗单价取料架成本表。
        cell.CleaningCost( guard( engineSales / guard( lce.PackagingCapacity(), 0 ) * lcmr.CleanPrice(), 0 ) );
        cell.CleaningCost( engineSales / guard( lce.PackagingCapacity(), 1 ) * lcmr.CleanPrice() );
        
        cell.CC_EngineRackColumn( relset, ccerc );
      }
_Main/BL/Type_CC_EngineRackCell/StaticMethod_Export.qbl
@@ -16,7 +16,7 @@
    firstColumn := xmlDOM.CreateElement( "column" );
    firstName   := xmlDOM.CreateElement( "name" );
    firstType   := xmlDOM.CreateElement( "type" );
    firstName.TextContent( "" );
    firstName.TextContent( "*" );
    firstType.TextContent( "String" );
    firstColumn.AppendChild( firstName );
    firstColumn.AppendChild( firstType );
@@ -40,7 +40,7 @@
    secondColumn := xmlDOM.CreateElement( "column" );
    secondName   := xmlDOM.CreateElement( "name" );
    secondType   := xmlDOM.CreateElement( "type" );
    secondName.TextContent( "" );
    secondName.TextContent( "*" );
    secondType.TextContent( "String" );
    secondColumn.AppendChild( secondName );
    secondColumn.AppendChild( secondType );
@@ -66,43 +66,43 @@
      cells := selectsortedset( cerc, CC_EngineRackCell, tempCELL, true, tempCELL.CC_EngineRackRow().Name() );
      traverse ( cells, Elements, c ) {
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.TotalQuantityOfMaterialRacks() ); // æ–™æž¶æ€»æ•°é‡
        cell.SetAttribute( "value", [String]c.TotalQuantityOfMaterialRacks().Round( 0 ) ); // æ–™æž¶æ€»æ•°é‡
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.NumberOfEmptyShelves() ); // ç©ºæ–™æž¶æ•°é‡
        cell.SetAttribute( "value", [String]c.NumberOfEmptyShelves().Round( 0 ) ); // ç©ºæ–™æž¶æ•°é‡
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.StorageFeesForRentedWarehouses() ); // å¤–租库入库费用
        cell.SetAttribute( "value", [String]c.StorageFeesForRentedWarehouses().Round( 0 ) ); // å¤–租库入库费用
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.OutboundExpensesForRentedWarehouses() ); // å¤–租库出库费用
        cell.SetAttribute( "value", [String]c.OutboundExpensesForRentedWarehouses().Round( 0 ) ); // å¤–租库出库费用
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.ExternalRentalWarehouseTransportationCosts() ); // å¤–租库运输费用
        cell.SetAttribute( "value", [String]c.ExternalRentalWarehouseTransportationCosts().Round( 0 ) ); // å¤–租库运输费用
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.RentalWarehouseStorageFees() ); // å¤–租库仓储费用
        cell.SetAttribute( "value", [String]c.RentalWarehouseStorageFees().Round( 0 ) ); // å¤–租库仓储费用
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.CleaningCost() ); // æ¸…洗费用
        cell.SetAttribute( "value", [String]c.CleaningCost().Round( 0 ) ); // æ¸…洗费用
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.EstimatedTotalCost() ); // é¢„计总费用
        cell.SetAttribute( "value", [String]c.EstimatedTotalCost().Round( 0 ) ); // é¢„计总费用
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.Coefficient() ); // ç³»æ•°
        cell.SetAttribute( "value", [String]c.Coefficient().Round( 0 ) ); // ç³»æ•°
        cellColumn.AppendChild( cell );
        
        cell := xmlDOM.CreateElement( "cell" );
        cell.SetAttribute( "value", [String]c.TotalCost() ); // æ€»è´¹ç”¨
        cell.SetAttribute( "value", [String]c.TotalCost().Round( 0 ) ); // æ€»è´¹ç”¨
        cellColumn.AppendChild( cell );
      }
      tableElement.AppendChild( cellColumn );
_Main/BL/Type_CC_EngineRackCell/StaticMethod_Import.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Import (
  MacroPlan macroPlan,
  GeneralExcelImportAndExportDataTable table
)
{
  TextBody: '//traverse ('
}
_Main/BL/Type_DL_EngineRackCell/Attribute_PackagingCapacity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute PackagingCapacity
{
  #keys: '3[413988.0.1594771571][413988.0.1594771570][413988.0.1594771572]'
  ValueType: Real
}
_Main/BL/Type_DL_EngineRackCell/Attribute_PlannedInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute PlannedInventory
{
  #keys: '3[413988.0.1594771558][413988.0.1594771557][413988.0.1594771559]'
  ValueType: Real
}
_Main/BL/Type_DL_EngineRackCell/Function_CalcNumberOfEmptyShelves.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcNumberOfEmptyShelves
{
  TextBody:
  [*
    // lihongji Oct-9-2024 (created)
    value := guard( this.TotalQuantityOfMaterialRacks() - ( this.PlannedInventory() / this.PackagingCapacity() ), 0 );
    this.NumberOfEmptyShelves( value );
  *]
}
_Main/BL/Type_DL_EngineRackCell/StaticMethod_CreateData.qbl
@@ -9,11 +9,14 @@
    macroPlan.DL_EngineRackRow( relflush );
    macroPlan.DL_EngineRackColumn( relflush );
    
    // åˆ›å»ºè¡ŒEVO5 MLB, EVO5 MQB, GEN3 MLB, GEN3 MQB
    macroPlan.DL_EngineRackRow( relnew, Generation := "EVO5", MLB_MQB := "MLB" );
    macroPlan.DL_EngineRackRow( relnew, Generation := "EVO5", MLB_MQB := "MQB" );
    macroPlan.DL_EngineRackRow( relnew, Generation := "GEN3", MLB_MQB := "MLB" );
    macroPlan.DL_EngineRackRow( relnew, Generation := "GEN3", MLB_MQB := "MQB" );
    // åˆ›å»ºè¡Œ
    genrations := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.Generation().TrimBoth() <> "", tempPMP.Generation() );
    mqbmlbs    := selectuniquevalues( macroPlan, Product_MP, tempPMP, tempPMP.MQBMLB().TrimBoth() <> "", tempPMP.MQBMLB() );
    traverse ( genrations, Elements, g ) {
      traverse ( mqbmlbs, Elements, m ) {
        macroPlan.DL_EngineRackRow( relnew, Generation := g, MLB_MQB := m );
      }
    }
    
    // åˆ›å»ºåˆ—
    indexDate := macroPlan.StartOfPlanning().Date().StartOfMonth();
@@ -23,13 +26,35 @@
    }
    
    // åˆ›å»ºå•元格
    traverse ( macroPlan, DL_EngineRackRow, dlerr ) {
      traverse ( macroPlan, DL_EngineRackColumn, dlerc ) {
    traverse ( macroPlan, DL_EngineRackRow, dlerr ) { // å¾ªçŽ¯è¡Œ
      info( "当前遍历的行:", dlerr.Generation(), " ", dlerr.MLB_MQB() );
      traverse ( macroPlan, DL_EngineRackColumn, dlerc ) { // å¾ªçŽ¯åˆ—
        // å‘动机成本参数
        lce  := select( macroPlan, LogisticsCostEngine, tempLCE, tempLCE.Generation() = dlerr.Generation() and tempLCE.MLB_MQB() = dlerr.MLB_MQB() and tempLCE.Factory() = "大连工厂"
                        and tempLCE.StartDate() <= dlerc.StartDate() and tempLCE.EndDate() >= dlerc.StartDate().StartOfNextMonth() );
        // å½“前月末最后一天日期
        lastDayOfThisMonth := dlerc.StartDate().StartOfNextMonth() - 1;
        cell := dlerr.DL_EngineRackCell( relnew );
        
        // å¤–租库入库费用(发动机销量 / åŒ…装容量[向上取整] * æ–™æž¶å…¥åº“单价)
        // ç©ºæ–™æž¶æ•°é‡ï¼šå¤§è¿žåŽ‚è¯¥äº§å“çš„æ–™æž¶æ€»æ•°é‡ - å‘动机库存 / åŒ…装容量(向上取整)
        plannedInventory := sum( macroPlan, Product_MP.ProductInStockingPoint_MP.ProductInStockingPointInPeriod, tempPISPIP,
                                 tempPISPIP.ProductInStockingPoint_MP().Product_MP().IsLeaf()                                                                and
                                 exists( tempPISPIP.ProductInStockingPoint_MP().Product_MP(), AllParent.AsParent, tempPMP, tempPMP.ID() = "发动机" )         and
                                 tempPISPIP.ProductInStockingPoint_MP().StockingPointID()                                               = "大连外租库"       and
                                 tempPISPIP.ProductInStockingPoint_MP().Product_MP().Generation()                                       = dlerr.Generation() and
                                 tempPISPIP.ProductInStockingPoint_MP().Product_MP().MQBMLB()                                           = dlerr.MLB_MQB()    and
                                 tempPISPIP.Start().Date()                                                                              = lastDayOfThisMonth,
                                 tempPISPIP.PlannedInventoryLevelEnd() );
        cell.PackagingCapacity( guard( lce.PackagingCapacity(), 1 ) );
        cell.PlannedInventory( plannedInventory );
        
        // å¤–租库出库费用(发动机产量 / åŒ…装容量[向上取整] * æ–™æž¶å‡ºåº“单价)
        // CC外租库入库费用:发动机销量 / åŒ…装容量(向上取整)* æ–™æž¶å…¥åº“单价
        // CC外租库出库费用:发动机销量 / åŒ…装容量(向上取整)* æ–™æž¶å‡ºåº“单价
        cell.DL_EngineRackColumn( relset, dlerc );
      }
    }
  *]
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_KW1_Package#2.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_KW1_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_KW2_Package#3.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_KW2_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_PL_Package#1.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_PL_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_ZKG_Package.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_ZKG_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_ZKM_Package.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_CC_ZKM_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_AGW12_Package#4.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_AGW12_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_AGW3_Package#5.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_AGW3_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_KW_Package#3.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_KW_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_PL_Package#2.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_PL_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZKG_Package.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZKG_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZKM_Package.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZKM_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZK_Package#1.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/Attribute_DL_ZK_Unpacking.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCapability/_ROOT_Type_PackagingPlanCapability.qbl
ÎļþÒÑɾ³ý
_Main/BL/Type_PackagingPlanCell/Attribute_CC_PackagingInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CC_PackagingInventory
{
  #keys: '3[415754.0.351286657][415754.0.351286656][415754.0.351286658]'
  Description: '长春工厂包装库存'
  ValueType: Real
}
_Main/BL/Type_PackagingPlanCell/Attribute_CC_UnpackagedInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CC_UnpackagedInventory
{
  #keys: '3[415754.0.351197962][415754.0.351197961][415754.0.351197963]'
  Description: '长春工厂非包装库存'
  ValueType: Real
}
_Main/BL/Type_PackagingPlanCell/Function_CalcPackagingInventory.qbl
@@ -6,11 +6,13 @@
  [*
    // lihongji Jul-26-2024 (created)
    
    value := this.InitialPackagingInventory() + guard( this.Previous().PackagingInventory()                 +
                                                       guard( this.Previous().Package(), 0.0 )              -
    value := ifexpr( this.PackagingPlanRow().Factory() = "长春工厂", this.CC_PackagingInventory(),
                     this.InitialPackagingInventory() + guard( this.Previous().PackagingInventory()                 +
                                                       guard( this.Package(), 0.0 )                         -
                                                       ifexpr( this.TransferIn() > 0.0, 0, this.Unpacking() ), 
                                                       0.0 )
                                              - this.Out();
                                              - this.Out()
                    );
    
    this.PackagingInventory( value );
  *]
_Main/BL/Type_PackagingPlanCell/Function_CalcUnpackagedInventory.qbl
@@ -6,7 +6,8 @@
  [*
    // lihongji Jul-24-2024 (created)
    
    value := guard( this.EndingInventory() - this.PackagingInventory(), 0.0 );
    value := ifexpr( this.PackagingPlanRow().Factory() = "长春工厂", this.CC_UnpackagedInventory(),
                     guard( this.EndingInventory() - this.PackagingInventory(), 0.0 ) );
    
    this.UnpackagedInventory( value );
  *]
_Main/BL/Type_PackagingPlanCell/StaticMethod_GenerateReport.qbl
@@ -13,21 +13,26 @@
    planPre     := macroPlan.PackagingPlanColumn( relnew, StartDate := macroPlan.StartOfPlanning().Date() - 1 );
    
    // ç”ŸæˆæŠ¥è¡¨
    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ) {
    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and
               ( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "DL" ) or pisp.StockingPointID().Regex( "大连" ) or pisp.StockingPointID().Regex( "长春" ) ) ) {
      // å½“前pisp所处地点
      factory             := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "长春" ), "长春工厂", "大连工厂" );
      factoryAbbreviation := ifexpr( pisp.StockingPointID().Regex( "CC" ) or pisp.StockingPointID().Regex( "长春" ), "CC", "DL" );
      // åˆ›å»ºè¡Œ
      ppr := select( macroPlan, PackagingPlanRow, tempPPR, tempPPR.ProductID() = pisp.ProductID() and tempPPR.StockingPointID() = pisp.StockingPointID() );
      ppr := select( macroPlan, PackagingPlanRow, tempPPR, tempPPR.ProductID() = pisp.ProductID() and tempPPR.Factory() = factory );
      if ( isnull( ppr ) ) {
        ppr := macroPlan.PackagingPlanRow( relnew, ProductID := pisp.ProductID(), StockingPointID := pisp.StockingPointID(), Factory := "大连工厂", Category := "ZKG" );
        ppr := macroPlan.PackagingPlanRow( relnew, ProductID := pisp.ProductID(), StockingPointID := pisp.StockingPointID(), Factory := factory, Category := guard( pisp.Product_MP().ParentID(), "" ) );
      }
      
      // åˆ›å»ºè®¡åˆ’前一天格子
      planPreCell      := ppr.PackagingPlanCell( relnew, PackagingPlanColumn := planPre, InitialPackagingInventory := 200 );
      // å‡ºå‘地库存点Trip
      originTrips      := selectset( macroPlan, Unit.Lane.LaneLeg.Trip, tempT, tempT.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID() = pisp.StockingPointID() );
      originTrips      := selectset( macroPlan, Unit.Lane.LaneLeg.Trip, tempT, tempT.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation )      and
                                     TransferPlanRow::IdentifyTheFactory( tempT.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( tempT.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() ) );
      // ç›®çš„地库存点Trip
      destinationTrips := selectset( macroPlan, Unit.Lane.LaneLeg.Trip, tempT, tempT.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID() = pisp.StockingPointID() );
      destinationTrips := selectset( macroPlan, Unit.Lane.LaneLeg.Trip, tempT, tempT.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP().ID().Regex( factoryAbbreviation ) and
                                     TransferPlanRow::IdentifyTheFactory( tempT.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ) <> TransferPlanRow::IdentifyTheFactory( tempT.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() ) );
      
      // å¾ªçޝpispippl
      traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispipl, not pispipl.IsPeriodFrozen() ) {
        // åˆ›å»ºåˆ—
        ppc := select( macroPlan, PackagingPlanColumn, tempPPC, tempPPC.StartDate() = pispipl.Start().Date() );
@@ -38,25 +43,48 @@
        // åˆ›å»ºå•元格
        cell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = ppc );
        if ( isnull( cell ) ) {
          cell := ppr.PackagingPlanCell( relnew, NetDemand := pispipl.DependentDemandAndSalesDemandQuantity() - pispipl.NewSupplyQuantity(), EndingInventory := pispipl.InventoryLevelEnd() );
          cell := ppr.PackagingPlanCell( relnew );
          cell.NetDemand( pispipl.DependentDemandAndSalesDemandQuantity() - pispipl.NewSupplyQuantity() );
          cell.EndingInventory( pispipl.InventoryLevelEnd() );
          cell.PackagingPlanColumn( relset, ppc );
        } else {
          cell.NetDemand( cell.NetDemand() + ( pispipl.DependentDemandAndSalesDemandQuantity() - pispipl.NewSupplyQuantity() ) );
          cell.EndingInventory( cell.EndingInventory() + pispipl.InventoryLevelEnd() );
        }
        
        // è®¾ç½®è°ƒå‡º&调进
        // è®¾ç½®è°ƒå‡º
        outs := selectset( originTrips, Elements, tempT, tempT.Departure().Date() = pispipl.Start().Date() );
        traverse ( outs, Elements, out ) {
          cell.Out( cell.Out() + out.Quantity() );
        traverse ( outs, Elements.ProductInTrip, outPIT, outPIT.ProductID() = pisp.ProductID() ) {
          cell.Out( cell.Out() + outPIT.Quantity() );
        }
        
        // è®¾ç½®è°ƒè¿›
        transferIns := selectset( destinationTrips, Elements, tempT, tempT.Arrival().Date() = pispipl.Start().Date() );
        traverse ( transferIns, Elements, ti ) {
          cell.TransferIn( cell.TransferIn() + ti.Quantity() );
        traverse ( transferIns, Elements.ProductInTrip, tiPIT, tiPIT.ProductID() = pisp.ProductID() ) {
          cell.TransferIn( cell.TransferIn() + tiPIT.Quantity() );
        }
        // é•¿æ˜¥å·¥åŽ‚ç‰¹æ®Šæƒ…å†µè®¾ç½®åŒ…è£…åº“å­˜å’ŒéžåŒ…è£…åº“å­˜
        if ( factory = "长春工厂" ) {
          if ( pisp.StockingPointID().Regex( "外租库" ) ) {
            cell.CC_PackagingInventory( pispipl.InventoryLevelEnd() );
          } else if ( pisp.StockingPointID().Regex( "线边库" ) ) {
            cell.CC_UnpackagedInventory( pispipl.InventoryLevelEnd() );
          }
        }
        
        // è®¾ç½®å‰ä¸€å¤©åº“å­˜
        if ( pispipl.Start().Date() = macroPlan.StartOfPlanning().Date() ) {
    //      prePISPIPL := pispipl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf );
          planPreCell.EndingInventory( 2000 );
          prePISPIPL  := pispipl.PreviousPlanningPISPIP().astype( ProductInStockingPointInPeriodPlanningLeaf ); // å‰ä¸€ä¸ªpispippl
          // åˆ›å»ºè®¡åˆ’前一天格子
          preCell := select( ppr, PackagingPlanCell, tempPPCell, tempPPCell.PackagingPlanColumn() = planPre );
          if ( isnull( preCell ) ) {
            preCell := ppr.PackagingPlanCell( relnew );
            preCell.EndingInventory( prePISPIPL.InventoryLevelEnd() );
            preCell.PackagingPlanColumn( relset, planPre );
          } else {
            preCell.EndingInventory( preCell.EndingInventory() + prePISPIPL.InventoryLevelEnd() );
          }
        }
      }
    }
@@ -66,45 +94,46 @@
    Transaction::Transaction().Propagate( relation( PackagingPlanCell, Next ) );
    
    // è®¾ç½®åŒ…装&拆包-数量
    traverse ( macroPlan, PackagingPlanRow, ppr, ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Bosch" ) or ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Components (Spain)" ) ) {
      traverse ( ppr, PackagingPlanCell, ppc/*, ppc.StartDate() = Date::Construct( 2020, 4, 1 )*/ ) {
        // è®¾ç½®åŒ…装数量
        if ( ppc.PackagingInventory() < ppc.Out() ) { // åŒ…装库存是否小于调出
          prePPC                := ppc.Previous();
          needPackagingQuantity := ppc.Out() - prePPC.PackagingInventory();
          while ( not isnull( prePPC ) and needPackagingQuantity > 0.0 ) {
            // èŽ·å–åŒ…è£…lotsize
            ppls                   := select( macroPlan, PackagingPlanLotSize, tempPPLS, tempPPLS.Factory() =  ppc.PackagingPlanRow().Factory()    and
                                                                                        tempPPLS.ProductID() = ppc.PackagingPlanRow().ProductID() );
            // èŽ·å–æœ€å¤§åŒ…è£…æ•°é‡
            maxPackageReflection   := Reflection::FindAttribute( "PackagingPlanCapability", ppc.PackagingPlanRow().FactoryAbbreviation() + "_" + ppc.PackagingPlanRow().Category() + "_Package" );
            maxPackageQuantity     := maxPackageReflection.GetNumber( macroPlan.PackagingPlanCapability() );
            // èŽ·å–æœ€ç»ˆåŒ…è£…æ•°é‡
            finalPackagingQuantity := minvalue( ceil( needPackagingQuantity / ppls.LotSize() ), ceil( ( maxPackageQuantity - prePPC.Package() ) / ppls.LotSize() ) ) * ppls.LotSize();
            needPackagingQuantity  := needPackagingQuantity - finalPackagingQuantity;
            // è®¾ç½®åŒ…装值
            prePPC.Package( prePPC.Package() + finalPackagingQuantity );
            //debuginfo( "需要包装数量:", needPackagingQuantity, "    lotsize: ", ppls.LotSize(), "    æœ€å¤§åŒ…装数量:", maxPackageQuantity, "    æœ€ç»ˆè¡¥çš„æ•°é‡ï¼š", finalPackagingQuantity );
            PackagingPlanCell::CalculationPackagingPlanProperties();
            prePPC := prePPC.Previous();
          }
        }
        // è®¾ç½®æ‹†åŒ…数量
        if ( ppc.TransferIn() > 0.0 ) { // æœ‰è°ƒå…¥æ•°é‡
          // èŽ·å–åŒ…è£…lotsize
          ppls                 := select( macroPlan, PackagingPlanLotSize, tempPPLS, tempPPLS.Factory() =  ppc.PackagingPlanRow().Factory()    and
                                                                                     tempPPLS.ProductID() = ppc.PackagingPlanRow().ProductID() );
          // è®¾ç½®æ‹†åŒ…值
          ppc.Unpacking( ppc.TransferIn() );
        }
      }
    }
    //traverse ( macroPlan, PackagingPlanRow, ppr, ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Bosch" ) or ( ppr.ProductID() = "Windshield" and ppr.StockingPointID() = "Components (Spain)" ) ) {
    //  traverse ( ppr, PackagingPlanCell, ppc/*, ppc.StartDate() = Date::Construct( 2020, 4, 1 )*/ ) {
    //    // è®¾ç½®åŒ…装数量
    //    if ( ppc.PackagingInventory() < ppc.Out() ) { // åŒ…装库存是否小于调出
    //      prePPC                := ppc.Previous();
    //      needPackagingQuantity := ppc.Out() - prePPC.PackagingInventory();
    //      while ( not isnull( prePPC ) and needPackagingQuantity > 0.0 ) {
    //        // èŽ·å–åŒ…è£…lotsize
    //        ppls                   := select( macroPlan, PackagingPlanLotSize, tempPPLS, tempPPLS.Factory() =  ppc.PackagingPlanRow().Factory()    and
    //                                                                                    tempPPLS.ProductID() = ppc.PackagingPlanRow().ProductID() );
    //
    //        // èŽ·å–æœ€å¤§åŒ…è£…æ•°é‡
    //        maxPackageReflection   := Reflection::FindAttribute( "PackagingPlanCapability", ppc.PackagingPlanRow().FactoryAbbreviation() + "_" + ppc.PackagingPlanRow().Category() + "_Package" );
    ////        maxPackageQuantity     := maxPackageReflection.GetNumber( macroPlan.PackagingPlanCapability() ); // æ­¤å¤„需要修改
    //        maxPackageQuantity     := 100000;
    //
    //        // èŽ·å–æœ€ç»ˆåŒ…è£…æ•°é‡
    //        finalPackagingQuantity := minvalue( ceil( needPackagingQuantity / ppls.LotSize() ), ceil( ( maxPackageQuantity - prePPC.Package() ) / ppls.LotSize() ) ) * ppls.LotSize();
    //        needPackagingQuantity  := needPackagingQuantity - finalPackagingQuantity;
    //
    //        // è®¾ç½®åŒ…装值
    //        prePPC.Package( prePPC.Package() + finalPackagingQuantity );
    //
    //        //debuginfo( "需要包装数量:", needPackagingQuantity, "    lotsize: ", ppls.LotSize(), "    æœ€å¤§åŒ…装数量:", maxPackageQuantity, "    æœ€ç»ˆè¡¥çš„æ•°é‡ï¼š", finalPackagingQuantity );
    //        PackagingPlanCell::CalculationPackagingPlanProperties();
    //
    //        prePPC := prePPC.Previous();
    //      }
    //    }
    //
    //    // è®¾ç½®æ‹†åŒ…数量
    //    if ( ppc.TransferIn() > 0.0 ) { // æœ‰è°ƒå…¥æ•°é‡
    //      // èŽ·å–åŒ…è£…lotsize
    //      ppls                 := select( macroPlan, PackagingPlanLotSize, tempPPLS, tempPPLS.Factory() =  ppc.PackagingPlanRow().Factory()    and
    //                                                                                 tempPPLS.ProductID() = ppc.PackagingPlanRow().ProductID() );
    //
    //      // è®¾ç½®æ‹†åŒ…值
    //      ppc.Unpacking( ppc.TransferIn() );
    //    }
    //  }
    //}
  *]
}
_Main/BL/Type_PackagingPlanNewCapability/Attribute_MaximumDailyPackagingQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute MaximumDailyPackagingQuantity
{
  #keys: '3[413988.0.1594771467][413988.0.1594771466][413988.0.1594771468]'
  ValueType: Real
}
_Main/BL/Type_PackagingPlanNewCapability/Attribute_MaximumDailyUnpackingQuantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute MaximumDailyUnpackingQuantity
{
  #keys: '3[413988.0.1594771477][413988.0.1594771476][413988.0.1594771478]'
  ValueType: Real
}
_Main/BL/Type_PackagingPlanNewCapability/Attribute_ProductionLine.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductionLine
{
  #keys: '3[413988.0.1594771444][413988.0.1594771443][413988.0.1594771445]'
  ValueType: String
}
_Main/BL/Type_PackagingPlanNewCapability/_ROOT_Type_PackagingPlanNewCapability.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type PackagingPlanNewCapability
{
  #keys: '5[413988.0.1594210998][413988.0.1594210996][0.0.0][413988.0.1594210997][413988.0.1594210999]'
  BaseType: Object
  StructuredName: 'PackagingPlanNewCapabilitys'
}
_Main/BL/Type_PackagingPlanRow/Function_CalcName.qbl
@@ -6,7 +6,7 @@
  [*
    // lihongji Jul-24-2024 (created)
    
    value := guard( this.ProductID() + " in " + this.StockingPointID(), this.ProductID() );
    value := guard( this.ProductID(), "" );
    
    this.Name( value );
  *]
_Main/BL/Type_PackagingPlanRow/Method_FilterProduct.qbl
@@ -1,12 +1,13 @@
Quintiq file version 2.0
#parent: #root
Method FilterProduct (
  Product_MPs products
  Product_MPs products,
  String factory
) declarative remote as Boolean
{
  TextBody:
  [*
    flag := exists( products, Elements, tempP, tempP.ID() = this.ProductID() );
    flag := exists( products, Elements, tempP, tempP.ID() = this.ProductID() ) and this.Factory() = factory;
    
    return flag;
  *]
_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl
@@ -14,7 +14,12 @@
    // ç”Ÿæˆè°ƒæ‹¨è®¡åˆ’
    traverse ( macroPlan, Unit, u, u.HasCapacityTypeTransportQuantity() ) {
      traverse ( u, Lane.LaneLeg.Trip, t ) {
        traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 and exists( pit.Product_MP(), AllParent.AsParent, tempP, tempP.ID() = "机加件" ) ) {
        originFactory      := TransferPlanRow::IdentifyTheFactory( t.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() );      // èµ·å§‹å·¥åŽ‚
        destinationFactory := TransferPlanRow::IdentifyTheFactory( t.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() ); // ç›®æ ‡å·¥åŽ‚
        traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0                                           and // æ•°é‡å¤§äºŽ0
                   exists( pit.Product_MP(), AllParent.AsParent, tempP, tempP.ID() = "机加件" )          and // åªå–机加件
                   originFactory                                                   <> destinationFactory     // èµ·å§‹å·¥åŽ‚ä¸èƒ½å’Œç›®æ ‡å·¥åŽ‚ä¸€è‡´
                  ) {
          // æ‰¾è¡Œ
          tpr := TransferPlanRow::FindTransferPlanRowTypeIndex( TransferPlanRow::IdentifyTheFactory( t.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ),
                                                                TransferPlanRow::IdentifyTheFactory( t.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() ),
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_dhSelectedFactory_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: dhSelectedFactory
Response OnCreated () id:Response_MacroPlanner_ApplicationMacroPlanner_dhSelectedFactory_OnCreated
{
  #keys: '[415754.0.350439844]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  QuillAction
  {
    Body:
    [*
      this.Data( "大连工厂" );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -212,5 +212,16 @@
        Taborder: 58
      ]
    }
    Component dhSelectedFactory
    {
      #keys: '[415754.0.350439827]'
      BaseType: 'WebDataHolder'
      Databinding: 'String*'
      Properties:
      [
        Description: '包装计划所选工厂'
        Taborder: 59
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[413988.0.1596179622]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[413988.0.1596179626]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[413988.0.1596179628]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,47 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[413988.0.1596179620]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddslProductionLine
    {
      #keys: '[413988.0.1596148502]'
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.ProductionLine'
        Label: 'Production line'
        Taborder: 0
      ]
    }
    Component npMaximumDailyPackagingQuantity
    {
      #keys: '[413988.0.1596148605]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.MaximumDailyPackagingQuantity'
        Label: 'Maximum daily packaging quantity'
        Taborder: 1
      ]
    }
    Component npMaximumDailyUnpackingQuantity
    {
      #keys: '[413988.0.1596148618]'
      BaseType: 'WebNumberPicker'
      Properties:
      [
        DataBinding: 'DataHolderDialogData.Data.MaximumDailyUnpackingQuantity'
        Label: 'Maximum daily unpacking quantity'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Method_Edit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: #root
Method Edit (
  PackagingPlanNewCapability selection
) id:Method_DialogCreateEditPackagingPlanNewCapability_Edit
{
  #keys: '[413988.0.1596179841]'
  Body:
  [*
    data := shadow( selection );
    DataHolderDialogData.Data( &data );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Method_New.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method New () id:Method_DialogCreateEditPackagingPlanNewCapability_New
{
  #keys: '[413988.0.1596179843]'
  Body:
  [*
    data := MacroPlan.PackagingPlanNewCapability( relshadow );
    DataHolderDialogData.Data( &data );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Method_OnOK.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method OnOK () id:Method_DialogCreateEditPackagingPlanNewCapability_OnOK
{
  #keys: '[413988.0.1596179844]'
  Body:
  [*
    // On ok
    Form.ApplyChanges();
    data := DataHolderDialogData.Data();
    data.Commit();
    Form.Close();
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[413988.0.1596179632]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[413988.0.1596179631]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      Form.OnOK();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/Response_pnlContent_ddslProductionLine_OnCreated.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
Quintiq file version 2.0
#parent: pnlContent/ddslProductionLine
Response OnCreated () id:Response_pnlContent_ddslProductionLine_OnCreated
{
  #keys: '[413988.0.1596148773]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebComponent_OnCreated'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      uids := selectuniquevalues( MacroPlan, Unit, tempU, true, tempU.ID() );
      this.Strings( uids.Concatenate( ";" ) );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditPackagingPlanNewCapability/_ROOT_Component_DialogCreateEditPackagingPlanNewCapability.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogCreateEditPackagingPlanNewCapability
{
  #keys: '[413988.0.1596179618]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
    Component DataHolderDialogData id:DataHolderDialogData_915
    {
      #keys: '[413988.0.1596179977]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[PackagingPlanNewCapability]*'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_abpContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component abpContent
{
  #keys: '[413988.0.1594809024]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_cmContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
Quintiq file version 2.0
Component cmContent
{
  #keys: '[413988.0.1594809029]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuSeparator
    {
      #keys: '[121142.1.1147171519]'
      BaseType: 'MenuSeparator'
      IsDerived: true
      Properties:
      [
        Taborder: 3
      ]
    }
    Component mSelectAll
    {
      #keys: '[413988.0.1596149028]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'SELECTION_VIEW'
        Shortcut: 'Ctrl+A'
        Taborder: 2
        Title: 'Select all'
      ]
    }
    Component mNew
    {
      #keys: '[413988.0.1596149298]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ADD2'
        Taborder: 4
        Title: 'New'
      ]
    }
    Component mEdit
    {
      #keys: '[413988.0.1596149554]'
      BaseType: 'WebMenu'
      Properties:
      [
        BindOnDoubleClick: true
        Image: 'PENCIL'
        Taborder: 5
        Title: 'Edit'
      ]
    }
    Component mDelete
    {
      #keys: '[413988.0.1596149809]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 6
        Title: 'Delete'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_lstContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
Component lstContent
{
  #keys: '[413988.0.1594809021]'
  BaseType: 'WebList'
  Children:
  [
    Component deContent
    {
      #keys: '[413988.0.1594809022]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MacroPlan'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'PackagingPlanNewCapability'
      ]
    }
    #child: abpContent
    Component dslContent
    {
      #keys: '[413988.0.1594809027]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: cmContent
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductionLine","title":"ProductionLine","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductionLine"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaximumDailyPackagingQuantity","title":"MaximumDailyPackagingQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaximumDailyPackagingQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaximumDailyUnpackingQuantity","title":"MaximumDailyUnpackingQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaximumDailyUnpackingQuantity"}}]'
        ContextMenu: 'cmContent'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_lstContent_WebMenu_OnClick
    {
      #keys: '[413988.0.1596148973]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[3777.0.12953454]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_KW1.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_KW2.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_PL.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_ZKG.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_CC_ZKM.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_AGW12.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_AGW3.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_KW.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_PL.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_ZK.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_ZKG#502.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_p_DL_ZKM.def
ÎļþÒÑɾ³ý
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Component_pnlContent.def
@@ -5,18 +5,7 @@
  BaseType: 'WebPanel'
  Children:
  [
    #child: p_DL_ZKG
    #child: p_DL_ZKM
    #child: p_DL_ZK
    #child: p_DL_PL
    #child: p_DL_KW
    #child: p_DL_AGW12
    #child: p_DL_AGW3
    #child: p_CC_ZKG
    #child: p_CC_ZKM
    #child: p_CC_PL
    #child: p_CC_KW1
    #child: p_CC_KW2
    #child: lstContent
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Method_Opne.def
@@ -1,14 +1,10 @@
Quintiq file version 2.0
#parent: #root
Method Opne (
  PackagingPlanCapability ppc
) id:Method_DialogPackagingPlanCapability_Opne
Method Opne () id:Method_DialogPackagingPlanCapability_Opne
{
  #keys: '[413988.0.1402004588]'
  Body:
  [*
    DataHolderDialog.Data( ppc );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Response_lstContent_mDelete_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: lstContent
Response OnClick (
  structured[PackagingPlanNewCapability] selection
) id:Response_lstContent_mDelete_OnClick
{
  #keys: '[413988.0.1596149948]'
  CanBindMultiple: false
  DefinitionID => /lstContent/Responsedef_lstContent_WebMenu_OnClick
  Initiator: 'mDelete'
  QuillAction
  {
    Body:
    [*
      MacroPlan::DeleteObjects( selection );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Response_lstContent_mEdit_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
Quintiq file version 2.0
#parent: lstContent
Response OnClick (
  PackagingPlanNewCapability selection
) id:Response_lstContent_mEdit_OnClick
{
  #keys: '[413988.0.1596149701]'
  CanBindMultiple: false
  DefinitionID => /lstContent/Responsedef_lstContent_WebMenu_OnClick
  Initiator: 'mEdit'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogCreateEditPackagingPlanNewCapability );
      dlg.Edit( selection );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Response_lstContent_mNew_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: lstContent
Response OnClick () id:Response_lstContent_mNew_OnClick
{
  #keys: '[413988.0.1596149457]'
  CanBindMultiple: false
  DefinitionID => /lstContent/Responsedef_lstContent_WebMenu_OnClick
  Initiator: 'mNew'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogCreateEditPackagingPlanNewCapability );
      dlg.New();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/Response_lstContent_mSelectAll_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: lstContent
Response OnClick () id:Response_lstContent_mSelectAll_OnClick
{
  #keys: '[413988.0.1596149206]'
  CanBindMultiple: false
  DefinitionID => /lstContent/Responsedef_lstContent_WebMenu_OnClick
  Initiator: 'mSelectAll'
  QuillAction
  {
    Body:
    [*
      this.SelectAll();
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanCapability/_ROOT_Component_DialogPackagingPlanCapability.def
@@ -9,16 +9,6 @@
  [
    #child: pnlContent
    #child: pnlActions
    Component DataHolderDialog
    {
      #keys: '[413988.0.1402317641]'
      BaseType: 'WebDataHolder'
      Databinding: 'PackagingPlanCapability'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
@@ -26,6 +16,8 @@
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    MinimumColumns: 100
    MinimumRows: 30
    Padding: 'false'
    Title: 'Packaging Plan Capability'
  ]
_Main/UI/MacroPlannerWebApp/Component_DialogPackagingPlanLotSize/_ROOT_Component_DialogPackagingPlanLotSize.def
@@ -16,6 +16,7 @@
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    MinimumColumns: 100
    MinimumRows: 30
    Padding: 'false'
    Title: 'Packaging Plan Lot Size'
_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Component_pHeader.def
@@ -22,6 +22,18 @@
      Properties:
      [
        Image: 'EXPORT1'
        Label: '导出'
        Taborder: 2
      ]
    }
    Component bImport
    {
      #keys: '[415754.0.345743565]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'IMPORT1'
        Label: '导入'
        Taborder: 1
      ]
    }
_Main/UI/MacroPlannerWebApp/Component_FormCC_EngineRackReport/Response_pHeader_bImport_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
Quintiq file version 2.0
#parent: pHeader/bImport
Response OnClick () id:Response_pHeader_bImport_OnClick
{
  #keys: '[415754.0.345782016]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  Precondition:
  [*
    return not isnull( MacroPlan );
  *]
  QuillAction
  {
    Body:
    [*
      try {
        uploadJsonString := Application.GetFile();
        if ( uploadJsonString <> "" ) {
          uploadJson := JSON::Parse( uploadJsonString );
          Archive::VerifyTheFileName( uploadJson );
          fileName := uploadJson.Get( "name" ).GetString();
          base64String := uploadJson.Get( "data" ).GetString();
          webFileBinaryData := BinaryData::FromBase64EncodedString( base64String ).AsBinaryValue();
          generalExcelImportAndExportDataSource := GeneralExcelImportAndExportDataSource::Upload( RecycleBin, webFileBinaryData, fileName );
          generalExcelImportAndExportDataSource.ReadStructure();
          selection := select( generalExcelImportAndExportDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, tempGEIAEDT.Name() = "Sheet1" );
          CC_EngineRackCell::Import( MacroPlan, selection );
          // åŽç»­åˆ é™¤
          generalExcelImportAndExportDataSource.Delete();
          WebMessageBox::Success( Translations::A_VWED_Success() );
        }
      } onerror {
        WebMessageBox::Error( e.GeneralInformation() );
      }
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Component_PanelFilter.def
@@ -86,6 +86,16 @@
        Taborder: 6
      ]
    }
    Component ButtonClearFilter id:ButtonClearFilter_474
    {
      #keys: '[414996.1.116558838]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Clear'
        Taborder: 8
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonClearFilter_OnClick#799.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelFilter/ButtonClearFilter_474
Response OnClick () id:Response_PanelFilter_119_ButtonClearFilter_OnClick_799
{
  #keys: '[414996.1.116558837]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      ddslGeneration.Text( "<All>" );
      ddslMQBMLB.Text( "<All>" );
      ddslPower.Text( "<All>" )
      dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormDemandComparison/Response_PanelFilter_ButtonFilter_OnClick.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      products := dhCheckedProduct.Data().Copy();
      products := dhFinelProduct.Data().Copy();
      if( ddslGeneration.Text() <> "<All>" ){
        products := selectset( products,Elements,element,element.Generation() <> ddslGeneration.Text());
      }
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter#119.def
@@ -86,6 +86,16 @@
        Taborder: 6
      ]
    }
    Component ButtonClearFilter
    {
      #keys: '[414996.1.115030257]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Clear'
        Taborder: 8
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ButtonClearFilter_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: PanelFilter_119/ButtonClearFilter
Response OnClick () id:Response_PanelFilter_119_ButtonClearFilter_OnClick
{
  #keys: '[414996.1.115030293]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
  {
    Body:
    [*
      ddslGeneration.Text( "<All>" );
      ddslMQBMLB.Text( "<All>" );
      ddslPower.Text( "<All>" )
      dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ButtonFilter_OnClick.def
@@ -10,7 +10,7 @@
  {
    Body:
    [*
      products := dhCheckedProduct.Data().Copy();
      products := dhFinelProduct.Data().Copy();
      if( ddslGeneration.Text() <> "<All>" ){
        products := selectset( products,Elements,element,element.Generation() <> ddslGeneration.Text());
      }
_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Component_MatrixEditor493.def
@@ -45,8 +45,8 @@
          Properties:
          [
            DataType: 'MacroPlan'
            FilterArguments: 'products:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedProduct'
            FixedFilter: 'object.FilterProduct( products )'
            FilterArguments: 'products:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedProduct;factory:QLibMacroPlannerWebUI::ApplicationMacroPlanner.dhSelectedFactory'
            FixedFilter: 'object.FilterProduct( products, factory )'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'PackagingPlanRow'
_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Component_pHeader.def
@@ -21,7 +21,7 @@
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Maximum quantity'
        Label: 'Maximum unpackaged quantity'
        Taborder: 1
      ]
    }
@@ -61,6 +61,7 @@
      BaseType: 'WebDropDownStringList'
      Properties:
      [
        InitialValue: '大连工厂'
        Label: '工厂'
        Sorting: 'none'
        Strings: '大连工厂;长春工厂'
_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_bPackagingCapability_OnClick.def
@@ -9,14 +9,9 @@
  {
    Body:
    [*
      if ( isnull( MacroPlan.PackagingPlanCapability() ) ) {
        MacroPlan.PackagingPlanCapability( relnew );
      }
      dlg := construct( DialogPackagingPlanCapability );
      
      dlg.Opne( MacroPlan.PackagingPlanCapability() );
      dlg.Opne();
    *]
    GroupServerCalls: false
  }
_Main/UI/MacroPlannerWebApp/Component_FormPackagingPlan/Response_pHeader_ddslFactorySelection_OnUserSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#parent: pHeader/ddslFactorySelection
Response OnUserSelectionChanged () id:Response_pHeader_ddslFactorySelection_OnUserSelectionChanged
{
  #keys: '[415754.0.350720104]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDropDownStringList_OnUserSelectionChanged'
  QuillAction
  {
    Body:
    [*
      dhSelectedFactory.Data( this.Text() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_ListUnit#963.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
Quintiq file version 2.0
Component ListUnit id:ListUnit_963
{
  #keys: '[414996.1.116589421]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorProductionLineBatchSetShiftPattern
    {
      #keys: '[414996.1.116589422]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'MacroPlan'
        Source: 'MacroPlan'
        Taborder: 0
        Transformation: 'Unit'
      ]
    }
    #child: listActionBarPageProductionLineBatchSetShiftPattern_1
    Component DataSetLevelProductionLineBatchSetShiftPattern
    {
      #keys: '[414996.1.116589424]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuProductionLineBatchSetShiftPattern_1
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}}]'
        ContextMenu: 'listContextMenuProductionLineBatchSetShiftPattern'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_PanelLeft.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelLeft
{
  #keys: '[414996.1.116589353]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListUnit_963
    Component dhSelectUnit
    {
      #keys: '[414996.1.116470420]'
      BaseType: 'WebDataHolder'
      Databinding: 'Unit'
      Properties:
      [
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_PanelProductionLineBatchSetShiftPattern.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelProductionLineBatchSetShiftPattern
{
  #keys: '[414996.1.115082785]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelLeft
    #child: PanelRight
  ]
  Properties:
  [
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_PanelRight.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,116 @@
Quintiq file version 2.0
Component PanelRight
{
  #keys: '[414996.1.116589373]'
  BaseType: 'WebPanel'
  Children:
  [
    Component cbMonday
    {
      #keys: '[414996.1.116589495]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Taborder: 3
      ]
    }
    Component cbTuesday
    {
      #keys: '[414996.1.116589517]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Taborder: 4
      ]
    }
    Component cbWednesday
    {
      #keys: '[414996.1.116589519]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Taborder: 5
      ]
    }
    Component cbThursday
    {
      #keys: '[414996.1.116589521]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Taborder: 6
      ]
    }
    Component cbFriday
    {
      #keys: '[414996.1.116589523]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Taborder: 7
      ]
    }
    Component cbSaturday
    {
      #keys: '[414996.1.116589525]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Taborder: 8
      ]
    }
    Component cbSunday
    {
      #keys: '[414996.1.116589527]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Taborder: 9
      ]
    }
    Component dsStartDate
    {
      #keys: '[414996.1.116589712]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'Start'
        Taborder: 1
      ]
    }
    Component dsEndDate
    {
      #keys: '[414996.1.116589740]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Label: 'End'
        Taborder: 2
      ]
    }
    Component LabelSelectUnit
    {
      #keys: '[414996.1.116470348]'
      BaseType: 'WebLabel'
      Properties:
      [
        DataBinding: 'dhSelectUnit.Data.Name'
        Taborder: 0
      ]
    }
    Component bApply
    {
      #keys: '[414996.1.116470621]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Apply'
        Taborder: 10
      ]
    }
  ]
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_listActionBarPageProductionLineBatchSetShiftPattern#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageProductionLineBatchSetShiftPattern id:listActionBarPageProductionLineBatchSetShiftPattern_1
{
  #keys: '[414996.1.116589423]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Component_listContextMenuProductionLineBatchSetShiftPattern#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuProductionLineBatchSetShiftPattern id:listContextMenuProductionLineBatchSetShiftPattern_1
{
  #keys: '[414996.1.116589425]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/Response_ListUnit_963_OnUserSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListUnit_963
Response OnUserSelectionChanged (
  Unit selection
) id:Response_ListUnit_963_OnUserSelectionChanged
{
  #keys: '[414996.1.116470476]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebList_OnUserSelectionChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      dhSelectUnit.Data( selection );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormProductionLineBatchSetShiftPattern/_ROOT_Component_FormProductionLineBatchSetShiftPattern.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormProductionLineBatchSetShiftPattern
{
  #keys: '[414996.1.115000748]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelProductionLineBatchSetShiftPattern
  ]
  Properties:
  [
    Description: 'FormProductionLineBatchData'
  ]
}