From ad242bf0203ebb1236bd2cb5c1da1dd8619aedce Mon Sep 17 00:00:00 2001
From: xiaoding721 <33130084+xiaoding721@users.noreply.github.com>
Date: 星期三, 25 九月 2024 11:44:55 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev

---
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def                     |   15 
 _Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentInCost.qbl                                                                          |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def                                                    |    2 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl                                                              |    3 
 _Main/BL/Type_LogisticsCostMachining/Attribute_PackagingCapacity.qbl                                                                      |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def                                                |    8 
 _Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl                                                                      |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def                                                  |    8 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutOfCost.qbl                                                                    |    8 
 _Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl                                                                         |   81 +
 _Main/BL/Type_InventoryInterfaceData/StaticMethod_SynchronizeInventory#575.qbl                                                            |    4 
 _Main/BL/Relations/Relation_EnginePipelineSearch_MacroPlan_MacroPlan_EnginePipelineSearch.qbl                                             |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def                                              |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def                 |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def          |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def        |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_bRefresh_OnClick.def                               |   26 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl                                                                    |   20 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def                                                |   10 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorCost.qbl                                                                     |    8 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl                                                                      |   22 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_bRefresh_OnClick.def                                 |   20 
 _Main/BL/Relations/Relation_MachiningPipelineSearch_MacroPlan_MacroPlan_MachiningPipelineSearch.qbl                                       |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def                   |    2 
 _Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl                                                                              |    8 
 _Main/BL/Type_LogisticsCostMachining/Attribute_WarehousingPrice.qbl                                                                       |    4 
 _Main/Sys/Repr/Global/LogisticsCostTransport.qrp                                                                                          |   30 
 _Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def                      |    2 
 _Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl                                                                 |    3 
 _Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl                                                               |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def                                           |   20 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShorTransCost.qbl                                                                    |    8 
 _Main/BL/Type_TransferPlanRow/Method_Filter.qbl                                                                                           |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def                                                     |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport#570.def                                              |   10 
 _Main/Sys/Repr/Global/LogisticsCostMachining.qrp                                                                                          |  102 ++
 _Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl                                                                   |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def                     |    2 
 _Main/BL/Type_ChangeLossSetting/StaticMethod_ValidateInput.qbl                                                                            |    4 
 _Main/BL/Type_LogisticsCostMachining/Attribute_StoragePrice.qbl                                                                           |    4 
 _Main/BL/Type_LogisticsCostMachining/Attribute_UnpackingPrice.qbl                                                                         |    4 
 _Main/BL/Relations/Relation_FinancialProductionSearch_MacroPlan_MacroPlan_FinancialProductionSe.qbl                                       |   23 
 _Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutOfCost.qbl                                                                       |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def                    |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def                           |   15 
 _Main/BL/Type_LogisticsCostTransport/Attribute_LoadingCapacity.qbl                                                                        |    4 
 _Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl                                                                      |    6 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCost.qbl                                                                    |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def                       |    2 
 _Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp                                                                                       |   32 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable#358.def                                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def                                      |    4 
 _Main/BL/Type_LogisticsCostMachining/Attribute_PackagePrice.qbl                                                                           |    4 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl                                                                 |  280 ++++++
 _Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl                                                                     |    6 
 _Main/BL/Type_LogisticsCostEngine/Attribute_WarehousingPrice.qbl                                                                          |    4 
 _Main/BL/Type_LogisticsCostMachining/Attribute_WoodenCratePrice.qbl                                                                       |    4 
 _Main/BL/Type_LogisticsCostMaterialRack/Attribute_CleanPrice.qbl                                                                          |    4 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimateTotalCost.qbl                                                               |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def                         |   15 
 _Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl                                                                     |    4 
 _Main/BL/Type_CCEngineLogisticsCostCell/Attribute_WerkToRentTransCost.qbl                                                                 |    8 
 _Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl                                                                          |   31 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def            |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_bRefresh_OnClick.def                             |   26 
 _Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl                                                                        |   20 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport#670.def                                       |   20 
 _Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl                                                                         |    6 
 _Main/Sys/Repr/Global/LogisticsCostMaterialRack.qrp                                                                                       |   54 +
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def                               |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def                     |    2 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutOfCost.qbl                                                                    |    8 
 _Main/BL/Type_FinancialProductionReport/Method_Generate.qbl                                                                               |    2 
 _Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl                                                                             |   18 
 _Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def                                                      |    2 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentInCost.qbl                                                                       |    8 
 _Main/BL/Type_ChangeLossSettingExcel/TypeIndex_ChangeLossSettingTypeIndex.qbl                                                             |    8 
 _Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcAllCost.qbl                                                                          |   13 
 _Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl                                                                     |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonImport_OnClick#130.def                   |   37 
 _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def                                                     |    8 
 _Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost#517.qbl                                                                    |    6 
 _Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl                                                              |    6 
 _Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl                                                                                 |    8 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_bRefresh_OnClick.def                       |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def           |    2 
 _Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl                                                                      |    3 
 _Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl                                                                            |  108 +-
 _Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl                                                                            |   12 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelExport.def                                             |   10 
 _Main/BL/Type_CC_EngineRackCell/Attribute_UnitPriceOfEmptyShelfStorage.qbl                                                                |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def                 |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def                 |   15 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_bRefresh_OnClick.def                                |   26 
 _Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl                                                                       |   12 
 _Main/BL/Type_LogisticsCostEngine/Attribute_PackagingCapacity.qbl                                                                         |    4 
 _Main/BL/Type_LogisticsCostTransport/Attribute_TransportPrice.qbl                                                                         |    4 
 _Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp                                                                                       |   52 
 _Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultCCUnit.qbl                                                                      |    3 
 _Main/BL/Type_ChangeLossSettingExcel/Attribute_EndDate.qbl                                                                                |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def  |    2 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl                                                              |    3 
 _Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl                                                                          |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_bRefresh_OnClick.def                              |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def                |    2 
 _Main/BL/Type_FinancialSalesReport/Method_Generate.qbl                                                                                    |    4 
 _Main/BL/Type_CCEngineLogisticsCostCell/Attribute_AllCost.qbl                                                                             |    8 
 _Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl                                                                 |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def                     |    2 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorCost.qbl                                                                     |    8 
 _Main/Sys/Repr/Global/LogisticsCostEngine.qrp                                                                                             |   66 +
 _Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def                                               |   10 
 _Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorCost.qbl                                                                        |    8 
 _Main/BL/Relations/Relation_InventorySummarySearch_MacroPlan_MacroPlan_InventorySummarySearch.qbl                                         |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonImport_OnClick.def                   |   37 
 _Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def                    |    8 
 _Main/BL/Type_InventorySummaryReport/Method_Generate.qbl                                                                                  |    2 
 _Main/BL/Type_LogisticsCostMachining/Attribute_BufferPaperPrice.qbl                                                                       |    4 
 _Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimateTotalCost.qbl                                                                   |    8 
 _Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl                                                                      |    2 
 _Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimateTotalCost.qbl                                                                |   13 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def                |    2 
 _Main/BL/Relations/Relation_FinancialSalesSearch_MacroPlan_MacroPlan_FinancialSalesSearch.qbl                                             |   23 
 _Main/BL/Type_LogisticsCostMaterialRack/Attribute_OutboundPrice.qbl                                                                       |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def                                     |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport#545.def                                              |   10 
 _Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl                                                                       |    4 
 _Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl                                                                        |   91 ++
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_WerkToDLRentTransCost.qbl                                                              |    8 
 _Main/BL/Type_LogisticsCostEngine/Attribute_OutboundPrice.qbl                                                                             |    4 
 _Main/BL/Type_LogisticsCostMaterialRack/Attribute_WarehousingPrice.qbl                                                                    |    4 
 _var/_Main/Data/MP_ChangeoverLossSetting.xlsx                                                                                             |    0 
 _Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl                                                                                 |    6 
 _Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl                                                                     |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_bRefresh_OnClick#57.def                        |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def                     |    2 
 _Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl                                                                             |   18 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_AllCost.qbl                                                                            |    8 
 _Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl                                                                            |   54 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def              |    2 
 _Main/BL/Type_CC_EngineRackCell/Attribute_PackagingCapacity.qbl                                                                           |    4 
 _Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl                                                                              |   23 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def      |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def                   |    2 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentInCost.qbl                                                                       |    8 
 _Main/BL/Type_ChangeLossSettingExcel/Attribute_StartDate.qbl                                                                              |    1 
 _Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def                                              |   10 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def        |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def                   |    2 
 _Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl                                                                            |   23 
 _Main/BL/Type_LogisticsCostMaterialRack/Attribute_StoragePrice.qbl                                                                        |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def                       |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def                                                   |    8 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl                                                                     |    2 
 _Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl                                                                    |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def                                                 |   10 
 _Main/BL/Type_LogisticsCostEngine/Attribute_StoragePrice.qbl                                                                              |    4 
 _Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged#847.def  |    2 
 _Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl                                                                       |   23 
 _Main/BL/Type_LogisticsCostMachining/Attribute_OutboundPrice.qbl                                                                          |    4 
 _Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl                                                                   |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_bRefresh_OnClick.def                              |   26 
 _Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def                    |    2 
 _Main/UI/MacroPlannerWebApp/Views/LogisticsCostParameterSetting.vw                                                                        |   38 
 _Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl                                                                     |    3 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimateTotalCost.qbl                                                                  |    8 
 _Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcAllCost.qbl                                                                         |   13 
 /dev/null                                                                                                                                 |   13 
 _Main/BL/Type_MachineLogisticsCostReportCell/StaticMethod_CreateData.qbl                                                                  |   14 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def         |    2 
 _Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def                  |    2 
 _Main/BL/Type_LogisticsCostEngine/Attribute_OtherPrice.qbl                                                                                |    4 
 _Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl                                                                    |    3 
 _Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def                               |   15 
 _Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultDLUnit.qbl                                                                      |    3 
 _Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl                                                                         |   11 
 _Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl                                                               |    6 
 _Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def |    2 
 _Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl                                                                     |    3 
 179 files changed, 2,001 insertions(+), 421 deletions(-)

diff --git a/_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl b/_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl
index 0f8f5ec..268ffa1 100644
--- a/_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl
+++ b/_Main/BL/EDI/Broker_MP_ExportChangeLossSettingsBroker.qbl
@@ -11,8 +11,10 @@
     {
       TargetType: ChangeLossSettingExcel
       EDIMLColumn ChangeLossNumber { Attribute: ChangeLossNumber ValueType: String }
+      EDIMLColumn EndDate { Attribute: EndDate ValueType: Date }
       EDIMLColumn Product1 { Attribute: Product1 ValueType: String }
       EDIMLColumn Product2 { Attribute: Product2 ValueType: String }
+      EDIMLColumn StartDate { Attribute: StartDate ValueType: Date }
       EDIMLColumn Unit { Attribute: Unit ValueType: String }
     }
   }
@@ -23,8 +25,10 @@
       InputTable: ChangeLossSettingExcel
       OutputTable: ChangeoverLossSetting
       EDIColumnMatch { InputColumn: ChangeLossNumber OutputColumn: ChangeLossNumber }
+      EDIColumnMatch { InputColumn: EndDate OutputColumn: EndDate }
       EDIColumnMatch { InputColumn: Product1 OutputColumn: Product1 }
       EDIColumnMatch { InputColumn: Product2 OutputColumn: Product2 }
+      EDIColumnMatch { InputColumn: StartDate OutputColumn: StartDate }
       EDIColumnMatch { InputColumn: Unit OutputColumn: Unit }
     }
   }
@@ -38,6 +42,8 @@
         EDIXLSLinkColumn Product1 { ValueType: String }
         EDIXLSLinkColumn Product2 { ValueType: String }
         EDIXLSLinkColumn Unit { ValueType: String }
+        EDIXLSLinkColumn StartDate { ValueType: Date }
+        EDIXLSLinkColumn EndDate { ValueType: Date }
         EDIXLSLinkColumn ChangeLossNumber { ValueType: String }
       ]
     }
diff --git a/_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl b/_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl
index 3f2dd12..c2a9ee6 100644
--- a/_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl
+++ b/_Main/BL/EDI/Broker_MP_ImportChangeLossSettingsBroker.qbl
@@ -9,14 +9,18 @@
   {
     EDIMLTable ChangeLossSettingExcel
     {
+      PrimaryKeyColumns: EndDate
       PrimaryKeyColumns: Product1
       PrimaryKeyColumns: Product2
+      PrimaryKeyColumns: StartDate
       PrimaryKeyColumns: Unit
       TargetType: ChangeLossSettingExcel
       TypeIndex: ChangeLossSettingTypeIndex
       EDIMLColumn ChangeLossNumber { Attribute: ChangeLossNumber ValueType: String }
+      EDIMLColumn EndDate { Attribute: EndDate ValueType: Date }
       EDIMLColumn Product1 { Attribute: Product1 ValueType: String }
       EDIMLColumn Product2 { Attribute: Product2 ValueType: String }
+      EDIMLColumn StartDate { Attribute: StartDate ValueType: Date }
       EDIMLColumn Unit { Attribute: Unit ValueType: String }
     }
   }
@@ -27,8 +31,10 @@
       InputTable: ChangeoverLossSetting
       OutputTable: ChangeLossSettingExcel
       EDIColumnMatch { InputColumn: ChangeLossNumber OutputColumn: ChangeLossNumber }
+      EDIColumnMatch { InputColumn: EndDate OutputColumn: EndDate }
       EDIColumnMatch { InputColumn: Product1 OutputColumn: Product1 }
       EDIColumnMatch { InputColumn: Product2 OutputColumn: Product2 }
+      EDIColumnMatch { InputColumn: StartDate OutputColumn: StartDate }
       EDIColumnMatch { InputColumn: Unit OutputColumn: Unit }
     }
   }
@@ -43,6 +49,8 @@
         EDIXLSLinkColumn Product2 { ValueType: String }
         EDIXLSLinkColumn Unit { ValueType: String }
         EDIXLSLinkColumn ChangeLossNumber { ValueType: String }
+        EDIXLSLinkColumn StartDate { ValueType: Date }
+        EDIXLSLinkColumn EndDate { ValueType: Date }
       ]
     }
   }
