From 5ac4d4f977b27ee53ec4bc544cc2a6b4019c8fbd Mon Sep 17 00:00:00 2001
From: renhao <renhui.hao@capgemini.com>
Date: 星期一, 18 九月 2023 15:09:27 +0800
Subject: [PATCH] 1 接口数据修正

---
 _Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl                      |    3 +
 _Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl           |    3 +
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting#576.qbl |   13 ++++--
 _Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl          |    7 ++-
 _Main/BL/Type_MacroPlan/Method_DeleteSnaityCheck.qbl                  |   21 ++++++++++
 _Main/BL/Type_MacroPlan/Method_MappingProductData.qbl                 |   30 +++++++-------
 _Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl                |    7 ++-
 _Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl                    |   11 +++--
 _Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl            |   17 ++++++--
 9 files changed, 75 insertions(+), 37 deletions(-)

diff --git a/_Main/BL/Type_MacroPlan/Method_DeleteSnaityCheck.qbl b/_Main/BL/Type_MacroPlan/Method_DeleteSnaityCheck.qbl
new file mode 100644
index 0000000..d5d02e1
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/Method_DeleteSnaityCheck.qbl
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: #root
+Method DeleteSnaityCheck
+{
+  TextBody:
+  [*
+    // renhao Sep-13-2023 (created)
+    //鍒犻櫎娌℃湁姹囩巼鐨勮揣甯�
+    traverse(  this,Currency_MP,currency,not currency.IsBase() and currency.CurrencyRate_MP( relsize ) = 0 ){
+      currency.Delete();
+    }
+    //鍒犻櫎娌℃湁浜у搧鐨勮溅閬�
+    traverse( this,Unit.Lane,lane,not isnull( lane) and lane.ProductInLane(relsize )=0 ){
+      lane.Delete();
+    }
+    //鍒犻櫎娌℃湁鐢ㄥ埌浜у搧鍜宭ane鐨勫簱瀛樼偣
+    traverse( this,StockingPoint_MP,stock,stock.ProductInStockingPoint_MP(relsize ) = 0 ){
+      stock.Delete();
+    }
+  *]
+}
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
index 873ed35..3916a05 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingCustomerOrderData.qbl
@@ -23,6 +23,7 @@
     info( "CustomerOrder has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
+    priorityName :="Normal";
     // 澶勭悊
     traverse( listToDeal, Elements, item ) {
       count := count + 1;
@@ -33,7 +34,7 @@
     //    info( item.ProductID().AsQUILL() );
       CustomerOrder::CreateOrUpdate( this, item.CurrencyID(), item.Customer(), item.CustomerID(), item.ID(), 
                                      item.OrderDate(), item.OrderID(), item.OrderLineID(), item.Price(), 
-                                     item.PriorityName(), item.ProductID(), 
+                                     priorityName, item.ProductID(), 
                                      item.StockPointID(), 
                                      item.SalesSegmentName(), 
                                      item.Quantity(), item.UnitOfMeasureName(), item.OrderType(), item.IsAvailable());
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
index 1bdf79c..3ab280c 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
@@ -8,8 +8,9 @@
   TextBody:
   [*
     // renhao Aug-14-2023 (created)
-    
-    listtodeal := selectset( this,MappingExternalSupply,externalSupply, externalSupply.UserQuantity()>0 );
+    queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
+    queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
+    listtodeal := selectset( this,MappingExternalSupply,externalSupply, externalSupply.UserQuantity()>0 and externalSupply.Date() >= queryStartDate and externalSupply.Date() <= queryEndDate);
     totalcount := listtodeal.Size();
     description := "鍦ㄩ�斿湪鍒�";
     info( "ExternalSupply has " + totalcount.AsQUILL() + " rows in total" );
@@ -19,7 +20,7 @@
       count := count + 1;
       if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
         info( "Now is dealing with the " + count.AsQUILL() + "ExternalSupply " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
-        }
+       }
       product := select( this,MappingProduct,product,product.ID() = externalSupply.ProductID(),true);
       
       
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
index 903aea0..47e8597 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingForecastData.qbl
@@ -11,9 +11,9 @@
     // 寰呭鐞嗘暟鎹�
     listToDeal := construct( structured[MappingForecast] );
     if( isnull( businessTypes ) or businessTypes.Size() = 0 ) {
-        listToDeal := selectset( this, MappingForecast, item, true );
+        listToDeal := selectset( this, MappingForecast, item, item.Quantity() > 0 );
     } else {
-        listToDeal := selectset( this, MappingForecast, item, businessTypes.Find( item.BusinessType() ) <> -1 );
+        listToDeal := selectset( this, MappingForecast, item, businessTypes.Find( item.BusinessType() ) <> -1 and item.Quantity()>0 );
     }
     queryStartDate := guard( min( this, Period_MP, item, true, item.StartDate() ) - Duration::Days( 30 ), DateTime::MinDateTime() ).Date();
     queryEndDate := guard( max( this, Period_MP, item, true, item.EndDate() ), Date::MaxDate() );
@@ -23,6 +23,7 @@
     info( "Forecast has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
+    priorityName := "Normal";
     // 澶勭悊
     traverse( listToDeal, Elements, item ) {
       count := count + 1;
@@ -31,7 +32,7 @@
         }
     //  if( not isnull( Product_MP::FindById( this, item.ProductID() ) ) ){
       Forecast::CreateOrUpdate( this, 
-                                item.ProductID(), item.SalesSegmentName(), item.StockingPointID(), item.PriorityName(),
+                                item.ProductID(), item.SalesSegmentName(), item.StockingPointID(), priorityName,
                                 item.CurrencyID(), item.UnitOfMeasureName(),
                                 item.ID(), item.StartDate(), item.EndDate(), item.Quantity(), item.Price());
     //  }else{
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
index 892f5ef..b152a6e 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMData.qbl
@@ -12,16 +12,17 @@
     
     keyProductList := construct( Strings );
     if( isKeyProduct ) {
-        keyProductList := selectuniquevalues( this, MappingProduct, item, item.KeyProduct(), item.ID() );
+        keyProductList := selectuniquevalues( this, MappingProduct, item, item.ProductMajorType()="鎴愬搧" or item.ProductMajorType()="鍗婃垚鍝�", item.ID() );
     }
     bomList := selectsortedset(  this, MappingBOM, item,
                                  ifexpr( isnull( businessTypes ) or businessTypes.Size() = 0, 
                                          true, 
     //                                     businessTypes.Difference( businessTypes.Difference( item.BusinessType().Tokenize( ", " ) ) ).Size() > 0 )
                                          businessTypes.Find( item.BusinessType() ) >= 0 )
-                                 and ifexpr( isKeyProduct, 
-                                             keyProductList.Size() > 0 and keyProductList.Find( item.ComponentCode() ) >= 0,
-                                             true ),
+    //                             and ifexpr( isKeyProduct, 
+    //                                         keyProductList.Size() > 0 and keyProductList.Find( item.ComponentCode() ) >= 0,
+    //                                         true )
+                                 ,
                                  item.OrganCode() + "_" + item.ProductCode() + "_" + item.ProcessSection() );
     // 鎸塺outing鍙妑outingStep鍒嗙粍
     routingIds := selectuniquevalues( bomList, Elements, item, true, item.OrganCode() + "_" + item.ProductCode() );
@@ -56,7 +57,13 @@
                   
                 }
                 if( not isnull( inputStockingPoint)){
-                  this.MappingOperationBOMDataRouting( routing,routingRows,inputStockingPoint,keyProductList);
+                  if( isKeyProduct){
+                      keyRows := selectset( routingRows,Elements,routingrow,keyProductList.Find( routingrow.ComponentCode())>=0);
+                      this.MappingOperationBOMDataRouting( routing,keyRows);
+                    }else{
+                      this.MappingOperationBOMDataRouting( routing,routingRows);
+                    }
+                    
                 }
               }
            }
