From 67ff28f43d635a3728bb7d39364a9c6f8345912b Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期四, 07 九月 2023 11:34:34 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/TIANMA_JITUAN into dev_lhj

---
 _Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl                                           |   61 +++++++++++--------
 _Main/BL/Type_InventorySupply/StaticMethod_CreateOrUpdate.qbl                                          |   31 ++++++++++
 _Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl                                         |   21 ++++--
 _Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl                                             |   20 ++++--
 _Main/BL/Type_ActualProductInStockingPointInPeriod/_ROOT_Type_ActualProductInStockingPointInPeriod.qbl |    6 ++
 _Main/BL/Type_InventorySupply/_ROOT_Type_InventorySupply.qbl                                           |    6 ++
 _Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl                     |   31 ++++++++++
 7 files changed, 136 insertions(+), 40 deletions(-)

diff --git a/_Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl
new file mode 100644
index 0000000..0c2492f
--- /dev/null
+++ b/_Main/BL/Type_ActualProductInStockingPointInPeriod/StaticMethod_CreateOrUpdate.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateOrUpdate (
+  MacroPlan owner,
+  String productid,
+  String stockingpointid,
+  String description,
+  Real actualinventorylevelend,
+  Date manufactureddate
+)
+{
+  TextBody:
+  [*
+    // Administrator Sep-6-2023 (created)
+    date := Date :: Today();
+    actualpispip := ActualProductInStockingPointInPeriod::FindActualProductInStockingPointInPeriodTypeIndex( productid, stockingpointid, date, manufactureddate );
+    
+    if( isnull( actualpispip ) ){
+      ActualProductInStockingPointInPeriod::Create( owner,
+                                                    productid,
+                                                    stockingpointid,
+                                                    description,
+                                                    actualinventorylevelend,
+                                                    date,
+                                                    manufactureddate,
+                                                    true);
+      }else{
+        actualpispip.Update( actualinventorylevelend, description, true );
+        }
+  *]
+}
diff --git a/_Main/BL/Type_ActualProductInStockingPointInPeriod/_ROOT_Type_ActualProductInStockingPointInPeriod.qbl b/_Main/BL/Type_ActualProductInStockingPointInPeriod/_ROOT_Type_ActualProductInStockingPointInPeriod.qbl
new file mode 100644
index 0000000..f7f3c21
--- /dev/null
+++ b/_Main/BL/Type_ActualProductInStockingPointInPeriod/_ROOT_Type_ActualProductInStockingPointInPeriod.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization ActualProductInStockingPointInPeriod #extension
+{
+}
diff --git a/_Main/BL/Type_InventorySupply/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_InventorySupply/StaticMethod_CreateOrUpdate.qbl
new file mode 100644
index 0000000..14114a8
--- /dev/null
+++ b/_Main/BL/Type_InventorySupply/StaticMethod_CreateOrUpdate.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateOrUpdate (
+  String id,
+  Product_MP productmp,
+  StockingPoint_MP stockingpoint,
+  Date date,
+  Date manufacturedate,
+  Real userquantity,
+  String description
+)
+{
+  TextBody:
+  [*
+    // Administrator Sep-6-2023 (created)
+    inventorysupply := InventorySupply::FindInventorySupplyTypeIndex( id );
+    
+    if( isnull( inventorysupply ) ){
+      InventorySupply::Create(id,
+                               productmp,
+                               stockingpoint,
+                               date,
+                               manufacturedate,
+                               userquantity,
+                               description,
+                               true);
+      }else{
+        inventorysupply.Update( userquantity );
+        }
+  *]
+}
diff --git a/_Main/BL/Type_InventorySupply/_ROOT_Type_InventorySupply.qbl b/_Main/BL/Type_InventorySupply/_ROOT_Type_InventorySupply.qbl
new file mode 100644
index 0000000..71216fe
--- /dev/null
+++ b/_Main/BL/Type_InventorySupply/_ROOT_Type_InventorySupply.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization InventorySupply #extension
+{
+}
diff --git a/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl b/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
index e3f3545..b8b0705 100644
--- a/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_InitialUnitAndStockingPoint.qbl
@@ -90,16 +90,21 @@
                                 isfromdb );
     }
     