diff --git a/_Main/BL/Relations/Relation_EnginePipelineSearch_MacroPlan_MacroPlan_EnginePipelineSearch.qbl b/_Main/BL/Relations/Relation_EnginePipelineSearch_MacroPlan_MacroPlan_EnginePipelineSearch.qbl
new file mode 100644
index 0000000..91ddb09
--- /dev/null
+++ b/_Main/BL/Relations/Relation_EnginePipelineSearch_MacroPlan_MacroPlan_EnginePipelineSearch.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation EnginePipelineSearch_MacroPlan_MacroPlan_EnginePipelineSearch
+{
+  #keys: '1[415136.0.1155410815]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[415136.0.1155410817][415136.0.1155410816][415136.0.1155410818]'
+    Cardinality: '0to1'
+    ObjectDefinition: EnginePipelineSearch
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide EnginePipelineSearch
+  {
+    #keys: '3[415136.0.1155410820][415136.0.1155410819][415136.0.1155410821]'
+    Cardinality: '0to1'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl b/_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl
deleted file mode 100644
index 0c057e3..0000000
--- a/_Main/BL/Relations/Relation_EnginePipelineSource_Search_EnginePipelineSearch_Source.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation EnginePipelineSource_Search_EnginePipelineSearch_Source
-{
-  #keys: '1[415136.0.883574788]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide Search
-  {
-    #keys: '3[415136.0.883574790][415136.0.883574789][415136.0.883574791]'
-    Cardinality: '0to1'
-    ObjectDefinition: EnginePipelineSource
-    OwningSide: 'Owned'
-  }
-  RelationSide.RightSide Source
-  {
-    #keys: '3[415136.0.883574793][415136.0.883574792][415136.0.883574794]'
-    Cardinality: '0to1'
-    ObjectDefinition: EnginePipelineSearch
-    OwningSide: 'Reference'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl b/_Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl
deleted file mode 100644
index 1fb618d..0000000
--- a/_Main/BL/Relations/Relation_FinancialProductionSearch_FinancialProductionSource_FinancialProduc.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation FinancialProductionSearch_FinancialProductionSource_FinancialProductionSource_FinancialProductionSearch
-{
-  #keys: '1[415136.0.854770948]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide FinancialProductionSource
-  {
-    #keys: '3[415136.0.854770950][415136.0.854770949][415136.0.854770951]'
-    Cardinality: '0to1'
-    ObjectDefinition: FinancialProductionSearch
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide FinancialProductionSearch
-  {
-    #keys: '3[415136.0.854770953][415136.0.854770952][415136.0.854770954]'
-    Cardinality: '0to1'
-    ObjectDefinition: FinancialProductionSource
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_FinancialProductionSearch_MacroPlan_MacroPlan_FinancialProductionSe.qbl b/_Main/BL/Relations/Relation_FinancialProductionSearch_MacroPlan_MacroPlan_FinancialProductionSe.qbl
new file mode 100644
index 0000000..0b83fb1
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialProductionSearch_MacroPlan_MacroPlan_FinancialProductionSe.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialProductionSearch_MacroPlan_MacroPlan_FinancialProductionSearch
+{
+  #keys: '1[415136.0.1155603424]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[415136.0.1155603426][415136.0.1155603425][415136.0.1155603427]'
+    Cardinality: '0to1'
+    ObjectDefinition: FinancialProductionSearch
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide FinancialProductionSearch
+  {
+    #keys: '3[415136.0.1155603429][415136.0.1155603428][415136.0.1155603430]'
+    Cardinality: '0to1'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesSearch_MacroPlan_MacroPlan_FinancialSalesSearch.qbl b/_Main/BL/Relations/Relation_FinancialSalesSearch_MacroPlan_MacroPlan_FinancialSalesSearch.qbl
new file mode 100644
index 0000000..3330f51
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinancialSalesSearch_MacroPlan_MacroPlan_FinancialSalesSearch.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinancialSalesSearch_MacroPlan_MacroPlan_FinancialSalesSearch
+{
+  #keys: '1[415136.0.1155410792]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[415136.0.1155410794][415136.0.1155410793][415136.0.1155410795]'
+    Cardinality: '0to1'
+    ObjectDefinition: FinancialSalesSearch
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide FinancialSalesSearch
+  {
+    #keys: '3[415136.0.1155410797][415136.0.1155410796][415136.0.1155410798]'
+    Cardinality: '0to1'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl b/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl
deleted file mode 100644
index e037345..0000000
--- a/_Main/BL/Relations/Relation_FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_Fina.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation FinancialSalesSource_FinancialSalesSearch_FinancialSalesSearch_FinancialSalesSource
-{
-  #keys: '1[415136.0.865304861]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide FinancialSalesSearch
-  {
-    #keys: '3[415136.0.865304863][415136.0.865304862][415136.0.865304864]'
-    Cardinality: '0to1'
-    ObjectDefinition: FinancialSalesSource
-    OwningSide: 'Owned'
-  }
-  RelationSide.RightSide FinancialSalesSource
-  {
-    #keys: '3[415136.0.865304866][415136.0.865304865][415136.0.865304867]'
-    Cardinality: '0to1'
-    ObjectDefinition: FinancialSalesSearch
-    OwningSide: 'Reference'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl b/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl
deleted file mode 100644
index 2fd19a0..0000000
--- a/_Main/BL/Relations/Relation_InventorySummarySearch_InventorySummarySource_InventorySummarySourc.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation InventorySummarySearch_InventorySummarySource_InventorySummarySource_InventorySummarySearch
-{
-  #keys: '1[415136.0.865304882]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide InventorySummarySource
-  {
-    #keys: '3[415136.0.865304884][415136.0.865304883][415136.0.865304885]'
-    Cardinality: '0to1'
-    ObjectDefinition: InventorySummarySearch
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide InventorySummarySearch
-  {
-    #keys: '3[415136.0.865304887][415136.0.865304886][415136.0.865304888]'
-    Cardinality: '0to1'
-    ObjectDefinition: InventorySummarySource
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Relations/Relation_InventorySummarySearch_MacroPlan_MacroPlan_InventorySummarySearch.qbl b/_Main/BL/Relations/Relation_InventorySummarySearch_MacroPlan_MacroPlan_InventorySummarySearch.qbl
new file mode 100644
index 0000000..5b89107
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InventorySummarySearch_MacroPlan_MacroPlan_InventorySummarySearch.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InventorySummarySearch_MacroPlan_MacroPlan_InventorySummarySearch
+{
+  #keys: '1[415136.0.1155603461]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[415136.0.1155603463][415136.0.1155603462][415136.0.1155603464]'
+    Cardinality: '0to1'
+    ObjectDefinition: InventorySummarySearch
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide InventorySummarySearch
+  {
+    #keys: '3[415136.0.1155603466][415136.0.1155603465][415136.0.1155603467]'
+    Cardinality: '0to1'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_MachiningPipelineSearch_MacroPlan_MacroPlan_MachiningPipelineSearch.qbl b/_Main/BL/Relations/Relation_MachiningPipelineSearch_MacroPlan_MacroPlan_MachiningPipelineSearch.qbl
new file mode 100644
index 0000000..be989a1
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MachiningPipelineSearch_MacroPlan_MacroPlan_MachiningPipelineSearch.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MachiningPipelineSearch_MacroPlan_MacroPlan_MachiningPipelineSearch
+{
+  #keys: '1[415136.0.1155410837]'
+  DefaultRelationStrategy
+  {
+  }
+  RelationSide.LeftSide MacroPlan
+  {
+    #keys: '3[415136.0.1155410839][415136.0.1155410838][415136.0.1155410840]'
+    Cardinality: '0to1'
+    ObjectDefinition: MachiningPipelineSearch
+    OwningSide: 'Reference'
+  }
+  RelationSide.RightSide MachiningPipelineSearch
+  {
+    #keys: '3[415136.0.1155410842][415136.0.1155410841][415136.0.1155410843]'
+    Cardinality: '0to1'
+    ObjectDefinition: MacroPlan
+    OwningSide: 'Owned'
+  }
+}
diff --git a/_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl b/_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl
deleted file mode 100644
index 08a3ddc..0000000
--- a/_Main/BL/Relations/Relation_MachiningPipelineSearch_Source_MachiningPipelineSource_Search.qbl
+++ /dev/null
@@ -1,23 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Relation MachiningPipelineSearch_Source_MachiningPipelineSource_Search
-{
-  #keys: '1[415136.0.894481216]'
-  DefaultRelationStrategy
-  {
-  }
-  RelationSide.LeftSide Source
-  {
-    #keys: '3[415136.0.894481218][415136.0.894481217][415136.0.894481219]'
-    Cardinality: '0to1'
-    ObjectDefinition: MachiningPipelineSearch
-    OwningSide: 'Reference'
-  }
-  RelationSide.RightSide Search
-  {
-    #keys: '3[415136.0.894481221][415136.0.894481220][415136.0.894481222]'
-    Cardinality: '0to1'
-    ObjectDefinition: MachiningPipelineSource
-    OwningSide: 'Owned'
-  }
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_AllCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_AllCost.qbl
new file mode 100644
index 0000000..9fc237e
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_AllCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AllCost
+{
+  #keys: '3[415136.0.1160240045][415136.0.1160240044][415136.0.1160240046]'
+  Description: '鎬昏垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimateTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimateTotalCost.qbl
new file mode 100644
index 0000000..e3bdbe1
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimateTotalCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EstimateTotalCost
+{
+  #keys: '3[415136.0.1160240037][415136.0.1160240036][415136.0.1160240038]'
+  Description: '棰勮鎬昏垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimatedTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimatedTotalCost.qbl
deleted file mode 100644
index 8a9c7d8..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_EstimatedTotalCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute EstimatedTotalCost
-{
-  #keys: '3[415136.0.986844739][415136.0.986844738][415136.0.986844740]'
-  Description: '棰勮鎬昏垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_FactoryToRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_FactoryToRentTransCost.qbl
deleted file mode 100644
index 8dbddf0..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_FactoryToRentTransCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute FactoryToRentTransCost
-{
-  #keys: '3[415136.0.986844781][415136.0.986844780][415136.0.986844782]'
-  Description: '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentEnterCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentEnterCost.qbl
deleted file mode 100644
index 0343f9f..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentEnterCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute RentEnterCost
-{
-  #keys: '3[415136.0.986881423][415136.0.986881422][415136.0.986881424]'
-  Description: '澶栫搴撳叆搴撹垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentInCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentInCost.qbl
new file mode 100644
index 0000000..7f9da85
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentInCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RentInCost
+{
+  #keys: '3[415136.0.1160164663][415136.0.1160164662][415136.0.1160164664]'
+  Description: '澶栫搴撳叆搴撹垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutCost.qbl
deleted file mode 100644
index 005fa21..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute RentOutCost
-{
-  #keys: '3[415136.0.986881433][415136.0.986881432][415136.0.986881434]'
-  Description: '澶栫搴撳嚭搴撹垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutOfCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutOfCost.qbl
new file mode 100644
index 0000000..a80c509
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentOutOfCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RentOutOfCost
+{
+  #keys: '3[415136.0.1160164673][415136.0.1160164672][415136.0.1160164674]'
+  Description: '澶栫搴撳嚭搴撹垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorCost.qbl
new file mode 100644
index 0000000..c5bdd77
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RentStorCost
+{
+  #keys: '3[415136.0.1160164708][415136.0.1160164707][415136.0.1160164709]'
+  Description: '澶栫搴撲粨鍌ㄨ垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorageCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorageCost.qbl
deleted file mode 100644
index c42d3f6..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_RentStorageCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute RentStorageCost
-{
-  #keys: '3[415136.0.986881446][415136.0.986881445][415136.0.986881447]'
-  Description: '澶栫搴撲粨鍌ㄨ垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_TotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_TotalCost.qbl
deleted file mode 100644
index e205166..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_TotalCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute TotalCost
-{
-  #keys: '3[415136.0.986844771][415136.0.986844770][415136.0.986844772]'
-  Description: '鎬昏垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_WerkToRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_WerkToRentTransCost.qbl
new file mode 100644
index 0000000..94a5518
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Attribute_WerkToRentTransCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute WerkToRentTransCost
+{
+  #keys: '3[415136.0.1160240025][415136.0.1160240024][415136.0.1160240026]'
+  Description: '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcAllCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcAllCost.qbl
new file mode 100644
index 0000000..105f146
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcAllCost.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcAllCost
+{
+  Description: '璁$畻鎬昏垂鐢�'
+  TextBody:
+  [*
+    // 鐢勫叞楦� Aug-12-2024 (created)
+    value := this.EstimateTotalCost() * this.Coefficient();
+    
+    this.AllCost( value );
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimateTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimateTotalCost.qbl
new file mode 100644
index 0000000..f4cd10b
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimateTotalCost.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcEstimateTotalCost
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Sep-24-2024 (created)
+    
+    value := this.RentInCost() + this.RentOutOfCost() + this.WerkToRentTransCost() + this.RentStorCost();
+    
+    this.EstimateTotalCost( value );
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimatedTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimatedTotalCost.qbl
deleted file mode 100644
index 2251974..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcEstimatedTotalCost.qbl
+++ /dev/null
@@ -1,13 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Function CalcEstimatedTotalCost
-{
-  TextBody:
-  [*
-    // 鐢勫叞楦� Aug-12-2024 (created)
-    
-    value := this.RentEnterCost() + this.RentOutCost() + this.FactoryToRentTransCost() + this.RentStorageCost();
-    
-    this.EstimatedTotalCost( value );
-  *]
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcTotalCost.qbl
deleted file mode 100644
index e2e8080..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell/Function_CalcTotalCost.qbl
+++ /dev/null
@@ -1,13 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Function CalcTotalCost
-{
-  Description: '璁$畻鎬昏垂鐢�'
-  TextBody:
-  [*
-    // 鐢勫叞楦� Aug-12-2024 (created)
-    value := this.EstimatedTotalCost() * this.Coefficient();
-    
-    this.TotalCost( value );
-  *]
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_AllCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_AllCost.qbl
new file mode 100644
index 0000000..c337067
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_AllCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AllCost
+{
+  #keys: '3[415136.0.1160164831][415136.0.1160164830][415136.0.1160164832]'
+  Description: '鎬昏垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl
deleted file mode 100644
index 1c4d5bf..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCoat.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CCLongTransCoat
-{
-  #keys: '3[415136.0.992900332][415136.0.992900331][415136.0.992900333]'
-  Description: '闀挎槬闀块�旇繍杈撹垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCost.qbl
new file mode 100644
index 0000000..770aa77
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCLongTransCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCLongTransCost
+{
+  #keys: '3[415136.0.1160164735][415136.0.1160164734][415136.0.1160164736]'
+  Description: '闀挎槬闀块�旇繍杈撹垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl
deleted file mode 100644
index 7ad15e3..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentEnterCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CCRentEnterCost
-{
-  #keys: '3[415136.0.992900045][415136.0.992900044][415136.0.992900046]'
-  Description: '闀挎槬澶栫搴撳叆搴撹垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentInCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentInCost.qbl
new file mode 100644
index 0000000..b82c00f
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentInCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCRentInCost
+{
+  #keys: '3[415136.0.1160164743][415136.0.1160164742][415136.0.1160164744]'
+  Description: '闀挎槬澶栫搴撳叆搴撹垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl
deleted file mode 100644
index 66c4cc5..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CCRentOutCost
-{
-  #keys: '3[415136.0.992900048][415136.0.992900047][415136.0.992900049]'
-  Description: '闀挎槬澶栫搴撳嚭搴撹垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutOfCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutOfCost.qbl
new file mode 100644
index 0000000..ce250fd
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentOutOfCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCRentOutOfCost
+{
+  #keys: '3[415136.0.1160164751][415136.0.1160164750][415136.0.1160164752]'
+  Description: '闀挎槬澶栫搴撳嚭搴撹垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl
index ecf78ff..cfd2692 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentQuantity.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute CCRentQuantity
 {
-  #keys: '3[415136.0.993115853][415136.0.993115852][415136.0.993115854]'
+  #keys: '3[415136.0.1160164759][415136.0.1160164758][415136.0.1160164760]'
   Description: '闀挎槬澶栫搴撴暟閲�'
   ValueType: Number
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorCost.qbl
new file mode 100644
index 0000000..29e9d05
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCRentStorCost
+{
+  #keys: '3[415136.0.1160164772][415136.0.1160164771][415136.0.1160164773]'
+  Description: '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl
deleted file mode 100644
index ac4c891..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCRentStorageCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CCRentStorageCost
-{
-  #keys: '3[415136.0.992900051][415136.0.992900050][415136.0.992900052]'
-  Description: '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShorTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShorTransCost.qbl
new file mode 100644
index 0000000..64370a6
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShorTransCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CCShorTransCost
+{
+  #keys: '3[415136.0.1160164780][415136.0.1160164779][415136.0.1160164781]'
+  Description: '闀挎槬鐭�旇繍杈撹垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl
deleted file mode 100644
index 572f8e5..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_CCShortTransCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CCShortTransCost
-{
-  #keys: '3[415136.0.992900342][415136.0.992900341][415136.0.992900343]'
-  Description: '闀挎槬鐭�旇繍杈撹垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl
deleted file mode 100644
index 2ba6eb9..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentEnterCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute DLRentEnterCost
-{
-  #keys: '3[415136.0.992900242][415136.0.992900241][415136.0.992900243]'
-  Description: '澶ц繛澶栫搴撳叆搴撹垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentInCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentInCost.qbl
new file mode 100644
index 0000000..40ed6eb
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentInCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DLRentInCost
+{
+  #keys: '3[415136.0.1160164788][415136.0.1160164787][415136.0.1160164789]'
+  Description: '澶ц繛澶栫搴撳叆搴撹垂鐢�'
+  ValueType: Real
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost\0430.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost\0430.qbl"
deleted file mode 100644
index f95e66f..0000000
--- "a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutCost\0430.qbl"
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute DLRentOutCost
-{
-  #keys: '3[415136.0.992900249][415136.0.992900248][415136.0.992900250]'
-  Description: '澶ц繛澶栫搴撳嚭搴撹垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutOfCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutOfCost.qbl
new file mode 100644
index 0000000..1728adb
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentOutOfCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DLRentOutOfCost
+{
+  #keys: '3[415136.0.1160164796][415136.0.1160164795][415136.0.1160164797]'
+  Description: '澶ц繛澶栫搴撳嚭搴撹垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorCost.qbl
new file mode 100644
index 0000000..8dba73a
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DLRentStorCost
+{
+  #keys: '3[415136.0.1160164807][415136.0.1160164806][415136.0.1160164808]'
+  Description: '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�'
+  ValueType: Real
+}
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost\0430.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost\0430.qbl"
deleted file mode 100644
index c70e451..0000000
--- "a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_DLRentStorageCost\0430.qbl"
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute DLRentStorageCost
-{
-  #keys: '3[415136.0.992900262][415136.0.992900261][415136.0.992900263]'
-  Description: '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimateTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimateTotalCost.qbl
new file mode 100644
index 0000000..8460102
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimateTotalCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EstimateTotalCost
+{
+  #keys: '3[415136.0.1160164815][415136.0.1160164814][415136.0.1160164816]'
+  Description: '棰勮鎬昏垂鐢�'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl
deleted file mode 100644
index 9f5a460..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_EstimatedTotalCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute EstimatedTotalCost
-{
-  #keys: '3[415136.0.992900039][415136.0.992900038][415136.0.992900040]'
-  Description: '棰勮鎬昏垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl
deleted file mode 100644
index d39550c..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_FactoryToDLRentTransCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute FactoryToDLRentTransCost
-{
-  #keys: '3[415136.0.992900042][415136.0.992900041][415136.0.992900043]'
-  Description: '鍘傚唴鍒板ぇ杩炲绉熷簱杩愯緭璐圭敤'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl
deleted file mode 100644
index f2cf46b..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_TotalCost.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute TotalCost
-{
-  #keys: '3[415136.0.992900054][415136.0.992900053][415136.0.992900055]'
-  Description: '鎬昏垂鐢�'
-  ValueType: Number
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_WerkToDLRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_WerkToDLRentTransCost.qbl
new file mode 100644
index 0000000..440aea0
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Attribute_WerkToDLRentTransCost.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute WerkToDLRentTransCost
+{
+  #keys: '3[415136.0.1160164823][415136.0.1160164822][415136.0.1160164824]'
+  Description: '鍘傚唴鍒板ぇ杩炲绉熷簱杩愯緭璐圭敤'
+  ValueType: Real
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcAllCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcAllCost.qbl
new file mode 100644
index 0000000..105f146
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcAllCost.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcAllCost
+{
+  Description: '璁$畻鎬昏垂鐢�'
+  TextBody:
+  [*
+    // 鐢勫叞楦� Aug-12-2024 (created)
+    value := this.EstimateTotalCost() * this.Coefficient();
+    
+    this.AllCost( value );
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimateTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimateTotalCost.qbl
new file mode 100644
index 0000000..d9421bb
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimateTotalCost.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcEstimateTotalCost
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Aug-12-2024 (created)
+    
+    value := this.CCRentInCost() + this.CCRentOutOfCost() + this.CCLongTransCost() + this.CCShorTransCost() + this.CCRentStorCost()
+    + this.DLRentInCost() + this.DLRentOutOfCost() + this.WerkToDLRentTransCost() + this.DLRentStorCost()
+    
+    this.EstimateTotalCost( value );
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl
deleted file mode 100644
index c68e1b4..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcEstimatedTotalCost.qbl
+++ /dev/null
@@ -1,14 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Function CalcEstimatedTotalCost
-{
-  TextBody:
-  [*
-    // 鐢勫叞楦� Aug-12-2024 (created)
-    
-    value := this.CCRentEnterCost() + this.CCRentOutCost() + this.CCLongTransCoat() + this.CCShortTransCost() + this.CCRentStorageCost()
-    + this.DLRentEnterCost() + this.DLRentOutCost() + this.FactoryToDLRentTransCost() + this.DLRentStorageCost();
-    
-    this.EstimatedTotalCost( value );
-  *]
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl
deleted file mode 100644
index e2e8080..0000000
--- a/_Main/BL/Type_CCEngineLogisticsCostCell0/Function_CalcTotalCost.qbl
+++ /dev/null
@@ -1,13 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Function CalcTotalCost
-{
-  Description: '璁$畻鎬昏垂鐢�'
-  TextBody:
-  [*
-    // 鐢勫叞楦� Aug-12-2024 (created)
-    value := this.EstimatedTotalCost() * this.Coefficient();
-    
-    this.TotalCost( value );
-  *]
-}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl
index f8cbebb..4ac90f8 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/Method_Generate.qbl
@@ -29,19 +29,19 @@
           
           sumcell    := selectobject( column, Cell, c, c.Row() = sumrow );
           if( isnull( sumcell ) ){
-            sumcell  := sumrow.Cell( relnew, RentEnterCost         := 0
-                                     , RentOutCost                 := 0 
-                                     , FactoryToRentTransCost      := 0
-                                     , RentStorageCost             := 0 );
+            sumcell  := sumrow.Cell( relnew, RentInCost            := 0
+                                     , RentOutOfCost               := 0 
+                                     , WerkToRentTransCost         := 0
+                                     , RentStorCost                := 0 );
             column.Cell( relinsert, sumcell );
           }
           
-          showcell   := showrow.Cell( relnew, RentEnterCost := cell.RentEnterCost(), RentOutCost := cell.RentOutCost(), FactoryToRentTransCost := cell.FactoryToRentTransCost(), RentStorageCost := cell.RentStorageCost() );
+          showcell   := showrow.Cell( relnew, RentInCost := cell.RentInCost(), RentOutOfCost := cell.RentOutOfCost(), WerkToRentTransCost := cell.WerkToRentTransCost(), RentStorCost := cell.RentStorCost() );
           column.Cell( relinsert, showcell );
-          sumcell.RentEnterCost( cell.RentEnterCost() + sumcell.RentEnterCost() );
-          sumcell.RentOutCost( cell.RentOutCost() + sumcell.RentOutCost() );
-          sumcell.FactoryToRentTransCost( cell.FactoryToRentTransCost() + sumcell.FactoryToRentTransCost() );
-          sumcell.RentStorageCost( cell.RentStorageCost() + sumcell.RentStorageCost() );
+          sumcell.RentInCost( cell.RentInCost() + sumcell.RentInCost() );
+          sumcell.RentOutOfCost( cell.RentOutOfCost() + sumcell.RentOutOfCost() );
+          sumcell.WerkToRentTransCost( cell.WerkToRentTransCost() + sumcell.WerkToRentTransCost() );
+          sumcell.RentStorCost( cell.RentStorCost() + sumcell.RentStorCost() );
         }
       }
     }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl
index dafddad..8d773b6 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Download.qbl
@@ -107,23 +107,23 @@
         }
         //澶栫搴撳叆搴撹垂鐢�
         rententercostcellElement := xmlDOM.CreateElement( "cell" );
-        rententercostcellElement.SetAttribute( "value", [String]c.RentEnterCost() );
+        rententercostcellElement.SetAttribute( "value", [String]c.RentInCost() );
         columnelement.AppendChild( rententercostcellElement );
         //澶栫搴撳嚭搴撹垂鐢�
         rentoutcostcellElement := xmlDOM.CreateElement( "cell" );
-        rentoutcostcellElement.SetAttribute( "value", [String]c.RentOutCost() );
+        rentoutcostcellElement.SetAttribute( "value", [String]c.RentOutOfCost() );
         columnelement.AppendChild( rentoutcostcellElement );
         //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤
         factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
-        factorytorenttranscostcellElement.SetAttribute( "value", [String]c.FactoryToRentTransCost() );
+        factorytorenttranscostcellElement.SetAttribute( "value", [String]c.WerkToRentTransCost() );
         columnelement.AppendChild( factorytorenttranscostcellElement );
         //澶栫搴撲粨鍌ㄨ垂鐢�
         rentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
-        rentstoragecostcellElement.SetAttribute( "value", [String]c.RentStorageCost() );
+        rentstoragecostcellElement.SetAttribute( "value", [String]c.RentStorCost() );
         columnelement.AppendChild( rentstoragecostcellElement );
         //棰勮鎬昏垂鐢�
         estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
-        estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimatedTotalCost() );
+        estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimateTotalCost() );
         columnelement.AppendChild( estimatedtotalcostcellElement );
         //绯绘暟
         coefficientcellElement := xmlDOM.CreateElement( "cell" );
@@ -131,7 +131,7 @@
         columnelement.AppendChild( coefficientcellElement );
         //鎬昏垂鐢�
         totalcostcellElement := xmlDOM.CreateElement( "cell" );
-        totalcostcellElement.SetAttribute( "value", [String]c.TotalCost() );
+        totalcostcellElement.SetAttribute( "value", [String]c.AllCost() );
         columnelement.AppendChild( totalcostcellElement );
       }
       tableElement.AppendChild( columnelement );  
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl
index 4a17ee3..71907f1 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '闀挎槬宸ュ巶';
+    //return '闀挎槬宸ュ巶';
+    return 'VWED CC';
     //return 'Assembly Plant (France)';
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl
new file mode 100644
index 0000000..3310861
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Import.qbl
@@ -0,0 +1,81 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Import (
+  MacroPlan owner,
+  RecycleBin recycle,
+  BinaryValue binaryValue,
+  String filePath
+)
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Sep-20-2024 (created)
+    name                      := CCEngineLogisticsCostReport::GetDefaultName();
+    source                    := GeneralExcelImportAndExportDataSource::Upload( recycle, binaryValue, OS::TempPath() + "template.xlsx" );
+    source.ReadStructure();
+    Transaction::Transaction().Propagate( attribute( GeneralExcelImportAndExportDataColumn, ColumnIndex ) );
+    
+    //娓呯┖瀵煎叆涔嬪墠鐨勮〃
+    owner.CCEngineLogisticsCostReport( relflush );
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( "M2/D2/Y" );
+    
+    products                  := construct( Product_MPs );
+    productcolumn             := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 0 );
+    attricolumn               := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 1 );
+    //鐢熸垚鏂拌〃鐨勬棩鏈熷垪
+    table                     := owner.CCEngineLogisticsCostReport( relnew, ID := name, Name := name );
+    showtable                 := owner.CCEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
+    table.GenerateColumn( owner );
+    traverse( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataRow, excelrow ){
+      productcell             := selectobject( excelrow, GeneralExcelImportAndExportDataCell, excelcell, excelcell.GeneralExcelImportAndExportDataColumn() = productcolumn );
+      //澶勭悊鏈鍚屾鐨勪骇鍝�
+      if( not exists( products, Elements, product, product.ID() = productcell.Value() ) ){
+        product               := selectobject( owner, Product_MP, product, product.ID() = productcell.Value() );
+        products.Add( product );
+        ccrow                 := table.GetRow( productcell.Value() );
+        //鑾峰彇鐩稿悓鐨勪骇鍝�
+        sameproductcells      := selectset( productcolumn, GeneralExcelImportAndExportDataCell, excelcell, excelcell.Value() = productcell.Value() );
+        //浠庢棩鏈熷垪寮�濮嬪鐞�
+        traverse( excelrow, GeneralExcelImportAndExportDataCell, excelcell, excelcell.GeneralExcelImportAndExportDataColumn().ColumnIndex() > 1 ){
+          excelcolumn         := excelcell.GeneralExcelImportAndExportDataColumn();
+          column              := selectobject( table, Column, column, column.Name() = excelcolumn.Name() );
+          cell                := selectobject( ccrow, Cell, cell, cell.Column() = column );
+          traverse( sameproductcells, Elements.GeneralExcelImportAndExportDataRow, samerow ){
+            attricell         := selectobject( samerow, GeneralExcelImportAndExportDataCell, attricell, attricell.GeneralExcelImportAndExportDataColumn() = attricolumn );
+            if( not ( attricell.Value() = '棰勮鎬昏垂鐢�' or attricell.Value() = '鎬昏垂鐢�' ) ){
+              valuecell       := selectobject( samerow, GeneralExcelImportAndExportDataCell, valuecell, valuecell.GeneralExcelImportAndExportDataColumn() = excelcolumn );
+              if( attricell.Value() = '澶栫搴撳叆搴撹垂鐢�' ){
+                cell.RentInCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '澶栫搴撳嚭搴撹垂鐢�' ){
+                cell.RentOutOfCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤' ){
+                cell.WerkToRentTransCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '澶栫搴撲粨鍌ㄨ垂鐢�' ){
+                cell.RentStorCost( [Number]valuecell.Value() );
+              }
+    //          else if( attricell.Value() = '棰勮鎬昏垂鐢�' ){
+    //            cell.EstimatedTotalCost( [Number]valuecell.Value() );
+    //          }
+              else if( attricell.Value() = '绯绘暟' ){
+                cell.Coefficient( [Number]valuecell.Value() );
+              }
+    //          else if( attricell.Value() = '鎬昏垂鐢�' ){
+    //            cell.TotalCost( [Number]valuecell.Value() );
+    //          }
+            }
+          }
+        }
+      }
+    }
+    rows := selectsortedset( table, Row, row, row.Name() );
+    i    := 0;
+    traverse( rows, Elements, e ){
+      e.RowNr( i );
+      i := i + 1;
+    }
+    //
+    showtable.Generate( owner.CCEngineLogisticsCostSearch(), products );
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
index 8a22432..1fadf1f 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport/StaticMethod_Initialize.qbl
@@ -47,7 +47,7 @@
                   //鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬闀挎槬浜ч噺
                   quantity          := ceil( [Number]cell.Value() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                   column            := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
-                  //澶栫搴撳叆搴撹垂鐢�
+                  //澶栫搴撳叆搴撹垂鐢� 
                   ccrow.SetRentEnterCost( column, quantity );
                 }
               }
@@ -86,7 +86,7 @@
         }
       }
     }
-    //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤锛氾紝鍦� trip plan閲屾壘鍒伴暱鏄ヨ閰嶇嚎杈瑰簱鍒伴暱鏄ュ绉熷簱鐨勮繍杈撴暟閲忥紝锛岋紝鐢ㄥ叕寮忚绠楀緱鍑虹粨鏋滐紝鏈堝害杩涜姹囨��
+    //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤锛氾紝鍦� trip plan閲屾壘鍒伴暱鏄ヨ閰嶇嚎杈瑰簱鍒伴暱鏄ュ绉熷簱鐨勮繍杈撴暟閲忥紝锛岋紝鐢ㄥ叕寮忚绠楀緱鍑虹粨鏋滐紝鏈堝害杩涜姹囨�籆C-MOMO鍒伴暱鏄ュ绉熷簱
     traverse( owner, Unit.Lane.LaneLeg, laneleg ){
       //璧峰搴撳瓨鐐规槸鍚︽槸闀挎槬瑁呴厤绾胯竟搴�
       originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl
index 52764b4..ae69bdb 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/Method_Generate.qbl
@@ -29,37 +29,37 @@
           
           sumcell    := selectobject( column, Cell, c, c.Row() = sumrow );
           if( isnull( sumcell ) ){
-            sumcell  := sumrow.Cell( relnew, CCRentEnterCost         := 0
-                                     , CCRentOutCost                 := 0 
-                                     , CCLongTransCoat               := 0
-                                     , CCShortTransCost              := 0
-                                     , CCRentStorageCost             := 0
-                                     , DLRentEnterCost               := 0
-                                     , DLRentOutCost                 := 0
-                                     , FactoryToDLRentTransCost      := 0
-                                     , DLRentStorageCost             := 0 );
+            sumcell  := sumrow.Cell( relnew, CCRentInCost            := 0
+                                     , CCRentOutOfCost               := 0 
+                                     , CCLongTransCost               := 0
+                                     , CCShorTransCost               := 0
+                                     , CCRentStorCost                := 0
+                                     , DLRentInCost                  := 0
+                                     , DLRentOutOfCost               := 0
+                                     , WerkToDLRentTransCost         := 0
+                                     , DLRentStorCost                := 0 );
             column.Cell( relinsert, sumcell );
           }
           
-          showcell   := showrow.Cell( relnew, CCRentEnterCost        := cell.CCRentEnterCost()
-                                      , CCRentOutCost                := cell.CCRentOutCost()
-                                      , CCLongTransCoat              := cell.CCLongTransCoat()
-                                      , CCShortTransCost             := cell.CCShortTransCost()
-                                      , CCRentStorageCost            := cell.CCRentStorageCost()
-                                      , DLRentEnterCost              := cell.DLRentEnterCost()
-                                      , DLRentOutCost                := cell.DLRentOutCost()
-                                      , FactoryToDLRentTransCost     := cell.FactoryToDLRentTransCost()
-                                      , DLRentStorageCost            := cell.DLRentStorageCost() );
+          showcell   := showrow.Cell( relnew, CCRentInCost           := cell.CCRentInCost()
+                                      , CCRentOutOfCost              := cell.CCRentOutOfCost()
+                                      , CCLongTransCost              := cell.CCLongTransCost()
+                                      , CCShorTransCost              := cell.CCShorTransCost()
+                                      , CCRentStorCost               := cell.CCRentStorCost()
+                                      , DLRentInCost                 := cell.DLRentInCost()
+                                      , DLRentOutOfCost              := cell.DLRentOutOfCost()
+                                      , WerkToDLRentTransCost        := cell.WerkToDLRentTransCost()
+                                      , DLRentStorCost            := cell.DLRentStorCost() );
           column.Cell( relinsert, showcell );
-          sumcell.CCRentEnterCost( cell.CCRentEnterCost() + sumcell.CCRentEnterCost() );
-          sumcell.CCRentOutCost( cell.CCRentOutCost() + sumcell.CCRentOutCost() );
-          sumcell.CCLongTransCoat( cell.CCLongTransCoat() + sumcell.CCLongTransCoat() );
-          sumcell.CCShortTransCost( cell.CCShortTransCost() + sumcell.CCShortTransCost() );
-          sumcell.CCRentStorageCost( cell.CCRentStorageCost() + sumcell.CCRentStorageCost() );
-          sumcell.DLRentEnterCost( cell.DLRentEnterCost() + sumcell.DLRentEnterCost() );
-          sumcell.DLRentOutCost( cell.DLRentOutCost() + sumcell.DLRentOutCost() );
-          sumcell.FactoryToDLRentTransCost( cell.FactoryToDLRentTransCost() + sumcell.FactoryToDLRentTransCost() );
-          sumcell.DLRentStorageCost( cell.DLRentStorageCost() + sumcell.DLRentStorageCost() );
+          sumcell.CCRentOutOfCost( cell.CCRentOutOfCost() + sumcell.CCRentOutOfCost() );
+          sumcell.CCRentOutOfCost( cell.CCRentOutOfCost() + sumcell.CCRentOutOfCost() );
+          sumcell.CCLongTransCost( cell.CCLongTransCost() + sumcell.CCLongTransCost() );
+          sumcell.CCShorTransCost( cell.CCShorTransCost() + sumcell.CCShorTransCost() );
+          sumcell.CCRentStorCost( cell.CCRentStorCost() + sumcell.CCRentStorCost() );
+          sumcell.DLRentInCost( cell.DLRentInCost() + sumcell.DLRentInCost() );
+          sumcell.DLRentOutOfCost( cell.DLRentOutOfCost() + sumcell.DLRentOutOfCost() );
+          sumcell.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() + sumcell.WerkToDLRentTransCost() );
+          sumcell.DLRentStorCost( cell.DLRentStorCost() + sumcell.DLRentStorCost() );
         }
       }
     }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl
index 82e75c8..977a5d1 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Download.qbl
@@ -147,43 +147,43 @@
         }
         //闀挎槬澶栫搴撳叆搴撹垂鐢�
         ccrententercostcellElement := xmlDOM.CreateElement( "cell" );
-        ccrententercostcellElement.SetAttribute( "value", [String]c.CCRentEnterCost() );
+        ccrententercostcellElement.SetAttribute( "value", [String]c.CCRentInCost() );
         columnelement.AppendChild( ccrententercostcellElement );
         //闀挎槬澶栫搴撳嚭搴撹垂鐢�
         ccrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
-        ccrentoutcostcellElement.SetAttribute( "value", [String]c.CCRentOutCost() );
+        ccrentoutcostcellElement.SetAttribute( "value", [String]c.CCRentOutOfCost() );
         columnelement.AppendChild( ccrentoutcostcellElement );
         //闀挎槬闀块�旇繍杈撹垂鐢�
         cclongtranscostcellElement := xmlDOM.CreateElement( "cell" );
-        cclongtranscostcellElement.SetAttribute( "value", [String]c.CCLongTransCoat() );
+        cclongtranscostcellElement.SetAttribute( "value", [String]c.CCLongTransCost() );
         columnelement.AppendChild( cclongtranscostcellElement );
         //闀挎槬鐭�旇繍杈撹垂鐢�
         ccshorttranscostcellElement := xmlDOM.CreateElement( "cell" );
-        ccshorttranscostcellElement.SetAttribute( "value", [String]c.CCShortTransCost() );
+        ccshorttranscostcellElement.SetAttribute( "value", [String]c.CCShorTransCost() );
         columnelement.AppendChild( ccshorttranscostcellElement );
         //闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�
         ccrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
-        ccrentstoragecostcellElement.SetAttribute( "value", [String]c.CCRentStorageCost() );
+        ccrentstoragecostcellElement.SetAttribute( "value", [String]c.CCRentStorCost() );
         columnelement.AppendChild( ccrentstoragecostcellElement );
         //澶ц繛澶栫搴撳叆搴撹垂鐢�
         dlrententercostcellElement := xmlDOM.CreateElement( "cell" );
-        dlrententercostcellElement.SetAttribute( "value", [String]c.DLRentEnterCost() );
+        dlrententercostcellElement.SetAttribute( "value", [String]c.DLRentInCost() );
         columnelement.AppendChild( dlrententercostcellElement );
         //澶ц繛澶栫搴撳嚭搴撹垂鐢�
         dlrentoutcostcellElement := xmlDOM.CreateElement( "cell" );
-        dlrentoutcostcellElement.SetAttribute( "value", [String]c.DLRentOutCost() );
+        dlrentoutcostcellElement.SetAttribute( "value", [String]c.DLRentOutOfCost() );
         columnelement.AppendChild( dlrentoutcostcellElement );
         //鍘傚唴鍒板绉熷簱杩愯緭璐圭敤
         factorytorenttranscostcellElement := xmlDOM.CreateElement( "cell" );
-        factorytorenttranscostcellElement.SetAttribute( "value", [String]c.FactoryToDLRentTransCost() );
+        factorytorenttranscostcellElement.SetAttribute( "value", [String]c.WerkToDLRentTransCost() );
         columnelement.AppendChild( factorytorenttranscostcellElement );
         //澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�
         dlrentstoragecostcellElement := xmlDOM.CreateElement( "cell" );
-        dlrentstoragecostcellElement.SetAttribute( "value", [String]c.DLRentStorageCost() );
+        dlrentstoragecostcellElement.SetAttribute( "value", [String]c.DLRentStorCost() );
         columnelement.AppendChild( dlrentstoragecostcellElement );
         //棰勮鎬昏垂鐢�
         estimatedtotalcostcellElement := xmlDOM.CreateElement( "cell" );
-        estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimatedTotalCost() );
+        estimatedtotalcostcellElement.SetAttribute( "value", [String]c.EstimateTotalCost() );
         columnelement.AppendChild( estimatedtotalcostcellElement );
         //绯绘暟
         coefficientcellElement := xmlDOM.CreateElement( "cell" );
@@ -191,7 +191,7 @@
         columnelement.AppendChild( coefficientcellElement );
         //鎬昏垂鐢�
         totalcostcellElement := xmlDOM.CreateElement( "cell" );
-        totalcostcellElement.SetAttribute( "value", [String]c.TotalCost() );
+        totalcostcellElement.SetAttribute( "value", [String]c.AllCost() );
         columnelement.AppendChild( totalcostcellElement );
       }
       tableElement.AppendChild( columnelement );  
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl
index 4a17ee3..71907f1 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '闀挎槬宸ュ巶';
+    //return '闀挎槬宸ュ巶';
+    return 'VWED CC';
     //return 'Assembly Plant (France)';
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl
index 36d2be8..4f3aeda 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '澶ц繛宸ュ巶';
+    //return '澶ц繛宸ュ巶';
+    return 'VWED DL';
     //return 'Assembly Plant (France)';
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl
new file mode 100644
index 0000000..78e94e9
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Import.qbl
@@ -0,0 +1,91 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Import (
+  MacroPlan owner,
+  RecycleBin recycle,
+  BinaryValue binaryValue,
+  String filePath
+)
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Sep-20-2024 (created)
+    name                      := CCEngineLogisticsCostReport::GetDefaultName();
+    source                    := GeneralExcelImportAndExportDataSource::Upload( recycle, binaryValue, OS::TempPath() + "template.xlsx" );
+    source.ReadStructure();
+    Transaction::Transaction().Propagate( attribute( GeneralExcelImportAndExportDataColumn, ColumnIndex ) );
+    
+    //娓呯┖瀵煎叆涔嬪墠鐨勮〃
+    owner.DLEngineLogisticsCostReport( relflush );
+    cnv2 := StringToDate::StandardConverter();
+    cnv2.SetCustomConversion();
+    cnv2.CustomFormatString( "M2/D2/Y" );
+    
+    products                  := construct( Product_MPs );
+    productcolumn             := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 0 );
+    attricolumn               := selectobject( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() = 1 );
+    //鐢熸垚鏂拌〃鐨勬棩鏈熷垪
+    table                     := owner.DLEngineLogisticsCostReport( relnew, ID := name, Name := name );
+    showtable                 := owner.DLEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
+    table.GenerateColumn( owner );
+    traverse( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataRow, excelrow ){
+      productcell             := selectobject( excelrow, GeneralExcelImportAndExportDataCell, excelcell, excelcell.GeneralExcelImportAndExportDataColumn() = productcolumn );
+      //澶勭悊鏈鍚屾鐨勪骇鍝�
+      if( not exists( products, Elements, product, product.ID() = productcell.Value() ) ){
+        product               := selectobject( owner, Product_MP, product, product.ID() = productcell.Value() );
+        products.Add( product );
+        ccrow                 := table.GetRow( productcell.Value() );
+        //鑾峰彇鐩稿悓鐨勪骇鍝�
+        sameproductcells      := selectset( productcolumn, GeneralExcelImportAndExportDataCell, excelcell, excelcell.Value() = productcell.Value() );
+        //浠庢棩鏈熷垪寮�濮嬪鐞�
+        traverse( excelrow, GeneralExcelImportAndExportDataCell, excelcell, excelcell.GeneralExcelImportAndExportDataColumn().ColumnIndex() > 1 ){
+          excelcolumn         := excelcell.GeneralExcelImportAndExportDataColumn();
+          column              := selectobject( table, Column, column, column.Name() = excelcolumn.Name() );
+          cell                := selectobject( ccrow, Cell, cell, cell.Column() = column );
+          traverse( sameproductcells, Elements.GeneralExcelImportAndExportDataRow, samerow ){
+            attricell         := selectobject( samerow, GeneralExcelImportAndExportDataCell, attricell, attricell.GeneralExcelImportAndExportDataColumn() = attricolumn );
+            if( not ( attricell.Value() = '棰勮鎬昏垂鐢�' or attricell.Value() = '鎬昏垂鐢�' ) ){
+              valuecell       := selectobject( samerow, GeneralExcelImportAndExportDataCell, valuecell, valuecell.GeneralExcelImportAndExportDataColumn() = excelcolumn );
+              if( attricell.Value() = '闀挎槬澶栫搴撳叆搴撹垂鐢�' ){
+                cell.CCRentInCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '闀挎槬澶栫搴撳嚭搴撹垂鐢�' ){
+                cell.CCRentOutOfCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '闀挎槬闀块�旇繍杈撹垂鐢�' ){
+                cell.CCLongTransCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '闀挎槬鐭�旇繍杈撹垂鐢�' ){
+                cell.CCShorTransCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�' ){
+                cell.CCRentStorCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '澶ц繛澶栫搴撳叆搴撹垂鐢�' ){
+                cell.DLRentInCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '澶ц繛澶栫搴撳嚭搴撹垂鐢�' ){
+                cell.DLRentOutOfCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤' ){
+                cell.WerkToDLRentTransCost( [Number]valuecell.Value() );
+              }else if( attricell.Value() = '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�' ){
+                cell.DLRentStorCost( [Number]valuecell.Value() );
+              }
+    //          else if( attricell.Value() = '棰勮鎬昏垂鐢�' ){
+    //            cell.EstimatedTotalCost( [Number]valuecell.Value() );
+    //          }
+              else if( attricell.Value() = '绯绘暟' ){
+                cell.Coefficient( [Number]valuecell.Value() );
+              }
+    //          else if( attricell.Value() = '鎬昏垂鐢�' ){
+    //            cell.TotalCost( [Number]valuecell.Value() );
+    //          }
+            }
+          }
+        }
+      }
+    }
+    rows := selectsortedset( table, Row, row, row.Name() );
+    i    := 0;
+    traverse( rows, Elements, e ){
+      e.RowNr( i );
+      i := i + 1;
+    }
+    //
+    showtable.Generate( owner.DLEngineLogisticsCostSearch(), products );
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
index 63f7b8e..bb63502 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_Initialize.qbl
@@ -29,7 +29,7 @@
     
     table.GenerateColumn( owner );
     //鍙戝線闀挎槬鐨勯攢閲忛渶瑕佸湪trip plan閲岄潰鎵惧埌璧峰搴撳瓨鐐逛负澶ц繛瑁呴厤绾胯竟搴擄紝鐩殑鍦颁负闀挎槬澶栫搴撶殑浜у搧 绠楀嚭鍙戝線闀挎槬鐨勯攢閲忓悗锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃閲屾壘鍒板搴旂殑鍖呰瀹归噺鍜岄暱鏄ュ叆搴撳崟浠凤紝鐢ㄥ叕寮忚绠楋紝鏈堝害杩涜姹囨��
-    //鍦� trip plan閲屾壘鍒板ぇ杩炶閰嶇嚎杈瑰簱鍒板ぇ杩炲绉熷簱鐨勮繍杈撴暟閲�
+    //鍦� trip plan閲屾壘鍒板ぇ杩炶閰嶇嚎杈瑰簱鍒板ぇ杩炲绉熷簱鐨勮繍杈撴暟閲�//澶ц繛鍘傚唴搴撳埌澶栫搴�
     traverse( owner, Unit.Lane.LaneLeg, laneleg ){
       //璧峰搴撳瓨鐐规槸鍚︽槸澶ц繛瑁呴厤绾胯竟搴�
       originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
@@ -67,8 +67,8 @@
                   entercost  := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                   //闀挎槬澶栫搴撳嚭搴撹垂鐢�: 鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环
                   outcost    := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
-                  cell.CCRentEnterCost( cell.CCRentEnterCost() + entercost );
-                  cell.CCRentOutCost( cell.CCRentOutCost() + outcost );
+                  cell.CCRentInCost( cell.CCRentInCost() + entercost ); 
+                  cell.CCRentOutOfCost( cell.CCRentOutOfCost() + outcost ); 
                 }
               }
               if( isdlrent ){//鐩殑鍦版槸澶ц繛澶栫搴�
@@ -85,7 +85,7 @@
                   cell       := selectobject( row, Cell, cell, cell.Column() = column );
                   //杩愯緭鏁伴噺/鍖呰瀹归噺/瑁呰浇瀹归噺*杩愯緭鍗曚环
                   cost       := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//鍥涜垗浜斿叆
-                  cell.FactoryToDLRentTransCost( cell.FactoryToDLRentTransCost() + cost );
+                  cell.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() + cost );
                 }
               }
             }
@@ -93,7 +93,7 @@
         }
       }
     }
-    //澶ц繛澶栫搴撳叆搴撹垂鐢細鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬澶ц繛宸ュ巶璇ヤ骇鍝佷骇閲忓噺鍘诲彂寰�闀挎槬鐨勬暟閲�
+    //澶ц繛澶栫搴撳叆搴撹垂鐢細鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬澶ц繛宸ュ巶璇ヤ骇鍝佷骇閲忓噺鍘诲彂寰�闀挎槬鐨勬暟閲�-newSupply
     traverse( owner, FinancialProductionSource, source, not source.IsImport() ){//璐㈠姟浜ч噺鎶ヨ〃闈炲鍏�
       traverse( source, FinancialProductionReport, report, not report.IsShow() ){//璐㈠姟浜ч噺鎶ヨ〃涓嶆樉绀�
         traverse( report, FinancialProductionRow, row, row.Unit() = dlunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' and cell.FinancialProductionColumn().IsDay() ) ){//璐㈠姟浜ч噺鎶ヨ〃閲岀殑澶ц繛浜ч噺, 涓嶄负0
@@ -121,7 +121,7 @@
         }
       }
     }
-    //澶ц繛澶栫搴撳嚭搴撹垂鐢細鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环锛屽嚭搴撻噺绛変簬澶ц繛宸ュ巶璇ヤ骇鍝侀攢閲忓噺鍘诲彂寰�闀挎槬鐨勬暟閲�
+    //澶ц繛澶栫搴撳嚭搴撹垂鐢細鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环锛屽嚭搴撻噺绛変簬澶ц繛宸ュ巶璇ヤ骇鍝侀攢閲忓噺鍘诲彂寰�闀挎槬鐨勬暟閲�-newSupply, 澶ц繛鍘傚唴搴擄紝澶ц繛澶栫搴�
     traverse( owner, FinancialSalesSource, source, not source.IsImport() ){//璐㈠姟閿�閲忔姤琛ㄩ潪瀵煎叆
       traverse( source, FinancialSalesReport, report, not report.IsShow() ){//璐㈠姟閿�閲忔姤琛ㄤ笉鏄剧ず
         traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' and cell.FinancialSalesColumn().IsDay() ) ){//璐㈠姟閿�閲忔姤琛ㄩ噷鐨勫ぇ杩炰骇閲�, 涓嶄负0
@@ -183,7 +183,7 @@
                  
                 cost           := ceil( ceil( [Number]tpcell.Value() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
                 cell           := selectobject( row, Cell, cell, cell.Column() = column );
-                cell.CCLongTransCoat( cell.CCLongTransCoat() + cost );
+                cell.CCLongTransCost( cell.CCLongTransCost() + cost ); 
               }
             }
           }
@@ -217,7 +217,7 @@
           //      info( '-------------------------', column.Name() );
                 cost           := ceil( [Number]psdip.Quantity() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
                 cell           := selectobject( row, Cell, cell, cell.Column() = column );
-                cell.CCShortTransCost( cell.CCShortTransCost() + cost );
+                cell.CCShorTransCost( cell.CCShorTransCost() + cost ); 
               }
             }
           }
@@ -255,7 +255,7 @@
                                                      and engine.Factory() = ccunit );
                    if( not isnull( enginecost ) ){
                      cost        := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
-                     cell.CCRentStorageCost( cell.CCRentStorageCost() + cost );
+                     cell.CCRentStorCost( cell.CCRentStorCost() + cost ); 
                    }
                 } else {
                   //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
@@ -263,7 +263,7 @@
                                                      and engine.Factory() = dlunit  );
                    if( not isnull( enginecost ) ){
                      cost        := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
-                     cell.DLRentStorageCost( cell.DLRentStorageCost() + cost );;
+                     cell.DLRentStorCost( cell.DLRentStorCost() + cost );
                    }
                 }
               }   
diff --git a/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl
new file mode 100644
index 0000000..c37810c
--- /dev/null
+++ b/_Main/BL/Type_CCEngineLogisticsCostReport0/StaticMethod_InitializeNew.qbl
@@ -0,0 +1,280 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod InitializeNew (
+  MacroPlan owner
+)
+{
+  TextBody:
+  [*
+    // 鐢勫叞楦� Aug-12-2024 (created)
+    owner.DLEngineLogisticsCostReport( relflush );
+    produtparent              := DLEngineLogisticsCostReport::GetDefaultProductParent();
+    name                      := DLEngineLogisticsCostReport::GetDefaultName();
+    allunit                   := DLEngineLogisticsCostReport::GetDefaultAllUnit();
+    ccunit                    := DLEngineLogisticsCostReport::GetDefaultCCUnit();
+    dlunit                    := DLEngineLogisticsCostReport::GetDefaultDLUnit();
+    //dlline                    := DLEngineLogisticsCostReport::GetStockingPointDLLine();
+    ccrent                    := DLEngineLogisticsCostReport::GetStockingPointCCRent();
+    dlrent                    := DLEngineLogisticsCostReport::GetStockingPointCCRent();
+    
+    startofplanning           := owner.StartOfPlanning().Date();
+    //startofyear               := startofplanning.StartOfYear();
+    startofnextyear           := startofplanning.StartOfNextYear();
+    
+    table                     := owner.DLEngineLogisticsCostReport( relnew, ID := name, Name := name );
+    showtable                 := owner.DLEngineLogisticsCostReport( relnew, ID := name + 'Show', Name := name, IsShow := true );
+    search                    := owner.DLEngineLogisticsCostSearch( relnew, Generation := allunit, MqbMlb := allunit, Power := allunit );
+    
+    products                  := construct( Product_MPs );
+    
+    table.GenerateColumn( owner );
+    //鍦� trip plan閲屾壘鍒板ぇ杩炶閰嶇嚎杈瑰簱鍒板ぇ杩炲绉熷簱鐨勮繍杈撴暟閲�//澶ц繛鍘傚唴搴撳埌澶栫搴�
+    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
+      //璧峰搴撳瓨鐐规槸鍚︽槸澶ц繛瑁呴厤绾胯竟搴�
+    //  originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
+      isdlspline             := laneleg.OriginStockingPointID().EndsWith( '鍘傚唴搴�' ) and ( laneleg.OriginStockingPointID().StartsWith( '澶ц繛' ) or laneleg.OriginStockingPointID().StartsWith( 'DL' ) );//table.IsInUnit( originsp, dlline );
+      //鐩殑鍦版槸鍚︽槸澶ц繛澶栫搴�
+    //  destisp                := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
+      isdlrent               := laneleg.DestinationStockingPointID().EndsWith( '澶栫搴�' ) and ( laneleg.DestinationStockingPointID().StartsWith( '澶ц繛' ) or laneleg.DestinationStockingPointID().StartsWith( 'DL' ) );//table.IsInUnit( destisp, dlrent );
+      if( isdlspline and isdlrent ){
+        traverse( laneleg, Trip, trip, trip.Departure().Date() < startofnextyear ){//鐢变簬闇�瑕佽�冭檻浜у搧杩愯緭lead time锛屾瘡涓湀鐨勬眹鎬绘暟鎹渶瑕佹帹杩熶袱澶╄繘琛岃绠�
+          periodtime         := trip.Departure().StartOfMonth().Date();
+          periodname         := periodtime.Format( "M2/D2/Y" );
+          
+          column             := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+          enginecosts        := selectset( owner, LogisticsCostEngine, engine, engine.StartDate() <= trip.Departure().Date() and engine.EndDate() >= trip.Departure().Date() );
+          transcosts         := selectset( owner, LogisticsCostTransport, trans, trans.StartDate() <= trip.Departure().Date() and trans.EndDate() >= trip.Departure().Date() );
+          if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
+            traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 and not isnull( column ) and exists( pit.Product_MP().GetAllParent(), Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+              quantity       := [Number]pit.Quantity();
+              row            := table.GetRow( pit.ProductID() );
+              product        := pit.Product_MP();
+              productparents := product.GetAllParent();
+              
+              //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+              enginecost     := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower() 
+                                                   and engine.MLB_MQB() = product.MQBMLB()
+                                                   and engine.Factory() = dlunit  );
+              //鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲�
+              transcost      := selectobject( transcosts, Elements, trans, trans.Origin() = laneleg.OriginStockingPointID() 
+                                                  and trans.Destination() = laneleg.DestinationStockingPointID() 
+                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '鍙戝姩鏈�', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
+              if( not isnull( enginecost ) and not isnull( transcost ) ){
+                products.Add( product );
+                cell         := selectobject( row, Cell, cell, cell.Column() = column );
+                //杩愯緭鏁伴噺/鍖呰瀹归噺/瑁呰浇瀹归噺*杩愯緭鍗曚环
+                cost         := ceil( ceil( quantity / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();//鍥涜垗浜斿叆
+                cell.WerkToDLRentTransCost( cell.WerkToDLRentTransCost() + cost );
+              }
+    //          if( isccrent ){//鐩殑鍦版槸闀挎槬澶栫搴�
+    //            //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+    //            enginecost   := selectobject( enginecosts, Elements, engine, engine.Generation().ToLower() = product.Generation().ToLower()
+    //                                               and engine.MLB_MQB() = product.MQBMLB()
+    //                                               and engine.Factory() = ccunit );
+    //            if( not isnull( enginecost ) ){
+    //              products.Add( product );
+    //              cell       := selectobject( row, Cell, cell, cell.Column() = column );
+    //              cell.CCRentQuantity( cell.CCRentQuantity() + quantity );
+    //              //闀挎槬澶栫搴撳叆搴撹垂鐢細鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环
+    //              entercost  := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+    //              //闀挎槬澶栫搴撳嚭搴撹垂鐢�: 鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环
+    //              outcost    := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+    //              cell.CCRentEnterCost( cell.CCRentEnterCost() + entercost );
+    //              cell.CCRentOutCost( cell.CCRentOutCost() + outcost );
+    //            }
+    //          }
+            }
+          }
+        }
+      }
+    }
+    //澶ц繛澶栫搴撳叆搴撹垂鐢細鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬澶ц繛宸ュ巶璇ヤ骇鍝佷骇閲忓噺鍘诲彂寰�闀挎槬鐨勬暟閲�-newSupply
+    traverse( owner, FinancialProductionSource, source, not source.IsImport() ){//璐㈠姟浜ч噺鎶ヨ〃闈炲鍏�
+      traverse( source, FinancialProductionReport, report, not report.IsShow() ){//璐㈠姟浜ч噺鎶ヨ〃涓嶆樉绀�
+        traverse( report, FinancialProductionRow, row, row.Unit() = dlunit and exists( row, FinancialProductionCell, cell, cell.Value() <> '0' and cell.FinancialProductionColumn().IsDay() ) ){//璐㈠姟浜ч噺鎶ヨ〃閲岀殑澶ц繛浜ч噺, 涓嶄负0
+          product            := row.Product_MP();
+          productparents     := product.GetAllParent();
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+            //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+            enginecosts      := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower() 
+                                                 and engine.MLB_MQB() = product.MQBMLB()
+                                                 and engine.Factory() = dlunit );
+            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
+              products.Add( product );
+              ccrow          := table.GetRow( row.Name() );
+              traverse( row, FinancialProductionCell, cell, cell.Value() <> '0' and cell.FinancialProductionColumn().IsDay() ){
+                cellcolumn   := cell.FinancialProductionColumn();
+                enginecost   := selectobject( enginecosts, Elements, engine, engine.StartDate() <= cellcolumn.Period() and engine.EndDate() >= cellcolumn.Period() );
+                if( not isnull( enginecost ) ){
+                  column     := selectobject( table, Column, column, column.Name() = cell.FinancialProductionColumn().Name() );
+                  //澶ц繛澶栫搴撳叆搴撹垂鐢�
+                  ccrow.SetDLRentEnterCost( column, enginecost, cell );
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    //澶ц繛澶栫搴撳嚭搴撹垂鐢細鍑哄簱閲�/鍖呰瀹归噺*鍑哄簱鍗曚环锛屽嚭搴撻噺绛変簬澶ц繛宸ュ巶璇ヤ骇鍝侀攢閲忓噺鍘诲彂寰�闀挎槬鐨勬暟閲�-newSupply, 澶ц繛鍘傚唴搴擄紝澶ц繛澶栫搴�
+    traverse( owner, FinancialSalesSource, source, not source.IsImport() ){//璐㈠姟閿�閲忔姤琛ㄩ潪瀵煎叆
+      traverse( source, FinancialSalesReport, report, not report.IsShow() ){//璐㈠姟閿�閲忔姤琛ㄤ笉鏄剧ず
+        traverse( report, FinancialSalesRow, row, row.Unit() = ccunit and exists( row, FinancialSalesCell, cell, cell.Value() <> '0' and cell.FinancialSalesColumn().IsDay() ) ){//璐㈠姟閿�閲忔姤琛ㄩ噷鐨勫ぇ杩炰骇閲�, 涓嶄负0
+          product            := row.Product_MP();
+          productparents     := product.GetAllParent();
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+            //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+            enginecosts      := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower() 
+                                                 and engine.MLB_MQB() = product.MQBMLB()
+                                                 and engine.Factory() = dlunit );
+            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
+              products.Add( product );
+              ccrow          := table.GetRow( row.Name() );
+              traverse( row, FinancialSalesCell, cell, cell.Value() <> '0' and cell.FinancialSalesColumn().IsDay() ){
+                cellcolumn   := cell.FinancialSalesColumn();
+                enginecost   := selectobject( enginecosts, Elements, engine, engine.StartDate() <= cellcolumn.Period() and engine.EndDate() >= cellcolumn.Period() );
+                if(  not isnull( enginecost ) ){
+                  column     := selectobject( table, Column, column, column.Name() = cell.FinancialSalesColumn().Name() );
+                  //澶ц繛澶栫搴撳嚭搴撹垂鐢�
+                  ccrow.SetDLRentOutCost( column, enginecost, cell );
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    //闀挎槬闀块�旇繍杈撹垂鐢細璋冩嫧鏁伴噺/鍖呰瀹归噺/瑁呰浇瀹归噺*杩愯緭鍗曚环锛岃皟鎷ㄨ鍒掗噷鎵惧埌璇ヤ骇鍝佷粠DL鍒癈C鐨勮皟鎷ㄦ暟閲忥紝鍗宠捣濮嬪湴澶ц繛瑁呴厤绾胯竟搴擄紝鐩殑鍦颁负闀挎槬澶栫搴撳搴旂殑杩愯緭鏁伴噺锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃鎵惧埌瀵瑰簲鐨勫寘瑁呭閲忥紝鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲忥紝鐢ㄥ叕寮忚绠楀緱鍑虹粨鏋滐紝鏈堝害杩涜姹囨��
+    traverse( owner, TransferPlanRow, tprow ){
+      product                 := selectobject( owner, Product_MP, product, product.ID() = tprow.ProductID() );
+      productparents          := product.GetAllParent();
+      if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+        //璧峰搴撳瓨鐐规槸鍚︽槸澶ц繛
+        originsp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = tprow.SourceStockpoingPointID() );
+        isdl                   := table.IsInUnit( originsp, dlunit );
+        //鐩殑鍦板簱瀛樼偣鏄惁鏄暱鏄�
+        destisp                := selectobject( owner, StockingPoint_MP, sp, sp.ID() = tprow.TargetStockpoingPointID() );
+        iscc                   := table.IsInUnit( destisp, ccunit );
+        if( isdl and iscc ){
+          //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+          enginecosts          := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower() 
+                                                 and engine.MLB_MQB() = product.MQBMLB()
+                                                 and engine.Factory() = ccunit );
+          //鍦ㄨ繍杈撴垚鏈弬鏁拌〃閲屾壘鍒板彂鍔ㄦ満瀵瑰簲杩愯緭鍗曚环鍜岃杞藉閲�
+          transcosts           := selectset( owner, LogisticsCostTransport, trans, trans.Origin() = tprow.SourceStockpoingPointID() 
+                                                  and trans.Destination() = tprow.TargetStockpoingPointID() 
+                                                  and exists( productparents, Elements, e, ifexpr( trans.Product().FindString( '鍙戝姩鏈�', 0 ) >= 0, e.ID() = produtparent,  e.ID() = trans.Product() ) ) );
+          if( not isnull( enginecosts ) and enginecosts.Size() > 0 and not isnull( transcosts ) and transcosts.Size() > 0 ){
+            row                := table.GetRow( product.ID() );
+            products.Add( product );
+            traverse( tprow,TransferPlanCell, tpcell, tpcell.TransferPlanColumn().ColumnDate() <> Date::MinDate() and [Number]tpcell.Value() > 0){
+              tpcolumndate     := tpcell.TransferPlanColumn().ColumnDate();
+              enginecost       := selectobject( enginecosts, Elements, engine, engine.StartDate() <= tpcolumndate and engine.EndDate() >= tpcolumndate );
+              transcost        := selectobject( transcosts, Elements, trans, trans.StartDate() <= tpcolumndate and trans.EndDate() >= tpcolumndate );
+              if( not isnull( enginecost ) and not isnull( transcost ) ){
+                periodtime     := tpcolumndate.StartOfMonth();
+                periodname     := periodtime.Format( "M2/D2/Y" );
+                column         := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+                 
+                cost           := ceil( ceil( [Number]tpcell.Value() / enginecost.PackagingCapacity() ) / transcost.LoadingCapacity() ) * transcost.TransportPrice();
+                cell           := selectobject( row, Cell, cell, cell.Column() = column );
+                cell.CCLongTransCost( cell.CCLongTransCost() + cost );
+              }
+            }
+          }
+        }
+      }
+    }
+    //闀挎槬鐭�旇繍杈撹垂鐢細瀹㈡埛闇�姹傛暟閲�/鍖呰瀹归噺/瑁呰浇瀹归噺*杩愯緭鍗曚环锛屽鎴烽渶姹傛暟閲忓彇鑷猣orecast閲宻ales segment涓洪暱鏄ョ殑鏁伴噺姹囨�伙紝鍐嶇敤鍏紡璁$畻锛屾湀搴﹁繘琛屾眹鎬伙紙鍙栧鎴烽渶姹傛暟閲忔崲绠楁垚杞︽锛�
+    traverse( owner, SalesDemand.astype( Forecast ), forecast, forecast.Quantity() > 0 and not isnull( forecast.SalesSegment_MP() ) and forecast.StartDate() < startofnextyear ){
+      salessegment            := forecast.SalesSegment_MP();
+      parentsalessegments     := salessegment.GetAllParent();
+      //鏄惁灞炰簬闀挎槬
+      iscc                    := salessegment.Name() = ccunit or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = ccunit );
+      if( iscc ){
+        product               := forecast.Product_MP();
+        productparents        := product.GetAllParent();
+        if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+          //鏌ヨ瀵瑰簲鐨勫彂鍔ㄦ満鎴愭湰
+          enginecosts         := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower() 
+                                                 and engine.MLB_MQB() = product.MQBMLB()
+                                                 and engine.Factory() = ccunit );
+          if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
+            products.Add( forecast.Product_MP() );
+            row               := table.GetRow( forecast.ProductID() );
+            traverse( forecast, PlanningSalesDemandInPeriod, psdip, psdip.Quantity() > 0 ){
+              enginecost      := selectobject( enginecosts, Elements, engine, engine.StartDate() <= psdip.StartDate() and engine.EndDate() >= psdip.StartDate() );
+              if( not isnull( enginecost ) ){
+                periodtime    := psdip.StartDate().StartOfMonth();
+                periodname    := periodtime.Format( "M2/D2/Y" );
+          //      info( '-------------------------', periodname, periodtime );
+                column         := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+          //      info( '-------------------------', column.Name() );
+                cost           := ceil( [Number]psdip.Quantity() / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
+                cell           := selectobject( row, Cell, cell, cell.Column() = column );
+                cell.CCShorTransCost( cell.CCShorTransCost() + cost );
+              }
+            }
+          }
+        }
+      }
+    }
+    //澶栫搴撲粨鍌ㄨ垂鐢細浠撳偍鏁伴噺/鍖呰瀹归噺*浠撳偍鍗曚环锛屽湪Actual inventories閲屽彇鍒伴暱鏄ュ绉熷簱/澶ц繛澶栫搴撹鍙戝姩鏈虹殑浠撳偍閲忥紝鏍规嵁鍙戝姩鏈哄彿鎵惧埌瀵瑰簲鐨凣eneration 鍜屾í绾靛埗锛屽湪鍙戝姩鏈烘垚鏈弬鏁拌〃閲屾壘鍒板搴旂殑浠撳偍鍗曚环鍜屽寘瑁呭閲忥紝鐢ㄥ叕寮忚绠楋紝鏈堝害杩涜姹囨��
+    traverse( owner, StockingPoint_MP, stockingpoint ){
+      unit                    := stockingpoint.Unit();
+      parentunits             := unit.GetAllParent();
+      //鏄惁灞炰簬闀挎槬澶栫搴�
+      isccrent                := stockingpoint.ID() = ccrent or unit.ID() = ccrent or exists( parentunits, Elements, punit, punit.ID() = ccrent );
+      //鏄惁灞炰簬澶ц繛澶栫搴�
+      isdlrent                := stockingpoint.ID() = dlrent or unit.ID() = dlrent or exists( parentunits, Elements, punit, punit.ID() = dlrent );
+      if( isccrent or isdlrent ){
+        traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() 
+                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
+          //鑾峰彇琛�
+          product             := pisp.Product_MP();
+          productparents      := product.GetAllParent();
+          if( exists( productparents, Elements, e, e.ID() = produtparent ) ){//鏌ヨ浜у搧绫诲瀷鏄彂鍔ㄦ満
+            row               := table.GetRow( pisp.ProductID() );
+            enginecosts       := selectset( owner, LogisticsCostEngine, engine, engine.Generation().ToLower() = product.Generation().ToLower() and engine.MLB_MQB() = product.MQBMLB() );
+            if( not isnull( enginecosts ) and enginecosts.Size() > 0 ){
+              products.Add( pisp.Product_MP() );
+              traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0  ){
+                periodtime    := pispip.Start().StartOfMonth().Date();
+                periodname    := periodtime.Format( "M2/D2/Y" );
+                column        := selectobject( table, Column, column, column.Name() = periodname and column.StartDate() = periodtime );
+                cell          := selectobject( row, Cell, cell, cell.Column() = column );
+                
+                if( isccrent ){
+                  //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+                  enginecost     := selectobject( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date()
+                                                     and engine.Factory() = ccunit );
+                   if( not isnull( enginecost ) ){
+                     cost        := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
+                     cell.CCRentStorCost( cell.CCRentStorCost() + cost );
+                   }
+                } else {
+                  //鍦ㄥ彂鍔ㄦ満鎴愭湰鍙傛暟琛ㄦ壘鍒板搴旂殑鍖呰瀹归噺
+                  enginecost     := selectobject( enginecosts, Elements, engine, engine.StartDate() <= pispip.Start().Date() and engine.EndDate() >= pispip.Start().Date()
+                                                     and engine.Factory() = dlunit  );
+                   if( not isnull( enginecost ) ){
+                     cost        := ceil( [Number]pispip.NewSupplyQuantity() / enginecost.PackagingCapacity() ) * enginecost.StoragePrice();//鍥涜垗浜斿叆
+                     cell.DLRentStorCost( cell.DLRentStorCost() + cost );
+                   }
+                }
+              }   
+            }
+          }
+        }
+      }
+    }
+    rows := selectsortedset( table, Row, row, row.Name() );
+    i    := 0;
+    traverse( rows, Elements, e ){
+      e.RowNr( i );
+      i := i + 1;
+    }
+    info( '-------------------------------------end---------------------------------' );
+    //
+    showtable.Generate( search, products );
+  *]
+}
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl
index 3dfa50b..4808e29 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_Initialize.qbl
@@ -7,10 +7,10 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-24-2024 (created)
-    cell := this.Cell( relnew, RentEnterCost         := 0
-                         , RentOutCost                 := 0 
-                         , FactoryToRentTransCost      := 0
-                         , RentStorageCost             := 0 );
+    cell := this.Cell( relnew, RentInCost              := 0
+                         , RentOutOfCost               := 0 
+                         , WerkToRentTransCost         := 0
+                         , RentStorCost                := 0 );
     
     column.Cell( relinsert, cell );
   *]
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl
index 5f18e61..c09688d 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetFactoryToRentTransCost.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Method SetFactoryToRentTransCost (
   CCEngineLogisticsCostColumn column,
-  Number quantity
+  Real quantity
 )
 {
   TextBody:
@@ -10,7 +10,7 @@
     // 鐢勫叞楦� Jun-24-2024 (created)
     cell := selectobject( this, Cell, cell, cell.Column() = column );
           
-    value := cell.FactoryToRentTransCost() + quantity;
-    cell.FactoryToRentTransCost( value );
+    value := cell.WerkToRentTransCost() + quantity;
+    cell.WerkToRentTransCost( value );
   *]
 }
diff --git "a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost\043517.qbl" "b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost\043517.qbl"
index 9e1a6db..0a7e890 100644
--- "a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost\043517.qbl"
+++ "b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentEnterCost\043517.qbl"
@@ -2,7 +2,7 @@
 #parent: #root
 Method SetRentEnterCost (
   CCEngineLogisticsCostColumn column,
-  Number quantity
+  Real quantity
 )
 {
   TextBody:
@@ -10,7 +10,7 @@
     // 鐢勫叞楦� Jun-24-2024 (created)
     cell := selectobject( this, Cell, cell, cell.Column() = column );
           
-    value := cell.RentEnterCost() + quantity;
-    cell.RentEnterCost( value );
+    value := cell.RentInCost() + quantity;
+    cell.RentInCost( value );
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl
index 4bc1338..b17c3fb 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentOutCost.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Method SetRentOutCost (
   CCEngineLogisticsCostColumn column,
-  Number quantity
+  Real quantity
 )
 {
   TextBody:
@@ -10,7 +10,7 @@
     // 鐢勫叞楦� Jun-24-2024 (created)
     cell := selectobject( this, Cell, cell, cell.Column() = column );
           
-    value := cell.RentOutCost() + quantity;
-    cell.RentOutCost( value );
+    value := cell.RentOutOfCost() + quantity;
+    cell.RentOutOfCost( value );
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl
index ed29d5b..0edcee1 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow/Method_SetRentStorageCost.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Method SetRentStorageCost (
   CCEngineLogisticsCostColumn column,
-  Number quantity
+  Real quantity
 )
 {
   TextBody:
@@ -10,7 +10,7 @@
     // 鐢勫叞楦� Jun-24-2024 (created)
     cell := selectobject( this, Cell, cell, cell.Column() = column );
           
-    value := cell.RentStorageCost() + quantity;
-    cell.RentStorageCost( value );
+    value := cell.RentStorCost() + quantity;
+    cell.RentStorCost( value );
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl
index ce80682..4ffa94e 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_Initialize.qbl
@@ -7,15 +7,15 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-24-2024 (created)
-    cell := this.Cell( relnew, CCRentEnterCost           := 0
-                         , CCRentOutCost                 := 0 
-                         , CCLongTransCoat               := 0
-                         , CCShortTransCost              := 0
-                         , CCRentStorageCost             := 0
-                         , DLRentEnterCost               := 0
-                         , DLRentOutCost                 := 0
-                         , FactoryToDLRentTransCost      := 0
-                         , DLRentStorageCost             := 0 );
+    cell := this.Cell( relnew, CCRentInCost              := 0
+                         , CCRentOutOfCost               := 0 
+                         , CCLongTransCost               := 0
+                         , CCShorTransCost               := 0
+                         , CCRentStorCost                := 0
+                         , DLRentInCost                  := 0
+                         , DLRentOutOfCost               := 0
+                         , WerkToDLRentTransCost         := 0
+                         , DLRentStorCost                := 0 );
     
     column.Cell( relinsert, cell );
   *]
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl
index ac5cbcf..691a01c 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentEnterCost.qbl
@@ -14,7 +14,7 @@
     //鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬闀挎槬浜ч噺
     cost          := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
           
-    value := cell.DLRentEnterCost() + cost;
-    cell.DLRentEnterCost( value );
+    value := cell.DLRentInCost() + cost;
+    cell.DLRentInCost( value );
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl
index 3d8b591..50f77e6 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetDLRentOutCost.qbl
@@ -14,7 +14,7 @@
     //鍏ュ簱閲�/鍖呰瀹归噺*鍏ュ簱鍗曚环锛屽叆搴撻噺绛変簬闀挎槬浜ч噺
     cost          := ceil( quantity / enginecost.PackagingCapacity() ) * enginecost.WarehousingPrice();
           
-    value := cell.DLRentOutCost() + cost;
-    cell.DLRentOutCost( value );
+    value := cell.DLRentOutOfCost() + cost;
+    cell.DLRentOutOfCost( value );
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl
index 784e4a2..c6a968b 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetFactoryToRentTransCost.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Method SetFactoryToRentTransCost (
   DLEngineLogisticsCostColumn column,
-  Number quantity
+  Real quantity
 )
 {
   TextBody:
@@ -10,7 +10,7 @@
     // 鐢勫叞楦� Jun-24-2024 (created)
     cell := selectobject( this, Cell, cell, cell.Column() = column );
           
-    value := cell.FactoryToDLRentTransCost() + quantity;
-    cell.FactoryToDLRentTransCost( value );
+    value := cell.WerkToDLRentTransCost() + quantity;
+    cell.WerkToDLRentTransCost( value );
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl
index 4189c40..414bf22 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentOutCost.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Method SetRentOutCost (
   DLEngineLogisticsCostColumn column,
-  Number quantity
+  Real quantity
 )
 {
   TextBody:
@@ -10,7 +10,7 @@
     // 鐢勫叞楦� Jun-24-2024 (created)
     cell := selectobject( this, Cell, cell, cell.Column() = column );
           
-    value := cell.CCRentOutCost() + quantity;
-    cell.CCRentOutCost( value );
+    value := cell.CCRentOutOfCost() + quantity;
+    cell.CCRentOutOfCost( value );
   *]
 }
diff --git a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl
index 908dae6..11232ac 100644
--- a/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl
+++ b/_Main/BL/Type_CCEngineLogisticsCostRow0/Method_SetRentStorageCost.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Method SetRentStorageCost (
   DLEngineLogisticsCostColumn column,
-  Number quantity
+  Real quantity
 )
 {
   TextBody:
@@ -10,7 +10,7 @@
     // 鐢勫叞楦� Jun-24-2024 (created)
     cell := selectobject( this, Cell, cell, cell.Column() = column );
           
-    value := cell.CCRentStorageCost() + quantity;
-    cell.CCRentStorageCost( value );
+    value := cell.CCRentStorCost() + quantity;
+    cell.CCRentStorCost( value );
   *]
 }
diff --git a/_Main/BL/Type_CC_EngineRackCell/Attribute_PackagingCapacity.qbl b/_Main/BL/Type_CC_EngineRackCell/Attribute_PackagingCapacity.qbl
index 63b2f0e..c09c934 100644
--- a/_Main/BL/Type_CC_EngineRackCell/Attribute_PackagingCapacity.qbl
+++ b/_Main/BL/Type_CC_EngineRackCell/Attribute_PackagingCapacity.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute PackagingCapacity
 {
-  #keys: '3[415754.0.111003142][415754.0.111003141][415754.0.111003143]'
+  #keys: '3[415754.0.267850902][415754.0.267850901][415754.0.267850903]'
   Description: '鍖呰瀹归噺'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_CC_EngineRackCell/Attribute_UnitPriceOfEmptyShelfStorage.qbl b/_Main/BL/Type_CC_EngineRackCell/Attribute_UnitPriceOfEmptyShelfStorage.qbl
index 74fcfc7..b17f3b0 100644
--- a/_Main/BL/Type_CC_EngineRackCell/Attribute_UnitPriceOfEmptyShelfStorage.qbl
+++ b/_Main/BL/Type_CC_EngineRackCell/Attribute_UnitPriceOfEmptyShelfStorage.qbl
@@ -2,11 +2,7 @@
 #parent: #root
 Attribute UnitPriceOfEmptyShelfStorage
 {
-  #keys: '3[415754.0.135368204][415754.0.135368203][415754.0.135368205]'
-  Description:
-  [*
-    
-    绌烘枡鏋朵粨鍌ㄥ崟浠�
-  *]
-  ValueType: Number
+  #keys: '3[415754.0.267850867][415754.0.267850866][415754.0.267850868]'
+  Description: '绌烘枡鏋朵粨鍌ㄥ崟浠�'
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_ChangeLossSetting/StaticMethod_ValidateInput.qbl b/_Main/BL/Type_ChangeLossSetting/StaticMethod_ValidateInput.qbl
index 065a5cc..6980d92 100644
--- a/_Main/BL/Type_ChangeLossSetting/StaticMethod_ValidateInput.qbl
+++ b/_Main/BL/Type_ChangeLossSetting/StaticMethod_ValidateInput.qbl
@@ -31,7 +31,9 @@
                       or ( cls.ProductFirst() = product2 and cls.ProductSecond() = product1 ) ) ) ){
       feedback := Translations::MP_ChangeLossSetting_Exist()
     }
-    if( feedback = '' and exists( owner, ChangeLossSetting, cls, cls <> old and not ( cls.StartDate() > enddate or cls.EndDate() < startdate ) ) ){
+    if( exists( owner, ChangeLossSetting, cls, cls <> old and cls.Unit() = unit  and not ( cls.StartDate() > enddate or cls.EndDate() < startdate )
+                and ( ( cls.ProductFirst() = product1 and cls.ProductSecond() = product2 ) 
+                      or ( cls.ProductFirst() = product2 and cls.ProductSecond() = product1 ) ) ) ){
       feedback := Translations::MP_ChangeLossSetting_DateCoincide()
     }
     
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/Attribute_EndDate.qbl b/_Main/BL/Type_ChangeLossSettingExcel/Attribute_EndDate.qbl
index 54fa971..0db75ea 100644
--- a/_Main/BL/Type_ChangeLossSettingExcel/Attribute_EndDate.qbl
+++ b/_Main/BL/Type_ChangeLossSettingExcel/Attribute_EndDate.qbl
@@ -3,5 +3,6 @@
 Attribute EndDate
 {
   #keys: '3[415136.0.1132074698][415136.0.1132074697][415136.0.1132074699]'
+  IsReadOnly: true
   ValueType: Date
 }
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/Attribute_StartDate.qbl b/_Main/BL/Type_ChangeLossSettingExcel/Attribute_StartDate.qbl
index 05a1f29..52defce 100644
--- a/_Main/BL/Type_ChangeLossSettingExcel/Attribute_StartDate.qbl
+++ b/_Main/BL/Type_ChangeLossSettingExcel/Attribute_StartDate.qbl
@@ -3,5 +3,6 @@
 Attribute StartDate
 {
   #keys: '3[415136.0.1132074695][415136.0.1132074694][415136.0.1132074696]'
+  IsReadOnly: true
   ValueType: Date
 }
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl
index 004c0ce..eb73c40 100644
--- a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl
+++ b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_ExportTemplate.qbl
@@ -9,7 +9,7 @@
   [*
     // 鐢勫叞楦� Aug-22-2024 (created)
     traverse( macroplan, ChangeLossSetting, cls ){
-      macroplan.ChangeLossSettingExcel( relnew, Product1 := cls.ProductFirst().ID(), Product2 := cls.ProductSecond().ID(), Unit := cls.Unit().ID(), ChangeLossNumber := [String]cls.ChangeLossNr() );
+      macroplan.ChangeLossSettingExcel( relnew, Product1 := cls.ProductFirst().ID(), Product2 := cls.ProductSecond().ID(), Unit := cls.Unit().ID(), ChangeLossNumber := [String]cls.ChangeLossNr(), StartDate := cls.StartDate(), EndDate := cls.EndDate() );
     }
     value := macroplan.MP_ExportChangeLossSettingsBroker().ExecuteToXLS( isxlsxformat ).AsBinaryValue();
     macroplan.ChangeLossSettingExcel( relflush );
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl
index 466849e..2e8db80 100644
--- a/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl
+++ b/_Main/BL/Type_ChangeLossSettingExcel/StaticMethod_Import.qbl
@@ -20,19 +20,32 @@
       macroplan.ChangeLossSettingExcel( relflush );
       error( e.GeneralInformation() );
     }
+    clsset              := construct( ChangeLossSettings );
     //閬嶅巻澶勭悊瀵煎叆鐨勬暟鎹�
     traverse( macroplan, ChangeLossSettingExcel, excel ){
       cls               := selectobject(  macroplan, ChangeLossSetting, cls, cls.ProductFirst().ID() = excel.Product1()
                                           and cls.ProductSecond().ID() = excel.Product2()
-                                          and cls.Unit().ID() = excel.Unit() );
+                                          and cls.Unit().ID() = excel.Unit()
+                                          and cls.StartDate() = excel.StartDate()
+                                          and cls.EndDate() = excel.EndDate() );
       if( isnull( cls ) ){
-        cls             := macroplan.ChangeLossSetting( relnew, ChangeLossNr := [Number]excel.ChangeLossNumber() );
         product1        := selectobject( macroplan, Product_MP, product, product.ID() = excel.Product1() );
         product2        := selectobject( macroplan, Product_MP, product, product.ID() = excel.Product2() );
         unit            := selectobject( macroplan, Unit, unit, unit.ID() = excel.Unit() );
-        cls.ProductFirst( relset, product1 );
-        cls.ProductSecond( relset, product2 );
-        cls.Unit( relset, unit );
+        feedback        := '';
+        if( ChangeLossSetting::ValidateInput( feedback, macroplan, null( ChangeLossSetting ), unit, product1, product2, excel.StartDate(), excel.EndDate(), [Number]excel.ChangeLossNumber() ) ){
+          cls             := macroplan.ChangeLossSetting( relnew, ChangeLossNr := [Number]excel.ChangeLossNumber() );
+          
+          cls.ProductFirst( relset, product1 );
+          cls.ProductSecond( relset, product2 );
+          cls.Unit( relset, unit );
+          clsset.Add( cls );
+        }else{
+          traverse( clsset, Elements, e ){
+            e.Delete();
+          }
+          error( feedback );
+        }
       }else {
         cls.ChangeLossNr( [Number]excel.ChangeLossNumber() );
       }
diff --git a/_Main/BL/Type_ChangeLossSettingExcel/TypeIndex_ChangeLossSettingTypeIndex.qbl b/_Main/BL/Type_ChangeLossSettingExcel/TypeIndex_ChangeLossSettingTypeIndex.qbl
index 79e5846..4a9f929 100644
--- a/_Main/BL/Type_ChangeLossSettingExcel/TypeIndex_ChangeLossSettingTypeIndex.qbl
+++ b/_Main/BL/Type_ChangeLossSettingExcel/TypeIndex_ChangeLossSettingTypeIndex.qbl
@@ -16,5 +16,13 @@
     {
       ModelElement: Unit
     }
+    TypeIndexAttribute
+    {
+      ModelElement: StartDate
+    }
+    TypeIndexAttribute
+    {
+      ModelElement: EndDate
+    }
   ]
 }
diff --git a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl
index 4a17ee3..71907f1 100644
--- a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '闀挎槬宸ュ巶';
+    //return '闀挎槬宸ュ巶';
+    return 'VWED CC';
     //return 'Assembly Plant (France)';
   *]
 }
diff --git a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl
index ba77240..fe0b0be 100644
--- a/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl
+++ b/_Main/BL/Type_EnginePipelineReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '澶ц繛宸ュ巶';
+    //return '澶ц繛宸ュ巶';
+    return 'VWED DL';
     //return 'Assembly Plant (Spain)';
   *]
 }
diff --git a/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
index f9e39e3..a024d30 100644
--- a/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_EnginePipelineSource/StaticMethod_Initialize.qbl
@@ -11,16 +11,16 @@
     //ccunit                    := EnginePipelineReport::GetDefaultCCUnit();
     //dlunit                    := EnginePipelineReport::GetDefaultDLUnit();
     productparent             := EnginePipelineReport::GetDefaultProductParent();
-    ccalineunit               := EnginePipelineReport::GetDefaultCCALineUnit();
-    dlalienunit               := EnginePipelineReport::GetDefaultDLALineUnit()
-    ccmplineunit              := EnginePipelineReport::GetDefaultCCMPLineUnit()
-    dlmplineunit              := EnginePipelineReport::GetDefaultDLMPLineUnit();
+    //ccalineunit               := EnginePipelineReport::GetDefaultCCALineUnit();
+    //dlalienunit               := EnginePipelineReport::GetDefaultDLALineUnit()
+    //ccmplineunit              := EnginePipelineReport::GetDefaultCCMPLineUnit()
+    //dlmplineunit              := EnginePipelineReport::GetDefaultDLMPLineUnit();
     //allunit                   := EnginePipelineReport::GetDefaultAllUnit();
     source                    := owner.EnginePipelineSource( relnew, Name := EnginePipelineReport::GetDefaultName() );
     table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
     showtable                 := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
     
-    search                    := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
+    search                    := owner.EnginePipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
     
     products                  := construct( Product_MPs );
     //鍒濆鍖栧垪
@@ -28,13 +28,16 @@
     endperiod                 := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() );
     
     //鐢熸垚鐢熶骇鍜屽簱瀛樻暟鎹�
-    traverse( owner, StockingPoint_MP, stockingpoint ){
-      unit                    := stockingpoint.Unit();
-      parentunits             := unit.GetAllParent();
+    //traverse( owner, StockingPoint_MP, stockingpoint ){
+    traverse( owner, StockingPoint_MP, stockingpoint, stockingpoint.ID().EndsWith( '鍘傚唴搴�' ) ){
+    //  unit                    := stockingpoint.Unit();
+    //  parentunits             := unit.GetAllParent();
       //鏄惁灞炰簬闀挎槬宸ュ巶
-      iscc         := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
+    //  iscc                    := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
+      iscc                    := stockingpoint.ID().StartsWith( 'CC' );
       //鏄惁灞炰簬澶ц繛宸ュ巶
-      isdl         := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
+    //  isdl                    := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
+      isdl                    := stockingpoint.ID().StartsWith( '澶ц繛' );
       
       traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() 
                 and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent ) 
diff --git a/_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl b/_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl
index d0781ad..c7c7b0d 100644
--- a/_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl
+++ b/_Main/BL/Type_FinancialProductionReport/Method_Generate.qbl
@@ -25,7 +25,7 @@
         showrow := this.FinancialProductionRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
         
         traverse( row, FinancialProductionCell, cell, not cell.FinancialProductionColumn().IsDay() ){
-          column   := selectobject( this, FinancialProductionColumn, column, column.Name() = cell.FinancialProductionColumn().Name() );
+          column   := selectobject( this, FinancialProductionColumn, column, column.Name() = cell.FinancialProductionColumn().Name() and not column.IsDay() );
           
           sumcell  := selectobject( column, FinancialProductionCell, c, c.FinancialProductionRow() = sumrow );
           if( isnull( sumcell ) ){
diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
index 4a17ee3..71907f1 100644
--- a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '闀挎槬宸ュ巶';
+    //return '闀挎槬宸ュ巶';
+    return 'VWED CC';
     //return 'Assembly Plant (France)';
   *]
 }
diff --git a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
index ba77240..fe0b0be 100644
--- a/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
+++ b/_Main/BL/Type_FinancialProductionReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '澶ц繛宸ュ巶';
+    //return '澶ц繛宸ュ巶';
+    return 'VWED DL';
     //return 'Assembly Plant (Spain)';
   *]
 }
diff --git a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
index 54ffc0b..dec7ca1 100644
--- a/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_FinancialProductionSource/StaticMethod_Initialize.qbl
@@ -11,10 +11,10 @@
     owner.FPImportData( relflush );
     ccunit                    := FinancialProductionReport::GetDefaultCCUnit();
     dlunit                    := FinancialProductionReport::GetDefaultDLUnit();
-    ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
-    dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
-    ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
-    dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
+    //ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
+    //dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
+    //ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
+    //dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
     allunit                   := FinancialProductionReport::GetDefaultAllUnit();
     source                    := owner.FinancialProductionSource( relnew, IsImport := false, Name := FinancialProductionReport::GetDefaultName() );
     table                     := source.FinancialProductionReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false );
@@ -23,7 +23,7 @@
     //startofnextmonth          := startofplanning.StartOfNextMonth();
     startofnextyear           := startofplanning.StartOfNextYear();
     
-    search                    := source.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
+    search                    := owner.FinancialProductionSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
     
     products                  := construct( Product_MPs );
     //闇�瑕佺殑鏃ユ湡鍖洪棿锛� 鍛ㄥ拰澶╃殑鍙渶瑕佸綋鍓嶆湀
@@ -35,13 +35,16 @@
     //currentperiods            := table.GetCurrentPeriod( startofplanning, periods );
     table.GenerateColumn( owner );
     //鍙栧綋鍓嶇増鏈殑product planning閲宯ew supply瀛楁锛屽垎澶ц繛鍜岄暱鏄ュ伐鍘傜殑浜х嚎锛岃繘琛屽姞鎬�
-    traverse( owner, StockingPoint_MP, stockingpoint ){
-      unit                    := stockingpoint.Unit();
-      parentunits             := unit.GetAllParent();
+    //traverse( owner, StockingPoint_MP, stockingpoint ){
+    traverse( owner, StockingPoint_MP, stockingpoint, stockingpoint.ID().EndsWith( '鍘傚唴搴�' ) ){
+      iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '闀挎槬' );
+      isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or stockingpoint.ID().StartsWith( '澶ц繛' );
+    //  unit                    := stockingpoint.Unit();
+    //  parentunits             := unit.GetAllParent();
       //鏄惁灞炰簬闀挎槬宸ュ巶
-      iscc                    := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
+    //  iscc                    := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
       //鏄惁灞炰簬澶ц繛宸ュ巶
-      isdl                    := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
+    //  isdl                    := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
       if( iscc or isdl ){
         traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() 
                   and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.NewSupplyQuantity() <> 0 ) ){
diff --git a/_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl b/_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl
index 767f175..4c67240 100644
--- a/_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl
+++ b/_Main/BL/Type_FinancialSalesReport/Method_Generate.qbl
@@ -24,8 +24,8 @@
       if( productids.ContainsAll( productid ) ){
         showrow := this.FinancialSalesRow( relnew, Name := row.Name(), Unit := row.Unit(), RowNr := row.RowNr() );
         
-        traverse( row, FinancialSalesCell, cell ){
-          column   := selectobject( this, FinancialSalesColumn, column, column.Name() = cell.FinancialSalesColumn().Name() );
+        traverse( row, FinancialSalesCell, cell, not cell.FinancialSalesColumn().IsDay() ){
+          column   := selectobject( this, FinancialSalesColumn, column, column.Name() = cell.FinancialSalesColumn().Name() and not column.IsDay());
           
           sumcell  := selectobject( column, FinancialSalesCell, c, c.FinancialSalesRow() = sumrow );
           if( isnull( sumcell ) ){
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultCCUnit.qbl
index 4a17ee3..71907f1 100644
--- a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '闀挎槬宸ュ巶';
+    //return '闀挎槬宸ュ巶';
+    return 'VWED CC';
     //return 'Assembly Plant (France)';
   *]
 }
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultDLUnit.qbl
index ba77240..fe0b0be 100644
--- a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultDLUnit.qbl
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '澶ц繛宸ュ巶';
+    //return '澶ц繛宸ュ巶';
+    return 'VWED DL';
     //return 'Assembly Plant (Spain)';
   *]
 }
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl
index 05eb2ce..09d35f1 100644
--- a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentCC.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-28-2024 (created)
-    return '闀挎槬';
+    //return '闀挎槬';
+    return 'Changchun';
     //return 'China';
   *]
 }
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl
index 70e1ce3..5c44d38 100644
--- a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentFS.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-28-2024 (created)
-    return '浣涘北';
+    //return '浣涘北';
+    return 'Foshan';
     //return 'Germany';
   *]
 }
diff --git a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl
index 7ad4f41..73cba9b 100644
--- a/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl
+++ b/_Main/BL/Type_FinancialSalesReport/StaticMethod_GetSalesSegmentTJ.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-28-2024 (created)
-    return '澶╂触';
+    //return '澶╂触';
+    return 'Tianjin';
     //return 'USA';
   *]
 }
diff --git a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
index 500883e..d2b2932 100644
--- a/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_FinancialSalesSource/StaticMethod_Initialize.qbl
@@ -16,9 +16,9 @@
     ccsalessegment            := FinancialSalesReport::GetSalesSegmentCC();
     tjsalessegment            := FinancialSalesReport::GetSalesSegmentTJ();
     fssalessegment            := FinancialSalesReport::GetSalesSegmentFS();
-    ccspline                  := FinancialSalesReport::GetStockingPointCCLine();
-    dlspline                  := FinancialSalesReport::GetStockingPointDLLine();
-    ccrent                    := FinancialSalesReport::GetStockingPointCCRent();
+    //ccspline                  := FinancialSalesReport::GetStockingPointCCLine();
+    //dlspline                  := FinancialSalesReport::GetStockingPointDLLine();
+    //ccrent                    := FinancialSalesReport::GetStockingPointCCRent();
     
     source                    := owner.FinancialSalesSource( relnew, IsImport := false, Name := FinancialSalesReport::GetDefaultName() );
     table                     := source.FinancialSalesReport( relnew, ID := source.Name(), Name := source.Name(), IsImport := false );
@@ -27,7 +27,7 @@
     //startofyear               := startofplanning.StartOfYear();
     startofnextyear           := startofplanning.StartOfNextYear();
     
-    search                    := source.FinancialSalesSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
+    search                    := owner.FinancialSalesSearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit );
     
     table.GenerateColumn( owner );
     
@@ -37,11 +37,15 @@
       salessegment            := forecast.SalesSegment_MP();
       parentsalessegments     := salessegment.GetAllParent();
       //鏄惁灞炰簬闀挎槬
-      iscc                    := salessegment.Name() = ccsalessegment or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = ccsalessegment );
+    //  iscc                    := salessegment.Name() = ccsalessegment or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = ccsalessegment );
+      iscc                    := salessegment.Name().StartsWith( ccsalessegment ) or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name().StartsWith( ccsalessegment ) );
       //鏄惁灞炰簬澶ц繛, 鍗冲ぉ娲ュ拰浣涘北
-      isdl                    := salessegment.Name() = tjsalessegment or salessegment.Name() = fssalessegment 
-                                  or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = tjsalessegment ) 
-                                  or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = fssalessegment );
+    //  isdl                    := salessegment.Name() = tjsalessegment or salessegment.Name() = fssalessegment 
+    //                              or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = tjsalessegment ) 
+    //                              or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name() = fssalessegment );
+      isdl                    := salessegment.Name().StartsWith( tjsalessegment ) or salessegment.Name().StartsWith( fssalessegment )
+                                  or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name().StartsWith( tjsalessegment ) ) 
+                                  or exists( parentsalessegments, Elements, psalessegment, psalessegment.Name().StartsWith( fssalessegment ) );
       //Forecast鐨凷ales Segment涓洪暱鏄ワ紝璇嗗埆鍑篗LB鐨勬墍鏈変骇鍝佹眹鎬�
       //澶ц繛璐㈠姟閿�閲忥細棣栧厛鍦╢orecast鐣岄潰鏌ユ壘Sales Segment鏄ぉ娲ュ拰浣涘北鐨勬墍鏈夐渶姹傦紝姣忎釜浜у搧鎸夋湀姹囨�婚渶姹傛暟閲�
       if( ( iscc and forecast.Product_MP().MQBMLB() = 'MLB' ) or isdl ){
@@ -69,70 +73,76 @@
         }
       }
     }
-    //浠嶱roduct planning鏌ユ壘搴撳瓨鐐逛负闀挎槬瑁呴厤绾胯竟搴撶殑鎵�鏈塎QB浜у搧锛屽彇Total Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
-    traverse( owner, StockingPoint_MP, stockingpoint ){
+    //浠嶱roduct planning鏌ユ壘搴撳瓨鐐逛负闀挎槬瑁呴厤绾胯竟搴�(CC鍘傚唴搴�)鐨勬墍鏈塎QB浜у搧锛屽彇Total Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+    //浠嶱roduct planning鏌ユ壘搴撳瓨鐐逛负澶ц繛鍙戝姩鏈虹殑闀挎槬澶栫搴擄紝鍙朜ew supply瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+    //traverse( owner, StockingPoint_MP, stockingpoint ){
+    traverse( owner, StockingPoint_MP, stockingpoint, ( stockingpoint.ID().StartsWith( 'CC' ) and stockingpoint.ID().EndsWith( '鍘傚唴搴�' ) ) or stockingpoint.ID() = '澶ц繛鍙戝姩鏈虹殑闀挎槬澶栫搴�' ){
+      isdl                  := stockingpoint.ID() = '澶ц繛鍙戝姩鏈虹殑闀挎槬澶栫搴�';
     //  unit                  := stockingpoint.Unit();
     //  parentunits           := unit.GetAllParent();
       //鏄惁灞炰簬闀挎槬瑁呴厤绾�
     //  iscc                  := unit.ID() = ccspline or exists( parentunits, Elements, punit, punit.ID() = ccspline );
-      if( table.IsInUnit( stockingpoint, ccspline ) ){
+    //  if( table.IsInUnit( stockingpoint, ccspline ) ){
         traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and pisp.Product_MP().MQBMLB() = 'MQB' 
-                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.DependentDemandAndSalesDemandQuantity() <> 0 ) ){//浜у搧涓篗QB
+                  and exists( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear 
+                              and ( pispip.DependentDemandAndSalesDemandQuantity() <> 0 or pispip.NewSupplyQuantity() <> 0 ) ) ){//浜у搧涓篗QB
           product           := pisp.Product_MP();
           allrow            := table.GetRow( allunit, product );
           ccrow             := table.GetRow( ccunit, product );
           products.Add( product );
-          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() and pispip.Period_MP().StartDate() < startofnextyear and pispip.DependentDemandAndSalesDemandQuantity() <> 0 ){
+          traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() 
+                    and pispip.Period_MP().StartDate() < startofnextyear 
+                    and ( pispip.DependentDemandAndSalesDemandQuantity() <> 0 or pispip.NewSupplyQuantity() <> 0 ) ){
             dayperiodtime   := pispip.Start().Date();
             dayperiodname   := dayperiodtime.Format( "M2/D2/Y" );
             periodtime      := pispip.Start().StartOfMonth().Date();
             periodname      := periodtime.Format( "M2/D2/Y" );
             daycolumn       := selectobject( table, FinancialSalesColumn, column, column.Name() = dayperiodname and column.Period() = dayperiodtime and column.IsDay() );
             column          := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime and not column.IsDay() );
-            quantity        := [Number]pispip.DependentDemandAndSalesDemandQuantity();//鍥涜垗浜斿叆
+            quantity        := ifexpr( isdl, [Number]pispip.NewSupplyQuantity(), [Number]pispip.DependentDemandAndSalesDemandQuantity() );//鍥涜垗浜斿叆
             
             ccrow.Initialize( column, quantity );//鍙朤otal Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
             ccrow.Initialize( daycolumn, quantity );
             allrow.Initialize( column, quantity );
           }
         }
-      }
+    //  }
     }
-    startofnextyearlead       := startofplanning.StartOfNextYear() + FinancialSalesReport::GetDefaultTripLeadingTime();
+    //startofnextyearlead       := startofplanning.StartOfNextYear() + FinancialSalesReport::GetDefaultTripLeadingTime();
     //澶ц繛璐㈠姟閿�閲忥細闀挎槬鐨勯渶姹傞渶瑕佸湪trip plan閲岄潰鎵惧埌璧峰搴撳瓨鐐逛负澶ц繛瑁呴厤绾胯竟搴擄紝鐩殑鍦颁负闀挎槬澶栫搴撶殑浜у搧锛岀敱浜庨渶瑕佽�冭檻浜у搧杩愯緭lead time锛屾瘡涓湀鐨勬眹鎬绘暟鎹渶瑕佹帹杩熶袱澶╄繘琛岃绠�
-    traverse( owner, Unit.Lane.LaneLeg, laneleg ){
-      //璧峰搴撳瓨鐐规槸鍚︽槸澶ц繛瑁呴厤绾胯竟搴�
-      originsp              := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
-      isdlspline            := table.IsInUnit( originsp, dlspline );
-      //鐩殑鍦版槸鍚︽槸闀挎槬澶栫搴�
-      destisp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
-      isccrent              := table.IsInUnit( destisp, ccrent );
-      if( isdlspline and isccrent ){
-        traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead and exists( trip, ProductInTrip, pit, pit.Quantity() <> 0 ) ){
-    //      periodtime        := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date();
-          dayperiodtime     := trip.Departure().Date();
-          dayperiodname     := dayperiodtime.Format( "M2/D2/Y" );
-          periodtime        := trip.Departure().StartOfMonth().Date();
-          periodname        := periodtime.Format( "M2/D2/Y" );
-          
-          daycolumn         := selectobject( table, FinancialSalesColumn, column, column.Name() = dayperiodname and column.Period() = dayperiodtime and column.IsDay() );
-          column            := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime and not column.IsDay() );
-          if( not isnull( column ) ){
-            traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 ){
-              product       := pit.Product_MP();
-              products.Add( product );
-              quantity      := [Number]pit.Quantity();//鍥涜垗浜斿叆
-              dlrow         := table.GetRow( dlunit, pit.Product_MP() );
-              dlrow.Initialize( column, quantity );//姹囨�绘暟閲�
-              dlrow.Initialize( daycolumn, quantity );
-              
-              allrow        := table.GetRow( allunit, pit.Product_MP() );
-              allrow.Initialize( column, quantity );
-            }
-          }
-        }
-      }
-    }
+    //traverse( owner, Unit.Lane.LaneLeg, laneleg ){
+    //  //璧峰搴撳瓨鐐规槸鍚︽槸澶ц繛瑁呴厤绾胯竟搴�
+    //  originsp              := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.OriginStockingPointID() );
+    //  isdlspline            := table.IsInUnit( originsp, dlspline );
+    //  //鐩殑鍦版槸鍚︽槸闀挎槬澶栫搴�
+    //  destisp               := selectobject( owner, StockingPoint_MP, sp, sp.ID() = laneleg.DestinationStockingPointID() );
+    //  isccrent              := table.IsInUnit( destisp, ccrent );
+    //  if( isdlspline and isccrent ){
+    //    traverse( laneleg, Trip, trip, trip.Arrival() < startofnextyearlead and exists( trip, ProductInTrip, pit, pit.Quantity() <> 0 ) ){
+    ////      periodtime        := ( trip.Arrival() - FinancialSalesReport::GetDefaultTripLeadingTime() ).StartOfMonth().Date();
+    //      dayperiodtime     := trip.Departure().Date();
+    //      dayperiodname     := dayperiodtime.Format( "M2/D2/Y" );
+    //      periodtime        := trip.Departure().StartOfMonth().Date();
+    //      periodname        := periodtime.Format( "M2/D2/Y" );
+    //      
+    //      daycolumn         := selectobject( table, FinancialSalesColumn, column, column.Name() = dayperiodname and column.Period() = dayperiodtime and column.IsDay() );
+    //      column            := selectobject( table, FinancialSalesColumn, column, column.Name() = periodname and column.Period() = periodtime and not column.IsDay() );
+    //      if( not isnull( column ) ){
+    //        traverse( trip, ProductInTrip, pit, pit.Quantity() <> 0 ){
+    //          product       := pit.Product_MP();
+    //          products.Add( product );
+    //          quantity      := [Number]pit.Quantity();//鍥涜垗浜斿叆
+    //          dlrow         := table.GetRow( dlunit, pit.Product_MP() );
+    //          dlrow.Initialize( column, quantity );//姹囨�绘暟閲�
+    //          dlrow.Initialize( daycolumn, quantity );
+    //          
+    //          allrow        := table.GetRow( allunit, pit.Product_MP() );
+    //          allrow.Initialize( column, quantity );
+    //        }
+    //      }
+    //    }
+    //  }
+    //}
     
     rows := selectsortedset( table, FinancialSalesRow, row, row.Name() );
     i    := 0;
