Quintiq file version 2.0
|
#parent: #root
|
StaticMethod GenerateData (
|
InterfaceDataset interface,
|
MacroPlan macroplan,
|
RecycleBin recycle,
|
const Archive archive
|
)
|
{
|
Description: '生成可以下发的客户需求(PPA+IDS)数据'
|
TextBody:
|
[*
|
// 甄兰鸽 Aug-20-2024 (created)
|
//interface.CustomerDemandIDS( relflush );
|
//interface.CustomerDemandIDSSearch( relflush );
|
info( '-------------------------Start---------------------');
|
allunit := CustomerDemandIDS::GetDefaultAllUnit();//search :=
|
interface.CustomerDemandIDSSearch( relnew, Product := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate(), Unit := allunit );
|
name := '客户需求';
|
idstable := selectobject( interface, CustomerDemandIDS, idstable, idstable.ID() = name );
|
if( isnull( idstable ) ){
|
idstable := interface.CustomerDemandIDS( relnew, ID := name, Name := name );
|
}
|
//showtable := selectobject( interface, CustomerDemandIDS, version, version.IsShow() );
|
//if( isnull( showtable ) ){
|
// showtable := interface.CustomerDemandIDS( relnew, ID := name + 'Show', Name := name, IsShow := true );
|
//}
|
binaryValue := TemplateManager::GetIDSFullTable( archive, Date::ActualDate().Year() );
|
source := GeneralExcelImportAndExportDataSource::Upload( recycle, binaryValue, OS::TempPath() + "template.xlsx" );
|
source.ReadStructure();
|
Transaction::Transaction().Propagate( attribute( GeneralExcelImportAndExportDataColumn, ColumnIndex ) );
|
cnv2 := StringToDate::StandardConverter();
|
cnv2.SetCustomConversion();
|
cnv2.CustomFormatString( "yyyy/MM/dd" );
|
idsdates := selectuniquevalues( source, GeneralExcelImportAndExportDataTable.GeneralExcelImportAndExportDataColumn, column, column.ColumnIndex() > 2, cnv2.Convert( column.Name() ) );
|
ppadates := selectuniquevalues( macroplan, SalesDemand.astype( Forecast ), forecast, forecast.Origin() = 'PPA', forecast.StartDate() );
|
periods := idsdates.Union( ppadates );
|
periods := selectuniquevalues( periods, Elements, e, not exists( idstable, Column, column, column.StartDate() = e ), e );
|
if( periods.Size() > 0 ){
|
idstable.GenerateColumn( periods.Sort(), false );
|
}
|
traverse( recycle, GeneralExcelImportAndExportDataSource.GeneralExcelImportAndExportDataTable, table ){
|
traverse( table, GeneralExcelImportAndExportDataRow, row ){
|
productcell := selectobject( row, GeneralExcelImportAndExportDataCell, cell, cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() = 2 );
|
factorycell := selectobject( row, GeneralExcelImportAndExportDataCell, cell, cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() = 0 );
|
unitname := ifexpr( factorycell.Value().StartsWith( '长春' ), FinancialProductionReport::GetDefaultCCUnit(), FinancialProductionReport::GetDefaultDLUnit() );
|
idsrow := idstable.GetRowByUnit( productcell.Value(), unitname );
|
traverse( row, GeneralExcelImportAndExportDataCell, cell, cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() > 2 ){
|
period := cnv2.Convert( cell.GeneralExcelImportAndExportDataColumn().Name() );
|
daycolumn := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), period );
|
// weekcolumn := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), period );
|
// monthcolumn := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), period );
|
|
idsrow.SetCellValue( daycolumn, [Number]cell.Value() );
|
// idsrow.SetCellValue( weekcolumn, [Number]cell.Value() );
|
// idsrow.SetCellValue( monthcolumn, [Number]cell.Value() );
|
}
|
}
|
}
|
traverse ( macroplan, SalesDemand.astype( Forecast ), forecast, not isnull( forecast.Product_MP() ) and forecast.Origin() = 'PPA' ){
|
|
unitname := ifexpr( forecast.StockingPointID().StartsWith( '长春' ) , FinancialProductionReport::GetDefaultCCUnit(), FinancialProductionReport::GetDefaultDLUnit() );/*ifexpr( forecast.SalesSegment_MP().Name().StartsWith( 'Changchun' )
|
or exists( forecast.SalesSegment_MP().GetAllParent(), Elements, psalessegment, psalessegment.Name().StartsWith( 'Changchun' ) )
|
, FinancialProductionReport::GetDefaultCCUnit()
|
, FinancialProductionReport::GetDefaultDLUnit() );*/
|
traverse( forecast, PlanningSalesDemandInPeriod, sdip ){
|
idsrow := idstable.GetRowByUnit( forecast.ProductID(), unitname );
|
daycolumn := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), sdip.StartDate() );
|
// weekcolumn := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), sdip.StartDate() );
|
// monthcolumn := idstable.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), sdip.StartDate() );
|
// info( '-----------------', isnull( idsrow ), isnull( daycolumn ), isnull( weekcolumn ), isnull( monthcolumn ), sdip.StartDate() );
|
idsrow.SetCellValue( daycolumn, [Number]sdip.Quantity() );
|
// idsrow.SetCellValue( weekcolumn, [Number]sdip.Quantity() );
|
// idsrow.SetCellValue( monthcolumn, [Number]sdip.Quantity() );
|
}
|
}
|
|
source.Delete();
|
info( '-------------------------End---------------------');
|
//productids := selectuniquevalues( idstable, Row, row, row.Name() );
|
//showtable.Generate( search, productids );
|
*]
|
}
|