diff --git "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl" "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
index 059c6c9..24a85f3 100644
--- "a/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
+++ "b/_Main/BL/Type_MacroPlan/Method_MappingOperationBOMDataRouting\043576.qbl"
@@ -2,9 +2,7 @@
 #parent: #root
 Method MappingOperationBOMDataRouting (
   Routing routing,
-  MappingBOMs routingRows,
-  StockingPoint_MP stockingPoint,
-  Strings keyProductIds
+  MappingBOMs routingRows
 )
 {
   TextBody:
@@ -32,6 +30,8 @@
                   if( not isnull( component ) ) {
     //                  error( "component : " + noAlterRow.ComponentCode() + " not found" );
                   // 杩炴帴浜у搧涓巓peration
+                  inputStockingPointId := noAlterRow.OrganCode()  + "_" + noAlterRow.ComponentType() + "_Stock";
+                  stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( inputStockingPointId);
                   pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
                   trash := construct( OperationBOMs );
                   operationBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp, 
@@ -54,6 +54,8 @@
     //          }
                 traverse( routingStep, Operation, toLink ) {
                     // 杩炴帴浜у搧涓巓peration
+                    inputStockingPointId := firstAlterRow.OrganCode()  + "_" + firstAlterRow.ComponentType() + "_Stock";
+                    stockingPoint := StockingPoint_MP::FindStockingPointTypeIndex( inputStockingPointId);
                     pisp := ProductInStockingPoint_MP::CreateIfNotFound( component, stockingPoint );
                     trash := construct( OperationBOMs );
                     mainBOM := toLink.LinkProduct( component, true, BaseOperationLink::GetGroupID( toLink, true, false ), pisp, 
@@ -67,13 +69,14 @@
                         alterProd := Product_MP::FindById( this, alterRow.AlternativeMaterialCode() );
                         if( not isnull( alterProd ) ) {
         //                    error( "alterProd : " + alterRow.AlternativeMaterialCode() + " not found" );
-                          stockingPointIdAlter := alterRow.OrganCode()  + "_" + alterRow.ProductType() + "_Stock";
+                          stockingPointIdAlter := alterRow.OrganCode()  + "_" + alterRow.ComponentType() + "_Stock";
                           stockingPointAlter := StockingPoint_MP::FindById( this, stockingPointIdAlter );
                           if( isnull( stockingPointAlter ) ) {
                               error( "stockingPoint : " + stockingPointIdAlter + " not found" );
                           }
                           pispAlter := ProductInStockingPoint_MP::CreateIfNotFound( alterProd, stockingPointAlter );
-                          mainInput := toLink.LastOperationInput();
+                          //mainInput := toLink.LastOperationInput(); 
+                          mainInput := select( toLink,OperationInput,operationInut,operationInut.ProductID()=alterRow.ComponentCode());
                           trash := construct( OperationBOMs );
                           if( not isnull( mainInput ) ) {
                               alterBom := mainInput.Operation().LinkPISP( pispAlter, true, mainInput.OperationLinkGroupID(), trash );
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
index 547f0bf..9a854ef 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingProductData.qbl
@@ -62,25 +62,25 @@
         productmajortype := "鍏ㄩ儴鐗╂枡浜у搧";
         }
        
-      if( not item.ProductSubclassType() = "" ){
-        Product_MP::CreateOrUpdate( this, 
-                                    item.ProductSubclassType(), 
-                                    productmajortype, 
-                                    item.ProductSubclassType(), 
-                                    "PCS", 
-                                    item.ProductSubclassType(),
-                                    0.0,false,false
-                                    );
-        }
-      productsubclasstype := item.ProductSubclassType();
-      if( productsubclasstype="" ){
-          productsubclasstype := productmajortype;
-        }
+    //  if( not item.ProductSubclassType() = "" ){
+    //    Product_MP::CreateOrUpdate( this, 
+    //                                item.ProductSubclassType(), 
+    //                                productmajortype, 
+    //                                item.ProductSubclassType(), 
+    //                                "PCS", 
+    //                                item.ProductSubclassType(),
+    //                                0.0,false,false
+    //                                );
+    //    }
+    //  productsubclasstype := item.ProductSubclassType();
+    //  if( productsubclasstype="" ){
+    //      productsubclasstype := productmajortype;
+    //    }
       
       if( not item.ID() = "" ){
           Product_MP::CreateOrUpdate( this, 
                                       item.ID(), 
-                                      productsubclasstype, 
+                                      productmajortype, 
                                       item.ID(), 
                                       item.UnitOfMeasureName(), 
                                       item.Name(),
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
index b5618c6..7c856ff 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingUnitData.qbl
@@ -22,6 +22,7 @@
     
     //Set the Default values
     unitofmeasurename := "PCS";
+    infinite := "Infinite";
     capacitytype := "Transport quantity";
     
     // Get the root data
@@ -29,7 +30,7 @@
                           "澶╅┈闆嗗洟", 
                           "澶╅┈闆嗗洟", 
                           "", 
-                          capacitytype, 
+                          infinite, 
                           unitofmeasurename );
     
     // Get the sub root data
@@ -37,14 +38,14 @@
                           "鐢熶骇", 
                           "鐢熶骇", 
                           "澶╅┈闆嗗洟", 
-                          capacitytype, 
+                          infinite, 
                           unitofmeasurename );
     
     Unit::CreateOrUpdate( this, 
                           "渚涘簲鍟�", 
                           "渚涘簲鍟�", 
                           "澶╅┈闆嗗洟", 
-                          capacitytype, 
+                          infinite, 
                           unitofmeasurename );
     
     Unit::CreateOrUpdate( this, 
@@ -65,7 +66,7 @@
                             item.OrganCode(), 
                             OrgName, 
                             "鐢熶骇", 
-                            capacitytype, 
+                            infinite, 
                             unitofmeasurename );
                            
       //Get the second level unit
@@ -74,7 +75,7 @@
                             secondlevelid, 
                             secondlevelid, 
                             item.OrganCode(), 
-                            capacitytype, 
+                            infinite, 
                             unitofmeasurename );
         
       //Get the third level unit
diff --git a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
index fe4e7a1..168122d 100644
--- a/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
+++ b/_Main/BL/Type_MacroPlan/StaticMethod_DoSync0.qbl
@@ -140,6 +140,9 @@
     // 璁㈠崟闇�姹�-18
     CustomerOrder::DoSync( macroPlan, businessTypes );
     
+    //鍒犻櫎澶氫綑鎶ラ敊鏁版嵁-19
+    //macroPlan.DeleteSnaityCheck();
+    
     //// todo 渚涘簲鍟嗚兘鍔�
     //info( "ProviderCapacity::DoSync" )
     

--
Gitblit v1.9.3