-    Currency_MP::CreateCurrency( this, "CNY", "CNY", "", true );
-    currency := Currency_MP::FindById( this, "EUR" );
-    currency.IsBase(false);
-    Transaction::Transaction().Propagate();
+    existcurrency := Currency_MP::FindById( this, "CNY" );
+    if( isnull( existcurrency ) ){
+      Currency_MP::CreateCurrency( this, "CNY", "CNY", "", true );
+      currency := Currency_MP::FindById( this, "EUR" );
+      currency.IsBase(false);
+      Transaction::Transaction().Propagate();
+      }
     
     isproductcatagory := false;
     isfromdb := false;
-    
-    ProductLevel_MP::Create( "1", isproductcatagory, this, isfromdb );
-    ProductLevel_MP::Create( "2", isproductcatagory, this, isfromdb );
-    ProductLevel_MP::Create( "3", isproductcatagory, this, isfromdb );
+    existproductlevel := ProductLevel_MP::FindProductLevelTypeIndex( "2" );
+    if( isnull( existproductlevel ) ){
+      ProductLevel_MP::Create( "1", isproductcatagory, this, isfromdb );
+      ProductLevel_MP::Create( "2", isproductcatagory, this, isfromdb );
+      ProductLevel_MP::Create( "3", isproductcatagory, this, isfromdb );
+      }
   *]
 }
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
index d4b8493..87cbdf3 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingActualPISPIPData.qbl
@@ -9,12 +9,12 @@
   [*
     // renhao Aug-14-2023 (created)
     date := Date :: Today();
-    listtodeal := selectset( this,MappingActualPISPIP,actual,true );
+    listtodeal := selectset( this,MappingActualPISPIP,actual,not isnull( Product_MP::FindById( this, actual.ProductID() ) ) );
     totalcount := listtodeal.Size();
     info( "ActualPISPIP has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
-    traverse( this,MappingActualPISPIP,actual){
+    traverse( listtodeal,Elements,actual){
       count := count + 1;
       if( count - [Number](count/100) * 100 = 0 or count = totalcount ){
         info( "Now is dealing with the " + count.AsQUILL() + "ActualPISPIP " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
@@ -26,14 +26,22 @@
         for( i :=0 ;i < businessTypes.Size();i++ ){
           businessType := businessTypes.Element( i);
           if( product.BusinessType() = businessType and not product.IsCommon()){
-            ActualProductInStockingPointInPeriod::Create( this,actual.ProductID(),actual.StockingPointID(),actual.Description(),actual.ActualInventoryLevelEnd(),
-                                                  date,actual.ManufacturedDate(),true);
+            ActualProductInStockingPointInPeriod::CreateOrUpdate( this,
+                                                                  actual.ProductID(),
+                                                                  actual.StockingPointID(),
+                                                                  actual.Description(),
+                                                                  actual.ActualInventoryLevelEnd(),
+                                                                  actual.ManufacturedDate());
           }
         }
         
       }else{
-        ActualProductInStockingPointInPeriod::Create( this,actual.ProductID(),actual.StockingPointID(),actual.Description(),actual.ActualInventoryLevelEnd(),
-                                                  date,actual.ManufacturedDate(),true);
+        ActualProductInStockingPointInPeriod::CreateOrUpdate( this,
+                                                              actual.ProductID(),
+                                                              actual.StockingPointID(),
+                                                              actual.Description(),
+                                                              actual.ActualInventoryLevelEnd(),
+                                                              actual.ManufacturedDate());
       }
         
       }
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
index c30b6bc..7295bad 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingExternalSupplyData.qbl
@@ -9,7 +9,8 @@
   [*
     // renhao Aug-14-2023 (created)
     
-    listtodeal := selectset( this,MappingExternalSupply,externalSupply, not isnull( StockingPoint_MP::FindById( this, externalSupply.StockingPointID() ) ) );
+    listtodeal := selectset( this,MappingExternalSupply,externalSupply, 
+                             not isnull( StockingPoint_MP::FindById( this, externalSupply.StockingPointID() ) ) and not isnull( Product_MP::FindById( this, externalSupply.ProductID() ) ) );
     totalcount := listtodeal.Size();
     info( "ExternalSupply has " + totalcount.AsQUILL() + " rows in total" );
     
@@ -19,32 +20,40 @@
       if( count - [Number](count/100) * 100 = 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() and product.KeyProduct() = nuclear,true);
-    //  
-    //  if( not isnull( product)){
-    //    productMP :=  select( this,Product_MP,productMP,productMP.ID() = externalSupply.ProductID() ,true);
-    //    stockingpoint := select( this,StockingPoint_MP,st,st.ID() = externalSupply.StockingPointID(),true);
-    //    if( not isnull(businessTypes)){
-    //    
-    //      for( i :=0 ;i < businessTypes.Size();i++ ){
-    //        businessType := businessTypes.Element( i);
-    //        if( product.BusinessType() = businessType and not product.IsCommon()){
-    //          InventorySupply::Create(externalSupply.ID(),productMP,stockingpoint,externalSupply.Date(),externalSupply.ManufacturedDate(),externalSupply.UserQuantity(),"鍦ㄩ�斿湪鍒�",true);
-    //        }
-    //      }
-    //      
-    //    }else{
-      productMP :=  Product_MP::FindById( this, externalSupply.ProductID() );
-      stockingpoint := StockingPoint_MP::FindById( this, externalSupply.StockingPointID() );
-      if( not isnull( stockingpoint) and not isnull( productMP)){
-        InventorySupply::Create(externalSupply.ID(),productMP,stockingpoint,externalSupply.Date(),externalSupply.ManufacturedDate(),externalSupply.UserQuantity(),"鍦ㄩ�斿湪鍒�",true);
-      }
+      product := select( this,MappingProduct,product,product.ID() = externalSupply.ProductID() and product.KeyProduct() = nuclear,true);
       
-    //    }
-    //    
-    //  }else{
-    //    info( "Invaild product" );
-    //    }
+      if( not isnull( product)){
+        productMP :=  select( this,Product_MP,productMP,productMP.ID() = externalSupply.ProductID() ,true);
+        stockingpoint := select( this,StockingPoint_MP,st,st.ID() = externalSupply.StockingPointID(),true);
+        if( not isnull(businessTypes)){
+        
+          for( i :=0 ;i < businessTypes.Size();i++ ){
+            businessType := businessTypes.Element( i);
+            if( product.BusinessType() = businessType and not product.IsCommon()){
+              InventorySupply::CreateOrUpdate( externalSupply.ID(),
+                                               productMP,
+                                               stockingpoint,
+                                               externalSupply.Date(),
+                                               externalSupply.ManufacturedDate(),
+                                               externalSupply.UserQuantity(),"鍦ㄩ�斿湪鍒�");
+            }
+          }
+          
+        }else{
+        if( not isnull( stockingpoint) and not isnull( productMP)){
+          InventorySupply::CreateOrUpdate( externalSupply.ID(),
+                                           productMP,
+                                           stockingpoint,
+                                           externalSupply.Date(),
+                                           externalSupply.ManufacturedDate(),
+                                           externalSupply.UserQuantity(),"鍦ㄩ�斿湪鍒�");
+        }
+      
+        }
+        
+      }else{
+        info( "Invaild product" );
+        }
     }
   *]
 }

--
Gitblit v1.9.3