From f144ca99e6b013ab135e72a50ceb19a351a79031 Mon Sep 17 00:00:00 2001
From: limj <limj@taizhitech.com>
Date: 星期二, 26 九月 2023 23:27:43 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lmj
---
_Main/BL/Type_Global_MappingOperationBOM/Attribute_IsLinkedWithFinishedGood.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/_ROOT_Component_FrmOrderForecast.def | 96 --
_Main/BL/EDI/Broker_GlobalOTDTable_CustomerGrade.qbl | 64 ++
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetBOMBySKU.qbl | 10
_Main/BL/Type_H_OrderForecastRealQty/Attribute_CustomCode.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/_ROOT_Component_FormCustomerOrders226.def | 18
_Main/BL/Type_Global_MappingDOI_DSI/TypeIndex_Global_MappingDOI_DSITypeIndex.qbl | 16
_Main/BL/Type_H_OrderForecastRealQty/Attribute_StockingPointID.qbl | 8
LibMacroPlannerOptimizer/BL/Type_CapacityPlanningSuboptimizer/Method_CapacityPlanningAlgorithmHandleFeasibleOperationDependentDemandInputG.qbl | 39
_Main/BL/Type_Routing/Method_GetHasTianmaNonSupplierOperationWithNoInput.qbl | 28
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSalesDemands.def | 30
_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl | 4
_Main/BL/Type_H_OrderForecastRealQty/Attribute_ForecastQty.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSalesDemands.def | 12
_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKU.qbl | 2
_Main/BL/Type_H_OrderForecastRealQty/Attribute_Unit.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def | 12
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelAllSalesDemands.def | 8
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl | 20
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetProductInfo#1.qbl | 7
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/FunctionOverride_CalcStockLevelInDays.qbl | 79 ++
_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def | 2
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_liH_Forecast_OnDoubleClick.def | 26
_Main/BL/Type_H_OrderForecastRealQty/Attribute_Department.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick#975.def | 3
_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_OnCreated.def | 6
_Main/BL/Type_H_OrderForecastRealQty/Attribute_Month.qbl | 2
_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_Global_MappingDOI_DSI/Attribute_DSI.qbl | 8
_Main/BL/Type_Global_MappingDOI_DSI/_ROOT_Type_Global_MappingDOI_DSI.qbl | 9
_Main/BL/Type_Global_MappingProduct_MP/Attribute_IsLinkedWithFinishedGood.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def | 10
_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def | 3
_Main/BL/EDI/Broker_GlobalOTDTable_DOI_DSI.qbl | 71 ++
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_ProductID.qbl | 9
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderReverseOrAuthorize.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuCreate_OnClick#715.def | 19
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Order_FOF449_OnClick#880.def | 21
LibMacroPlannerOptimizer/BL/Type_SelectorFullPuzzle/Method_SetOptimizerInput.qbl | 4
_Main/BL/Type_Global_MappingCustomerGrade/TypeIndex_Global_MappingCustomerGradeTypeIndex.qbl | 20
_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/_ROOT_Type_ProductInStockingPointInPeriodPlanningLeaf.qbl | 6
_Main/BL/Relations/Relation_H_CustomOrder_MacroPlan_MacroPlan_H_CustomOrder.qbl | 23
_Main/BL/Type_H_OrderForecastRealQty/Attribute_VCode.qbl | 8
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastDataEx.qbl | 102 +-
_Main/BL/Type_H_OrderForecastRealQty/Attribute_SKUName.qbl | 8
_Main/BL/Type_H_FunctionClass/StaticMethod_UpdateOrderForecastRealQty.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelSDIP.def | 15
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl | 17
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_ListSDIP.def | 20
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Response_ListSalesDemands_MenuEdit_OnClick.def | 20
_Main/BL/Relations/Relation_Global_MappingCustomerGrade_GlobalOTDTable_GlobalOTDTable_Global_Ma.qbl | 23
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_BusinessType.qbl | 9
_Main/BL/Type_Global_MappingOperation/Attribute_IsLinkedWithFinishedGood.qbl | 8
LibMacroPlanner/BL/Type_UnitPeriodTimeBase/Function_CalcTotalAvailableCapacity.qbl | 3
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_MaterialReverse.qbl | 7
_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl | 8
_Main/BL/Type_GlobalDTOTable/Method_SetIsLinkedWithFinishedGoodAttributes.qbl | 41 +
_Main/BL/Type_H_CustomOrder/_ROOT_Type_H_CustomOrder.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def | 42
_Main/BL/Type_Global_MappingCustomerGrade/_ROOT_Type_Global_MappingCustomerGrade.qbl | 9
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Query_FOF_OnClick.def | 21
_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_liH_Forecast.def | 8
_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_PanelSalesDemands.def | 8
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders226/Component_PanelAllSalesDemands.def | 11
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl | 17
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_Customer.qbl | 9
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DOI.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_Add_Material_FOF503_OnClick#222.def | 32
_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl | 20
_Main/BL/Type_Global_MappingCustomerGrade/Attribute_CustomerGrade.qbl | 9
_Main/BL/Type_Global_MappingDOI_DSI/Attribute_OrganCode.qbl | 9
_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl | 3
_Main/BL/Type_Routing/Method_DoSanityCheckData.qbl | 20
_Main/BL/Relations/Relation_Global_MappingDOI_DSI_GlobalOTDTable_GlobalOTDTable_Global_MappingD.qbl | 23
_Main/BL/Type_Global_MappingProduct_MP/Method_SetIsLinkedWithFinishedGoodAttributes_Recursive.qbl | 83 ++
/dev/null | 62 -
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl | 17
_Main/BL/Type_H_FunctionClass/StaticMethod_SM_OrderHedging.qbl | 321 +++++----
_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def | 47 +
_Main/BL/Type_CustomerOrder/Attribute_OrderTag.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCustomerOrders/Component_ListSalesDemands.def | 14
85 files changed, 1,417 insertions(+), 487 deletions(-)
diff --git a/LibMacroPlanner/BL/Type_UnitPeriodTimeBase/Function_CalcTotalAvailableCapacity.qbl b/LibMacroPlanner/BL/Type_UnitPeriodTimeBase/Function_CalcTotalAvailableCapacity.qbl
index 7b7de81..704abc5 100644
--- a/LibMacroPlanner/BL/Type_UnitPeriodTimeBase/Function_CalcTotalAvailableCapacity.qbl
+++ b/LibMacroPlanner/BL/Type_UnitPeriodTimeBase/Function_CalcTotalAvailableCapacity.qbl
@@ -16,7 +16,8 @@
if( not isnull( planningup ) )
{
- value := planningup.BaseAvailableCapacity().HoursAsReal() * planningup.MaximumLoadPercentage() / 100;
+ value := planningup.BaseAvailableCapacity().HoursAsReal() * planningup.MaximumLoadPercentage() / 100
+ * this.PlanningSystemRatio(); // Tianma fix 20230926
}
}
else
diff --git a/LibMacroPlannerOptimizer/BL/Type_CapacityPlanningSuboptimizer/Method_CapacityPlanningAlgorithmHandleFeasibleOperationDependentDemandInputG.qbl b/LibMacroPlannerOptimizer/BL/Type_CapacityPlanningSuboptimizer/Method_CapacityPlanningAlgorithmHandleFeasibleOperationDependentDemandInputG.qbl
index dcaa2a7..48ca380 100644
--- a/LibMacroPlannerOptimizer/BL/Type_CapacityPlanningSuboptimizer/Method_CapacityPlanningAlgorithmHandleFeasibleOperationDependentDemandInputG.qbl
+++ b/LibMacroPlannerOptimizer/BL/Type_CapacityPlanningSuboptimizer/Method_CapacityPlanningAlgorithmHandleFeasibleOperationDependentDemandInputG.qbl
@@ -9,7 +9,6 @@
Description: 'Assign the optimal quantity from optimizer for dependent demand in input group.'
TextBody:
[*
- // Tianma fix 20230727
// Dependent demand of input group fulfillment
ptperiod := periodtaskoperation.UnitPeriod().Period_MP();
operation := periodtaskoperation.Operation();
@@ -19,22 +18,24 @@
dd,
dd.HasRegularProductForOptimizer() or dd.OperationInput().GetIsProductInOptimizerRun( runcontext.IsPostProcessing() ) )
{
- pispipperiods := construct( Period_MPs, constcontent );
- if ( getfromperiodtask ) // in case we are able to get from period tasks, below method refinds periodtask for (operation, ptperiod) i.e. periodtaskoperation and then output dep.demand periods
- {
- traverse( periodtaskoperation, DependentDemand.ProductInStockingPointInPeriodPlanningLeaf.Period_MP, ddperiod )
- {
- pispipperiods.Add( ddperiod );
- }
- }
- else
- {
- CapacityPlanningSuboptimizer::GetOperationDependentDemandPeriods( ptperiod, operation, &pispipperiods, getfromperiodtask );
- }
+ fulfilledqty := 0.0;
- fulfilledqty := 0.0;
if( operation.HasLeadTime() ) // Get the dependent demands that is located at different period from the period of period task.
{
+ // compute dependent demand periods
+ pispipperiods := construct( Period_MPs, constcontent );
+ if ( getfromperiodtask ) // in case we are able to get from period tasks, below method refinds periodtask for (operation, ptperiod) i.e. periodtaskoperation and then output dep.demand periods
+ {
+ traverse( periodtaskoperation, DependentDemand.ProductInStockingPointInPeriodPlanningLeaf.Period_MP, ddperiod )
+ {
+ pispipperiods.Add( ddperiod );
+ }
+ }
+ else
+ {
+ CapacityPlanningSuboptimizer::GetOperationDependentDemandPeriods( ptperiod, operation, &pispipperiods, getfromperiodtask );
+ }
+
fulfilledqty := sum( pispipperiods, Elements, pispipperiod,
this.GetOptimalValue( program.PartialOperationDemandQtyVariables().Get( dd.OperationInput(), pispipperiod, ptperiod ) ) );
if ( runcontext.IsMetaIteration() and operation.IsBlending() ) // no filtering for numerical sensitive blending operation in meta optimizer
@@ -44,15 +45,15 @@
}
}
else
- {
- fulfilledqty := sum( pispipperiods, Elements, pispipperiod,
- this.GetOptimalValue( program.OperationDemandQtyVariables().Get( dd.OperationInput(), pispipperiod ) ) );
+ {
+ // note that in case there is no lead time then the set of dependent demand periods just equals the singleton set {ptperiod}
+ fulfilledqty := this.GetOptimalValue( program.OperationDemandQtyVariables().Get( dd.OperationInput(), ptperiod ) );
if( runcontext.IsMetaIteration() and operation.IsBlending() ) // no filtering for numerical sensitive blending operation in meta optimizer
{
- fulfilledqty := sum( pispipperiods, Elements, pispipperiod,
- this.GetOptimalValueUnfiltered( program.OperationDemandQtyVariables().Get( dd.OperationInput(), pispipperiod ) ) );
+ fulfilledqty := this.GetOptimalValueUnfiltered( program.OperationDemandQtyVariables().Get( dd.OperationInput(), ptperiod ) );
}
}
+
dd.OptimizerFulfilledQuantity( fulfilledqty );
}
*]
diff --git a/LibMacroPlannerOptimizer/BL/Type_SelectorFullPuzzle/Method_SetOptimizerInput.qbl b/LibMacroPlannerOptimizer/BL/Type_SelectorFullPuzzle/Method_SetOptimizerInput.qbl
index d9e0f40..c34a5c7 100644
--- a/LibMacroPlannerOptimizer/BL/Type_SelectorFullPuzzle/Method_SetOptimizerInput.qbl
+++ b/LibMacroPlannerOptimizer/BL/Type_SelectorFullPuzzle/Method_SetOptimizerInput.qbl
@@ -175,10 +175,12 @@
if ( ddperiodstotal.Size() > 0 )
{
+ minstart := min( ddperiodstotal, Elements, p, p.Start() );
+ minstartperiods := min( periods, Elements, p, p.Start() );
pispiptoadd := selectset( operation,
OperationInput.ProductInStockingPoint_MP.ProductInStockingPointInPeriodPlanning,
pispip,
- ddperiodstotal.Find( pispip.Period_MP() ) > 0
+ pispip.Start() >= minstart and pispip.Start() < minstartperiods // must add the entire block. Don't want gaps in the pispip horizon
and ( pispip.HasRegularProductForOptimizer() or pispip.GetProductIsIncludedInOptimizerRun( runcontext.IsPostProcessing() ) )
and not scope.Contains( pispip.PISPIPInOptimizerRun() ) )
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_CustomerGrade.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_CustomerGrade.qbl
new file mode 100644
index 0000000..9ba2dac
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_CustomerGrade.qbl
@@ -0,0 +1,64 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_CustomerGrade
+{
+ MDSDefinition: GlobalOTDTable
+ TimeZone: 'ACT'
+ UseOSTimeZone: false
+ EDIModelLink.Destination Destination16
+ {
+ EDIMLTable Global_MappingCustomerGrade
+ {
+ PrimaryKeyColumns: BusinessType
+ PrimaryKeyColumns: Customer
+ PrimaryKeyColumns: CustomerGrade
+ TargetType: Global_MappingCustomerGrade
+ TypeIndex: Global_MappingCustomerGradeTypeIndex
+ EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+ EDIMLColumn Customer { Attribute: Customer ValueType: String }
+ EDIMLColumn CustomerGrade { Attribute: CustomerGrade ValueType: String }
+ }
+ }
+ EDIODBCLink.Source Source15
+ {
+ DataIntegrityStrategy: 'Disabled'
+ SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+ EDIODBCLinkTable MID_CUSTOMERGRADE
+ {
+ OthersMayCreateTable: true
+ OthersMayDeleteRow: true
+ OthersMayDropTable: true
+ OthersMayFlushTable: true
+ OthersMayInsertRow: true
+ Parameters: '/owner="OTD"'
+ PrimaryKeyColumns: CUSTOMER
+ RecordModificationHintStrategy: 'None'
+ EDIODBCLinkColumn BUSINESSTYPE
+ {
+ OthersMayUpdateColumn: true
+ ValueType: String
+ }
+ EDIODBCLinkColumn CUSTOMER
+ {
+ OthersMayUpdateColumn: true
+ ValueType: String
+ }
+ EDIODBCLinkColumn CUSTOMERGRADE
+ {
+ OthersMayUpdateColumn: true
+ ValueType: String
+ }
+ }
+ }
+ EDITransformation.Transformation Transformation15
+ {
+ EDITableTransformation
+ {
+ InputTable: MID_CUSTOMERGRADE
+ OutputTable: Global_MappingCustomerGrade
+ EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+ EDIColumnMatch { InputColumn: CUSTOMER OutputColumn: Customer }
+ EDIColumnMatch { InputColumn: CUSTOMERGRADE OutputColumn: CustomerGrade }
+ }
+ }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_DOI_DSI.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_DOI_DSI.qbl
new file mode 100644
index 0000000..4fcd29e
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_DOI_DSI.qbl
@@ -0,0 +1,71 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_DOI_DSI
+{
+ MDSDefinition: GlobalOTDTable
+ TimeZone: 'ACT'
+ UseOSTimeZone: false
+ EDIModelLink.Destination Destination15
+ {
+ EDIMLTable Global_MappingDOI_DSI
+ {
+ PrimaryKeyColumns: OrganCode
+ PrimaryKeyColumns: ProductID
+ TargetType: Global_MappingDOI_DSI
+ TypeIndex: Global_MappingDOI_DSITypeIndex
+ EDIMLColumn DOI { Attribute: DOI ValueType: String }
+ EDIMLColumn DSI { Attribute: DSI ValueType: String }
+ EDIMLColumn OrganCode { Attribute: OrganCode ValueType: String }
+ EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+ }
+ }
+ EDIODBCLink.Source Source14
+ {
+ DataIntegrityStrategy: 'Disabled'
+ SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+ EDIODBCLinkTable MID_DOI_DSI
+ {
+ OthersMayCreateTable: true
+ OthersMayDeleteRow: true
+ OthersMayDropTable: true
+ OthersMayFlushTable: true
+ OthersMayInsertRow: true
+ Parameters: '/owner="OTD"'
+ PrimaryKeyColumns: ORGANCODE
+ PrimaryKeyColumns: PRODUCTID
+ RecordModificationHintStrategy: 'None'
+ EDIODBCLinkColumn DOI
+ {
+ OthersMayUpdateColumn: true
+ ValueType: String
+ }
+ EDIODBCLinkColumn DSI
+ {
+ OthersMayUpdateColumn: true
+ ValueType: String
+ }
+ EDIODBCLinkColumn ORGANCODE
+ {
+ OthersMayUpdateColumn: true
+ ValueType: String
+ }
+ EDIODBCLinkColumn PRODUCTID
+ {
+ OthersMayUpdateColumn: true
+ ValueType: String
+ }
+ }
+ }
+ EDITransformation.Transformation Transformation14
+ {
+ EDITableTransformation
+ {
+ InputTable: MID_DOI_DSI
+ OutputTable: Global_MappingDOI_DSI
+ EDIColumnMatch { InputColumn: DOI OutputColumn: DOI }
+ EDIColumnMatch { InputColumn: DSI OutputColumn: DSI }
+ EDIColumnMatch { InputColumn: ORGANCODE OutputColumn: OrganCode }
+ EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+ }
+ }
+}
diff --git a/_Main/BL/Relations/Relation_Global_MappingCustomerGrade_GlobalOTDTable_GlobalOTDTable_Global_Ma.qbl b/_Main/BL/Relations/Relation_Global_MappingCustomerGrade_GlobalOTDTable_GlobalOTDTable_Global_Ma.qbl
new file mode 100644
index 0000000..9f05865
--- /dev/null
+++ b/_Main/BL/Relations/Relation_Global_MappingCustomerGrade_GlobalOTDTable_GlobalOTDTable_Global_Ma.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation Global_MappingCustomerGrade_GlobalOTDTable_GlobalOTDTable_Global_MappingCustomerGrade
+{
+ #keys: '1[414702.0.445485678]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide GlobalOTDTable
+ {
+ #keys: '3[414702.0.445485680][414702.0.445485679][414702.0.445485681]'
+ Cardinality: '0to1'
+ ObjectDefinition: Global_MappingCustomerGrade
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Global_MappingCustomerGrade
+ {
+ #keys: '3[414702.0.445485683][414702.0.445485682][414702.0.445485684]'
+ Cardinality: '1toN'
+ ObjectDefinition: GlobalOTDTable
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_Global_MappingDOI_DSI_GlobalOTDTable_GlobalOTDTable_Global_MappingD.qbl b/_Main/BL/Relations/Relation_Global_MappingDOI_DSI_GlobalOTDTable_GlobalOTDTable_Global_MappingD.qbl
new file mode 100644
index 0000000..2020f2e
--- /dev/null
+++ b/_Main/BL/Relations/Relation_Global_MappingDOI_DSI_GlobalOTDTable_GlobalOTDTable_Global_MappingD.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation Global_MappingDOI_DSI_GlobalOTDTable_GlobalOTDTable_Global_MappingDOI_DSI
+{
+ #keys: '1[414702.0.445364657]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide GlobalOTDTable
+ {
+ #keys: '3[414702.0.445364659][414702.0.445364658][414702.0.445364660]'
+ Cardinality: '0to1'
+ ObjectDefinition: Global_MappingDOI_DSI
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide Global_MappingDOI_DSI
+ {
+ #keys: '3[414702.0.445364662][414702.0.445364661][414702.0.445364663]'
+ 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_CapacityAllocationResults/StaticMethod_CreateDate.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl
index 119198c..2340157 100644
--- a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_CreateDate.qbl
@@ -19,7 +19,7 @@
traverse ( finaleProductInStockingPoint_MPs, Elements, fpispmp ) {
capacityAllocationResultsRuleConfigurations := selectset( globalOTDTable, CapacityAllocationResultsRuleConfiguration, tempCARRC, tempCARRC.ModuleMaterialCode() = fpispmp.ProductID() and tempCARRC.StockingPointID() = fpispmp.StockingPointID() );
- info( "鐢熶骇鐨勪骇鍝侊細", fpispmp.ProductID(), "------浜у搧鍦ㄥ簱瀛樼偣-------锛�", 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 );
diff --git a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl
index 3f70ca5..b327f63 100644
--- a/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl
+++ b/_Main/BL/Type_CapacityAllocationResults/StaticMethod_IterativeGeneration2.qbl
@@ -13,7 +13,7 @@
TextBody:
[*
numberOfLayers++;
- info( "鐩爣鏃堕棿锛�", targetDate.Format( "Y-M2-D2" ) );
+ //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 ) {
@@ -23,14 +23,17 @@
ontype( ns.PeriodTask_MP() ) {
PeriodTaskOperation as pto : {
- info( "Operation鍛ㄦ湡浠诲姟..." );
+ // info( "Operation鍛ㄦ湡浠诲姟..." );
traverse ( ns, PeriodTask_MP.astype( PeriodTaskOperation ).DependentDemand, dd ) {
+ if ( numberOfLayers = 1 ) {
+ currentLayerDependentDemandQuantity := ns.Quantity();
+ }
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( "-----------------------------------------------------------------------------------------------------------------" );
+ // 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,
@@ -42,7 +45,7 @@
}
carrc := select( carrcs, Elements, carrc, carrc.PanelMaterialCode() = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() );
if ( not isnull( carrc ) ) {
- info( "鎵惧埌闈㈡澘鐗╂枡..." );
+ // info( "鎵惧埌闈㈡澘鐗╂枡..." );
globalOTDTable.CapacityAllocationResults( relnew,
PanelBase := pto.Operation().UnitID(),
PanelMaterialCode := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
@@ -58,7 +61,7 @@
Description := "",
ID := OS::GenerateGUIDAsString(),
ProductID := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID(),
- StockingPointID := "",
+ StockingPointID := ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().StockingPointID(),
UserQuantity := currentLayerDependentDemandQuantity,
ManufacturedDate := Date::MinDate()
);
@@ -70,9 +73,9 @@
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( "灞傛暟锛�", 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(),
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_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl
new file mode 100644
index 0000000..26b2034
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_CustomerGrade (
+ Number errorNo,
+ String errorMessage
+)
+{
+ TextBody:
+ [*
+ this.Global_BrokerExecuteLog( relnew,
+ BrokerName := "GlobalOTDTable_CustomerGrade",
+ ElementTotal := 0,
+ ErrorMessage := errorMessage,
+ IsSuccess := false,
+ Name := "瀹㈡埛绛夌骇鏁版嵁",
+ ErrorNo := errorNo,
+ ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+ );
+ *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl
new file mode 100644
index 0000000..8ebfbf3
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecuteFailure_GlobalOTDTable_DOI_DSI (
+ Number errorNo,
+ String errorMessage
+)
+{
+ TextBody:
+ [*
+ this.Global_BrokerExecuteLog( relnew,
+ BrokerName := "GlobalOTDTable_DOI_DSI",
+ ElementTotal := 0,
+ ErrorMessage := errorMessage,
+ IsSuccess := false,
+ Name := "DOI_DSI鏁版嵁",
+ ErrorNo := errorNo,
+ ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+ );
+ *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl
new file mode 100644
index 0000000..e09fc63
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_CustomerGrade.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_CustomerGrade
+{
+ TextBody:
+ [*
+ this.Global_BrokerExecuteLog( relnew,
+ BrokerName := "GlobalOTDTable_CustomerGrade",
+ ElementTotal := this.Global_MappingCustomerGrade( relsize ),
+ ErrorMessage := "",
+ IsSuccess := true,
+ Name := "瀹㈡埛绛夌骇鏁版嵁",
+ SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+ ErrorNo := 0
+ );
+ *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl
new file mode 100644
index 0000000..9082ba1
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_DOI_DSI.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_DOI_DSI
+{
+ TextBody:
+ [*
+ this.Global_BrokerExecuteLog( relnew,
+ BrokerName := "GlobalOTDTable_DOI_DSI",
+ ElementTotal := this.Global_MappingDOI_DSI( relsize ),
+ ErrorMessage := "",
+ IsSuccess := true,
+ Name := "DOI_DSI鏁版嵁",
+ SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+ ErrorNo := 0
+ );
+ *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_SetIsLinkedWithFinishedGoodAttributes.qbl b/_Main/BL/Type_GlobalDTOTable/Method_SetIsLinkedWithFinishedGoodAttributes.qbl
new file mode 100644
index 0000000..6aedc24
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_SetIsLinkedWithFinishedGoodAttributes.qbl
@@ -0,0 +1,41 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetIsLinkedWithFinishedGoodAttributes
+{
+ Description: 'Method to traverse the supply chain to determine if there are any products that are not used to produce finished goods.'
+ TextBody:
+ [*
+ // Reset IsLinkedWithFinishedGood
+ traverse( this, Global_MappingProduct_MP, instance )
+ {
+ instance.IsLinkedWithFinishedGood( false );
+ }
+
+ traverse( this, Global_MappingOperation, instance )
+ {
+ instance.IsLinkedWithFinishedGood( false );
+ }
+
+ traverse( this, Global_MappingOperationBOM, instance )
+ {
+ instance.IsLinkedWithFinishedGood( false );
+ }
+
+ productspool := selectset( this, Global_MappingProduct_MP, product,
+ product.ProductMajorType() <> "鎴愬搧" );
+ operationspool := this.Global_MappingOperation( relget );
+ operationbomspool := this.Global_MappingOperationBOM( relget );
+
+ // Traverse each finished good and search for linked products/operations/lanes
+ traverse( this, Global_MappingProduct_MP, product,
+ product.ProductMajorType() = "鎴愬搧" )
+ {
+ product.SetIsLinkedWithFinishedGoodAttributes_Recursive( 0, // depth
+ 100, // maxdepth
+ productspool,
+ operationspool,
+ operationbomspool );
+
+ }
+ *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
index 100a489..9239cfb 100644
--- a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
@@ -25,6 +25,8 @@
globalOTDTable.Global_MappingOperationCost( relflush );
globalOTDTable.Global_MappingForecast( relflush );
globalOTDTable.Global_MappingCustomOrder( relflush );
+ globalOTDTable.Global_MappingDOI_DSI( relflush );
+ globalOTDTable.Global_MappingCustomerGrade( relflush );
globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().AsyncExecute();
globalOTDTable.GlobalOTDTable_SalesSegment_MP().AsyncExecute();
@@ -44,5 +46,7 @@
globalOTDTable.GlobalOTDTable_OperationCost().AsyncExecute();
globalOTDTable.GlobalOTDTable_Forecast().AsyncExecute();
globalOTDTable.GlobalOTDTable_CustomOrder().AsyncExecute();
+ globalOTDTable.GlobalOTDTable_DOI_DSI().AsyncExecute();
+ globalOTDTable.GlobalOTDTable_CustomerGrade().AsyncExecute();
*]
}
diff --git a/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_BusinessType.qbl b/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_BusinessType.qbl
new file mode 100644
index 0000000..0c0ee82
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_BusinessType.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BusinessType
+{
+ #keys: '3[414702.0.445738362][414702.0.445738361][414702.0.445738363]'
+ Description: '浜嬩笟閮�'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_Customer.qbl b/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_Customer.qbl
new file mode 100644
index 0000000..046a760
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_Customer.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Customer
+{
+ #keys: '3[414702.0.445738352][414702.0.445738351][414702.0.445738353]'
+ Description: '瀹㈡埛鍚嶇О'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_CustomerGrade.qbl b/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_CustomerGrade.qbl
new file mode 100644
index 0000000..cd779bb
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomerGrade/Attribute_CustomerGrade.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomerGrade
+{
+ #keys: '3[414702.0.445738372][414702.0.445738371][414702.0.445738373]'
+ Description: '瀹㈡埛绛夌骇'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingCustomerGrade/TypeIndex_Global_MappingCustomerGradeTypeIndex.qbl b/_Main/BL/Type_Global_MappingCustomerGrade/TypeIndex_Global_MappingCustomerGradeTypeIndex.qbl
new file mode 100644
index 0000000..b30282d
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomerGrade/TypeIndex_Global_MappingCustomerGradeTypeIndex.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex Global_MappingCustomerGradeTypeIndex
+{
+ Attributes:
+ [
+ TypeIndexAttribute
+ {
+ ModelElement: BusinessType
+ }
+ TypeIndexAttribute
+ {
+ ModelElement: Customer
+ }
+ TypeIndexAttribute
+ {
+ ModelElement: CustomerGrade
+ }
+ ]
+}
diff --git a/_Main/BL/Type_Global_MappingCustomerGrade/_ROOT_Type_Global_MappingCustomerGrade.qbl b/_Main/BL/Type_Global_MappingCustomerGrade/_ROOT_Type_Global_MappingCustomerGrade.qbl
new file mode 100644
index 0000000..f568483
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingCustomerGrade/_ROOT_Type_Global_MappingCustomerGrade.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingCustomerGrade
+{
+ #keys: '5[414702.0.445485672][414702.0.445485670][0.0.0][414702.0.445485671][414702.0.445485673]'
+ BaseType: Object
+ StructuredName: 'Global_MappingCustomerGrades'
+}
diff --git a/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DOI.qbl b/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DOI.qbl
new file mode 100644
index 0000000..d4d3c40
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DOI.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DOI
+{
+ #keys: '3[414702.0.445364709][414702.0.445364708][414702.0.445364710]'
+ Description: '搴撳瓨鍛ㄨ浆澶╂暟'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DSI.qbl b/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DSI.qbl
new file mode 100644
index 0000000..2ad6d72
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_DSI.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DSI
+{
+ #keys: '3[414702.0.445364719][414702.0.445364718][414702.0.445364720]'
+ Description: '搴撳瓨鍙敭澶╂暟'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_OrganCode.qbl b/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_OrganCode.qbl
new file mode 100644
index 0000000..2bd3055
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_OrganCode.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OrganCode
+{
+ #keys: '3[414702.0.445364699][414702.0.445364698][414702.0.445364700]'
+ Description: '缁勭粐缂栫爜'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_ProductID.qbl b/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_ProductID.qbl
new file mode 100644
index 0000000..51fd7ff
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingDOI_DSI/Attribute_ProductID.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductID
+{
+ #keys: '3[414702.0.445364677][414702.0.445364676][414702.0.445364678]'
+ Description: '鐗╂枡缂栫爜'
+ IsReadOnly: true
+ ValueType: String
+}
diff --git a/_Main/BL/Type_Global_MappingDOI_DSI/TypeIndex_Global_MappingDOI_DSITypeIndex.qbl b/_Main/BL/Type_Global_MappingDOI_DSI/TypeIndex_Global_MappingDOI_DSITypeIndex.qbl
new file mode 100644
index 0000000..c088e3b
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingDOI_DSI/TypeIndex_Global_MappingDOI_DSITypeIndex.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+TypeIndex Global_MappingDOI_DSITypeIndex
+{
+ Attributes:
+ [
+ TypeIndexAttribute
+ {
+ ModelElement: ProductID
+ }
+ TypeIndexAttribute
+ {
+ ModelElement: OrganCode
+ }
+ ]
+}
diff --git a/_Main/BL/Type_Global_MappingDOI_DSI/_ROOT_Type_Global_MappingDOI_DSI.qbl b/_Main/BL/Type_Global_MappingDOI_DSI/_ROOT_Type_Global_MappingDOI_DSI.qbl
new file mode 100644
index 0000000..628e476
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingDOI_DSI/_ROOT_Type_Global_MappingDOI_DSI.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Global_MappingDOI_DSI
+{
+ #keys: '5[414702.0.445364654][414702.0.445364652][0.0.0][414702.0.445364653][414702.0.445364655]'
+ BaseType: Object
+ StructuredName: 'Global_MappingDOI_DSIs'
+}
diff --git a/_Main/BL/Type_Global_MappingOperation/Attribute_IsLinkedWithFinishedGood.qbl b/_Main/BL/Type_Global_MappingOperation/Attribute_IsLinkedWithFinishedGood.qbl
new file mode 100644
index 0000000..76d65ba
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperation/Attribute_IsLinkedWithFinishedGood.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsLinkedWithFinishedGood
+{
+ #keys: '3[157968.0.1145180207][157968.0.1145180206][157968.0.1145180208]'
+ Description: 'Updated procedurally for checking whether this object is used to produce a finished good.'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/Attribute_IsLinkedWithFinishedGood.qbl b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_IsLinkedWithFinishedGood.qbl
new file mode 100644
index 0000000..e5ff163
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingOperationBOM/Attribute_IsLinkedWithFinishedGood.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsLinkedWithFinishedGood
+{
+ #keys: '3[157968.0.1145180190][157968.0.1145180189][157968.0.1145180191]'
+ Description: 'Updated procedurally for checking whether this object is used to produce a finished good.'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Attribute_IsLinkedWithFinishedGood.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_IsLinkedWithFinishedGood.qbl
new file mode 100644
index 0000000..d2cec36
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Attribute_IsLinkedWithFinishedGood.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsLinkedWithFinishedGood
+{
+ #keys: '3[157968.0.1145180168][157968.0.1145180167][157968.0.1145180169]'
+ Description: 'Updated procedurally for checking whether this product is used to produce a finished good.'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_Global_MappingProduct_MP/Method_SetIsLinkedWithFinishedGoodAttributes_Recursive.qbl b/_Main/BL/Type_Global_MappingProduct_MP/Method_SetIsLinkedWithFinishedGoodAttributes_Recursive.qbl
new file mode 100644
index 0000000..4c9b813
--- /dev/null
+++ b/_Main/BL/Type_Global_MappingProduct_MP/Method_SetIsLinkedWithFinishedGoodAttributes_Recursive.qbl
@@ -0,0 +1,83 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetIsLinkedWithFinishedGoodAttributes_Recursive (
+ Number depth,
+ Number maxdepth,
+ Global_MappingProduct_MPs productspool,
+ Global_MappingOperations operationspool,
+ Global_MappingOperationBOMs operationbomspool
+)
+{
+ Description: 'Method to traverse the supply chain recursively to determine if there are any products that are not used to produce finished goods.'
+ TextBody:
+ [*
+ if( not this.IsLinkedWithFinishedGood() )
+ {
+ depth := depth + 1;
+ this.IsLinkedWithFinishedGood( true );
+
+ if( depth <= maxdepth )
+ {
+ operations := selectset( operationspool, Elements, operation,
+ not operation.IsLinkedWithFinishedGood()
+ and operation.BusinessType() = this.BusinessType()
+ and operation.ProductID() = this.ID() );
+ operationspool.Remove( operations );
+
+ traverse( operations, Elements, operation )
+ {
+ operation.IsLinkedWithFinishedGood( true );
+
+ operationboms := selectset( operationbomspool, Elements, operationbom,
+ not operationbom.IsLinkedWithFinishedGood()
+ and operationbom.BusinessType() = operation.BusinessType()
+ and operationbom.OrganCode() = operation.OrganCode()
+ and operationbom.ProcessSection() = operation.ProcessSection()
+ and operationbom.ProductCode() = operation.ProductID() );
+ operationbomspool.Remove( operationboms );
+
+ traverse( operationboms, Elements, operationbom )
+ {
+ operationbom.IsLinkedWithFinishedGood( true );
+
+ componentproduct := Global_MappingProduct_MP::FindTypeIndexIDAndBusinessType( operationbom.ComponentCode(),
+ operationbom.BusinessType() );
+
+ if( guard( not componentproduct.IsLinkedWithFinishedGood(), false ) )
+ {
+ productspool.Remove( componentproduct );
+ componentproduct.SetIsLinkedWithFinishedGoodAttributes_Recursive( depth,
+ maxdepth,
+ productspool,
+ operationspool,
+ operationbomspool );
+ }
+
+ if( operationbom.AlternativeMaterialCode() <> ""
+ and operationbom.AlternativeMaterialCode() <> operationbom.ComponentCode() )
+ {
+ alternativeproduct := Global_MappingProduct_MP::FindTypeIndexIDAndBusinessType( operationbom.AlternativeMaterialCode(),
+ operationbom.BusinessType() );
+
+ if( guard( not alternativeproduct.IsLinkedWithFinishedGood(), false ) )
+ {
+ productspool.Remove( alternativeproduct );
+ alternativeproduct.SetIsLinkedWithFinishedGoodAttributes_Recursive( depth,
+ maxdepth,
+ productspool,
+ operationspool,
+ operationbomspool );
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ debuginfo( "Product:", this.ID(),
+ "| BusinessType:", this.BusinessType(),
+ "| Max depth reached, stop searching... (", depth, ")" );
+ }
+ }
+ *]
+}
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_GetBOMBySKU.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetBOMBySKU.qbl
index a10fbae..11d0768 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetBOMBySKU.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetBOMBySKU.qbl
@@ -1,17 +1,17 @@
Quintiq file version 2.0
#parent: #root
StaticMethod SM_GetBOMBySKU (
- MacroPlan Owner,
+ GlobalOTDTable GlobData,
String SKU
-) as MappingBOM
+) as Global_MappingOperationBOM
{
Description: '鏍规嵁SKU鑾峰彇BOM'
TextBody:
[*
- Obj :=null( MappingBOM,constcontent );
- if( not isnull( Owner) and SKU.Length()>0)
+ Obj :=null( Global_MappingOperationBOM,constcontent );
+ if( not isnull( GlobData) and SKU.Length()>0)
{
- Obj := select( Owner,MappingBOM,ObjM,ObjM.ProductCode()=SKU);
+ Obj := select( GlobData,Global_MappingOperationBOM,ObjM,ObjM.ProductCode()=SKU);
}
return Obj;
*]
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl
index 3edc063..850417c 100644
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl
+++ b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetMaterialData.qbl
@@ -6,7 +6,8 @@
Number ProductQty,
String ForecastId,
String VCode,
- Date NDate
+ Date NDate,
+ GlobalOTDTable GlobData
) as owning JSON
{
Description: '鑾峰彇鐗╂枡淇℃伅'
@@ -26,15 +27,15 @@
if( Owner.MappingBOM(relsize )>0)
{
// 寰楀埌涓嬩竴绾ф暟鎹�
- AllData:= selectset( Owner, MappingBOM,object,object.ComponentCode()=ParentSKU);
- ObjProduct := null( MappingProduct,constcontent );
+ AllData:= selectset( GlobData, Global_MappingOperationBOM,object,object.ComponentCode()=ParentSKU);
+ ObjProduct := null( Product_MP,constcontent );
ObjUnit := null( Unit,constcontent );
MaterialType:="";
MaterialName:="-";
StockPoint := "";
NRate:=1.0;
NComponentsUsed :=0.0;
- ObjBOM := H_FunctionClass::SM_GetBOMBySKU( Owner,ParentSKU);
+ ObjBOM := H_FunctionClass::SM_GetBOMBySKU(GlobData,ParentSKU);
if(not isnull( ObjBOM))
{
NRate := ObjBOM.ComponentOutputRate();
@@ -56,10 +57,10 @@
// 鐗╂枡绫诲瀷
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();
+ MaterialType:= ObjProduct.ParentID();
MaterialName:=ObjProduct.Name();
}
ObjUnit:= H_FunctionClass::SM_GetUnitBySKU( Owner,Obj.ProductCode());
@@ -87,6 +88,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..09e6868 100644
--- "a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetProductInfo\0431.qbl"
+++ "b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_GetProductInfo\0431.qbl"
@@ -3,16 +3,17 @@
StaticMethod SM_GetProductInfo (
MacroPlan Owner,
String SKU
-) as MappingProduct
+) as Product_MP
{
Description: '鏍规嵁SKU鑾峰彇鐗╂枡淇℃伅'
TextBody:
[*
// 鏍规嵁SKU鑾峰彇鐗╂枡淇℃伅
- Obj := null( MappingProduct,constcontent );
+ // 娉ㄦ剰锛氱墿鏂欑被鍨嬪彇 ParentID
+ Obj := null( Product_MP,constcontent );
if( not isnull( Owner) and SKU.Length()>0)
{
- Obj:= select( Owner,MappingProduct,ObjMP,ObjMP.ID()=SKU);
+ Obj:= select( Owner,Product_MP,ObjMP,ObjMP.ID()=SKU);
}
return Obj;
*]
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl
deleted file mode 100644
index edf6c16..0000000
--- a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastData.qbl
+++ /dev/null
@@ -1,111 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod SM_InitialForcastData (
- MacroPlan Owner
-) as owning JSON
-{
- Description: '鍒濆鍖栬鍗曢娴嬩俊鎭�'
- TextBody:
- [*
- /**********************************鍒濆鍖栬鍗曢娴嬩俊鎭�***************************************
- *娉細鏈‘瀹氫笂娓搁娴嬭鍗曟洿鏂伴�昏緫鍜屾暟鎹湁鏁堟�э紝杩欓噷杩涜浜屾澶勭悊锛屾柊鐢熸垚涓�涓垪琛紝閬垮厤涓婃父淇℃伅鍙樺姩涓ラ噸
- * 褰卞搷鍔熻兘
- *
- *****************************************************************************************/
- // 鍒濆鍖栫粨鏋�
- bStatus := false;
- strMsg :="";
-
- try{
- // 娓呴櫎鏃ф暟鎹紝閲嶆柊鎷夊彇
- if(Owner.H_Forecast(relget ).Size()>0)
- {
- traverse( Owner,H_Forecast,Obj,not isnull( Obj))
- {
- Owner.H_Forecast(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()
- 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))
- {
- // 杩欓噷鐢ㄦ煡鎵惧悗鎴彇锛屽洜涓轰笉纭畾鏈夊嚑涓í绾匡紝浠ョ涓�涓负鍑�
- idx:=Obj.SalesSegmentName().FindString( "-",0);
- if(idx>0)
- {
- 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()
- and ObjO.Month().StartOfMonth() = Obj.EndDate().StartOfMonth() )
- if( 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());
- }
- 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);
- }
- }
- }
-
-
- bStatus := true;
- strMsg :="璁㈠崟棰勬祴鍒濆鍖栨垚鍔�!";
- }
- onerror
- {
- strMsg :="璁㈠崟棰勬祴鍒濆鍖栧け璐ワ紝鍙兘褰卞搷鍐插噺璁$畻锛岃鑱旂郴绯荤粺绠$悊鍛橈紒";
- Owner.H_ErrorLogs(relnew,EClassName := "H_FunctionClass",EDateTime := DateTime::ActualGMTTime(),EFunctionName := "SM_InitialForcastData",
- DeveloperInformation := e.DeveloperInformation(),ErrorNr := e.ErrorNr(),DetailedInformation := e.DetailedInformation(),
- GeneralInformation := e.GeneralInformation());
- }
- return JSON::Object().Add( "Status",bStatus)
- .Add( "Msg",strMsg).Build();
- *]
-}
diff --git a/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastDataEx.qbl b/_Main/BL/Type_H_FunctionClass/StaticMethod_SM_InitialForcastDataEx.qbl
index 524b723..d8870c8 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,46 @@
/**********************************鍒濆鍖栬鍗曢娴嬩俊鎭�***************************************
*娉細鏈‘瀹氫笂娓搁娴嬭鍗曟洿鏂伴�昏緫鍜屾暟鎹湁鏁堟�э紝杩欓噷杩涜浜屾澶勭悊锛屾柊鐢熸垚涓�涓垪琛紝閬垮厤涓婃父淇℃伅鍙樺姩涓ラ噸
* 褰卞搷鍔熻兘
- *
+ *鍙傛暟锛欼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 );
+ SKU:="";
+ SKUName := "";
+
traverse( AllData,Elements,Obj,not isnull(Obj))
{
+ // 娌℃湁瀹㈡埛淇℃伅鍜岄儴闂ㄤ俊鎭紝SalesSegmentName=浜嬩笟閮�+鈥�-鈥�+瀹㈡埛鍚嶇О
+ CustomName := Obj.SalesSegmentName();
+ DepartMent := Obj.SalesSegmentName();
+ SKU :=Obj.ProductID();
// 杩欓噷鐢ㄦ煡鎵惧悗鎴彇锛屽洜涓轰笉纭畾鏈夊嚑涓í绾匡紝浠ョ涓�涓负鍑�
idx:=Obj.SalesSegmentName().FindString( "-",0);
if(idx>0)
@@ -48,61 +59,40 @@
DepartMent:=Obj.SalesSegmentName().SubString( 0,idx);
CustomName := Obj.SalesSegmentName().SubString( idx+1, Obj.SalesSegmentName().Length() - (idx+1));
}
- else
+
+ // 鑾峰彇鐗╂枡淇℃伅
+ ObjMaterial := H_FunctionClass::SM_GetProductInfo( Owner,Obj.ProductID());
+ if(not isnull( ObjMaterial))
{
- CustomName :=Obj.SalesSegmentName();
- DepartMent := "閮ㄩ棬鏁版嵁鑾峰彇澶辫触锛�"
+ SKUName := ObjMaterial.Name();
}
- // // 浠庣墿鏂欒〃鑾峰彇鐗╂枡淇℃伅
- // 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,SKUName := SKUName);
}
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_MacroPlan/Method_MappingUnitData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
index eeb6a49..e826ddb 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
@@ -42,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_Operation/Method_GetHasValidOperationInputOutput.qbl b/_Main/BL/Type_Operation/Method_GetHasValidOperationInputOutput.qbl
deleted file mode 100644
index 09ae8ea..0000000
--- a/_Main/BL/Type_Operation/Method_GetHasValidOperationInputOutput.qbl
+++ /dev/null
@@ -1,38 +0,0 @@
-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_ProductInStockingPointInPeriodPlanningLeaf/FunctionOverride_CalcStockLevelInDays.qbl b/_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/FunctionOverride_CalcStockLevelInDays.qbl
new file mode 100644
index 0000000..bd5d786
--- /dev/null
+++ b/_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/FunctionOverride_CalcStockLevelInDays.qbl
@@ -0,0 +1,79 @@
+Quintiq file version 2.0
+#parent: #root
+FunctionOverride CalcStockLevelInDays #extension
+{
+ TextBody:
+ [*
+ totalDays := 0.0;
+
+ if( not this.Period_MP().MacroPlan().IsMetaOptimizerRunning() )
+ {
+ balanceInv := this.InventoryLevelEnd();
+
+ if( balanceInv > 0 )
+ {
+ // Calculate stock level in days
+ futureperiods := selectsortedset( this, ProductInStockingPoint_MP.ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), p,
+ p.Start() >= this.End(), p.Start() );
+ product := this.ProductInStockingPoint_MP().Product_MP();
+ shelflife := this.ShelfLife();
+ hasshelflife := product.HasShelfLife() and not isnull( shelflife );
+ agevector := RealVector::Construct();
+ quantityvector := RealVector::Construct();
+
+ // Modified logic to consider shelf-life for stock level in days
+ if( hasshelflife )
+ {
+ // Get the age and quantity vector of remaining product stock at the end of period
+ agevector := RealVector::Construct( shelflife.ShelfLifeEndAgeVectorAsBinaryValue() );
+ quantityvector := RealVector::Construct( shelflife.ShelfLifeEndQuantityVectorAsBinaryValue() );
+ }
+
+ /*
+ Track if consecutive future periods has 0 demand (although we have balance supply, but if remaining future periods has 0 demand not consider as coverable).
+ Accumulate the coverable days and only add to total days if manage to find a subsequent period with demand.
+ */
+ traverse( futureperiods, Elements, pispip,
+ // Terminate calculation once remaining supply is 0
+ balanceInv > 0 )
+ {
+ if( balanceInv > 0 )
+ {
+ demandQty := pispip.DependentDemandAndSalesDemandQuantity();
+
+ // Include expired quantity as demand to determine stock level in days
+ if( hasshelflife )
+ {
+ isexpiredinperiodvector := BooleanVector::Construct();
+
+ traverse( agevector.AsValues(), Elements, age )
+ {
+ isexpiredinperiod := not product.GetIsUsableInTargetPeriod( [Real] age, pispip.Start(), pispip.Period_MP() );
+ isexpiredinperiodvector.Append( isexpiredinperiod );
+ agevector.Add( pispip.Period_MP().GetDurationInDaysForShelfLife(), false );
+ }
+
+ // Sum of all elements in the quantity vector that corresponds to element = true in the boolean vector
+ expiredinventoryqty := quantityvector.GetSelection( isexpiredinperiodvector ).Sum();
+ demandQty := demandQty + expiredinventoryqty; // Reduce inventory as expired
+ }
+
+ if( balanceInv > demandQty ) // Remaining supply can cover demand in period
+ {
+ totalDays := totalDays + pispip.Period_MP().DurationInDays();
+ balanceInv := balanceInv - demandQty;
+ }
+ else // Remaining supply partially cover the demand in period
+ {
+ // Main calc logic
+ totalDays := totalDays + ( balanceInv / demandQty * pispip.Period_MP().DurationInDays() );
+ balanceInv := 0.0;
+ }
+ }
+ }
+ }
+ }
+
+ this.StockLevelInDays( totalDays );
+ *]
+}
diff --git a/_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/_ROOT_Type_ProductInStockingPointInPeriodPlanningLeaf.qbl b/_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/_ROOT_Type_ProductInStockingPointInPeriodPlanningLeaf.qbl
new file mode 100644
index 0000000..8c6a2c8
--- /dev/null
+++ b/_Main/BL/Type_ProductInStockingPointInPeriodPlanningLeaf/_ROOT_Type_ProductInStockingPointInPeriodPlanningLeaf.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization ProductInStockingPointInPeriodPlanningLeaf #extension
+{
+}
diff --git a/_Main/BL/Type_Routing/Method_DoSanityCheckData.qbl b/_Main/BL/Type_Routing/Method_DoSanityCheckData.qbl
new file mode 100644
index 0000000..c23a63b
--- /dev/null
+++ b/_Main/BL/Type_Routing/Method_DoSanityCheckData.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method DoSanityCheckData (
+ output Strings feedback_o,
+ output Strings sanitycheckfeedback_o
+) declarative remote #extension
+{
+ TextBody:
+ [*
+ // Adhi Feb-10-2016 (created)
+
+ isvalid := true;
+
+ isvalid := this.GetHasValidInput( feedback_o, sanitycheckfeedback_o ) and isvalid;
+
+ isvalid := this.GetHasTianmaNonSupplierOperationWithNoInput( feedback_o, sanitycheckfeedback_o ) and isvalid;
+
+ return isvalid;
+ *]
+}
diff --git a/_Main/BL/Type_Routing/Method_GetHasTianmaNonSupplierOperationWithNoInput.qbl b/_Main/BL/Type_Routing/Method_GetHasTianmaNonSupplierOperationWithNoInput.qbl
new file mode 100644
index 0000000..ec4ca3e
--- /dev/null
+++ b/_Main/BL/Type_Routing/Method_GetHasTianmaNonSupplierOperationWithNoInput.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetHasTianmaNonSupplierOperationWithNoInput (
+ output Strings feedback_o,
+ output Strings sanitycheckfeedback_o
+) declarative remote as Boolean
+{
+ TextBody:
+ [*
+ // Tianma change 20230925: If the unit is not a supplier, raise a data issue if there's no input
+ value := forall( this, RoutingStep.Operation, operation,
+ guard( operation.Unit().IsSupplier(), false )
+ or operation.OperationInput( relsize ) > 0 );
+
+ if( not value )
+ {
+ // Add instance text
+ routingname := MacroPlan::GetSubstituteName( this.Name() );
+ instance := Translations::MP_Routing_Instance( routingname );
+ feedback := SanityCheckMessage::GetFormattedMessage( instance,
+ "闈炰緵搴斿晢鎿嶄綔娌℃湁鎶曞叆鏂欍��" );
+ feedback_o.Add( feedback );
+ sanitycheckfeedback_o.Add( SanityCheckCategoryLevel::GetSanityCheckCategoryDataWarning() );
+ }
+
+ return value;
+ *]
+}
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/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def
index 4e08b41..76530fa 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditIssueWorkOrder/Response_pnlActions_btnOk_OnClick.def
@@ -4,6 +4,16 @@
{
#keys: '[414702.0.223820978]'
DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ flag := guard( [Real]efPlannedQuantity.Text() > 0.0, false ) or DataHolderDialogDatas.Data().Size() > 1;
+
+ if ( not flag ) {
+ feedback := "璇疯緭鍏ヤ竴涓ぇ浜�0鐨勬暟瀛�";
+ }
+
+ return flag;
+ *]
QuillAction
{
Body:
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_FormIssueWorkOrder/Component_ListIssueWorkOrder.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def
index 23d2fcb..c3f47fb 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Component_ListIssueWorkOrder.def
@@ -28,7 +28,7 @@
]
Properties:
[
- Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductionWorkOrderNumber","title":"ProductionWorkOrderNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductionWorkOrderNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductModel","title":"ProductModel","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialDescription","title":"MaterialDescription","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialDescription"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"StartDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlannedQuantity","title":"PlannedQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlannedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderType","title":"WorkOrderType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderStatus","title":"WorkOrderStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderStatus"}}]'
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductionWorkOrderNumber","title":"ProductionWorkOrderNumber","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductionWorkOrderNumber"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductModel","title":"Product ID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductModel"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialDescription","title":"MaterialDescription","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialDescription"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"StartDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StartDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PlannedQuantity","title":"PlannedQuantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PlannedQuantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderType","title":"WorkOrderType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"WorkOrderStatus","title":"WorkOrderStatus","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"WorkOrderStatus"}}]'
ContextMenu: 'MenuIssueEdit'
Taborder: 2
]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def
index f516650..d9366a0 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormIssueWorkOrder/Response_ListIssueWorkOrder_MenuEdit_OnClick.def
@@ -8,13 +8,23 @@
CanBindMultiple: false
DefinitionID => /ListIssueWorkOrder/Responsedef_ListIssueWorkOrder_WebMenu_OnClick
Initiator: 'MenuEdit'
+ Precondition:
+ [*
+ flag := DataHolderCheckedMasterPlanReleaseWorkOrderTabulation.Data().Size() > 0;
+
+ if ( not flag ) {
+ feedback := "鏈�夋嫨鏁版嵁";
+ }
+
+ return flag;
+ *]
QuillAction
{
Body:
[*
dlg := construct( DialogCreateEditIssueWorkOrder );
- dlg.Edit( selection );
+ dlg.Edit( DataHolderCheckedMasterPlanReleaseWorkOrderTabulation.Data() );
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
index 1b87aa1..0b8df6f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmAuthorizeAndCountersign_Material/Response_OnCreated.def
@@ -21,9 +21,12 @@
{
JInfo := JSON::Parse( SelectItem.ValueJsonString());
lb_SUK_FAACM.Text(JInfo.Get( "ParentSKU").GetString());
+ lb_SKUName_FAACM.Text(JInfo.Get( "ParentSKUName").GetString());
lb_MaterialCode_FAACM.Text(JInfo.Get( "SKU").GetString());
+ lb_MaterialName.Text(JInfo.Get( "MaterialName").GetString());
lb_Unit_FAACM.Text(JInfo.Get( "Unit").GetString());
lb_Operator_FAACM.Text(ApplicationMacroPlanner.GetUserName());
+ lb_MaterialType_FAACM.Text(JInfo.Get( "MaterialType").GetString());
txt_CustomID_FAACM.Text(JInfo.Get( "CustomCode").GetString());
txt_CustomName_FAACM.Text(JInfo.Get( "CustomName").GetString());
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def
index b04f7cf..b2a673b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_List832_OnDoubleClick.def
@@ -13,19 +13,33 @@
[*
if( not isnull( selection))
{
+ // 棰勬祴璁㈠崟鍩烘湰淇℃伅
+ CustomCode:="";
+ CustomName:="";
+ SKUName:="";
+ SValueJsonString:="";
+ // 鑾峰彇瀹㈡埛鍚嶇О鍜屽鎴稩D
+ if(txtSaveForecastData_FM.Text().Length()>0)
+ {
+ jForecast := JSON::Parse( txtSaveForecastData_FM.Text());
+ CustomCode := jForecast.Get( "CustomCode").GetString();
+ CustomName := jForecast.Get( "CustomName").GetString();
+ SKUName := jForecast.Get( "SKUName").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(),GlobalOTDTable);
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 +49,28 @@
}
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( "ParentSKUName",SKUName)
+ .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_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick\043975.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick\043975.def"
index dd32915..45e0871 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick\043975.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FrmMaterial/Response_Panel418_btn_Add_FM_OnClick\043975.def"
@@ -20,12 +20,14 @@
CustomName:="";
SValue:="";
SValueJsonString:="";
+ SKUName:="";
// 鑾峰彇瀹㈡埛鍚嶇О鍜屽鎴稩D
if(txtSaveForecastData_FM.Text().Length()>0)
{
jForecast := JSON::Parse( txtSaveForecastData_FM.Text());
CustomCode := jForecast.Get( "CustomCode").GetString();
CustomName := jForecast.Get( "CustomName").GetString();
+ SKUName := jForecast.Get( "SKUName").GetString();
}
if(not isnull(selection))
{
@@ -36,6 +38,7 @@
.Add( "Unit",selection.Unit())
.Add( "CustomCode",CustomCode)
.Add( "ParentSKU",lb_SUK_FM.Text())
+ .Add( "ParentSKUName",SKUName)
.Add( "CustomName",CustomName).Build().AsString();
}
if( isnull( SelectItem))
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def
index c6fbad5..2d6bd11 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Component_Panel351.def
@@ -11,9 +11,10 @@
BaseType: 'WebButton'
Properties:
[
+ ButtonSize: 'compact'
Description: '璁㈠崟鏂板鍙嶇/鎺堟潈'
Label: '璁㈠崟鏂板鍙嶇/鎺堟潈'
- Taborder: 1
+ Taborder: 0
]
ResponseDefinitions:
[
@@ -39,9 +40,10 @@
BaseType: 'WebButton'
Properties:
[
+ ButtonSize: 'compact'
Description: '鍘熸枡鏂板鍙嶇/鎺堟潈'
Label: '鍘熸枡鏂板鍙嶇/鎺堟潈'
- Taborder: 2
+ Taborder: 1
]
ResponseDefinitions:
[
@@ -61,30 +63,42 @@
}
]
}
- Component btn_InitialData778
- {
- #keys: '[414724.0.115504406]'
- BaseType: 'WebButton'
- Properties:
- [
- Description: '鍔犺浇鏁版嵁锛堝亣鐨勶紝鍚庣画闇�瑕佸鎺ユ暟鎹級'
- Label: '鍔犺浇棰勬祴璁㈠崟鏁版嵁'
- Taborder: 0
- Visible: false
- ]
- }
Component btn_OrderH_FOF
{
#keys: '[414724.0.165490408]'
BaseType: 'WebButton'
Properties:
[
+ ButtonSize: 'compact'
Description: 'ERO璁㈠崟鍐插噺'
Image: 'AMMUNITION_BOX_CLOSED'
Label: 'ERP璁㈠崟鍐插噺'
+ Taborder: 2
+ ]
+ }
+ Component txt_QueryContent_FOF
+ {
+ #keys: '[414724.0.172390935]'
+ BaseType: 'WebEditField'
+ Properties:
+ [
+ PlaceHolder: '妯$硦鎼滅储'
Taborder: 3
]
}
+ Component btn_Query_FOF
+ {
+ #keys: '[414724.0.172390951]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ ButtonSize: 'compact'
+ Description: '鏌ヨ'
+ Image: 'VIEW'
+ Label: '鏌ヨ'
+ Taborder: 4
+ ]
+ }
]
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..67308a0 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,28 @@
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( "SKUName",selection.SKUName())
+ .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( "SKUName",selection.SKUName())
+ .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(),GlobalOTDTable);
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..7432121 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]'
@@ -16,20 +16,21 @@
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 := 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( "SKUName",selection.SKUName())
+ .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( "SKUName",selection.SKUName())
+ .Add( "CustomName",selection.CustomName()).Build().AsString());
}
Application.OpenForm( "FrmAuthorizeAndCountersign_Order","modal");
}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_InitialData778_OnClick\043971.def" "b/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_InitialData778_OnClick\043971.def"
deleted file mode 100644
index 7ec4937..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_FrmOrderForecast/Response_Panel351_btn_InitialData778_OnClick\043971.def"
+++ /dev/null
@@ -1,35 +0,0 @@
-Quintiq file version 2.0
-#parent: Panel351/btn_InitialData778
-Response OnClick () id:Response_Panel351_btn_InitialData778_OnClick_971
-{
- #keys: '[414724.0.141222418]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebButton_OnClick'
- 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_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..ac7e8b0 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,28 @@
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( "SKUName",selection.SKUName())
+ .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( "SKUName",selection.SKUName())
+ .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(),GlobalOTDTable );
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/Component_List212.def b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Component_List212.def
deleted file mode 100644
index d04a4cb..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Component_List212.def
+++ /dev/null
@@ -1,41 +0,0 @@
-Quintiq file version 2.0
-Component List212
-{
- #keys: '[414724.0.153225431]'
- BaseType: 'WebList'
- Children:
- [
- Component DataExtractor924
- {
- #keys: '[414724.0.153225432]'
- BaseType: 'WebDataExtractor'
- Properties:
- [
- DataType: 'MacroPlan'
- Source: 'MacroPlan'
- Taborder: 0
- Transformation: 'MappingProduct'
- ]
- }
- #child: listActionBarPage441
- Component DataSetLevel622
- {
- #keys: '[414724.0.153225437]'
- BaseType: 'WebDataSetLevel'
- Children:
- [
- #child: listContextMenu182
- ]
- Properties:
- [
- Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BusinessType","title":"BusinessType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BusinessType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CommonBusiness","title":"CommonBusiness","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CommonBusiness"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ID","title":"ID","subtotals":"","tooltip":"","width":-1,"display":"shown","attribute":"ID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsCommon","title":"IsCommon","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsCommon"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"KeyProduct","title":"KeyProduct","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"KeyProduct"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Notes","title":"Notes","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Notes"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductMajorType","title":"ProductMajorType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductMajorType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductSubclassType","title":"ProductSubclassType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductSubclassType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ShelfLife","title":"ShelfLife","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ShelfLife"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}}]'
- ContextMenu: 'listContextMenu182'
- Taborder: 2
- ]
- }
- ]
- Properties:
- [
- Taborder: 1
- ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Component_listActionBarPage441.def b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Component_listActionBarPage441.def
deleted file mode 100644
index bb08f37..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Component_listActionBarPage441.def
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component listActionBarPage441
-{
- #keys: '[414724.0.153225434]'
- BaseType: 'listActionBarPage'
- Properties:
- [
- Taborder: 1
- ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Component_listContextMenu182.def b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Component_listContextMenu182.def
deleted file mode 100644
index e5e38ee..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Component_listContextMenu182.def
+++ /dev/null
@@ -1,10 +0,0 @@
-Quintiq file version 2.0
-Component listContextMenu182
-{
- #keys: '[414724.0.153225439]'
- BaseType: 'listContextMenu'
- Properties:
- [
- Taborder: 0
- ]
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_Button593_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_Button593_OnClick.def
deleted file mode 100644
index d37a96f..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_Button593_OnClick.def
+++ /dev/null
@@ -1,24 +0,0 @@
-Quintiq file version 2.0
-#parent: Button593
-Response OnClick () id:Response_Frm_TEST_Button593_OnClick
-{
- #keys: '[414724.0.153411735]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebButton_OnClick'
- QuillAction
- {
- Body:
- [*
- HObj := H_FunctionClass::SM_GetProductInfo( MacroPlan,"");
- if( not isnull( HObj))
- {
- WebMessageBox::Information( HObj.BusinessType());
- }
- else
- {
- WebMessageBox::Information( "寰楀埌鐨勭┖鍊�");
- }
- *]
- GroupServerCalls: false
- }
-}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_ButtonERP\350\256\242\345\215\225_OnClick.def" "b/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_ButtonERP\350\256\242\345\215\225_OnClick.def"
deleted file mode 100644
index e2bd314..0000000
--- "a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/Response_ButtonERP\350\256\242\345\215\225_OnClick.def"
+++ /dev/null
@@ -1,16 +0,0 @@
-Quintiq file version 2.0
-#parent: ButtonERP璁㈠崟
-Response OnClick () id:Response_Frm_TEST_ButtonERP璁㈠崟_OnClick
-{
- #keys: '[414724.0.164341791]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebButton_OnClick'
- QuillAction
- {
- Body:
- [*
- H_FunctionClass::SM_OrderHedging( MacroPlan,true,"System","ERP璁㈠崟");
- *]
- GroupServerCalls: 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
deleted file mode 100644
index 55c933a..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_Frm_TEST/_ROOT_Component_Frm_TEST.def
+++ /dev/null
@@ -1,62 +0,0 @@
-Quintiq file version 2.0
-#root
-#parent: MacroPlannerWebApp
-OrphanComponent Frm_TEST
-{
- #keys: '[414724.0.153225415]'
- BaseType: 'WebForm'
- Children:
- [
- #child: List212
- Component DataHolder417
- {
- #keys: '[414724.0.153253171]'
- BaseType: 'WebDataHolder'
- Databinding: 'structured[MappingProduct]*'
- Children:
- [
- Component DataExtractor742
- {
- #keys: '[414724.0.153253184]'
- BaseType: 'WebDataExtractor'
- Properties:
- [
- DataType: 'MacroPlan'
- Source: 'MacroPlan'
- Taborder: 0
- Transformation: 'MappingProduct'
- ]
- }
- ]
- Properties:
- [
- Taborder: 2
- ]
- }
- Component Button593
- {
- #keys: '[414724.0.153411711]'
- BaseType: 'WebButton'
- Properties:
- [
- Image: 'MONITOR_RGB'
- Label: '娴嬭瘯'
- Taborder: 0
- ]
- }
- Component ButtonERP璁㈠崟
- {
- #keys: '[414724.0.164341716]'
- BaseType: 'WebButton'
- Properties:
- [
- Label: 'ERP璁㈠崟'
- Taborder: 3
- ]
- }
- ]
- Properties:
- [
- Title: '娴嬭瘯椤甸潰'
- ]
-}
--
Gitblit v1.9.3