From 94cda282c88d473dc4921fbafc821eb32d837a6d Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期二, 05 九月 2023 16:02:28 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lhj
---
_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl | 7
_Main/BL/Type_ProductInLane/_ROOT_Type_ProductInLane.qbl | 6
_Main/BL/Type_ScenarioManager/StaticMethod_AvailableBusinessTypes.qbl | 2
_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl | 38 +-
_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting#576.qbl | 75 +++---
_Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl | 65 ++++++
_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl | 50 +++++
_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl | 127 +++---------
_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl | 150 +++++---------
_Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl | 28 ++
_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl | 7
11 files changed, 295 insertions(+), 260 deletions(-)
diff --git a/_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl
index 4326900..4ecdf63 100644
--- a/_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_BaseConversionFactor/StaticMethod_CreateOrUpdate.qbl
@@ -21,12 +21,11 @@
if( isnull( source ) or isnull( target ) ) {
error( "can't find source or target unit of measure" )
}
- //info( source)
if( productId <> "" ) {
product := Product_MP::FindById( macroPlan, productId );
- // info( productId)
- // }
- }
+ }else{
+ result := BaseConversionFactor::CreateUpdate( source, target, factor, product, isEnable )
+ }
if( isnull( product ) ) {
info( "invalid product id" )
diff --git "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl" "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
index 237e007..6d1861c 100644
--- "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
+++ "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
@@ -49,43 +49,44 @@
firstAlterRow := alterRows.Element( 0 );
// 妫�鏌ヤ富鏂�
component := Product_MP::FindById( this, firstAlterRow.ComponentCode() );
- if( isnull( component ) ) {
- error( "component : " + firstAlterRow.ComponentCode() + " not found" );
- }
- traverse( routingStep, Operation, toLink ) {
- // 杩炴帴浜у搧涓巓peration
- pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
- trash := construct( OperationBOMs );
- mainBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp,
- true, trash );
- mainBOM.Quantity( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
- mainBOM.MaxQuantityInGroup( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
- mainQty := mainBOM.Quantity();
- Transaction::Transaction().Propagate();
- // 娣诲姞杈呮枡
- traverse( alterRows, Elements, alterRow ) {
- alterProd := Product_MP::FindById( this, alterRow.AlternativeMaterialCode() );
- if( not isnull( alterProd ) ) {
- // error( "alterProd : " + alterRow.AlternativeMaterialCode() + " not found" );
- stockingPointIdAlter := alterRow.OrganCode() + "_" + alterRow.ProductType() + "_STOCK";
- stockingPointAlter := StockingPoint_MP::FindById( this, stockingPointIdAlter );
- if( isnull( stockingPointAlter ) ) {
- error( "stockingPoint : " + stockingPointIdAlter + " not found" );
- }
- pispAlter := ProductInStockingPoint_MP::CreateIfNotFound( alterProd, stockingPointAlter );
- mainInput := toLink.LastOperationInput();
- trash := construct( OperationBOMs );
- if( not isnull( mainInput ) ) {
- alterBom := mainInput.Operation().LinkPISP( pispAlter, true, mainInput.OperationLinkGroupID(), trash );
- alterBom.Quantity( mainBOM.MaxQuantityInGroup() * alterRow.AlternativeRate() );
- alterBom.MaxQuantityInGroup( mainBOM.MaxQuantityInGroup() );
- info( "Quantity" + [String]alterBom.Quantity() )
- info( "MaxQuantityInGroup" + [String]alterBom.MaxQuantityInGroup() )
- mainQty := mainQty - alterBom.Quantity();
- }
- }
- mainBOM.Quantity( mainQty );
- }
+ if( not isnull( component ) ) {
+ // error( "component : " + firstAlterRow.ComponentCode() + " not found" );
+ // }
+ traverse( routingStep, Operation, toLink ) {
+ // 杩炴帴浜у搧涓巓peration
+ pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
+ trash := construct( OperationBOMs );
+ mainBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp,
+ true, trash );
+ mainBOM.Quantity( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
+ mainBOM.MaxQuantityInGroup( firstAlterRow.UnitUsageOfComponents() / firstAlterRow.ComponentOutputRate() );
+ mainQty := mainBOM.Quantity();
+ Transaction::Transaction().Propagate();
+ // 娣诲姞杈呮枡
+ traverse( alterRows, Elements, alterRow ) {
+ alterProd := Product_MP::FindById( this, alterRow.AlternativeMaterialCode() );
+ if( not isnull( alterProd ) ) {
+ // error( "alterProd : " + alterRow.AlternativeMaterialCode() + " not found" );
+ stockingPointIdAlter := alterRow.OrganCode() + "_" + alterRow.ProductType() + "_STOCK";
+ stockingPointAlter := StockingPoint_MP::FindById( this, stockingPointIdAlter );
+ if( isnull( stockingPointAlter ) ) {
+ error( "stockingPoint : " + stockingPointIdAlter + " not found" );
+ }
+ pispAlter := ProductInStockingPoint_MP::CreateIfNotFound( alterProd, stockingPointAlter );
+ mainInput := toLink.LastOperationInput();
+ trash := construct( OperationBOMs );
+ if( not isnull( mainInput ) ) {
+ alterBom := mainInput.Operation().LinkPISP( pispAlter, true, mainInput.OperationLinkGroupID(), trash );
+ alterBom.Quantity( mainBOM.MaxQuantityInGroup() * alterRow.AlternativeRate() );
+ alterBom.MaxQuantityInGroup( mainBOM.MaxQuantityInGroup() );
+ info( "Quantity" + [String]alterBom.Quantity() )
+ info( "MaxQuantityInGroup" + [String]alterBom.MaxQuantityInGroup() )
+ mainQty := mainQty - alterBom.Quantity();
+ }
+ }
+ mainBOM.Quantity( mainQty );
+ }
+ }
}
}
}
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
index 56e75fb..88399b7 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
@@ -12,12 +12,6 @@
// list to deal
//info( "Get list to deal of product" );
listToDeal := construct( structured[MappingProduct] );
- //listToDeal := selectset( this, MappingProduct, item, item.ID()='1107000030' );
- //info( listToDeal.First().BusinessType() );
- //traverse( listToDeal.First().BusinessType().Tokenize( ", " ), Elements, item ){
- // info(item);
- // }
- //info( businesstypes.Difference( businesstypes.Difference( listToDeal.First().BusinessType().Tokenize( ", " ) ) ).Size() > 0 );
if( isnull( businesstypes ) or businesstypes.Size() = 0 ) {
if( iskeyproduct = true ){
@@ -35,60 +29,27 @@
}
}
- // Set the default value
- isbyproduct := false;
- hasshelflife := false;
- hasmaturation := false;
- manturationdays := 0.0;
- isexcludedfromoptimiazation := false;
- isplannedafteroptimization := false;
- isexcludedfromfulfilmentkpis := false;
- isfromdb := false;
-
// Get the root data
- existroot := Product_MP::FindById( this, "鍏ㄩ儴鐗╂枡浜у搧" );
- if( isnull( existroot ) ){
- Product_MP::Create( this,
- "鍏ㄩ儴鐗╂枡浜у搧",
- "",
- "鍏ㄩ儴鐗╂枡浜у搧",
- "PCS",
- isbyproduct,
- "鍏ㄩ儴鐗╂枡浜у搧",
- hasshelflife,
- 0.0,
- hasmaturation,
- manturationdays,
- isexcludedfromoptimiazation,
- isplannedafteroptimization,
- isexcludedfromfulfilmentkpis,
- isfromdb
- );
- }
+ Product_MP::CreateOrUpdate( this,
+ "鍏ㄩ儴鐗╂枡浜у搧",
+ "",
+ "鍏ㄩ儴鐗╂枡浜у搧",
+ "PCS",
+ "鍏ㄩ儴鐗╂枡浜у搧",
+ 0.0
+ );
// Get the ProductMajorType list & ProductSubclassType list
traverse( listToDeal, Elements, item ){
if( not item.ProductMajorType() = "" ){
- // info( "Create major product: " + item.ProductMajorType().AsQUILL() );
- existmajor := Product_MP::FindById( this, item.ProductMajorType() );
- if( isnull( existmajor ) ){
- Product_MP::Create( this,
- item.ProductMajorType(),
- "鍏ㄩ儴鐗╂枡浜у搧",
- item.ProductMajorType(),
- "PCS",
- isbyproduct,
- item.ProductMajorType(),
- hasshelflife,
- 0.0,
- hasmaturation,
- manturationdays,
- isexcludedfromoptimiazation,
- isplannedafteroptimization,
- isexcludedfromfulfilmentkpis,
- isfromdb
- );
- }
+ Product_MP::CreateOrUpdate( this,
+ item.ProductMajorType(),
+ "鍏ㄩ儴鐗╂枡浜у搧",
+ item.ProductMajorType(),
+ "PCS",
+ item.ProductMajorType(),
+ 0.0
+ );
}
productmajortype := item.ProductMajorType();
if( productmajortype="" ){
@@ -96,26 +57,14 @@
}
if( not item.ProductSubclassType() = "" ){
- // info( "Create subclass product: " + item.ProductSubclassType().AsQUILL() );
- existsubclass := Product_MP::FindById( this, item.ProductSubclassType() );
- if( isnull( existsubclass ) ){
- Product_MP::Create( this,
- item.ProductSubclassType(),
- productmajortype,
- item.ProductSubclassType(),
- "PCS",
- isbyproduct,
- item.ProductSubclassType(),
- hasshelflife,
- 0.0,
- hasmaturation,
- manturationdays,
- isexcludedfromoptimiazation,
- isplannedafteroptimization,
- isexcludedfromfulfilmentkpis,
- isfromdb
- );
- }
+ Product_MP::CreateOrUpdate( this,
+ item.ProductSubclassType(),
+ productmajortype,
+ item.ProductSubclassType(),
+ "PCS",
+ item.ProductSubclassType(),
+ 0.0
+ );
}
productsubclasstype := item.ProductSubclassType();
if( productsubclasstype="" ){
@@ -123,26 +72,14 @@
}
if( not item.ID() = "" ){
- // info( "Create product: " + item.ID().AsQUILL() );
- existproduct := Product_MP::FindById( this, item.ID() );
- if( isnull( existproduct ) ){
- Product_MP::Create( this,
- item.ID(),
- productsubclasstype,
- item.ID(),
- item.UnitOfMeasureName(),
- isbyproduct,
- item.Name(),
- hasshelflife,
- item.ShelfLife(),
- hasmaturation,
- manturationdays,
- isexcludedfromoptimiazation,
- isplannedafteroptimization,
- isexcludedfromfulfilmentkpis,
- isfromdb
- );
- }
+ Product_MP::CreateOrUpdate( this,
+ item.ID(),
+ productsubclasstype,
+ item.ID(),
+ item.UnitOfMeasureName(),
+ item.Name(),
+ item.ShelfLife()
+ );
}
}
*]
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
index 59d5b11..6be8dad 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingProductInLaneData.qbl
@@ -9,14 +9,9 @@
// list to deal
listtodeal := selectset( this, MappingProductInLane, item, not isnull( Product_MP::FindById( this, item.ProductID() ) ), not isnull( Lane::FindLaneTypeIndex( item.LineID() ) ) );
- // Set Default value if needed
- isexcluded := false;
- isfromdb := false;
-
// Create ProductInLane
traverse( listtodeal, Elements, item ){
- info( item.ProductID().AsQUILL() );
- ProductInLane::Create( Product_MP::FindById( this, item.ProductID() ), Lane::FindLaneTypeIndex( item.LineID() ), isexcluded, isfromdb );
+ ProductInLane::CreateOrUpdate( this, item.ProductID(), item.LineID() );
}
*]
}
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
index 47e25d4..fa613b6 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
@@ -15,131 +15,85 @@
listtodeal := selectset( this, MappingOperation, item, true );
} else {
listtodeal := selectset( this, MappingOperation, item,
- // businesstypes.Find( item.BusinessType() ) <> -1,
businesstypes.Difference( businesstypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0
);
}
//Set the Default values
unitofmeasurename := "PCS";
- currencyid := "CNY";
- startdate := Date::Date( 1900, 1, 1 );
- enddate := Date::Date( 9999, 12, 31 );
capacitytype := "Infinite";
// Get the root data
- existroot := Unit::FindById( this, "澶╅┈闆嗗洟" );
- if( isnull( existroot ) ){
- this.Unit( relnew,
- ID := "澶╅┈闆嗗洟",
- Name := "澶╅┈闆嗗洟",
- UnitOfMeasureName := unitofmeasurename,
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate,
- CapacityType := capacitytype );
- }
+ Unit::CreateOrUpdate( this,
+ "澶╅┈闆嗗洟",
+ "澶╅┈闆嗗洟",
+ "",
+ capacitytype,
+ unitofmeasurename );
// Get the sub root data
- existsubroot := Unit::FindById( this, "鐢熶骇" );
- if( isnull( existsubroot ) ){
- this.Unit( relnew, ID := "鐢熶骇",
- Name := "鐢熶骇",
- ParentUnitID := "澶╅┈闆嗗洟",
- UnitOfMeasureName := unitofmeasurename,
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate,
- CapacityType := capacitytype );
- }
+ Unit::CreateOrUpdate( this,
+ "鐢熶骇",
+ "鐢熶骇",
+ "澶╅┈闆嗗洟",
+ capacitytype,
+ unitofmeasurename );
- existsubroot := Unit::FindById( this, "渚涘簲鍟�" );
- if( isnull( existsubroot ) ){
- this.Unit( relnew, ID := "渚涘簲鍟�",
- Name := "渚涘簲鍟�",
- ParentUnitID := "澶╅┈闆嗗洟",
- UnitOfMeasureName := unitofmeasurename,
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate,
- CapacityType := capacitytype );
- }
+ Unit::CreateOrUpdate( this,
+ "渚涘簲鍟�",
+ "渚涘簲鍟�",
+ "澶╅┈闆嗗洟",
+ capacitytype,
+ unitofmeasurename );
- existsubroot := Unit::FindById( this, "鏁磋溅杩愯緭" );
- if( isnull( existsubroot ) ){
- this.Unit( relnew, ID := "鏁磋溅杩愯緭",
- Name := "鏁磋溅杩愯緭",
- ParentUnitID := "澶╅┈闆嗗洟",
- UnitOfMeasureName := unitofmeasurename,
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate,
- CapacityType := capacitytype );
- }
+ Unit::CreateOrUpdate( this,
+ "鏁磋溅杩愯緭",
+ "鏁磋溅杩愯緭",
+ "澶╅┈闆嗗洟",
+ capacitytype,
+ unitofmeasurename );
// Get the unit list
traverse( listtodeal, Elements, item){
- //Get the first level unit
- existfirstlevelunit := Unit::FindById( this, item.OrganCode() );
- // info( item.OrganCode().AsQUILL() );
OrgName := item.OrganName();
if( OrgName = ''){
OrgName := item.OrganCode();
}
- if( isnull( existfirstlevelunit ) ){
- this.Unit( relnew, ID := item.OrganCode(),
- // Name := item.OrganName(),
- Name :=OrgName,
- ParentUnitID := "鐢熶骇",
- UnitOfMeasureName := unitofmeasurename,
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate,
- CapacityType := capacitytype );
- }
+ //Get the first level unit
+ Unit::CreateOrUpdate( this,
+ item.OrganCode(),
+ OrgName,
+ "鐢熶骇",
+ capacitytype,
+ unitofmeasurename );
+
//Get the second level unit
secondlevelid := item.OrganCode() + "_" + item.PlantName();
- // info( secondlevelid.AsQUILL() );
- existsecondlevelunit := Unit::FindById( this, secondlevelid );
- if( isnull( existsecondlevelunit ) ){
- this.Unit( relnew, ID := secondlevelid,
- Name := secondlevelid,
- ParentUnitID := item.OrganCode(),
- UnitOfMeasureName := unitofmeasurename,
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate,
- CapacityType := capacitytype );
- }
+ Unit::CreateOrUpdate( this,
+ secondlevelid,
+ secondlevelid,
+ item.OrganCode(),
+ capacitytype,
+ unitofmeasurename );
+
//Get the third level unit
thirdlevelid := secondlevelid + "_" + item.ProcessSection();
- // info( thirdlevelid.AsQUILL() );
- existthirdlevelunit := Unit::FindById( this, thirdlevelid );
- if( isnull( existthirdlevelunit ) ){
- this.Unit( relnew, ID := thirdlevelid,
- Name := thirdlevelid,
- ParentUnitID := secondlevelid,
- CapacityType := "Time",
- UnitOfMeasureName := item.UnitOfMeasureName(),
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate );
- }
+ Unit::CreateOrUpdate( this,
+ thirdlevelid,
+ thirdlevelid,
+ secondlevelid,
+ "Time",
+ item.UnitOfMeasureName() );
+
//Get the last level unit
if( item.Line()<>"" ){
lastlevelid := thirdlevelid + "_" + item.Line();
- // info( lastlevelid.AsQUILL() );
- existlastlevelunit := Unit::FindById( this, lastlevelid );
- if( isnull( existlastlevelunit ) ){
- this.Unit( relnew, ID := lastlevelid,
- Name := lastlevelid,
- ParentUnitID := thirdlevelid,
- CapacityType := "Time",
- UnitOfMeasureName := item.UnitOfMeasureName(),
- CurrencyID := currencyid,
- StartDate := startdate,
- EndDate := enddate );
- }
+ Unit::CreateOrUpdate( this,
+ lastlevelid,
+ lastlevelid,
+ thirdlevelid,
+ "Time",
+ item.UnitOfMeasureName() );
}
}
*]
diff --git a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
index 3f014f2..5b22e41 100644
--- a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
+++ b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
@@ -63,8 +63,8 @@
//todo: 鏁版嵁鏈夐噸澶嶏紝鍏堢暐杩�
macroPlan.Broker_OTD_Product().Execute();
info( "Start data mapping of product" );
- testproduct := construct( Strings );
- macroPlan.MappingProductData( testproduct, false );
+ //testproduct := construct( Strings );
+ macroPlan.MappingProductData( businessTypes, false );
//鍗曚綅杞崲-7
info( "BaseConversionFactor::DoSync" )
BaseConversionFactor::DoSync( macroPlan );
@@ -98,28 +98,28 @@
port := 443;
data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
macroPlan.ApiLaneLegsData( data );
- //// 渚涘簲缃戠粶锛堣溅閬擄級-12
- //info( "ProductInLane::DoSync" )
- //macroPlan.Broker_OTD_ProductInLane().Execute();
- //macroPlan.MappingProductInLaneData();
+ // 渚涘簲缃戠粶锛堣溅閬擄級-12
+ info( "ProductInLane::DoSync" )
+ macroPlan.Broker_OTD_ProductInLane().Execute();
+ macroPlan.MappingProductInLaneData();
// 鍦ㄥ簱搴撳瓨鏁版嵁-13
info( "ActualPISPIP::DoSync" )
macroPlan.Broker_OTD_ActualPISPIP().Execute();
//macroPlan.MappingActualPISPIPData( businessTypes, true );
macroPlan.MappingActualPISPIPData( businessTypes, false );
- //// 鍦ㄩ�斿簱瀛�-14
- //info( "ExternalSupply::DoSync" )
- //info( "Start data broker of External supply" );
- //macroPlan.Broker_OTD_ExternalSupply().Execute();
- ////macroPlan.MappingExternalSupplyData( businessTypes, true );
- //info( "Start data mapping of External supply" );
- //macroPlan.MappingExternalSupplyData( businessTypes, false );
- //// 搴撳瓨鎴愭湰-15
- //info( "InventoryCost::DoSync" );
- //InventoryValueAndCost::DoSync( macroPlan );
- //// todo 鍒堕�犳垚鏈�-16
- //info( "OperationCost::DoSync" );
- //macroPlan.MappingOperationCostData( businessTypes );
+ // 鍦ㄩ�斿簱瀛�-14
+ info( "ExternalSupply::DoSync" )
+ info( "Start data broker of External supply" );
+ macroPlan.Broker_OTD_ExternalSupply().Execute();
+ //macroPlan.MappingExternalSupplyData( businessTypes, true );
+ info( "Start data mapping of External supply" );
+ macroPlan.MappingExternalSupplyData( businessTypes, false );
+ // 搴撳瓨鎴愭湰-15
+ info( "InventoryCost::DoSync" );
+ InventoryValueAndCost::DoSync( macroPlan );
+ // todo 鍒堕�犳垚鏈�-16
+ info( "OperationCost::DoSync" );
+ macroPlan.MappingOperationCostData( businessTypes );
// 璁㈠崟棰勬祴-17
info( "Forecast::DoSync" );
Forecast::DoSync( macroPlan, businessTypes );
diff --git a/_Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl
new file mode 100644
index 0000000..0db749e
--- /dev/null
+++ b/_Main/BL/Type_ProductInLane/StaticMethod_CreateOrUpdate.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateOrUpdate (
+ MacroPlan owner,
+ String productid,
+ String lineid
+)
+{
+ TextBody:
+ [*
+ // Administrator Sep-5-2023 (created)
+ // Set Default value if needed
+ isexcluded := false;
+ isfromdb := false;
+
+ // Get product&line
+ product := Product_MP::FindById( owner, productid );
+ line := Lane::FindLaneTypeIndex( lineid );
+
+ productinline := ProductInLane::FindProductInLaneTypeIndex( lineid, productid );
+
+ if( isnull( productinline ) ){
+ ProductInLane::Create( product, line, isexcluded, isfromdb );
+ }else{
+ productinline.Update( productid, lineid, isexcluded, isfromdb );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ProductInLane/_ROOT_Type_ProductInLane.qbl b/_Main/BL/Type_ProductInLane/_ROOT_Type_ProductInLane.qbl
new file mode 100644
index 0000000..fe13d9c
--- /dev/null
+++ b/_Main/BL/Type_ProductInLane/_ROOT_Type_ProductInLane.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ProductInLane #extension
+{
+}
diff --git a/_Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl
new file mode 100644
index 0000000..809cc63
--- /dev/null
+++ b/_Main/BL/Type_Product_MP/StaticMethod_CreateOrUpdate.qbl
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateOrUpdate (
+ MacroPlan owner,
+ String productid,
+ String parentid,
+ String name,
+ String unitofmeasurename,
+ String description,
+ Real shelflife
+)
+{
+ TextBody:
+ [*
+ // Administrator Sep-5-2023 (created)
+ // Set the default value
+ isbyproduct := false;
+ hasshelflife := false;
+ hasmaturation := false;
+ manturationdays := 0.0;
+ isexcludedfromoptimiazation := false;
+ isplannedafteroptimization := false;
+ isexcludedfromfulfilmentkpis := false;
+ isfromdb := false;
+
+ // Find the product
+ product := Product_MP::FindById( owner, productid );
+ info( productid );
+
+ if( isnull( product ) ){
+ Product_MP::Create( owner,
+ productid,
+ parentid,
+ name,
+ unitofmeasurename,
+ isbyproduct,
+ description,
+ hasshelflife,
+ shelflife,
+ hasmaturation,
+ manturationdays,
+ isexcludedfromoptimiazation,
+ isplannedafteroptimization,
+ isexcludedfromfulfilmentkpis,
+ isfromdb
+ );
+ }else{
+ product.Update( productid,
+ name,
+ parentid,
+ unitofmeasurename,
+ isbyproduct,
+ description,
+ hasshelflife,
+ shelflife,
+ hasmaturation,
+ manturationdays,
+ isexcludedfromoptimiazation,
+ isplannedafteroptimization,
+ isexcludedfromfulfilmentkpis,
+ isfromdb
+ );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ScenarioManager/StaticMethod_AvailableBusinessTypes.qbl b/_Main/BL/Type_ScenarioManager/StaticMethod_AvailableBusinessTypes.qbl
index 024ef91..64f7bc4 100644
--- a/_Main/BL/Type_ScenarioManager/StaticMethod_AvailableBusinessTypes.qbl
+++ b/_Main/BL/Type_ScenarioManager/StaticMethod_AvailableBusinessTypes.qbl
@@ -5,7 +5,7 @@
TextBody:
[*
// yypsybs Aug-23-2023 (created)
- strings := "鎵嬫満浜嬩笟閮�;";
+ strings := "闆嗗洟闈㈡澘;涓撲笟鏄剧ず浜嬩笟閮�;澶栧崠CELL;闈炴樉;杩愬姩鍋ュ悍;杩愬姩鍋ュ悍浜嬩笟閮�;鎵嬫満浜嬩笟閮�;鐗圭鏄剧ず;姹借溅鐢靛瓙浜嬩笟閮�;杞﹁浇鏄剧ず浜嬩笟閮�;IT浜嬩笟閮�;";
//table := KB_BusinessTypesTable;
diff --git a/_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl
new file mode 100644
index 0000000..df72958
--- /dev/null
+++ b/_Main/BL/Type_Unit/StaticMethod_CreateOrUpdate.qbl
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateOrUpdate (
+ MacroPlan owner,
+ String id,
+ String name,
+ String parentunitid,
+ String capacitytype,
+ String unitofmeasurename
+)
+{
+ TextBody:
+ [*
+ // Administrator Sep-5-2023 (created)
+ //Set the Default values
+ currencyid := "CNY";
+ startdate := Date::Date( 1900, 1, 1 );
+ enddate := Date::Date( 9999, 12, 31 );
+
+ // Get the unit
+ unit := Unit::FindById( owner, id );
+
+ if( id="澶╅┈闆嗗洟" and isnull( unit ) ){
+ owner.Unit( relnew,
+ ID := id,
+ Name := name,
+ UnitOfMeasureName := unitofmeasurename,
+ CurrencyID := currencyid,
+ StartDate := startdate,
+ EndDate := enddate,
+ CapacityType := capacitytype );
+ }else{
+ if( isnull( unit ) ){
+ owner.Unit( relnew, ID := id,
+ Name := name,
+ ParentUnitID := parentunitid,
+ CapacityType := capacitytype,
+ UnitOfMeasureName := unitofmeasurename,
+ CurrencyID := currencyid,
+ StartDate := startdate,
+ EndDate := enddate );
+ }else{
+ unit.Name( name );
+ unit.ParentUnitID( parentunitid );
+ unit.CapacityType( capacitytype );
+ unit.UnitOfMeasureName( unitofmeasurename );
+ }
+ }
+ *]
+}
--
Gitblit v1.9.3