From bc0a06655cb1cc8f661c7ad869ebab70ecc561bb Mon Sep 17 00:00:00 2001
From: rislai <risheng.lai@capgemini.com>
Date: 星期二, 09 七月 2024 09:05:48 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
---
_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl | 110 ++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 96 insertions(+), 14 deletions(-)
diff --git a/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
index 6ed8f07..455d0bc 100644
--- a/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
+++ b/_Main/BL/Type_InventorySummarySource/StaticMethod_Initialize.qbl
@@ -1,7 +1,8 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Initialize (
- MacroPlan owner
+ MacroPlan owner,
+ InterfaceDataset interface
)
{
Description: '鍒濆鍖�'
@@ -23,25 +24,106 @@
search := source.InventorySummarySearch( relnew, Unit := allunit, Generation := allunit, MqbMlb := allunit, Power := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
- table.GenerateColumn( owner );
-
- //浠嶱roduct planning鏌ユ壘搴撳瓨鐐逛负闀挎槬瑁呴厤绾胯竟搴撶殑鎵�鏈塎QB浜у搧锛屽彇Total Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+ table.GenerateColumn( owner, 'All', startofyear, startofnextyear );
+ //info( '-----------------------------------', table.InventorySummaryColumn( relsize ) );
+ //搴撳瓨鏁伴噺涓篈ctual inventories閲岄潰鐨勭偣Planned inventories瀛楁搴撳瓨閲忓姞鎬�
traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() and ( pisp.StockingPoint_MP().UnitID() = ccunit or pisp.StockingPoint_MP().UnitID() = dlunit ) ){
unit := pisp.StockingPoint_MP().UnitID();
product := pisp.Product_MP();
- traverse( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning
- and pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Month() ){
- periodtime := pispip.Start().StartOfMonth().Date();
- periodname := periodtime.Format( "M2/D2/Y" );
- column := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname and column.Period() = periodtime );
- ccrow := table.GetRow( ccunit, product.ID(), startofyear, startofnextyear );
- ccrow.Initialize( column, pispip );//鍙朤otal Demand瀛楁鎸夋湀姹囨�婚渶姹傛暟閲�
+ // info( '-----------------------------------', unit, product.ID() );
+ weekpispips := construct( ProductInStockingPointInPeriods );
+ monthpispips := construct( ProductInStockingPointInPeriods );
+ nextweek := startofplanning.StartOfNextWeek();
+ nextmonth := startofplanning.StartOfNextMonth();
+
+ unitrow := table.GetRow( unit, product.ID() );
+ allrow := table.GetRow( allunit, product.ID() );
+ pispips := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, pispip.Start() >= startofplanning and pispip.Start() < startofnextyear and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() );
+ // info( '-----------------------------------', isnull( allrow ), pispips.Size() );
+ traverse( pispips, Elements, pispip, pispip.Start() = startofplanning ){
+ // info( '-----------------------------------', pispip.Start() );
+ period := pispip.Period_MP();
+ periodtime := period.Start().Date();
+ periodname := periodtime.Format( "M2/D2/Y" );
+ //澶╋紝閫夋嫨鏃ラ绮掑害鏃讹紝鏈熸湯搴撳瓨锛屾渶灏忓簱瀛橈紝鏈�澶у簱瀛樺拰骞冲潎搴撳瓨鐨勬暟鍊间繚鎸佷竴鑷�
+ daycolumn := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Day() );
+ info( daycolumn.Name(), daycolumn.Period(), daycolumn.TimeUnit() );
+ unitrow.SetCellValue( daycolumn, pispip.PlannedInventoryLevelEnd() );
+ allrow.SetCellValue( daycolumn, pispip.PlannedInventoryLevelEnd() );
+
+ //鍛紝閫夋嫨鍛ㄦ椂锛屾湡鏈簱瀛樹负姣忎竴鍛ㄦ渶鍚庝竴澶╃殑姹囨�诲簱瀛樹俊鎭紝鏈�灏忓簱瀛樹负杩欎竴鍛ㄥ簱瀛橀噺鏈�灏忕殑涓�澶╃殑鏁板�硷紝鏈�澶у簱瀛樹负杩欎竴鍛ㄥ簱瀛橀噺鏈�澶х殑涓�澶╃殑鏁板�硷紝骞冲潎搴撳瓨涓鸿鍛ㄧ殑骞冲潎鍊�
+ if( period.Start() < nextweek ){
+ weekpispips.Add( pispip );
- allrow := table.GetRow( allunit, product.ID(), startofyear, startofnextyear );
- allrow.Initialize( column, pispip );
+ weekend := nextweek - Duration::Days( 1 );
+ if( period.Start() = weekend ){
+ weekcolumn := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Week() );
+
+ maxinventory := max( weekpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ mininventory := min( weekpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ aveinventory := average( weekpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ unitrow.SetCellValue( weekcolumn, pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, aveinventory );
+ allrow.SetCellValue( weekcolumn, pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, aveinventory );
+ }
+ }else{
+ weekpispips.Flush();
+ weekpispips.Add( pispip );
+ nextweek := nextweek.StartOfNextWeek();
}
+
+ //鏈堬紝閫夋嫨鏈堟椂锛屾湡鏈簱瀛樹负姣忎竴鏈堟渶鍚庝竴澶╃殑姹囨�诲簱瀛樹俊鎭紝鏈�灏忓簱瀛樹负杩欎竴涓湀搴撳瓨閲忔渶灏忕殑涓�澶╃殑鏁板�硷紝鏈�澶у簱瀛樹负杩欎竴涓湀搴撳瓨閲忔渶澶х殑涓�澶╃殑鏁板�硷紝骞冲潎搴撳瓨涓鸿鏈堢殑骞冲潎鍊�
+ if( period.Start() < nextmonth ){
+ monthpispips.Add( pispip );
+
+ monthend := nextmonth - Duration::Days( 1 );
+ if( period.Start() = monthend ){
+ monthcolumn := selectobject( table, InventorySummaryColumn, column, column.Name() = periodname, column.Period() = periodtime, column.TimeUnit() = Translations::MP_GlobalParameters_Month() );
+
+ maxinventory := max( monthpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ mininventory := min( monthpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ aveinventory := average( monthpispips, Elements, e, e.PlannedInventoryLevelEnd() );
+ unitrow.SetCellValue( monthcolumn, pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, aveinventory );
+ allrow.SetCellValue( monthcolumn, pispip.PlannedInventoryLevelEnd(), mininventory, maxinventory, aveinventory );
+ }
+ }else{
+ monthpispips.Flush();
+ monthpispips.Add( pispip );
+ nextmonth := nextmonth.StartOfNextMonth();
+ }
+ }
}
-
+ //棣栧厛鍦‥ntities閲岃瘑鍒埗绾nit涓洪暱鏄�/澶ц繛鐨勬墍鏈夊簱瀛樼偣
+ //闀挎槬搴撳瓨鐐�
+ ccsps := construct( Strings );
+ //澶ц繛搴撳瓨鐐�
+ dlsps := construct( Strings );
+ allsps := construct( Strings );
+ traverse( owner, Unit, unit, unit.ID() = ccunit or unit.ID() = dlunit ){
+ if( unit.ID() = ccunit ){
+ ccsps := selectuniquevalues( unit, StockingPoint_MP, sp, sp.ID() );
+ }
+ if( unit.ID() = dlunit ){
+ dlsps := selectuniquevalues( unit, StockingPoint_MP, sp, sp.ID() );
+ }
+ allsps := allsps.Union( selectuniquevalues( unit, StockingPoint_MP, sp, sp.ID() ) );
+ }
+ //鍐嶅湪搴撳瓨鏇存柊鐨勫瓙鐣岄潰搴撳瓨鐐归�夋嫨涓壘鍒拌繖浜涘簱瀛樼偣鎵�鍏宠仈鐨勫凡鍕鹃�夊簱浣�
+ selections := selectset( interface, InventoryPointSelection, selection, allsps.Find( selection.StockpoingPoint() ) >= 0 and selection.IsIncluded() );
+ productids := selectuniquevalues( selections, Elements, selection, selection.ProductID() );
+ //鏈�鍚庡皢杩欎簺搴撲綅涓浂浠跺彿鐨勬暟閲忚繘琛屽姞鎬�
+ traverse( table, InventorySummaryColumn, column, column.Period() < startofplanning.Date() ){
+ traverse( productids, Elements, productid ){
+ if( column.TimeUnit() = Translations::MP_GlobalParameters_Day() ){//澶�
+ column.GenerateCell( selections, ccsps, dlsps, table, column.Period(), column.Period(), productid, allunit, ccunit, dlunit );
+ }else if( column.TimeUnit() = Translations::MP_GlobalParameters_Week() ){//鍛�
+ column.GenerateCell( selections, ccsps, dlsps, table, column.Period().StartOfWeek(), column.Period(), productid, allunit, ccunit, dlunit );
+ }else if( column.TimeUnit() = Translations::MP_GlobalParameters_Month() ){//鏈�
+ column.GenerateCell( selections, ccsps, dlsps, table, column.Period().StartOfMonth(), column.Period(), productid, allunit, ccunit, dlunit );
+ }
+ }
+ }
+
+
rows := selectsortedset( table, InventroySummaryRow, row, row.Name() );
i := 0;
traverse( rows, Elements, e ){
--
Gitblit v1.9.3