From 4a3d9ec9b4d11f096fc24cfeee40246492dc08fd Mon Sep 17 00:00:00 2001
From: Administrator <renhui.hao@capgemini.com>
Date: 星期一, 25 九月 2023 22:43:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'refs/remotes/origin/dev'
---
_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl | 5
_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl | 2
_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def | 96 -
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/_ROOT_Type_CapacityAllocationResultsRuleConfiguration.qbl | 10
_Main/BL/Type_ManufactureLTProcessSection/StaticMethod_CreateOrUpdate.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSalesDemands.def | 30
_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecastQty.qbl | 2
_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl | 2
_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuSelectAll_OnClic.def | 17
_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl | 16
_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl | 65
_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def | 4
_Main/BL/Type_UnitOfMeasure_MP/StaticMethod_DoSync.qbl | 9
_Main/BL/Type_MacroPlan/StaticMethod_DoSync#618.qbl | 5
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def | 11
_Main/BL/Type_CapacityAllocationResults/Attribute_ProductID.qbl | 7
_Main/BL/Type_Operation/Method_GetHasValidOperationInputOutput.qbl | 38
_Main/UI/MacroPlannerWebApp/Views/Test.vw | 177 ++
_Main/BL/Type_MappingSaleBudge/StaticMethod_ExportFields.qbl | 64 +
_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def | 6
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportDetail_OnClick.def | 23
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuDelete_OnClick.def | 18
LibMacroPlanner/BL/Type_Process_MP/StaticMethod_GetDependentDemandEnd#969.qbl | 12
_Main/BL/Type_CustomerOrder/StaticMethod_DoSync.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgTest_btnTest_OnClick.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listContextMenuCapacityAllocationResults.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_ListCapacityAllocationResults.def | 14
_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_ListCapacityAllocationResultsRuleConfiguration.def | 59
_Main/BL/Type_Operation/Method_OnCommitCustom.qbl | 4
_Main/BL/Type_MacroPlan/Method_MappingSalesSegmentData.qbl | 9
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Export.qbl | 14
_Main/BL/Type_CapacityAllocationResults/Attribute_Description.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_ButtonGenerateCapacityAllocationR#39.def | 16
_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoSync.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCreate_OnClick#715.def | 19
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/_ROOT_Component_FormCapacityAllocationResultsRuleConfiguration.def | 43
_Main/BL/Relations/Relation_H_CustomOrder_MacroPlan_MacroPlan_H_CustomOrder.qbl | 23
_Main/BL/Type_H_OrderForecastRealQty/Attribute_VCode.qbl | 8
_Main/BL/Type_MacroPlan/Method_MappingUnitOfMeasureData.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgTest.def | 25
_Main/BL/Type_CapacityAllocationResults/Attribute_ID.qbl | 7
_Main/BL/Type_MappingSaleBudge/StaticMethod_ExpectedHeaders.qbl | 64 +
_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def | 1
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSDIP.def | 15
_Main/BL/Type_Forecast/StaticMethod_DoSync.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Export_OnClick.def | 16
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl | 7
_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Method_New.def | 14
_Main/BL/Type_MacroPlan/Method_MappingBaseConversionFactorData.qbl | 8
_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def | 23
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_StockingPointID.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/_ROOT_Component_DialogCreateEditCapacityAllocationResultsRuleConfiguration.def | 32
_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl | 21
_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl | 14
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def | 2
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick#222.def | 30
_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl | 13
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Import.qbl | 14
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def | 37
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnCancel_OnClick.def | 15
_Main/BL/Type_CapacityAllocationResults/DeclarativeReferenceRelation_CalcCapacityAllocationResultsRuleConfiguration.qbl | 15
_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl | 12
_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_CapacityAllocationResult.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuNew_OnClick.def | 19
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl | 8
_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl | 6
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderHedging.qbl | 321 ++--
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_Division.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def | 44
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart#95.qbl | 100
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/_ROOT_Component_FormCapacityAllocationResults.def | 12
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_Export_OnClick.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def | 14
_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl | 15
_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl | 11
_Main/BL/EDI/Broker_GlobalOTDTable_CAR_Export.qbl | 65 +
_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/_ROOT_Component_Frm_TEST.def | 2
_Main/BL/Type_Global_MappingOperation/StaticMethod_FindMinSeq.qbl | 17
_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgeExport.qbl | 143 ++
_Main/BL/Type_MappingSaleBudge/StaticMethod_Export.qbl | 73 +
_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomCode.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/_ROOT_Component_FormCustomerOrders226.def | 18
_Main/BL/Type_H_OrderForecastRealQty/Attribute_StockingPointID.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSalesDemands.def | 12
_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpoint.qbl | 2
_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def | 2
_Main/BL/Type_CapacityAllocationResults/StaticMethod_Export.qbl | 13
_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl | 11
_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl | 5
_Main/BL/Type_CapacityAllocationResults/Attribute_ManufacturedDate.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnOk_OnClick.def | 34
_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_GlobalOTDTable_GlobalOTD.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def | 59
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/TypeIndex_CapacityAllocationResultsRuleConfigurationTypeIndex.qbl | 20
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelAllSalesDemands.def | 8
_Main/BL/Type_BaseConversionFactor/StaticMethod_DoSync.qbl | 9
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetProductInfo#1.qbl | 1
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def | 24
_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Export.qbl | 49
_Main/BL/Type_H_OrderForecastRealQty/Attribute_Department.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_PanelCapacityAllocationResults.def | 37
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_DataHolderSelectCapacityAllocationResultsRuleConfiguration_OnDataCh.def | 18
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl | 14
_Main/BL/Type_CapacityAllocationResults/Attribute_StockingPointID.qbl | 7
_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl | 2
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialCode.qbl | 9
_Main/BL/Type_MacroPlan/StaticMethod_DoSync.qbl | 5
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCopy_OnClick.def | 19
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/_ROOT_Component_FormCustomerOrders.def | 10
_Main/BL/Type_SalesSegment_MP/StaticMethod_DoSync.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_ButtonERP订单_OnClick.def | 4
_Main/BL/Type_CapacityAllocationResults/StaticMethod_ObtainTheFinalOutputProduct.qbl | 35
_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Test.vw | 42
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Method_Edit.def | 17
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick#880.def | 18
_Main/BL/Type_CapacityAllocationResults/Attribute_Date.qbl | 7
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastDataEx.qbl | 95
_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKUName.qbl | 8
_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting#576.qbl | 5
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderFresh_OnClick.def | 3
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSDIP.def | 20
_Main/BL/Type_ManufactureLTImputation/StaticMethod_Transfer.qbl | 42
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listActionBarPageCapacityAllocationResultsRuleConfiguration.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuEdit_OnClick.def | 20
_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_ModuleMaterialCode.qbl | 9
_Main/BL/Type_H_CustomOrder/_ROOT_Type_H_CustomOrder.qbl | 10
_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl | 86 -
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def | 1
_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listActionBarPageCapacityAllocationResults.def | 2
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Query_FOF_OnClick.def | 21
_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl | 94 +
_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl | 11
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def | 8
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlContent.def | 58
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelSalesDemands.def | 8
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelAllSalesDemands.def | 11
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def | 22
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef#1.def | 8
_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlActions.def | 40
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Import_OnClick.def | 29
_Main/BL/Type_MPSync/StaticMethod_TestData.qbl | 4
_Main/BL/Type_CapacityAllocationResults/Attribute_UserQuantity.qbl | 7
/dev/null | 25
_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Import.qbl | 49
_Main/BL/Type_CustomerOrder/Attribute_OrderTag.qbl | 8
_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl | 102
_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuEdit_OnClick.def | 21
158 files changed, 2,846 insertions(+), 813 deletions(-)
diff --git "a/LibMacroPlanner/BL/Type_Process_MP/StaticMethod_GetDependentDemandEnd\043969.qbl" "b/LibMacroPlanner/BL/Type_Process_MP/StaticMethod_GetDependentDemandEnd\043969.qbl"
index d91a09e..b5b095a 100644
--- "a/LibMacroPlanner/BL/Type_Process_MP/StaticMethod_GetDependentDemandEnd\043969.qbl"
+++ "b/LibMacroPlanner/BL/Type_Process_MP/StaticMethod_GetDependentDemandEnd\043969.qbl"
@@ -16,10 +16,14 @@
//get period of start
ddstartperiod := select( gp.MacroPlan(), PlanningPeriod, pp, pp.Start() <= start and pp.End() > start );
- // if not start from middle and leadtime < period task period duration, make sure dependent demand end before period start
- periodstart := ifexpr( not gp.IsOperationLeadTimeLogicFromMiddle() and period.Duration() < process.LeadTime(), period.Start(), DateTime::MaxDateTime() );
-
- value := minvalue( start + process.LeadTime(), start + ddstartperiod.Duration(), periodstart );
+ // Tianma fix 20230920
+ if( not isnull( ddstartperiod ) )
+ {
+ // if not start from middle and leadtime < period task period duration, make sure dependent demand end before period start
+ periodstart := ifexpr( not gp.IsOperationLeadTimeLogicFromMiddle() and period.Duration() < process.LeadTime(), period.Start(), DateTime::MaxDateTime() );
+
+ value := minvalue( start + process.LeadTime(), start + ddstartperiod.Duration(), periodstart );
+ }
}
return value;
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Export.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Export.qbl
new file mode 100644
index 0000000..d50d284
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Export.qbl
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_CARRC_Export
+{
+ MDSDefinition: GlobalOTDTable
+ TimeZone: 'ACT'
+ UseOSTimeZone: false
+ EDIModelLink.Source Source11
+ {
+ EDIMLTable CapacityAllocationResultsRuleConfiguration
+ {
+ PrimaryKeyColumns: ModuleMaterialCode
+ PrimaryKeyColumns: PanelMaterialCode
+ PrimaryKeyColumns: StockingPointID
+ TargetType: CapacityAllocationResultsRuleConfiguration
+ TypeIndex: CapacityAllocationResultsRuleConfigurationTypeIndex
+ EDIMLColumn Division { Attribute: Division ValueType: String }
+ EDIMLColumn ModuleMaterialCode { Attribute: ModuleMaterialCode ValueType: String }
+ EDIMLColumn PanelMaterialCode { Attribute: PanelMaterialCode ValueType: String }
+ EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+ }
+ }
+ EDITransformation.Transformation Transformation11
+ {
+ EDITableTransformation
+ {
+ InputTable: CapacityAllocationResultsRuleConfiguration
+ OutputTable: CapacityAllocationResultsRuleConfiguration
+ EDIColumnMatch { InputColumn: Division OutputColumn: Division }
+ EDIColumnMatch { InputColumn: ModuleMaterialCode OutputColumn: ModuleMaterialCode }
+ EDIColumnMatch { InputColumn: PanelMaterialCode OutputColumn: PanelMaterialCode }
+ EDIColumnMatch { InputColumn: StockingPointID OutputColumn: StockingPointID }
+ }
+ }
+ EDIXLSLink.Destination Destination12
+ {
+ FileName: 'Destination12'
+ EDIXLSLinkTable CapacityAllocationResultsRuleConfiguration
+ {
+ Columns:
+ [
+ EDIXLSLinkColumn Division { ValueType: String }
+ EDIXLSLinkColumn ModuleMaterialCode { ValueType: String }
+ EDIXLSLinkColumn PanelMaterialCode { ValueType: String }
+ EDIXLSLinkColumn StockingPointID { ValueType: String }
+ ]
+ }
+ }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Import.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Import.qbl
new file mode 100644
index 0000000..e539ed2
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_CARRC_Import.qbl
@@ -0,0 +1,49 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_CARRC_Import
+{
+ MDSDefinition: GlobalOTDTable
+ TimeZone: 'ACT'
+ UseOSTimeZone: false
+ EDIModelLink.Destination Destination13
+ {
+ EDIMLTable CapacityAllocationResultsRuleConfiguration
+ {
+ PrimaryKeyColumns: ModuleMaterialCode
+ PrimaryKeyColumns: PanelMaterialCode
+ PrimaryKeyColumns: StockingPointID
+ TargetType: CapacityAllocationResultsRuleConfiguration
+ TypeIndex: CapacityAllocationResultsRuleConfigurationTypeIndex
+ EDIMLColumn Division { Attribute: Division ValueType: String }
+ EDIMLColumn ModuleMaterialCode { Attribute: ModuleMaterialCode ValueType: String }
+ EDIMLColumn PanelMaterialCode { Attribute: PanelMaterialCode ValueType: String }
+ EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+ }
+ }
+ EDITransformation.Transformation Transformation12
+ {
+ EDITableTransformation
+ {
+ InputTable: CapacityAllocationResultsRuleCo
+ OutputTable: CapacityAllocationResultsRuleConfiguration
+ EDIColumnMatch { InputColumn: Division OutputColumn: Division }
+ EDIColumnMatch { InputColumn: ModuleMaterialCode OutputColumn: ModuleMaterialCode }
+ EDIColumnMatch { InputColumn: PanelMaterialCode OutputColumn: PanelMaterialCode }
+ EDIColumnMatch { InputColumn: StockingPointID OutputColumn: StockingPointID }
+ }
+ }
+ EDIXLSLink.Source Source12
+ {
+ FileName: '浜ц兘鍒嗛厤缁撴灉瑙勫垯.xlsx'
+ EDIXLSLinkTable CapacityAllocationResultsRuleCo
+ {
+ Columns:
+ [
+ EDIXLSLinkColumn Division { ValueType: String }
+ EDIXLSLinkColumn ModuleMaterialCode { ValueType: String }
+ EDIXLSLinkColumn PanelMaterialCode { ValueType: String }
+ EDIXLSLinkColumn StockingPointID { ValueType: String }
+ ]
+ }
+ }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_CAR_Export.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_CAR_Export.qbl
new file mode 100644
index 0000000..571fce9
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_CAR_Export.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_CAR_Export
+{
+ MDSDefinition: GlobalOTDTable
+ TimeZone: 'ACT'
+ UseOSTimeZone: false
+ EDIModelLink.Source Source13
+ {
+ EDIMLTable CapacityAllocationResults
+ {
+ TargetType: CapacityAllocationResults
+ EDIMLColumn Date { Attribute: Date ValueType: Date }
+ EDIMLColumn Description { Attribute: Description ValueType: String }
+ EDIMLColumn Division { Attribute: Division ValueType: String }
+ EDIMLColumn ID { Attribute: ID ValueType: String }
+ EDIMLColumn ManufacturedDate { Attribute: ManufacturedDate ValueType: Date }
+ EDIMLColumn ModuleBase { Attribute: ModuleBase ValueType: String }
+ EDIMLColumn ModuleMaterialCode { Attribute: ModuleMaterialCode ValueType: String }
+ EDIMLColumn ModuleMeasurementUnit { Attribute: ModuleMeasurementUnit ValueType: String }
+ EDIMLColumn NumberOfModules { Attribute: NumberOfModules ValueType: Real }
+ EDIMLColumn NumberOfPanels { Attribute: NumberOfPanels ValueType: Real }
+ EDIMLColumn PanelBase { Attribute: PanelBase ValueType: String }
+ EDIMLColumn PanelMaterialCode { Attribute: PanelMaterialCode ValueType: String }
+ EDIMLColumn PanelMeasurementUnit { Attribute: PanelMeasurementUnit ValueType: String }
+ EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+ EDIMLColumn RequirementDate { Attribute: RequirementDate ValueType: Date }
+ EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+ EDIMLColumn UserQuantity { Attribute: UserQuantity ValueType: Real }
+ EDIMLColumn VersionNumber { Attribute: VersionNumber ValueType: String }
+ }
+ }
+ EDITransformation.Transformation Transformation13
+ {
+ EDITableTransformation
+ {
+ InputTable: CapacityAllocationResults
+ OutputTable: CapacityAllocationResults
+ EDIColumnMatch { InputColumn: Date OutputColumn: Date }
+ EDIColumnMatch { InputColumn: Description OutputColumn: Description }
+ EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+ EDIColumnMatch { InputColumn: ManufacturedDate OutputColumn: ManufacturedDate }
+ EDIColumnMatch { InputColumn: ProductID OutputColumn: ProductID }
+ EDIColumnMatch { InputColumn: StockingPointID OutputColumn: StockingPointID }
+ EDIColumnMatch { InputColumn: UserQuantity OutputColumn: UserQuantity }
+ }
+ }
+ EDIXLSLink.Destination Destination14
+ {
+ FileName: 'Destination14'
+ EDIXLSLinkTable CapacityAllocationResults
+ {
+ Columns:
+ [
+ EDIXLSLinkColumn Date { ValueType: Date }
+ EDIXLSLinkColumn Description { ValueType: String }
+ EDIXLSLinkColumn ID { ValueType: String }
+ EDIXLSLinkColumn ProductID { ValueType: String }
+ EDIXLSLinkColumn StockingPointID { ValueType: String }
+ EDIXLSLinkColumn UserQuantity { ValueType: Real }
+ EDIXLSLinkColumn ManufacturedDate { ValueType: Date }
+ ]
+ }
+ }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_CapacityAllocationResult.qbl b/_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_CapacityAllocationResult.qbl
new file mode 100644
index 0000000..744cd1a
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_CapacityAllocationResult.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAllocationResultsRuleConfiguration_CapacityAllocationResults_CapacityAllocationResults_CapacityAllocationResultsRuleConfiguration
+{
+ #keys: '1[414702.0.387791788]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide CapacityAllocationResults
+ {
+ #keys: '3[414702.0.387791790][414702.0.387791789][414702.0.387791791]'
+ Cardinality: '1toN'
+ ObjectDefinition: CapacityAllocationResultsRuleConfiguration
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide CapacityAllocationResultsRuleConfiguration
+ {
+ #keys: '3[414702.0.387791793][414702.0.387791792][414702.0.387791794]'
+ Cardinality: '0to1'
+ ObjectDefinition: CapacityAllocationResults
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_GlobalOTDTable_GlobalOTD.qbl b/_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_GlobalOTDTable_GlobalOTD.qbl
new file mode 100644
index 0000000..40be5f9
--- /dev/null
+++ b/_Main/BL/Relations/Relation_CapacityAllocationResultsRuleConfiguration_GlobalOTDTable_GlobalOTD.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation CapacityAllocationResultsRuleConfiguration_GlobalOTDTable_GlobalOTDTable_CapacityAllocationResultsRuleConfiguration
+{
+ #keys: '1[414702.0.374991408]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide GlobalOTDTable
+ {
+ #keys: '3[414702.0.374991410][414702.0.374991409][414702.0.374991411]'
+ Cardinality: '0to1'
+ ObjectDefinition: CapacityAllocationResultsRuleConfiguration
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide CapacityAllocationResultsRuleConfiguration
+ {
+ #keys: '3[414702.0.374991413][414702.0.374991412][414702.0.374991414]'
+ Cardinality: '1toN'
+ ObjectDefinition: GlobalOTDTable
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_H_CustomOrder_MacroPlan_MacroPlan_H_CustomOrder.qbl b/_Main/BL/Relations/Relation_H_CustomOrder_MacroPlan_MacroPlan_H_CustomOrder.qbl
new file mode 100644
index 0000000..6a5b131
--- /dev/null
+++ b/_Main/BL/Relations/Relation_H_CustomOrder_MacroPlan_MacroPlan_H_CustomOrder.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation H_CustomOrder_MacroPlan_MacroPlan_H_CustomOrder
+{
+ #keys: '1[414724.0.177854649]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[414724.0.177854651][414724.0.177854650][414724.0.177854652]'
+ Cardinality: '0to1'
+ ObjectDefinition: H_CustomOrder
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide H_CustomOrder
+ {
+ #keys: '3[414724.0.177854654][414724.0.177854653][414724.0.177854655]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl
index 4ecdf63..cd44e09 100644
--- a/_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl
@@ -19,19 +19,22 @@
result := null(ConversionFactor );
if( isnull( source ) or isnull( target ) ) {
- error( "can't find source or target unit of measure" )
+ info( "can't find source or target unit of measure" )
}
- if( productId <> "" ) {
+
+ if( not isnull( source) and not isnull( target)){
+ if( productId <> "" ) {
product := Product_MP::FindById( macroPlan, productId );
- }else{
- result := BaseConversionFactor::CreateUpdate( source, target, factor, product, isEnable )
+ }else{
+ result := BaseConversionFactor::CreateUpdate( source, target, factor, product, isEnable )
}
- if( isnull( product ) ) {
- info( "invalid product id" )
+ if( isnull( product ) ) {
+ info( "鍗曚綅杞崲鍑虹幇鏃犳晥id锛�"+productId )
}else{
result := BaseConversionFactor::CreateUpdate( source, target, factor, product, isEnable );
}
+ }
return result;
*]
diff --git a/_Main/BL/Type_BaseConversionFactor/StaticMethod_DoSync.qbl b/_Main/BL/Type_BaseConversionFactor/StaticMethod_DoSync.qbl
index 0ee5894..915e3c2 100644
--- a/_Main/BL/Type_BaseConversionFactor/StaticMethod_DoSync.qbl
+++ b/_Main/BL/Type_BaseConversionFactor/StaticMethod_DoSync.qbl
@@ -1,16 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod DoSync (
- MacroPlan macroPlan
+ MacroPlan macroPlan,
+ GlobalOTDTable globalOTDTable
)
{
Description: '鍗曟鍚屾'
TextBody:
[*
// yypsybs Aug-17-2023 (created)
- info( "Product Finished, Start BaseConversionFactor Data Broker" )
- macroPlan.Broker_OTD_BaseConversionFactor().Execute();
+ //info( "Product Finished, Start BaseConversionFactor Data Broker" )
+ //macroPlan.Broker_OTD_BaseConversionFactor().Execute();
info( "BaseConversionFactor Data Broker Finished, Start BaseConversionFactor Mapping" )
- macroPlan.MappingBaseConversionFactorData();
+ macroPlan.MappingBaseConversionFactorData(globalOTDTable);
*]
}
diff --git a/_Main/BL/Type_CapacityAllocationResults/Attribute_Date.qbl b/_Main/BL/Type_CapacityAllocationResults/Attribute_Date.qbl
new file mode 100644
index 0000000..a158e2b
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/Attribute_Date.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Date
+{
+ #keys: '3[414702.0.388471426][414702.0.388471425][414702.0.388471427]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/Attribute_Description.qbl b/_Main/BL/Type_CapacityAllocationResults/Attribute_Description.qbl
new file mode 100644
index 0000000..4d7f093
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/Attribute_Description.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Description
+{
+ #keys: '3[414702.0.388471436][414702.0.388471435][414702.0.388471437]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/Attribute_ID.qbl b/_Main/BL/Type_CapacityAllocationResults/Attribute_ID.qbl
new file mode 100644
index 0000000..3a52d76
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/Attribute_ID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[414702.0.388471446][414702.0.388471445][414702.0.388471447]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/Attribute_ManufacturedDate.qbl b/_Main/BL/Type_CapacityAllocationResults/Attribute_ManufacturedDate.qbl
new file mode 100644
index 0000000..15ee01f
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/Attribute_ManufacturedDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ManufacturedDate
+{
+ #keys: '3[414702.0.388471486][414702.0.388471485][414702.0.388471487]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/Attribute_ProductID.qbl b/_Main/BL/Type_CapacityAllocationResults/Attribute_ProductID.qbl
new file mode 100644
index 0000000..ca7c6e4
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/Attribute_ProductID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+ #keys: '3[414702.0.388471456][414702.0.388471455][414702.0.388471457]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/Attribute_StockingPointID.qbl b/_Main/BL/Type_CapacityAllocationResults/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..2a28f0d
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/Attribute_StockingPointID.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+ #keys: '3[414702.0.388471466][414702.0.388471465][414702.0.388471467]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/Attribute_UserQuantity.qbl b/_Main/BL/Type_CapacityAllocationResults/Attribute_UserQuantity.qbl
new file mode 100644
index 0000000..9c3d31c
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/Attribute_UserQuantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute UserQuantity
+{
+ #keys: '3[414702.0.388471476][414702.0.388471475][414702.0.388471477]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/DeclarativeReferenceRelation_CalcCapacityAllocationResultsRuleConfiguration.qbl b/_Main/BL/Type_CapacityAllocationResults/DeclarativeReferenceRelation_CalcCapacityAllocationResultsRuleConfiguration.qbl
new file mode 100644
index 0000000..59c9af0
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/DeclarativeReferenceRelation_CalcCapacityAllocationResultsRuleConfiguration.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+DeclarativeReferenceRelation CalcCapacityAllocationResultsRuleConfiguration
+{
+ #keys: '1[414702.0.388304510]'
+ Expression:
+ [*
+ targetCapacityAllocationResultsRuleConfiguration := select( this.GlobalOTDTable(), CapacityAllocationResultsRuleConfiguration, tempCARRC,
+ tempCARRC.ModuleMaterialCode() = this.ModuleMaterialCode() and
+ tempCARRC.PanelMaterialCode() = this.PanelMaterialCode() );
+
+ return targetCapacityAllocationResultsRuleConfiguration;
+ *]
+ Relation: CapacityAllocationResultsRuleConfiguration
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl
index ef9782f..119198c 100644
--- a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl
@@ -2,27 +2,32 @@
#parent: #root
StaticMethod CreateDate (
GlobalOTDTable globalOTDTable,
- MacroPlan macroPlan
+ MacroPlan macroPlan,
+ Scenario scenario
)
{
TextBody:
[*
globalOTDTable.CapacityAllocationResults( relflush );
- finaleProduct_MPs := CapacityAllocationResults::ObtainTheFinalOutputProduct( macroPlan );
+ finaleProductInStockingPoint_MPs := CapacityAllocationResults::ObtainTheFinalOutputProduct( macroPlan, globalOTDTable );
period_MPS := null( Period_MPs );
traverse ( macroPlan, PeriodSpecification_MP, psmp, psmp.ID() = "Planning periods" ) {
period_MPS := selectsortedset( psmp, PeriodSpecificationPeriod.Period_MP, pmp, not pmp.IsHistorical(), pmp.StartDate() );
}
- traverse ( finaleProduct_MPs, Elements, fpmp/*, fpmp.ID() = "ProXOver 1 D2.6 A"*/ ) {
- traverse ( fpmp, ProductInStockingPoint_MP, pisp, /*pisp.Name() = "ProXOver 1 D2.6 A in Finished Cars (France)" and*/ not pisp.IsSystem() ) {
- traverse ( period_MPS, Elements, pmp ) {
- CapacityAllocationResults::IterativeGeneration( globalOTDTable, pisp, 1, null( NewSupply ), -1.0, pmp.StartDate() );
- }
- // info( pisp.Name() );
+ traverse ( finaleProductInStockingPoint_MPs, Elements, fpispmp ) {
+ capacityAllocationResultsRuleConfigurations := selectset( globalOTDTable, CapacityAllocationResultsRuleConfiguration, tempCARRC, tempCARRC.ModuleMaterialCode() = fpispmp.ProductID() and tempCARRC.StockingPointID() = fpispmp.StockingPointID() );
+ info( "鐢熶骇鐨勪骇鍝侊細", fpispmp.ProductID(), "------浜у搧鍦ㄥ簱瀛樼偣-------锛�", fpispmp.StockingPointID() );
+ traverse ( period_MPS, Elements, pmp ) {
+ // CapacityAllocationResults::IterativeGeneration( globalOTDTable, pisp, 1, null( NewSupply ), -1.0, pmp.StartDate() ); 鑰佺増
+ CapacityAllocationResults::IterativeGeneration2( globalOTDTable, fpispmp, pmp.StartDate(), capacityAllocationResultsRuleConfigurations, 0, null( NewSupply ), 0.0 );
}
}
+
+ traverse ( globalOTDTable, CapacityAllocationResults, car ) {
+ car.VersionNumber( scenario.Name() );
+ }
*]
}
diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Export.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Export.qbl
new file mode 100644
index 0000000..14045dd
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_Export.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ GlobalOTDTable globalOTDTable
+) as BinaryValue
+{
+ TextBody:
+ [*
+ binaryData := globalOTDTable.GlobalOTDTable_CAR_Export().ExecuteToXLS( true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl
new file mode 100644
index 0000000..3f70ca5
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl
@@ -0,0 +1,94 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod IterativeGeneration2 (
+ GlobalOTDTable globalOTDTable,
+ ProductInStockingPoint_MP pisp,
+ Date targetDate,
+ CapacityAllocationResultsRuleConfigurations carrcs,
+ Number numberOfLayers,
+ NewSupply firstLevelSupply,
+ Real currentLayerDependentDemandQuantity
+)
+{
+ TextBody:
+ [*
+ numberOfLayers++;
+ info( "鐩爣鏃堕棿锛�", targetDate.Format( "Y-M2-D2" ) );
+ info( pisp.Name() );
+ traverse ( pisp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl, pispippl.Start().Date() = targetDate ) {
+ traverse ( pispippl, NewSupply, ns, ns.Quantity() > 0 ) {
+ if ( numberOfLayers = 1 ) {
+ firstLevelSupply := ns;
+ }
+
+ ontype( ns.PeriodTask_MP() ) {
+ PeriodTaskOperation as pto : {
+ info( "Operation鍛ㄦ湡浠诲姟..." );
+ traverse ( ns, PeriodTask_MP.astype( PeriodTaskOperation ).DependentDemand, dd ) {
+ currentLayerDependentDemandQuantity := currentLayerDependentDemandQuantity *
+ ns.ProcessOutput().astype( OperationOutput ).Quantity() *
+ dd.ProcessInput().astype( OperationInput ).Quantity();
+ info( "灞傛暟锛�", numberOfLayers, " 褰撳墠渚涘簲鐨刾isp锛�", ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), " 鎬讳緵搴斿�硷細", ns.Quantity(), " 闇�瑕佷緵搴斿�硷細", currentLayerDependentDemandQuantity,
+ " 褰撳墠闇�姹俻isp锛�", dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), " 闇�姹傚�硷細", currentLayerDependentDemandQuantity );
+ info( "-----------------------------------------------------------------------------------------------------------------" );
+ CapacityAllocationResults::IterativeGeneration2( globalOTDTable,
+ dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP(),
+ targetDate,
+ carrcs,
+ numberOfLayers,
+ firstLevelSupply,
+ currentLayerDependentDemandQuantity
+ );
+ }
+ carrc := select( carrcs, Elements, carrc, carrc.PanelMaterialCode() = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() );
+ if ( not isnull( carrc ) ) {
+ info( "鎵惧埌闈㈡澘鐗╂枡..." );
+ globalOTDTable.CapacityAllocationResults( relnew,
+ PanelBase := pto.Operation().UnitID(),
+ PanelMaterialCode := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
+ NumberOfPanels := currentLayerDependentDemandQuantity,
+ PanelMeasurementUnit := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().UnitOfMeasureName(),
+ ModuleMaterialCode := firstLevelSupply.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
+ NumberOfModules := firstLevelSupply.Quantity(),
+ ModuleMeasurementUnit := firstLevelSupply.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().UnitOfMeasureName(),
+ ModuleBase := guard( firstLevelSupply.PeriodTask_MP().astype( PeriodTaskOperation ).Operation().UnitID(), "杞﹂亾杩愯緭" ),
+ Division := carrc.Division(),
+ RequirementDate := ns.Start().Date(),
+ Date := ns.Start().Date(),
+ Description := "",
+ ID := OS::GenerateGUIDAsString(),
+ ProductID := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
+ StockingPointID := "",
+ UserQuantity := currentLayerDependentDemandQuantity,
+ ManufacturedDate := Date::MinDate()
+ );
+
+ }
+ info( "-----------------------------------------------------------------------------------------------------------------" );
+ }
+
+ PeriodTaskLaneLeg as ptll : {
+ targetDependentDemand := select( ptll, DependentDemand, dd, dd.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() );
+ currentLayerDependentDemandQuantity := ifexpr( numberOfLayers = 1, targetDependentDemand.Quantity(), currentLayerDependentDemandQuantity );
+ info( "灞傛暟锛�", numberOfLayers," 褰撳墠渚涘簲鐨刾isp锛�", ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), " 鎬讳緵搴斿�硷細", ns.Quantity(), " 闇�瑕佷緵搴斿�硷細", currentLayerDependentDemandQuantity,
+ " 褰撳墠闇�姹俻isp锛�", targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name(), " 闇�姹傚�硷細", currentLayerDependentDemandQuantity );
+ info( "LaneLeg鍛ㄦ湡浠诲姟..." );
+ info( "-----------------------------------------------------------------------------------------------------------------" );
+ CapacityAllocationResults::IterativeGeneration2( globalOTDTable,
+ targetDependentDemand.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP(),
+ targetDate,
+ carrcs,
+ numberOfLayers,
+ firstLevelSupply,
+ currentLayerDependentDemandQuantity
+ );
+ }
+ }
+
+ if ( numberOfLayers = 1 ) {
+ firstLevelSupply := null( NewSupply );
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_ObtainTheFinalOutputProduct.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_ObtainTheFinalOutputProduct.qbl
index 0db5a04..6501563 100644
--- a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_ObtainTheFinalOutputProduct.qbl
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_ObtainTheFinalOutputProduct.qbl
@@ -1,25 +1,30 @@
Quintiq file version 2.0
#parent: #root
StaticMethod ObtainTheFinalOutputProduct (
- MacroPlan macroPlan
-) as owning Product_MPs
+ MacroPlan macroPlan,
+ GlobalOTDTable globalOTDTable
+) as owning ProductInStockingPoint_MPs
{
TextBody:
[*
- finaleProducts := construct( Product_MPs );
+ //finaleProducts := construct( Product_MPs );
+ //
+ //traverse ( macroPlan, Product_MP, pmp, pmp.IsLeaf() ) {
+ // flag := true;
+ // traverse ( macroPlan, Routing.RoutingStep.Operation.OperationInput, oi, flag ) {
+ // if ( pmp = oi.ProductInStockingPoint_MP().Product_MP() ) {
+ // flag := false;
+ // }
+ // }
+ // if ( flag ) {
+ // finaleProducts.Add( pmp );
+ // }
+ //}
- traverse ( macroPlan, Product_MP, pmp, pmp.IsLeaf() ) {
- flag := true;
- traverse ( macroPlan, Routing.RoutingStep.Operation.OperationInput, oi, flag ) {
- if ( pmp = oi.ProductInStockingPoint_MP().Product_MP() ) {
- flag := false;
- }
- }
- if ( flag ) {
- finaleProducts.Add( pmp );
- }
- }
+ finaleProductInStockingPoint_MPs := selectset( macroPlan, Product_MP.ProductInStockingPoint_MP, tempPISPMP,
+ exists( globalOTDTable, CapacityAllocationResultsRuleConfiguration, tempCARRC, tempCARRC.ModuleMaterialCode() = tempPISPMP.ProductID() and tempCARRC.StockingPointID() = tempPISPMP.StockingPointID() )
+ );
- return &finaleProducts;
+ return &finaleProductInStockingPoint_MPs;
*]
}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_Division.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_Division.qbl
new file mode 100644
index 0000000..2b0b5c3
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_Division.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Division
+{
+ #keys: '3[414702.0.374991447][414702.0.374991446][414702.0.374991448]'
+ Description: '浜嬩笟閮�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_ModuleMaterialCode.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_ModuleMaterialCode.qbl
new file mode 100644
index 0000000..ca60799
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_ModuleMaterialCode.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ModuleMaterialCode
+{
+ #keys: '3[414702.0.374991437][414702.0.374991436][414702.0.374991438]'
+ Description: '妯$粍鐗╂枡缂栫爜'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialCode.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialCode.qbl
new file mode 100644
index 0000000..02037a2
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_PanelMaterialCode.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute PanelMaterialCode
+{
+ #keys: '3[414702.0.374991427][414702.0.374991426][414702.0.374991428]'
+ Description: '闈㈡澘鐗╂枡缂栫爜'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_StockingPointID.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..fb82a94
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/Attribute_StockingPointID.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+ #keys: '3[414702.0.375010145][414702.0.375010144][414702.0.375010146]'
+ Description: '妯$粍浜ф垚鍝佸簱瀛樼偣ID'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Export.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Export.qbl
new file mode 100644
index 0000000..4397413
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Export.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ GlobalOTDTable globalOTDTable
+) as BinaryValue
+{
+ TextBody:
+ [*
+ // hongjli Sep-25-2023 (created)
+ binaryValue := globalOTDTable.GlobalOTDTable_CARRC_Export().ExecuteToXLS( true ).AsBinaryValue();
+
+ return binaryValue;
+ *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Import.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Import.qbl
new file mode 100644
index 0000000..a4eddc6
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/StaticMethod_Import.qbl
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Import (
+ GlobalOTDTable globalOTDTable,
+ String base64String
+)
+{
+ TextBody:
+ [*
+ binaryData := BinaryData::FromBase64EncodedString( base64String );
+
+ globalOTDTable.GlobalOTDTable_CARRC_Import().ExecuteFromXLS( &binaryData, true );
+ *]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/TypeIndex_CapacityAllocationResultsRuleConfigurationTypeIndex.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/TypeIndex_CapacityAllocationResultsRuleConfigurationTypeIndex.qbl
new file mode 100644
index 0000000..ea74562
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/TypeIndex_CapacityAllocationResultsRuleConfigurationTypeIndex.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex CapacityAllocationResultsRuleConfigurationTypeIndex
+{
+ Attributes:
+ [
+ TypeIndexAttribute
+ {
+ ModelElement: ModuleMaterialCode
+ }
+ TypeIndexAttribute
+ {
+ ModelElement: PanelMaterialCode
+ }
+ TypeIndexAttribute
+ {
+ ModelElement: StockingPointID
+ }
+ ]
+}
diff --git a/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/_ROOT_Type_CapacityAllocationResultsRuleConfiguration.qbl b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/_ROOT_Type_CapacityAllocationResultsRuleConfiguration.qbl
new file mode 100644
index 0000000..7e012c9
--- /dev/null
+++ b/_Main/BL/Type_CapacityAllocationResultsRuleConfiguration/_ROOT_Type_CapacityAllocationResultsRuleConfiguration.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type CapacityAllocationResultsRuleConfiguration
+{
+ #keys: '5[414702.0.374991403][414702.0.374991401][0.0.0][414702.0.374991402][414702.0.374991404]'
+ BaseType: Object
+ Description: '浜ц兘鍒嗛厤缁撴灉锛岃鍒欓厤缃�'
+ StructuredName: 'CapacityAllocationResultsRuleConfigurations'
+}
diff --git a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
index 822bde4..7fa388c 100644
--- a/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
+++ b/_Main/BL/Type_CapacityAndSaleBudgeFilterYear/StaticMethod_Initial.qbl
@@ -10,7 +10,7 @@
// yypsybs Sep-15-2023 (created)
existList := selectuniquevalues( parent, CapacityAndSaleBudgeFilterYear, item, item.YearNo() );
nowYear := Date::Today().Year();
- for( i := nowYear - 10; i <= nowYear; i++ ) {
+ for( i := nowYear - 10; i <= nowYear + 5; i++ ) {
if( existList.Find( i ) = -1 ) {
parent.CapacityAndSaleBudgeFilterYear( relnew,
YearNo := i );
diff --git a/_Main/BL/Type_CustomerOrder/Attribute_OrderTag.qbl b/_Main/BL/Type_CustomerOrder/Attribute_OrderTag.qbl
new file mode 100644
index 0000000..4d3e7e6
--- /dev/null
+++ b/_Main/BL/Type_CustomerOrder/Attribute_OrderTag.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrderTag
+{
+ #keys: '3[414724.0.177854629][414724.0.177854628][414724.0.177854630]'
+ Description: '璁㈠崟鐘舵�侊紝鍐插噺鍚庤祴鍊硷紝绾娴�,鏈夐娴嬶紝鏃犻娴嬶紝鍙嶇锛屾巿鏉�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl
index 3ec5f41..e428bb7 100644
--- a/_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_CustomerOrder/StaticMethod_CreateOrUpdate.qbl
@@ -38,23 +38,23 @@
}
// 妫�鏌ヤ緷璧栭」
if( isnull( product) ) {
- info( "product not found" );
+ info( "product not found" + productId);
}
if( isnull( salesSegment) ) {
- info( "sales segment not found" );
+ info( "sales segment not found" + salesSegmentName);
}
if( isnull( stockingPoint) ) {
- info( "stock point not found" );
+ info( "stock point not found" + stockingPointId);
}
//if( isnull( currency) ) {
// error( "currency not found" );
//}
if( unitOfMeasureName <> "" and isnull( unitOfMeasure) ) {
- info( "unit of measure not found" );
+ info( "unit of measure not found" + unitOfMeasureName);
}
- if( priorityName <> "" and isnull( stockingPoint) ) {
- info( "priority not found" );
- }
+ //if( priorityName <> "" and isnull( stockingPoint) ) {
+ // info( "priority not found" );
+ //}
// 鏂板/鏇存柊
result := CustomerOrder::FindById( macroPlan, id );
if( isnull( result ) ) {
diff --git a/_Main/BL/Type_CustomerOrder/StaticMethod_DoSync.qbl b/_Main/BL/Type_CustomerOrder/StaticMethod_DoSync.qbl
index ece7264..170d328 100644
--- a/_Main/BL/Type_CustomerOrder/StaticMethod_DoSync.qbl
+++ b/_Main/BL/Type_CustomerOrder/StaticMethod_DoSync.qbl
@@ -2,15 +2,16 @@
#parent: #root
StaticMethod DoSync (
MacroPlan macroPlan,
- Strings businessTypes
+ Strings businessTypes,
+ GlobalOTDTable globalOTDTable
)
{
TextBody:
[*
// yypsybs Aug-17-2023 (created)
- info( "Forecast Finished, Start CustomerOrder Data Broker" );
- macroPlan.Broker_OTD_CustomerOrder().Execute();
+ //info( "Forecast Finished, Start CustomerOrder Data Broker" );
+ //macroPlan.Broker_OTD_CustomerOrder().Execute();
info( "CustomerOrder Data Broker Finished, Start CustomerOrder Mapping" );
- macroPlan.MappingCustomerOrderData( businessTypes );
+ macroPlan.MappingCustomerOrderData( businessTypes,globalOTDTable );
*]
}
diff --git a/_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl
index a5c8eb8..ac5c1bb 100644
--- a/_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_Forecast/StaticMethod_CreateOrUpdate.qbl
@@ -33,23 +33,23 @@
}
// 妫�鏌ヤ緷璧栭」
if( isnull( product ) ) {
- error( "product not found" );
+ info( "product not found" + productId);
}
if( isnull( salesSegment ) ) {
- error( "sales segment not found" );
+ info( "sales segment not found" + salesSegmentName);
}
if( isnull( stockingPoint ) ) {
- error( "stock point not found" );
+ info( "stock point not found" + stockingPointId);
}
if( isnull( currency ) ) {
- error( "currency not found" );
+ info( "currency not found" + currencyId);
}
if( unitOfMeasureName <> "" and isnull( unitOfMeasure) ) {
- error( "unit of measure not found" );
+ info( "unit of measure not found" + unitOfMeasureName );
}
- if( priorityName <> "" and isnull( stockingPoint) ) {
- error( "priority not found" );
- }
+ //if( priorityName <> "" and isnull( stockingPoint) ) {
+ // info( "priority not found" );
+ //}
// 鏂板/鏇存柊
result := Forecast::FindById( macroPlan, id );
if( isnull( result) ) {
diff --git a/_Main/BL/Type_Forecast/StaticMethod_DoSync.qbl b/_Main/BL/Type_Forecast/StaticMethod_DoSync.qbl
index 401e158..1fdba27 100644
--- a/_Main/BL/Type_Forecast/StaticMethod_DoSync.qbl
+++ b/_Main/BL/Type_Forecast/StaticMethod_DoSync.qbl
@@ -2,15 +2,16 @@
#parent: #root
StaticMethod DoSync (
MacroPlan macroPlan,
- Strings businessTypes
+ Strings businessTypes,
+ GlobalOTDTable globalOTDTable
)
{
TextBody:
[*
// yypsybs Aug-17-2023 (created)
- info( "OperationCost Finished, Start Forecast Data Broker" );
- macroPlan.Broker_OTD_Forecast().Execute();
+ //info( "OperationCost Finished, Start Forecast Data Broker" );
+ //macroPlan.Broker_OTD_Forecast().Execute();
info( "Forecast Data Broker Finished, Start Forecast Mapping" );
- macroPlan.MappingForecastData( businessTypes );
+ macroPlan.MappingForecastData( businessTypes,globalOTDTable );
*]
}
diff --git a/_Main/BL/Type_Global_MappingOperation/StaticMethod_FindMinSeq.qbl b/_Main/BL/Type_Global_MappingOperation/StaticMethod_FindMinSeq.qbl
new file mode 100644
index 0000000..0a72c14
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/StaticMethod_FindMinSeq.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod FindMinSeq (
+ GlobalOTDTable globalOTDTable,
+ String orgCode,
+ String productId,
+ String processSection
+) as Number
+{
+ TextBody:
+ [*
+ // renhao Sep-20-2023 (created)
+ return guard (min( globalOTDTable, Global_MappingOperation, item,
+ item.OrganCode() = orgCode and item.ProductID() = productId and item.ProcessSection() = processSection,
+ item.SequenceNumber() ), Number::MinNumber() );
+ *]
+}
diff --git a/_Main/BL/Type_H_CustomOrder/_ROOT_Type_H_CustomOrder.qbl b/_Main/BL/Type_H_CustomOrder/_ROOT_Type_H_CustomOrder.qbl
new file mode 100644
index 0000000..a8c4845
--- /dev/null
+++ b/_Main/BL/Type_H_CustomOrder/_ROOT_Type_H_CustomOrder.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type H_CustomOrder
+{
+ #keys: '5[414724.0.177854646][414724.0.177854644][0.0.0][414724.0.177854645][414724.0.177854647]'
+ BaseType: Object
+ Description: '閲嶅缓鍚庣殑璁㈠崟'
+ StructuredName: 'H_CustomOrders'
+}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl
deleted file mode 100644
index 7118da1..0000000
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_NewStaticMethod.qbl
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod NewStaticMethod () as owning JSON
-{
- TextBody:
- [*
- jResult := JSON::Object().Add( "A","123");
- return jResult.Build();
- *]
-}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetALlBOM.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetALlBOM.qbl
deleted file mode 100644
index 5ab9f90..0000000
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetALlBOM.qbl
+++ /dev/null
@@ -1,27 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod SM_GetALlBOM (
- MacroPlan Owner,
- MappingBOM Material
-) as Number
-{
- Description: '鏍规嵁SKU鑾峰彇鏈熸牴閮ㄦ墍鏈夋暟鎹�'
- TextBody:
- [*
- AllMaterials := selectset( Owner,MappingBOM,Obj,Obj.ComponentCode()=Material.ProductCode())
- if( AllMaterials.Size()>0)
- {
- traverse( AllMaterials,Elements,Obj,not isnull( Obj))
- {
- H_FunctionClass::SM_GetALlBOM( Owner,Obj);
- }
- }
- else
- {
- Owner.H_MaterialInfo(relnew,ID := H_FunctionClass::SM_GenerateID( "BM")
- ,MaterialName := Material.ComponentType() );
-
- }
- return 0;
- *]
-}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl
index 3edc063..2850793 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl
@@ -34,7 +34,7 @@
StockPoint := "";
NRate:=1.0;
NComponentsUsed :=0.0;
- ObjBOM := H_FunctionClass::SM_GetBOMBySKU( Owner,ParentSKU);
+ ObjBOM := H_FunctionClass::SM_GetBOMBySKU(Owner,ParentSKU);
if(not isnull( ObjBOM))
{
NRate := ObjBOM.ComponentOutputRate();
@@ -56,7 +56,7 @@
// 鐗╂枡绫诲瀷
MaterialType := Obj.ProductType();
// 寰楀埌鐗╂枡淇℃伅
- ObjProduct:= H_FunctionClass::SM_GetProductInfo(Owner, Obj.ProductCode());
+ ObjProduct:= H_FunctionClass::SM_GetProductInfo(Owner,Obj.ProductCode());
if( not isnull( ObjProduct))
{
MaterialType:= ObjProduct.ProductMajorType();
@@ -87,6 +87,10 @@
,ID := H_FunctionClass::SM_GenerateID( "MI"),MaterialType := "鍘熸潗鏂�",NeedDate := NDate
,NeedQty := [Number](ProductQty*0.8).Round( 0),Unit := "PCS"
,StockPoint :="娴嬭瘯",MaterialName := "娴嬭瘯鏁版嵁" );
+ Owner.H_MaterialInfo(relnew,ParentSKU := ParentSKU,SKU := "SKU_M"+ (nCount+1).AsQUILL() ,ForecastID := ForecastId,OrgCode := "ORG_000",VCode := VCode
+ ,ID := H_FunctionClass::SM_GenerateID( "MI"),MaterialType := "鍗婃垚鍝�",NeedDate := NDate
+ ,NeedQty := [Number](ProductQty*0.8).Round( 0),Unit := "PCS"
+ ,StockPoint :="娴嬭瘯",MaterialName := "娴嬭瘯鏁版嵁" );
}
bStatus := true;
strMsg :="";
diff --git "a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetProductInfo\0431.qbl" "b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetProductInfo\0431.qbl"
index 2b1ed8f..53f30eb 100644
--- "a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetProductInfo\0431.qbl"
+++ "b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetProductInfo\0431.qbl"
@@ -9,6 +9,7 @@
TextBody:
[*
// 鏍规嵁SKU鑾峰彇鐗╂枡淇℃伅
+ // 娉ㄦ剰锛氱墿鏂欑被鍨嬪彇 ParentID锛�
Obj := null( MappingProduct,constcontent );
if( not isnull( Owner) and SKU.Length()>0)
{
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl
index edf6c16..d69f3c1 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl
@@ -10,7 +10,7 @@
/**********************************鍒濆鍖栬鍗曢娴嬩俊鎭�***************************************
*娉細鏈‘瀹氫笂娓搁娴嬭鍗曟洿鏂伴�昏緫鍜屾暟鎹湁鏁堟�э紝杩欓噷杩涜浜屾澶勭悊锛屾柊鐢熸垚涓�涓垪琛紝閬垮厤涓婃父淇℃伅鍙樺姩涓ラ噸
* 褰卞搷鍔熻兘
- *
+ *---------------------璇ュ嚱鏁板凡浣滃簾----------------------
*****************************************************************************************/
// 鍒濆鍖栫粨鏋�
bStatus := false;
@@ -70,25 +70,25 @@
StockingPointID := Obj.StockingPointID(),
Department:=DepartMent);
// 鍐欏叆棰勬祴瀹炴椂淇℃伅
- ObjOrderRealQty := select( Owner,H_OrderForecastRealQty,ObjO,ObjO.CustomID()=CustomName and ObjO.SKU()=Obj.ProductID()
+ ObjOrderRealQty := select( Owner,H_OrderForecastRealQty,ObjO,ObjO.CustomCode()=CustomName and ObjO.SKU()=Obj.ProductID()
and ObjO.Month().StartOfMonth() = Obj.EndDate().StartOfMonth() )
if( isnull( ObjOrderRealQty))
{
- Owner.H_OrderForecastRealQty(relnew,CustomID := CustomName,CustomName := CustomName,ForecatsQty := [Number]Obj.Quantity().Round( 0)
+ Owner.H_OrderForecastRealQty(relnew,CustomCode := CustomName,CustomName := CustomName,ForecastQty := [Number]Obj.Quantity().Round( 0)
,ForecatsRealQty := [Number]Obj.Quantity().Round( 0),ID := H_FunctionClass::SM_GenerateID( "OR")
- ,Month := Obj.EndDate(),OrderCode := strOrderCode,SKU := Obj.ProductID(),Unit := Obj.UnitOfMeasureName());
+ ,Month := Obj.EndDate(),SKU := Obj.ProductID(),Unit := Obj.UnitOfMeasureName());
}
else
{
- if( [Number]Obj.Quantity().Round( 0)<> ObjOrderRealQty.ForecatsQty())
+ if( [Number]Obj.Quantity().Round( 0)<> ObjOrderRealQty.ForecastQty())
{
- RQty := [Number]Obj.Quantity().Round( 0) - ObjOrderRealQty.ForecatsQty();
+ RQty := [Number]Obj.Quantity().Round( 0) - ObjOrderRealQty.ForecastQty();
RQty := ObjOrderRealQty.ForecatsRealQty() + RQty;
if( RQty<0)
{
RQty :=0;
}
- ObjOrderRealQty.ForecatsQty([Number]Obj.Quantity().Round( 0));
+ ObjOrderRealQty.ForecastQty([Number]Obj.Quantity().Round( 0));
ObjOrderRealQty.ForecatsRealQty(RQty);
}
}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastDataEx.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastDataEx.qbl
index 524b723..b1801df 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastDataEx.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastDataEx.qbl
@@ -2,7 +2,8 @@
#parent: #root
StaticMethod SM_InitialForcastDataEx (
MacroPlan Owner,
- Boolean IsNew
+ Boolean IsNew,
+ String VersionCode
) as owning JSON
{
Description: '鍒濆鍖栬鍗曢娴嬩俊鎭�'
@@ -11,36 +12,43 @@
/**********************************鍒濆鍖栬鍗曢娴嬩俊鎭�***************************************
*娉細鏈‘瀹氫笂娓搁娴嬭鍗曟洿鏂伴�昏緫鍜屾暟鎹湁鏁堟�э紝杩欓噷杩涜浜屾澶勭悊锛屾柊鐢熸垚涓�涓垪琛紝閬垮厤涓婃父淇℃伅鍙樺姩涓ラ噸
* 褰卞搷鍔熻兘
- *
+ *鍙傛暟锛欼sNew 鏄惁鏃跺叏鏂版暟鎹紝鍏ㄦ柊鏁版嵁浼氬皢鏃х殑鏁版嵁娓呴櫎锛岀劧鍚庨噸鏂板~鍏咃紝涓嶆槸鍏ㄦ柊鏁版嵁锛屽皢绱鍜屾洿鏂�
*****************************************************************************************/
// 鍒濆鍖栫粨鏋�
bStatus := false;
strMsg :="";
try{
- // 娓呴櫎鏃ф暟鎹紝閲嶆柊鎷夊彇
- if(Owner.H_Forecast(relget ).Size()>0)
+ // 20230925 浼樺寲鐨勪笟鍔¢�昏緫,濡傛灉鏃舵柊鏁版嵁锛屽垯棰勬祴鏁版嵁鍏ㄩ儴骞叉帀锛岀劧鍚庨噸鏂扮敓鎴�
+ if( IsNew)
{
- traverse( Owner,H_Forecast,Obj,not isnull( Obj))
+ if( Owner.H_OrderForecastRealQty(relsize )>0)
{
- Owner.H_Forecast(reldelete, Obj);
+ traverse( Owner,H_OrderForecastRealQty,Obj,not isnull( Obj))
+ {
+ Owner.H_OrderForecastRealQty(reldelete, Obj);
+ }
}
}
// 鑾峰彇棰勬祴璁㈠崟锛氬綋鏈堝拰涔嬪悗鐨�3涓湀棰勬祴鏁版嵁 涓旈娴嬫暟閲�>0鐨�
- AllData:= selectset( Owner, Product_MP.SalesDemand.astype( Forecast ),object,object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth()
- and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()
+ AllData:= selectset( Owner, Product_MP.SalesDemand.astype( Forecast ),object,
+ object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth()
+ // 闇�姹傜粰鏈潵4涓湀鐨勬暟鎹紝浣嗗彲鑳藉苟涓嶅噯纭紝鏆傛椂娉ㄩ噴鎺夛紝鍥涗釜鏈堥檺鍒�
+ //and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()
and object.Quantity()>0 );
CustomName:="";
DepartMent:="";
idx:=0;
- strOrderCode:="";
RQty:=0;
ObjOrderRealQty:=null( H_OrderForecastRealQty,constcontent );
- // ObjPruduct :=null( MappingProduct,constcontent );
+
traverse( AllData,Elements,Obj,not isnull(Obj))
{
+ // 娌℃湁瀹㈡埛淇℃伅鍜岄儴闂ㄤ俊鎭紝SalesSegmentName=浜嬩笟閮�+鈥�-鈥�+瀹㈡埛鍚嶇О
+ CustomName := Obj.SalesSegmentName();
+ DepartMent := Obj.SalesSegmentName();
// 杩欓噷鐢ㄦ煡鎵惧悗鎴彇锛屽洜涓轰笉纭畾鏈夊嚑涓í绾匡紝浠ョ涓�涓负鍑�
idx:=Obj.SalesSegmentName().FindString( "-",0);
if(idx>0)
@@ -48,61 +56,32 @@
DepartMent:=Obj.SalesSegmentName().SubString( 0,idx);
CustomName := Obj.SalesSegmentName().SubString( idx+1, Obj.SalesSegmentName().Length() - (idx+1));
}
- else
- {
- CustomName :=Obj.SalesSegmentName();
- DepartMent := "閮ㄩ棬鏁版嵁鑾峰彇澶辫触锛�"
- }
- // // 浠庣墿鏂欒〃鑾峰彇鐗╂枡淇℃伅
- // ObjPruduct := H_FunctionClass::SM_GetProductInfo( Owner,Obj.ProductID());
- // if( not isnull( ObjPruduct))
- // {
- //
- // }
- // 鍐欏叆棰勬祴璁㈠崟淇℃伅琛�
- strOrderCode:=H_FunctionClass::SM_GenerateID( "OF");
- Owner.H_Forecast(relnew,OrderCode := strOrderCode,
- SKU := Obj.ProductID(),
- CustomCode := CustomName,
- CustomName := CustomName,
- Util:=Obj.UnitOfMeasureName(),
- NeedTime:=Obj.EndDate(),
- ForecastQty:=[Number]Obj.Quantity().Round( 0),
- StockingPointID := Obj.StockingPointID(),
- Department:=DepartMent);
- // 鍐欏叆棰勬祴瀹炴椂淇℃伅
- ObjOrderRealQty := select( Owner,H_OrderForecastRealQty,ObjO,ObjO.CustomID()=CustomName and ObjO.SKU()=Obj.ProductID()
+ // 鏇存柊棰勬祴淇℃伅锛岄潪鏂版暟鎹洿鏂颁俊鎭��
+ ObjOrderRealQty := select( Owner,H_OrderForecastRealQty,ObjO,ObjO.CustomCode()=CustomName and ObjO.SKU()=Obj.ProductID()
and ObjO.Month().StartOfMonth() = Obj.EndDate().StartOfMonth() )
- if( isnull( ObjOrderRealQty))
+ if( IsNew or isnull( ObjOrderRealQty))
{
- Owner.H_OrderForecastRealQty(relnew,CustomID := CustomName,CustomName := CustomName,ForecatsQty := [Number]Obj.Quantity().Round( 0)
- ,ForecatsRealQty := [Number]Obj.Quantity().Round( 0),ID := H_FunctionClass::SM_GenerateID( "OR")
- ,Month := Obj.EndDate(),OrderCode := strOrderCode,SKU := Obj.ProductID(),Unit := Obj.UnitOfMeasureName());
+ Owner.H_OrderForecastRealQty(relnew,CustomCode := CustomName,CustomName := CustomName,ForecastQty := [Number]Obj.Quantity().Round( 0)
+ ,ForecatsRealQty := [Number]Obj.Quantity().Round( 0),ID := H_FunctionClass::SM_GenerateID( "OR")
+ ,Month := Obj.EndDate(),SKU := Obj.ProductID(),Unit := Obj.UnitOfMeasureName()
+ ,Department := DepartMent,VCode := VersionCode);
}
else
{
- if( IsNew)
- {
- ObjOrderRealQty.ForecatsQty([Number]Obj.Quantity().Round( 0));
- ObjOrderRealQty.ForecatsRealQty([Number]Obj.Quantity().Round( 0));
- }
- else
- {
- if( [Number]Obj.Quantity().Round( 0)<> ObjOrderRealQty.ForecatsQty())
- {
- RQty := [Number]Obj.Quantity().Round( 0) - ObjOrderRealQty.ForecatsQty();
- RQty := ObjOrderRealQty.ForecatsRealQty() + RQty;
- if( RQty<0)
- {
- RQty :=0;
- }
- ObjOrderRealQty.ForecatsQty([Number]Obj.Quantity().Round( 0));
- ObjOrderRealQty.ForecatsRealQty(RQty);
- }
- }
+ // 鏇存柊浜嗛娴嬫暟鎹紝鍒欒绠楀疄鏃舵暟鎹鍑�
+ if( [Number]Obj.Quantity().Round( 0)<> ObjOrderRealQty.ForecastQty())
+ {
+ RQty := [Number]Obj.Quantity().Round( 0) - ObjOrderRealQty.ForecastQty();
+ RQty := ObjOrderRealQty.ForecatsRealQty() + RQty;
+ if( RQty<0)
+ {
+ RQty :=0;
+ }
+ ObjOrderRealQty.ForecastQty([Number]Obj.Quantity().Round( 0));
+ ObjOrderRealQty.ForecatsRealQty(RQty);
+ }
}
}
-
bStatus := true;
strMsg :="璁㈠崟棰勬祴鍒濆鍖栨垚鍔�!";
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
index d096a87..b044a49 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl
@@ -39,7 +39,7 @@
nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
// 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = SKU
- and Obj.CustomID() = CustomerCode
+ and Obj.CustomCode() = CustomerCode
and Obj.Month().Format( "YM2") = Date::ActualDate().Format( "YM2"));
if ( not isnull(OrderForecast))
{
@@ -195,10 +195,9 @@
{
Owner.H_OrderForecastRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "OF"),SKU := SKU,
Month := Date::ActualDate(),
- CustomID := CustomerCode,
+ CustomCode := CustomerCode,
CustomName := "瀹㈡埛琛ㄨ幏鍙�",
- OrderCode := "-",
- ForecatsQty :=0,
+ ForecastQty := 0,
ForecatsRealQty :=nForecastQtyNew,
Unit := "SKU 鍒扮墿鏂欒〃鑾峰彇");
}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderHedging.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderHedging.qbl
index c4c2894..88c8f1d 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderHedging.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderHedging.qbl
@@ -26,161 +26,198 @@
if( not isnull( Owner))
{
// 鍒濆鍖栭娴嬩俊鎭�
- JResult := H_FunctionClass::SM_InitialForcastDataEx( Owner,IsNew);
+ JResult := H_FunctionClass::SM_InitialForcastDataEx( Owner,IsNew,"--");
+ // 棰勬祴鍒濆鍖栧畬鎴�
if( JResult.Get( "Status").GetBoolean())
{
- traverse( Owner,SalesDemand.astype( CustomerOrder ),ObjOrder,not isnull( ObjOrder))
+ nForecastQtyOld := 0; //鍘熼娴嬫暟閲�
+ nReverseQtyOld :=0; //鍘熷弽绛炬暟閲�
+ nAuthorizeQtyOld :=0; //鍘熸巿鏉冩暟閲�
+ nForecastQtyNew :=0; //璁$畻鍚庣殑棰勬祴鏁伴噺
+ nReverseQtyNew :=0; //璁$畻鍚庣殑鍙嶇鏁伴噺
+ nAuthorizeQtyNew :=0; //璁$畻鍚庣殑鎺堟潈鏁伴噺
+ nHaveForecastQty :=0; //鏈夐娴嬫暟閲�
+ nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
+ OrderQuantity := 0; //鍓╀綑璁㈠崟鏁伴噺
+ traverse( Owner,SalesDemand.astype( CustomerOrder ),ObjOrder)
{
- //----------------------------------------浠ヤ笅鍚庡幓棰勬祴 鍙嶇 鎺堟潈鏁版嵁淇℃伅----------------
- nForecastQtyOld := 0; //鍘熼娴嬫暟閲�
- nReverseQtyOld :=0; //鍘熷弽绛炬暟閲�
- nAuthorizeQtyOld :=0; //鍘熸巿鏉冩暟閲�
- nForecastQtyNew :=0; //璁$畻鍚庣殑棰勬祴鏁伴噺
- nReverseQtyNew :=0; //璁$畻鍚庣殑鍙嶇鏁伴噺
- nAuthorizeQtyNew :=0; //璁$畻鍚庣殑鎺堟潈鏁伴噺
- nHaveForecastQty :=0; //鏈夐娴嬫暟閲�
- nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
- OrderQuantity := 0; //鍓╀綑璁㈠崟鏁伴噺
-
- // 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
- OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = ObjOrder.ProductID()
- and Obj.CustomID() = ObjOrder.CustomerName()
- and Obj.Month().Format( "YM2") =ObjOrder.EndDate().Format( "YM2"));
- if ( not isnull(OrderForecast))
+ // 鐩存帴鍒犻櫎鏈湀涔嬪墠鐨勮鍗�
+ if( ObjOrder.EndDate()<Date::ActualDate().StartOfMonth())
{
- nForecastQtyOld := OrderForecast.ForecatsRealQty();
- nForecastQtyNew := nForecastQtyOld;
- }
-
- // 鑾峰彇鍙嶇鏁伴噺锛堝彧鍒ゆ柇SKU锛�
- ObjReverse := select(Owner, H_ReverseRealQty , Obj, Obj.SKU() = ObjOrder.ProductID());
- if ( not isnull(ObjReverse))
- {
- nReverseQtyOld := ObjReverse.ReverseRealQty();
- nReverseQtyNew := nReverseQtyOld;
- }
-
- // 鑾峰彇鎺堟潈鏁伴噺锛堝鎴稩D+SKU锛�
- ObjAuthorize := select(Owner, H_AuthorizeRealQty , Obj, Obj.SKU() = ObjOrder.ProductID()
- and Obj.CustomID() = ObjOrder.CustomerName());
- if ( not isnull(ObjAuthorize))
- {
- nAuthorizeQtyOld := ObjAuthorize.AuthorizeRealQty();
- nAuthorizeQtyNew :=nAuthorizeQtyOld;
- }
- //-----------------------------浠ヤ笅璁㈠崟鍐插噺--------------------
- // 鎺堟潈璁板綍ID
- AQID := H_FunctionClass::SM_GenerateID( "AQ");
- // 璁㈠崟鍓╀綑鏁伴噺
- OrderQuantity := [Number]ObjOrder.Quantity().Round( 0);
- // 1 鍏堝啿鎺堟潈
- if( OrderQuantity>0 and nAuthorizeQtyOld>0)
- {
- OrderQuantity := OrderQuantity-nAuthorizeQtyOld;
- nAuthorizeQtyNew :=0;
- if( OrderQuantity<0)
- {
- nAuthorizeQtyNew := abs(OrderQuantity);
- OrderQuantity :=0;
- }
- }
- // 2 鍐嶅啿鍙嶇
- if( OrderQuantity>0 and nReverseQtyOld>0)
- {
- OrderQuantity := OrderQuantity-nReverseQtyOld;
- nReverseQtyNew :=0;
- if( OrderQuantity<0)
- {
- nReverseQtyNew := abs(OrderQuantity);
- OrderQuantity :=0;
- }
- }
- // 3 鏈�鍚庡啿棰勬祴
- if( OrderQuantity>0 and nForecastQtyOld>0)
- {
- //榛樿璁㈠崟鏁伴噺>棰勬祴鏁伴噺
- OrderQuantity := OrderQuantity-nForecastQtyOld;
- nForecastQtyNew :=0;
- nHaveForecastQty := nForecastQtyOld;
- nNoHaveForecastQty := OrderQuantity;
- if( OrderQuantity<0)
- {
- nForecastQtyNew := abs(OrderQuantity);
- OrderQuantity :=0;
- nHaveForecastQty := nForecastQtyOld - nForecastQtyNew;
- nNoHaveForecastQty := 0;
- }
- }
- // 璁板綍鍔ㄤ綔
- Owner.H_OrderRecord(relnew,
- ID := AQID,
- VCode:=VCode,
- SKU:=ObjOrder.ProductID(),
- ReverseQty := nReverseQtyNew,
- CustomerCode := ObjOrder.CustomerName(),
- CustomerName := ObjOrder.CustomerName(),
- ForecastQty := nForecastQtyNew,
- OrderDateTime := ObjOrder.EndDate(),
- OrderQty := [Number]ObjOrder.Quantity().Round( 0),
- OrderCode:=ObjOrder.OrderID(),
- AuthorizeQty := nAuthorizeQtyNew,
- ReverseDeductQty := nReverseQtyOld - nReverseQtyNew,
- AuthorizeDeductQty := 0,
- ForecastHitQty :=nHaveForecastQty,
- ForecastNoHitQty :=nNoHaveForecastQty,
- OperateType := OperatorType,
- Operator := Operator,
- Unit := ObjOrder.UnitOfMeasureName(),
- OperateQty := [Number]ObjOrder.Quantity().Round( 0),
- OperateTime := DateTime::ActualTime());
-
- // 鏇存柊褰撳墠鍙嶇鏁伴噺
- if( not isnull( ObjReverse))
- {
- ObjReverse.ReverseRealQty(nReverseQtyNew);
+ ObjOrder.Delete();
}
else
{
- Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := ObjOrder.ProductID(),Unit := ObjOrder.UnitOfMeasureName()
- ,ReverseRealQty := nReverseQtyNew);
- }
- // 鏇存柊鎺堟潈
- if( not isnull( ObjAuthorize))
- {
- ObjAuthorize.AuthorizeRealQty(nAuthorizeQtyNew);
+ //----------------------------------------浠ヤ笅鍚庡幓棰勬祴 鍙嶇 鎺堟潈鏁版嵁淇℃伅----------------
+ nForecastQtyOld := 0; //鍘熼娴嬫暟閲�
+ nReverseQtyOld :=0; //鍘熷弽绛炬暟閲�
+ nAuthorizeQtyOld :=0; //鍘熸巿鏉冩暟閲�
+ nForecastQtyNew :=0; //璁$畻鍚庣殑棰勬祴鏁伴噺
+ nReverseQtyNew :=0; //璁$畻鍚庣殑鍙嶇鏁伴噺
+ nAuthorizeQtyNew :=0; //璁$畻鍚庣殑鎺堟潈鏁伴噺
+ nHaveForecastQty :=0; //鏈夐娴嬫暟閲�
+ nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
+ OrderQuantity := 0; //鍓╀綑璁㈠崟鏁伴噺
+ // 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
+ OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = ObjOrder.ProductID()
+ and Obj.CustomCode() = ObjOrder.CustomerName()
+ and Obj.Month().Format( "YM2") =ObjOrder.EndDate().Format( "YM2"));
+ if ( not isnull(OrderForecast))
+ {
+ nForecastQtyOld := OrderForecast.ForecatsRealQty();
+ nForecastQtyNew := nForecastQtyOld;
+ }
+ // 鑾峰彇鍙嶇鏁伴噺锛堝彧鍒ゆ柇SKU锛�
+ ObjReverse := select(Owner, H_ReverseRealQty , Obj, Obj.SKU() = ObjOrder.ProductID());
+ if ( not isnull(ObjReverse))
+ {
+ nReverseQtyOld := ObjReverse.ReverseRealQty();
+ nReverseQtyNew := nReverseQtyOld;
+ }
+ // 鑾峰彇鎺堟潈鏁伴噺锛堝鎴稩D+SKU锛�
+ ObjAuthorize := select(Owner, H_AuthorizeRealQty , Obj, Obj.SKU() = ObjOrder.ProductID()
+ and Obj.CustomID() = ObjOrder.CustomerName());
+ if ( not isnull(ObjAuthorize))
+ {
+ nAuthorizeQtyOld := ObjAuthorize.AuthorizeRealQty();
+ nAuthorizeQtyNew :=nAuthorizeQtyOld;
+ }
+ //-----------------------------浠ヤ笅璁㈠崟鍐插噺--------------------
+ // 鎺堟潈璁板綍ID
+ AQID := H_FunctionClass::SM_GenerateID( "AQ");
+ // 璁㈠崟鍓╀綑鏁伴噺
+ OrderQuantity := [Number]ObjOrder.Quantity().Round( 0);
+ // 1 鍏堝啿鎺堟潈
+ if( OrderQuantity>0 and nAuthorizeQtyOld>0)
+ {
+ OrderQuantity := OrderQuantity-nAuthorizeQtyOld;
+ nAuthorizeQtyNew :=0;
+ if( OrderQuantity<0)
+ {
+ nAuthorizeQtyNew := abs(OrderQuantity);
+ OrderQuantity :=0;
+ }
+ }
+ // 2 鍐嶅啿鍙嶇
+ if( OrderQuantity>0 and nReverseQtyOld>0)
+ {
+ OrderQuantity := OrderQuantity-nReverseQtyOld;
+ nReverseQtyNew :=0;
+ if( OrderQuantity<0)
+ {
+ nReverseQtyNew := abs(OrderQuantity);
+ OrderQuantity :=0;
+ }
+ }
+ // 3 鏈�鍚庡啿棰勬祴
+ if( OrderQuantity>0)
+ {
+ //榛樿璁㈠崟鏁伴噺>棰勬祴鏁伴噺
+ OrderQuantity := OrderQuantity-nForecastQtyOld;
+ nForecastQtyNew :=0;
+ nHaveForecastQty := nForecastQtyOld;
+ nNoHaveForecastQty := OrderQuantity;
+ if( OrderQuantity<0)
+ {
+ nForecastQtyNew := abs(OrderQuantity);
+ OrderQuantity :=0;
+ nHaveForecastQty := nForecastQtyOld - nForecastQtyNew;
+ nNoHaveForecastQty := 0;
+ }
+ }
+ // 璁板綍鍔ㄤ綔
+ Owner.H_OrderRecord(relnew,
+ ID := AQID,
+ VCode:=VCode,
+ SKU:=ObjOrder.ProductID(),
+ ReverseQty := nReverseQtyNew,
+ CustomerCode := ObjOrder.CustomerName(),
+ CustomerName := ObjOrder.CustomerName(),
+ ForecastQty := nForecastQtyNew,
+ OrderDateTime := ObjOrder.EndDate(),
+ OrderQty := [Number]ObjOrder.Quantity().Round( 0),
+ OrderCode:=ObjOrder.OrderID(),
+ AuthorizeQty := nAuthorizeQtyNew,
+ ReverseDeductQty := nReverseQtyOld - nReverseQtyNew,
+ AuthorizeDeductQty := 0,
+ ForecastHitQty :=nHaveForecastQty,
+ ForecastNoHitQty :=nNoHaveForecastQty,
+ OperateType := OperatorType,
+ Operator := Operator,
+ Unit := ObjOrder.UnitOfMeasureName(),
+ OperateQty := [Number]ObjOrder.Quantity().Round( 0),
+ OperateTime := DateTime::ActualTime());
+ // 绾娴嬭鍗�
+ if( nForecastQtyNew>0)
+ {
+ FOrder := ObjOrder.Copy();
+ FOrder.OrderTag("绾娴�");
+ FOrder.Quantity(nForecastQtyNew);
+ }
+ // 鏈夐娴嬭鍗�
+ if(nHaveForecastQty>0)
+ {
+ HFOrder := ObjOrder.Copy();
+ HFOrder.OrderTag("鏈夐娴�");
+ HFOrder.Quantity(nHaveForecastQty);
+ }
+ // 鏃犻娴�
+ if(nNoHaveForecastQty>0)
+ {
+ NHFOrder := ObjOrder.Copy();
+ NHFOrder.OrderTag("鏃犻娴�");
+ NHFOrder.Quantity(nNoHaveForecastQty);
+ }
+ // ERP鍙嶇鎺堟潈璁㈠崟-鎺ュ彛鏈彁渚�
+
+ // 鏇存柊褰撳墠鍙嶇鏁伴噺
+ if( not isnull( ObjReverse))
+ {
+ ObjReverse.ReverseRealQty(nReverseQtyNew);
+ }
+ else
+ {
+ Owner.H_ReverseRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "RQ"),SKU := ObjOrder.ProductID(),Unit := ObjOrder.UnitOfMeasureName()
+ ,ReverseRealQty := nReverseQtyNew);
+ }
+ // 鏇存柊鎺堟潈
+ if( not isnull( ObjAuthorize))
+ {
+ ObjAuthorize.AuthorizeRealQty(nAuthorizeQtyNew);
+ }
+ else
+ {
+ Owner.H_AuthorizeRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "AR"),SKU := ObjOrder.ProductID(),
+ Month := ObjOrder.EndDate(),
+ CustomID := ObjOrder.CustomerName(),
+ CustomName := ObjOrder.CustomerName(),
+ OrderCode := "-",
+ AuthorizeRealQty :=nAuthorizeQtyNew,
+ Unit := ObjOrder.UnitOfMeasureName());
+ }
+ // 鏇存柊棰勬祴
+ if( not isnull( OrderForecast))
+ {
+ OrderForecast.ForecatsRealQty(nForecastQtyNew);
+ }
+ else
+ {
+ Owner.H_OrderForecastRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "OF"),SKU := ObjOrder.ProductID(),
+ Month := ObjOrder.EndDate(),
+ CustomCode := ObjOrder.CustomerName(),
+ CustomName := ObjOrder.CustomerName(),
+ ForecastQty := 0,
+ ForecatsRealQty :=nForecastQtyNew,
+ Unit := ObjOrder.UnitOfMeasureName());
+ }
+ ObjOrder.Delete();
}
- else
- {
- Owner.H_AuthorizeRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "AR"),SKU := ObjOrder.ProductID(),
- Month := ObjOrder.EndDate(),
- CustomID := ObjOrder.CustomerName(),
- CustomName := ObjOrder.CustomerName(),
- OrderCode := "-",
- AuthorizeRealQty :=nAuthorizeQtyNew,
- Unit := ObjOrder.UnitOfMeasureName());
- }
- // 鏇存柊棰勬祴
- if( not isnull( OrderForecast))
- {
- OrderForecast.ForecatsRealQty(nForecastQtyNew);
- }
- else
- {
- Owner.H_OrderForecastRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "OF"),SKU := ObjOrder.ProductID(),
- Month := ObjOrder.EndDate(),
- CustomID := ObjOrder.CustomerName(),
- CustomName := ObjOrder.CustomerName(),
- OrderCode := "-",
- ForecatsQty :=0,
- ForecatsRealQty :=nForecastQtyNew,
- Unit := ObjOrder.UnitOfMeasureName());
- }
}
}
else
{
strMsg:="棰勬祴璁㈠崟淇℃伅鍔犺浇澶辫触锛岃鑱旂郴绯荤粺绠$悊鍛橈紒";
- }
+ }
}
}
onerror
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl
index 72a96c0..a74b90f 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl
@@ -42,7 +42,7 @@
nNoHaveForecastQty:=0;//浜旈娴嬫暟閲�
// 鑾峰彇棰勬祴鏁伴噺锛堝鎴�+SKU+鏈堜唤 鐞嗚鏄病鏈夌墿鏂欓娴嬶級
OrderForecast := select(Owner, H_OrderForecastRealQty , Obj, Obj.SKU() = SKU
- and Obj.CustomID() = CustomerCode
+ and Obj.CustomCode() = CustomerCode
and Obj.Month().Format( "YM2") = Date::ActualDate().Format( "YM2"));
if ( not isnull(OrderForecast))
{
@@ -189,10 +189,9 @@
{
Owner.H_OrderForecastRealQty(relnew,ID := H_FunctionClass::SM_GenerateID( "OF"),SKU := SKU,
Month := Date::ActualDate(),
- CustomID := CustomerCode,
+ CustomCode := CustomerCode,
CustomName := CustomName,
- OrderCode := "-",
- ForecatsQty :=0,
+ ForecastQty := 0,
ForecatsRealQty :=nForecastQtyNew,
Unit := Unit);
}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl
index 988d53e..4a0d857 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl
@@ -24,7 +24,7 @@
for ( x := 1; x <= 10; x := x + 1 )
{
Owner.H_OrderForecastRealQty(relnew,ID := "AAAAA_"+ x.AsQUILL(),SKU := "OTN-01-ACC-00"+ x.AsQUILL() , Month := Date::ActualDate(),CustomName := "灏忕背",
- CustomID := "XM0001",OrderCode:="OD0001",ForecatsQty:=1000,ForecatsRealQty:=1000, Unit := "PCS");
+ CustomCode := "XM0001",ForecastQty := 1000,ForecatsRealQty:=1000, Unit := "PCS");
}
}
//H_FunctionClass := Owner.H_FunctionClass(relnew,VCode_Material := VCode,UpdateTime_Material := Date::ActualDate());
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomCode.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomCode.qbl
new file mode 100644
index 0000000..9cb80f6
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomCode
+{
+ #keys: '3[414724.0.174571651][414724.0.174571650][414724.0.174571652]'
+ Description: '瀹㈡埛ID锛屽敮涓�寤轰箣涓�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl
deleted file mode 100644
index f0cb7e7..0000000
--- a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomID.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute CustomID
-{
- #keys: '3[414724.0.46380328][414724.0.46380327][414724.0.46380329]'
- Description: '瀹㈡埛ID'
- ValueType: String
-}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Department.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Department.qbl
new file mode 100644
index 0000000..efe5e78
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Department.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Department
+{
+ #keys: '3[414724.0.174571661][414724.0.174571660][414724.0.174571662]'
+ Description: '閮ㄩ棬锛屾病鏈変环鍊硷紝鏄剧ず浣跨敤'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecastQty.qbl
similarity index 87%
rename from _Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl
rename to _Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecastQty.qbl
index 2edd0bc..bdc2eb0 100644
--- a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecatsQty.qbl
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecastQty.qbl
@@ -1,6 +1,6 @@
Quintiq file version 2.0
#parent: #root
-Attribute ForecatsQty
+Attribute ForecastQty
{
#keys: '3[414724.0.46380358][414724.0.46380357][414724.0.46380359]'
Description: '棰勬祴鏁伴噺'
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl
index cc1224e..8e83213 100644
--- a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl
@@ -3,6 +3,6 @@
Attribute Month
{
#keys: '3[414724.0.46380308][414724.0.46380307][414724.0.46380309]'
- Description: '鏈堜唤'
+ Description: '鏈堜唤锛屽敮涓�閿箣涓�'
ValueType: Date
}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl
deleted file mode 100644
index 66e08c7..0000000
--- a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_OrderCode.qbl
+++ /dev/null
@@ -1,8 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Attribute OrderCode
-{
- #keys: '3[414724.0.46380338][414724.0.46380337][414724.0.46380339]'
- Description: '璁㈠崟缂栧彿'
- ValueType: String
-}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl
index a9eab85..5f2e17f 100644
--- a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl
@@ -3,6 +3,6 @@
Attribute SKU
{
#keys: '3[414724.0.46380348][414724.0.46380347][414724.0.46380349]'
- Description: 'SKU缂栫爜'
+ Description: 'SKU缂栫爜锛屽敮涓�閿箣涓�'
ValueType: String
}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKUName.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKUName.qbl
new file mode 100644
index 0000000..ddbce61
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKUName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SKUName
+{
+ #keys: '3[414724.0.174572228][414724.0.174572227][414724.0.174572229]'
+ Description: 'SKU鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_StockingPointID.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_StockingPointID.qbl
new file mode 100644
index 0000000..ebf027f
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_StockingPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StockingPointID
+{
+ #keys: '3[414724.0.174571671][414724.0.174571670][414724.0.174571672]'
+ Description: '搴撳瓨鐐癸紝娌℃湁浠峰�硷紝鏄剧ず浣跨敤'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl
index 6569ece..eb7052c 100644
--- a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl
@@ -3,6 +3,6 @@
Attribute Unit
{
#keys: '3[414724.0.46380378][414724.0.46380377][414724.0.46380379]'
- Description: '鍗曚綅'
+ Description: '鍗曚綅锛屾病鏈変环鍊硷紝鏄剧ず浣跨敤'
ValueType: String
}
diff --git a/_Main/BL/Type_H_OrderForecastRealQty/Attribute_VCode.qbl b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_VCode.qbl
new file mode 100644
index 0000000..fb94eeb
--- /dev/null
+++ b/_Main/BL/Type_H_OrderForecastRealQty/Attribute_VCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VCode
+{
+ #keys: '3[414724.0.174571641][414724.0.174571640][414724.0.174571642]'
+ Description: '鐗堟湰鍙凤紝鏆傛椂涓嶉�傜敤锛岄粯璁�-'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoSync.qbl b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoSync.qbl
index 574ecd5..e210049 100644
--- a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoSync.qbl
+++ b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_DoSync.qbl
@@ -1,15 +1,16 @@
Quintiq file version 2.0
#parent: #root
StaticMethod DoSync (
- MacroPlan macroPlan
+ MacroPlan macroPlan,
+ GlobalOTDTable globalOTDTable
)
{
TextBody:
[*
// yypsybs Aug-17-2023 (created)
- info( "ActualPISPIP Finished, Start InventoryCost Data Broker" );
- macroPlan.Broker_OTD_InventoryCost().Execute();
+ //info( "ActualPISPIP Finished, Start InventoryCost Data Broker" );
+ //macroPlan.Broker_OTD_InventoryCost().Execute();
info( "InventoryCost Data Broker Finished, Start InventoryCost Mapping" );
- macroPlan.MappingInventoryValueAndCostData();
+ macroPlan.MappingInventoryValueAndCostData(globalOTDTable);
*]
}
diff --git a/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgeExport.qbl b/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgeExport.qbl
new file mode 100644
index 0000000..0048b94
--- /dev/null
+++ b/_Main/BL/Type_MPSync/Method_CapacityAndSaleBudgeExport.qbl
@@ -0,0 +1,143 @@
+Quintiq file version 2.0
+#parent: #root
+Method CapacityAndSaleBudgeExport () as BinaryValue
+{
+ Description: '瀵煎嚭姣旇緝缁撴灉'
+ TextBody:
+ [*
+ // generate by generate_export.py
+ info( "export start" );
+ text:= '<?xml version="1.0" encoding="utf-8" standalone="yes"?><table><name>骞村害浜ч攢棰勭畻</name>
+ <column><name>鍒犻櫎鏍囪</name><type>String</type></column>
+ <column><name>骞翠唤</name><type>Number</type></column>
+ <column><name>涓氬姟閮ㄩ棬</name><type>String</type></column>
+ <column><name>鏄剧ず鎶�鏈垎绫�</name><type>String</type></column>
+ <column><name>涓氬姟鍒嗙被</name><type>String</type></column>
+ <column><name>浜у搧绾�/浜у搧瑙勬牸</name><type>String</type></column>
+ <column><name>浜у搧鏂欏彿</name><type>String</type></column>
+ <column><name>Array浜у湴</name><type>String</type></column>
+ <column><name>钂搁晙浜у湴</name><type>String</type></column>
+ <column><name>鍒嗚鲸鐜�</name><type>String</type></column>
+ <column><name>鍑鸿揣褰㈡��</name><type>String</type></column>
+ <column><name>鍒囧壊鏁�</name><type>String</type></column>
+ <column><name>浜ц兘褰撻噺</name><type>String</type></column>
+ <column><name>mask鏁�</name><type>String</type></column>
+ <column><name>1鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>2鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>3鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>4鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>5鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>6鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>7鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>8鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>9鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>10鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>11鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>12鏈堜骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>骞翠骇鑳�(PCS)</name><type>Real</type></column>
+ <column><name>1鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>2鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>3鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>4鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>5鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>6鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>7鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>8鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>9鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>10鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>11鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>12鏈堜骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>骞翠骇鑳�(瀹炴暟澶у紶)</name><type>Real</type></column>
+ <column><name>1鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>2鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>3鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>4鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>5鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>6鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>7鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>8鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>9鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>10鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>11鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>12鏈堥攢鍞(W)</name><type>Real</type></column>
+ <column><name>骞撮攢鍞(W)</name><type>Real</type></column>
+ </table>';
+ xmlDOMImplementation := XMLDOMImplementation::Create();
+ xmlDOMDocument := xmlDOMImplementation.CreateDocumentFromString( text );
+
+ tableElement:= xmlDOMDocument.GetElementByTagName( "table", 0 );
+
+ toExportList := selectsortedset( this, MappingCapacityAndSaleBudge, item, true, item.OrgCode() + "_" + item.PlaceOfProductionOfArray() );
+ info( "export size : " + [String]toExportList.Size() );
+ nowNo := 1;
+ traverse ( toExportList, Elements, toExport ) {
+ info( "nowNo : " + [String]nowNo );
+ nowNo := nowNo + 1;
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, ifexpr( toExport.Deleted(), "Y", "N"), "鍒犻櫎鏍囪" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.YearNo(), "骞翠唤" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.OrgCode(), "涓氬姟閮ㄩ棬" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.DisplayTechnology(), "鏄剧ず鎶�鏈垎绫�" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.BusinessType(), "涓氬姟鍒嗙被" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.LineAndSpecification(), "浜у搧绾�/浜у搧瑙勬牸" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ProductCode(), "浜у搧鏂欏彿" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.PlaceOfProductionOfArray(), "Array浜у湴" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.PlaceOfProductionOfEvaporation(), "钂搁晙浜у湴" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.Resolution(), "鍒嗚鲸鐜�" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.ShippingForm(), "鍑鸿揣褰㈡��" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.NumberOfCut(), "鍒囧壊鏁�" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.CapacityEquivalent(), "浜ц兘褰撻噺" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, toExport.NumberOfMask(), "mask鏁�" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth1(), "1鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth2(), "2鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth3(), "3鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth4(), "4鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth5(), "5鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth6(), "6鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth7(), "7鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth8(), "8鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth9(), "9鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth10(), "10鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth11(), "11鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSInMonth12(), "12鏈堜骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInPCSTotal(), "骞翠骇鑳�(PCS)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth1(), "1鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth2(), "2鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth3(), "3鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth4(), "4鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth5(), "5鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth6(), "6鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth7(), "7鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth8(), "8鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth9(), "9鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth10(), "10鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth11(), "11鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetInMonth12(), "12鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.CapacityInSheetTotal(), "骞翠骇鑳�(瀹炴暟澶у紶)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth1(), "1鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth2(), "2鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth3(), "3鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth5(), "4鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth4(), "5鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth6(), "6鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth7(), "7鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth8(), "8鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth9(), "9鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth10(), "10鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth11(), "11鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountInMonth12(), "12鏈堥攢鍞(W)" );
+ ScenarioManager::GeneratesTheSpecifiedXMLColumn( xmlDOMDocument, tableElement, [String]toExport.SaleAmountTotal(), "骞撮攢鍞(W)" );
+ }
+
+ xmlDOMSerializer := xmlDOMImplementation.CreateSerializer();
+ xmlTableString := xmlDOMSerializer.WriteToString( xmlDOMDocument );
+
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTableString ) );
+ tableGroupHandle := TableGroupHandle::Create( "骞村害浜ч攢棰勭畻" );
+ tableGroupHandle.Add( tableHandle );
+ tableBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ info( "export end" );
+
+ return tableBinaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_MPSync/StaticMethod_TestData.qbl b/_Main/BL/Type_MPSync/StaticMethod_TestData.qbl
index 87c2b27..541ab96 100644
--- a/_Main/BL/Type_MPSync/StaticMethod_TestData.qbl
+++ b/_Main/BL/Type_MPSync/StaticMethod_TestData.qbl
@@ -15,7 +15,7 @@
info( "productCodeList : " + [String]productCodeList.Size() );
mpSync.MappingCapacityAndSaleBudge( relflush );
- for( year := Date::ActualDate().Year() - 10; year <= Date::ActualDate().Year(); year := year + 1 ) {
+ for( year := Date::ActualDate().Year() - 10; year <= Date::ActualDate().Year() + 5; year := year + 1 ) {
for( i := 1; i <= productCodeList.Size(); i := i + 1 ) {
productCode := productCodeList.Element( i - 1 );
mappingCapacityAndSaleBudge := mpSync.MappingCapacityAndSaleBudge( relnew,
@@ -41,7 +41,7 @@
info( "test MappingCapacityAndSaleBudge size : " + [String]result1.Size() );
mpSync.MappingAnnualBudget( relflush );
- for( year := Date::ActualDate().Year() - 10; year <= Date::ActualDate().Year(); year := year + 1 ) {
+ for( year := Date::ActualDate().Year() - 10; year <= Date::ActualDate().Year() + 5; year := year + 1 ) {
for( i := 1; i <= productCodeList.Size(); i := i + 1 ) {
productCode := productCodeList.Element( i - 1 );
mappingAnnualBudget := mpSync.MappingAnnualBudget( relnew,
diff --git a/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl b/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
index c71e147..ee48ee3 100644
--- a/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
@@ -7,88 +7,12 @@
// Administrator Sep-1-2023 (created)
//Set the Default values
- unitofmeasurename := "PCS";
- currencyid := "CNY";
- startdate := Date::Date( 1900, 1, 1 );
- enddate := Date::Date( 9999, 12, 31 );
- capacitytype := "Transport quantity";
+ //unitofMeasureName := "PCS";
+ //currencyid := "CNY";
+ //startdate := Date::Date( 1900, 1, 1 );
+ //enddate := Date::Date( 9999, 12, 31 );
+ //capacitytype := "Transport quantity";
- if( isnull( Unit::FindById( this, "绌鸿繍" ) ) ){
- this.Unit( relnew,
- ID := "绌鸿繍",
- Name := "绌鸿繍",
- UnitOfMeasureName := unitofmeasurename,
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate,
- CapacityType := capacitytype );
- }
-
- if( isnull( Unit::FindById( this, "搴撳瓨浜嬪姟澶勭悊" ) ) ){
- this.Unit( relnew,
- ID := "搴撳瓨浜嬪姟澶勭悊",
- Name := "搴撳瓨浜嬪姟澶勭悊",
- UnitOfMeasureName := unitofmeasurename,
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate,
- CapacityType := capacitytype );
- }
-
- unitofmeasurename := "PCS";
- name := "鎵嬪姩鍒涘缓搴撳瓨鐐�";
- currencyname := "CNY";
- isplannedinfinite := false;
- datestart := Date::Construct(1900, 1, 1) ;
- dateend := Date::Construct(9999, 12, 31);
- groupname := " ";
- description := " ";
- isfromdb := true;
-
- if( isnull( StockingPoint_MP::FindById( this, "F13_FG_STOCK" ) ) ){
- StockingPoint_MP::Create( this,
- "F13_FG_STOCK",
- "F13",
- name,
- unitofmeasurename,
- currencyname,
- isplannedinfinite,
- datestart,
- dateend,
- groupname,
- description,
- isfromdb );
- }
-
- if( isnull( StockingPoint_MP::FindById( this, "H10_SA_STOCK" ) ) ){
- StockingPoint_MP::Create( this,
- "H10_SA_STOCK",
- "H10",
- name,
- unitofmeasurename,
- currencyname,
- isplannedinfinite,
- datestart,
- dateend,
- groupname,
- description,
- isfromdb );
- }
-
- if( isnull( StockingPoint_MP::FindById( this, "Q10_FG_STOCK" ) ) ){
- StockingPoint_MP::Create( this,
- "Q10_FG_STOCK",
- "Q10",
- name,
- unitofmeasurename,
- currencyname,
- isplannedinfinite,
- datestart,
- dateend,
- groupname,
- description,
- isfromdb );
- }
existcurrency := Currency_MP::FindById( this, "CNY" );
if( isnull( existcurrency ) ){
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
index f9cd042..c6520fb 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
@@ -2,21 +2,21 @@
#parent: #root
Method MappingActualPISPIPData (
Strings businessTypes,
+ GlobalOTDTable globalOTDTable,
Boolean nuclear
)
{
TextBody:
[*
// renhao Aug-14-2023 (created)
- date := Date :: Today();
- listtodeal := selectset( this,MappingActualPISPIP,actual,true );
+ listtodeal := selectset( globalOTDTable,Global_MappingActualProductInStockingPointInPeriod,actual,actual.ActualInventoryLevelEnd() > 0 );
totalcount := listtodeal.Size();
info( "ActualPISPIP has " + totalcount.AsQUILL() + " rows in total" );
count := 0;
traverse( listtodeal,Elements,actual){
count := count + 1;
- if( count - [Number](count/100) * 100 = 0 or count = totalcount ){
+ if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
info( "Now is dealing with the " + count.AsQUILL() + "ActualPISPIP " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
}
product := select( this,MappingProduct,product,product.ID() = actual.ProductID() and product.KeyProduct() = nuclear,true);
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingBaseConversionFactorData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingBaseConversionFactorData.qbl
index f0a87c2..e0357c1 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingBaseConversionFactorData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingBaseConversionFactorData.qbl
@@ -1,19 +1,21 @@
Quintiq file version 2.0
#parent: #root
-Method MappingBaseConversionFactorData
+Method MappingBaseConversionFactorData (
+ GlobalOTDTable globalOTDTable
+)
{
Description: 'ETL鏁版嵁杞ā鍨嬫暟鎹�'
TextBody:
[*
// yypsybs Aug-15-2023 (created)
- traverse( this, MappingBaseConversionFactor, item ) {
+ traverse( globalOTDTable, Global_MappingConversionFactor, item ) {
//濡傛灉ProductID涓嶄负绌猴紝涓斿尮閰嶄笉鍒癙roduct锛屽垯涓嶅垱寤猴紝杩斿洖涓虹┖
// info( item.ProductId().AsQUILL() );
BaseConversionFactor::CreateOrUpdate( this,
item.SourceUnitOfMeasureName(),
item.TargetUnitOfMeasureName(),
item.IsEnabled(),
- item.ProductId(),
+ item.ProductID(),
item.Factor() );
}
*]
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
index 7ec0576..bee6304 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
@@ -1,7 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method MappingCustomerOrderData (
- Strings businessTypes
+ Strings businessTypes,
+ GlobalOTDTable globalOTDTable
)
{
Description: 'ETL璁㈠崟棰勬祴'
@@ -9,15 +10,15 @@
[*
// yypsybs Aug-15-2023 (created)
// 寰呭鐞嗘暟鎹�
- listToDeal := construct( structured[MappingCustomerOrder] );
+ listToDeal := construct( Global_MappingCustomOrders );
if( isnull( businessTypes ) or businessTypes.Size() = 0 ) {
- listToDeal := selectset( this, MappingCustomerOrder, item, true );
+ listToDeal := selectset( globalOTDTable, Global_MappingCustomOrder, item, true );
} else {
- listToDeal := selectset( this, MappingCustomerOrder, item, businessTypes.Find( item.BusinessType() ) <> -1 );
+ listToDeal := selectset( globalOTDTable, Global_MappingCustomOrder, item, businessTypes.Find( item.BusinessType() ) <> -1 );
}
queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
- listToDeal := selectset( listToDeal, Elements, item, item.OrderDate() >= queryStartDate /*and item.OrderDate() <= queryEndDate*/, not isnull( Product_MP::FindById( this, item.ProductID() ) ) and not isnull( StockingPoint_MP::FindById( this, item.StockPointID() ) ) and not isnull( SalesSegment_MP::FindByName( this, item.SalesSegmentName() ) ) );
+ listToDeal := selectset( listToDeal, Elements, item, item.OrderDate() >= queryStartDate /*and item.OrderDate() <= queryEndDate*/, not isnull( Product_MP::FindById( this, item.ProductID() ) ) and not isnull( StockingPoint_MP::FindById( this, item.StockingPointID() ) ) and not isnull( SalesSegment_MP::FindByName( this, item.SalesSegmentName() ) ) );
totalcount := listToDeal.Size();
info( "CustomerOrder has " + totalcount.AsQUILL() + " rows in total" );
@@ -35,7 +36,7 @@
CustomerOrder::CreateOrUpdate( this, item.CurrencyID(), item.Customer(), item.CustomerID(), item.ID(),
item.OrderDate(), item.OrderID(), item.OrderLineID(), item.Price(),
priorityName, item.ProductID(),
- item.StockPointID(),
+ item.StockingPointID(),
item.SalesSegmentName(),
item.Quantity(), item.UnitOfMeasureName(), item.OrderType(), item.IsAvailable());
// }else{
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
index ead549d..c6a2bcf 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
@@ -2,7 +2,8 @@
#parent: #root
Method MappingExternalSupplyData (
Strings businessTypes,
- Boolean nuclear
+ Boolean nuclear,
+ GlobalOTDTable globalOTDTable
)
{
TextBody:
@@ -10,7 +11,7 @@
// renhao Aug-14-2023 (created)
queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
- listtodeal := selectset( this,MappingExternalSupply,externalSupply, externalSupply.UserQuantity()>0 and externalSupply.Date() >= queryStartDate /*and externalSupply.Date() <= queryEndDate*/);
+ listtodeal := selectset( globalOTDTable,Global_MappingInventorySupply,externalSupply, externalSupply.UserQuantity()>0 and externalSupply.Date() >= queryStartDate /*and externalSupply.Date() <= queryEndDate*/);
totalcount := listtodeal.Size();
description := "鍦ㄩ�斿湪鍒�";
info( "ExternalSupply has " + totalcount.AsQUILL() + " rows in total" );
@@ -21,7 +22,7 @@
if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
info( "Now is dealing with the " + count.AsQUILL() + "ExternalSupply " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
}
- product := select( this,MappingProduct,product,product.ID() = externalSupply.ProductID(),true);
+ product := select( globalOTDTable,Global_MappingProduct_MP,product,product.ID() = externalSupply.ProductID(),true);
if( not isnull( product)){
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
index 47e8597..21b752b 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
@@ -1,7 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method MappingForecastData (
- Strings businessTypes
+ Strings businessTypes,
+ GlobalOTDTable globalOTDTable
)
{
Description: 'ETL璁㈠崟棰勬祴'
@@ -9,11 +10,11 @@
[*
// yypsybs Aug-15-2023 (created)
// 寰呭鐞嗘暟鎹�
- listToDeal := construct( structured[MappingForecast] );
+ listToDeal := construct( Global_MappingForecasts );
if( isnull( businessTypes ) or businessTypes.Size() = 0 ) {
- listToDeal := selectset( this, MappingForecast, item, item.Quantity() > 0 );
+ listToDeal := selectset( globalOTDTable, Global_MappingForecast, item, item.Quantity() > 0 );
} else {
- listToDeal := selectset( this, MappingForecast, item, businessTypes.Find( item.BusinessType() ) <> -1 and item.Quantity()>0 );
+ listToDeal := selectset( globalOTDTable, Global_MappingForecast, item, businessTypes.Find( item.BusinessType() ) <> -1 and item.Quantity()>0 );
}
queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
index 0789263..833d887 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
@@ -1,11 +1,13 @@
Quintiq file version 2.0
#parent: #root
-Method MappingInventoryValueAndCostData
+Method MappingInventoryValueAndCostData (
+ GlobalOTDTable globalOTDTable
+)
{
TextBody:
[*
// yypsybs Aug-15-2023 (created)
- listtodeal := selectset( this,MappingInventoryValueAndCost,item,true );
+ listtodeal := selectset( globalOTDTable,Global_MappingStockingPointCost,item,true );
totalcount := listtodeal.Size();
info( "InventoryCost has " + totalcount.AsQUILL() + " rows in total" );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
index b807827..ca35281 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
@@ -3,7 +3,8 @@
Method MappingOperationBOMData (
Strings businessTypes,
Boolean isKeyProduct,
- Boolean createPurchaseSupplyMaterial
+ Boolean createPurchaseSupplyMaterial,
+ GlobalOTDTable globalOTDTable
)
{
TextBody:
@@ -12,9 +13,9 @@
keyProductList := construct( Strings );
if( isKeyProduct ) {
- keyProductList := selectuniquevalues( this, MappingProduct, item, item.ProductMajorType()="鎴愬搧" or item.ProductMajorType()="鍗婃垚鍝�", item.ID() );
+ keyProductList := selectuniquevalues( globalOTDTable, Global_MappingProduct_MP, item, item.ProductMajorType()="鎴愬搧" or item.ProductMajorType()="鍗婃垚鍝�", item.ID() );
}
- bomList := selectsortedset( this, MappingBOM, item,
+ bomList := selectsortedset( globalOTDTable, Global_MappingOperationBOM, item,
ifexpr( isnull( businessTypes ) or businessTypes.Size() = 0,
true,
// businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 )
@@ -61,9 +62,9 @@
if( not isnull( stockingPoint)){
if( isKeyProduct){
keyRows := selectset( routingRows,Elements,routingrow,keyProductList.Find( routingrow.ComponentCode())>=0);
- this.MappingOperationBOMDataRouting( routing,keyRows);
+ this.MappingOperationBOMDataRouting( routing,globalOTDTable,keyRows);
}else{
- this.MappingOperationBOMDataRouting( routing,routingRows);
+ this.MappingOperationBOMDataRouting( routing,globalOTDTable,routingRows);
}
}
diff --git "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl" "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
index e661d1f..c661b69 100644
--- "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
+++ "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
@@ -2,7 +2,8 @@
#parent: #root
Method MappingOperationBOMDataRouting (
Routing routing,
- MappingBOMs routingRows
+ GlobalOTDTable globalOTDTable,
+ Global_MappingOperationBOMs routingRows
)
{
TextBody:
@@ -15,7 +16,7 @@
rows := selectset( routingRows, Elements, row, row.ProcessSection() = processSection );
firstRow := rows.Element( 0 );
// 鎵緊rgCode/productId/processSection鍖归厤涓攕equence鏈�灏忕殑涓�缁勬暟鎹�
- minSeq := MappingOperation::FindMinSeq( this, firstRow.OrganCode(), firstRow.ProductCode(), processSection );
+ minSeq := Global_MappingOperation::FindMinSeq( globalOTDTable, firstRow.OrganCode(), firstRow.ProductCode(), processSection );
routingStepId := processSection + "_" + [String]minSeq;
// 鎵惧搴攔outingStep
routingStep := RoutingStep::FindByName( routing, routingStepId );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
index 3713cc9..1e71d79 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationCostData.qbl
@@ -41,7 +41,10 @@
if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
info( "Now is dealing with the " + count.AsQUILL() + "OperationCost " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
}
- id := item.OrganCode() + "_" + item.ProductID() + "_" + item.ProcessSection() + "_" + item.Line();
+ id := item.OrganCode() + "_" + item.ProductID() + "_" + item.ProcessSection();
+ if( guard( item.Line(), "" ).Length() > 0 ) {
+ id := id + "_" + item.Line();
+ }
operation := Operation::FindOperationTypeIndex( id );
account := Account_MP::FindByName( this, "Operation cost" );
isfromdb := false;
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
index 07e9838..29e7e21 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationData.qbl
@@ -1,21 +1,22 @@
Quintiq file version 2.0
#parent: #root
Method MappingOperationData (
- Strings businessTypes
+ Strings businessTypes,
+ GlobalOTDTable globalOTDTable
)
{
TextBody:
[*
// yypsybs Aug-18-2023 (created)
// 鑾峰彇鏈夊簭鐨勫緟澶勭悊璁板綍
- toDealList := construct( MappingOperations );
+ toDealList := construct( Global_MappingOperations ) ;
if( not isnull( businessTypes ) and businessTypes.Size() > 0 ) {
- toDealList := selectsortedset( this, MappingOperation, item,
+ toDealList := selectsortedset( globalOTDTable, Global_MappingOperation, item,
businessTypes.Find( item.BusinessType() ) >= 0,
// businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0,
item.SequenceNumber() );
} else {
- toDealList := selectsortedset( this, MappingOperation, item,
+ toDealList := selectsortedset( globalOTDTable, Global_MappingOperation, item,
true,
item.SequenceNumber() );
}
@@ -76,7 +77,7 @@
0.0, 0.0, false, true );
}
- ManufactureLTProcessSection::CreateOrUpdate( op );
+ // ManufactureLTProcessSection::CreateOrUpdate( op );
}
info( "========" )
// 閬嶅巻routing锛岃繘琛宭ink
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
index 9a854ef..ab7398e 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
@@ -2,6 +2,7 @@
#parent: #root
Method MappingProductData (
Strings businesstypes,
+ GlobalOTDTable globalOTDTable,
Boolean iskeyproduct
)
{
@@ -11,21 +12,21 @@
// Administrator Aug-16-2023 (created)
// list to deal
info( "Get list to deal of product" );
- listToDeal := construct( structured[MappingProduct] );
+ listToDeal := construct( Global_MappingProduct_MPs );
if( isnull( businesstypes ) or businesstypes.Size() = 0 ) {
if( iskeyproduct = true ){
- listToDeal := selectset( this, MappingProduct, item, item.KeyProduct() = true );
+ listToDeal := selectset( globalOTDTable, Global_MappingProduct_MP, item, item.KeyProduct() = true );
}
else{
- listToDeal := selectset( this, MappingProduct, item, true );
+ listToDeal := selectset( globalOTDTable, Global_MappingProduct_MP, item, true );
}
} else {
if( iskeyproduct = true ){
- listToDeal := selectset( this, MappingProduct, item, item.KeyProduct() = true and businesstypes.Find( item.BusinessType()) >= 0 );
+ listToDeal := selectset( globalOTDTable, Global_MappingProduct_MP, item, item.KeyProduct() = true and businesstypes.Find( item.BusinessType()) >= 0 );
}
else{
- listToDeal := selectset( this, MappingProduct, item, businesstypes.Find( item.BusinessType()) >= 0 );
+ listToDeal := selectset( globalOTDTable, Global_MappingProduct_MP, item, businesstypes.Find( item.BusinessType()) >= 0 );
}
}
totalcount := listToDeal.Size();
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
index 2d63310..5052dc6 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
@@ -1,13 +1,15 @@
Quintiq file version 2.0
#parent: #root
-Method MappingProductInLaneData
+Method MappingProductInLaneData (
+ GlobalOTDTable globalOTDTable
+)
{
Description: 'Get Product In Line data'
TextBody:
[*
// Administrator Aug-17-2023 (created)
// list to deal
- listtodeal := selectset( this, MappingProductInLane, item ,true );
+ listtodeal := selectset( globalOTDTable, Global_MappingProductInLane, item ,true );
totalcount := listtodeal.Size();
info( "ProductInLane has " + totalcount.AsQUILL() + " rows in total" );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingSalesSegmentData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingSalesSegmentData.qbl
index 5f5e1aa..cf459b5 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingSalesSegmentData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingSalesSegmentData.qbl
@@ -1,7 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method MappingSalesSegmentData (
- Strings businessTypes
+ Strings businessTypes,
+ GlobalOTDTable globalOTDTable
)
{
Description: 'ETL閿�鍞儴闂�'
@@ -9,11 +10,11 @@
[*
// yypsybs Aug-15-2023 (created)
// 寰呭鐞嗘暟鎹�
- listToDeal := construct( structured[MappingSalesSegment] );
+ listToDeal := construct( Global_MappingSalesSegment_MPs );
if( isnull( businessTypes ) or businessTypes.Size() = 0 ) {
- listToDeal := selectset( this, MappingSalesSegment, item, true );
+ listToDeal := selectset( globalOTDTable, Global_MappingSalesSegment_MP, item, true );
} else {
- listToDeal := selectset( this, MappingSalesSegment, item, businessTypes.Find( item.BusinessType() ) <> -1 );
+ listToDeal := selectset( globalOTDTable, Global_MappingSalesSegment_MP, item, businessTypes.Find( item.BusinessType() ) <> -1 );
}
//nameList := construct( structured[String] );
//nameList := selectvalues( listToDeal, Elements, item, true, item.Name() );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
index 7c856ff..e826ddb 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
@@ -1,7 +1,8 @@
Quintiq file version 2.0
#parent: #root
Method MappingUnitData (
- Strings businesstypes
+ Strings businesstypes,
+ GlobalOTDTable globalOTDTable
)
{
Description: 'Get unit data from operation mapping'
@@ -9,12 +10,12 @@
[*
// Administrator Aug-21-2023 (created)
// list to deal
- listtodeal := construct( structured[MappingOperation] );
+ listtodeal := construct( Global_MappingOperations);
if( isnull( businesstypes ) or businesstypes.Size() = 0 ) {
- listtodeal := selectset( this, MappingOperation, item, true );
+ listtodeal := selectset( globalOTDTable, Global_MappingOperation, item, true );
} else {
- listtodeal := selectset( this, MappingOperation, item,
+ listtodeal := selectset( globalOTDTable, Global_MappingOperation, item,
// businesstypes.Difference( businesstypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0
businesstypes.Find( item.BusinessType() ) >= 0
);
@@ -41,12 +42,13 @@
infinite,
unitofmeasurename );
- Unit::CreateOrUpdate( this,
+ supplyunit := Unit::CreateOrUpdate( this,
"渚涘簲鍟�",
"渚涘簲鍟�",
"澶╅┈闆嗗洟",
infinite,
unitofmeasurename );
+ supplyunit.IsSupplier(true);
Unit::CreateOrUpdate( this,
"鏁磋溅杩愯緭",
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingUnitOfMeasureData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingUnitOfMeasureData.qbl
index 2c4ce55..f3118cb 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingUnitOfMeasureData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingUnitOfMeasureData.qbl
@@ -1,6 +1,8 @@
Quintiq file version 2.0
#parent: #root
-Method MappingUnitOfMeasureData
+Method MappingUnitOfMeasureData (
+ GlobalOTDTable globalotdtable
+)
{
Description: 'ETL鏁版嵁杞ā鍨嬫暟鎹�'
TextBody:
@@ -16,7 +18,7 @@
//error( "multi default unit of measure" )
}
- traverse( this, MappingUnitOfMeasure, item ) {
+ traverse( globalotdtable, Global_MappingUnitOfMeasure_MP, item ) {
UnitOfMeasure_MP::CreateOrUpdate( this, item.Name(), item.IsDefault() );
}
*]
diff --git "a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync\043618.qbl" "b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync\043618.qbl"
index c3d0398..9d29f63 100644
--- "a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync\043618.qbl"
+++ "b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync\043618.qbl"
@@ -4,7 +4,8 @@
MacroPlan macroPlan,
String businessTypeStr,
Boolean isKeyProduct,
- Boolean createPurchaseSupplyMaterial
+ Boolean createPurchaseSupplyMaterial,
+ GlobalOTDTable globalOTDTable
)
{
Description: '鍗曟鍚屾'
@@ -15,6 +16,6 @@
if( businessTypeStr.Length() > 0 ) {
businessTypes := businessTypeStr.Tokenize( ',' );
}
- MacroPlan::DoSync( macroPlan, businessTypes, isKeyProduct, createPurchaseSupplyMaterial );
+ MacroPlan::DoSync( macroPlan, businessTypes, isKeyProduct, createPurchaseSupplyMaterial ,globalOTDTable);
*]
}
diff --git a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync.qbl b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync.qbl
index 4609620..49fac75 100644
--- a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync.qbl
+++ b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync.qbl
@@ -3,7 +3,8 @@
StaticMethod DoSync (
MacroPlan macroPlan,
Boolean isKeyProduct,
- Boolean createPurchaseSupplyMaterial
+ Boolean createPurchaseSupplyMaterial,
+ GlobalOTDTable globalOTDTable
)
{
Description: '鍗曟鍚屾'
@@ -11,6 +12,6 @@
[*
// yypsybs Aug-17-2023 (created)
businessTypes := construct( Strings );
- MacroPlan::DoSync( macroPlan, businessTypes, isKeyProduct, createPurchaseSupplyMaterial );
+ MacroPlan::DoSync( macroPlan, businessTypes, isKeyProduct, createPurchaseSupplyMaterial ,globalOTDTable);
*]
}
diff --git a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
index 1375c53..b4361d5 100644
--- a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
+++ b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
@@ -4,7 +4,8 @@
MacroPlan macroPlan,
Strings businessTypes,
Boolean isKeyProduct,
- Boolean createPurchaseSupplyMaterial
+ Boolean createPurchaseSupplyMaterial,
+ GlobalOTDTable globalOTDTable
)
{
Description: '鍗曟鍚屾'
@@ -27,10 +28,17 @@
macroPlan.InitialUnitAndStockingPoint();
// 鍗曚綅-1
- UnitOfMeasure_MP::DoSync( macroPlan );
+ UnitOfMeasure_MP::DoSync( globalOTDTable,macroPlan );
// 閿�鍞儴闂�-2
- SalesSegment_MP::DoSync( macroPlan, businessTypes );
+ SalesSegment_MP::DoSync( macroPlan, businessTypes,globalOTDTable );
+
+ // Unit-9
+ // 涓嶰peration涓�鍚屽鐞�
+ //info( "BaseConversionFactor Finished, Start Operation Data Broker" );
+ //macroPlan.Broker_OTD_Operation().Execute();
+ info( "Operation Data Broker Finished, Start Unit Mapping" );
+ macroPlan.MappingUnitData( businessTypes ,globalOTDTable);
// 搴撳瓨鐐�-3
info( "Sales Segment Finished, Start Get StockingPoint From Api" )
@@ -63,29 +71,22 @@
macroPlan.ApiCurencyRatesData( data );
// 浜у搧鐗╂枡-6
- info( "Get CurrencyRates From Api Finished, Start Product Data Broker" )
- macroPlan.Broker_OTD_Product().Execute();
+ //info( "Get CurrencyRates From Api Finished, Start Product Data Broker" )
+ //macroPlan.Broker_OTD_Product().Execute();
info( "Product Data Broker Finished, Start Product Mapping" );
//testproduct := construct( Strings );
- macroPlan.MappingProductData( businessTypes, isKeyProduct );
+ macroPlan.MappingProductData( businessTypes, globalOTDTable,isKeyProduct );
//鍗曚綅杞崲-7
- BaseConversionFactor::DoSync( macroPlan );
-
- // Unit-9
- // 涓嶰peration涓�鍚屽鐞�
- info( "BaseConversionFactor Finished, Start Operation Data Broker" );
- macroPlan.Broker_OTD_Operation().Execute();
- info( "Operation Data Broker Finished, Start Unit Mapping" );
- macroPlan.MappingUnitData( businessTypes );
+ BaseConversionFactor::DoSync( macroPlan ,globalOTDTable);
// 宸ヨ壓璺嚎 + BOM-9
info( "Unit Finished, Start Operation Mapping" );
- macroPlan.MappingOperationData( businessTypes );
- info( "Operation Finished, Start BOM Data Broker" );
- macroPlan.Broker_OTD_BOM().Execute();
+ macroPlan.MappingOperationData( businessTypes ,globalOTDTable);
+ //info( "Operation Finished, Start BOM Data Broker" );
+ //macroPlan.Broker_OTD_BOM().Execute();
info( "BOM Data Broker Finished, Start BOM Mapping" );
- macroPlan.MappingOperationBOMData( businessTypes, isKeyProduct, createPurchaseSupplyMaterial );
+ macroPlan.MappingOperationBOMData( businessTypes, isKeyProduct, createPurchaseSupplyMaterial,globalOTDTable );
//杞﹂亾淇℃伅-10
info( "BOM Finished, Start Get Lanes From Api" );
@@ -108,37 +109,35 @@
macroPlan.ApiLaneLegsData( data );
// 渚涘簲缃戠粶锛堣溅閬擄級-12
- info( "Get Lanelegs From Api Finished, Start ProductInLane Data Broker" );
- macroPlan.Broker_OTD_ProductInLane().Execute();
+ //info( "Get Lanelegs From Api Finished, Start ProductInLane Data Broker" );
+ //macroPlan.Broker_OTD_ProductInLane().Execute();
info( "ProductInLane Data Broker Finished, Start ProductInLane Mapping" );
- macroPlan.MappingProductInLaneData();
+ macroPlan.MappingProductInLaneData(globalOTDTable);
// 鍦ㄥ簱搴撳瓨鏁版嵁-13
- info( "ProductInLane Finished, Start ActualPISPIP Data Broker" );
- macroPlan.Broker_OTD_ActualPISPIP().Execute();
+ //info( "ProductInLane Finished, Start ActualPISPIP Data Broker" );
+ //macroPlan.Broker_OTD_ActualPISPIP().Execute();
info( "ActualPISPIP Data Broker Finished, Start ActualPISPIP Mapping" );
- //macroPlan.MappingActualPISPIPData( businessTypes, true );
- macroPlan.MappingActualPISPIPData( businessTypes, isKeyProduct );
+ macroPlan.MappingActualPISPIPData( businessTypes, globalOTDTable,isKeyProduct );
// 鍦ㄩ�斿簱瀛�-14
- info( "ActualPISPIP Finished, Start ExternalSupply Data Broker" );
- macroPlan.Broker_OTD_ExternalSupply().Execute();
- //macroPlan.MappingExternalSupplyData( businessTypes, true );
+ //info( "ActualPISPIP Finished, Start ExternalSupply Data Broker" );
+ //macroPlan.Broker_OTD_ExternalSupply().Execute();
info( "ExternalSupply Data Broker Finished, Start ExternalSupply Mapping" );
- macroPlan.MappingExternalSupplyData( businessTypes, isKeyProduct );
+ macroPlan.MappingExternalSupplyData( businessTypes, isKeyProduct ,globalOTDTable);
// 搴撳瓨鎴愭湰-15
- InventoryValueAndCost::DoSync( macroPlan );
+ InventoryValueAndCost::DoSync( macroPlan,globalOTDTable );
// todo 鍒堕�犳垚鏈�-16
info( "InventoryCost Finished, Start OperationCost Mapping" );
- //macroPlan.MappingOperationCostData( businessTypes );
+ macroPlan.MappingOperationCostData( businessTypes );
// 璁㈠崟棰勬祴-17
- Forecast::DoSync( macroPlan, businessTypes );
+ Forecast::DoSync( macroPlan, businessTypes ,globalOTDTable);
// 璁㈠崟闇�姹�-18
- CustomerOrder::DoSync( macroPlan, businessTypes );
+ CustomerOrder::DoSync( macroPlan, businessTypes, globalOTDTable);
//鍒犻櫎澶氫綑鎶ラ敊鏁版嵁-19
macroPlan.DeleteSnaityCheck();
diff --git a/_Main/BL/Type_ManufactureLTImputation/StaticMethod_Transfer.qbl b/_Main/BL/Type_ManufactureLTImputation/StaticMethod_Transfer.qbl
index 650b697..ae70b83 100644
--- a/_Main/BL/Type_ManufactureLTImputation/StaticMethod_Transfer.qbl
+++ b/_Main/BL/Type_ManufactureLTImputation/StaticMethod_Transfer.qbl
@@ -8,26 +8,26 @@
Description: '绉讳氦鎺у埗鏉�'
TextBody:
[*
- // yypsybs Aug-25-2023 (created)
- if( isnull( oldMP ) ) {
- info( "========transfer ManufactureLTImputations to macroPlan " + [String]newMP.MDSID() + "========" );
- } else {
- info( "========transfer ManufactureLTImputations from macroPlan " + [String]oldMP.MDSID() + " to macroPlan " + [String]newMP.MDSID() + "========" );
- }
- // 娓呯┖鏂扮殑锛岃�佺殑澶嶅埗鍒版柊鐨勶紝娓呯┖鑰佺殑
- if( not isnull( oldMP ) and not isnull( newMP ) ) {
- info( "old ManufactureLTImputation size : " + [String]oldMP.ManufactureLTImputation( relsize ) )
- traverse( oldMP, ManufactureLTImputation, parent, true ) {
- traverse( parent, ManufactureLTProcessSection, child, true ) {
- ManufactureLTProcessSection::CreateOrUpdate( newMP, parent.OrgCode(), parent.SkuID(), parent.Describe(),
- child.ProcessSection(), child.Sequence(), child.Line(), child.SystemLT(),
- child.Edited(), child.EditLT(), child.Describe() );
- }
- }
- }
- // 澶勭悊鏂扮殑鐨刼peration
- traverse( newMP, Routing.RoutingStep.Operation, item ) {
- ManufactureLTProcessSection::CreateOrUpdate( item );
- }
+ //// yypsybs Aug-25-2023 (created)
+ //if( isnull( oldMP ) ) {
+ // info( "========transfer ManufactureLTImputations to macroPlan " + [String]newMP.MDSID() + "========" );
+ //} else {
+ // info( "========transfer ManufactureLTImputations from macroPlan " + [String]oldMP.MDSID() + " to macroPlan " + [String]newMP.MDSID() + "========" );
+ //}
+ //// 娓呯┖鏂扮殑锛岃�佺殑澶嶅埗鍒版柊鐨勶紝娓呯┖鑰佺殑
+ //if( not isnull( oldMP ) and not isnull( newMP ) ) {
+ // info( "old ManufactureLTImputation size : " + [String]oldMP.ManufactureLTImputation( relsize ) )
+ // traverse( oldMP, ManufactureLTImputation, parent, true ) {
+ // traverse( parent, ManufactureLTProcessSection, child, true ) {
+ // ManufactureLTProcessSection::CreateOrUpdate( newMP, parent.OrgCode(), parent.SkuID(), parent.Describe(),
+ // child.ProcessSection(), child.Sequence(), child.Line(), child.SystemLT(),
+ // child.Edited(), child.EditLT(), child.Describe() );
+ // }
+ // }
+ //}
+ //// 澶勭悊鏂扮殑鐨刼peration
+ //traverse( newMP, Routing.RoutingStep.Operation, item ) {
+ // ManufactureLTProcessSection::CreateOrUpdate( item );
+ //}
*]
}
diff --git a/_Main/BL/Type_ManufactureLTProcessSection/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_ManufactureLTProcessSection/StaticMethod_CreateOrUpdate.qbl
index 8d40621..fe55479 100644
--- a/_Main/BL/Type_ManufactureLTProcessSection/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_ManufactureLTProcessSection/StaticMethod_CreateOrUpdate.qbl
@@ -30,11 +30,11 @@
line := operationNameSplit.Element( 2 );
}
child := null( ManufactureLTProcessSection );
- if( orgCode <> "" and productId <> "" and processStep <> "" and sequence <> "" ) {
- parent := ManufactureLTImputation::CreateOrUpdate( op.RoutingStep().Routing().MacroPlan(), orgCode, productId, "" );
- info( "DaysAsReal : " + [String]op.UserLeadTime().DaysAsReal() );
- child := ManufactureLTProcessSection::CreateOrUpdate( parent, processStep, false, sequence, line, op.UserLeadTime().DaysAsReal(), 0.0, "" );
- }
+ //if( orgCode <> "" and productId <> "" and processStep <> "" and sequence <> "" ) {
+ // parent := ManufactureLTImputation::CreateOrUpdate( op.RoutingStep().Routing().MacroPlan(), orgCode, productId, "" );
+ // info( "DaysAsReal : " + [String]op.UserLeadTime().DaysAsReal() );
+ // child := ManufactureLTProcessSection::CreateOrUpdate( parent, processStep, false, sequence, line, op.UserLeadTime().DaysAsReal(), 0.0, "" );
+ //}
return child;
*]
}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_ExpectedHeaders.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_ExpectedHeaders.qbl
new file mode 100644
index 0000000..d7275ba
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_ExpectedHeaders.qbl
@@ -0,0 +1,64 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ExpectedHeaders () as owning Strings
+{
+ TextBody:
+ [*
+ // yypsybs Jun-30-2023 (created)
+ value := construct( structured[String] );
+ value.Add( "鍒犻櫎鏍囪" );
+ value.Add( "骞翠唤" );
+ value.Add( "涓氬姟閮ㄩ棬" );
+ value.Add( "鏄剧ず鎶�鏈垎绫�" );
+ value.Add( "涓氬姟鍒嗙被" );
+ value.Add( "浜у搧绾�/浜у搧瑙勬牸" );
+ value.Add( "浜у搧鏂欏彿" );
+ value.Add( "Array浜у湴" );
+ value.Add( "钂搁晙浜у湴" );
+ value.Add( "鍒嗚鲸鐜�" );
+ value.Add( "鍑鸿揣褰㈡��" );
+ value.Add( "鍒囧壊鏁�" );
+ value.Add( "浜ц兘褰撻噺" );
+ value.Add( "mask鏁�" );
+ value.Add( "1鏈堜骇鑳�(PCS)" );
+ value.Add( "2鏈堜骇鑳�(PCS)" );
+ value.Add( "3鏈堜骇鑳�(PCS)" );
+ value.Add( "4鏈堜骇鑳�(PCS)" );
+ value.Add( "5鏈堜骇鑳�(PCS)" );
+ value.Add( "6鏈堜骇鑳�(PCS)" );
+ value.Add( "7鏈堜骇鑳�(PCS)" );
+ value.Add( "8鏈堜骇鑳�(PCS)" );
+ value.Add( "9鏈堜骇鑳�(PCS)" );
+ value.Add( "10鏈堜骇鑳�(PCS)" );
+ value.Add( "11鏈堜骇鑳�(PCS)" );
+ value.Add( "12鏈堜骇鑳�(PCS)" );
+ value.Add( "骞翠骇鑳�(PCS)" );
+ value.Add( "1鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "2鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "3鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "4鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "5鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "6鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "7鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "8鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "9鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "10鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "11鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "12鏈堜骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "骞翠骇鑳�(瀹炴暟澶у紶)" );
+ value.Add( "1鏈堥攢鍞(W)" );
+ value.Add( "2鏈堥攢鍞(W)" );
+ value.Add( "3鏈堥攢鍞(W)" );
+ value.Add( "4鏈堥攢鍞(W)" );
+ value.Add( "5鏈堥攢鍞(W)" );
+ value.Add( "6鏈堥攢鍞(W)" );
+ value.Add( "7鏈堥攢鍞(W)" );
+ value.Add( "8鏈堥攢鍞(W)" );
+ value.Add( "9鏈堥攢鍞(W)" );
+ value.Add( "10鏈堥攢鍞(W)" );
+ value.Add( "11鏈堥攢鍞(W)" );
+ value.Add( "12鏈堥攢鍞(W)" );
+ value.Add( "骞撮攢鍞(W)" );
+ return &value;
+ *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_Export.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_Export.qbl
new file mode 100644
index 0000000..c469165
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_Export.qbl
@@ -0,0 +1,73 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ MPSync parent
+) as String
+{
+ TextBody:
+ [*
+ // yypsybs Jul-1-2023 (created)
+ xmlTemplate := '<?xml version="1.0" encoding="UTF-16"?>
+ <table>
+ <name>MappingCapacityAndSaleBudge</name>
+ ';
+ //---------------------------------------------------------------------------------------------
+ exportFields := MappingCapacityAndSaleBudge::ExportFields();
+ exportHeaders := MappingCapacityAndSaleBudge::ExpectedHeaders();
+ if( exportFields.Size() <> exportHeaders.Size() ) {
+ error( "fields and headers not match" );
+ }
+ info( "export start" );
+ for( i := 0; i < exportFields.Size() ; i++ ) {
+ header := exportHeaders.Element( i );
+ fieldName := exportFields.Element( i );
+ info( "header : " + header )
+ info( "fieldName : " + fieldName )
+ columnStr := "<column><name>" + header + "</name><type>String</type>";
+ traverse( parent, MappingCapacityAndSaleBudge, oldRecord ) {
+ field := Reflection::FindAttribute( "MappingCapacityAndSaleBudge", fieldName);
+ if( not isnull( field ) ) {
+ fieldValue := "";
+ if( fieldValue = "" ) {
+ fieldValue := guard( field.GetString( oldRecord ), "" );
+ }
+ if( fieldValue = "" ) {
+ fieldValue := guard( [String]field.GetNumber( oldRecord ), "" );
+ }
+ if( fieldValue = "" ) {
+ fieldValue := guard( [String]field.GetReal( oldRecord ), "" );
+ }
+ if( fieldValue = "" ) {
+ fieldValue := guard( ifexpr( field.GetBoolean( oldRecord ), "Y", "N" ), "" );
+ }
+ if( fieldValue = "" ) {
+ fileDateValue := guard( field.GetDate( oldRecord ), Date::MinDate() );
+ if( fileDateValue <> Date::MinDate() ) {
+ conv := DateTimeToString::StandardConverter();
+ conv.SetCustomConversion();
+ conv.CustomFormatString( 'yyyyMMdd' );
+ fieldValue := conv.Convert( fileDateValue.DateTime() );
+ }
+ }
+ cellStr := '<cell value="' + fieldValue + '"/>';
+
+ columnStr := columnStr + cellStr;
+ } else {
+ error( "no field " + fieldName + " in type MappingCapacityAndSaleBudge");
+ }
+ }
+ columnStr := columnStr + "</column>";
+ xmlTemplate := xmlTemplate + columnStr;
+ }
+ //---------------------------------------------------------------------------------------------
+ xmlTemplate := xmlTemplate + "</table>";
+ info( xmlTemplate );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlTemplate ) );
+ XLS::SaveTable( tableHandle, OS::TempPath() + "MappingCapacityAndSaleBudge.xlsx" );
+ file := OSFile::Construct();
+ file.Open( OS::TempPath() + "MappingCapacityAndSaleBudge.xlsx", "Read", true );
+ data := file.ReadBinary()
+ info( "export end" );
+ return data.AsBase64EncodedString();
+ *]
+}
diff --git a/_Main/BL/Type_MappingSaleBudge/StaticMethod_ExportFields.qbl b/_Main/BL/Type_MappingSaleBudge/StaticMethod_ExportFields.qbl
new file mode 100644
index 0000000..58b6447
--- /dev/null
+++ b/_Main/BL/Type_MappingSaleBudge/StaticMethod_ExportFields.qbl
@@ -0,0 +1,64 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ExportFields () as owning Strings
+{
+ TextBody:
+ [*
+ // yypsybs Jun-30-2023 (created)
+ value := construct( structured[String] );
+ value.Add( "Deleted" );
+ value.Add( "YearNo" );
+ value.Add( "OrgCode" );
+ value.Add( "DisplayTechnology" );
+ value.Add( "BusinessType" );
+ value.Add( "LineAndSpecification" );
+ value.Add( "ProductCode" );
+ value.Add( "PlaceOfProductionOfArray" );
+ value.Add( "PlaceOfProductionOfEvaporation" );
+ value.Add( "Resolution" );
+ value.Add( "ShippingForm" );
+ value.Add( "NumberOfCut" );
+ value.Add( "CapacityEquivalent" );
+ value.Add( "NumberOfMask" );
+ value.Add( "CapacityInPCSInMonth1" );
+ value.Add( "CapacityInPCSInMonth2" );
+ value.Add( "CapacityInPCSInMonth3" );
+ value.Add( "CapacityInPCSInMonth4" );
+ value.Add( "CapacityInPCSInMonth5" );
+ value.Add( "CapacityInPCSInMonth6" );
+ value.Add( "CapacityInPCSInMonth7" );
+ value.Add( "CapacityInPCSInMonth8" );
+ value.Add( "CapacityInPCSInMonth9" );
+ value.Add( "CapacityInPCSInMonth10" );
+ value.Add( "CapacityInPCSInMonth11" );
+ value.Add( "CapacityInPCSInMonth12" );
+ value.Add( "CapacityInPCSTotal" );
+ value.Add( "CapacityInSheetInMonth1" );
+ value.Add( "CapacityInSheetInMonth2" );
+ value.Add( "CapacityInSheetInMonth3" );
+ value.Add( "CapacityInSheetInMonth4" );
+ value.Add( "CapacityInSheetInMonth5" );
+ value.Add( "CapacityInSheetInMonth6" );
+ value.Add( "CapacityInSheetInMonth7" );
+ value.Add( "CapacityInSheetInMonth8" );
+ value.Add( "CapacityInSheetInMonth9" );
+ value.Add( "CapacityInSheetInMonth10" );
+ value.Add( "CapacityInSheetInMonth11" );
+ value.Add( "CapacityInSheetInMonth12" );
+ value.Add( "CapacityInSheetTotal" );
+ value.Add( "SaleAmountInMonth1" );
+ value.Add( "SaleAmountInMonth2" );
+ value.Add( "SaleAmountInMonth3" );
+ value.Add( "SaleAmountInMonth5" );
+ value.Add( "SaleAmountInMonth4" );
+ value.Add( "SaleAmountInMonth6" );
+ value.Add( "SaleAmountInMonth7" );
+ value.Add( "SaleAmountInMonth8" );
+ value.Add( "SaleAmountInMonth9" );
+ value.Add( "SaleAmountInMonth10" );
+ value.Add( "SaleAmountInMonth11" );
+ value.Add( "SaleAmountInMonth12" );
+ value.Add( "SaleAmountTotal" );
+ return &value;
+ *]
+}
diff --git a/_Main/BL/Type_Operation/Method_GetHasValidOperationInputOutput.qbl b/_Main/BL/Type_Operation/Method_GetHasValidOperationInputOutput.qbl
new file mode 100644
index 0000000..09ae8ea
--- /dev/null
+++ b/_Main/BL/Type_Operation/Method_GetHasValidOperationInputOutput.qbl
@@ -0,0 +1,38 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetHasValidOperationInputOutput (
+ output Strings feedback_o,
+ output Strings sanitycheckfeedback_o
+) declarative remote #extension
+{
+ TextBody:
+ [*
+ // desmondt Oct-3-2014 (created)
+ feedback := '';
+ sanitycheckfeedback := ''
+
+ if( ( this.Unit().QuantityToProcess() = GlobalParameters_MP::GetQTProcessIn()
+ or not this.Unit().IsSupplier() ) // Tianma change 20230925: If the unit is not a supplier, raise a data issue if there's no input
+ and this.OperationInput( relsize ) = 0 )
+ {
+ feedback := Translations::MP_Operation_ViolateHasValidOperationInputOutput_NoOperationInput();
+ sanitycheckfeedback_o.Add( SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue() );
+ }
+ else if( this.Unit().QuantityToProcess() = GlobalParameters_MP::GetQTProcessOut()
+ and this.OperationOutput( relsize ) = 0 )
+ {
+ feedback := Translations::MP_Operation_ViolateHasValidOperationInputOutput_NoOperationOutput();
+ sanitycheckfeedback := SanityCheckCategoryLevel::GetSanityCheckCategoryDataIssue();
+ }
+
+ if( not isnull( feedback_o ) and feedback <> '' )
+ {
+ name := MacroPlan::GetSubstituteName( this.Name() ); // To avoid empty name/name too long
+ feedback_o.Add( SanityCheckMessage::GetFormattedMessage( Translations::MP_Process_Instance( this.DefinitionName(), name ),
+ feedback ) );
+ sanitycheckfeedback_o.Add( sanitycheckfeedback );
+ }
+
+ return feedback = '';
+ *]
+}
diff --git a/_Main/BL/Type_Operation/Method_OnCommitCustom.qbl b/_Main/BL/Type_Operation/Method_OnCommitCustom.qbl
index b714ef0..650047b 100644
--- a/_Main/BL/Type_Operation/Method_OnCommitCustom.qbl
+++ b/_Main/BL/Type_Operation/Method_OnCommitCustom.qbl
@@ -5,7 +5,7 @@
TextBody:
[*
// yypsybs Aug-25-2023 (created)
- info( "Operation::OnCommitCustom" )
- ManufactureLTProcessSection::CreateOrUpdate( this );
+ //info( "Operation::OnCommitCustom" )
+ //ManufactureLTProcessSection::CreateOrUpdate( this );
*]
}
diff --git a/_Main/BL/Type_SalesSegment_MP/StaticMethod_DoSync.qbl b/_Main/BL/Type_SalesSegment_MP/StaticMethod_DoSync.qbl
index ef1ffae..cd9e1c1 100644
--- a/_Main/BL/Type_SalesSegment_MP/StaticMethod_DoSync.qbl
+++ b/_Main/BL/Type_SalesSegment_MP/StaticMethod_DoSync.qbl
@@ -2,15 +2,16 @@
#parent: #root
StaticMethod DoSync (
MacroPlan macroPlan,
- Strings businessTypes
+ Strings businessTypes,
+ GlobalOTDTable globalOTDTable
)
{
TextBody:
[*
// yypsybs Aug-17-2023 (created)
- info( "UnitOfMeasure_MP Finished, Start Sales Segment Data Broker" )
- macroPlan.Broker_OTD_SalesSegment().Execute();
+ //info( "UnitOfMeasure_MP Finished, Start Sales Segment Data Broker" )
+ //macroPlan.Broker_OTD_SalesSegment().Execute();
info( "Sales Segment Data Broker Finished, Start Sales Segment Mapping" )
- macroPlan.MappingSalesSegmentData( businessTypes );
+ macroPlan.MappingSalesSegmentData( businessTypes,globalOTDTable );
*]
}
diff --git "a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart\04395.qbl" "b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart\04395.qbl"
index 2c07b9d..c543694 100644
--- "a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart\04395.qbl"
+++ "b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart\04395.qbl"
@@ -2,7 +2,7 @@
#parent: #root
Method CapacityAndSaleBudgeChart (
MacroPlans macroPlans,
- Boolean isCapacity,
+ String saleOrCapacity,
String groupBy,
String byBusinessTypeOrByOrgCode,
CapacityAndSaleBudgeFilterBusinessTypes businessTypes,
@@ -19,7 +19,7 @@
[*
// yypsybs Sep-19-2023 (created)
// true, false
- info( isCapacity );
+ info( saleOrCapacity );
// 鏈�;瀛e害;鍗婂勾;骞�
info( groupBy );
// 闈㈡澘鍩哄湴;浜嬩笟閮�
@@ -82,18 +82,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, year.YearNo() ),
- MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, year.YearNo() ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, year.YearNo() ),
+ MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, year.YearNo() ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() ),
- MappingCustomerOrder::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCustomerOrder::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() ),
+ Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() )
)
);
}
@@ -106,18 +106,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ),
- MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ),
+ MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo ),
- MappingCustomerOrder::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCustomerOrder::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo ),
+ Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo )
)
);
}
@@ -134,9 +134,9 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-绗�" + [String]seasonNo + "瀛e害-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ),
- MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ),
+ MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ) )
);
// info( "productCodeList : " + [String]productCodeList.Size() );
// S&OP
@@ -144,9 +144,9 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-绗�" + [String]seasonNo + "瀛e害-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo ),
- MappingCustomerOrder::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCustomerOrder::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo ) ,
+ Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo )
)
);
}
@@ -162,18 +162,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-绗�" + monthNoString + "鏈�-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ),
- MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ),
+ MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-绗�" + monthNoString + "鏈�-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() ),
- MappingCustomerOrder::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCustomerOrder::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() ),
+ Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() )
)
);
}
@@ -188,18 +188,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, year.YearNo() ),
- MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, year.YearNo() ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, year.YearNo() ),
+ MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, year.YearNo() ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() ),
- MappingCustomerOrder::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCustomerOrder::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() ) ,
+ Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, year.YearNo() )
)
);
}
@@ -212,18 +212,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ),
- MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ),
+ MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, year.YearNo(), halfNo ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo ),
- MappingCustomerOrder::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCustomerOrder::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo ) ,
+ Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, year.YearNo(), halfNo )
)
);
}
@@ -238,18 +238,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-绗�" + [String]seasonNo + "瀛e害-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ),
- MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ),
+ MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, year.YearNo(), seasonNo ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-绗�" + [String]seasonNo + "瀛e害-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo ),
- MappingCustomerOrder::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCustomerOrder::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo ),
+ Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, year.YearNo(), seasonNo )
)
);
}
@@ -266,18 +266,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-绗�" + monthNoString + "鏈�-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ),
- MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ),
+ MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, year.YearNo(), month.MonthNo() ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year.YearNo() + "骞�-绗�" + monthNoString + "鏈�-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() ),
- MappingCustomerOrder::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingCustomerOrder::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() ) ,
+ Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, year.YearNo(), month.MonthNo() )
)
);
}
diff --git a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
index 2f62201..fbb2caf 100644
--- a/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
+++ b/_Main/BL/Type_ScenarioManager/Method_CapacityAndSaleBudgeChart.qbl
@@ -2,7 +2,7 @@
#parent: #root
Method CapacityAndSaleBudgeChart (
MacroPlans macroPlans,
- Boolean isCapacity,
+ String saleOrCapacity,
String groupBy,
String byBusinessTypeOrByOrgCode,
String businessTypeChosen,
@@ -22,7 +22,7 @@
[*
// yypsybs Sep-19-2023 (created)
// true, false
- info( isCapacity );
+ info( saleOrCapacity );
// 鏈�;瀛e害;鍗婂勾;骞�
info( groupBy );
// 闈㈡澘鍩哄湴;浜嬩笟閮�
@@ -61,20 +61,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ),
- // todo QID 23
- MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ),
+ MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ),
- // todo
- 0.0 )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ 0.0,
+ Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ) )
);
}
}
@@ -86,18 +84,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
- MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
+ MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ),
- 0.0 )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ 0.0,
+ Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ) )
);
}
}
@@ -113,9 +111,9 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
- MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
+ MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) )
);
// info( "productCodeList : " + [String]productCodeList.Size() );
// S&OP
@@ -123,9 +121,9 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ),
- 0.0 )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ 0.0,
+ Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ) )
);
}
}
@@ -139,18 +137,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-绗�" + monthNoString + "鏈�-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
- MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
+ MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-绗�" + monthNoString + "鏈�-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := placeOfProductionOfArray,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ),
- 0.0 )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ 0.0,
+ Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ) )
);
}
}
@@ -163,18 +161,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ),
- MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByYear( productCodeList, mpSync, [Number]year ),
+ MappingCapacityAndSaleBudge::GetSheetByYear( productCodeList, mpSync, [Number]year ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ),
- 0.0 )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ 0.0,
+ Product_MP::GetNewSupplyByYear( productCodeList, macroPlan, [Number]year ) )
);
}
}
@@ -186,18 +184,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
- MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ),
+ MappingCapacityAndSaleBudge::GetSheetByHalfYear( productCodeList, mpSync, [Number]year, halfNo ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-" + ifexpr( halfNo = 1, "涓�", "涓�" ) + "鍗婂勾-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ),
- 0.0 )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ 0.0,
+ Product_MP::GetNewSupplyByHalfYear( productCodeList, macroPlan, [Number]year, halfNo ) )
);
}
}
@@ -210,18 +208,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
- MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ),
+ MappingCapacityAndSaleBudge::GetSheetBySeason( productCodeList, mpSync, [Number]year, seasonNo ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-绗�" + [String]seasonNo + "瀛e害-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ),
- 0.0 )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ 0.0,
+ Product_MP::GetNewSupplyBySeason( productCodeList, macroPlan, [Number]year, seasonNo ) )
);
}
}
@@ -235,18 +233,18 @@
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-绗�" + monthNoString + "鏈�-鐩爣",
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
- MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ MappingAnnualBudget::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ),
+ MappingCapacityAndSaleBudge::GetSheetByMonth( productCodeList, mpSync, [Number]year, monthNo ) )
);
// S&OP
traverse( macroPlans, Elements, macroPlan ) {
this.CapacityAndSaleBudgeChartElement( relnew,
TimeStringAndScenarioName := [String]year + "骞�-绗�" + monthNoString + "鏈�-" + macroPlan.ScenarioName(),
BusinessTypeOrPlaceOfProductionOfArray := businessType,
- Quantity := ifexpr( isCapacity,
- Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ),
- 0.0 )
+ Quantity := ifexpr( saleOrCapacity = "閿�鍞",
+ 0.0,
+ Product_MP::GetNewSupplyByMonth( productCodeList, macroPlan, [Number]year, monthNo ) )
);
}
}
diff --git a/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpoint.qbl b/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpoint.qbl
index aff8971..857199b 100644
--- a/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpoint.qbl
+++ b/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpoint.qbl
@@ -33,7 +33,7 @@
// Update
result.Update( unitid, id, name, unitofmeasurename, currencyname, isplannedinfinite, datestart, dateend, groupname, description, isfromdb );
};
-
+ result.IsPlannedInfinite(true);
return result;
*]
}
diff --git a/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl b/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl
index e4dae0e..9fdcd8b 100644
--- a/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl
+++ b/_Main/BL/Type_StockingPoint_MP/StaticMethod_CreateStockingpointFromJson.qbl
@@ -13,6 +13,11 @@
unitid := datarow.Get( "unitid" ).GetString();
name := datarow.Get( "name" ).GetString();
+ unit := Unit::FindUnitTypeIndex( unitid);
+ if( isnull( unit)){
+ unitid := "鐢熶骇";
+ }
+
result := StockingPoint_MP::CreateStockingpoint( mp, id, unitid, name );
return result;
diff --git a/_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl
index df72958..5806f00 100644
--- a/_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl
@@ -7,7 +7,7 @@
String parentunitid,
String capacitytype,
String unitofmeasurename
-)
+) as Unit
{
TextBody:
[*
@@ -21,7 +21,7 @@
unit := Unit::FindById( owner, id );
if( id="澶╅┈闆嗗洟" and isnull( unit ) ){
- owner.Unit( relnew,
+ unit := owner.Unit( relnew,
ID := id,
Name := name,
UnitOfMeasureName := unitofmeasurename,
@@ -31,7 +31,7 @@
CapacityType := capacitytype );
}else{
if( isnull( unit ) ){
- owner.Unit( relnew, ID := id,
+ unit := owner.Unit( relnew, ID := id,
Name := name,
ParentUnitID := parentunitid,
CapacityType := capacitytype,
@@ -46,5 +46,7 @@
unit.UnitOfMeasureName( unitofmeasurename );
}
}
+
+ return unit;
*]
}
diff --git a/_Main/BL/Type_UnitOfMeasure_MP/StaticMethod_DoSync.qbl b/_Main/BL/Type_UnitOfMeasure_MP/StaticMethod_DoSync.qbl
index f5ea0a0..7393582 100644
--- a/_Main/BL/Type_UnitOfMeasure_MP/StaticMethod_DoSync.qbl
+++ b/_Main/BL/Type_UnitOfMeasure_MP/StaticMethod_DoSync.qbl
@@ -1,16 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod DoSync (
- MacroPlan macroPlan
+ GlobalOTDTable globalotdtable,
+ MacroPlan macroplan
)
{
Description: '鍗曟鍚屾'
TextBody:
[*
// yypsybs Aug-17-2023 (created)
- info( "Inital Finished, Start UnitOfMeasure_MP Data Broker" )
- macroPlan.Broker_OTD_UnitOfMeasure().Execute();
+ //info( "Inital Finished, Start UnitOfMeasure_MP Data Broker" )
+ //macroPlan.Broker_OTD_UnitOfMeasure().Execute();
info( "UnitOfMeasure_MP Data Broker Finished, Start UnitOfMeasure_MP Mapping" )
- macroPlan.MappingUnitOfMeasureData();
+ macroplan.MappingUnitOfMeasureData(globalotdtable);
*]
}
diff --git a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def
index 7b1da32..e164af9 100644
--- a/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def
+++ b/_Main/UI/MacroPlanner/Component_FormTestButtonCollection/Response_Button398_OnClick.def
@@ -5,7 +5,7 @@
#keys: '[414702.0.340554926]'
Body:
[*
- CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan );
+ CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan, SelectionScenario.Data() );
*]
CanBindMultiple: false
DefinitionID: 'Responsedef_GUIButtonBase_OnClick'
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgTest.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgTest.def
new file mode 100644
index 0000000..e7f2aa2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgTest.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component abgTest
+{
+ #keys: '[414702.0.358311816]'
+ BaseType: 'WebActionBarGroup'
+ Children:
+ [
+ Component btnTest
+ {
+ #keys: '[414702.0.358311907]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'WATER_FISH'
+ Label: '娴嬭瘯瑙嗗浘'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 4
+ Title: 'TestView'
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef\0431.def"
new file mode 100644
index 0000000..42787dc
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_applicationDevelopmentActionBarPageDef\0431.def"
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component applicationDevelopmentActionBarPageDef id:applicationDevelopmentActionBarPageDef_1 #extension
+{
+ Children:
+ [
+ #child: abgTest
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgTest_btnTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgTest_btnTest_OnClick.def
new file mode 100644
index 0000000..8b67882
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_TIANMA_JITUAN_abgTest_btnTest_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgTest/btnTest
+Response OnClick () id:Response_TIANMA_JITUAN_abgTest_btnTest_OnClick
+{
+ #keys: '[414702.0.358346189]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Test", true );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
index 2ee31ab..b0bcb6e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/_ROOT_Component_ApplicationMacroPlanner.def
@@ -11,6 +11,7 @@
[
#child: ActionBarPageData
#child: ActionBarPageSales
+ #child: applicationDevelopmentActionBarPageDef_1
]
}
Component DataHolderCapacityAndSaleBudgeFilterItem
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlActions.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlActions.def
new file mode 100644
index 0000000..0e13477
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlActions.def
@@ -0,0 +1,40 @@
+Quintiq file version 2.0
+Component pnlActions
+{
+ #keys: '[414702.0.373821470]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component btnOk
+ {
+ #keys: '[414702.0.373821474]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'OK'
+ Taborder: 0
+ ]
+ }
+ Component btnCancel
+ {
+ #keys: '[414702.0.373821476]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Cancel'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Alignment: 'trailing'
+ Border: true
+ ExcludeFromActiveComponent: true
+ FixedSize: true
+ Orientation: 'horizontal'
+ Padding: 'true'
+ Style: 'footer'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlContent.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlContent.def
new file mode 100644
index 0000000..f885a86
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Component_pnlContent.def
@@ -0,0 +1,58 @@
+Quintiq file version 2.0
+Component pnlContent
+{
+ #keys: '[414702.0.373821468]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component efPanelMaterialCode
+ {
+ #keys: '[414702.0.375722232]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'DataHolderDialogData.Data.PanelMaterialCode'
+ Label: '闈㈡澘鐗╂枡缂栫爜'
+ Taborder: 0
+ ]
+ }
+ Component efModuleMaterialCode
+ {
+ #keys: '[414702.0.375722245]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'DataHolderDialogData.Data.ModuleMaterialCode'
+ Label: '妯℃澘浜ф垚鍝両D'
+ Taborder: 1
+ ]
+ }
+ Component efDivision
+ {
+ #keys: '[414702.0.375722257]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'DataHolderDialogData.Data.Division'
+ Label: '浜嬩笟閮�'
+ Taborder: 2
+ ]
+ }
+ Component efStockingPointID
+ {
+ #keys: '[414702.0.375874061]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ DataBinding: 'DataHolderDialogData.Data.StockingPointID'
+ Label: '妯$粍浜ф垚鍝佸簱瀛樼偣ID'
+ Taborder: 3
+ ]
+ }
+ ]
+ Properties:
+ [
+ Padding: 'true'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Method_Edit.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Method_Edit.def
new file mode 100644
index 0000000..77662e1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Method_Edit.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method Edit (
+ CapacityAllocationResultsRuleConfiguration selection
+) id:Method_DialogCreateEditCapacityAllocationResultsRuleConfiguration_Edit
+{
+ #keys: '[414702.0.375759040]'
+ Body:
+ [*
+ // Edits assumption
+ data := shadow( selection );
+
+ DataHolderDialogData.Data( &data );
+
+ ApplicationMacroPlanner.ShowFormModal( this );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Method_New.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Method_New.def
new file mode 100644
index 0000000..fa8fb18
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Method_New.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+#parent: #root
+Method New () id:Method_DialogCreateEditCapacityAllocationResultsRuleConfiguration_New
+{
+ #keys: '[414702.0.375317354]'
+ Body:
+ [*
+ capacityAllocationResultsRuleConfiguration := GlobalOTDTable.CapacityAllocationResultsRuleConfiguration( relshadow );
+
+ DataHolderDialogData.Data( &capacityAllocationResultsRuleConfiguration );
+
+ ApplicationMacroPlanner.ShowFormModal( this );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnCancel_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnCancel_OnClick.def
new file mode 100644
index 0000000..057d12d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnCancel_OnClick.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnCancel
+Response OnClick () id:Response_pnlActions_btnCancel_OnClick
+{
+ #keys: '[414702.0.373821480]'
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ Form.Close();
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnOk_OnClick.def
new file mode 100644
index 0000000..336e9a8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/Response_pnlActions_btnOk_OnClick.def
@@ -0,0 +1,34 @@
+Quintiq file version 2.0
+#parent: pnlActions/btnOk
+Response OnClick () id:Response_pnlActions_btnOk_OnClick
+{
+ #keys: '[414702.0.373821479]'
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ Form.ApplyChanges();
+
+ data := DataHolderDialogData.Data().WrappedInstance();
+ if ( isnull( data ) ) {
+ GlobalOTDTable.CapacityAllocationResultsRuleConfiguration( relnew,
+ PanelMaterialCode := efPanelMaterialCode.Text(),
+ ModuleMaterialCode := efModuleMaterialCode.Text(),
+ Division := efDivision.Text(),
+ StockingPointID := efStockingPointID.Text()
+ );
+ } else {
+ DataHolderDialogData.Data().PanelMaterialCode( efPanelMaterialCode.Text() );
+ DataHolderDialogData.Data().ModuleMaterialCode( efModuleMaterialCode.Text() );
+ DataHolderDialogData.Data().Division( efDivision.Text() );
+ DataHolderDialogData.Data().StockingPointID( efStockingPointID.Text() );
+ DataHolderDialogData.Data().Commit();
+ }
+
+
+ Form.Close();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/_ROOT_Component_DialogCreateEditCapacityAllocationResultsRuleConfiguration.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/_ROOT_Component_DialogCreateEditCapacityAllocationResultsRuleConfiguration.def
new file mode 100644
index 0000000..76da375
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCapacityAllocationResultsRuleConfiguration/_ROOT_Component_DialogCreateEditCapacityAllocationResultsRuleConfiguration.def
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent DialogCreateEditCapacityAllocationResultsRuleConfiguration
+{
+ #keys: '[414702.0.373821466]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pnlContent
+ #child: pnlActions
+ Component DataHolderDialogData
+ {
+ #keys: '[414702.0.375413793]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'shadow[CapacityAllocationResultsRuleConfiguration]*'
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Alignment: 'trailing'
+ EnterButton: 'btnOk'
+ EscapeButton: 'btnCancel'
+ ExcludeFromActiveComponent: true
+ Image: 'BEAR'
+ Padding: 'false'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def
index 5d283ea..b8022af 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditScenario/Method_OnOk.def
@@ -108,7 +108,7 @@
// sync data
if( data.EnableSync() ) {
MacroPlan::DoSync( macroPlanNew,
- data.BusinessType(), data.IsKeyProduct(), data.CreatePurchaseSupplyMaterial() );
+ data.BusinessType(), data.IsKeyProduct(), data.CreatePurchaseSupplyMaterial() ,GlobalOTDTable);
}
this.Close();
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_ListCapacityAllocationResults.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_ListCapacityAllocationResults.def
index c07b922..27d0374 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_ListCapacityAllocationResults.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_ListCapacityAllocationResults.def
@@ -1,26 +1,26 @@
Quintiq file version 2.0
Component ListCapacityAllocationResults
{
- #keys: '[414702.0.338762075]'
+ #keys: '[414702.0.390053833]'
BaseType: 'WebList'
Children:
[
Component DataExtractorCapacityAllocationResults
{
- #keys: '[414702.0.338762076]'
+ #keys: '[414702.0.390053834]'
BaseType: 'WebDataExtractor'
Properties:
[
- DataType: 'GlobalOTDTable'
- Source: 'GlobalOTDTable'
+ DataType: 'structured[CapacityAllocationResultsRuleConfiguration]'
+ Source: 'FormCapacityAllocationResultsRuleConfiguration.DataHolderSelectCapacityAllocationResultsRuleConfiguration'
Taborder: 0
- Transformation: 'CapacityAllocationResults'
+ Transformation: 'Elements.CapacityAllocationResults'
]
}
#child: listActionBarPageCapacityAllocationResults
Component DataSetLevelCapacityAllocationResults
{
- #keys: '[414702.0.338762081]'
+ #keys: '[414702.0.390053839]'
BaseType: 'WebDataSetLevel'
Children:
[
@@ -28,7 +28,7 @@
]
Properties:
[
- Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VersionNumber","title":"VersionNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VersionNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelMeasurementUnit","title":"PanelMeasurementUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelMeasurementUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelMaterialCode","title":"PanelMaterialCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelMaterialCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfPanels","title":"NumberOfPanels","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfPanels"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelMeasurementUnit","title":"PanelMeasurementUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelMeasurementUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleMaterialCode","title":"ModuleMaterialCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleMaterialCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NumberOfModules","title":"NumberOfModules","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NumberOfModules"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleMeasurementUnit","title":"ModuleMeasurementUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleMeasurementUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleMeasurementUnit","title":"ModuleMeasurementUnit","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleMeasurementUnit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Division","title":"Division","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Division"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"RequirementDate","title":"RequirementDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"RequirementDate"}}]'
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Date","title":"Date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Date"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Description","title":"Description","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Description"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UserQuantity","title":"UserQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UserQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ManufacturedDate","title":"ManufacturedDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ManufacturedDate"}}]'
ContextMenu: 'listContextMenuCapacityAllocationResults'
Taborder: 2
]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_PanelCapacityAllocationResults.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_PanelCapacityAllocationResults.def
new file mode 100644
index 0000000..a916ec0
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_PanelCapacityAllocationResults.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+Component PanelCapacityAllocationResults
+{
+ #keys: '[414702.0.391687385]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonGenerateCapacityAllocationResults id:ButtonGenerateCapacityAllocationResults_570
+ {
+ #keys: '[414702.0.391717497]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'PROCESS'
+ Label: '鐢熸垚鏁版嵁'
+ Taborder: 0
+ ]
+ }
+ Component Export id:Export_398
+ {
+ #keys: '[414702.0.392048461]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listActionBarPageCapacityAllocationResults.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listActionBarPageCapacityAllocationResults.def
index 5384f4a..81f7ddb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listActionBarPageCapacityAllocationResults.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listActionBarPageCapacityAllocationResults.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
Component listActionBarPageCapacityAllocationResults
{
- #keys: '[414702.0.338762078]'
+ #keys: '[414702.0.390053836]'
BaseType: 'listActionBarPage'
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listContextMenuCapacityAllocationResults.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listContextMenuCapacityAllocationResults.def
index 62d4067..b7e995a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listContextMenuCapacityAllocationResults.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Component_listContextMenuCapacityAllocationResults.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
Component listContextMenuCapacityAllocationResults
{
- #keys: '[414702.0.338762083]'
+ #keys: '[414702.0.390053841]'
BaseType: 'listContextMenu'
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_ButtonGenerateCapacityAllocationResults_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_ButtonGenerateCapacityAllocationResults_OnClick.def
deleted file mode 100644
index 2d97d02..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_ButtonGenerateCapacityAllocationResults_OnClick.def
+++ /dev/null
@@ -1,16 +0,0 @@
-Quintiq file version 2.0
-#parent: ButtonGenerateCapacityAllocationResults
-Response OnClick () id:Response_FormCapacityAllocationResults_ButtonGenerateCapacityAllocationResults_OnClick
-{
- #keys: '[414702.0.340111671]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebButton_OnClick'
- QuillAction
- {
- Body:
- [*
- CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan );
- *]
- GroupServerCalls: false
- }
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_ButtonGenerateCapacityAllocationR\04339.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_ButtonGenerateCapacityAllocationR\04339.def"
new file mode 100644
index 0000000..6a4fd16
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_ButtonGenerateCapacityAllocationR\04339.def"
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelCapacityAllocationResults/ButtonGenerateCapacityAllocationResults_570
+Response OnClick () id:Response_FormCapacityAllocationResults_ButtonGenerateCapacityAllocationResults_OnClick_39
+{
+ #keys: '[414702.0.391717496]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ CapacityAllocationResults::CreateDate( GlobalOTDTable, MacroPlan, DataHolderActiveScenario.Data() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_Export_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_Export_OnClick.def
new file mode 100644
index 0000000..4428575
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/Response_PanelCapacityAllocationResults_Export_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelCapacityAllocationResults/Export_398
+Response OnClick () id:Response_PanelCapacityAllocationResults_Export_OnClick
+{
+ #keys: '[414702.0.391791234]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ Application.Download( "浜ц兘鍒嗛厤缁撴灉.xlsx", CapacityAllocationResults::Export( GlobalOTDTable ).AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/_ROOT_Component_FormCapacityAllocationResults.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/_ROOT_Component_FormCapacityAllocationResults.def
index 432fdfa..983e0ed 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/_ROOT_Component_FormCapacityAllocationResults.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResults/_ROOT_Component_FormCapacityAllocationResults.def
@@ -8,17 +8,7 @@
Children:
[
#child: ListCapacityAllocationResults
- Component ButtonGenerateCapacityAllocationResults
- {
- #keys: '[414702.0.340677556]'
- BaseType: 'WebButton'
- Properties:
- [
- Image: 'PROCESS'
- Label: '鐢熸垚鏁版嵁'
- Taborder: 0
- ]
- }
+ #child: PanelCapacityAllocationResults
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_ListCapacityAllocationResultsRuleConfiguration.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_ListCapacityAllocationResultsRuleConfiguration.def
new file mode 100644
index 0000000..add7c86
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_ListCapacityAllocationResultsRuleConfiguration.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component ListCapacityAllocationResultsRuleConfiguration
+{
+ #keys: '[414702.0.375255758]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractorCapacityAllocationResultsRuleConfiguration
+ {
+ #keys: '[414702.0.375255759]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'GlobalOTDTable'
+ Source: 'GlobalOTDTable'
+ Taborder: 0
+ Transformation: 'CapacityAllocationResultsRuleConfiguration'
+ ]
+ }
+ #child: listActionBarPageCapacityAllocationResultsRuleConfiguration
+ Component DataSetLevelCapacityAllocationResultsRuleConfiguration
+ {
+ #keys: '[414702.0.375255764]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenuCapacityAllocationResultsRuleConfiguration
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PanelMaterialCode","title":"PanelMaterialCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PanelMaterialCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ModuleMaterialCode","title":"ModuleMaterialCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ModuleMaterialCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Division","title":"Division","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Division"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}}]'
+ ContextMenu: 'listContextMenuCapacityAllocationResultsRuleConfiguration'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+ ResponseDefinitions:
+ [
+ DelegatedResponseDefinition OnClick id:Responsedef_ListCapacityAllocationResultsRuleConfiguration_WebMenu_OnClick
+ {
+ #keys: '[414702.0.373845107]'
+ Initiator: 'WebMenu'
+ IsInherited: false
+ ResponseType: 'OnClick'
+ Arguments:
+ [
+ ResponseDefinitionArgument selection
+ {
+ #keys: '[811.0.13515064]'
+ Binding: 'this.Selection()'
+ }
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def
new file mode 100644
index 0000000..367ca52
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_PanelImportAndExport.def
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+Component PanelImportAndExport
+{
+ #keys: '[414702.0.391512140]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component Import
+ {
+ #keys: '[414702.0.390081531]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'IMPORT1'
+ Label: '瀵煎叆'
+ Taborder: 0
+ ]
+ }
+ Component Export
+ {
+ #keys: '[414702.0.391512453]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listActionBarPageCapacityAllocationResultsRuleConfiguration.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listActionBarPageCapacityAllocationResultsRuleConfiguration.def
new file mode 100644
index 0000000..cc72a32
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listActionBarPageCapacityAllocationResultsRuleConfiguration.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageCapacityAllocationResultsRuleConfiguration
+{
+ #keys: '[414702.0.375255761]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def
new file mode 100644
index 0000000..597ad1b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Component_listContextMenuCapacityAllocationResultsRuleConfiguration.def
@@ -0,0 +1,59 @@
+Quintiq file version 2.0
+Component listContextMenuCapacityAllocationResultsRuleConfiguration
+{
+ #keys: '[414702.0.375255766]'
+ BaseType: 'listContextMenu'
+ Children:
+ [
+ Component MenuNew
+ {
+ #keys: '[414702.0.373851234]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'BEAR'
+ Taborder: 3
+ Title: '鍒涘缓瑙勫垯'
+ ]
+ }
+ Component MenuEdit
+ {
+ #keys: '[414702.0.376312130]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ BindOnDoubleClick: true
+ Image: 'MESSAGE_EDIT'
+ Taborder: 4
+ Title: '缂栬緫'
+ ]
+ }
+ Component MenuDelete
+ {
+ #keys: '[414702.0.382537902]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'DELETE'
+ Taborder: 5
+ Title: '鍒犻櫎'
+ ]
+ }
+ Component MenuSelectAll
+ {
+ #keys: '[414702.0.382602953]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'DOCUMENT_SELECTION'
+ Shortcut: 'Ctrl+A'
+ Taborder: 6
+ Title: '鍏ㄩ��'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_DataHolderSelectCapacityAllocationResultsRuleConfiguration_OnDataCh.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_DataHolderSelectCapacityAllocationResultsRuleConfiguration_OnDataCh.def
new file mode 100644
index 0000000..1c99357
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_DataHolderSelectCapacityAllocationResultsRuleConfiguration_OnDataCh.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: DataHolderSelectCapacityAllocationResultsRuleConfiguration
+Response OnDataChanged () id:Response_FormCapacityAllocationResultsRuleConfiguration_DataHolderSelectCapacityAllocationResultsRuleConfiguration_OnDataChanged
+{
+ #keys: '[414702.0.391379706]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ traverse ( this.Data(), Elements, e ) {
+ info( "闈㈡澘鐗╂枡ID锛�", e.PanelMaterialCode() );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuDelete_OnClick.def
new file mode 100644
index 0000000..ecf8b8c
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuDelete_OnClick.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: ListCapacityAllocationResultsRuleConfiguration
+Response OnClick (
+ CapacityAllocationResultsRuleConfiguration selection
+) id:Response_ListCapacityAllocationResultsRuleConfiguration_MenuDelete_OnClick
+{
+ #keys: '[414702.0.381071285]'
+ DefinitionID => /ListCapacityAllocationResultsRuleConfiguration/Responsedef_ListCapacityAllocationResultsRuleConfiguration_WebMenu_OnClick
+ Initiator: 'MenuDelete'
+ QuillAction
+ {
+ Body:
+ [*
+ selection.Delete();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuEdit_OnClick.def
new file mode 100644
index 0000000..01a7ffa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuEdit_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ListCapacityAllocationResultsRuleConfiguration
+Response OnClick (
+ CapacityAllocationResultsRuleConfiguration selection
+) id:Response_ListCapacityAllocationResultsRuleConfiguration_MenuEdit_OnClick
+{
+ #keys: '[414702.0.376349145]'
+ CanBindMultiple: false
+ DefinitionID => /ListCapacityAllocationResultsRuleConfiguration/Responsedef_ListCapacityAllocationResultsRuleConfiguration_WebMenu_OnClick
+ Initiator: 'MenuEdit'
+ QuillAction
+ {
+ Body:
+ [*
+ dlg := construct( DialogCreateEditCapacityAllocationResultsRuleConfiguration );
+
+ dlg.Edit( selection );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuNew_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuNew_OnClick.def
new file mode 100644
index 0000000..76e0cd1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuNew_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListCapacityAllocationResultsRuleConfiguration
+Response OnClick () id:Response_ListCapacityAllocationResultsRuleConfiguration_MenuNew_OnClick
+{
+ #keys: '[414702.0.375256192]'
+ CanBindMultiple: false
+ DefinitionID => /ListCapacityAllocationResultsRuleConfiguration/Responsedef_ListCapacityAllocationResultsRuleConfiguration_WebMenu_OnClick
+ Initiator: 'MenuNew'
+ QuillAction
+ {
+ Body:
+ [*
+ dlg := construct( DialogCreateEditCapacityAllocationResultsRuleConfiguration );
+
+ dlg.New();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuSelectAll_OnClic.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuSelectAll_OnClic.def
new file mode 100644
index 0000000..720300e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_ListCapacityAllocationResultsRuleConfiguration_MenuSelectAll_OnClic.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ListCapacityAllocationResultsRuleConfiguration
+Response OnClick () id:Response_ListCapacityAllocationResultsRuleConfiguration_MenuSelectAll_OnClick
+{
+ #keys: '[414702.0.381011855]'
+ CanBindMultiple: false
+ DefinitionID => /ListCapacityAllocationResultsRuleConfiguration/Responsedef_ListCapacityAllocationResultsRuleConfiguration_WebMenu_OnClick
+ Initiator: 'MenuSelectAll'
+ QuillAction
+ {
+ Body:
+ [*
+ this.SelectAll();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Export_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Export_OnClick.def
new file mode 100644
index 0000000..602baba
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Export_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelImportAndExport/Export
+Response OnClick () id:Response_PanelImportAndExport_Export_OnClick
+{
+ #keys: '[414702.0.391658465]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ Application.Download( "浜ц兘鍒嗛厤缁撴灉瑙勫垯.xlsx", CapacityAllocationResultsRuleConfiguration::Export( GlobalOTDTable ).AsBinaryData() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Import_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Import_OnClick.def
new file mode 100644
index 0000000..3e90d91
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/Response_PanelImportAndExport_Import_OnClick.def
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: PanelImportAndExport/Import
+Response OnClick () id:Response_PanelImportAndExport_Import_OnClick
+{
+ #keys: '[414702.0.391899822]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ try {
+ uploadJsonString := Application.GetFile();
+ if ( uploadJsonString <> "" ) {
+ uploadJson := JSON::Parse( uploadJsonString );
+
+ fileName := uploadJson.Get( "name" ).GetString();
+ base64String := uploadJson.Get( "data" ).GetString();
+ CapacityAllocationResultsRuleConfiguration::Import( GlobalOTDTable, base64String );
+
+ WebMessageBox::Success( "涓婁紶鎴愬姛", true );
+ }
+ } onerror {
+ WebMessageBox::Error( e.GeneralInformation(), true );
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/_ROOT_Component_FormCapacityAllocationResultsRuleConfiguration.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/_ROOT_Component_FormCapacityAllocationResultsRuleConfiguration.def
new file mode 100644
index 0000000..436ef69
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAllocationResultsRuleConfiguration/_ROOT_Component_FormCapacityAllocationResultsRuleConfiguration.def
@@ -0,0 +1,43 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCapacityAllocationResultsRuleConfiguration
+{
+ #keys: '[414702.0.373844315]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: ListCapacityAllocationResultsRuleConfiguration
+ Component DataHolderSelectCapacityAllocationResultsRuleConfiguration
+ {
+ #keys: '[414702.0.390054479]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[CapacityAllocationResultsRuleConfiguration]*'
+ Children:
+ [
+ Component DataExtractorSelectCapacityAllocationResultsRuleConfiguration
+ {
+ #keys: '[414702.0.391186862]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'CapacityAllocationResultsRuleConfiguration'
+ ExtractionMode: 'Selected'
+ Source: 'ListCapacityAllocationResultsRuleConfiguration'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ #child: PanelImportAndExport
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_CHECKS'
+ Title: '浜ц兘鍒嗛厤缁撴灉鎶ヨ〃-瑙勫垯缁存姢'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
index 1e5e82c..984c1f6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Component_ListCapacityAndSaleBudge.def
@@ -38,6 +38,6 @@
]
Properties:
[
- Taborder: 0
+ Taborder: 1
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportDetail_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportDetail_OnClick.def
new file mode 100644
index 0000000..4f195d5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_ButtonExportDetail_OnClick.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: ButtonExportDetail
+Response OnClick () id:Response_FormCapacityAndSaleBudge_ButtonExportDetail_OnClick
+{
+ #keys: '[414384.0.887310502]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( MPSync );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ //Application.Download( "骞村害浜ч攢棰勭畻璇︽儏.xlsx", MPSync.CapacityAndSaleBudgeExport().AsBinaryData() );
+
+ base64 := MappingCapacityAndSaleBudge::Export( MPSync );
+ Application.Download( "骞村害浜ч攢棰勭畻璇︽儏.xlsx", base64 );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
index 2b3f638..d4df714 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/Response_OnCreated.def
@@ -12,6 +12,7 @@
[*
MPSync::TestData( MPSync, MacroPlan );
GlobalOTDTable.InitTestData();
+ MPSync.RefreshCapacityAndSaleBudgeFilter();
*]
}
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
index 168d51b..8758502 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudge/_ROOT_Component_FormCapacityAndSaleBudge.def
@@ -8,6 +8,17 @@
Children:
[
#child: ListCapacityAndSaleBudge
+ Component ButtonExportDetail
+ {
+ #keys: '[414384.0.887310503]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Label: '瀵煎嚭'
+ Taborder: 0
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
index ccb0ea2..53e33ba 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/Response_ButtonCapacityAndSaleBudgeChartTest_OnClick.def
@@ -13,7 +13,7 @@
CapacityAndSaleBudgeChartElement::TestData( ScenarioManager );
ScenarioManager.CapacityAndSaleBudgeChart( DataHolderMacroPlansForScenarioComparison.Data(),
- CheckboxIsCapacity.Checked(),
+ DropDownSaleOrCapacity.Text(),
DropDownTimeGroup.Text(),
DropDownByBusinessTypeOrByOrgCode.Text(),
DataHolderCapacityAndSaleBudgeFilterBusinessType.Data(),
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def
index 3684ed8..237e0c6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCapacityAndSaleBudgeChart/_ROOT_Component_FormCapacityAndSaleBudgeChart.def
@@ -53,16 +53,6 @@
Visible: false
]
}
- Component CheckboxIsCapacity
- {
- #keys: '[414384.0.857770765]'
- BaseType: 'WebCheckbox'
- Properties:
- [
- Label: '浜ц兘'
- Taborder: 5
- ]
- }
Component DropDownTimeGroup
{
#keys: '[414384.0.857771238]'
@@ -87,6 +77,18 @@
Taborder: 0
]
}
+ Component DropDownSaleOrCapacity
+ {
+ #keys: '[414384.0.886240556]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ InitialValue: '閿�鍞'
+ Label: '閿�鍞/浜ц兘'
+ Strings: '閿�鍞;浜ц兘'
+ Taborder: 5
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def
new file mode 100644
index 0000000..352a599
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component ListSalesDemands #extension
+{
+ Children:
+ [
+ Component DataSetLevelSalesDemands #extension
+ {
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPoint_MP.ID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPoint_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegment_MP.Name","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegment_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"Customer name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"Customer ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"Order ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"Order line ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Order date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Product_MP.ID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Product_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure_MP.Name","title":"UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"UnitOfMeasure_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantity","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue( object.Quantity() - object.FulfilledQuantity(), 0.0).Round( 2)"}},{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfilled demand","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round( 2)"}}]}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"Is firmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"Is eligible for netting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriceUoM","title":"PriceUoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PriceUoM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderTag","title":"璁㈠崟鏍囩","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderTag"}}]'
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelAllSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelAllSalesDemands.def
new file mode 100644
index 0000000..b6550d1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelAllSalesDemands.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component PanelAllSalesDemands #extension
+{
+ Children:
+ [
+ #child: ListSalesDemands
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelSalesDemands.def
new file mode 100644
index 0000000..14acdde
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelSalesDemands.def
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+Component PanelSalesDemands #extension
+{
+ Children:
+ [
+ #child: PanelAllSalesDemands
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/_ROOT_Component_FormCustomerOrders.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/_ROOT_Component_FormCustomerOrders.def
new file mode 100644
index 0000000..040c94f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/_ROOT_Component_FormCustomerOrders.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: LibMacroPlannerWebUI
+OrphanComponent FormCustomerOrders #extension
+{
+ Children:
+ [
+ #child: PanelSalesDemands
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSDIP.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSDIP.def
new file mode 100644
index 0000000..b0cbc0a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSDIP.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+Component ListSDIP
+{
+ #keys: '[134266.1.1970512356]'
+ BaseType: 'ListSDIP'
+ IsDerived: true
+ Children:
+ [
+ Component DataSetLevelSDIP
+ {
+ #keys: '[134266.1.1970512358]'
+ BaseType: 'DataSetLevelSDIP'
+ IsDerived: true
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsRestricted","title":"ImgIsRestricted","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsRestricted"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MasterSalesDemand.UnitOfMeasureName","title":"UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MasterSalesDemand.UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"QuantityInSalesDemandUOM","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"QuantityInSalesDemandUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantityInSalesDemandUOM","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantityInSalesDemandUOM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfilled demand","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round( 2)"}},{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue( object.Quantity()-object.FulfilledQuantity(),0.0)"}}]}}]'
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSalesDemands.def
new file mode 100644
index 0000000..0abeb62
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSalesDemands.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+Component ListSalesDemands
+{
+ #keys: '[134266.1.1970507083]'
+ BaseType: 'ListSalesDemands'
+ IsDerived: true
+ Children:
+ [
+ Component DataExtractorSalesDemands
+ {
+ #keys: '[134266.1.1970507084]'
+ BaseType: 'DataExtractorSalesDemands'
+ IsDerived: true
+ Properties:
+ [
+ Transformation: 'Elements.astype(CustomerOrder)'
+ ]
+ }
+ Component DataSetLevelSalesDemands
+ {
+ #keys: '[134266.1.1970507085]'
+ BaseType: 'DataSetLevelSalesDemands'
+ IsDerived: true
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPoint_MP.ID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPoint_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegment_MP.Name","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegment_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"Customer name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerID","title":"Customer ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"Order ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderLineID","title":"Order line ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderLineID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Order date","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Product_MP.ID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Product_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure_MP.Name","title":"UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"UnitOfMeasure_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantity","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue( object.Quantity() - object.FulfilledQuantity(), 0.0).Round( 2)"}},{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfilled demand","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round( 2)"}}]}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"Is firmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsEligibleForNetting","title":"Is eligible for netting","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsEligibleForNetting"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriceUoM","title":"PriceUoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PriceUoM"}}]'
+ ]
+ }
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelAllSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelAllSalesDemands.def
new file mode 100644
index 0000000..60db013
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelAllSalesDemands.def
@@ -0,0 +1,11 @@
+Quintiq file version 2.0
+Component PanelAllSalesDemands
+{
+ #keys: '[134266.1.1970497658]'
+ BaseType: 'PanelAllSalesDemands'
+ IsDerived: true
+ Children:
+ [
+ #child: ListSalesDemands
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSDIP.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSDIP.def
new file mode 100644
index 0000000..6ddf675
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSDIP.def
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+Component PanelSDIP
+{
+ #keys: '[134266.1.1970511019]'
+ BaseType: 'PanelSDIP'
+ IsDerived: true
+ Children:
+ [
+ #child: ListSDIP
+ ]
+ Properties:
+ [
+ Title: 'Customer orders at planning level'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSalesDemands.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSalesDemands.def
new file mode 100644
index 0000000..e90068d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSalesDemands.def
@@ -0,0 +1,12 @@
+Quintiq file version 2.0
+Component PanelSalesDemands
+{
+ #keys: '[134266.1.1970506995]'
+ BaseType: 'PanelSalesDemands'
+ IsDerived: true
+ Children:
+ [
+ #child: PanelSDIP
+ #child: PanelAllSalesDemands
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCopy_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCopy_OnClick.def
new file mode 100644
index 0000000..e6db580
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCopy_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListSalesDemands
+Response OnClick () inherited id:Response_ListSalesDemands_MenuCopy_OnClick
+{
+ #keys: '[136682.1.799924425]'
+ BaseType: 'Response_ListSalesDemands_MenuCopy_OnClick'
+ DefinitionID: 'Responsedef_ListSalesDemands_WebMenu_OnClick'
+ Initiator: 'MenuCopy'
+ QuillAction
+ {
+ Body:
+ [*
+ // Copy sales demand
+ data := selectset( selection, Elements.astype( CustomerOrder ), co, true, true );
+ CustomerOrder::Copy( data );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCreate_OnClick\043715.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCreate_OnClick\043715.def"
new file mode 100644
index 0000000..85a98aa
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCreate_OnClick\043715.def"
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListSalesDemands
+Response OnClick () inherited id:Response_ListSalesDemands_MenuCreate_OnClick_715
+{
+ #keys: '[136682.1.803262814]'
+ BaseType: 'Response_ListSalesDemands_MenuCreate_OnClick_715'
+ DefinitionID: 'Responsedef_ListSalesDemands_WebMenu_OnClick'
+ Initiator: 'MenuCreate'
+ QuillAction
+ {
+ Body:
+ [*
+ //Create new sales demand
+ dlg := construct( DialogCreateEditCustomerOrder );
+ dlg.New();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuEdit_OnClick.def
new file mode 100644
index 0000000..edf9a16
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuEdit_OnClick.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: ListSalesDemands
+Response OnClick () inherited id:Response_ListSalesDemands_MenuEdit_OnClick
+{
+ #keys: '[136682.1.803135245]'
+ BaseType: 'Response_ListSalesDemands_MenuEdit_OnClick'
+ DefinitionID: 'Responsedef_ListSalesDemands_WebMenu_OnClick'
+ Initiator: 'MenuEdit'
+ QuillAction
+ {
+ Body:
+ [*
+ //Edit sales demand
+ dlg := construct( DialogCreateEditCustomerOrder );
+
+ data := selectset( selection, Elements.astype( CustomerOrder ), f, true, true );
+ dlg.Edit( data );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/_ROOT_Component_FormCustomerOrders226.def b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/_ROOT_Component_FormCustomerOrders226.def
new file mode 100644
index 0000000..4e72e24
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/_ROOT_Component_FormCustomerOrders226.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormCustomerOrders226
+{
+ #keys: '[414724.0.179160850]'
+ Accessibility: 'Extensible'
+ BaseType: 'FormSalesDemands'
+ Children:
+ [
+ #child: PanelSalesDemands
+ ]
+ Properties:
+ [
+ Image: 'SALES_QUOTATION'
+ Title: 'Customer orders'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderFresh_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderFresh_OnClick.def
index b6057a9..44c70d6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderFresh_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderFresh_OnClick.def
@@ -11,8 +11,9 @@
Body:
[*
macroplan := MacroPlan;
+ global := GlobalOTDTable;
businesstypes := DataHolderOrderLockGlobal.Data().BusinessType().Tokenize( ',' );
- CustomerOrder::DoSync( macroplan, businesstypes );
+ CustomerOrder::DoSync( macroplan, businesstypes, global );
*]
}
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def
index 31b93b5..08db4f3 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormPanelMaterialTianHua/_ROOT_Component_FormPanelMaterialTianHua.def
@@ -32,8 +32,8 @@
]
Properties:
[
- Description: '澶╄姳'
+ Description: '澶╁崕'
Image: 'CANDLE'
- Title: '澶╄姳'
+ Title: '澶╁崕'
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def
index b04f7cf..8519bc2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def
@@ -13,19 +13,31 @@
[*
if( not isnull( selection))
{
+ // 棰勬祴璁㈠崟鍩烘湰淇℃伅
+ CustomCode:="";
+ CustomName:="";
+ SValueJsonString:="";
+ // 鑾峰彇瀹㈡埛鍚嶇О鍜屽鎴稩D
+ if(txtSaveForecastData_FM.Text().Length()>0)
+ {
+ jForecast := JSON::Parse( txtSaveForecastData_FM.Text());
+ CustomCode := jForecast.Get( "CustomCode").GetString();
+ CustomName := jForecast.Get( "CustomName").GetString();
+ }
+
if(selection.MaterialType()="鍗婃垚鍝�")
{
- OrderCode:="";
+ ForecastID:="";
if( txtSaveForecastData_FM.Text().Length()>0)
{
- JForecast := JSON::Parse( txtSaveForecastData_FM.Text());
- OrderCode := JForecast.Get( "OrderCode").GetString();
+ JForecast := JSON::Parse(txtSaveForecastData_FM.Text());
+ ForecastID := JForecast.Get( "ForecastID").GetString();
}
- jResult := H_FunctionClass::SM_GetMaterialData( MacroPlan,selection.SKU(),selection.NeedQty(), OrderCode,"-",selection.NeedDate());
+ jResult := H_FunctionClass::SM_GetMaterialData( MacroPlan,selection.SKU(),selection.NeedQty(), ForecastID,"-",selection.NeedDate());
if(jResult.Get( "Status").GetBoolean())
{
de_dh_FM_ProductMP.FixedFilter( "object.ParentSKU() = " + selection.SKU().AsQUILL()
- + " and object.ForecastID() = " + OrderCode.AsQUILL()
+ + " and object.ForecastID() = " + ForecastID.AsQUILL()
);
}
else
@@ -35,7 +47,27 @@
}
else
{
- // 寮瑰嚭鐗╂枡鍙嶇鎺堟潈
+ SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmMaterial" and Obj.ItemKey()="ListSelect");
+ if(not isnull(selection))
+ {
+ SValueJsonString:= JSON::Object().Add( "SKU",selection.SKU())
+ .Add( "MaterialName",selection.MaterialName())
+ .Add( "MaterialType",selection.MaterialType())
+ .Add( "OrgCode",selection.OrgCode())
+ .Add( "Unit",selection.Unit())
+ .Add( "CustomCode",CustomCode)
+ .Add( "ParentSKU",lb_SUK_FM.Text())
+ .Add( "CustomName",CustomName).Build().AsString();
+ }
+ if(isnull( SelectItem))
+ {
+ MacroPlan.H_MessagePassing(relnew,FKey := "FrmMaterial",ItemKey := "ListSelect", ValueJsonString:=SValueJsonString);
+ }
+ else
+ {
+ SelectItem.ValueJsonString( SValueJsonString);
+ }
+ Application.OpenForm( "FrmAuthorizeAndCountersign_Material","modal");
}
}
*]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
index c3a42c1..4529905 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def
@@ -17,11 +17,11 @@
{
if( SelectItem.ValueJsonString().Length()>0)
{
- txtSaveForecastData_FM.Text( SelectItem.ValueJsonString());
- JSelect := JSON::Parse( SelectItem.ValueJsonString());
+ txtSaveForecastData_FM.Text(SelectItem.ValueJsonString());
+ JSelect := JSON::Parse(SelectItem.ValueJsonString());
lb_SUK_FM.Text(JSelect.Get( "SKU").GetString());
de_dh_FM_ProductMP.FixedFilter( "object.ParentSKU() = " + JSelect.Get( "SKU").GetString().AsQUILL()
- + " and object.ForecastID() = " + JSelect.Get( "OrderCode").GetString().AsQUILL()
+ + " and object.ForecastID() = " + JSelect.Get( "ForecastID").GetString().AsQUILL()
);
}
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def
index c6fbad5..130115e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def
@@ -85,6 +85,29 @@
Taborder: 3
]
}
+ Component txt_QueryContent_FOF
+ {
+ #keys: '[414724.0.172390935]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ PlaceHolder: '妯$硦鎼滅储'
+ Taborder: 4
+ ]
+ }
+ Component btn_Query_FOF
+ {
+ #keys: '[414724.0.172390951]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ ButtonSize: 'compact'
+ Description: '鏌ヨ'
+ Image: 'VIEW'
+ Label: '鏌ヨ'
+ Taborder: 5
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
deleted file mode 100644
index ff6b8ad..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel383.def
+++ /dev/null
@@ -1,53 +0,0 @@
-Quintiq file version 2.0
-Component Panel383
-{
- #keys: '[414724.0.86151558]'
- BaseType: 'WebPanel'
- Children:
- [
- Component ds_Month_FOF
- {
- #keys: '[414724.0.86151747]'
- BaseType: 'WebDateSelector'
- Properties:
- [
- DateFormat: 'YMM'
- Label: '鏈堜唤'
- Taborder: 0
- Visible: false
- ]
- }
- Component txt_QueryContent_FOF
- {
- #keys: '[414724.0.86151766]'
- BaseType: 'WebEditField'
- Properties:
- [
- PlaceHolder: '妯$硦鎼滅储'
- Taborder: 1
- Visible: false
- ]
- }
- Component btn_Query_FOF
- {
- #keys: '[414724.0.88914059]'
- BaseType: 'WebButton'
- Properties:
- [
- Description: '鏌ヨ'
- Image: 'VIEW'
- Label: '鏌ヨ'
- Taborder: 2
- Visible: false
- ]
- }
- ]
- Properties:
- [
- FixedSize: true
- MinimumColumns: 80
- Orientation: 'horizontal'
- Taborder: 0
- Visible: false
- ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
deleted file mode 100644
index 7b147ac..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel647.def
+++ /dev/null
@@ -1,50 +0,0 @@
-Quintiq file version 2.0
-Component Panel647
-{
- #keys: '[414724.0.86151576]'
- BaseType: 'WebPanel'
- Children:
- [
- Component btn_Add_Order_FOF
- {
- #keys: '[414724.0.87342042]'
- BaseType: 'WebButton'
- Properties:
- [
- Description: '璁㈠崟鏂板鍙嶇/鎺堟潈'
- Label: '璁㈠崟鏂板鍙嶇/鎺堟潈'
- Taborder: 1
- ]
- }
- Component btn_Add_Material_FOF
- {
- #keys: '[414724.0.86151707]'
- BaseType: 'WebButton'
- Properties:
- [
- Description: '鍘熸枡鏂板鍙嶇/鎺堟潈'
- Label: '鍘熸枡鏂板鍙嶇/鎺堟潈'
- Taborder: 2
- ]
- }
- Component btn_InitialData
- {
- #keys: '[414724.0.93657921]'
- BaseType: 'WebButton'
- Properties:
- [
- Description: '鍔犺浇鏁版嵁锛堝亣鐨勶紝鍚庣画闇�瑕佸鎺ユ暟鎹級'
- Label: '鍔犺浇棰勬祴璁㈠崟鏁版嵁'
- Taborder: 0
- Visible: false
- ]
- }
- ]
- Properties:
- [
- Alignment: 'trailing'
- FixedSize: true
- Orientation: 'horizontal'
- Taborder: 1
- ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
deleted file mode 100644
index 35b07f6..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel849.def
+++ /dev/null
@@ -1,19 +0,0 @@
-Quintiq file version 2.0
-Component Panel849
-{
- #keys: '[414724.0.87341748]'
- BaseType: 'WebPanel'
- Children:
- [
- #child: Panel383
- #child: Panel647
- ]
- Properties:
- [
- Description: '宸茬粡闅愯棌锛屾殏鏈娇鐢�'
- FixedSize: true
- Orientation: 'horizontal'
- Taborder: 2
- Visible: false
- ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
index e056848..67ab89e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def
@@ -11,8 +11,8 @@
BaseType: 'WebDataExtractor'
Properties:
[
- DataType: 'structured[H_Forecast]'
- Source: 'dh_FOF_H_Forecast'
+ DataType: 'structured[H_OrderForecastRealQty]'
+ Source: 'dh_FOF_H_OrderForecastRealQty'
Taborder: 0
Transformation: 'Elements'
]
@@ -28,7 +28,7 @@
]
Properties:
[
- Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderCode","title":"璁㈠崟缂栧彿","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU缂栫爜","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecastQty","title":"棰勬祴鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecastQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NeedTime","title":"闇�姹傛椂闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"NeedTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Util","title":"鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Util"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomName","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Department","title":"閿�鍞儴闂�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Department"}}]'
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Month","title":"鏈堜唤","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Month"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomName","title":"瀹㈡埛鍚嶇О","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SKU","title":"SKU缂栧彿","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SKU"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecatsQty","title":"棰勬祴鏁伴噺","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecatsQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ForecatsRealQty","title":"绾娴嬫暟閲�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ForecatsRealQty"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Unit","title":"鍗曚綅","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Unit"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Department","title":"閮ㄩ棬","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Department"}}]'
ContextMenu: 'listContextMenu367'
Taborder: 2
]
@@ -36,6 +36,6 @@
]
Properties:
[
- Taborder: 7
+ Taborder: 3
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def
deleted file mode 100644
index 320820a..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listActionBarPage963.def
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component listActionBarPage963
-{
- #keys: '[414724.0.86151897]'
- BaseType: 'listActionBarPage'
- Properties:
- [
- Taborder: 1
- ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def
deleted file mode 100644
index 5f3683c..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_listContextMenu687.def
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component listContextMenu687
-{
- #keys: '[414724.0.86151902]'
- BaseType: 'listContextMenu'
- Properties:
- [
- Taborder: 0
- ]
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
deleted file mode 100644
index 0c21175..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_list_ForecastView_FOF\043670.def"
+++ /dev/null
@@ -1,43 +0,0 @@
-Quintiq file version 2.0
-Component list_ForecastView_FOF
-{
- #keys: '[414724.0.86151894]'
- BaseType: 'WebList'
- Children:
- [
- Component de_list_ForecastView_FOF
- {
- #keys: '[414724.0.86151895]'
- BaseType: 'WebDataExtractor'
- Properties:
- [
- DataType: 'structured[SalesDemandBase]'
- Source: 'dh_FOF_Data'
- Taborder: 0
- Transformation: 'Elements.astype(Forecast)'
- ]
- }
- #child: listActionBarPage963
- Component DataSetLevel191
- {
- #keys: '[414724.0.86151900]'
- BaseType: 'WebDataSetLevel'
- Children:
- [
- #child: listContextMenu687
- ]
- Properties:
- [
- Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeAllConstraint","columnid":"All constraints","title":"All constraints","subtotals":"","tooltip":"","width":1,"display":"shown"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgNotLinkedToPeriod","title":"ImgNotLinkedToPeriod","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgNotLinkedToPeriod"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ImgIsPostponed","title":"ImgIsPostponed","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ImgIsPostponed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPoint_MP.ID","title":"Stocking point","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"StockingPoint_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegment_MP.Name","title":"Sales segment","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"SalesSegment_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Product_MP.ID","title":"Product","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Product_MP.ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"Start","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasure_MP.Name","title":"Quantity UoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"UnitOfMeasure_MP.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Original Qty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"NettedQuantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"NettedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FulfilledQuantity","title":"Fulfilled","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"FulfilledQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeChart","columnid":"Fulfillment Illustration","title":"Fulfillment","subtotals":"","tooltip":"","width":-1,"display":"shown","type":"stackbar","relative":true,"attributes":[{"name":"Fulfilled demand","color":"rgb(87,184,71)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Fulfillment","title":"Fulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.FulfilledQuantity().Round(2)"}},{"name":"Unfulfilled demand","color":"rgb(232,123,0)","expression":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"Unfulfilled demand","title":"Unfulfilled demand","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"maxvalue(object.NettedQuantity()-object.FulfilledQuantity(),0.0).Round(2)"}}]}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PriceUoM","title":"PriceUoM","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"PriceUoM"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Priority.Name","title":"Priority","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"Priority.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DemandUncertaintyPercentage","title":"Uncertainty","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DemandUncertaintyPercentage"}}]'
- ContextMenu: 'listContextMenu687'
- FixedFilter: 'object.EndDate().DateTime().Date() >= Date::ActualDate().StartOfMonth() and object.EndDate().DateTime().Date() <= Date::ActualDate().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth().StartOfNextMonth()'
- Taborder: 2
- ]
- }
- ]
- Properties:
- [
- Taborder: 5
- Visible: false
- ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
index 5cb899a..700b61d 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_OnCreated.def
@@ -9,13 +9,15 @@
{
Body:
[*
- // 鍒濆鍖栨煡璇㈠弬鏁版湀浠�
- ds_Month_FOF.Date(Date::ActualDate());
// 鍒濆鍖栭娴嬫暟鎹�
- JResult := H_FunctionClass::SM_InitialForcastData( MacroPlan);
+ JResult := H_FunctionClass::SM_InitialForcastDataEx( MacroPlan,true,"-");
if(not JResult.Get( "Status").GetBoolean())
{
- WebMessageBox::Warning( JResult.Get( "Msg").GetString());
+ WebMessageBox::Warning( JResult.Get( "Msg").GetString());
+ }
+ else
+ {
+ WebMessageBox::Information( JResult.Get( "Msg").GetString());
}
*]
GroupServerCalls: false
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick\043222.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick\043222.def"
index 0f50e1f..bda5c5d 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick\043222.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick\043222.def"
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: Panel351/btn_Add_Material_FOF503
Response OnClick (
- H_Forecast selection
+ H_OrderForecastRealQty selection
) id:Response_Panel351_btn_Add_Material_FOF503_OnClick_222
{
#keys: '[414724.0.145178766]'
@@ -17,28 +17,26 @@
if( isnull( SelectItem))
{
MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",
- Value := selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName(),
ValueJsonString := JSON::Object().Add( "SKU",selection.SKU())
- .Add( "Util",selection.Util())
- .Add( "CustomCode",selection.CustomCode())
- .Add( "CustomName",selection.CustomName())
- .Add( "ForecastQty",selection.ForecastQty())
- .Add( "NeedTime",selection.NeedTime().AsQUILL())
- .Add( "OrderCode",selection.OrderCode()).Build().AsString());
+ .Add( "Util",selection.Unit())
+ .Add( "CustomCode",selection.CustomCode())
+ .Add( "CustomName",selection.CustomName())
+ .Add( "ForecastQty",selection.ForecastQty())
+ .Add( "ForecastID",selection.ID())
+ .Add( "NeedTime",selection.Month().AsQUILL()).Build().AsString());
}
else
{
- SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
SelectItem.ValueJsonString(JSON::Object().Add( "SKU",selection.SKU())
- .Add( "Util",selection.Util())
- .Add( "CustomCode",selection.CustomCode())
- .Add( "CustomName",selection.CustomName())
- .Add( "ForecastQty",selection.ForecastQty())
- .Add( "NeedTime",selection.NeedTime().AsQUILL())
- .Add( "OrderCode",selection.OrderCode()).Build().AsString());
+ .Add( "Util",selection.Unit())
+ .Add( "CustomCode",selection.CustomCode())
+ .Add( "CustomName",selection.CustomName())
+ .Add( "ForecastQty",selection.ForecastQty())
+ .Add( "ForecastID",selection.ID())
+ .Add( "NeedTime",selection.Month().AsQUILL()).Build().AsString());
}
- jResult := H_FunctionClass::SM_GetMaterialData( MacroPlan,selection.SKU(),selection.ForecastQty(),selection.OrderCode(),"-",selection.NeedTime());
+ jResult := H_FunctionClass::SM_GetMaterialData( MacroPlan,selection.SKU(),selection.ForecastQty(),selection.ID(),"-",selection.Month());
if(jResult.Get( "Status").GetBoolean())
{
Application.OpenForm( "FrmMaterial","popout");
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick\043880.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick\043880.def"
index bf1f99c..8eb0570 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick\043880.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick\043880.def"
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: Panel351/btn_Add_Order_FOF449
Response OnClick (
- H_Forecast selection
+ H_OrderForecastRealQty selection
) id:Response_Panel351_btn_Add_Order_FOF449_OnClick_880
{
#keys: '[414724.0.141244111]'
@@ -17,19 +17,17 @@
if( isnull( SelectItem))
{
MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",
- Value := selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName(),
- ValueJsonString := JSON::Object().Add( "SKU",selection.SKU())
- .Add( "Util",selection.Util())
- .Add( "CustomCode",selection.CustomCode())
- .Add( "CustomName",selection.CustomName()).Build().AsString());
+ ValueJsonString := JSON::Object().Add( "SKU",selection.SKU())
+ .Add( "Util",selection.Unit())
+ .Add( "CustomCode",selection.CustomCode())
+ .Add( "CustomName",selection.CustomName()).Build().AsString());
}
else
{
- SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
SelectItem.ValueJsonString(JSON::Object().Add( "SKU",selection.SKU())
- .Add( "Util",selection.Util())
- .Add( "CustomCode",selection.CustomCode())
- .Add( "CustomName",selection.CustomName()).Build().AsString());
+ .Add( "Util",selection.Unit())
+ .Add( "CustomCode",selection.CustomCode())
+ .Add( "CustomName",selection.CustomName()).Build().AsString());
}
Application.OpenForm( "FrmAuthorizeAndCountersign_Order","modal");
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Query_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Query_FOF_OnClick.def
new file mode 100644
index 0000000..1b95a1a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Query_FOF_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: Panel351/btn_Query_FOF
+Response OnClick () id:Response_Panel351_btn_Query_FOF_OnClick
+{
+ #keys: '[414724.0.172390950]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ de_dh_FOF_H_Foecast.FixedFilter( "object.SKU().LikeUserLocale( " + txt_QueryContent_FOF.Text().AsQUILL() + " )"
+ + " or " + "object.CustomName().LikeUserLocale( " + txt_QueryContent_FOF.Text().AsQUILL() + " )"
+ + " or " + "object.Unit().LikeUserLocale( " + txt_QueryContent_FOF.Text().AsQUILL() + " )"
+ + " or " + "object.Department().LikeUserLocale( " + txt_QueryContent_FOF.Text().AsQUILL() + " )"
+ + " or " + "object.StockingPointID().LikeUserLocale( " + txt_QueryContent_FOF.Text().AsQUILL() + " )"
+ );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def
deleted file mode 100644
index 41a29a8..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel383_btn_Query_FOF_OnClick.def
+++ /dev/null
@@ -1,17 +0,0 @@
-Quintiq file version 2.0
-#parent: Panel383/btn_Query_FOF
-Response OnClick () id:Response_Panel383_btn_Query_FOF_OnClick
-{
- #keys: '[414724.0.91472695]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebButton_OnClick'
- QuillAction
- {
- Body:
- [*
- MacroPlan.H_Forecast(relnew, CustomName := "灏忕背",CustomCode := "XM001",ForecastQty := 100,Department := "閿�鍞�1閮�",
- NeedTime := Date::ActualDate(),OrderCode := "00010101",SKU := "ANNDDSSSS",Util := "PCS");
- *]
- GroupServerCalls: false
- }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def
deleted file mode 100644
index b54e053..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Material_FOF_OnClick.def
+++ /dev/null
@@ -1,20 +0,0 @@
-Quintiq file version 2.0
-#parent: Panel647/btn_Add_Material_FOF
-Response OnClick () id:Response_Panel647_btn_Add_Material_FOF_OnClick
-{
- #keys: '[414724.0.86152486]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebButton_OnClick'
- Precondition:
- [*
- return not isnull( MacroPlan);
- *]
- QuillAction
- {
- Body:
- [*
- Application.OpenForm( "FrmMaterial","popout");
- *]
- GroupServerCalls: false
- }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
deleted file mode 100644
index 82c16f5..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_Add_Order_FOF_OnClick.def
+++ /dev/null
@@ -1,28 +0,0 @@
-Quintiq file version 2.0
-#parent: Panel647/btn_Add_Order_FOF
-Response OnClick () id:Response_Panel647_btn_Add_Order_FOF_OnClick
-{
- #keys: '[414724.0.86152095]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebButton_OnClick'
- Precondition:
- [*
- return not isnull( MacroPlan);
- *]
- QuillAction
- {
- Body:
- [*
- SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
- if(not isnull( SelectItem) and SelectItem.Value().Length()>0)
- {
- Application.OpenForm( "FrmAuthorizeAndCountersign_Order","popout");
- }
- else
- {
- WebMessageBox::Information( "璇烽�夋嫨涓�椤归娴嬪悗鍐嶇偣鍑绘寜閽紒");
- }
- *]
- GroupServerCalls: false
- }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def
deleted file mode 100644
index 1804c2e..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel647_btn_InitialData_OnClick.def
+++ /dev/null
@@ -1,39 +0,0 @@
-Quintiq file version 2.0
-#parent: Panel647/btn_InitialData
-Response OnClick () id:Response_Panel647_btn_InitialData_OnClick
-{
- #keys: '[414724.0.93657952]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebButton_OnClick'
- Precondition:
- [*
- return not isnull( MacroPlan);
- *]
- QuillAction
- {
- Body:
- [*
- // 娌℃湁鐢ㄧ殑鎸夐挳鍜屽嚱鏁帮紝鍙负浜嗘祴璇曠敓鎴愬亣鏁版嵁銆�
- StrCustoms:="XM_2023,灏忕背;HW_2023,鍗庝负;OV_2023,VIVO;OP_2023,OPPO;HX_2023,娴蜂俊;YJ_2023,涓�鍔�;HE_2023,娴峰皵;GL_2023,鏍煎姏;";
- ArrayCustom := StrCustoms.Tokenize( ";"); //8涓鎴�
- idx :=0;
- for( i:=0;i<20;i:=i+1)
- {
- idx :=Number::Random( 0,7);
- arrCustomInfo := ArrayCustom.Element( idx).Tokenize( ",");
- MacroPlan.H_Forecast(relnew, CustomName := arrCustomInfo.Element( 1),CustomCode := arrCustomInfo.Element( 0),ForecastQty := Number::Random( 100,5000),
- Department := "閿�鍞�1閮�",NeedTime := Date::ActualDate(),OrderCode := H_FunctionClass::SM_GenerateID( "OF") ,SKU := "SKU-CP-2023-N"+(Number::Random( 1000,9999)).AsQUILL(),Util := "PCS");
-
- }
- // 鐢熸垚棰勬祴 瀹炴椂鏁版嵁锛屽弽绛炬暟鎹紝鎺堟潈鏁版嵁锛堝弽绛� 鎺堟潈榛樿涓�0锛屽鑷姩鍒涘缓锛岃繖閲屼笉鍐嶆坊鍔狅級
- traverse(MacroPlan,H_Forecast ,Obj,not isnull(Obj) )
- {
- MacroPlan.H_OrderForecastRealQty(relnew,CustomID := Obj.CustomCode(),CustomName := Obj.CustomName(),ForecatsQty := Obj.ForecastQty(),
- ForecatsRealQty := Obj.ForecastQty(),ID := H_FunctionClass::SM_GenerateID( "OF"),Month := Date::ActualDate(),
- OrderCode := Obj.OrderCode(),SKU := Obj.SKU(),Unit := Obj.Util());
-
- }
- *]
- GroupServerCalls: false
- }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
index 991029e..c178467 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: liH_Forecast
Response OnDoubleClick (
- H_Forecast selection
+ H_OrderForecastRealQty selection
) id:Response_liH_Forecast_OnDoubleClick
{
#keys: '[414724.0.111761136]'
@@ -15,28 +15,26 @@
if( isnull( SelectItem))
{
MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",
- Value := selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName(),
ValueJsonString := JSON::Object().Add( "SKU",selection.SKU())
- .Add( "Util",selection.Util())
+ .Add( "Util",selection.Unit())
.Add( "CustomCode",selection.CustomCode())
.Add( "CustomName",selection.CustomName())
.Add( "ForecastQty",selection.ForecastQty())
- .Add( "NeedTime",selection.NeedTime().AsQUILL())
- .Add( "OrderCode",selection.OrderCode()).Build().AsString());
+ .Add( "ForecastID",selection.ID())
+ .Add( "NeedTime",selection.Month().AsQUILL()).Build().AsString());
}
else
{
- SelectItem.Value(selection.SKU()+";"+selection.Util()+";"+selection.CustomCode()+";"+selection.CustomName());
SelectItem.ValueJsonString(JSON::Object().Add( "SKU",selection.SKU())
- .Add( "Util",selection.Util())
- .Add( "CustomCode",selection.CustomCode())
- .Add( "CustomName",selection.CustomName())
- .Add( "ForecastQty",selection.ForecastQty())
- .Add( "NeedTime",selection.NeedTime().AsQUILL())
- .Add( "OrderCode",selection.OrderCode()).Build().AsString());
+ .Add( "Util",selection.Unit())
+ .Add( "CustomCode",selection.CustomCode())
+ .Add( "CustomName",selection.CustomName())
+ .Add( "ForecastQty",selection.ForecastQty())
+ .Add( "ForecastID",selection.ID())
+ .Add( "NeedTime",selection.Month().AsQUILL()).Build().AsString());
}
- jResult := H_FunctionClass::SM_GetMaterialData( MacroPlan,selection.SKU(),selection.ForecastQty(),selection.OrderCode(),"-",selection.NeedTime());
+ jResult := H_FunctionClass::SM_GetMaterialData( MacroPlan,selection.SKU(),selection.ForecastQty(),selection.ID(),"-",selection.Month());
if(jResult.Get( "Status").GetBoolean())
{
Application.OpenForm( "FrmMaterial","popout");
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def
deleted file mode 100644
index 3d85f54..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnDoubleClick.def
+++ /dev/null
@@ -1,30 +0,0 @@
-Quintiq file version 2.0
-#parent: list_ForecastView_FOF
-Response OnDoubleClick (
- Forecast selection
-) id:Response_list_ForecastView_FOF_OnDoubleClick
-{
- #keys: '[414724.0.92081867]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebList_OnDoubleClick'
- GroupServerCalls: true
- Precondition:
- [*
- return not isnull( MacroPlan);
- *]
- QuillAction
- {
- Body:
- [*
- SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
- if( isnull( SelectItem))
- {
- MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
- }
- CustomID := "NO";
- CustonName :="鏈姄鍙栧埌";
- SelectItem.Value(selection.ProductID()+";"+selection.UnitOfMeasureName()+";"+CustomID+";"+CustonName);
- Application.OpenForm( "FrmMaterial","popout");
- *]
- }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def
deleted file mode 100644
index 582090d..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_list_ForecastView_FOF_OnSelectionChanged.def
+++ /dev/null
@@ -1,25 +0,0 @@
-Quintiq file version 2.0
-#parent: list_ForecastView_FOF
-Response OnSelectionChanged (
- Forecast selection
-) id:Response_list_ForecastView_FOF_OnSelectionChanged
-{
- #keys: '[414724.0.91684287]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebList_OnSelectionChanged'
- QuillAction
- {
- Body:
- [*
- SelectItem := select( MacroPlan,H_MessagePassing,Obj,Obj.FKey()="FrmOrderForecast" and Obj.ItemKey()="ListSelect");
- if( isnull( SelectItem))
- {
- MacroPlan.H_MessagePassing(relnew,FKey :="FrmOrderForecast",ItemKey := "ListSelect",Value := "");
- }
- CustomID := "NO";
- CustonName :="鏈姄鍙栧埌";
- SelectItem.Value(selection.ProductID()+";"+selection.UnitOfMeasureName()+";"+CustomID+";"+CustonName);
- *]
- GroupServerCalls: false
- }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
index d6e1cad..3d07f93 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def
@@ -7,100 +7,12 @@
BaseType: 'WebForm'
Children:
[
- #child: Panel849
- #child: list_ForecastView_FOF
- Component dh_FOF_Data
- {
- #keys: '[414724.0.86151860]'
- BaseType: 'WebDataHolder'
- Databinding: 'structured[SalesDemandBase]*'
- Children:
- [
- Component de_dh_FOF_Data
- {
- #keys: '[414724.0.86151875]'
- BaseType: 'WebDataExtractor'
- Properties:
- [
- DataType: 'structured[SalesDemandBase]'
- Source: 'dh_FOF_ChildrenData'
- Taborder: 0
- Transformation: 'Elements'
- ]
- }
- Component DataExtractor819
- {
- #keys: '[414724.0.107645127]'
- BaseType: 'WebDataExtractor'
- Properties:
- [
- DataType: 'MacroPlan'
- Source: 'MacroPlan'
- Taborder: 1
- Transformation: 'SalesDemand'
- ]
- }
- ]
- Properties:
- [
- Taborder: 4
- ]
- }
#child: Panel961
- Component dh_FOF_ChildrenData
- {
- #keys: '[414724.0.106541535]'
- BaseType: 'WebDataHolder'
- Databinding: 'structured[SalesDemandBase]*'
- Children:
- [
- Component de_FOF_ChildrenData_0
- {
- #keys: '[414724.0.106541577]'
- BaseType: 'WebDataExtractor'
- Properties:
- [
- DataType: 'structured[Product_MP]'
- Source: 'ApplicationMacroPlanner.DataHolderProduct'
- Taborder: 0
- Transformation: 'Elements.SalesDemand'
- ]
- }
- Component de_FOF_ChildrenData_1
- {
- #keys: '[414724.0.106541594]'
- BaseType: 'WebDataExtractor'
- Properties:
- [
- DataType: 'structured[StockingPoint_MP]'
- Source: 'ApplicationMacroPlanner.DataHolderStockingPoint'
- Taborder: 1
- Transformation: 'Elements.SalesDemand'
- ]
- }
- Component de_FOF_ChildrenData_2
- {
- #keys: '[414724.0.106541611]'
- BaseType: 'WebDataExtractor'
- Properties:
- [
- DataType: 'structured[SalesSegment_MP]'
- Source: 'ApplicationMacroPlanner.DataHolderSalesSegment'
- Taborder: 2
- Transformation: 'Elements.SalesDemand'
- ]
- }
- ]
- Properties:
- [
- Taborder: 3
- ]
- }
- Component dh_FOF_H_Forecast
+ Component dh_FOF_H_OrderForecastRealQty
{
#keys: '[414724.0.109053093]'
BaseType: 'WebDataHolder'
- Databinding: 'structured[H_Forecast]*'
+ Databinding: 'structured[H_OrderForecastRealQty]*'
Children:
[
Component de_dh_FOF_H_Foecast
@@ -112,13 +24,13 @@
DataType: 'MacroPlan'
Source: 'MacroPlan'
Taborder: 0
- Transformation: 'H_Forecast'
+ Transformation: 'H_OrderForecastRealQty'
]
}
]
Properties:
[
- Taborder: 6
+ Taborder: 2
]
}
#child: liH_Forecast
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_Button687_OnClick.def "b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_ButtonERP\350\256\242\345\215\225_OnClick.def"
similarity index 75%
rename from _Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_Button687_OnClick.def
rename to "_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_ButtonERP\350\256\242\345\215\225_OnClick.def"
index 6698b0e..e2bd314 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_Button687_OnClick.def
+++ "b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_ButtonERP\350\256\242\345\215\225_OnClick.def"
@@ -1,6 +1,6 @@
Quintiq file version 2.0
-#parent: Button687
-Response OnClick () id:Response_Frm_TEST_Button687_OnClick
+#parent: ButtonERP璁㈠崟
+Response OnClick () id:Response_Frm_TEST_ButtonERP璁㈠崟_OnClick
{
#keys: '[414724.0.164341791]'
CanBindMultiple: false
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/_ROOT_Component_Frm_TEST.def b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/_ROOT_Component_Frm_TEST.def
index 7f726bf..356e36c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/_ROOT_Component_Frm_TEST.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/_ROOT_Component_Frm_TEST.def
@@ -50,6 +50,8 @@
BaseType: 'WebButton'
Properties:
[
+ Image: 'HORSE'
+ Label: '璁㈠崟鍐插噺'
Taborder: 3
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Test.vw b/_Main/UI/MacroPlannerWebApp/Views/Test.vw
new file mode 100644
index 0000000..c66c058
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Test.vw
@@ -0,0 +1,177 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormCapacityAllocationResultsRuleConfiguration
+ {
+ title: 'QTIANMA_JITUAN::FormCapacityAllocationResultsRuleConfiguration'
+ shown: true
+ componentID: 'QTIANMA_JITUAN::FormCapacityAllocationResultsRuleConfiguration'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 4
+ }
+ components
+ {
+ FormCapacityAllocationResultsRuleConfiguration_PanelImportAndExport
+ {
+ sizeRatio: 1
+ }
+ FormCapacityAllocationResultsRuleConfiguration_ListCapacityAllocationResultsRuleConfiguration
+ {
+ }
+ FormCapacityAllocationResultsRuleConfiguration_DataSetLevelCapacityAllocationResultsRuleConfiguration
+ {
+ groupDepth: -1
+ column_PanelMaterialCode
+ {
+ columnId: 'PanelMaterialCode'
+ dataPath: 'PanelMaterialCode'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_ModuleMaterialCode
+ {
+ columnId: 'ModuleMaterialCode'
+ dataPath: 'ModuleMaterialCode'
+ dataType: 'string'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ column_Division
+ {
+ columnId: 'Division'
+ dataPath: 'Division'
+ dataType: 'string'
+ index: 2
+ subtotals: ''
+ width: 150
+ }
+ column_StockingPointID
+ {
+ columnId: 'StockingPointID'
+ dataPath: 'StockingPointID'
+ dataType: 'string'
+ index: 3
+ subtotals: ''
+ width: 150
+ }
+ }
+ }
+ }
+ form_FormCapacityAllocationResults
+ {
+ title: 'QTIANMA_JITUAN::FormCapacityAllocationResults'
+ shown: true
+ componentID: 'QTIANMA_JITUAN::FormCapacityAllocationResults'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 5
+ columnSpan: 8
+ }
+ components
+ {
+ FormCapacityAllocationResults_PanelCapacityAllocationResults
+ {
+ sizeRatio: 1
+ }
+ FormCapacityAllocationResults_ListCapacityAllocationResults
+ {
+ }
+ FormCapacityAllocationResults_DataSetLevelCapacityAllocationResults
+ {
+ groupDepth: -1
+ column_Date
+ {
+ columnId: 'Date'
+ dataPath: 'Date'
+ dataType: 'date'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_Description
+ {
+ columnId: 'Description'
+ dataPath: 'Description'
+ dataType: 'string'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ column_ID
+ {
+ columnId: 'ID'
+ dataPath: 'ID'
+ dataType: 'string'
+ index: 2
+ subtotals: ''
+ width: 150
+ }
+ column_ProductID
+ {
+ columnId: 'ProductID'
+ dataPath: 'ProductID'
+ dataType: 'string'
+ index: 3
+ subtotals: ''
+ width: 150
+ }
+ column_StockingPointID
+ {
+ columnId: 'StockingPointID'
+ dataPath: 'StockingPointID'
+ dataType: 'string'
+ index: 4
+ subtotals: ''
+ width: 150
+ }
+ column_UserQuantity
+ {
+ columnId: 'UserQuantity'
+ dataPath: 'UserQuantity'
+ dataType: 'real'
+ index: 5
+ subtotals: ''
+ width: 150
+ }
+ column_ManufacturedDate
+ {
+ columnId: 'ManufacturedDate'
+ dataPath: 'ManufacturedDate'
+ dataType: 'date'
+ index: 6
+ subtotals: ''
+ width: 150
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ image: 'BEAR'
+ page: ''
+ group: ''
+ index: 0
+ description: ''
+ }
+ formatversion: 2
+ id: 'Test'
+ name: 'Test'
+ isglobal: false
+ isroot: true
+}
diff --git a/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Test.vw b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Test.vw
new file mode 100644
index 0000000..1571655
--- /dev/null
+++ b/_var/_Main/ProjSettings/MacroPlannerWebApp/Views/Test.vw
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormCapacityAllocationResults
+ {
+ layout
+ {
+ rowSpan: 15
+ columnPosition: 5
+ columnSpan: 8
+ }
+ }
+ form_FormCapacityAllocationResultsRuleConfiguration
+ {
+ title: 'QTIANMA_JITUAN::FormCapacityAllocationResultsRuleConfiguration'
+ shown: true
+ componentID: 'QTIANMA_JITUAN::FormCapacityAllocationResultsRuleConfiguration'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 4
+ }
+ components: null
+ }
+ form_FormPanelPullPlanReport
+ {
+ _removed: true
+ }
+ }
+ }
+ formatversion: 2
+ id: 'Test'
+ name: 'Test'
+ isglobal: false
+ isroot: false
+}
--
Gitblit v1.9.3