From 4ea4b773425d7e7a9034c52269e6fb9d30be5904 Mon Sep 17 00:00:00 2001
From: lazhen <17772815105@139.com>
Date: 星期五, 12 七月 2024 17:38:36 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
---
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def | 24 +
_Main/BL/Type_ShiftPlan/Attribute_IsHoliday.qbl | 7
_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl | 2
_Main/UI/MacroPlannerWebApp/Views/ComprehensiveStandardHoursReport.vw | 16 +
_Main/BL/Type_LocalCell_Default/Method_SetBreakDayOverTimeDurction.qbl | 30 ++
_Main/BL/Type_MacroPlan/DefaultValue_StandardWorkingDay.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_FormComprehensiveStandardHoursReport.def | 16 +
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction#633.def | 65 +++++
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixeditorContextMenu445.def | 10
_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl | 4
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def | 97 +++++++
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbComprehensiveHours_OnUserChanged.def | 21 +
_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw | 2
_Main/BL/Type_EmployeeCost/StaticMethod_GetSalary.qbl | 28 ++
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport#1.qbl | 110 ++++++++
_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl | 2
/dev/null | 63 ----
_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw | 2
_Main/BL/Type_ShiftPlan/Function_CalcIsHoliday.qbl | 17 +
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbStandardHours_OnUserChanged.def | 22 +
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl | 122 +++++++++
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def | 13
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixEditorActionBarPage681.def | 10
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bCalculating_OnClick.def | 23 +
_Main/BL/Type_LocalCell_Default/Method_SetOvertimeDurction.qbl | 30 ++
_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pMain.def | 16 +
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonComprehensiveStandardHoursR.def | 17 +
27 files changed, 706 insertions(+), 70 deletions(-)
diff --git a/_Main/BL/Type_EmployeeCost/StaticMethod_GetSalary.qbl b/_Main/BL/Type_EmployeeCost/StaticMethod_GetSalary.qbl
new file mode 100644
index 0000000..3d83fd5
--- /dev/null
+++ b/_Main/BL/Type_EmployeeCost/StaticMethod_GetSalary.qbl
@@ -0,0 +1,28 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetSalary (
+ const Unit owner,
+ const OvertimeMultiplier overtimeMutiplier,
+ Real overtime
+) const as Real
+{
+ TextBody:
+ [*
+ // rislai Jul-10-2024 (created)
+ value := 0.0;
+ salaryByEmployeeTypeTree := NamedValueTree::Create();
+ traverse( owner,EmployeeCost,cost ){
+ salaryByEmployeeTypeHandle := salaryByEmployeeTypeTree.GetHandle( cost.EmployeeType().Name() );
+ salary := guard( salaryByEmployeeTypeTree.Root().Child( salaryByEmployeeTypeHandle ),null( NamedValue ));
+ // 浜х嚎浜哄憳绫诲埆1*浜烘暟*鍩烘湰宸ヨ祫1/21.75/8*宸ヤ綔鏃ュ姞鐝椂闀�*鍊嶇巼1
+ temp_salary := cost.EmployeeNumber() * cost.BaseSalary() / owner.MacroPlan().StandardWorkingDay() / 8 * overtime * overtimeMutiplier.Multiplier();
+ if( not isnull( salary )){
+ salary.SetValue( salary.GetValueAsReal() + temp_salary );
+ }else{
+ salaryByEmployeeTypeTree.Root().AddChild( salaryByEmployeeTypeHandle,temp_salary );
+ }
+ value := value + temp_salary;
+ }
+ return value;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_Default/Method_SetBreakDayOverTimeDurction.qbl b/_Main/BL/Type_LocalCell_Default/Method_SetBreakDayOverTimeDurction.qbl
new file mode 100644
index 0000000..4273106
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/Method_SetBreakDayOverTimeDurction.qbl
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetBreakDayOverTimeDurction (
+ String outcome
+)
+{
+ TextBody:
+ [*
+ // rislai Jul-10-2024 (created)
+ overtime := 0.0;
+ nextDayOvertime := 0.0;
+ if( outcome = "涓�鐝�" ){
+ overtime := 8.5;
+ nextDayOvertime := 0.0;
+ }else if( outcome = "浜岀彮" ){
+ overtime := 16;
+ nextDayOvertime := 0.5;
+ }else if(outcome = "9+9"){
+ overtime := 16;
+ nextDayOvertime := 2.5;
+ }else if(outcome = "10+10"){
+ overtime := 16;
+ nextDayOvertime := 4.5;
+ }else if(outcome = "涓夌彮"){
+ overtime := 16;
+ nextDayOvertime := 8;
+ }
+ this.RealValue( this.RealValue() + overtime + nextDayOvertime );
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_Default/Method_SetOvertimeDurction.qbl b/_Main/BL/Type_LocalCell_Default/Method_SetOvertimeDurction.qbl
new file mode 100644
index 0000000..a5fb5ae
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/Method_SetOvertimeDurction.qbl
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: #root
+Method SetOvertimeDurction (
+ String outcome
+)
+{
+ TextBody:
+ [*
+ // rislai Jul-10-2024 (created)
+ overtime := 0.0;
+ nextDayOvertime := 0.0;
+ if( outcome = "涓�鐝�" ){
+ overtime := 0.5;
+ nextDayOvertime := 0.0;
+ }else if( outcome = "浜岀彮" ){
+ overtime := 8;
+ nextDayOvertime := 0.5;
+ }else if(outcome = "9+9"){
+ overtime := 8;
+ nextDayOvertime := 2.5;
+ }else if(outcome = "10+10"){
+ overtime := 8;
+ nextDayOvertime := 4.5;
+ }else if(outcome = "涓夌彮"){
+ overtime := 8;
+ nextDayOvertime := 8;
+ }
+ this.RealValue( this.RealValue() + overtime + nextDayOvertime );
+ *]
+}
diff --git "a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl" "b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl"
new file mode 100644
index 0000000..19ebdae
--- /dev/null
+++ "b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl"
@@ -0,0 +1,110 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateComprehensiveHoursReport (
+ MacroPlan macroPlan,
+ const constcontent ShiftPlans shiftPlans,
+ RecycleBin owner
+) as LocalTable
+{
+ Description: '缁煎悎宸ユ椂鍒舵姤琛�'
+ TextBody:
+ [*
+ // rislai Jul-9-2024 (created)
+ table := owner.LocalTable( relnew,Name := "缁煎悎宸ユ椂鍒舵姤琛�");
+
+ //column1 := table.LocalColumn( relnew,Name := "宸ュ巶" ,Index := 1);
+ //column2 := table.LocalColumn( relnew,Name := "浜х嚎" ,Index := 2);
+
+ column3 := table.LocalColumn( relnew,Name := "鐢熶骇澶╂暟" ,Index := 3);
+
+ column4 := table.LocalColumn( relnew,Name := "鍔犵彮/娆犲伐鏃堕暱" ,Index := 4);
+ column5 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝椂闀�" ,Index := 6);
+
+ column6 := table.LocalColumn( relnew,Name := "鍔犵彮/娆犲伐璐�" ,Index := 8);
+ column7 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝垂" ,Index := 10);
+
+ units := selectset( shiftPlans,Elements.UnitPeriodTime.Unit,unit,true );
+
+ rows := construct( LocalRows );
+ rowIndexTree := NamedValueTree::Create();
+
+ cells := construct( LocalCell_Defaults );
+ cellIndexTree := NamedValueTree::Create();
+
+ unitIndexTree := NamedValueTree::Create();
+
+ for( i := 0; i < units.Size(); i++){
+ unit := units.Element( i );
+ row := table.LocalRow( relnew,Index := table.GetRowIndexCache() ,CustomName := unit.ID());
+ rowHandle := rowIndexTree.GetHandle( unit.ID() );
+ rows.Add( row );
+ rowIndexTree.Root().AddChild( rowHandle,rows.Size() - 1 );
+
+ unitIndexTree.Root().AddChild( unitIndexTree.GetHandle( unit.ID() ),i );
+ }
+ traverse( shiftPlans,Elements,shiftPlan ){
+ rowKey := shiftPlan.UnitPeriodTime().Unit().ID();
+ row := rows.Element( rowIndexTree.Root().Child( rowIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
+
+ // gongchangCell := LocalCell_Default::GetCell( rowKey + column1.Name(), cellIndexTree, cells, row, column1 );
+ // chanxianxCell := LocalCell_Default::GetCell( rowKey + column2.Name(), cellIndexTree, cells, row, column2 );
+
+ shengchanCell := LocalCell_Default::GetCell( rowKey + column3.Name(), cellIndexTree, cells, row, column3 );
+ week := shiftPlan.UnitPeriodTime().Period_MP().StartDate().DayOfWeek();
+ if( shiftPlan.Outcome() <> "" ){
+ shengchanCell.RealValue( shengchanCell.RealValue() + 1 );
+ if( shiftPlan.IsHoliday() ){
+ // 鑺傚亣鏃ュ姞鐝�
+ jiejiariCell := LocalCell_Default::GetCell( rowKey + column5.Name(), cellIndexTree, cells, row, column5 );
+ jiejiariCell.SetBreakDayOverTimeDurction( shiftPlan.Outcome() );
+ }else if( week = 6 or week = 7 ){
+ // 浼戞伅鏃ュ姞鐝�
+ xiuxiCell := LocalCell_Default::GetCell( rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
+ xiuxiCell.SetBreakDayOverTimeDurction( shiftPlan.Outcome() );
+ }else{
+ // 骞虫椂鍔犵彮
+ jiabanCell := LocalCell_Default::GetCell( rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
+ jiabanCell.SetOvertimeDurction( shiftPlan.Outcome() );
+ }
+ }else{
+ if( not shiftPlan.IsHoliday() and not ( week = 6 or week = 7 )){
+ qiangongCell := LocalCell_Default::GetCell( rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
+ qiangongCell.RealValue( qiangongCell.RealValue() - 8 );
+ }
+ }
+ }
+
+ // 骞虫椂鍔犵彮鍊嶇巼
+ defaultMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "骞虫椂鍔犵彮鍊嶇巼" );
+ if( isnull( defaultMultiplier )){
+ defaultMultiplier := macroPlan.OvertimeMultiplier( relnew,Name := "骞虫椂鍔犵彮鍊嶇巼",Multiplier := 1 );
+ }
+
+ // 浼戞伅鏃ュ姞鐝�嶇巼
+ breakDayMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "浼戞伅鏃ュ姞鐝�嶇巼");
+ if( isnull( breakDayMultiplier )){
+ breakDayMultiplier := macroPlan.OvertimeMultiplier( relnew, Name := "浼戞伅鏃ュ姞鐝�嶇巼",Multiplier := 2 );
+ }
+
+ // 鑺傚亣鏃ュ姞鐝�嶇巼
+ holidayMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "鑺傚亣鏃ュ姞鐝�嶇巼");
+ if( isnull( holidayMultiplier )){
+ holidayMultiplier := macroPlan.OvertimeMultiplier( relnew, Name := "鑺傚亣鏃ュ姞鐝�嶇巼",Multiplier := 3 );
+ }
+
+ traverse( table,LocalRow,row ){
+ rowKey := row.CustomName();
+ unit := units.Element( unitIndexTree.Root().Child( unitIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
+
+ jiejiariCell := LocalCell_Default::GetCell( rowKey + column5.Name(), cellIndexTree, cells, row, column5 );
+ jiejiarifeiCell := LocalCell_Default::GetCell( rowKey + column6.Name(), cellIndexTree, cells, row, column6 );
+ jiejiarifeiCell.RealValue( EmployeeCost::GetSalary( unit,defaultMultiplier,jiejiariCell.RealValue()));
+
+ qiangongCell := LocalCell_Default::GetCell( rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
+ qiangongfeiCell := LocalCell_Default::GetCell( rowKey + column7.Name(), cellIndexTree, cells, row, column7 );
+ qiangongfeiCell.RealValue( EmployeeCost::GetSalary( unit,defaultMultiplier,qiangongCell.RealValue() ));
+ }
+
+ return table;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
new file mode 100644
index 0000000..b88493c
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
@@ -0,0 +1,122 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateStandardHoursReport (
+ MacroPlan macroPlan,
+ const constcontent ShiftPlans shiftPlans,
+ RecycleBin owner
+) as LocalTable
+{
+ Description: '鏍囧噯宸ユ椂鍒舵姤琛�'
+ TextBody:
+ [*
+ // rislai Jul-4-2024 (created)
+ table := owner.LocalTable( relnew,Name := "鏍囧噯宸ユ椂鍒舵姤琛�");
+
+ //column1 := table.LocalColumn( relnew,Name := "宸ュ巶" ,Index := 1);
+ //column2 := table.LocalColumn( relnew,Name := "浜х嚎" ,Index := 2);
+
+ column3 := table.LocalColumn( relnew,Name := "鐢熶骇澶╂暟" ,Index := 3);
+
+ column4 := table.LocalColumn( relnew,Name := "骞虫棩鍔犵彮鏃堕暱" ,Index := 4);
+ column5 := table.LocalColumn( relnew,Name := "浼戞伅鏃ュ姞鐝椂闀�" ,Index := 5);
+ column6 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝椂闀�" ,Index := 6);
+ column7 := table.LocalColumn( relnew,Name := "娆犲伐鏃堕暱" ,Index := 7);
+
+ column8 := table.LocalColumn( relnew,Name := "骞虫棩鍔犵彮璐�" ,Index := 8);
+ column9 := table.LocalColumn( relnew,Name := "浼戞伅鏃ュ姞鐝垂" ,Index := 9);
+ column10 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝垂" ,Index := 10);
+ column11 := table.LocalColumn( relnew,Name := "娆犲伐璐�" ,Index := 11);
+
+ units := selectset( shiftPlans,Elements.UnitPeriodTime.Unit,unit,true );
+
+ rows := construct( LocalRows );
+ rowIndexTree := NamedValueTree::Create();
+
+ cells := construct( LocalCell_Defaults );
+ cellIndexTree := NamedValueTree::Create();
+
+ unitIndexTree := NamedValueTree::Create();
+
+ for( i := 0; i < units.Size(); i++){
+ unit := units.Element( i );
+ row := table.LocalRow( relnew,Index := table.GetRowIndexCache() ,CustomName := unit.ID());
+ rowHandle := rowIndexTree.GetHandle( unit.ID() );
+ rows.Add( row );
+ rowIndexTree.Root().AddChild( rowHandle,rows.Size() - 1 );
+
+ unitIndexTree.Root().AddChild( unitIndexTree.GetHandle( unit.ID() ),i );
+ }
+ traverse( shiftPlans,Elements,shiftPlan ){
+ rowKey := shiftPlan.UnitPeriodTime().Unit().ID();
+ row := rows.Element( rowIndexTree.Root().Child( rowIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
+
+ // gongchangCell := LocalCell_Default::GetCell( rowKey + column1.Name(), cellIndexTree, cells, row, column1 );
+ // chanxianxCell := LocalCell_Default::GetCell( rowKey + column2.Name(), cellIndexTree, cells, row, column2 );
+
+ shengchanCell := LocalCell_Default::GetCell( rowKey + column3.Name(), cellIndexTree, cells, row, column3 );
+ week := shiftPlan.UnitPeriodTime().Period_MP().StartDate().DayOfWeek();
+ if( shiftPlan.Outcome() <> "" ){
+ shengchanCell.RealValue( shengchanCell.RealValue() + 1 );
+ if( shiftPlan.IsHoliday() ){
+ // 鑺傚亣鏃ュ姞鐝�
+ jiejiariCell := LocalCell_Default::GetCell( rowKey + column6.Name(), cellIndexTree, cells, row, column6 );
+ jiejiariCell.SetBreakDayOverTimeDurction( shiftPlan.Outcome() );
+ }else if( week = 6 or week = 7 ){
+ // 浼戞伅鏃ュ姞鐝�
+ xiuxiCell := LocalCell_Default::GetCell( rowKey + column5.Name(), cellIndexTree, cells, row, column5 );
+ xiuxiCell.SetBreakDayOverTimeDurction( shiftPlan.Outcome() );
+ }else{
+ // 骞虫椂鍔犵彮
+ jiabanCell := LocalCell_Default::GetCell( rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
+ jiabanCell.SetOvertimeDurction( shiftPlan.Outcome() );
+ }
+ }else{
+ if( not shiftPlan.IsHoliday() and not ( week = 6 or week = 7 )){
+ qiangongCell := LocalCell_Default::GetCell( rowKey + column7.Name(), cellIndexTree, cells, row, column7 );
+ qiangongCell.RealValue( qiangongCell.RealValue() + 8 );
+ }
+ }
+ }
+
+ // 骞虫椂鍔犵彮鍊嶇巼
+ defaultMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "骞虫椂鍔犵彮鍊嶇巼" );
+ if( isnull( defaultMultiplier )){
+ defaultMultiplier := macroPlan.OvertimeMultiplier( relnew,Name := "骞虫椂鍔犵彮鍊嶇巼",Multiplier := 1 );
+ }
+
+ // 浼戞伅鏃ュ姞鐝�嶇巼
+ breakDayMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "浼戞伅鏃ュ姞鐝�嶇巼");
+ if( isnull( breakDayMultiplier )){
+ breakDayMultiplier := macroPlan.OvertimeMultiplier( relnew, Name := "浼戞伅鏃ュ姞鐝�嶇巼",Multiplier := 2 );
+ }
+
+ // 鑺傚亣鏃ュ姞鐝�嶇巼
+ holidayMultiplier := select( macroPlan,OvertimeMultiplier,object,object.Name() = "鑺傚亣鏃ュ姞鐝�嶇巼");
+ if( isnull( holidayMultiplier )){
+ holidayMultiplier := macroPlan.OvertimeMultiplier( relnew, Name := "鑺傚亣鏃ュ姞鐝�嶇巼",Multiplier := 3 );
+ }
+
+ traverse( table,LocalRow,row ){
+ rowKey := row.CustomName();
+ unit := units.Element( unitIndexTree.Root().Child( unitIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
+
+ jiejiariCell := LocalCell_Default::GetCell( rowKey + column6.Name(), cellIndexTree, cells, row, column6 );
+ jiejiarifeiCell := LocalCell_Default::GetCell( rowKey + column10.Name(), cellIndexTree, cells, row, column10 );
+ jiejiarifeiCell.RealValue( EmployeeCost::GetSalary( unit,defaultMultiplier,jiejiariCell.RealValue()));
+
+ xiuxiCell := LocalCell_Default::GetCell( rowKey + column5.Name(), cellIndexTree, cells, row, column5 );
+ xiuxifeiCell := LocalCell_Default::GetCell( rowKey + column9.Name(), cellIndexTree, cells, row, column9 );
+ xiuxifeiCell.RealValue( EmployeeCost::GetSalary( unit,breakDayMultiplier,xiuxiCell.RealValue()));
+
+ jiabanCell := LocalCell_Default::GetCell( rowKey + column4.Name(), cellIndexTree, cells, row, column4 );
+ jiabanfeiCell := LocalCell_Default::GetCell( rowKey + column8.Name(), cellIndexTree, cells, row, column8 );
+ jiabanfeiCell.RealValue( EmployeeCost::GetSalary( unit,holidayMultiplier,jiabanCell.RealValue()));
+
+ qiangongCell := LocalCell_Default::GetCell( rowKey + column7.Name(), cellIndexTree, cells, row, column7 );
+ qiangongfeiCell := LocalCell_Default::GetCell( rowKey + column11.Name(), cellIndexTree, cells, row, column11 );
+ qiangongfeiCell.RealValue( EmployeeCost::GetSalary( unit,defaultMultiplier,qiangongCell.RealValue() ));
+ }
+
+ return table;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl
index 27c9816..b8e97f8 100644
--- a/_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl
+++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_GetCell.qbl
@@ -14,7 +14,7 @@
cellHandle := cellIndexTree.GetHandle( cellKey );
cellIndex := guard( cellIndexTree.Root().Child( cellHandle ),null( NamedValue ));
cell := null( LocalCell_Default );
- if( isnull( cell )){
+ if( isnull( cellIndex )){
cell := row.LocalCell( relnew,LocalCell_Default,LocalColumn := column );
cells.Add( cell );
cellIndexTree.Root().AddChild( cellHandle,cells.Size() - 1 );
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl
deleted file mode 100644
index c7e6f6a..0000000
--- a/_Main/BL/Type_LocalCell_Default/StaticMethod_NewStaticMethod.qbl
+++ /dev/null
@@ -1,63 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-StaticMethod NewStaticMethod (
- const constcontent ShiftPlans shiftPlans,
- RecycleBin owner
-)
-{
- TextBody:
- [*
- // rislai Jul-4-2024 (created)
- table := owner.LocalTable( relnew,Name := "");
-
- column1 := table.LocalColumn( relnew,Name := "宸ュ巶" );
- column2 := table.LocalColumn( relnew,Name := "浜х嚎" );
-
- column3 := table.LocalColumn( relnew,Name := "鐢熶骇澶╂暟" );
- column4 := table.LocalColumn( relnew,Name := "鍔犵彮鏃堕暱" );
- column5 := table.LocalColumn( relnew,Name := "娆犲伐鏃堕暱" );
- column6 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝椂闀�" );
- column7 := table.LocalColumn( relnew,Name := "鍔犵彮璐�" );
- column8 := table.LocalColumn( relnew,Name := "娆犲伐璐�" );
- column9 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝垂" );
-
- unitIDs := selectuniquevalues( shiftPlans,Elements.UnitPeriodTime.Unit,unit,unit.ID() );
-
- rows := construct( LocalRows );
- rowIndexTree := NamedValueTree::Create();
-
- cells := construct( LocalCell_Defaults );
- cellIndexTree := NamedValueTree::Create();
-
- traverse( unitIDs,Elements,element ){
- row := table.LocalRow( relnew,Index := table.GetRowIndexCache() );
- rowHandle := rowIndexTree.GetHandle( element );
- rows.Add( row );
- rowIndexTree.Root().AddChild( rowHandle,rows.Size() - 1 );
- }
-
- traverse( shiftPlans,Elements,shiftPlan ){
- rowKey := shiftPlan.UnitPeriodTime().Unit().ID();
- row := rows.Element( rowIndexTree.Root().Child( rowIndexTree.GetHandle( rowKey )).GetValueAsNumber() );
-
- gongchangCell := LocalCell_Default::GetCell( rowKey + "宸ュ巶", cellIndexTree, cells, row, column1 );
- chanxianxCell := LocalCell_Default::GetCell( rowKey + "浜х嚎", cellIndexTree, cells, row, column2 );
-
- shengchanCell := LocalCell_Default::GetCell( rowKey + "鐢熶骇澶╂暟", cellIndexTree, cells, row, column3 );
- jiabanCell := LocalCell_Default::GetCell( rowKey + "鍔犵彮鏃堕暱", cellIndexTree, cells, row, column4 );
- qiangongCell := LocalCell_Default::GetCell( rowKey + "娆犲伐鏃堕暱", cellIndexTree, cells, row, column5 );
- jiejiariCell := LocalCell_Default::GetCell( rowKey + "鑺傚亣鏃ュ姞鐝椂闀�", cellIndexTree, cells, row, column6 );
-
- jiabanfeiCell := LocalCell_Default::GetCell( rowKey + "鍔犵彮璐�", cellIndexTree, cells, row, column7 );
- qiangongfeiCell := LocalCell_Default::GetCell( rowKey + "娆犲伐璐�", cellIndexTree, cells, row, column8 );
- jiejiarifeiCell := LocalCell_Default::GetCell( rowKey + "鑺傚亣鏃ュ姞鐝垂", cellIndexTree, cells, row, column9 );
-
- if( shiftPlan.Outcome() <> "" ){
-
- }else{
-
- }
-
- }
- *]
-}
diff --git a/_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl b/_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl
index 64f77be..19b7ed7 100644
--- a/_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl
+++ b/_Main/BL/Type_LocalTool/StaticMethod_IsAnyDurationContained.qbl
@@ -5,7 +5,7 @@
DateTime end1,
DateTime start2,
DateTime end2
-) const declarative as Boolean
+) const declarative remote as Boolean
{
TextBody:
[*
diff --git a/_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl b/_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl
index e4d6bb3..8ec6afe 100644
--- a/_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl
+++ b/_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl
@@ -5,11 +5,11 @@
Date end1,
Date start2,
Date end2
-) const declarative as Boolean
+) const declarative remote as Boolean
{
TextBody:
[*
// rislai Jun-14-2024 (created)
- return start1 < end2 and start2 < end1 ;
+ return start1 <= end2 and start2 <= end1 ;
*]
}
diff --git a/_Main/BL/Type_MacroPlan/DefaultValue_StandardWorkingDay.qbl b/_Main/BL/Type_MacroPlan/DefaultValue_StandardWorkingDay.qbl
new file mode 100644
index 0000000..8e874be
--- /dev/null
+++ b/_Main/BL/Type_MacroPlan/DefaultValue_StandardWorkingDay.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ ISOValue: '21.75'
+ TargetAttribute: StandardWorkingDay
+}
diff --git a/_Main/BL/Type_ShiftPlan/Attribute_IsHoliday.qbl b/_Main/BL/Type_ShiftPlan/Attribute_IsHoliday.qbl
new file mode 100644
index 0000000..7b96cc3
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Attribute_IsHoliday.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsHoliday
+{
+ #keys: '3[412672.1.34300030][412672.1.34300029][412672.1.34300031]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_ShiftPlan/Function_CalcIsHoliday.qbl b/_Main/BL/Type_ShiftPlan/Function_CalcIsHoliday.qbl
new file mode 100644
index 0000000..64cd9e9
--- /dev/null
+++ b/_Main/BL/Type_ShiftPlan/Function_CalcIsHoliday.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIsHoliday
+{
+ TextBody:
+ [*
+ // rislai Jul-9-2024 (created)
+
+ value := false
+
+ if( this.EventType() = "娉曞畾鑺傚亣鏃�"){
+ value := true;
+ }
+
+ this.IsHoliday( value );
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index 8444a19..8417130 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -49,6 +49,17 @@
Taborder: 3
]
}
+ Component ButtonComprehensiveStandardHoursReport
+ {
+ #keys: '[412672.1.39734996]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOCUMENT_CHART'
+ Label: '宸ユ椂鍒舵姤琛�'
+ Taborder: 4
+ ]
+ }
Component ButtonEnginePipelineReport
{
#keys: '[415136.0.884991586]'
@@ -57,7 +68,7 @@
[
Image: 'DOCUMENT_CONNECTION'
Label: 'Engine pipeline report'
- Taborder: 4
+ Taborder: 5
]
}
]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonComprehensiveStandardHoursR.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonComprehensiveStandardHoursR.def
new file mode 100644
index 0000000..611518a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonComprehensiveStandardHoursR.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonComprehensiveStandardHoursReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonComprehensiveStandardHoursReport_OnClick
+{
+ #keys: '[412672.1.36822187]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ // Open view
+ ApplicationMacroPlanner.OpenView( 'ComprehensiveStandardHoursReport', ButtonComprehensiveStandardHoursReport );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def
new file mode 100644
index 0000000..915e9ca
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_MatrixEditor859.def
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditor859
+{
+ #keys: '[412672.1.33151379]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell642
+ {
+ #keys: '[412672.1.33151380]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractor872
+ {
+ #keys: '[412672.1.33151381]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ Source: 'dhTable'
+ Taborder: 0
+ Transformation: 'LocalRow.LocalCell.astype(LocalCell_Default)'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'RealValue'
+ Column: 'LocalColumn'
+ Row: 'LocalRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows590
+ {
+ #keys: '[412672.1.33151384]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor862
+ {
+ #keys: '[412672.1.33151385]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ Source: 'dhTable'
+ Taborder: 0
+ Transformation: 'LocalRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns481
+ {
+ #keys: '[412672.1.33151388]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractor661
+ {
+ #keys: '[412672.1.33151389]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ Source: 'dhTable'
+ Taborder: 0
+ Transformation: 'LocalColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPage681
+ #child: matrixeditorContextMenu445
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumns481'
+ ContextMenu: 'matrixeditorContextMenu445'
+ Rows: 'MatrixEditorRows590'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def
new file mode 100644
index 0000000..8755839
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_Panel743.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+Component Panel743
+{
+ #keys: '[412672.1.33151321]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor859
+ Component dhTable
+ {
+ #keys: '[412672.1.33151419]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'LocalTable'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixEditorActionBarPage681.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixEditorActionBarPage681.def
new file mode 100644
index 0000000..f28ea9d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixEditorActionBarPage681.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPage681
+{
+ #keys: '[412672.1.33151392]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixeditorContextMenu445.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixeditorContextMenu445.def
new file mode 100644
index 0000000..d3ba7c8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_matrixeditorContextMenu445.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenu445
+{
+ #keys: '[412672.1.33151395]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pMain.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pMain.def
new file mode 100644
index 0000000..1263073
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pMain.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component pMain
+{
+ #keys: '[412672.1.33151242]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: Panel743
+ #child: pOperaction
+ ]
+ Properties:
+ [
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction\043633.def" "b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction\043633.def"
new file mode 100644
index 0000000..8be63c5
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Component_pOperaction\043633.def"
@@ -0,0 +1,65 @@
+Quintiq file version 2.0
+Component pOperaction
+{
+ #keys: '[412672.1.33151285]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component cbStandardHours
+ {
+ #keys: '[412672.1.33151450]'
+ BaseType: 'WebCheckbox'
+ Properties:
+ [
+ CheckboxType: 'toggle'
+ Label: '鏍囧噯宸ユ椂鍒�'
+ Taborder: 0
+ ]
+ }
+ Component cbComprehensiveHours
+ {
+ #keys: '[412672.1.33151469]'
+ BaseType: 'WebCheckbox'
+ Properties:
+ [
+ CheckboxType: 'toggle'
+ Label: '缁煎悎宸ユ椂鍒�'
+ Taborder: 1
+ ]
+ }
+ Component dsStartDate
+ {
+ #keys: '[412672.1.33151495]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ Component dsEndDate
+ {
+ #keys: '[412672.1.33151514]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Date: 9999-12-31
+ Taborder: 3
+ ]
+ }
+ Component bCalculating
+ {
+ #keys: '[412672.1.33180446]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Calculating'
+ Taborder: 4
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bCalculating_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bCalculating_OnClick.def
new file mode 100644
index 0000000..32e7ad6
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_bCalculating_OnClick.def
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: pOperaction/bCalculating
+Response OnClick () id:Response_pOperaction_bCalculating_OnClick
+{
+ #keys: '[412672.1.33160729]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ shiftPlans := selectset( MacroPlan,Unit.UnitPeriod.astype( UnitPeriodTime ).ShiftPlan,shiftPlan,LocalTool::IsOverlap( dsStartDate.Date(),dsEndDate.Date(),shiftPlan.UnitPeriodTime().Period_MP().StartDate(),shiftPlan.UnitPeriodTime().Period_MP().EndDate()));
+
+ if( cbStandardHours.Checked() ){
+ dhTable.Data( LocalCell_Default::GenerateStandardHoursReport( MacroPlan ,shiftPlans ,RecycleBin ));
+ }
+ if( cbComprehensiveHours.Checked()){
+ dhTable.Data( LocalCell_Default::GenerateComprehensiveHoursReport( MacroPlan ,shiftPlans ,RecycleBin ));
+ }
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbComprehensiveHours_OnUserChanged.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbComprehensiveHours_OnUserChanged.def
new file mode 100644
index 0000000..7f3145b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbComprehensiveHours_OnUserChanged.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: pOperaction/cbComprehensiveHours
+Response OnUserChanged () id:Response_pOperaction_cbComprehensiveHours_OnUserChanged
+{
+ #keys: '[412672.1.33151755]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebCheckbox_OnUserChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ cbStandardHours.Checked( not this.Checked() );
+ if( this.Checked() ){
+ FormComprehensiveStandardHoursReport.Title( "缁煎悎宸ユ椂鍒舵姤琛�" );
+ }else{
+ FormComprehensiveStandardHoursReport.Title( "鏍囧噯宸ユ椂鍒舵姤琛�" );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbStandardHours_OnUserChanged.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbStandardHours_OnUserChanged.def
new file mode 100644
index 0000000..c65fbd7
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/Response_pOperaction_cbStandardHours_OnUserChanged.def
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: pOperaction/cbStandardHours
+Response OnUserChanged () id:Response_pOperaction_cbStandardHours_OnUserChanged
+{
+ #keys: '[412672.1.33151672]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebCheckbox_OnUserChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ cbComprehensiveHours.Checked( not this.Checked() );
+
+ if( this.Checked() ){
+ FormComprehensiveStandardHoursReport.Title( "鏍囧噯宸ユ椂鍒舵姤琛�" );
+ }else{
+ FormComprehensiveStandardHoursReport.Title( "缁煎悎宸ユ椂鍒舵姤琛�" );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_FormComprehensiveStandardHoursReport.def b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_FormComprehensiveStandardHoursReport.def
new file mode 100644
index 0000000..5a8f45a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_StandardHoursReport/_ROOT_Component_FormComprehensiveStandardHoursReport.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormComprehensiveStandardHoursReport
+{
+ #keys: '[412672.1.33151116]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: pMain
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_CHART'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/ComprehensiveStandardHoursReport.vw b/_Main/UI/MacroPlannerWebApp/Views/ComprehensiveStandardHoursReport.vw
new file mode 100644
index 0000000..97583b3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/ComprehensiveStandardHoursReport.vw
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ page: ''
+ group: ''
+ index: 0
+ image: 'DOCUMENT_CHART'
+ description: ''
+ }
+ formatversion: 2
+ id: 'ComprehensiveStandardHoursReport'
+ name: 'ComprehensiveStandardHoursReport'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw b/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
index 6bec5b0..f547af8 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
@@ -2,10 +2,10 @@
{
viewcontents
{
+ image: 'MONEY_BILL_FIRE'
page: ''
group: ''
index: 0
- image: 'MONEY_BILL_FIRE'
description: ''
}
formatversion: 2
diff --git a/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw b/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
index 1caecfc..7ecffee 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/ShiftPlan.vw
@@ -2,10 +2,10 @@
{
viewcontents
{
+ image: 'COMPASSES'
page: ''
group: ''
index: 0
- image: 'COMPASSES'
description: ''
}
formatversion: 2
--
Gitblit v1.9.3