From 3cf4ce0c94be1a8928ffe280429d6297583b3b8d Mon Sep 17 00:00:00 2001 From: rislai <risheng.lai@capgemini.com> Date: 星期三, 07 八月 2024 17:23:30 +0800 Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev --- _Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl | 75 ++++++++++++++++++++++++++----------- 1 files changed, 53 insertions(+), 22 deletions(-) diff --git a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl index bf09a16..5776315 100644 --- a/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl +++ b/_Main/BL/Type_MachiningPipelineSource0/StaticMethod_Initialize.qbl @@ -20,30 +20,61 @@ products := construct( Product_MPs ); //鍒濆鍖栧垪 table.GenerateColumn( owner, 'All', search.StartDate(), search.EndDate() ); + endperiod := maxobject( owner, Period_MP, period, not period.IsHistorical() and period.TimeUnit() = Translations::MP_GlobalParameters_Day(), period.StartDate() ); //鐢熸垚瑁呴厤銆佺敓浜у拰搴撳瓨鏁版嵁 - traverse( owner, Product_MP.ProductInStockingPoint_MP, pisp, pisp.IsLeaf() and not pisp.IsSystem() ){ - unit := pisp.StockingPoint_MP().UnitID(); - //鍒濆鍖栬 - row := table.GetRow( pisp.ProductID() ); - - traverse( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() - and ( pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day() - or pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Week() ) ){ - periodtime := pispip.Period_MP().StartDate(); - periodname := periodtime.Format( "M2/D2/Y" ); - column := selectobject( table, Column, column, column.Name() = periodname and column.Period() = periodtime and column.TimeUnit() = pispip.Period_MP().TimeUnit() ); - - //瑁呴厤绾� - if( unit = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or unit = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ){ - row.SetCellAssemblyValue( column, unit, pispip.NewSupplyProductionQuantity() ); - } - //鏈哄姞绾� - if( unit = MachiningPipelineReport::GetDefaultCCProductionUnit() or unit = MachiningPipelineReport::GetDefaultDLProductionUnit() ){ - row.SetCellProductionValue( column, unit, pispip.NewSupplyProductionQuantity() ); - } - if( unit = ccunit or unit = dlunit ){ - row.SetCellInventoryValue( column, unit, pispip.PlannedInventoryLevelEnd() ); + traverse( owner, StockingPoint_MP, stockingpoint ){ + unit := stockingpoint.Unit(); + parentunits := unit.GetAllParent(); + //鏄惁灞炰簬闀挎槬宸ュ巶 + iscc := unit.ID() = ccunit or exists( parentunits, Elements, punit, punit.ID() = ccunit ); + //鏄惁灞炰簬澶ц繛宸ュ巶 + isdl := unit.ID() = dlunit or exists( parentunits, Elements, punit, punit.ID() = dlunit ); + //鏄惁灞炰簬闀挎槬瑁呴厤绾� + isccassemnly := unit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCAssemnlyUnit() ); + //鏄惁灞炰簬澶ц繛瑁呴厤绾� + isdlassemnly := unit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLAssemnlyUnit() ); + //鏄惁灞炰簬闀挎槬鏈哄姞浜х嚎 + isccproduction := unit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultCCProductionUnit() ); + //鏄惁灞炰簬澶ц繛鏈哄姞浜х嚎 + isdlproduction := unit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() or exists( parentunits, Elements, punit, punit.ID() = MachiningPipelineReport::GetDefaultDLProductionUnit() ); + if( iscc or isdl ){ + traverse( stockingpoint, ProductInStockingPoint_MP, pisp, pisp.Product_MP().IsLeaf() and not pisp.IsSystem() ){ + row := table.GetRow( pisp.ProductID() ); + + weekstart := owner.StartOfPlanning().Date(); + pispips := selectsortedset( pisp, ProductInStockingPointInPeriod, pispip, not pispip.Period_MP().IsHistorical() + and pispip.Period_MP().TimeUnit() = Translations::MP_GlobalParameters_Day(), pispip.Start() ); + + traverse( pispips, Elements, pispip ){ + //澶� + daycolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Day(), pispip.Start().Date() ); + //鍛� + weekcolumn := table.GetColumnByUnit( Translations::MP_GlobalParameters_Week(), weekstart ); + + supplyquantity := [Real]ceil( pispip.NewSupplyQuantity() );//鍚戜笂鍙栨暣 + inventoryquantity := [Real]ceil( pispip.PlannedInventoryLevelEnd() );//鍚戜笂鍙栨暣 + + //瑁呴厤绾� + if( isccassemnly or isdlassemnly ){ + row.SetCellAssemblyValue( daycolumn, isccassemnly, supplyquantity ); + row.SetCellAssemblyValue( weekcolumn, isccassemnly, supplyquantity ); + } + + //鏈哄姞绾� + if( isccproduction or isdlproduction ){ + row.SetCellProductionValue( daycolumn, isccproduction, supplyquantity ); + row.SetCellProductionValue( weekcolumn, isccproduction, supplyquantity ); + } + //搴撳瓨 + if( iscc or isdl ){ + row.SetCellInventoryValue( daycolumn, iscc, inventoryquantity ); + if( pispip.Start() = weekstart + Duration::Days( 6 ) or pispip.Period_MP() = endperiod ){ + weekstart := ( weekstart + Duration::Days( 7 ) ).Date(); + row.SetCellInventoryValue( weekcolumn, iscc, inventoryquantity ); + } + } + } } } } -- Gitblit v1.9.3