diff --git "a/_Main/BL/Type_InventoryInterfaceData/StaticMethod_SynchronizeInventory\043575.qbl" "b/_Main/BL/Type_InventoryInterfaceData/StaticMethod_SynchronizeInventory\043575.qbl"
index b3ccbaf..2943776 100644
--- "a/_Main/BL/Type_InventoryInterfaceData/StaticMethod_SynchronizeInventory\043575.qbl"
+++ "b/_Main/BL/Type_InventoryInterfaceData/StaticMethod_SynchronizeInventory\043575.qbl"
@@ -18,7 +18,9 @@
     //鍙戝姩鏈烘垚鍝佸簱瀛�
     traverse( inventorys, Elements, inventory ){
       product    := select( macroplan, Product_MP, product, product.Notes() = inventory.FourCode() );
-      InventoryInterfaceData::Generate( owner, inventory.DDay(), product.ID(), inventory.BIPlace(), [Number]inventory.Total() );
+      if(  not isnull( product ) ){
+        InventoryInterfaceData::Generate( owner, inventory.DDay(), product.ID(), inventory.BIPlace(), [Number]inventory.Total() );
+      }
     }
   *]
 }
diff --git a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
index 0fc5d8b..a7c66eb 100644
--- a/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
+++ b/_Main/BL/Type_InventorySummaryReport/Method_Generate.qbl
@@ -8,7 +8,7 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    startofplanning           := search.InventorySummarySource().MacroPlan().StartOfPlanning();
+    startofplanning           := search.MacroPlan().StartOfPlanning();
     startofyear               := startofplanning.StartOfYear();
     startofendyear            := startofplanning.StartOfNextYear() - Duration::Days( 1 );
     //鏌ヨ鏃ユ湡杩斿洖闇�瑕佸湪璁″垝鏃ユ湡涔嬪唴
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl
index 7bf8369..eda6e70 100644
--- a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-28-2024 (created)
-    return '闀挎槬宸ュ巶';
+    //return '闀挎槬宸ュ巶';
+    return 'VWED CC';
     //return 'Assembly Plant (France)';
   *]
 }
