From f9f69f30faf50ac33ac970a1a88a06e69a4de883 Mon Sep 17 00:00:00 2001
From: rislai <risheng.lai@capgemini.com>
Date: 星期五, 19 七月 2024 17:41:20 +0800
Subject: [PATCH] 新增产量对比功能
---
_Main/BL/Type_LocalColumn/Function_CalcDate.qbl | 2 +-
_Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl | 7 +++++++
_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl | 37 +++++++++++++++++++++++++++++++++++++
3 files changed, 45 insertions(+), 1 deletions(-)
diff --git a/_Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl b/_Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl
new file mode 100644
index 0000000..e6fafe9
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomDate
+{
+ #keys: '3[412672.1.50711484][412672.1.50711483][412672.1.50711485]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl b/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl
index 2e99838..2f59aa9 100644
--- a/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl
+++ b/_Main/BL/Type_LocalColumn/Function_CalcDate.qbl
@@ -7,7 +7,7 @@
// rislai Jun-28-2024 (created)
if( not this.IsAttrbuteColumn() ){
names := this.Name().Tokenize( "/" );
- this.Date( guard( Date::Construct( [Number]names.Element( 0 ),[Number]names.Element( 1 ),[Number]names.Element( 2 )),Date::MinDate() ));
+ this.Date( ifexpr( this.CustomDate() <> Date::MinDate(),this.CustomDate(),guard( Date::Construct( [Number]names.Element( 0 ),[Number]names.Element( 1 ),[Number]names.Element( 2 )),Date::MinDate() )));
}
*]
}
diff --git a/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl b/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl
new file mode 100644
index 0000000..cb7d860
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl
@@ -0,0 +1,37 @@
+Quintiq file version 2.0
+#parent: #root
+Method Comparison (
+ RecycleBin recycleBin
+) as LocalTable
+{
+ TextBody:
+ [*
+ // rislai Jul-17-2024 (created)
+ macroPlan := this.MacroPlan();
+ table := recycleBin.LocalTable( relnew,Name := "");
+
+ localColumns := construct( LocalColumns );
+ localColumnIndexTree := NamedValueTree::Create();
+ traverse( this,OfflinePlanColumn,column,column.ColumnDate() >= macroPlan.StartOfPlanning().Date()){
+ localColumn := table.LocalColumn( relnew,CustomDate := column.ColumnDate());
+ localColumnHandle := localColumnIndexTree.GetHandle( column.ColumnDate().AsQUILL() );
+ localColumns.Add( localColumn );
+ localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
+ }
+ traverse( this,OfflinePlanRow,row,row.Type() = "1" ){
+ productID := row.ProductID();
+
+ localRow := table.LocalRow( relnew,Index := table.GetRowIndexCache(),CustomName := productID );
+ traverse( row,OfflinePlanCell,cell,cell.OfflinePlanColumn().ColumnDate() >= macroPlan.StartOfPlanning().Date() ){
+ localColumnHandle := localColumnIndexTree.GetHandle( cell.OfflinePlanColumn().ColumnDate().AsQUILL() );
+ localColumnIndex := guard( localColumnIndexTree.Root().Child( localColumnHandle ),null( NamedValue ));
+ if( not isnull( localColumnIndex )){
+ localColumn := localColumns.Element( localColumnIndex.GetValueAsNumber() );
+ localCell := localRow.LocalCell( relnew,LocalCell_DemandComparison ,LocalColumn := localColumn,
+ BaseVersion := cell.Quantity(),CompareVersion := 0.0);
+ }
+ }
+ }
+ return table;
+ *]
+}
--
Gitblit v1.9.3