From 57d0d2d7a076951b3497c635232f773ebedbfa58 Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期四, 13 六月 2024 15:08:12 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
---
_Main/BL/Type_Operation/_ROOT_Type_Operation.qbl | 6 +
_Main/BL/Type_Operation/Method_Copy.qbl | 95 +++++++++++++++++++++++
_Main/BL/Type_OperationBOM/Attribute_OldStockingPointID.qbl | 8 ++
_Main/BL/InfoMessages.qbl | 4 +
_Main/BL/Type_Routing/StaticMethod_ThermalTrialRatio.qbl | 53 +++++++++++++
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlMaxCapacity.def | 1
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Method_OnOK.def | 15 ---
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Response_pnlActions_btnOk_OnClick.def | 7 +
_Main/BL/Type_Routing/StaticMethod_ValidateThermalTrialRatio.qbl | 25 ++++++
_Main/BL/Type_OperationBOM/_ROOT_Type_OperationBOM.qbl | 6 +
_Main/BL/Type_Routing/_ROOT_Type_Routing.qbl | 6 +
_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlRatio.def | 1
12 files changed, 213 insertions(+), 14 deletions(-)
diff --git a/_Main/BL/InfoMessages.qbl b/_Main/BL/InfoMessages.qbl
index e9d598e..ee5f15b 100644
--- a/_Main/BL/InfoMessages.qbl
+++ b/_Main/BL/InfoMessages.qbl
@@ -106,4 +106,8 @@
{
DefaultText: 'The Event type of binding Event exists.'
}
+ InfoMessage MP_Routing_RequiredField
+ {
+ DefaultText: 'All fields Required This parameter is mandatory.'
+ }
}
diff --git a/_Main/BL/Type_Operation/Method_Copy.qbl b/_Main/BL/Type_Operation/Method_Copy.qbl
new file mode 100644
index 0000000..738acfd
--- /dev/null
+++ b/_Main/BL/Type_Operation/Method_Copy.qbl
@@ -0,0 +1,95 @@
+Quintiq file version 2.0
+#parent: #root
+Method Copy (
+ RoutingStep newroutingstep,
+ StockingPoint_MP stockingpoint,
+ String id,
+ Unit unit
+) as Operation
+{
+ Description: 'Duplicate the entire operation (including input product groups + input output products + costs)'
+ TextBody:
+ [*
+ idholder := this.MacroPlan().IDHolder();
+ //unit := this.Unit();
+
+ // Create new Operation with information of this Operation
+ newoperation := Operation::Create( id,
+ unit,
+ id,
+ newroutingstep,
+ this.LeadTime(),
+ this.StandardDeviationLeadTime(),
+ this.Throughput(),
+ this.HasUserLotSize(),
+ this.UserMinimumQuantity(),
+ this.HasUserMaximumQuantity(),
+ this.UserMaximumQuantity(),
+ this.UserLotSize(),
+ this.CO2Emission(),
+ false,
+ false );
+
+ // Copy OperationCosts of this Operation to the new Operation
+ traverse( this, OperationCost, operationcost )
+ {
+ // Select UnitAccount
+ accountassignment := select( unit, UnitAccount, ua,
+ ua.Account_MP() = operationcost.AccountAssignment().Account_MP()
+ and ua.CostDriver() = operationcost.AccountAssignment().CostDriver() );
+
+ // Create OperationCost for the new Operation if UnitAccount is found
+ if( not isnull( accountassignment ) )
+ {
+ OperationCost::Create( idholder.GetOperationCostID(),
+ newoperation,
+ accountassignment.Account_MP(),
+ accountassignment.CostDriver(),
+ operationcost.Start(),
+ operationcost.TimeUnit(),
+ operationcost.LengthOfTime(),
+ operationcost.Cost(),
+ false );
+ }
+ }
+
+ // Copy OperationBOM from this Operation to the new Operation
+ traverse( this, OperationBOM, ob, not ob.IsInput() )
+ {
+ pisp := ob.PISPNodeInRouting().ProductInStockingPoint_MP();
+ newpisp := pisp.Product_MP().AddToStockingPoint( stockingpoint );
+ // info( 'last----', ob.IsInput(), ',', ob.OperationID(), ',', ob.ProductID(), ',', ob.StockingPointID(), ',', pisp.ProductID(), ',', pisp.StockingPointID() );
+ OperationBOM::Create( newoperation, newpisp,
+ not ob.IsInput(),
+ ob.InputGroupID(),
+ ob.HasUserInputQuantity(),
+ ob.Quantity(),
+ ob.MinQuantityInGroup(),
+ ob.MaxQuantityInGroup(),
+ ob.IsExcluded(),
+ false );
+ // output.PISPNodeInRouting().Update( pisp.Product_MP(), stockingpoint );
+ // info( 'new output----', output.IsInput(), ',', output.OperationID(), ',', output.ProductID(), ',', output.StockingPointID() );
+ OperationBOM::Create( newoperation, ob.PISPNodeInRouting().ProductInStockingPoint_MP(),
+ ob.IsInput(),
+ ob.InputGroupID(),
+ ob.HasUserInputQuantity(),
+ ob.Quantity(),
+ ob.MinQuantityInGroup(),
+ ob.MaxQuantityInGroup(),
+ ob.IsExcluded(),
+ false );
+ // input.UpdateTypeIndex( input.OperationID(), input.ProductID(), ob.OldStockingPointID(), false );
+ // info( 'new input----', input.IsInput(), ',', input.OperationID(), ',', input.ProductID(), ',', input.StockingPointID() );
+ }
+
+ // Copy OpearationInputGroup of this Operation to the new Operation
+ traverse( this, OperationInputGroup, inputgroup )
+ {
+ inputgroup.Copy( newoperation );
+ }
+
+
+ return newoperation;
+ *]
+}
diff --git a/_Main/BL/Type_Operation/_ROOT_Type_Operation.qbl b/_Main/BL/Type_Operation/_ROOT_Type_Operation.qbl
new file mode 100644
index 0000000..5bb7d3e
--- /dev/null
+++ b/_Main/BL/Type_Operation/_ROOT_Type_Operation.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization Operation #extension
+{
+}
diff --git a/_Main/BL/Type_OperationBOM/Attribute_OldStockingPointID.qbl b/_Main/BL/Type_OperationBOM/Attribute_OldStockingPointID.qbl
new file mode 100644
index 0000000..68365b3
--- /dev/null
+++ b/_Main/BL/Type_OperationBOM/Attribute_OldStockingPointID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute OldStockingPointID
+{
+ #keys: '3[415136.0.782845096][415136.0.782845095][415136.0.782845097]'
+ Description: '娣诲姞鐑紡涔嬪墠鐨勫簱瀛樼偣'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_OperationBOM/_ROOT_Type_OperationBOM.qbl b/_Main/BL/Type_OperationBOM/_ROOT_Type_OperationBOM.qbl
new file mode 100644
index 0000000..76fbb55
--- /dev/null
+++ b/_Main/BL/Type_OperationBOM/_ROOT_Type_OperationBOM.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization OperationBOM #extension
+{
+}
diff --git a/_Main/BL/Type_Routing/StaticMethod_ThermalTrialRatio.qbl b/_Main/BL/Type_Routing/StaticMethod_ThermalTrialRatio.qbl
new file mode 100644
index 0000000..54256b2
--- /dev/null
+++ b/_Main/BL/Type_Routing/StaticMethod_ThermalTrialRatio.qbl
@@ -0,0 +1,53 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ThermalTrialRatio (
+ Routing routing,
+ Number capacity,
+ Date start,
+ Date end,
+ Number ratio
+) as owning Routings
+{
+ Description: 'Check input is valid'
+ TextBody:
+ [*
+ // Adhi Feb-10-2016 (created)
+ thermaltrial := '鐑紡';
+ newroutings := construct( Routings );
+ unit := selectobject( routing.MacroPlan(), Unit, unit, unit.ID() = thermaltrial and unit.HasCapacityTypeQuantity() );
+ newrouting := routing.Copy();
+ routingstep := newrouting.LastStep();
+ //info( '------------------', routingstep.Tool(), ',', unit.ID() );
+ newroutingstep := RoutingStep::Create( newrouting, thermaltrial, routingstep.Tool(), false );
+
+ traverse( routingstep, Operation, operation ){
+ id := Operation::GetConcatenatedID( newrouting.ID(), newroutingstep.Name(), unit.ID() );
+ // info( '------------------', operation.Name(), routingstep.Name(), newroutingstep.Name() );
+ stockingpoint := StockingPoint_MP::FindCreateUpdate( routing.MacroPlan(), thermaltrial, unit, newrouting, true );
+
+ traverse( operation, OperationBOM, obom, not obom.IsInput() ){
+ pisp := obom.PISPNodeInRouting().ProductInStockingPoint_MP();
+ // info( 'before----', ',', obom.StockingPointID(), pisp.StockingPointID(), pisp.ProductID() );
+ obom.OldStockingPointID( obom.StockingPointID() );
+ newpisp := pisp.Product_MP().AddToStockingPoint( stockingpoint );
+ // obom.PISPNodeInRouting().ProductInStockingPoint_MP( relset, newpisp );
+ obom.PISPNodeInRouting().Update( newpisp.Product_MP(), newpisp.StockingPoint_MP() );
+ // afterpisp := obom.PISPNodeInRouting().ProductInStockingPoint_MP();
+ obom.UpdateTypeIndex( obom.OperationID(), obom.ProductID(), stockingpoint.ID(), obom.IsInput() );
+ // info( 'after----', obom.StockingPointID(), afterpisp.StockingPointID(), afterpisp.ProductID() );
+ }
+ // info( '------------------------------', operation.SourceOperationLink( relsize ) );
+
+ operation.Copy( newroutingstep, stockingpoint, id, unit );
+ }
+
+ traverse( newrouting, RoutingStep.Operation.SourceOperationLink, ol )
+ {
+ ol.SynchronizeAll( false );
+ }
+
+ newroutings.Add( routing );
+
+ return &newroutings;
+ *]
+}
diff --git a/_Main/BL/Type_Routing/StaticMethod_ValidateThermalTrialRatio.qbl b/_Main/BL/Type_Routing/StaticMethod_ValidateThermalTrialRatio.qbl
new file mode 100644
index 0000000..ad8089d
--- /dev/null
+++ b/_Main/BL/Type_Routing/StaticMethod_ValidateThermalTrialRatio.qbl
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ValidateThermalTrialRatio (
+ output String feedback_o,
+ Routing routing,
+ Number capacity,
+ Date start,
+ Date end,
+ Number ratio
+) declarative remote as Boolean
+{
+ Description: 'Check input is valid'
+ TextBody:
+ [*
+ // Adhi Feb-10-2016 (created)
+ feedback_o := '';
+
+ if( isnull( routing ) or capacity < 1 or start = Date::MinDate() or end = Date::MinDate() or ratio < 1 ){
+ feedback_o := Translations::MP_Routing_RequiredField();
+ }
+
+
+ return feedback_o = '';
+ *]
+}
diff --git a/_Main/BL/Type_Routing/_ROOT_Type_Routing.qbl b/_Main/BL/Type_Routing/_ROOT_Type_Routing.qbl
new file mode 100644
index 0000000..9aa44b8
--- /dev/null
+++ b/_Main/BL/Type_Routing/_ROOT_Type_Routing.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type Routing #extension
+{
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlMaxCapacity.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlMaxCapacity.def
index 041a710..c4daa9b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlMaxCapacity.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlMaxCapacity.def
@@ -12,6 +12,7 @@
Properties:
[
Label: 'Maximum thermal trial capacity'
+ Mask: 'NUMBER'
Taborder: 0
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlRatio.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlRatio.def
index dbad8e2..f236d2a 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlRatio.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Component_pnlRatio.def
@@ -22,6 +22,7 @@
Properties:
[
Label: '1:'
+ Mask: 'NUMBER'
Taborder: 1
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Method_OnOK.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Method_OnOK.def
index 013d36c..352eda7 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Method_OnOK.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Method_OnOK.def
@@ -12,18 +12,9 @@
data := dhDialogData.Data();
- //if( isnull( data.WrappedInstance() ) ) // New
- //{
- // // When create product, parent relation must be null (as server method has logic to detect parent change using this relation)
- // data.Parent( relflush );
- // data.Commit();
- // dhForm.Data().ListEventType().SelectByKey( data.WrappedInstance().Key() );
- //}
- //else
- //{
- // LibCal_EventType::Update( dhDialogData.Data().WrappedInstance(), efID.Text(), efName.Text()
- // ,guard( selParent.Data(), null( LibCal_EventType ) ) );
- //}
+ newroutings := Routing::ThermalTrialRatio( data, [Number]efMaxCapacity.Text(), dsStartTime.Date(), dsEndTime.Date(), [Number]efThermalTrialRatio.Text() );
+
+ ApplicationMacroPlanner.SelectListObjects( dhForm.Data().ListRoutings(), newroutings );
this.Close();
*]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Response_pnlActions_btnOk_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Response_pnlActions_btnOk_OnClick.def
index 8fd0a6d..94cd36f 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Response_pnlActions_btnOk_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_DialogCreateEditThermalTrialRatio/Response_pnlActions_btnOk_OnClick.def
@@ -5,12 +5,15 @@
#keys: '[415136.0.756140039]'
DefinitionID: 'Responsedef_WebButton_OnClick'
GroupServerCalls: true
+ Precondition:
+ [*
+ return Routing::ValidateThermalTrialRatio( feedback, ddlRouting.Data(), [Number]efMaxCapacity.Text(), dsStartTime.Date(), dsEndTime.Date(), [Number]efThermalTrialRatio.Text() );
+ *]
QuillAction
{
Body:
[*
- Form.ApplyChanges();
- Form.Close();
+ Form.OnOK();
*]
}
}
--
Gitblit v1.9.3