diff --git a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
index 781dc80..bdc2b39 100644
--- a/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
+++ b/_Main/BL/Type_InventorySummaryReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-28-2024 (created)
-    return '澶ц繛宸ュ巶';
+    //return '澶ц繛宸ュ巶';
+    return 'VWED DL';
     //return 'Assembly Plant (Spain)';
   *]
 }
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
index b5bb158..5bdd2d7 100644
--- a/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
@@ -14,10 +14,10 @@
     allunit                   := InventorySummaryReport::GetDefaultAllUnit();
     ccunit                    := InventorySummaryReport::GetDefaultCCUnit();
     dlunit                    := InventorySummaryReport::GetDefaultDLUnit();
-    ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
-    dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
-    ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
-    dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
+    //ccalineunit               := FinancialProductionReport::GetDefaultCCALineUnit();
+    //dlalienunit               := FinancialProductionReport::GetDefaultDLALineUnit()
+    //ccmplineunit              := FinancialProductionReport::GetDefaultCCMPLineUnit()
+    //dlmplineunit              := FinancialProductionReport::GetDefaultDLMPLineUnit();
     
     source                    := owner.InventorySummarySource( relnew, ID := InventorySummaryReport::GetDefaultName(), Name := InventorySummaryReport::GetDefaultName() );
     table                     := source.InventorySummaryReport( relnew, ID := source.Name(), Name := source.Name() );
