From aa42b48fd2d23e75b64a0aec05d5be4b9ebf0465 Mon Sep 17 00:00:00 2001 From: lazhen <17772815105@139.com> Date: 星期二, 05 十一月 2024 18:20:19 +0800 Subject: [PATCH] 计划库存后端类 --- _Main/BL/Type_OfflinePlanArchiveVersion/Method_GenerateColumn.qbl | 77 +++++++++++++------------------------- 1 files changed, 26 insertions(+), 51 deletions(-) diff --git a/_Main/BL/Type_OfflinePlanArchiveVersion/Method_GenerateColumn.qbl b/_Main/BL/Type_OfflinePlanArchiveVersion/Method_GenerateColumn.qbl index 1a0e80f..5e80a3f 100644 --- a/_Main/BL/Type_OfflinePlanArchiveVersion/Method_GenerateColumn.qbl +++ b/_Main/BL/Type_OfflinePlanArchiveVersion/Method_GenerateColumn.qbl @@ -1,65 +1,40 @@ Quintiq file version 2.0 #parent: #root Method GenerateColumn ( - Dates periods, - String timeunit, - Date starttime, - Date endtime + Dates periods ) { TextBody: [* // 鐢勫叞楦� Jun-25-2024 (created) - mindate := min( periods, Elements, period, period ); - maxdate := max( periods, Elements, period, period ); - //鏌ヨ鏃ユ湡杩斿洖闇�瑕佸湪璁″垝鏃ユ湡涔嬪唴 - if( starttime < mindate and endtime > maxdate ){ - if( starttime < mindate ){ - starttime := mindate; + weekstart := periods.Element( 0 ); + + monthstart := periods.Element( 0 ); + traverse( periods, Elements, periodtime ){ + periodname := periodtime.Format( "M2/D2/Y" ); + + this.Column( relnew, ColumnName := periodname, StartDate := periodtime, EndDate := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() ); + + weekend := ( weekstart + Duration::Days( 6 ) ).Date(); + if( ( weekend.Year() <> periodtime.Year() and weekend.Month() > 1 ) or ( abs( weekstart.Week() - periodtime.Week() ) > 1 and weekend.Year() = periodtime.Year() ) ){ + weekstart := periodtime; } - if( endtime > maxdate ){ - endtime := maxdate; + if( periodtime = weekstart ){ + weekperiodname := weekstart.Format( "M2/D2/Y" ); + this.Column( relnew, ColumnName := weekperiodname, StartDate := weekstart, EndDate := ( weekstart.StartOfNextWeek() - Duration::Days( 1 ) ).Date(), TimeUnit := Translations::MP_GlobalParameters_Week() ); + } - if( timeunit = Translations::MP_GlobalParameters_Day() ){ - for( start := starttime; start <= endtime; start := start.DateTime().StartOfNextDay().Date() ){ - periodname := start.Format( "M2/D2/Y" ); - if( not exists( this, Column, column, column.StartDate() = start ) ){ - this.Column( relnew, ColumnName := periodname, StartDate := start, EndDate := start, TimeUnit := Translations::MP_GlobalParameters_Day() ); - } - } - }else if( timeunit = Translations::MP_GlobalParameters_Week() ){ - // weekstartstr := ' KW'; - for( start := starttime; start <= endtime; start := start.StartOfNextWeek() ){ - weekend := ( start.StartOfNextWeek() - Duration::Days( 1 ) ).Date();//.Concat( weekstartstr.Concat( weekend.Week().Format( 'N(LPad0(2))' ) ) ) - - this.Column( relnew, ColumnName := weekend.Format( "M2/D2/Y" ), StartDate := start, EndDate := weekend, TimeUnit := Translations::MP_GlobalParameters_Week() ); - } - }else if( timeunit = Translations::MP_GlobalParameters_Month() ){ - for( start := starttime; start <= endtime; start := start.StartOfNextMonth() ){ - monthend := ( start.StartOfNextMonth() - Duration::Days( 1 ) ).Date();//.Concat( ' ' ).Concat( monthend.Format( "MM", us_locale ).Concat( '/').Concat( [String]monthend.Month() ).Concat( '鏈�' ) ) - // us_locale := Locale::Construct( 'en_us' ); - this.Column( relnew, ColumnName := monthend.Format( "M2/D2/Y" ), StartDate := start, EndDate := monthend, TimeUnit := Translations::MP_GlobalParameters_Month() ); - } + if( ( monthstart.Year() <> periodtime.Year() and abs( monthstart.Month() - periodtime.Month() ) <> 11 ) or ( abs( monthstart.Month() - periodtime.Month() ) > 1 and monthstart.Year() = periodtime.Year() ) ){ + monthstart := periodtime; } + if( periodtime = monthstart ){ + monthperiodname := monthstart.Format( "M2/D2/Y" ); + enddate := ( monthstart.StartOfNextMonth() - Duration::Days( 1 ) ).Date(); + this.Column( relnew, ColumnName := monthperiodname, StartDate := monthstart, EndDate := enddate, TimeUnit := Translations::MP_GlobalParameters_Month() ); + + } + weekstart := periodtime.StartOfNextWeek(); + monthstart := periodtime.StartOfNextMonth(); } - //weekstart := periods.Element( 0 ); - //monthstart := periods.Element( 0 ); - //traverse( periods, Elements, periodtime ){ - // periodname := periodtime.Format( "M2/D2/Y" ); - // - // this.Column( relnew, Name := periodname, StartDate := periodtime, EndDate := periodtime, TimeUnit := Translations::MP_GlobalParameters_Day() ); - // - // if( periodtime = weekstart ){ - // weekperiodname := weekstart.Format( "M2/D2/Y" ); - // this.Column( relnew, Name := weekperiodname, StartDate := weekstart, EndDate := ( weekstart + Duration::Days( 6 ) ).Date(), TimeUnit := Translations::MP_GlobalParameters_Week() ); - // weekstart := ( weekstart + Duration::Days( 7 ) ).Date(); - // } - // if( periodtime = monthstart ){ - // monthperiodname := monthstart.Format( "M2/D2/Y" ); - // enddate := ( monthstart.StartOfNextMonth() - Duration::Days( 1 ) ).Date(); - // this.Column( relnew, Name := monthperiodname, StartDate := monthstart, EndDate := enddate, TimeUnit := Translations::MP_GlobalParameters_Month() ); - // monthstart := monthstart.StartOfNextMonth(); - // } - //} *] } -- Gitblit v1.9.3