From 84b69cf17a12522dc7cd3f186e7e2f38f0c11062 Mon Sep 17 00:00:00 2001
From: renhao <renhui.hao@capgemini.com>
Date: 星期二, 12 九月 2023 23:29:52 +0800
Subject: [PATCH] 库存持有成本修改

---
 _Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl |   34 +++++++++++++++++++---------------
 _Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl |   21 ++++++++++++---------
 _Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl       |    5 ++++-
 3 files changed, 35 insertions(+), 25 deletions(-)

diff --git a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl
index 4c0470e..4116cce 100644
--- a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl
+++ b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_CreateOrUpdate.qbl
@@ -23,23 +23,27 @@
     product := Product_MP::FindById( macroPlan, productId );
     stockingPoint := StockingPoint_MP::FindById( macroPlan, stockingPointId );
     account := Account_MP::FindByName( macroPlan, accountName );
-    if( isnull( product ) ) {
-        error( "product not found" );  
-    }
-    if( isnull( stockingPoint ) ) {
-        error( "stocking point not found" );  
-    }
-    if( isnull( account ) ) {
-        error( "account not found" );  
-    }
-    result := InventoryValueAndCost::FindById( macroPlan, id );
-    if( isnull( result ) ) {
+    //if( isnull( product ) ) {
+    //    error( "product not found" );  
+    //}
+    //if( isnull( stockingPoint ) ) {
+    //    error( "stocking point not found" );  
+    //}
+    //if( isnull( account ) ) {
+    //    error( "account not found" );  
+    //}
+    result := InventoryValueAndCost::FindById( macroPlan, stockingPointId,productId,start,id );
+    if( not isnull( product) and not isnull( stockingPoint) and not isnull( account)){
+      if( isnull( result ) ) {
         result := InventoryValueAndCost::Create( id, product, stockingPoint, account, costDriver, start, cost, true ).astype( InventoryValueAndCost );
-    } else if( result.ProductID() <> productId ) {
-        error( "cannot change product of inventory value and cost" )
-    } else {
-        result.Update( account, costDriver, start, account.DefaultTimeUnit(), account.DefaultLengthOfTime(), cost, true );
+      } else if( result.ProductID() <> productId ) {
+        info( "cannot change product of inventory value and cost" )
+      } 
+    //  else {
+    //    result.Update( account, costDriver, start, account.DefaultTimeUnit(), account.DefaultLengthOfTime(), cost, true );
+    //  }
     }
+    
     return result;
   *]
 }
diff --git a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl
index b0dc53e..133145d 100644
--- a/_Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl
+++ b/_Main/BL/Type_InventoryValueAndCost/StaticMethod_FindById.qbl
@@ -2,13 +2,16 @@
 #parent: #root
 StaticMethod FindById (
   MacroPlan macroPlan,
+  String productId,
+  String stockPointId,
+  Date start,
   String id
 ) as InventoryValueAndCost
 {
   TextBody:
   [*
     // yypsybs Aug-16-2023 (created)
-    value := select( macroPlan, Product_MP.InventoryValueAndCost, item, true, item.ID() = id );
+    value := select( macroPlan, Product_MP.InventoryValueAndCost, item, true, item.ProductID()=productId and item.StockingPointID() = stockPointId and item.Start() = start );
     return value;
   *]
 }
diff --git a/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl b/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
index 013af33..0789263 100644
--- a/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
+++ b/_Main/BL/Type_MacroPlan/Method_MappingInventoryValueAndCostData.qbl
@@ -7,21 +7,24 @@
     // yypsybs Aug-15-2023 (created)
     listtodeal := selectset( this,MappingInventoryValueAndCost,item,true );
     totalcount := listtodeal.Size();
+    
     info( "InventoryCost has " + totalcount.AsQUILL() + " rows in total" );
     
     count := 0;
     traverse( listtodeal, Elements, item ) {
-      count := count + 1;
-      if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
-        info( "Now is dealing with the " + count.AsQUILL() + "InventoryCost " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
+        count := count + 1;
+        if( count - [Number](count/1000) * 1000 = 0 or count = totalcount ){
+          info( "Now is dealing with the " + count.AsQUILL() + "InventoryCost " + "( " + count.AsQUILL() + "/" + totalcount.AsQUILL() + " ) " + (count/totalcount*100).Round( 1 ).AsQUILL() + "%" );
         }
-      if( not isnull( Product_MP::FindById( this, item.ProductID() ) ) ){
-          InventoryValueAndCost::CreateOrUpdate( this, item.ID(), item.ProductID(), 
+        
+        InventoryValueAndCost::CreateOrUpdate( this, item.ID(), item.ProductID(), 
                                                  item.StockingPointID(), 
-                                                 item.AccountName(), item.CostDriver(), item.Start(), item.Cost() );
-      }else{
-        info( "invaild product: " + item.ProductID().AsQUILL() );
-        }
+                                                 item.AccountName(), item.CostDriver(), item.Start(), item.Cost());
+    //  if( not isnull( Product_MP::FindProductTypeIndex( item.ProductID() ) )  and not isnull( StockingPoint_MP :: FindStockingPointTypeIndex( item.StockingPointID()))){
+    //      
+    //  }else{
+    //    info( "invaild product: " + item.ProductID().AsQUILL() );
+    //    }
     }
   *]
 }

--
Gitblit v1.9.3