@@ -26,18 +26,21 @@
     startofyear               := startofplanning.StartOfYear();
     startofnextyear           := startofplanning.StartOfNextYear();
     
-    search                    := source.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
+    search                    := owner.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
     
     table.GenerateColumn( owner, 'All', startofyear, startofnextyear );
     //info( '-----------------------------------', table.InventorySummaryColumn( relsize ) );
     //搴撳瓨鏁伴噺涓篈ctual inventories閲岄潰鐨勭偣Planned inventories瀛楁搴撳瓨閲忓姞鎬�
-    traverse( owner, StockingPoint_MP, stockingpoint ){
-      unit                    := stockingpoint.Unit();
-      parentunits             := unit.GetAllParent();
+    //traverse( owner, StockingPoint_MP, stockingpoint ){
+    traverse( owner, StockingPoint_MP, stockingpoint, stockingpoint.ID().EndsWith( '鍘傚唴搴�' ) ){
+    //  unit                    := stockingpoint.Unit();
+    //  parentunits             := unit.GetAllParent();
       //鏄惁灞炰簬闀挎槬宸ュ巶
-      iscc         := unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
+      iscc                    := stockingpoint.ID().StartsWith( 'CC' );//unit.ID() = ccalineunit or unit.ID() = ccmplineunit or exists( parentunits, Elements, punit, punit.ID() = ccalineunit or punit.ID() = ccmplineunit );
+    //  iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or unit.ID().StartsWith( 'CC' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'CC' ) );
       //鏄惁灞炰簬澶ц繛宸ュ巶
-      isdl         := unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
+      isdl                    := stockingpoint.ID().StartsWith( '澶ц繛' );//unit.ID() = dlalienunit or unit.ID() = dlmplineunit  or exists( parentunits, Elements, punit, punit.ID() = dlalienunit or punit.ID() = dlmplineunit );
+    //  isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or unit.ID().StartsWith( 'DL' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'DL' ) );
       if( iscc or isdl ){
         traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() ){
           //鑾峰彇宸ュ巶琛�
@@ -144,8 +147,12 @@
     rows := selectsortedset( table, InventroySummaryRow, row, row.Name() );
     i    := 0;
     traverse( rows, Elements, e ){
-      e.RowNr( i );
-      i := i + 1;
+      if( exists( e, InventorySummaryCell, cell, cell.AverageInventory() <> 0 or cell.EndingInventory() <> 0 or cell.MaximumInventory() <> 0 or cell.MinimumInventory() <> 0 ) ){
+        e.RowNr( i );
+        i := i + 1;
+      }{
+        e.Delete();
+      }
     }
     showtable.Generate( search, products );
   *]
diff --git a/_Main/BL/Type_LogisticsCostEngine/Attribute_OtherPrice.qbl b/_Main/BL/Type_LogisticsCostEngine/Attribute_OtherPrice.qbl
index bf87824..829c240 100644
--- a/_Main/BL/Type_LogisticsCostEngine/Attribute_OtherPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostEngine/Attribute_OtherPrice.qbl
@@ -2,6 +2,6 @@
 #parent: #root
 Attribute OtherPrice
 {
-  #keys: '3[413988.0.1448874835][413988.0.1448874834][413988.0.1448874836]'
-  ValueType: Number
+  #keys: '3[415754.0.267816044][415754.0.267816043][415754.0.267816045]'
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostEngine/Attribute_OutboundPrice.qbl b/_Main/BL/Type_LogisticsCostEngine/Attribute_OutboundPrice.qbl
index 69db0eb..d455b2c 100644
--- a/_Main/BL/Type_LogisticsCostEngine/Attribute_OutboundPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostEngine/Attribute_OutboundPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute OutboundPrice
 {
-  #keys: '3[413988.0.1448874815][413988.0.1448874814][413988.0.1448874816]'
+  #keys: '3[415754.0.267816079][415754.0.267816078][415754.0.267816080]'
   Description: '鍑哄簱鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostEngine/Attribute_PackagingCapacity.qbl b/_Main/BL/Type_LogisticsCostEngine/Attribute_PackagingCapacity.qbl
index 0cd6871..7687f22 100644
--- a/_Main/BL/Type_LogisticsCostEngine/Attribute_PackagingCapacity.qbl
+++ b/_Main/BL/Type_LogisticsCostEngine/Attribute_PackagingCapacity.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute PackagingCapacity
 {
-  #keys: '3[413988.0.1448874789][413988.0.1448874788][413988.0.1448874790]'
+  #keys: '3[415754.0.267850180][415754.0.267850179][415754.0.267850181]'
   Description: '鍖呰瀹归噺'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostEngine/Attribute_StoragePrice.qbl b/_Main/BL/Type_LogisticsCostEngine/Attribute_StoragePrice.qbl
index e360b88..f547b02 100644
--- a/_Main/BL/Type_LogisticsCostEngine/Attribute_StoragePrice.qbl
+++ b/_Main/BL/Type_LogisticsCostEngine/Attribute_StoragePrice.qbl
@@ -2,6 +2,6 @@
 #parent: #root
 Attribute StoragePrice
 {
-  #keys: '3[413988.0.1448874825][413988.0.1448874824][413988.0.1448874826]'
-  ValueType: Number
+  #keys: '3[415754.0.267850217][415754.0.267850216][415754.0.267850218]'
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostEngine/Attribute_WarehousingPrice.qbl b/_Main/BL/Type_LogisticsCostEngine/Attribute_WarehousingPrice.qbl
index c920fd0..0fe71c4 100644
--- a/_Main/BL/Type_LogisticsCostEngine/Attribute_WarehousingPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostEngine/Attribute_WarehousingPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute WarehousingPrice
 {
-  #keys: '3[413988.0.1448874802][413988.0.1448874801][413988.0.1448874803]'
+  #keys: '3[415754.0.267816116][415754.0.267816115][415754.0.267816117]'
   Description: '鍏ュ簱鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMachining/Attribute_BufferPaperPrice.qbl b/_Main/BL/Type_LogisticsCostMachining/Attribute_BufferPaperPrice.qbl
index 97a0b9e..a2ce036 100644
--- a/_Main/BL/Type_LogisticsCostMachining/Attribute_BufferPaperPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMachining/Attribute_BufferPaperPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute BufferPaperPrice
 {
-  #keys: '3[413988.0.1448874918][413988.0.1448874917][413988.0.1448874919]'
+  #keys: '3[415754.0.267816662][415754.0.267816661][415754.0.267816663]'
   Description: '缂撳啿绾稿崟浠�'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMachining/Attribute_OutboundPrice.qbl b/_Main/BL/Type_LogisticsCostMachining/Attribute_OutboundPrice.qbl
index 6194eec..cccbccf 100644
--- a/_Main/BL/Type_LogisticsCostMachining/Attribute_OutboundPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMachining/Attribute_OutboundPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute OutboundPrice
 {
-  #keys: '3[413988.0.1448874944][413988.0.1448874943][413988.0.1448874945]'
+  #keys: '3[415754.0.267850482][415754.0.267850481][415754.0.267850483]'
   Description: '鍑哄簱鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMachining/Attribute_PackagePrice.qbl b/_Main/BL/Type_LogisticsCostMachining/Attribute_PackagePrice.qbl
index a0032d9..dc083a4 100644
--- a/_Main/BL/Type_LogisticsCostMachining/Attribute_PackagePrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMachining/Attribute_PackagePrice.qbl
@@ -2,6 +2,6 @@
 #parent: #root
 Attribute PackagePrice
 {
-  #keys: '3[413988.0.1448874881][413988.0.1448874880][413988.0.1448874882]'
-  ValueType: Number
+  #keys: '3[415754.0.267850517][415754.0.267850516][415754.0.267850518]'
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMachining/Attribute_PackagingCapacity.qbl b/_Main/BL/Type_LogisticsCostMachining/Attribute_PackagingCapacity.qbl
index 331a566..b6fb0d8 100644
--- a/_Main/BL/Type_LogisticsCostMachining/Attribute_PackagingCapacity.qbl
+++ b/_Main/BL/Type_LogisticsCostMachining/Attribute_PackagingCapacity.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute PackagingCapacity
 {
-  #keys: '3[413988.0.1448874858][413988.0.1448874857][413988.0.1448874859]'
+  #keys: '3[415754.0.267816701][415754.0.267816700][415754.0.267816702]'
   Description: '鍖呰瀹归噺'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMachining/Attribute_StoragePrice.qbl b/_Main/BL/Type_LogisticsCostMachining/Attribute_StoragePrice.qbl
index 66aee3b..eac30be 100644
--- a/_Main/BL/Type_LogisticsCostMachining/Attribute_StoragePrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMachining/Attribute_StoragePrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute StoragePrice
 {
-  #keys: '3[413988.0.1448874957][413988.0.1448874956][413988.0.1448874958]'
+  #keys: '3[415754.0.267850554][415754.0.267850553][415754.0.267850555]'
   Description: '浠撳偍鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMachining/Attribute_UnpackingPrice.qbl b/_Main/BL/Type_LogisticsCostMachining/Attribute_UnpackingPrice.qbl
index f62c22a..4725c7c 100644
--- a/_Main/BL/Type_LogisticsCostMachining/Attribute_UnpackingPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMachining/Attribute_UnpackingPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute UnpackingPrice
 {
-  #keys: '3[413988.0.1448874891][413988.0.1448874890][413988.0.1448874892]'
+  #keys: '3[415754.0.267816738][415754.0.267816737][415754.0.267816739]'
   Description: '鎷嗗寘鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMachining/Attribute_WarehousingPrice.qbl b/_Main/BL/Type_LogisticsCostMachining/Attribute_WarehousingPrice.qbl
index 05a31b7..46d5549 100644
--- a/_Main/BL/Type_LogisticsCostMachining/Attribute_WarehousingPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMachining/Attribute_WarehousingPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute WarehousingPrice
 {
-  #keys: '3[413988.0.1448874934][413988.0.1448874933][413988.0.1448874935]'
+  #keys: '3[415754.0.267816775][415754.0.267816774][415754.0.267816776]'
   Description: '鍏ュ簱鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMachining/Attribute_WoodenCratePrice.qbl b/_Main/BL/Type_LogisticsCostMachining/Attribute_WoodenCratePrice.qbl
index 6581293..16b4ca7 100644
--- a/_Main/BL/Type_LogisticsCostMachining/Attribute_WoodenCratePrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMachining/Attribute_WoodenCratePrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute WoodenCratePrice
 {
-  #keys: '3[413988.0.1448874901][413988.0.1448874900][413988.0.1448874902]'
+  #keys: '3[415754.0.267850591][415754.0.267850590][415754.0.267850592]'
   Description: '鏈ㄧ鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_CleanPrice.qbl b/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_CleanPrice.qbl
index 253081a..a2e5883 100644
--- a/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_CleanPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_CleanPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute CleanPrice
 {
-  #keys: '3[413988.0.1448875010][413988.0.1448875009][413988.0.1448875011]'
+  #keys: '3[415754.0.267816834][415754.0.267816833][415754.0.267816835]'
   Description: '娓呮礂鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_OutboundPrice.qbl b/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_OutboundPrice.qbl
index 53c108d..71a37b2 100644
--- a/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_OutboundPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_OutboundPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute OutboundPrice
 {
-  #keys: '3[413988.0.1448874987][413988.0.1448874986][413988.0.1448874988]'
+  #keys: '3[415754.0.267816869][415754.0.267816868][415754.0.267816870]'
   Description: '鍑哄簱鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_StoragePrice.qbl b/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_StoragePrice.qbl
index 49ffdc3..14e7c8f 100644
--- a/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_StoragePrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_StoragePrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute StoragePrice
 {
-  #keys: '3[413988.0.1448874997][413988.0.1448874996][413988.0.1448874998]'
+  #keys: '3[415754.0.267816906][415754.0.267816905][415754.0.267816907]'
   Description: '浠撳偍鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_WarehousingPrice.qbl b/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_WarehousingPrice.qbl
index 4a19599..a87b45b 100644
--- a/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_WarehousingPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostMaterialRack/Attribute_WarehousingPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute WarehousingPrice
 {
-  #keys: '3[413988.0.1448874977][413988.0.1448874976][413988.0.1448874978]'
+  #keys: '3[415754.0.267850713][415754.0.267850712][415754.0.267850714]'
   Description: '鍏ュ簱鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostTransport/Attribute_LoadingCapacity.qbl b/_Main/BL/Type_LogisticsCostTransport/Attribute_LoadingCapacity.qbl
index 9f6da40..6a3be0c 100644
--- a/_Main/BL/Type_LogisticsCostTransport/Attribute_LoadingCapacity.qbl
+++ b/_Main/BL/Type_LogisticsCostTransport/Attribute_LoadingCapacity.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute LoadingCapacity
 {
-  #keys: '3[413988.0.1448875053][413988.0.1448875052][413988.0.1448875054]'
+  #keys: '3[415754.0.267816966][415754.0.267816965][415754.0.267816967]'
   Description: '瑁呰浇瀹归噺'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_LogisticsCostTransport/Attribute_TransportPrice.qbl b/_Main/BL/Type_LogisticsCostTransport/Attribute_TransportPrice.qbl
index d599fce..be7788d 100644
--- a/_Main/BL/Type_LogisticsCostTransport/Attribute_TransportPrice.qbl
+++ b/_Main/BL/Type_LogisticsCostTransport/Attribute_TransportPrice.qbl
@@ -2,7 +2,7 @@
 #parent: #root
 Attribute TransportPrice
 {
-  #keys: '3[413988.0.1448875063][413988.0.1448875062][413988.0.1448875064]'
+  #keys: '3[415754.0.267817001][415754.0.267817000][415754.0.267817002]'
   Description: '杩愯緭鍗曚环'
-  ValueType: Number
+  ValueType: Real
 }
diff --git a/_Main/BL/Type_MachineLogisticsCostReportCell/StaticMethod_CreateData.qbl b/_Main/BL/Type_MachineLogisticsCostReportCell/StaticMethod_CreateData.qbl
index 10aea66..038ccac 100644
--- a/_Main/BL/Type_MachineLogisticsCostReportCell/StaticMethod_CreateData.qbl
+++ b/_Main/BL/Type_MachineLogisticsCostReportCell/StaticMethod_CreateData.qbl
@@ -44,7 +44,7 @@
                                 tempPPC.PackagingPlanColumn().StartDate().Year()  = mlcrc.StartDate().Year()  and
                                 tempPPC.PackagingPlanColumn().StartDate().Month() = mlcrc.StartDate().Month(),
                                 tempPPC.Package() );
-        cell.PackingCharges( packageQuantity * guard( lcm.PackagePrice(), 1 ) );
+    //    cell.PackingCharges( packageQuantity * guard( lcm.PackagePrice(), 1 ) );
         
         // 璁剧疆鎷嗗寘璐圭敤锛堟媶鍖呴噺 * 鎷嗗寘鍗曚环锛�
         unpackingQuantity := sum( macroPlan, PackagingPlanRow.PackagingPlanCell, tempPPC, 
@@ -53,13 +53,13 @@
                                   tempPPC.PackagingPlanColumn().StartDate().Year()  = mlcrc.StartDate().Year()  and
                                   tempPPC.PackagingPlanColumn().StartDate().Month() = mlcrc.StartDate().Month(),
                                   tempPPC.Unpacking() );
-        cell.UnpackingCost( unpackingQuantity * guard( lcm.UnpackingPrice(), 1 ) );
+    //    cell.UnpackingCost( unpackingQuantity * guard( lcm.UnpackingPrice(), 1 ) );
         
         // 璁剧疆缂撳啿绾歌垂鐢紙鍖呰绫� * 缂撳啿绾稿崟浠凤級
-        cell.BufferPaperCost( packageQuantity * guard( lcm.BufferPaperPrice(), 1 ) );
+    //    cell.BufferPaperCost( packageQuantity * guard( lcm.BufferPaperPrice(), 1 ) );
         
         // 璁剧疆鏈ㄧ鍗曚环
-        cell.UnitPriceOfWoodenCrate( guard( lcm.WoodenCratePrice(), 1 ) );
+    //    cell.UnitPriceOfWoodenCrate( guard( lcm.WoodenCratePrice(), 1 ) );
         
         // 璁剧疆璋冩嫧璐圭敤锛堣皟鎷ㄦ暟閲� / 鍖呰瀹归噺 / 瑁呰浇瀹归噺 * 杩愯緭鍗曚环锛�
         transferQuantity := sum( macroPlan, TransferPlanRow.TransferPlanCell, tempTPC,
@@ -68,13 +68,13 @@
                                  tempTPC.TransferPlanColumn().ColumnDate().Year()  = mlcrc.StartDate().Year()                               and
                                  tempTPC.TransferPlanColumn().ColumnDate().Month() = mlcrc.StartDate().Month(),
                                  [Number]tempTPC.Value() );
-        cell.TransferCost( transferQuantity / guard( lcm.PackagingCapacity(), 1 ) / guard( lct.LoadingCapacity(), 1 ) * guard( lct.TransportPrice(), 1 ) );
+    //    cell.TransferCost( transferQuantity / guard( lcm.PackagingCapacity(), 1 ) / guard( lct.LoadingCapacity(), 1 ) * guard( lct.TransportPrice(), 1 ) );
         
         // 澶栫搴撳叆搴撹垂鐢紙鍏ュ簱閲廩鍖呰閲廬 / 鍖呰瀹归噺 * 鍏ュ簱鍗曚环锛�
-        cell.StorageFeesForRentedWarehouses( packageQuantity / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.WarehousingPrice(), 1 ) );
+    //    cell.StorageFeesForRentedWarehouses( packageQuantity / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.WarehousingPrice(), 1 ) );
         
         // 澶栫搴撳嚭搴撹垂鐢紙鍑哄簱閲廩鎷嗗寘閲廬 / 鍖呰瀹归噺 * 鍑哄簱鍗曚环锛�
-        cell.OutboundExpensesForRentedWarehouses( unpackingQuantity / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.OutboundPrice(), 1 ) );
+    //    cell.OutboundExpensesForRentedWarehouses( unpackingQuantity / guard( lcm.PackagingCapacity(), 1 ) * guard( lcm.OutboundPrice(), 1 ) );
         
         // 澶栫搴撹繍杈撹垂鐢紙杩愯緭鏁伴噺 / 鍖呰瀹归噺 / 瑁呰浇瀹归噺 * 杩愯緭鍗曚环锛�
         
diff --git a/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl
index 4a17ee3..71907f1 100644
--- a/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl
+++ b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultCCUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '闀挎槬宸ュ巶';
+    //return '闀挎槬宸ュ巶';
+    return 'VWED CC';
     //return 'Assembly Plant (France)';
   *]
 }
diff --git a/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl
index ba77240..fe0b0be 100644
--- a/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl
+++ b/_Main/BL/Type_MachiningPipelineReport/StaticMethod_GetDefaultDLUnit.qbl
@@ -5,7 +5,8 @@
   TextBody:
   [*
     // 鐢勫叞楦� Jun-25-2024 (created)
-    return '澶ц繛宸ュ巶';
+    //return '澶ц繛宸ュ巶';
+    return 'VWED DL';
     //return 'Assembly Plant (Spain)';
   *]
 }
diff --git a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
index 1ce8cfa..de5f0d3 100644
--- a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl
@@ -16,29 +16,29 @@
     table                     := source.Report( relnew, ID := source.Name(), Name := source.Name() );
     showtable                 := source.Report( relnew, ID := source.Name() + 'Show', Name := source.Name(), IsShow := true );
     
-    search                    := source.Search( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
+    search                    := owner.MachiningPipelineSearch( relnew, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), TimeUnit := Translations::MP_GlobalParameters_Day() );
     
     products                  := construct( Product_MPs );
     //鍒濆鍖栧垪
     table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() );
     endperiod                 := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() );
     
-    //鐢熸垚瑁呴厤銆佺敓浜у拰搴撳瓨鏁版嵁
+    //鐢熸垚瑁呴厤(闀垮唴搴�)銆佺敓浜э紙鐨凞L鍜屽簱瀛樻暟鎹�
     traverse( owner, StockingPoint_MP, stockingpoint ){
       unit                    := stockingpoint.Unit();
       parentunits             := unit.GetAllParent();
       //鏄惁灞炰簬闀挎槬宸ュ巶
-      iscc                    := unit.ID() = ccunit or exists( parentunits, Elements, punit, punit.ID() = ccunit );
+      iscc                    := stockingpoint.ID().StartsWith( 'CC' ) or unit.ID().StartsWith( 'CC' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'CC' ) );//unit.ID() = ccunit or exists( parentunits, Elements, punit, punit.ID() = ccunit );
       //鏄惁灞炰簬澶ц繛宸ュ巶
-      isdl                    := unit.ID() = dlunit or exists( parentunits, Elements, punit, punit.ID() = dlunit );
-      //鏄惁灞炰簬闀挎槬瑁呴厤绾�
-      isccassemnly            := unit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() );
-      //鏄惁灞炰簬澶ц繛瑁呴厤绾�
-      isdlassemnly            := unit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() );
+      isdl                    := stockingpoint.ID().StartsWith( 'DL' ) or unit.ID().StartsWith( 'DL' ) or exists( parentunits, Elements, punit, punit.ID().StartsWith( 'DL' ) );//unit.ID() = dlunit or exists( parentunits, Elements, punit, punit.ID() = dlunit );
+      //鏄惁灞炰簬闀挎槬瑁呴厤绾緾C鍘傚唴搴�
+      isccassemnly            := stockingpoint.ID().EndsWith( '鍘傚唴搴�' ) and ( stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '闀挎槬' ) );//unit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() );
+      //鏄惁灞炰簬澶ц繛瑁呴厤绾緿L鍘傚唴搴�
+      isdlassemnly            := stockingpoint.ID().EndsWith( '鍘傚唴搴�' ) and ( stockingpoint.ID().StartsWith( 'DL' ) or stockingpoint.ID().StartsWith( '澶ц繛' ) );//unit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() );
       //鏄惁灞炰簬闀挎槬鏈哄姞浜х嚎
-      isccproduction          := unit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() );
+      isccproduction          := stockingpoint.ID().EndsWith( '绾胯竟搴�' ) and ( stockingpoint.ID().StartsWith( 'CC' ) or stockingpoint.ID().StartsWith( '闀挎槬' ) );//unit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() );
       //鏄惁灞炰簬澶ц繛鏈哄姞浜х嚎
-      isdlproduction          := unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() );
+      isdlproduction          := unit.ID().EndsWith( 'MoMo' ) and unit.ID().StartsWith( 'DL' );//unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() );
       if( iscc or isdl ){
         traverse( stockingpoint, ProductInStockingPoint_MP, pisp,  pisp.Product_MP().IsLeaf() and not pisp.IsSystem() 
     //              and exists( pisp.Product_MP().GetAllParent(), Elements, e, e.ID() = productparent ) 
diff --git a/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl b/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
index 955bdcf..98e9f56 100644
--- a/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
+++ b/_Main/BL/Type_OfflinePlanCell/StaticMethod_RefreshOfflinePlan.qbl
@@ -13,7 +13,7 @@
     // 鐢熸垚涓嬬嚎璁″垝琛�
     traverse ( macroPlan, Unit, u, u.HasCapacityTypeTime() 
     //           and u.Name() = "eMotor Assy (France)" // 娴嬭瘯鏈湴鍦烘櫙鏃跺彲浠ヨ繃婊�
-    //           and u.Name() = "CC-MoMo"              // 娴嬭瘯瀹為檯鍦烘櫙鏃跺彲浠ヨ繃婊�
+    //           and u.Name() = "DL-MoMo"              // 娴嬭瘯瀹為檯鍦烘櫙鏃跺彲浠ヨ繃婊�
               ) {
       // 鍒涘缓浜х嚎琛�
       opt.OfflinePlanRow( relnew, ProductionLine := u.ID(), ProductID := "", Type := "0" );
@@ -145,9 +145,12 @@
       previousColumn := indexColumn.PreviousColumn();
       nextColumn     := indexColumn.NextColumn();
       
-      while ( not isnull( indexColumn.NextColumn() ) ) {
+      while ( not isnull( indexColumn.NextColumn() ) 
+    //          and indexColumn.ColumnDate() <= Date::Construct( 2024, 4, 16 ) // 娴嬭瘯瀹為檯鍦烘櫙鏃跺彲浠ヨ繃婊�
+             ) {
         productionSerialNumber := 1;
         opcs                   := selectsortedset( indexColumn, OfflinePlanCell, tempOPC, tempOPC.FindType( "2", pl ), tempOPC.InventoryWeight() );
+        initialSize            := opcs.Size();
         if ( opcs.Size() > 0 ) {
           // 鍒ゅ畾1
           previousOPC := maxselect( previousColumn, OfflinePlanCell, tempOPC, tempOPC.FindType( "2", pl ), tempOPC.ProductionSerialNumber() );
@@ -172,8 +175,8 @@
                                  exists( nextColumn, OfflinePlanCell, nextOPC, nextOPC.FindType( "2", pl ) and nextOPC.OfflinePlanRow().ProductID() = tempOPC.OfflinePlanRow().ProductID() ) );
           if ( nextOPCs.Size() = 1 ) {
             opc := nextOPCs.Element( 0 );
-            opc.Value( "#" + opcs.Size().Format( "N(LPad0(2))" ) );
-            opc.ProductionSerialNumber( opcs.Size() );
+            opc.Value( "#" + initialSize.Format( "N(LPad0(2))" ) );
+            opc.ProductionSerialNumber( initialSize );
             opcs.Remove( opc );
           }
           
diff --git a/_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl b/_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl
index 882d9cb..73cbf58 100644
--- a/_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl
+++ b/_Main/BL/Type_TransferPlanCell/StaticMethod_GenerateReport.qbl
@@ -14,7 +14,7 @@
     // 鐢熸垚璋冩嫧璁″垝
     traverse ( macroPlan, Unit, u, u.HasCapacityTypeTransportQuantity() ) {
       traverse ( u, Lane.LaneLeg.Trip, t ) {
-        traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 ) {
+        traverse ( t, ProductInTrip, pit, pit.Quantity() > 0.0 and exists( pit.Product_MP(), AllParent.AsParent, tempP, tempP.ID() = "鏈哄姞浠�" ) ) {
           // 鎵捐
           tpr := TransferPlanRow::FindTransferPlanRowTypeIndex( TransferPlanRow::IdentifyTheFactory( t.LaneLeg().AsOriginStockingPointLeg().StockingPoint_MP() ),
                                                                 TransferPlanRow::IdentifyTheFactory( t.LaneLeg().AsDestinationStockingPointLeg().StockingPoint_MP() ),
@@ -57,6 +57,16 @@
       indexDate := indexDate + 1;
     }
     
+    // 琛ラ綈绌烘牸瀛�
+    traverse ( macroPlan, TransferPlanRow, tpr ) {
+      traverse ( macroPlan, TransferPlanColumn, tpc, tpc.ColumnDate() >= minselect( macroPlan, TransferPlanColumn, tempTPC, true, tempTPC.ColumnDate() ).ColumnDate() ) {
+        cell := select( tpr, TransferPlanCell, tempTPC, tempTPC.TransferPlanColumn() = tpc );
+        if ( isnull( cell ) ) {
+          cell := tpc.TransferPlanCell( relnew, Value := "" );
+          cell.TransferPlanRow( relset, tpr );
+        }
+      }
+    }
     
     // 鐢熸垚浜у搧鍒�
     minDateTPC := macroPlan.TransferPlanColumn( relnew,
diff --git a/_Main/BL/Type_TransferPlanRow/Method_Filter.qbl b/_Main/BL/Type_TransferPlanRow/Method_Filter.qbl
new file mode 100644
index 0000000..e0e3038
--- /dev/null
+++ b/_Main/BL/Type_TransferPlanRow/Method_Filter.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Method Filter (
+  Product_MPs products
+) declarative remote as Boolean
+{
+  TextBody:
+  [*
+    flag := exists( products, Elements, tempP, tempP.ID() = this.ProductID() );
+    
+    return flag;
+  *]
+}
diff --git a/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp b/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
index 55dd648..b9d0d71 100644
--- a/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
+++ b/_Main/Sys/Repr/Global/CCEngineLogisticsCostCell.qrp
@@ -2,40 +2,40 @@
 #parent: #root
 TypeRepresentation CCEngineLogisticsCostCell
 {
+  AttributeRepresentation AllCost
+  {
+    AttributeKey: '[415136.0.1160240044]'
+    Synonym: '鎬昏垂鐢�'
+  }
   AttributeRepresentation Coefficient
   {
     AttributeKey: '[415136.0.986844757]'
     Synonym: '绯绘暟'
   }
-  AttributeRepresentation EstimatedTotalCost
+  AttributeRepresentation EstimateTotalCost
   {
-    AttributeKey: '[415136.0.986844738]'
+    AttributeKey: '[415136.0.1160240036]'
     Synonym: '棰勮鎬昏垂鐢�'
   }
-  AttributeRepresentation FactoryToRentTransCost
+  AttributeRepresentation RentInCost
   {
-    AttributeKey: '[415136.0.986844780]'
-    Synonym: '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤'
-  }
-  AttributeRepresentation RentEnterCost
-  {
-    AttributeKey: '[415136.0.986881422]'
+    AttributeKey: '[415136.0.1160164662]'
     Synonym: '澶栫搴撳叆搴撹垂鐢�'
   }
-  AttributeRepresentation RentOutCost
+  AttributeRepresentation RentOutOfCost
   {
-    AttributeKey: '[415136.0.986881432]'
+    AttributeKey: '[415136.0.1160164672]'
     Synonym: '澶栫搴撳嚭搴撹垂鐢�'
   }
-  AttributeRepresentation RentStorageCost
+  AttributeRepresentation RentStorCost
   {
-    AttributeKey: '[415136.0.986881445]'
+    AttributeKey: '[415136.0.1160164707]'
     Synonym: '澶栫搴撲粨鍌ㄨ垂鐢�'
   }
-  AttributeRepresentation TotalCost
+  AttributeRepresentation WerkToRentTransCost
   {
-    AttributeKey: '[415136.0.986844770]'
-    Synonym: '鎬昏垂鐢�'
+    AttributeKey: '[415136.0.1160240024]'
+    Synonym: '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤'
   }
   RelationRepresentation Column { RelationKey: '[415136.0.986881392]' Visibility: 'Normal' }
 }
diff --git a/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp b/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
index 6efbdbf..d2bf8d1 100644
--- a/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
+++ b/_Main/Sys/Repr/Global/DLEngineLogisticsCostCell.qrp
@@ -2,29 +2,34 @@
 #parent: #root
 TypeRepresentation DLEngineLogisticsCostCell
 {
-  AttributeRepresentation CCLongTransCoat
+  AttributeRepresentation AllCost
   {
-    AttributeKey: '[415136.0.992900331]'
+    AttributeKey: '[415136.0.1160164830]'
+    Synonym: '鎬昏垂鐢�'
+  }
+  AttributeRepresentation CCLongTransCost
+  {
+    AttributeKey: '[415136.0.1160164734]'
     Synonym: '闀挎槬闀块�旇繍杈撹垂鐢�'
   }
-  AttributeRepresentation CCRentEnterCost
+  AttributeRepresentation CCRentInCost
   {
-    AttributeKey: '[415136.0.992900044]'
+    AttributeKey: '[415136.0.1160164742]'
     Synonym: '闀挎槬澶栫搴撳叆搴撹垂鐢�'
   }
-  AttributeRepresentation CCRentOutCost
+  AttributeRepresentation CCRentOutOfCost
   {
-    AttributeKey: '[415136.0.992900047]'
+    AttributeKey: '[415136.0.1160164750]'
     Synonym: '闀挎槬澶栫搴撳嚭搴撹垂鐢�'
   }
-  AttributeRepresentation CCRentStorageCost
+  AttributeRepresentation CCRentStorCost
   {
-    AttributeKey: '[415136.0.992900050]'
+    AttributeKey: '[415136.0.1160164771]'
     Synonym: '闀挎槬澶栫搴撲粨鍌ㄨ垂鐢�'
   }
-  AttributeRepresentation CCShortTransCost
+  AttributeRepresentation CCShorTransCost
   {
-    AttributeKey: '[415136.0.992900341]'
+    AttributeKey: '[415136.0.1160164779]'
     Synonym: '闀挎槬鐭�旇繍杈撹垂鐢�'
   }
   AttributeRepresentation Coefficient
@@ -32,35 +37,30 @@
     AttributeKey: '[415136.0.992900035]'
     Synonym: '绯绘暟'
   }
-  AttributeRepresentation DLRentEnterCost
+  AttributeRepresentation DLRentInCost
   {
-    AttributeKey: '[415136.0.992900241]'
+    AttributeKey: '[415136.0.1160164787]'
     Synonym: '澶ц繛澶栫搴撳叆搴撹垂鐢�'
   }
-  AttributeRepresentation DLRentOutCost
+  AttributeRepresentation DLRentOutOfCost
   {
-    AttributeKey: '[415136.0.992900248]'
+    AttributeKey: '[415136.0.1160164795]'
     Synonym: '澶ц繛澶栫搴撳嚭搴撹垂鐢�'
   }
-  AttributeRepresentation DLRentStorageCost
+  AttributeRepresentation DLRentStorCost
   {
-    AttributeKey: '[415136.0.992900261]'
+    AttributeKey: '[415136.0.1160164806]'
     Synonym: '澶ц繛澶栫搴撲粨鍌ㄨ垂鐢�'
   }
-  AttributeRepresentation EstimatedTotalCost
+  AttributeRepresentation EstimateTotalCost
   {
-    AttributeKey: '[415136.0.992900038]'
+    AttributeKey: '[415136.0.1160164814]'
     Synonym: '棰勮鎬昏垂鐢�'
   }
-  AttributeRepresentation FactoryToDLRentTransCost
+  AttributeRepresentation WerkToDLRentTransCost
   {
-    AttributeKey: '[415136.0.992900041]'
-    Synonym: '鍘傚唴鍒板ぇ杩炲绉熷簱杩愯緭璐圭敤'
-  }
-  AttributeRepresentation TotalCost
-  {
-    AttributeKey: '[415136.0.992900053]'
-    Synonym: '鎬昏垂鐢�'
+    AttributeKey: '[415136.0.1160164822]'
+    Synonym: '鍘傚唴鍒板绉熷簱杩愯緭璐圭敤'
   }
   RelationRepresentation Column { RelationKey: '[415136.0.992900194]' Visibility: 'Normal' }
 }
diff --git a/_Main/Sys/Repr/Global/LogisticsCostEngine.qrp b/_Main/Sys/Repr/Global/LogisticsCostEngine.qrp
new file mode 100644
index 0000000..509d5d4
--- /dev/null
+++ b/_Main/Sys/Repr/Global/LogisticsCostEngine.qrp
@@ -0,0 +1,66 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation LogisticsCostEngine
+{
+  AttributeRepresentation OtherPrice
+  {
+    AttributeKey: '[415754.0.267816043]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation OutboundPrice
+  {
+    AttributeKey: '[415754.0.267816078]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation PackagingCapacity
+  {
+    AttributeKey: '[415754.0.267850179]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation StoragePrice
+  {
+    AttributeKey: '[415754.0.267850216]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation WarehousingPrice
+  {
+    AttributeKey: '[415754.0.267816115]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  RelationRepresentation MacroPlan { RelationKey: '[413988.0.1448874692]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/LogisticsCostMachining.qrp b/_Main/Sys/Repr/Global/LogisticsCostMachining.qrp
new file mode 100644
index 0000000..f7f08ba
--- /dev/null
+++ b/_Main/Sys/Repr/Global/LogisticsCostMachining.qrp
@@ -0,0 +1,102 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation LogisticsCostMachining
+{
+  AttributeRepresentation BufferPaperPrice
+  {
+    AttributeKey: '[415754.0.267816661]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation OutboundPrice
+  {
+    AttributeKey: '[415754.0.267850481]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation PackagePrice
+  {
+    AttributeKey: '[415754.0.267850516]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation PackagingCapacity
+  {
+    AttributeKey: '[415754.0.267816700]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation StoragePrice
+  {
+    AttributeKey: '[415754.0.267850553]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation UnpackingPrice
+  {
+    AttributeKey: '[415754.0.267816737]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation WarehousingPrice
+  {
+    AttributeKey: '[415754.0.267816774]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation WoodenCratePrice
+  {
+    AttributeKey: '[415754.0.267850590]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  RelationRepresentation MacroPlan { RelationKey: '[413988.0.1448874705]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/LogisticsCostMaterialRack.qrp b/_Main/Sys/Repr/Global/LogisticsCostMaterialRack.qrp
new file mode 100644
index 0000000..5a998f7
--- /dev/null
+++ b/_Main/Sys/Repr/Global/LogisticsCostMaterialRack.qrp
@@ -0,0 +1,54 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation LogisticsCostMaterialRack
+{
+  AttributeRepresentation CleanPrice
+  {
+    AttributeKey: '[415754.0.267816833]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation OutboundPrice
+  {
+    AttributeKey: '[415754.0.267816868]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation StoragePrice
+  {
+    AttributeKey: '[415754.0.267816905]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation WarehousingPrice
+  {
+    AttributeKey: '[415754.0.267850712]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  RelationRepresentation MacroPlan { RelationKey: '[413988.0.1448874718]' Visibility: 'Normal' }
+}
diff --git a/_Main/Sys/Repr/Global/LogisticsCostTransport.qrp b/_Main/Sys/Repr/Global/LogisticsCostTransport.qrp
new file mode 100644
index 0000000..55998e1
--- /dev/null
+++ b/_Main/Sys/Repr/Global/LogisticsCostTransport.qrp
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: #root
+TypeRepresentation LogisticsCostTransport
+{
+  AttributeRepresentation LoadingCapacity
+  {
+    AttributeKey: '[415754.0.267816965]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  AttributeRepresentation TransportPrice
+  {
+    AttributeKey: '[415754.0.267817000]'
+    Conditional:
+    [
+    ]
+    DataRepresentation.Default
+    {
+      FormatString: 'N(Dec(2))'
+      InheritFormatting: false
+    }
+  }
+  RelationRepresentation MacroPlan { RelationKey: '[413988.0.1448874731]' Visibility: 'Normal' }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
index a33bc23..36b4beb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -32,7 +32,7 @@
       Properties:
       [
         Image: 'LIGHTBULB'
-        Label: 'Offline plan'
+        Label: 'Output plan'
         Taborder: 1
       ]
     }
@@ -44,7 +44,7 @@
       [
         Description: 'AssemblyOnlinePlan'
         Image: 'PALM_TREE'
-        Label: 'Assembly online plan'
+        Label: 'Filing plan'
         Taborder: 2
       ]
     }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable\043358.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable\043358.def"
index 7474baa..2264baf 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable\043358.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_MatrixEditorTable\043358.def"
@@ -26,7 +26,7 @@
       ]
       Properties:
       [
-        Attributes: 'RentEnterCost;RentOutCost;FactoryToRentTransCost;RentStorageCost;EstimatedTotalCost;Coefficient;TotalCost'
+        Attributes: 'RentInCost;RentOutOfCost;WerkToRentTransCost;RentStorCost;EstimateTotalCost;Coefficient;AllCost'
         Column: 'Column'
         Row: 'Row'
         Taborder: 0
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport\043670.def"
index bb0fe40..f56b008 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport\043670.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Component_PanelExport\043670.def"
@@ -25,6 +25,26 @@
         Taborder: 0
       ]
     }
+    Component ButtonImport
+    {
+      #keys: '[415136.0.1153801819]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'IMPORT1'
+        Taborder: 2
+      ]
+    }
+    Component bRefresh
+    {
+      #keys: '[415136.0.1153802554]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'REFRESH'
+        Taborder: 3
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def
index ef0c204..39a10dd 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_MatrixEditorTable_358_OnUpdateValue.def
@@ -19,10 +19,10 @@
       cell.Coefficient( value );
       traverse( table, Row, trow, trow.Name() = row.Name() ){
         traverse( trow, Cell, tcel, tcel.Column().Name() = column.Name() ){
-          tcel.RentEnterCost( cell.RentEnterCost() );
-          tcel.RentOutCost( cell.RentOutCost() );
-          tcel.FactoryToRentTransCost( cell.FactoryToRentTransCost() );
-          tcel.RentStorageCost( cell.RentStorageCost() );
+          tcel.RentInCost( cell.RentInCost() );
+          tcel.RentOutOfCost( cell.RentOutOfCost() );
+          tcel.WerkToRentTransCost( cell.WerkToRentTransCost() );
+          tcel.RentStorCost( cell.RentStorCost() );
           tcel.Coefficient( cell.Coefficient() );
         }
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def
index 0061f31..3ada041 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_OnCreated.def
@@ -11,14 +11,14 @@
     [*
       //鍒濆鍖�
       //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
-        CCEngineLogisticsCostReport::Initialize( MacroPlan );
+      //  CCEngineLogisticsCostReport::Initialize( MacroPlan );
       //}
       //info( '------------------1----------------' );
-      table := selectobject( MacroPlan, CCEngineLogisticsCostReport, table, table.IsShow() );
+      //table := selectobject( MacroPlan, CCEngineLogisticsCostReport, table, table.IsShow() );
       //info( '------------------2----------------', table.IsImport(), table.IsShow() );
-      DataHolderTable.Data( table );
+      //DataHolderTable.Data( table );
       
-      dhSearch.Data( table.MacroPlan().CCEngineLogisticsCostSearch() );
+      //dhSearch.Data( table.MacroPlan().CCEngineLogisticsCostSearch() );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonImport_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonImport_OnClick.def
new file mode 100644
index 0000000..70947b6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_ButtonImport_OnClick.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: PanelExport_670/ButtonImport
+Response OnClick () id:Response_PanelExport_670_ButtonImport_OnClick
+{
+  #keys: '[415136.0.1153801818]'
+  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();
+          
+          CCEngineLogisticsCostReport::Import( MacroPlan, RecycleBin, webFileBinaryData, fileName );
+          
+          WebMessageBox::Success( Translations::A_VWED_Success() );
+        }
+      } onerror {
+        WebMessageBox::Error( e.GeneralInformation() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_bRefresh_OnClick.def
new file mode 100644
index 0000000..cceb058
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelExport_670_bRefresh_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelExport_670/bRefresh
+Response OnClick () id:Response_PanelExport_bRefresh_OnClick
+{
+  #keys: '[415136.0.1153802553]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      CCEngineLogisticsCostReport::Initialize( MacroPlan );
+      
+      table := selectobject( MacroPlan, CCEngineLogisticsCostReport, table, table.IsShow() );
+      
+      DataHolderTable.Data( table );
+      
+      //dhSearch.Data( table.MacroPlan().CCEngineLogisticsCostSearch() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def
index a3099b3..8bdf1f3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelGeneration_969_ddslGeneration_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().Generation() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
         dhSearch.Data().Generation( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def
index 6514388..3ec8b09 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelMQBMLB_667_ddslMQBMLB_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().MqbMlb() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
         dhSearch.Data().MqbMlb( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def
index a5e290e..1967b54 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/Response_PanelPower_653_ddslPower_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().Power() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
         dhSearch.Data().Power( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
index 5428df3..1d10db9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCCEngineLogisticsCostReport/_ROOT_Component_FormCCEngineLogisticsCostReport.def
@@ -22,6 +22,21 @@
       #keys: '[415136.0.989500384]'
       BaseType: 'WebDataHolder'
       Databinding: 'CCEngineLogisticsCostSearch'
+      Children:
+      [
+        Component deSearch
+        {
+          #keys: '[415136.0.1155813573]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'CCEngineLogisticsCostSearch'
+          ]
+        }
+      ]
       Properties:
       [
         Taborder: 1
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def
index eddbd91..8bfb505 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_MatrixEditorTable.def
@@ -26,7 +26,7 @@
       ]
       Properties:
       [
-        Attributes: 'CCRentEnterCost;CCRentOutCost;CCLongTransCoat;CCShortTransCost;CCRentStorageCost;DLRentEnterCost;DLRentOutCost;FactoryToDLRentTransCost;DLRentStorageCost;EstimatedTotalCost;Coefficient;TotalCost'
+        Attributes: 'CCRentInCost;CCRentOutOfCost;CCLongTransCost;CCShorTransCost;CCRentStorCost;DLRentInCost;DLRentOutOfCost;WerkToDLRentTransCost;DLRentStorCost;EstimateTotalCost;Coefficient;AllCost'
         Column: 'Column'
         Row: 'Row'
         Taborder: 0
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def
index bfe165a..6b21362 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Component_PanelExport.def
@@ -25,6 +25,26 @@
         Taborder: 0
       ]
     }
+    Component ButtonImport id:ButtonImport_85
+    {
+      #keys: '[415136.0.1153802162]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'IMPORT1'
+        Taborder: 2
+      ]
+    }
+    Component bRefresh id:bRefresh_427
+    {
+      #keys: '[415136.0.1153802325]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'REFRESH'
+        Taborder: 3
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
index ca7f4d4..090c39f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_OnCreated.def
@@ -11,15 +11,15 @@
     [*
       //鍒濆鍖�
       //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
-        DLEngineLogisticsCostReport::Initialize( MacroPlan );
+      //  DLEngineLogisticsCostReport::Initialize( MacroPlan );
       //}
       //info( '------------------1----------------' );
-      table := selectobject( MacroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
+      //table := selectobject( MacroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
       //info( '------------------2----------------', table.IsImport(), table.IsShow() );
-      DataHolderTable.Data( table );
+      //DataHolderTable.Data( table );
       
-      dhSearch.Data( table.MacroPlan().DLEngineLogisticsCostSearch() );
-      info( '------------------2----------------', isnull( dhSearch.Data() ) );
+      //dhSearch.Data( table.MacroPlan().DLEngineLogisticsCostSearch() );
+      //info( '------------------2----------------', isnull( dhSearch.Data() ) );
     *]
     GroupServerCalls: false
   }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonImport_OnClick\043130.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonImport_OnClick\043130.def"
new file mode 100644
index 0000000..7af570d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_ButtonImport_OnClick\043130.def"
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: PanelExport/ButtonImport_85
+Response OnClick () id:Response_PanelExport_670_ButtonImport_OnClick_130
+{
+  #keys: '[415136.0.1153802161]'
+  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();
+          
+          DLEngineLogisticsCostReport::Import( MacroPlan, RecycleBin, webFileBinaryData, fileName );
+          
+          WebMessageBox::Success( Translations::A_VWED_Success() );
+        }
+      } onerror {
+        WebMessageBox::Error( e.GeneralInformation() );
+      }
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_bRefresh_OnClick\04357.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_bRefresh_OnClick\04357.def"
new file mode 100644
index 0000000..13ea574
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelExport_bRefresh_OnClick\04357.def"
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelExport/bRefresh_427
+Response OnClick () id:Response_pHeader_bRefresh_OnClick_57
+{
+  #keys: '[415136.0.1153802324]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      DLEngineLogisticsCostReport::Initialize( MacroPlan );
+      
+      table := selectobject( MacroPlan, DLEngineLogisticsCostReport, table, table.IsShow() );
+      
+      DataHolderTable.Data( table );
+      
+      //dhSearch.Data( MacroPlan.DLEngineLogisticsCostSearch() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
index ea16450..78ada99 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().Generation() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
         dhSearch.Data().Generation( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
index e9f628d..4f7f73a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().MqbMlb() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
         dhSearch.Data().MqbMlb( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
index bb72128..5cf667b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().Power() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
         dhSearch.Data().Power( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
index 5e6807d..ac118fe 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormDLEngineLogisticsCostReport/_ROOT_Component_FormDLEngineLogisticsCostReport.def
@@ -22,6 +22,21 @@
       #keys: '[415136.0.992750376]'
       BaseType: 'WebDataHolder'
       Databinding: 'DLEngineLogisticsCostSearch'
+      Children:
+      [
+        Component deSearch
+        {
+          #keys: '[415136.0.1155813898]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'DLEngineLogisticsCostSearch'
+          ]
+        }
+      ]
       Properties:
       [
         Taborder: 1
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport\043570.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport\043570.def"
index 4969427..ec10521 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport\043570.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Component_PanelExport\043570.def"
@@ -25,6 +25,16 @@
         Taborder: 0
       ]
     }
+    Component bRefresh id:bRefresh_765
+    {
+      #keys: '[415136.0.1153803836]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'REFRESH'
+        Taborder: 2
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def
index 54cbda2..16152ac 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_OnCreated.def
@@ -10,14 +10,14 @@
     Body:
     [*
       //if( not isnull( MacroPlan.EnginePipelineSource() ) ){
-        EnginePipelineSource::Initialize( MacroPlan );
+      //  EnginePipelineSource::Initialize( MacroPlan );
       //}
       //info( '------------------1----------------' );
-      table := selectobject( MacroPlan, EnginePipelineSource.Report, table, table.IsShow() );
+      //table := selectobject( MacroPlan, EnginePipelineSource.Report, table, table.IsShow() );
       //info( '------------------2----------------', table.IsShow() );
-      DataHolderTable.Data( table );
+      //DataHolderTable.Data( table );
       
-      dhSearch.Data( table.Source().Search() );
+      //dhSearch.Data( table.Source().Search() );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_bRefresh_OnClick.def
new file mode 100644
index 0000000..cc8451d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelExport_570_bRefresh_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelExport_570/bRefresh_765
+Response OnClick () id:Response_PanelExport_bRefresh_OnClick
+{
+  #keys: '[415136.0.1153803835]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      EnginePipelineSource::Initialize( MacroPlan );
+      
+      table := selectobject( MacroPlan, EnginePipelineSource.Report, table, table.IsShow() );
+      
+      DataHolderTable.Data( table );
+      
+      dhSearch.Data( MacroPlan.EnginePipelineSearch() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def
index 17fbc7d..2ca50e9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorEnd_OnChanged.def
@@ -13,7 +13,7 @@
       if( this.Date() < DateSelectorStart.Date() ){
         this.HintError( 'The end date cannot be less than the start date!' );
       }else{
-        if( dhSearch.Data().EndDate() <> this.Date() ){
+        if( not isnull( dhSearch.Data() ) and dhSearch.Data().EndDate() <> this.Date() ){
           dhSearch.Data().EndDate( this.Date() );
       //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
         }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def
index 7251bc5..687e5fc 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelPeriod_325_DateSelectorStart_OnChanged.def
@@ -13,7 +13,7 @@
       if( this.Date() > DateSelectorEnd.Date() ){
         this.HintError( 'The start date cannot be later than the end date!' );
       }else{
-        if( dhSearch.Data().StartDate() <> this.Date() ){
+        if( not isnull( dhSearch.Data() ) and dhSearch.Data().StartDate() <> this.Date() ){
           dhSearch.Data().StartDate( this.Date() );
       //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
         }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
index ed13429..fad2259 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/Response_PanelTimeUnit_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //鍖洪棿鏀瑰彉鍚庡埛鏂版樉绀�
-      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().TimeUnit() <> this.BoundValue() ){
         dhSearch.Data().TimeUnit( this.BoundValue() );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
index bac49a1..fe4cca4 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormEnginePipelineReport/_ROOT_Component_FormEnginePipelineReport.def
@@ -22,6 +22,21 @@
       #keys: '[415136.0.884990864]'
       BaseType: 'WebDataHolder'
       Databinding: 'EnginePipelineSearch'
+      Children:
+      [
+        Component deSearch
+        {
+          #keys: '[415136.0.1155812008]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'EnginePipelineSearch'
+          ]
+        }
+      ]
       Properties:
       [
         Taborder: 1
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelExport.def
index 82e986e..d776a17 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelExport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Component_PanelExport.def
@@ -25,6 +25,16 @@
         Taborder: 0
       ]
     }
+    Component bRefresh id:bRefresh_859
+    {
+      #keys: '[415136.0.1153802738]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'REFRESH'
+        Taborder: 2
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
index d90dc62..03e00bf 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_OnCreated.def
@@ -11,14 +11,14 @@
     [*
       //鍒濆鍖�
       //if( not exists( MacroPlan, FinancialProductionSource, source, not source.IsImport() ) ){
-        FinancialProductionSource::Initialize( MacroPlan );
+      //  FinancialProductionSource::Initialize( MacroPlan );
       //}
       //info( '------------------1----------------' );
-      table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
+      //table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
       //info( '------------------2----------------', table.IsImport(), table.IsShow() );
-      DataHolderTable.Data( table );
+      //DataHolderTable.Data( table );
       
-      dhSearch.Data( table.FinancialProductionSource().FinancialProductionSearch() );
+      //dhSearch.Data( MacroPlan.FinancialProductionSearch() );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_bRefresh_OnClick.def
new file mode 100644
index 0000000..e06555c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelExport_bRefresh_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelExport/bRefresh_859
+Response OnClick () id:Response_PanelExport_670_bRefresh_OnClick
+{
+  #keys: '[415136.0.1153802737]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      FinancialProductionSource::Initialize( MacroPlan );
+      
+      table := selectobject( MacroPlan, FinancialProductionSource.FinancialProductionReport, table, not table.IsImport() and table.IsShow() );
+      
+      DataHolderTable.Data( table );
+      
+      //dhSearch.Data( MacroPlan.FinancialProductionSearch() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
index 786e62f..95ddf8e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().Generation() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
         dhSearch.Data().Generation( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
index a4b08cb..b2a6b92 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().MqbMlb() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
         dhSearch.Data().MqbMlb( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
index ac5059f..e00c8da 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().Power() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
         dhSearch.Data().Power( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
index 8e539cb..634002f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      if( dhSearch.Data().Unit() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Unit() <> selection ){
         dhSearch.Data().Unit( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
index 7e63fb7..01046c8 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialProductionReport/_ROOT_Component_FormFinancialProductionReport.def
@@ -24,6 +24,21 @@
       #keys: '[415136.0.849431513]'
       BaseType: 'WebDataHolder'
       Databinding: 'FinancialProductionSearch'
+      Children:
+      [
+        Component deSearch
+        {
+          #keys: '[415136.0.1153870614]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'FinancialProductionSearch'
+          ]
+        }
+      ]
       Properties:
       [
         Taborder: 1
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport\043545.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport\043545.def"
index 75f5b1b..9f9b106 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport\043545.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Component_PanelExport\043545.def"
@@ -25,6 +25,16 @@
         Taborder: 0
       ]
     }
+    Component bRefresh
+    {
+      #keys: '[415136.0.1153802934]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'REFRESH'
+        Taborder: 2
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def
index 68f009c..8afab20 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_OnCreated.def
@@ -10,14 +10,14 @@
     Body:
     [*
       //if( not exists( MacroPlan, FinancialSalesSource, source, not source.IsImport() ) ){
-        FinancialSalesSource::Initialize( MacroPlan );
+      //  FinancialSalesSource::Initialize( MacroPlan );
       //}
       //info( '------------------1----------------' );
-      table := selectobject( MacroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
+      //table := selectobject( MacroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
       //info( '------------------2----------------', table.IsImport(), table.IsShow() );
-      DataHolderTable.Data( table );
+      //DataHolderTable.Data( table );
       
-      dhSearch.Data( table.FinancialSalesSource().FinancialSalesSearch() );
+      //dhSearch.Data( MacroPlan.FinancialSalesSearch() );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_bRefresh_OnClick.def
new file mode 100644
index 0000000..76278ef
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelExport_545_bRefresh_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelExport_545/bRefresh
+Response OnClick () id:Response_PanelExport_bRefresh_OnClick
+{
+  #keys: '[415136.0.1153802933]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      FinancialSalesSource::Initialize( MacroPlan );
+      
+      table := selectobject( MacroPlan, FinancialSalesSource.FinancialSalesReport, table, not table.IsImport() and table.IsShow() );
+      
+      DataHolderTable.Data( table );
+      
+      //dhSearch.Data( MacroPlan.FinancialSalesSearch() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def
index 10fe370..bcd9b6c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelGeneration_844_ddslGeneration_OnSelectionChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //浠f暟鏀瑰彉鍚庡埛鏂版樉绀�
-      if( dhSearch.Data().Generation() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
         dhSearch.Data().Generation( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def
index 7c37c20..0376e4a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelMQBMLB_603_ddslMQBMLB_OnSelectionChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //妯旱鍒舵敼鍙樺悗鍒锋柊鏄剧ず
-      if( dhSearch.Data().MqbMlb() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
         dhSearch.Data().MqbMlb( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def
index c1d3e51..ef6b683 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelPower_858_ddslPower_OnSelectionChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //鍔熺巼鏀瑰彉鍚庡埛鏂版樉绀�
-      if( dhSearch.Data().Power() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
         dhSearch.Data().Power( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def
index 698e258..a236b1a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/Response_PanelUnit_715_ddslUnit_OnSelectionChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //Unit鏇存柊鍚庣敓鎴愭柊鐨勬樉绀�
-      if( dhSearch.Data().Unit() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Unit() <> selection ){
         dhSearch.Data().Unit( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
index a30e8a2..7261f0a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialSalesReport/_ROOT_Component_FormFinancialSalesReport.def
@@ -22,6 +22,21 @@
       #keys: '[415136.0.857870874]'
       BaseType: 'WebDataHolder'
       Databinding: 'FinancialSalesSearch'
+      Children:
+      [
+        Component deSearch
+        {
+          #keys: '[415136.0.1155080551]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'FinancialSalesSearch'
+          ]
+        }
+      ]
       Properties:
       [
         Taborder: 1
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def
index 8d20e9e..7b37425 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Component_PanelHeader.def
@@ -15,6 +15,16 @@
         Taborder: 0
       ]
     }
+    Component bRefresh id:bRefresh_561
+    {
+      #keys: '[415136.0.1153803361]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'REFRESH'
+        Taborder: 1
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def
index 3cf4d42..6238859 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_OnCreated.def
@@ -9,7 +9,7 @@
   {
     Body:
     [*
-      FinancialWeeklyReport::Initialize( MacroPlan );
+      //FinancialWeeklyReport::Initialize( MacroPlan );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_bRefresh_OnClick.def
new file mode 100644
index 0000000..4b2a298
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinancialWeeklyReport/Response_PanelHeader_bRefresh_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelHeader/bRefresh_561
+Response OnClick () id:Response_PanelExport_545_bRefresh_OnClick
+{
+  #keys: '[415136.0.1153803360]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      FinancialWeeklyReport::Initialize( MacroPlan );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
index 96e3d3b..b1ddee6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Component_PanelExport.def
@@ -25,6 +25,16 @@
         Taborder: 0
       ]
     }
+    Component bRefresh id:bRefresh_509
+    {
+      #keys: '[415136.0.1153803172]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'REFRESH'
+        Taborder: 2
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
index ca45d5d..7f67159 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_OnCreated.def
@@ -10,14 +10,14 @@
     Body:
     [*
       //if( not isnull( MacroPlan.InventorySummarySource() ) ){
-        InventorySummarySource::Initialize( MacroPlan, InterfaceDataset );
+      //  InventorySummarySource::Initialize( MacroPlan, InterfaceDataset );
       //}
       //info( '------------------1----------------' );
-      table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
+      //table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
       //info( '------------------2----------------', table.IsShow() );
-      DataHolderTable.Data( table );
+      //DataHolderTable.Data( table );
       
-      dhSearch.Data( table.InventorySummarySource().InventorySummarySearch() );
+      //dhSearch.Data( table.InventorySummarySource().InventorySummarySearch() );
     *]
     GroupServerCalls: false
   }
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def"
index 2a55339..1ad9aaf 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelCategory_RadioButtonGroupUseForPlanning_OnChanged\043847.def"
@@ -10,7 +10,7 @@
     Body:
     [*
       //鍖洪棿鏀瑰彉鍚庡埛鏂版樉绀�
-      if( dhSearch.Data().Category() <> this.BoundValue() ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Category() <> this.BoundValue() ){
         dhSearch.Data().Category( this.BoundValue() );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_bRefresh_OnClick.def
new file mode 100644
index 0000000..5820e45
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelExport_bRefresh_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelExport/bRefresh_509
+Response OnClick () id:Response_PanelExport_545_bRefresh_OnClick
+{
+  #keys: '[415136.0.1153803171]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      InventorySummarySource::Initialize( MacroPlan, InterfaceDataset );
+      
+      table := selectobject( MacroPlan, InventorySummarySource.InventorySummaryReport, table, table.IsShow() );
+      
+      DataHolderTable.Data( table );
+      
+      //dhSearch.Data( MacroPlan.InventorySummarySearch() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
index 843bc87..38224e9 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelGeneration_ddslGeneration_OnSelectionChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //浠f暟鏀瑰彉鍚庡埛鏂版樉绀�
-      if( dhSearch.Data().Generation() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Generation() <> selection ){
         dhSearch.Data().Generation( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
index b4bef55..0d5bc90 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelMQBMLB_ddslMQBMLB_OnSelectionChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //妯旱鍒舵敼鍙樺悗鍒锋柊鏄剧ず
-      if( dhSearch.Data().MqbMlb() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().MqbMlb() <> selection ){
         dhSearch.Data().MqbMlb( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
index b4945f2..c89a71e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -13,7 +13,7 @@
       if( this.Date() < DateSelectorStart.Date() ){
         this.HintError( 'The end date cannot be less than the start date!' );
       }else{
-        if( dhSearch.Data().EndDate() <> this.Date() ){
+        if( not isnull( dhSearch.Data() ) and dhSearch.Data().EndDate() <> this.Date() ){
           dhSearch.Data().EndDate( this.Date() );
       //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
         }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
index 3a8371e..88da857 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -13,7 +13,7 @@
       if( this.Date() > DateSelectorEnd.Date() ){
         this.HintError( 'The start date cannot be later than the end date!' );
       }else{
-        if( dhSearch.Data().StartDate() <> this.Date() ){
+        if( not isnull( dhSearch.Data() ) and dhSearch.Data().StartDate() <> this.Date() ){
           dhSearch.Data().StartDate( this.Date() );
       //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
         }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
index f6b440e..d08a74b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelPower_ddslPower_OnSelectionChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //鍔熺巼鏀瑰彉鍚庡埛鏂版樉绀�
-      if( dhSearch.Data().Power() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Power() <> selection ){
         dhSearch.Data().Power( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
index 976128d..f5eb323 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/Response_PanelUnit_ddslUnit_OnSelectionChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //Unit鏇存柊鍚庣敓鎴愭柊鐨勬樉绀�
-      if( dhSearch.Data().Unit() <> selection ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().Unit() <> selection ){
         dhSearch.Data().Unit( selection );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
index 0f7034e..beeeae0 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInventorySummaryReport/_ROOT_Component_FormInventorySummaryReport.def
@@ -22,6 +22,21 @@
       #keys: '[415136.0.864612034]'
       BaseType: 'WebDataHolder'
       Databinding: 'InventorySummarySearch'
+      Children:
+      [
+        Component deSearch
+        {
+          #keys: '[415136.0.1153810823]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'InventorySummarySearch'
+          ]
+        }
+      ]
       Properties:
       [
         Taborder: 1
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def
index cb6cfb8..7c71f89 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Component_PanelExport.def
@@ -25,6 +25,16 @@
         Taborder: 0
       ]
     }
+    Component bRefresh
+    {
+      #keys: '[415136.0.1153803668]'
+      BaseType: 'WebButton'
+      Properties:
+      [
+        Image: 'REFRESH'
+        Taborder: 2
+      ]
+    }
   ]
   Properties:
   [
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def
index c07555d..90189c0 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_OnCreated.def
@@ -10,14 +10,14 @@
     Body:
     [*
       //if( not isnull( MacroPlan.EnginePipelineSource() ) ){
-        MachiningPipelineSource::Initialize( MacroPlan );
+      //  MachiningPipelineSource::Initialize( MacroPlan );
       //}
       //info( '------------------1----------------' );
-      table := selectobject( MacroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
+      //table := selectobject( MacroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
       //info( '------------------2----------------', table.IsShow() );
-      DataHolderTable.Data( table );
+      //DataHolderTable.Data( table );
       
-      dhSearch.Data( table.Source().Search() );
+      //dhSearch.Data( table.Source().Search() );
     *]
     GroupServerCalls: false
   }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_bRefresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_bRefresh_OnClick.def
new file mode 100644
index 0000000..b4bca44
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelExport_bRefresh_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelExport/bRefresh
+Response OnClick () id:Response_PanelHeader_bRefresh_OnClick
+{
+  #keys: '[415136.0.1153803667]'
+  CanBindMultiple: false
+  DefinitionID: 'Responsedef_WebButton_OnClick'
+  Precondition:
+  [*
+    return not isnull( MacroPlan );
+  *]
+  QuillAction
+  {
+    Body:
+    [*
+      MachiningPipelineSource::Initialize( MacroPlan );
+      
+      table := selectobject( MacroPlan, MachiningPipelineSource.Report, table, table.IsShow() );
+      
+      DataHolderTable.Data( table );
+      
+      dhSearch.Data( MacroPlan.MachiningPipelineSearch() );
+    *]
+    GroupServerCalls: false
+  }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
index 921b890..9e717c5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorEnd_OnChanged.def
@@ -13,7 +13,7 @@
       if( this.Date() < DateSelectorStart.Date() ){
         this.HintError( 'The end date cannot be less than the start date!' );
       }else{
-        if( dhSearch.Data().EndDate() <> this.Date() ){
+        if( not isnull( dhSearch.Data() ) and dhSearch.Data().EndDate() <> this.Date() ){
           dhSearch.Data().EndDate( this.Date() );
       //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
         }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
index c8a387b..7d4791b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelPeriod_DateSelectorStart_OnChanged.def
@@ -13,7 +13,7 @@
       if( this.Date() > DateSelectorEnd.Date() ){
         this.HintError( 'The start date cannot be later than the end date!' );
       }else{
-        if( dhSearch.Data().StartDate() <> this.Date() ){
+        if( not isnull( dhSearch.Data() ) and dhSearch.Data().StartDate() <> this.Date() ){
           dhSearch.Data().StartDate( this.Date() );
       //    DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
         }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def
index ff83249..c8e105c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/Response_PanelTimeUnit_778_RadioButtonGroupUseForTimeUnit_OnChanged.def
@@ -10,7 +10,7 @@
     Body:
     [*
       //鍖洪棿鏀瑰彉鍚庡埛鏂版樉绀�
-      if( dhSearch.Data().TimeUnit() <> this.BoundValue() ){
+      if( not isnull( dhSearch.Data() ) and dhSearch.Data().TimeUnit() <> this.BoundValue() ){
         dhSearch.Data().TimeUnit( this.BoundValue() );
       //  DataHolderTable.Data().Generate( dhSearch.Data(), DataHolderProduct.Data() );
       }
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
index 7d54e40..ed78738 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachiningPipelineReport/_ROOT_Component_FormMachiningPipelineReport.def
@@ -22,6 +22,21 @@
       #keys: '[415136.0.893820823]'
       BaseType: 'WebDataHolder'
       Databinding: 'MachiningPipelineSearch'
+      Children:
+      [
+        Component deSearch
+        {
+          #keys: '[415136.0.1155813174]'
+          BaseType: 'WebDataExtractor'
+          Properties:
+          [
+            DataType: 'MacroPlan'
+            Source: 'MacroPlan'
+            Taborder: 0
+            Transformation: 'MachiningPipelineSearch'
+          ]
+        }
+      ]
       Properties:
       [
         Taborder: 1
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def
index 7db9d74..241584d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormTransferPlan/Component_MatrixEditor872.def
@@ -45,6 +45,8 @@
           Properties:
           [
             DataType: 'MacroPlan'
+            FilterArguments: 'products:QLibMacroPlannerWebUI::ApplicationMacroPlanner.DataHolderCheckedProduct'
+            FixedFilter: 'object.Filter( products )'
             Source: 'MacroPlan'
             Taborder: 0
             Transformation: 'TransferPlanRow'
diff --git a/_Main/UI/MacroPlannerWebApp/Views/LogisticsCostParameterSetting.vw b/_Main/UI/MacroPlannerWebApp/Views/LogisticsCostParameterSetting.vw
index 56808e3..1eb51aa 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/LogisticsCostParameterSetting.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/LogisticsCostParameterSetting.vw
@@ -74,7 +74,7 @@
             {
               columnId: 'PackagingCapacity'
               dataPath: 'PackagingCapacity'
-              dataType: 'number'
+              dataType: 'real'
               index: 5
               subtotals: ''
               width: 86
@@ -83,7 +83,7 @@
             {
               columnId: 'WarehousingPrice'
               dataPath: 'WarehousingPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 6
               subtotals: ''
               width: 126
@@ -92,7 +92,7 @@
             {
               columnId: 'OutboundPrice'
               dataPath: 'OutboundPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 7
               subtotals: ''
               width: 126
@@ -101,7 +101,7 @@
             {
               columnId: 'StoragePrice'
               dataPath: 'StoragePrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 8
               subtotals: ''
               width: 124
@@ -110,7 +110,7 @@
             {
               columnId: 'OtherPrice'
               dataPath: 'OtherPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 9
               subtotals: ''
               width: 127
@@ -188,7 +188,7 @@
             {
               columnId: 'LoadingCapacity'
               dataPath: 'LoadingCapacity'
-              dataType: 'number'
+              dataType: 'real'
               index: 5
               subtotals: ''
               width: 109
@@ -197,7 +197,7 @@
             {
               columnId: 'TransportPrice'
               dataPath: 'TransportPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 6
               subtotals: ''
               width: 150
@@ -257,7 +257,7 @@
             {
               columnId: 'WarehousingPrice'
               dataPath: 'WarehousingPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 3
               subtotals: ''
               width: 123
@@ -266,7 +266,7 @@
             {
               columnId: 'OutboundPrice'
               dataPath: 'OutboundPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 4
               subtotals: ''
               width: 124
@@ -275,7 +275,7 @@
             {
               columnId: 'StoragePrice'
               dataPath: 'StoragePrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 5
               subtotals: ''
               width: 126
@@ -284,7 +284,7 @@
             {
               columnId: 'CleanPrice'
               dataPath: 'CleanPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 6
               subtotals: ''
               width: 128
@@ -353,7 +353,7 @@
             {
               columnId: 'PackagingCapacity'
               dataPath: 'PackagingCapacity'
-              dataType: 'number'
+              dataType: 'real'
               index: 4
               subtotals: ''
               width: 73
@@ -362,7 +362,7 @@
             {
               columnId: 'WarehousingPrice'
               dataPath: 'WarehousingPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 5
               subtotals: ''
               width: 126
@@ -371,7 +371,7 @@
             {
               columnId: 'OutboundPrice'
               dataPath: 'OutboundPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 6
               subtotals: ''
               width: 130
@@ -380,7 +380,7 @@
             {
               columnId: 'PackagePrice'
               dataPath: 'PackagePrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 7
               subtotals: ''
               width: 131
@@ -389,7 +389,7 @@
             {
               columnId: 'UnpackingPrice'
               dataPath: 'UnpackingPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 8
               subtotals: ''
               width: 133
@@ -398,7 +398,7 @@
             {
               columnId: 'BufferPaperPrice'
               dataPath: 'BufferPaperPrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 9
               subtotals: ''
               width: 135
@@ -407,7 +407,7 @@
             {
               columnId: 'StoragePrice'
               dataPath: 'StoragePrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 10
               subtotals: ''
               width: 126
@@ -416,7 +416,7 @@
             {
               columnId: 'WoodenCratePrice'
               dataPath: 'WoodenCratePrice'
-              dataType: 'number'
+              dataType: 'real'
               index: 11
               subtotals: ''
               width: 79
diff --git a/_var/_Main/Data/MP_ChangeoverLossSetting.xlsx b/_var/_Main/Data/MP_ChangeoverLossSetting.xlsx
index 15643e7..5d08cce 100644
--- a/_var/_Main/Data/MP_ChangeoverLossSetting.xlsx
+++ b/_var/_Main/Data/MP_ChangeoverLossSetting.xlsx
Binary files differ

--
Gitblit v1.9.3