From 23f7cd51d607dead573dfa5b251d402d502111a2 Mon Sep 17 00:00:00 2001
From: lihongji <3117313295@qq.com>
Date: 星期五, 26 七月 2024 16:44:14 +0800
Subject: [PATCH] Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
---
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_ListInterfaceLoginfo.def | 42
_Main/BL/Type_FinishedEngineInventory/Attribute_Price.qbl | 8
Calendars/BL/Type_LibCal_Participation/Method_CreateTimeInterval.qbl | 1
_Main/BL/Type_FinishedEngineInventory/Attribute_VehicleType.qbl | 8
_Main/BL/Type_LibCal_Subscription/_ROOT_Type_LibCal_Subscription.qbl | 6
_Main/BL/Type_InterfaceLoginfo/Attribute_ReturnMsg.qbl | 8
_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_InitializeTable.qbl | 6
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetColumnXML.qbl | 97 +
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslPower_OnCreated.def | 20
_Main/BL/Type_InterfaceLoginfo/Attribute_ExecuteUser.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslGeneration_OnCreated.def | 20
_Main/BL/Type_ShippingActualData/Attribute_CreateTime.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuInterface_OnClick.def | 16
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_CompareVersionValue.qbl | 7
_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterface.qbl | 86
_Main/BL/Type_LibCal_SubscriberEventRow/Method_InitializeDate.qbl | 76
_Main/BL/Type_LibCal_SubscriberEventColumn/Method_FilterByDatePeriod.qbl | 5
_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_ListFinishedEngineInventory.def | 42
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged.def | 20
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Actual.qbl | 7
_Main/BL/Type_FinishedEngineInventory/Attribute_FullName.qbl | 8
_Main/BL/Type_FinishedEngineInventory/Attribute_SpellName.qbl | 8
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_BaseVersionValue.qbl | 7
_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GenerateColumnIndex.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuDelete_OnClick.def | 19
_Main/BL/Type_FinishedEngineInventory/Attribute_Amount.qbl | 8
_Main/BL/Type_LocalCell_ProductionComparison/Method_GetAttributeByName.qbl | 44
_Main/BL/Type_FinishedEngineInventory/Attribute_BIPlace.qbl | 8
_Main/BL/Type_InterfaceLoginfo/DefaultValue_Name.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def | 72
_Main/BL/Type_InterfaceLoginfo/Attribute_Message.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_matrixEditorActionBarPageDemandComparison#1.def | 10
_Main/BL/Relations/Relation_ShippingActualCell_ShippingActualColumn_ShippingActualColumn_Shippi.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def | 16
_Main/UI/MacroPlannerWebApp/Views/Finished_engine_inventory.vw | 200 ++
_Main/BL/Type_LocalCell_ProductionComparison/Function_CalcGap.qbl | 13
_Main/BL/Type_MachineStockData/StaticMethod_GetRequestBody.qbl | 15
_Main/BL/Type_FinishedEngineInventory/Attribute_Fac.qbl | 8
_Main/BL/Dataset_InterfaceDataset/Daemon_MachineStockInterface.qbl | 16
Calendars/BL/Type_LibCal_Participation/Method_UpdateRecurrencePeriod.qbl | 2
_Main/BL/Type_ShippingActualColumn/Attribute_Index.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonOfflinePlanComparisonReport.def | 17
_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_matrixeditorContextMenuTable.def | 10
_Main/BL/Type_LocalCell_ProductionComparison/_ROOT_Type_LocalCell_ProductionComparison.qbl | 9
Calendars/BL/Type_LibCal_LeadingParticipation/Method_UpdateCalendarWhenChanged.qbl | 2
_Main/BL/Type_FinishedEngineInventory/Attribute_Total.qbl | 8
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillRows.qbl | 36
Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences.qbl | 2
_Main/BL/Type_ShippingActualData/Attribute_FourCode.qbl | 8
_Main/BL/Type_MachineStockData/Attribute_MaterialName.qbl | 8
_Main/BL/Type_LibCal_SubscriberEventRow/Function_CalcName.qbl | 13
_Main/BL/Type_ActualDailyProductionReport/Attribute_Product.qbl | 8
_Main/BL/Type_MachineStockData/Attribute_Inventory.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bShippingActualData_OnClick.def | 16
_Main/BL/Type_FinishedEngineInventory/Attribute_Brand.qbl | 8
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetAttributeNames.qbl | 16
_Main/BL/Type_ShippingActualData/_ROOT_Type_ShippingActualData.qbl | 10
Calendars/BL/Relations/Relation_LibCal_ExplicitTimeInterval_LeadingETI_LibCal_ExplicitTimeInterval_.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listContextMenuMachineStockData.def | 10
_Main/BL/Type_MachineStockData/StaticMethod_GenerateData.qbl | 32
_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl | 75
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_Compared.qbl | 118 +
_Main/BL/Type_FinishedEngineInventory/DefaultValue_Fac.qbl | 6
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_AsyncExport.qbl | 32
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsEndDate_OnChanged.def | 30
_Main/BL/Type_ShippingActualCell/_ROOT_Type_ShippingActualCell.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/_ROOT_Component_FormMachineStockData.def | 17
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ButtonFilter_OnClick.def | 26
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent#778.def | 2
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_OnCreated.def | 10
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuEdit_OnClick.def | 21
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def | 11
_Main/UI/MacroPlannerWebApp/Views/Calendar_unavailable_event_view.vw | 4
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelList.def | 14
_Main/BL/Relations/Relation_ActualDailyProductionData_MacroPlan_MacroPlan_ActualDailyProduction.qbl | 23
_Main/BL/Type_ShippingActualRow/_ROOT_Type_ShippingActualRow.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dsEndDate_OnChanged.def | 16
_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI0.qbl | 94 +
_Main/BL/Type_LibCal_SubscriberEventRow/Method_GetTimeByTimeUnit.qbl | 22
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def | 4
_Main/UI/MacroPlannerWebApp/Views/Machine_stock_data.vw | 119 +
_Main/BL/Type_InterfaceLoginfo/Attribute_Name.qbl | 8
_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl | 107
_Main/BL/Type_ActualDailyProductionReport/Attribute_ProductLine.qbl | 8
_Main/BL/Type_ShippingActualData/StaticMethod_GetRequestBody.qbl | 15
_Main/BL/Type_LocalColumn/Attribute_CustomIndex.qbl | 7
_Main/BL/Relations/Relation_FinishedEngineInventory_InterfaceLoginfo_InterfaceLoginfo_FinishedE.qbl | 23
_Main/BL/Type_InterfaceLoginfo/DefaultValue_Response.qbl | 6
Calendars/BL/Type_LibCal_LeadingParticipation/Method_SetSubscribers.qbl | 2
_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl | 62
_Main/BL/Type_InterfaceLoginfo/Attribute_TotalRow.qbl | 8
_Main/BL/Type_MachineStockData/Attribute_Total.qbl | 7
_Main/BL/Type_ShippingActualData/Attribute_DDay.qbl | 8
_Main/BL/Type_MachineStockData/Attribute_FacName.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_CreateEvent#791.def | 7
_Main/BL/Type_LibCal_Subscription/Method_CopyOccurrences#486.qbl | 33
_Main/BL/Type_ActualDailyProductionReport/Attribute_ShiftSequence.qbl | 8
_Main/BL/Type_InterfaceLoginfo/Attribute_ReturnSuccess.qbl | 7
_Main/BL/Type_ActualDailyProductionReport/Attribute_ProductionVolume.qbl | 8
_Main/BL/Relations/Relation_InterfaceLoginfo_InterfaceDataset_InterfaceDataset_InterfaceLoginfo.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter#119.def | 96 +
_Main/BL/Type_ActualDailyProductionReport/Attribute_Shift.qbl | 8
_Main/BL/Type_LibCal_ExplicitTimeInterval/StaticMethod_Delete.qbl | 26
_Main/BL/Dataset_InterfaceDataset/Daemon_ShippingActualInterface.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader#144.def | 69
_Main/BL/Type_InterfaceLoginfo/Attribute_Success.qbl | 7
_Main/BL/Type_InterfaceLoginfo/Attribute_Last.qbl | 8
Calendars/BL/Type_LibCal_LeadingParticipation/Method_AddSubscribers.qbl | 1
_Main/BL/Relations/Relation_MachineStockData_InterfaceLoginfo_InterfaceLoginfo_MachineStockData.qbl | 23
_Main/BL/Type_FinishedEngineInventory/StaticMethod_GenerateData.qbl | 50
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_matrixeditorContextMenuDemandComparison#1.def | 10
_Main/BL/Type_FinishedEngineInventory/Attribute_EngineModularPlatform.qbl | 8
_Main/BL/InfoMessages.qbl | 68
_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallToken.qbl | 24
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick#613.def | 18
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_ButtonRibbon_OnClick.def | 16
_Main/BL/Type_FinishedEngineInventory/_ROOT_Type_FinishedEngineInventory.qbl | 10
_Main/BL/Type_InterfaceLoginfo/_ROOT_Type_InterfaceLoginfo.qbl | 9
Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences#486.qbl | 2
_Main/BL/Type_InterfaceDataset/StaticMethod_GetResponseJsonData.qbl | 16
_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listActionBarPageFinishedEngineInventory.def | 10
_Main/BL/Type_FinishedEngineInventory/Attribute_DType.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listContextMenuFinishedEngineInventory.def | 10
_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_GetDefaultName.qbl | 10
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GenerateColumnIndex.qbl | 39
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dsStartDate_OnChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelPeriods.def | 1
_Main/BL/Type_MachineStockData/Attribute_Unit.qbl | 8
_Main/BL/Type_MachineStockData/Attribute_AllTotal.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuMachineStockData_OnClick.def | 16
_Main/BL/Type_MachineStockData/Attribute_DDay.qbl | 8
_Main/BL/Type_ShippingActualData/Attribute_ID.qbl | 8
_Main/BL/Type_ShippingActualColumn/Attribute_StartDate.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listActionBarPageMachineStockData.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_MatrixEditorTable.def | 97 +
_Main/BL/Type_FinishedEngineInventory/Attribute_EngineType.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_PanelTable.def | 14
_Main/BL/Type_FinishedEngineInventory/Attribute_ReceiptPlace.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def | 13
_Main/BL/Type_InterfaceLoginfo/Attribute_RequestBody.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Response_PanelButton_ButtonButton_OnClick.def | 24
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/_ROOT_Component_FormInterfaceLoginfo.def | 17
_Main/BL/Type_MachineStockData/Attribute_LineType.qbl | 8
_Main/UI/MacroPlannerWebApp/Views/OfflinePlanComparisonReport.vw | 116 +
_Main/BL/Type_LibCal_SubscriberEventColumn/Method_GetCellByTimeUnit.qbl | 19
_Main/BL/Type_ShippingActualData/StaticMethod_Synchronize.qbl | 74
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison#634.def | 84
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Gap.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhFinelProduct_OnCreated.def | 16
_Main/BL/Type_InterfaceLoginfo/DefaultValue_Message.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dhStartDate_OnCreated.def | 16
_Main/BL/Type_MachineStockData/Attribute_Fac.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def | 3
_Main/BL/Type_FinishedEngineInventory/StaticMethod_GetRequestBody.qbl | 15
_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/_ROOT_Component_FormFinishedEngineInventory.def | 17
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_ListMachineStockData.def | 42
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_EditEvent.def | 9
_Main/BL/Type_ShippingActualRow/Attribute_Name.qbl | 7
_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillCells.qbl | 30
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_MatrixEditor#988.def | 102 +
_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl | 26
_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeTable.qbl | 34
_Main/BL/Type_MachineStockData/Attribute_Product.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/_ROOT_Component_FormShippingActualData.def | 18
_Main/BL/Type_ShippingActualRow/Attribute_RowNr.qbl | 7
_Main/BL/Type_FinishedEngineInventory/Attribute_DWeek.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDebug.def | 15
_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_PanelButton.def | 25
_Main/BL/Type_ShippingActualData/StaticMethod_Export.qbl | 64
_Main/BL/Type_ActualDailyProductionReport/Attribute_ShiftProductionVolume.qbl | 8
_Main/BL/Relations/Relation_ShippingActualCell_ShippingActualRow_ShippingActualRow_ShippingActu.qbl | 23
_Main/BL/Type_FinishedEngineInventory/Attribute_DDay.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonSearch_OnClick.def | 26
_Main/BL/Type_ShippingActualData/StaticMethod_GenerateData.qbl | 29
_Main/BL/Type_MachineStockData/Attribute_MaterialNo.qbl | 8
_Main/BL/Type_FinishedEngineInventory/StaticMethod_Synchronize.qbl | 33
_Main/BL/Type_LibCal_SubscriberEventRow/Attribute_Name.qbl | 8
_Main/BL/Type_LibCal_ExplicitTimeInterval/_ROOT_Type_LibCal_ExplicitTimeInterval.qbl | 6
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged.def | 21
_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_matrixEditorActionBarPageTable.def | 10
_Main/BL/Relations/Relation_ShippingActualColumn_InterfaceDataset_InterfaceDataset_ShippingActu.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ckbIsAllDay_OnChanged.def | 17
_Main/BL/Type_LibCal_SubscriberEventColumn/Attribute_TimeUnit.qbl | 8
_Main/BL/Type_LocalCell_ProductionComparison/DefaultValue_BaseVersionValue.qbl | 6
_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw | 175 ++
_Main/BL/Type_ActualDailyProductionReport/_ROOT_Type_ActualDailyProductionData.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listContextMenuInterfaceLoginfo.def | 10
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_MatrixEditorTable.def | 28
_Main/BL/Type_LocalColumn/Function_CalcDate.qbl | 2
_Main/BL/Type_InterfaceLoginfo/Attribute_InterfaceDateTime.qbl | 8
_Main/BL/Relations/Relation_ShippingActualRow_InterfaceDataset_InterfaceDataset_ShippingActualR.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuFinishedEngineInventory_OnCli.def | 16
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_listContextMenu967.def | 25
Calendars/BL/Type_LibCal_Participation/Attribute_EndTime.qbl | 1
_Main/UI/MacroPlannerWebApp/Views/Interface_loginfo_view.vw | 146 +
_Main/BL/Type_ActualDailyProductionReport/Attribute_Date.qbl | 8
_Main/BL/Type_LocalCell_ProductionComparison/DefaultValue_CompareVersionValue.qbl | 6
_Main/BL/Type_ShippingActualColumn/_ROOT_Type_ShippingActualColumn.qbl | 10
_Main/BL/Type_MachineStockData/Attribute_Date.qbl | 7
_Main/BL/Type_MachineStockData/StaticMethod_Synchronize.qbl | 33
_Main/BL/Type_ShippingActualData/Attribute_Fac.qbl | 8
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def | 14
Calendars/BL/Type_LibCal_LeadingParticipation/Method_Update.qbl | 2
Calendars/BL/Type_LibCal_Event/Method_UpdateRecurrencePattern.qbl | 2
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowAllDay.def | 63
_Main/BL/Type_MachineStockData/_ROOT_Type_MachineStockData.qbl | 10
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def | 4
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def | 1
_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl | 25
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhComparisonData_OnDataChanged.def | 16
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_ListList.def | 23
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl | 31
_Main/BL/Type_FinishedEngineInventory/Attribute_FourCode.qbl | 8
_Main/BL/Type_LocalColumn/Attribute_CustomDate.qbl | 7
_Main/BL/Type_ActualDailyProductionReport/StaticMethod_GetRequestBody.qbl | 15
_Main/BL/Type_ShippingActualData/Attribute_Quantity.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslMQBMLB_OnCreated.def | 20
_Main/BL/Type_InterfaceLoginfo/Attribute_FinishTime.qbl | 8
_Main/BL/Relations/Relation_InterfaceLoginfo_ShippingActualData_ShippingActualData_InterfaceLog.qbl | 23
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def | 46
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def | 4
_Main/BL/Type_ShippingActualCell/Attribute_Quantity.qbl | 7
_Main/BL/Type_LocalColumn/DefaultValue_CustomIndex.qbl | 7
_Main/BL/Type_InterfaceLoginfo/Method_UpdateLast.qbl | 15
_Main/UI/MacroPlannerWebApp/Views/Shipping_actual_data_view.vw | 92 +
_Main/BL/Type_LibCal_Event/Attribute_IsMultiple.qbl | 8
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport#1.qbl | 14
_Main/BL/Type_LibCal_SubscriberEventTable/Method_GetColumnByTimeUnit.qbl | 18
_Main/BL/Type_FinishedEngineInventory/Attribute_DMonth.qbl | 7
/dev/null | 22
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listActionBarPageInterfaceLoginfo.def | 10
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl | 22
_Main/BL/Type_InterfaceLoginfo/Attribute_Response.qbl | 8
_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Plan.qbl | 7
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dhEndDate_OnCreated.def | 16
_Main/BL/Type_ShippingActualData/StaticMethod_GetDefalutName.qbl | 10
237 files changed, 4,974 insertions(+), 234 deletions(-)
diff --git a/Calendars/BL/Relations/Relation_LibCal_ExplicitTimeInterval_LeadingETI_LibCal_ExplicitTimeInterval_.qbl b/Calendars/BL/Relations/Relation_LibCal_ExplicitTimeInterval_LeadingETI_LibCal_ExplicitTimeInterval_.qbl
index cbcdcd6..a4b389d 100644
--- a/Calendars/BL/Relations/Relation_LibCal_ExplicitTimeInterval_LeadingETI_LibCal_ExplicitTimeInterval_.qbl
+++ b/Calendars/BL/Relations/Relation_LibCal_ExplicitTimeInterval_LeadingETI_LibCal_ExplicitTimeInterval_.qbl
@@ -12,7 +12,6 @@
Cardinality: '0to1'
ObjectDefinition: LibCal_ExplicitTimeInterval
OwningSide: 'Reference'
- InterfaceProperties { Accessibility: 'Module' }
}
RelationSide.RightSide SubscribingETI
{
@@ -20,6 +19,5 @@
Cardinality: '1toN'
ObjectDefinition: LibCal_ExplicitTimeInterval
OwningSide: 'Reference'
- InterfaceProperties { Accessibility: 'Module' }
}
}
diff --git a/Calendars/BL/Type_LibCal_Event/Method_UpdateRecurrencePattern.qbl b/Calendars/BL/Type_LibCal_Event/Method_UpdateRecurrencePattern.qbl
index d6a1681..b7ff364 100644
--- a/Calendars/BL/Type_LibCal_Event/Method_UpdateRecurrencePattern.qbl
+++ b/Calendars/BL/Type_LibCal_Event/Method_UpdateRecurrencePattern.qbl
@@ -74,5 +74,5 @@
// Directly update the relation from the Participations to the RecurrencePattern.
Transaction::Transaction().Propagate( relation( LibCal_Participation, RecurrencePattern ) );
*]
- InterfaceProperties { Accessibility: 'Module' }
+ InterfaceProperties { Accessibility: 'Extensible' }
}
diff --git a/Calendars/BL/Type_LibCal_LeadingParticipation/Method_AddSubscribers.qbl b/Calendars/BL/Type_LibCal_LeadingParticipation/Method_AddSubscribers.qbl
index f4cb80f..3b07e04 100644
--- a/Calendars/BL/Type_LibCal_LeadingParticipation/Method_AddSubscribers.qbl
+++ b/Calendars/BL/Type_LibCal_LeadingParticipation/Method_AddSubscribers.qbl
@@ -14,5 +14,4 @@
this.AddSubscriber( subscriber, useLeadingPeriod_i );
}
*]
- InterfaceProperties { Accessibility: 'Module' }
}
diff --git a/Calendars/BL/Type_LibCal_LeadingParticipation/Method_SetSubscribers.qbl b/Calendars/BL/Type_LibCal_LeadingParticipation/Method_SetSubscribers.qbl
index 4071c7b..5ca83a8 100644
--- a/Calendars/BL/Type_LibCal_LeadingParticipation/Method_SetSubscribers.qbl
+++ b/Calendars/BL/Type_LibCal_LeadingParticipation/Method_SetSubscribers.qbl
@@ -11,5 +11,5 @@
this.SetSubscribers( subscribers_i, useLeadingPeriod );
*]
- InterfaceProperties { Accessibility: 'Module' }
+ InterfaceProperties { Accessibility: 'Extensible' }
}
diff --git a/Calendars/BL/Type_LibCal_LeadingParticipation/Method_Update.qbl b/Calendars/BL/Type_LibCal_LeadingParticipation/Method_Update.qbl
index ebecee3..4b6137d 100644
--- a/Calendars/BL/Type_LibCal_LeadingParticipation/Method_Update.qbl
+++ b/Calendars/BL/Type_LibCal_LeadingParticipation/Method_Update.qbl
@@ -36,5 +36,5 @@
subscription.EndDate( endDate_i );
}
*]
- InterfaceProperties { Accessibility: 'Module' }
+ InterfaceProperties { Accessibility: 'Extensible' }
}
diff --git a/Calendars/BL/Type_LibCal_LeadingParticipation/Method_UpdateCalendarWhenChanged.qbl b/Calendars/BL/Type_LibCal_LeadingParticipation/Method_UpdateCalendarWhenChanged.qbl
index ec75609..d62346e 100644
--- a/Calendars/BL/Type_LibCal_LeadingParticipation/Method_UpdateCalendarWhenChanged.qbl
+++ b/Calendars/BL/Type_LibCal_LeadingParticipation/Method_UpdateCalendarWhenChanged.qbl
@@ -9,5 +9,5 @@
onlyWhenChanged := true;
this.UpdateCalendar( onlyWhenChanged );
*]
- InterfaceProperties { Accessibility: 'Module' }
+ InterfaceProperties { Accessibility: 'Extensible' }
}
diff --git a/Calendars/BL/Type_LibCal_Participation/Attribute_EndTime.qbl b/Calendars/BL/Type_LibCal_Participation/Attribute_EndTime.qbl
index 845cbc7..1b2a5c7 100644
--- a/Calendars/BL/Type_LibCal_Participation/Attribute_EndTime.qbl
+++ b/Calendars/BL/Type_LibCal_Participation/Attribute_EndTime.qbl
@@ -5,5 +5,4 @@
#keys: '3[131094.0.1190114209][131094.0.1190114208][131094.0.1190114210]'
Description: 'EndTime of the event. Is only relevant for non-recurring events.'
ValueType: DateTime
- InterfaceProperties { Accessibility: 'Module' }
}
diff --git a/Calendars/BL/Type_LibCal_Participation/Method_CreateTimeInterval.qbl b/Calendars/BL/Type_LibCal_Participation/Method_CreateTimeInterval.qbl
index 17e54df..462efa6 100644
--- a/Calendars/BL/Type_LibCal_Participation/Method_CreateTimeInterval.qbl
+++ b/Calendars/BL/Type_LibCal_Participation/Method_CreateTimeInterval.qbl
@@ -19,5 +19,4 @@
return timeInterval;
*]
- InterfaceProperties { Accessibility: 'Module' }
}
diff --git a/Calendars/BL/Type_LibCal_Participation/Method_UpdateRecurrencePeriod.qbl b/Calendars/BL/Type_LibCal_Participation/Method_UpdateRecurrencePeriod.qbl
index 603dca4..ce015ce 100644
--- a/Calendars/BL/Type_LibCal_Participation/Method_UpdateRecurrencePeriod.qbl
+++ b/Calendars/BL/Type_LibCal_Participation/Method_UpdateRecurrencePeriod.qbl
@@ -50,5 +50,5 @@
// this.CalcIsRecurring(); is not good enough here, explicit propagation is required.
Transaction::Transaction().Propagate( attribute( LibCal_Participation, IsRecurring ) );
*]
- InterfaceProperties { Accessibility: 'Module' }
+ InterfaceProperties { Accessibility: 'Extensible' }
}
diff --git "a/Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences\043486.qbl" "b/Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences\043486.qbl"
index 12a9e5e..909a395 100644
--- "a/Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences\043486.qbl"
+++ "b/Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences\043486.qbl"
@@ -31,5 +31,5 @@
}
}
*]
- InterfaceProperties { Accessibility: 'Module' }
+ InterfaceProperties { Accessibility: 'Extensible' }
}
diff --git a/Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences.qbl b/Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences.qbl
index 5a597dd..baaaa38 100644
--- a/Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences.qbl
+++ b/Calendars/BL/Type_LibCal_Subscription/Method_CopyOccurrences.qbl
@@ -28,5 +28,5 @@
}
}
*]
- InterfaceProperties { Accessibility: 'Module' }
+ InterfaceProperties { Accessibility: 'Extensible' }
}
diff --git a/_Main/BL/Dataset_InterfaceDataset/Daemon_MachineStockInterface.qbl b/_Main/BL/Dataset_InterfaceDataset/Daemon_MachineStockInterface.qbl
new file mode 100644
index 0000000..066ff70
--- /dev/null
+++ b/_Main/BL/Dataset_InterfaceDataset/Daemon_MachineStockInterface.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Daemon MachineStockInterface
+{
+ Frequency: P1DT0H0M0S
+ Priority: 'Default'
+ StartDate: 2024-07-19
+ StartTimeOfDay: P0DT9H0M0S
+ Text:
+ [*
+ options := DatasetFindOptions::Construct( 'InterfaceDataset' ).IncludeOffline( true ); //to load we must search offline datasets.
+ mdskey := DatasetController::FindUnique( options );
+
+ MDSInterfaceDataset::Root( mdskey ) -> MachineStockData::Synchronize( "Administrator" );
+ *]
+}
diff --git a/_Main/BL/Dataset_InterfaceDataset/Daemon_ShippingActualInterface.qbl b/_Main/BL/Dataset_InterfaceDataset/Daemon_ShippingActualInterface.qbl
new file mode 100644
index 0000000..d62eedf
--- /dev/null
+++ b/_Main/BL/Dataset_InterfaceDataset/Daemon_ShippingActualInterface.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+Daemon ShippingActualInterface
+{
+ Frequency: P1DT0H0M0S
+ Priority: 'Default'
+ StartDate: 2024-07-19
+ StartTimeOfDay: P0DT23H30M0S
+ Text:
+ [*
+ options := DatasetFindOptions::Construct( 'InterfaceDataset' ).IncludeOffline( true ); //to load we must search offline datasets.
+ mdskey := DatasetController::FindUnique( options );
+
+ MDSInterfaceDataset::Root( mdskey ) -> ShippingActualData::Synchronize( "Administrator" );
+ *]
+}
diff --git a/_Main/BL/InfoMessages.qbl b/_Main/BL/InfoMessages.qbl
index 2e0fc10..9e8ee99 100644
--- a/_Main/BL/InfoMessages.qbl
+++ b/_Main/BL/InfoMessages.qbl
@@ -86,6 +86,66 @@
{
DefaultText: 'There are duplicate three digit codes present'
}
+ InfoMessage InterfaceDataset_ActualDailyProductionData_Name
+ {
+ DefaultText: 'Actual daily production data'
+ }
+ InfoMessage InterfaceDataset_ActualDailyProductionData_Secret
+ {
+ DefaultText: '527086842571391021'
+ }
+ InfoMessage InterfaceDataset_ActualDailyProductionData_URL
+ {
+ DefaultText: '/data-service/api/service/post-data/V1.101/e014325a6be14dab818303ef90c2968a'
+ }
+ InfoMessage InterfaceDataset_Address
+ {
+ DefaultText: 'ds-yunrong-gw.dmp.vwfawedl.mobi'
+ }
+ InfoMessage InterfaceDataset_ContentType
+ {
+ DefaultText: 'application/json'
+ }
+ InfoMessage InterfaceDataset_FinishedEngineInventory_Name
+ {
+ DefaultText: 'Finished engine inventory'
+ }
+ InfoMessage InterfaceDataset_FinishedEngineInventory_Secret
+ {
+ DefaultText: '527100497300029474'
+ }
+ InfoMessage InterfaceDataset_FinishedEngineInventory_URL
+ {
+ DefaultText: '/data-service/api/service/post-data/V1.101/f084aa52d19c48d090416936a94f1dab'
+ }
+ InfoMessage InterfaceDataset_MachineStockData_Name
+ {
+ DefaultText: 'Machine stock data'
+ }
+ InfoMessage InterfaceDataset_MachineStockData_Secret
+ {
+ DefaultText: '527077575449641087'
+ }
+ InfoMessage InterfaceDataset_MachineStockData_URL
+ {
+ DefaultText: '/data-service/api/service/post-data/V1.101/2f6c42fe895c45bdb2e8e1ca8489b5a2'
+ }
+ InfoMessage InterfaceDataset_ShippingActualData_Name
+ {
+ DefaultText: 'Shipping actual data'
+ }
+ InfoMessage InterfaceDataset_ShippingActualData_Secret
+ {
+ DefaultText: '527088907855069215'
+ }
+ InfoMessage InterfaceDataset_ShippingActualData_URL
+ {
+ DefaultText: '/data-service/api/service/post-data/V1.101/f4f94c47c1a2440898b5e1e2c0c5cbc8'
+ }
+ InfoMessage InterfaceDataset_Token_URL
+ {
+ DefaultText: '/authorization/token/api/open/token/generateToken?grant_type=client_credentials&client_id=19KxoxPF25cy96K8TL&client_secret='
+ }
InfoMessage MP_ChangeLossSetting_CheckNull
{
DefaultText: 'The required field is blank.'
@@ -142,6 +202,14 @@
{
DefaultText: 'The Event type of binding Event exists.'
}
+ InfoMessage MP_LibCal_Event_ValidDate
+ {
+ DefaultText: 'This date is not within the planned cycle!'
+ }
+ InfoMessage MP_LibCal_Event_ValidDatePeriod
+ {
+ DefaultText: 'The start date must be less than the end date!'
+ }
InfoMessage MP_Routing_IllegalDateRange
{
DefaultText: 'The start date cannot be longer than the end date.'
diff --git a/_Main/BL/Relations/Relation_ActualDailyProductionData_MacroPlan_MacroPlan_ActualDailyProduction.qbl b/_Main/BL/Relations/Relation_ActualDailyProductionData_MacroPlan_MacroPlan_ActualDailyProduction.qbl
new file mode 100644
index 0000000..02387dc
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ActualDailyProductionData_MacroPlan_MacroPlan_ActualDailyProduction.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ActualDailyProductionData_MacroPlan_MacroPlan_ActualDailyProductionData
+{
+ #keys: '1[412672.1.61744699]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide MacroPlan
+ {
+ #keys: '3[412672.1.61744701][412672.1.61744700][412672.1.61744702]'
+ Cardinality: '0to1'
+ ObjectDefinition: ActualDailyProductionData
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide ActualDailyProductionData
+ {
+ #keys: '3[412672.1.61744704][412672.1.61744703][412672.1.61744705]'
+ Cardinality: '1toN'
+ ObjectDefinition: MacroPlan
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_FinishedEngineInventory_InterfaceLoginfo_InterfaceLoginfo_FinishedE.qbl b/_Main/BL/Relations/Relation_FinishedEngineInventory_InterfaceLoginfo_InterfaceLoginfo_FinishedE.qbl
new file mode 100644
index 0000000..4a1f713
--- /dev/null
+++ b/_Main/BL/Relations/Relation_FinishedEngineInventory_InterfaceLoginfo_InterfaceLoginfo_FinishedE.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation FinishedEngineInventory_InterfaceLoginfo_InterfaceLoginfo_FinishedEngineInventory
+{
+ #keys: '1[415136.0.932110028]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InterfaceLoginfo
+ {
+ #keys: '3[415136.0.932110030][415136.0.932110029][415136.0.932110031]'
+ Cardinality: '0to1'
+ ObjectDefinition: FinishedEngineInventory
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide FinishedEngineInventory
+ {
+ #keys: '3[415136.0.932110033][415136.0.932110032][415136.0.932110034]'
+ Cardinality: '1toN'
+ ObjectDefinition: InterfaceLoginfo
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InterfaceLoginfo_InterfaceDataset_InterfaceDataset_InterfaceLoginfo.qbl b/_Main/BL/Relations/Relation_InterfaceLoginfo_InterfaceDataset_InterfaceDataset_InterfaceLoginfo.qbl
new file mode 100644
index 0000000..c164a29
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InterfaceLoginfo_InterfaceDataset_InterfaceDataset_InterfaceLoginfo.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InterfaceLoginfo_InterfaceDataset_InterfaceDataset_InterfaceLoginfo
+{
+ #keys: '1[415136.0.917964687]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InterfaceDataset
+ {
+ #keys: '3[415136.0.917964689][415136.0.917964688][415136.0.917964690]'
+ Cardinality: '0to1'
+ ObjectDefinition: InterfaceLoginfo
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide InterfaceLoginfo
+ {
+ #keys: '3[415136.0.917964692][415136.0.917964691][415136.0.917964693]'
+ Cardinality: '1toN'
+ ObjectDefinition: InterfaceDataset
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_InterfaceLoginfo_ShippingActualData_ShippingActualData_InterfaceLog.qbl b/_Main/BL/Relations/Relation_InterfaceLoginfo_ShippingActualData_ShippingActualData_InterfaceLog.qbl
new file mode 100644
index 0000000..8de99d2
--- /dev/null
+++ b/_Main/BL/Relations/Relation_InterfaceLoginfo_ShippingActualData_ShippingActualData_InterfaceLog.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation InterfaceLoginfo_ShippingActualData_ShippingActualData_InterfaceLoginfo
+{
+ #keys: '1[415136.0.917964760]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide ShippingActualData
+ {
+ #keys: '3[415136.0.917964762][415136.0.917964761][415136.0.917964763]'
+ Cardinality: '1toN'
+ ObjectDefinition: InterfaceLoginfo
+ OwningSide: 'Owned'
+ }
+ RelationSide.RightSide InterfaceLoginfo
+ {
+ #keys: '3[415136.0.917964765][415136.0.917964764][415136.0.917964766]'
+ Cardinality: '0to1'
+ ObjectDefinition: ShippingActualData
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_MachineStockData_InterfaceLoginfo_InterfaceLoginfo_MachineStockData.qbl b/_Main/BL/Relations/Relation_MachineStockData_InterfaceLoginfo_InterfaceLoginfo_MachineStockData.qbl
new file mode 100644
index 0000000..178bddd
--- /dev/null
+++ b/_Main/BL/Relations/Relation_MachineStockData_InterfaceLoginfo_InterfaceLoginfo_MachineStockData.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation MachineStockData_InterfaceLoginfo_InterfaceLoginfo_MachineStockData
+{
+ #keys: '1[415136.0.931886865]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InterfaceLoginfo
+ {
+ #keys: '3[415136.0.931886867][415136.0.931886866][415136.0.931886868]'
+ Cardinality: '0to1'
+ ObjectDefinition: MachineStockData
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide MachineStockData
+ {
+ #keys: '3[415136.0.931886870][415136.0.931886869][415136.0.931886871]'
+ Cardinality: '1toN'
+ ObjectDefinition: InterfaceLoginfo
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_ShippingActualCell_ShippingActualColumn_ShippingActualColumn_Shippi.qbl b/_Main/BL/Relations/Relation_ShippingActualCell_ShippingActualColumn_ShippingActualColumn_Shippi.qbl
new file mode 100644
index 0000000..66cccdd
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ShippingActualCell_ShippingActualColumn_ShippingActualColumn_Shippi.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ShippingActualCell_ShippingActualColumn_ShippingActualColumn_ShippingActualCell
+{
+ #keys: '1[415136.0.904040097]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide ShippingActualColumn
+ {
+ #keys: '3[415136.0.904040099][415136.0.904040098][415136.0.904040100]'
+ Cardinality: '0to1'
+ ObjectDefinition: ShippingActualCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide ShippingActualCell
+ {
+ #keys: '3[415136.0.904040102][415136.0.904040101][415136.0.904040103]'
+ Cardinality: '1toN'
+ ObjectDefinition: ShippingActualColumn
+ OwningSide: 'Reference'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_ShippingActualCell_ShippingActualRow_ShippingActualRow_ShippingActu.qbl b/_Main/BL/Relations/Relation_ShippingActualCell_ShippingActualRow_ShippingActualRow_ShippingActu.qbl
new file mode 100644
index 0000000..a39c361
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ShippingActualCell_ShippingActualRow_ShippingActualRow_ShippingActu.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ShippingActualCell_ShippingActualRow_ShippingActualRow_ShippingActualCell
+{
+ #keys: '1[415136.0.904040084]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide ShippingActualRow
+ {
+ #keys: '3[415136.0.904040086][415136.0.904040085][415136.0.904040087]'
+ Cardinality: '0to1'
+ ObjectDefinition: ShippingActualCell
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide ShippingActualCell
+ {
+ #keys: '3[415136.0.904040089][415136.0.904040088][415136.0.904040090]'
+ Cardinality: '1toN'
+ ObjectDefinition: ShippingActualRow
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_ShippingActualColumn_InterfaceDataset_InterfaceDataset_ShippingActu.qbl b/_Main/BL/Relations/Relation_ShippingActualColumn_InterfaceDataset_InterfaceDataset_ShippingActu.qbl
new file mode 100644
index 0000000..775e3fb
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ShippingActualColumn_InterfaceDataset_InterfaceDataset_ShippingActu.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ShippingActualColumn_InterfaceDataset_InterfaceDataset_ShippingActualColumn
+{
+ #keys: '1[415136.0.904040009]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InterfaceDataset
+ {
+ #keys: '3[415136.0.904040011][415136.0.904040010][415136.0.904040012]'
+ Cardinality: '0to1'
+ ObjectDefinition: ShippingActualColumn
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide ShippingActualColumn
+ {
+ #keys: '3[415136.0.904040014][415136.0.904040013][415136.0.904040015]'
+ Cardinality: '1toN'
+ ObjectDefinition: InterfaceDataset
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Relations/Relation_ShippingActualRow_InterfaceDataset_InterfaceDataset_ShippingActualR.qbl b/_Main/BL/Relations/Relation_ShippingActualRow_InterfaceDataset_InterfaceDataset_ShippingActualR.qbl
new file mode 100644
index 0000000..5bef969
--- /dev/null
+++ b/_Main/BL/Relations/Relation_ShippingActualRow_InterfaceDataset_InterfaceDataset_ShippingActualR.qbl
@@ -0,0 +1,23 @@
+Quintiq file version 2.0
+#parent: #root
+Relation ShippingActualRow_InterfaceDataset_InterfaceDataset_ShippingActualRow
+{
+ #keys: '1[415136.0.904040037]'
+ DefaultRelationStrategy
+ {
+ }
+ RelationSide.LeftSide InterfaceDataset
+ {
+ #keys: '3[415136.0.904040039][415136.0.904040038][415136.0.904040040]'
+ Cardinality: '0to1'
+ ObjectDefinition: ShippingActualRow
+ OwningSide: 'Reference'
+ }
+ RelationSide.RightSide ShippingActualRow
+ {
+ #keys: '3[415136.0.904040042][415136.0.904040041][415136.0.904040043]'
+ Cardinality: '1toN'
+ ObjectDefinition: InterfaceDataset
+ OwningSide: 'Owned'
+ }
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/Attribute_Date.qbl b/_Main/BL/Type_ActualDailyProductionReport/Attribute_Date.qbl
new file mode 100644
index 0000000..10b9ec4
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/Attribute_Date.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Date
+{
+ #keys: '3[412672.1.61744627][412672.1.61744626][412672.1.61744628]'
+ Description: '鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/Attribute_Product.qbl b/_Main/BL/Type_ActualDailyProductionReport/Attribute_Product.qbl
new file mode 100644
index 0000000..0ce86d2
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/Attribute_Product.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Product
+{
+ #keys: '3[412672.1.61744620][412672.1.61744619][412672.1.61744621]'
+ Description: '鐗╂枡鍙�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/Attribute_ProductLine.qbl b/_Main/BL/Type_ActualDailyProductionReport/Attribute_ProductLine.qbl
new file mode 100644
index 0000000..9424897
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/Attribute_ProductLine.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductLine
+{
+ #keys: '3[412672.1.61744610][412672.1.61744609][412672.1.61744611]'
+ Description: '浜х嚎'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/Attribute_ProductionVolume.qbl b/_Main/BL/Type_ActualDailyProductionReport/Attribute_ProductionVolume.qbl
new file mode 100644
index 0000000..9c9a7fa
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/Attribute_ProductionVolume.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ProductionVolume
+{
+ #keys: '3[412672.1.61744637][412672.1.61744636][412672.1.61744638]'
+ Description: '瀵瑰簲鏃ユ湡鐨勫疄闄呯敓浜ф暟閲�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/Attribute_Shift.qbl b/_Main/BL/Type_ActualDailyProductionReport/Attribute_Shift.qbl
new file mode 100644
index 0000000..84de969
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/Attribute_Shift.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Shift
+{
+ #keys: '3[412672.1.61744647][412672.1.61744646][412672.1.61744648]'
+ Description: '瀵瑰簲鏃ユ湡鐨勫疄闄呯敓浜х彮娆�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/Attribute_ShiftProductionVolume.qbl b/_Main/BL/Type_ActualDailyProductionReport/Attribute_ShiftProductionVolume.qbl
new file mode 100644
index 0000000..f4cffb9
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/Attribute_ShiftProductionVolume.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftProductionVolume
+{
+ #keys: '3[412672.1.61744657][412672.1.61744656][412672.1.61744658]'
+ Description: '瀵瑰簲鐝鐨勫疄闄呯敓浜ф暟閲�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/Attribute_ShiftSequence.qbl b/_Main/BL/Type_ActualDailyProductionReport/Attribute_ShiftSequence.qbl
new file mode 100644
index 0000000..77091ca
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/Attribute_ShiftSequence.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ShiftSequence
+{
+ #keys: '3[412672.1.61744667][412672.1.61744666][412672.1.61744668]'
+ Description: '鐝椤哄簭'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_GetRequestBody.qbl b/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_GetRequestBody.qbl
new file mode 100644
index 0000000..c717647
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_GetRequestBody.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetRequestBody (
+ Date date
+) as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-19-2024 (created)
+ json := JSON::Object()
+ .Add( "inParam", JSON::Object().Add( "productiondate", date.Format( "Y-M2-D2" ) ) ).Build();
+ requestbody := json.AsString();
+ return requestbody
+ *]
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl b/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl
new file mode 100644
index 0000000..9b78c60
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/StaticMethod_Synchronize.qbl
@@ -0,0 +1,31 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Synchronize (
+ MacroPlan owner,
+ InterfaceDataset interfaceDataset
+)
+{
+ TextBody:
+ [*
+ // rislai Jul-23-2024 (created)
+ date := Date::ActualDate();
+ loginfo := interfaceDataset.InterfaceLoginfo( relnew, ExecuteUser := QuintiqUser::CurrentUser().ShortName()
+ , Name := Translations::InterfaceDataset_ActualDailyProductionData_Name()
+ , InterfaceDateTime := DateTime::ActualTime()
+ , Message := '鐢熶骇瀹為檯鏁版嵁'
+ , RequestBody := ActualDailyProductionData::GetRequestBody( date ) );
+
+ data := InterfaceLoginfo::CallInterface( interfaceDataset,loginfo );
+ if( not isnull( data ) ){
+ cnv1 := StringToDateTime::StandardConverter();
+ cnv1.SetCustomConversion();
+ cnv1.CustomFormatString( 'yyyy-MM-dd HH:mm:ss' );
+
+ cnv2 := StringToDate::StandardConverter();
+ cnv2.SetCustomConversion();
+ cnv2.CustomFormatString( 'yyyy-MM-dd' );
+
+ info( data.AsString() );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ActualDailyProductionReport/_ROOT_Type_ActualDailyProductionData.qbl b/_Main/BL/Type_ActualDailyProductionReport/_ROOT_Type_ActualDailyProductionData.qbl
new file mode 100644
index 0000000..8cb3806
--- /dev/null
+++ b/_Main/BL/Type_ActualDailyProductionReport/_ROOT_Type_ActualDailyProductionData.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ActualDailyProductionData
+{
+ #keys: '5[412672.1.61744606][412672.1.61744604][0.0.0][412672.1.61744605][412672.1.61744607]'
+ BaseType: Object
+ Description: 'Actual daily production report'
+ StructuredName: 'ActualDailyProductionDatas'
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_Amount.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_Amount.qbl
new file mode 100644
index 0000000..f702624
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_Amount.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Amount
+{
+ #keys: '3[415136.0.931887050][415136.0.931887049][415136.0.931887051]'
+ Description: '閲戦'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_BIPlace.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_BIPlace.qbl
new file mode 100644
index 0000000..d86e9fa
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_BIPlace.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BIPlace
+{
+ #keys: '3[415136.0.931887027][415136.0.931887026][415136.0.931887028]'
+ Description: '缁熻鍒嗘瀽鐨勫簱瀛樺湴鐐�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_Brand.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_Brand.qbl
new file mode 100644
index 0000000..6c02621
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_Brand.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Brand
+{
+ #keys: '3[415136.0.932110085][415136.0.932110084][415136.0.932110086]'
+ Description: '鍝佺墝'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_DDay.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_DDay.qbl
new file mode 100644
index 0000000..a778cc4
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_DDay.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DDay
+{
+ #keys: '3[415136.0.931887060][415136.0.931887059][415136.0.931887061]'
+ Description: '鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_DMonth.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_DMonth.qbl
new file mode 100644
index 0000000..bbe7e1b
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_DMonth.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DMonth
+{
+ #keys: '3[415136.0.932110115][415136.0.932110114][415136.0.932110116]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_DType.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_DType.qbl
new file mode 100644
index 0000000..03dce5c
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_DType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DType
+{
+ #keys: '3[415136.0.932110105][415136.0.932110104][415136.0.932110106]'
+ Description: 'SAP\\WZK\\ZT锛汼AP绯荤粺 闀挎槬澶栨棌搴� 澶ц繛鍦ㄩ��'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_DWeek.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_DWeek.qbl
new file mode 100644
index 0000000..3988a7f
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_DWeek.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DWeek
+{
+ #keys: '3[415136.0.931887068][415136.0.931887067][415136.0.931887069]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_EngineModularPlatform.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_EngineModularPlatform.qbl
new file mode 100644
index 0000000..9911d58
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_EngineModularPlatform.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EngineModularPlatform
+{
+ #keys: '3[415136.0.931887017][415136.0.931887016][415136.0.931887018]'
+ Description: '鍙戝姩鏈烘ā鍧楀寲骞冲彴'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_EngineType.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_EngineType.qbl
new file mode 100644
index 0000000..0c7c09d
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_EngineType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute EngineType
+{
+ #keys: '3[415136.0.932110075][415136.0.932110074][415136.0.932110076]'
+ Description: '鍙戝姩鏈虹被鍨嬶紝妯疆銆佺旱缃�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_Fac.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_Fac.qbl
new file mode 100644
index 0000000..2bb8850
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_Fac.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Fac
+{
+ #keys: '3[415136.0.931887064][415136.0.931887063][415136.0.931887065]'
+ Description: '宸ュ巶code'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_FourCode.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_FourCode.qbl
new file mode 100644
index 0000000..50524f4
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_FourCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FourCode
+{
+ #keys: '3[415136.0.932110043][415136.0.932110042][415136.0.932110044]'
+ Description: '鍥涗綅鐮�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_FullName.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_FullName.qbl
new file mode 100644
index 0000000..cc62e9b
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_FullName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FullName
+{
+ #keys: '3[415136.0.932110063][415136.0.932110062][415136.0.932110064]'
+ Description: '瀹屾暣鍨嬪彿鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_Price.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_Price.qbl
new file mode 100644
index 0000000..99767d8
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_Price.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Price
+{
+ #keys: '3[415136.0.931887037][415136.0.931887036][415136.0.931887038]'
+ Description: '鍗曚环'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_ReceiptPlace.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_ReceiptPlace.qbl
new file mode 100644
index 0000000..9f56ef6
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_ReceiptPlace.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReceiptPlace
+{
+ #keys: '3[415136.0.931886999][415136.0.931886998][415136.0.931887000]'
+ Description: '鏀惰揣鍦扮偣'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_SpellName.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_SpellName.qbl
new file mode 100644
index 0000000..2add113
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_SpellName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute SpellName
+{
+ #keys: '3[415136.0.931887007][415136.0.931887006][415136.0.931887008]'
+ Description: '绠�鍐欏瀷鍙峰悕绉�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_Total.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_Total.qbl
new file mode 100644
index 0000000..adceff1
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_Total.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Total
+{
+ #keys: '3[415136.0.932110095][415136.0.932110094][415136.0.932110096]'
+ Description: '搴撳瓨閲�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/Attribute_VehicleType.qbl b/_Main/BL/Type_FinishedEngineInventory/Attribute_VehicleType.qbl
new file mode 100644
index 0000000..26d0cec
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/Attribute_VehicleType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute VehicleType
+{
+ #keys: '3[415136.0.932110053][415136.0.932110052][415136.0.932110054]'
+ Description: '鍙戝姩鏈鸿溅鍨�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/DefaultValue_Fac.qbl b/_Main/BL/Type_FinishedEngineInventory/DefaultValue_Fac.qbl
new file mode 100644
index 0000000..386d17b
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/DefaultValue_Fac.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Fac
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/StaticMethod_GenerateData.qbl b/_Main/BL/Type_FinishedEngineInventory/StaticMethod_GenerateData.qbl
new file mode 100644
index 0000000..ca6915a
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/StaticMethod_GenerateData.qbl
@@ -0,0 +1,50 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateData (
+ InterfaceLoginfo owner,
+ StringToDate cnv,
+ JSON item
+) as FinishedEngineInventory
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-17-2024 (created)
+ four_code := guard( item.Get( "four_code").GetString(),"");
+ vehicle_type := guard( item.Get( "vehicle_type").GetString(),"");
+ receipt_place := guard( item.Get( "receipt_place").GetString(),"");
+ full_name := guard( item.Get( "full_name").GetString(),"");
+ spell_name := guard( item.Get( "spell_name").GetString(),"");
+ engine_type := guard( item.Get( "engine_type").GetString(),"");
+ engine_modular_platform := guard( item.Get( "engine_modular_platform").GetString(),"");
+ brand := guard( item.Get( "brand").GetString(),"");
+ bi_place := guard( item.Get( "bi_place").GetString(),"");
+ price := guard( item.Get( "price").GetString(),"");
+ total := guard( item.Get( "total").GetReal(),0);
+ amount := guard( item.Get( "amount").GetReal(),0);
+ dtype := guard( item.Get( "dtype").GetString(),"");
+ fac := guard( item.Get( "fac").GetString(),"");
+ dday := guard( item.Get( "dday").GetString(),"");
+ dweek := guard( item.Get( "dweek").GetString(),"");
+ dmonth := guard( item.Get( "dmonth").GetString(),"");
+
+ msdata := owner.FinishedEngineInventory( relnew, FourCode := four_code
+ , VehicleType := vehicle_type
+ , ReceiptPlace := receipt_place
+ , FullName := full_name
+ , SpellName := spell_name
+ , EngineType := engine_type
+ , EngineModularPlatform := engine_modular_platform
+ , Brand := brand
+ , BIPlace := bi_place
+ , Price := price
+ , Total := total
+ , Amount := amount
+ , DType := dtype
+ , Fac := fac
+ , DDay := cnv.Convert( dday )
+ , DWeek := dweek
+ , DMonth := dmonth );
+
+ return msdata;
+ *]
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/StaticMethod_GetRequestBody.qbl b/_Main/BL/Type_FinishedEngineInventory/StaticMethod_GetRequestBody.qbl
new file mode 100644
index 0000000..d122b01
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/StaticMethod_GetRequestBody.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetRequestBody (
+ Date date
+) as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-19-2024 (created)
+ json := JSON::Object()
+ .Add( "inParam", JSON::Object().Add( "dday", date.Format( "Y-M2-D2" ) ) ).Build();
+ requestbody := json.AsString();
+ return requestbody
+ *]
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/StaticMethod_Synchronize.qbl b/_Main/BL/Type_FinishedEngineInventory/StaticMethod_Synchronize.qbl
new file mode 100644
index 0000000..184e857
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/StaticMethod_Synchronize.qbl
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Synchronize (
+ InterfaceDataset owner,
+ String executor
+)
+{
+ TextBody:
+ [*
+ //// 鐢勫叞楦� Jul-17-2024 (created)
+ date := Date::ActualDate();
+ loginfo := owner.InterfaceLoginfo( relnew, ExecuteUser := executor
+ , Name := Translations::InterfaceDataset_FinishedEngineInventory_Name()
+ , InterfaceDateTime := DateTime::ActualTime()
+ , Message := '搴撳瓨鏁版嵁锛堝彂鍔ㄦ満鎴愬搧搴撳瓨锛�'
+ , RequestBody := FinishedEngineInventory::GetRequestBody( date ) );
+
+ data := InterfaceLoginfo::CallInterface( owner, loginfo );
+ if( not isnull( data ) ){
+
+ cnv2 := StringToDate::StandardConverter();
+ cnv2.SetCustomConversion();
+ cnv2.CustomFormatString( 'yyyy-MM-dd' );
+
+ // sadatalist := construct( ShippingActualDatas );
+ for( seq := 0;seq < data.Size();seq++){
+ item := data.Get(seq);
+ FinishedEngineInventory::GenerateData( loginfo, cnv2, item );
+ // sadatalist.Add( sadata );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_FinishedEngineInventory/_ROOT_Type_FinishedEngineInventory.qbl b/_Main/BL/Type_FinishedEngineInventory/_ROOT_Type_FinishedEngineInventory.qbl
new file mode 100644
index 0000000..8ad556c
--- /dev/null
+++ b/_Main/BL/Type_FinishedEngineInventory/_ROOT_Type_FinishedEngineInventory.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type FinishedEngineInventory
+{
+ #keys: '5[415136.0.932110025][415136.0.932110023][0.0.0][415136.0.932110024][415136.0.932110026]'
+ BaseType: Object
+ Description: '搴撳瓨鏁版嵁锛堝彂鍔ㄦ満鎴愬搧搴撳瓨锛�'
+ StructuredName: 'FinishedEngineInventorys'
+}
diff --git a/_Main/BL/Type_InterfaceDataset/StaticMethod_GetResponseJsonData.qbl b/_Main/BL/Type_InterfaceDataset/StaticMethod_GetResponseJsonData.qbl
new file mode 100644
index 0000000..776c99f
--- /dev/null
+++ b/_Main/BL/Type_InterfaceDataset/StaticMethod_GetResponseJsonData.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetResponseJsonData (
+ String result
+) as owning JSON
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-17-2024 (created)
+ resultJson := JSON::Parse( result );
+ //returnsuccess := resultJson.Get( "success");
+ //msg := resultJson.Get( "msg");
+ data := resultJson.Get( "data");
+ return &data;
+ *]
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_ExecuteUser.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_ExecuteUser.qbl
new file mode 100644
index 0000000..a135da8
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_ExecuteUser.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ExecuteUser
+{
+ #keys: '3[415136.0.917964722][415136.0.917964721][415136.0.917964723]'
+ Description: '鎵ц浜�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_FinishTime.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_FinishTime.qbl
new file mode 100644
index 0000000..5676651
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_FinishTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FinishTime
+{
+ #keys: '3[415136.0.917964701][415136.0.917964700][415136.0.917964702]'
+ Description: '瀹屾垚鏃堕棿'
+ ValueType: DateTime
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_InterfaceDateTime.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_InterfaceDateTime.qbl
new file mode 100644
index 0000000..633bf52
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_InterfaceDateTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute InterfaceDateTime
+{
+ #keys: '3[415136.0.917964734][415136.0.917964733][415136.0.917964735]'
+ Description: '瑙﹀彂鏃堕棿'
+ ValueType: DateTime
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_Last.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_Last.qbl
new file mode 100644
index 0000000..b8c5118
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_Last.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Last
+{
+ #keys: '3[415136.0.917964713][415136.0.917964712][415136.0.917964714]'
+ Description: '鏄惁鏄渶鏂扮殑鎺ュ彛鏁版嵁'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_Message.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_Message.qbl
new file mode 100644
index 0000000..2e4c000
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_Message.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Message
+{
+ #keys: '3[415136.0.917964728][415136.0.917964727][415136.0.917964729]'
+ Description: '鎺ュ彛淇℃伅'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_Name.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_Name.qbl
new file mode 100644
index 0000000..f10995a
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.917964704][415136.0.917964703][415136.0.917964705]'
+ Description: '鎺ュ彛鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_RequestBody.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_RequestBody.qbl
new file mode 100644
index 0000000..c682c01
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_RequestBody.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RequestBody
+{
+ #keys: '3[415136.0.917964731][415136.0.917964730][415136.0.917964732]'
+ Description: '鎺ュ彛鍏ュ弬'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_Response.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_Response.qbl
new file mode 100644
index 0000000..29af7df
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_Response.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Response
+{
+ #keys: '3[415136.0.917964710][415136.0.917964709][415136.0.917964711]'
+ Description: '鎺ュ彛杩斿洖鏁版嵁'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_ReturnMsg.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_ReturnMsg.qbl
new file mode 100644
index 0000000..d388c1d
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_ReturnMsg.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReturnMsg
+{
+ #keys: '3[415136.0.917964719][415136.0.917964718][415136.0.917964720]'
+ Description: '杩斿洖淇℃伅'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_ReturnSuccess.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_ReturnSuccess.qbl
new file mode 100644
index 0000000..35a6def
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_ReturnSuccess.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ReturnSuccess
+{
+ #keys: '3[415136.0.917964737][415136.0.917964736][415136.0.917964738]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_Success.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_Success.qbl
new file mode 100644
index 0000000..e6e0fe2
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_Success.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Success
+{
+ #keys: '3[415136.0.917964716][415136.0.917964715][415136.0.917964717]'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Attribute_TotalRow.qbl b/_Main/BL/Type_InterfaceLoginfo/Attribute_TotalRow.qbl
new file mode 100644
index 0000000..96970b8
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Attribute_TotalRow.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TotalRow
+{
+ #keys: '3[415136.0.917964725][415136.0.917964724][415136.0.917964726]'
+ Description: '鎬昏鏁�'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Message.qbl b/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Message.qbl
new file mode 100644
index 0000000..54c7886
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Message.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Message
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Name.qbl b/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Name.qbl
new file mode 100644
index 0000000..86c3d59
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Name.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Name
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Response.qbl b/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Response.qbl
new file mode 100644
index 0000000..daf5a1a
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/DefaultValue_Response.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: Response
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/Method_UpdateLast.qbl b/_Main/BL/Type_InterfaceLoginfo/Method_UpdateLast.qbl
new file mode 100644
index 0000000..413a98d
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/Method_UpdateLast.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+Method UpdateLast
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-22-2024 (created)
+ if( this.Success() and this.ReturnSuccess() ){
+ traverse( this,InterfaceDataset.InterfaceLoginfo,item,item.Last() = true and item.Name() = this.Name()){
+ item.Last(false);
+ }
+ this.Last(true);
+ }
+ *]
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterface.qbl b/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterface.qbl
new file mode 100644
index 0000000..7d86e89
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterface.qbl
@@ -0,0 +1,86 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CallInterface (
+ InterfaceDataset owner,
+ InterfaceLoginfo loginfo
+) as owning JSON
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-22-2024 (created)
+ address := Translations::InterfaceDataset_Address();
+ httpinterface := HTTPInterface::Create( address,80);
+ try{
+ if( loginfo.Name() = Translations::InterfaceDataset_ShippingActualData_Name() ){//鍙戣繍瀹為檯鏁版嵁
+
+ httpinterface.URL( Translations::InterfaceDataset_ShippingActualData_URL() );
+ httpinterface.MediaType( Translations::InterfaceDataset_ContentType() );
+ httpinterface.PostMethod( true );
+ httpinterface.AddHeader("Authorization",InterfaceLoginfo::CallToken( Translations::InterfaceDataset_ShippingActualData_Secret() ))
+
+ httpinterface.Call( loginfo.RequestBody() );
+
+ result := httpinterface.Result();
+ loginfo.Response( result );
+ loginfo.Success( true );
+ } else if ( loginfo.Name() = Translations::InterfaceDataset_MachineStockData_Name() ){//搴撳瓨鏁版嵁锛堟満鍔犲簱瀛橈級
+ httpinterface.URL( Translations::InterfaceDataset_MachineStockData_URL() );
+ httpinterface.MediaType( Translations::InterfaceDataset_ContentType() );
+ httpinterface.PostMethod( true );
+ httpinterface.AddHeader("Authorization",InterfaceLoginfo::CallToken( Translations::InterfaceDataset_MachineStockData_Secret() ))
+
+ httpinterface.Call( loginfo.RequestBody() );
+
+ result := httpinterface.Result();
+ loginfo.Response( result );
+ loginfo.Success( true );
+ } else if ( loginfo.Name() = Translations::InterfaceDataset_FinishedEngineInventory_Name() ){//搴撳瓨鏁版嵁锛堝彂鍔ㄦ満鎴愬搧搴撳瓨锛�
+ httpinterface.URL( Translations::InterfaceDataset_FinishedEngineInventory_URL() );
+ httpinterface.MediaType( Translations::InterfaceDataset_ContentType() );
+ httpinterface.PostMethod( true );
+ httpinterface.AddHeader("Authorization",InterfaceLoginfo::CallToken( Translations::InterfaceDataset_FinishedEngineInventory_Secret() ))
+
+ httpinterface.Call( loginfo.RequestBody() );
+
+ result := httpinterface.Result();
+ loginfo.Response( result );
+ loginfo.Success( true );
+ } else if( loginfo.Name() = Translations::InterfaceDataset_ActualDailyProductionData_Name() ){//鐢熶骇瀹為檯鏁版嵁
+ httpinterface.URL( Translations::InterfaceDataset_ActualDailyProductionData_URL() );
+ httpinterface.MediaType( Translations::InterfaceDataset_ContentType() );
+ httpinterface.PostMethod( true );
+
+ httpinterface.AddHeader("Authorization",InterfaceLoginfo::CallToken( Translations::InterfaceDataset_ActualDailyProductionData_Secret() ))
+
+ httpinterface.Call( loginfo.RequestBody() );
+
+ result := httpinterface.Result();
+ loginfo.Response( result );
+ loginfo.Success( true );
+ }
+ }onerror{
+ loginfo.ReturnMsg( e.GeneralInformation() );
+ }
+
+ //鍚庣画鍏叡澶勭悊
+ loginfo.FinishTime( DateTime::ActualTime() );
+ data := JSON::Null().Build();
+
+ if( loginfo.Success() ){
+ resultJson := JSON::Parse( loginfo.Response() );
+ code := resultJson.Get( "code" ).AsString();
+ msg := resultJson.Get( "message" ).AsString();
+ data := resultJson.Get( "data" );
+
+ loginfo.ReturnMsg( msg );
+ if( code = "200" ){
+ total := resultJson.Get( "dataSize" ).GetNumber();
+ loginfo.ReturnSuccess( true );
+ loginfo.TotalRow( total );
+ loginfo.UpdateLast();
+ }
+ }
+
+ return &data;
+ *]
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallToken.qbl b/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallToken.qbl
new file mode 100644
index 0000000..a186eae
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallToken.qbl
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CallToken (
+ String secret
+) as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-22-2024 (created)
+ address := Translations::InterfaceDataset_Address();
+ httpinterface := HTTPInterface::Create( address,80);
+
+ httpinterface.URL( Translations::InterfaceDataset_Token_URL() + secret );
+ httpinterface.MediaType( Translations::InterfaceDataset_ContentType() );
+ httpinterface.PostMethod( false );
+ httpinterface.Call();
+ result := httpinterface.Result();
+
+ resultJson := JSON::Parse( result );
+ token := resultJson.Get( "access_token" ).GetString();
+
+ return token;
+ *]
+}
diff --git a/_Main/BL/Type_InterfaceLoginfo/_ROOT_Type_InterfaceLoginfo.qbl b/_Main/BL/Type_InterfaceLoginfo/_ROOT_Type_InterfaceLoginfo.qbl
new file mode 100644
index 0000000..6d85661
--- /dev/null
+++ b/_Main/BL/Type_InterfaceLoginfo/_ROOT_Type_InterfaceLoginfo.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type InterfaceLoginfo
+{
+ #keys: '5[415136.0.917964684][415136.0.917964682][0.0.0][415136.0.917964683][415136.0.917964685]'
+ BaseType: Object
+ StructuredName: 'InterfaceLoginfos'
+}
diff --git a/_Main/BL/Type_LibCal_Event/Attribute_IsMultiple.qbl b/_Main/BL/Type_LibCal_Event/Attribute_IsMultiple.qbl
new file mode 100644
index 0000000..959ef87
--- /dev/null
+++ b/_Main/BL/Type_LibCal_Event/Attribute_IsMultiple.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute IsMultiple
+{
+ #keys: '3[415136.0.918010824][415136.0.918010823][415136.0.918010825]'
+ Description: '鏄惁閫氳繃鎵归噺鐣岄潰鍒涘缓'
+ ValueType: Boolean
+}
diff --git a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl
index 76e31f8..df18866 100644
--- a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl
+++ b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl
@@ -41,55 +41,39 @@
TextBody:
[*
//浜嬩欢鍒涘缓浜屽紑鏂规硶
- //info( startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, recurrenceInterval_i, patternType_i
- // , patternDaily_IsEveryWeekday_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i );
- //鏌ヨ鏄惁宸叉湁鍚屽悕浜嬩欢
+ //鏌ヨ鏄惁宸叉湁鍚屽悕鍦ㄦ壒閲忕晫闈㈠垱寤虹殑浜嬩欢s
event := selectobject( owner_i, Event, event, event.Subject() = subject_i
- and event.StartTimeOfDay() = startTimeOfDay_i
- and event.EndTimeOfDay() = endTimeOfDay_i
- and event.EventType() = eventtype_i );
+ and event.EventType() = eventtype_i );
+
//鍙湁閫氳繃鎵归噺鍒涘缓鐣岄潰涓斿凡鏈夊悓鍚嶄簨浠惰繘鍏ヤ笅闈㈡搷浣�
if( ismultiple and not isnull( event ) ){
- startdate := startDate_i;
- enddate := startDate_i;
- dates := construct( Dates );
- dates.Add( startDate_i );
- //鑾峰彇鏃т簨浠剁殑寮�濮嬩簨浠跺拰缁撴潫浜嬩欢锛屼互鍙婃墍鏈夋椂闂寸偣
- traverse( event, Participation.ExplicitTimeInterval, eti ){
- if( startdate > eti.Start().Date() ){
- startdate := eti.Start().Date();
- }
- if( enddate < eti.Start().Date() ) {
- enddate := eti.Start().Date();
- }
- if( not exists( dates, Elements, e, e = eti.Start().Date() ) ){
- dates.Add( eti.Start().Date() );
+ event.IsMultiple( true );
+ lp := event.LeadingParticipation();
+ timezone := lp.Calendar().GetTimeZone();
+ starttime := startDate_i.DateTime( timezone ).AddAsPeriod( timezone, startTimeOfDay_i );
+ endtime := endDate_i.DateTime( timezone ).AddAsPeriod( timezone, endTimeOfDay_i );
+ etis := selectset( lp, Subscription.ExplicitTimeInterval, eti, true );
+ // startDate := starttime.Date( timezone );
+ // endDate := endtime.Date( timezone ) - ifexpr( endtime = endtime.StartOfDay( timezone ), 1, 0 );
+ leadingETI := selectobject( lp, ExplicitTimeInterval, eti, eti.Start() = starttime and eti.End() = endtime );
+
+ if( isnull( leadingETI ) ){
+ leadingETI := lp.CreateTimeInterval( starttime, endtime, event.Capacity() );
+ }
+ lp.AddSubscribers( subscribers_i, true );
+
+ if( not isnull( leadingETI ) ){
+ traverse( lp, Subscription, subscription, subscribers_i.Find( subscription.Calendar() ) >= 0 ){
+
+ traverse( subscription, ExplicitTimeInterval, eti, etis.Find( eti ) < 0 ){
+ eti.Delete();
+ }
+ subscribingETI := subscription.CreateTimeInterval( starttime, endtime, event.Capacity() );
+ if( not isnull( subscribingETI ) ){
+ subscribingETI.LeadingETI( relset, leadingETI );
+ }
}
}
- //淇敼鏃т簨浠剁殑闂撮殧
- nrOfOccurrences_i := enddate - startdate + 1;
- startDate_i := startdate;
- endDate_i := startdate;
- periodStartDate_i := startdate;
- periodEndDate_i := enddate;
- // info( startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i, recurrenceInterval_i, patternType_i
- // , patternDaily_IsEveryWeekday_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i );
- event := LibCal_Event::CreateUpdateFromUI( owner_i, event.LeadingParticipation(), subject_i, description_i, type_i, capacity_i, category_i, isDefault_i,
- startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i,
- isRecurring_i, recurrenceInterval_i,
- patternType_i, patternDaily_IsEveryWeekday_i, patternWeekly_Weekdays_i,
- patternMonthly_IsDay_i, patternMonthly_Day_i, patternMonthly_WeekOfMonth_i, patternMonthly_DayOfWeek_i,
- patternYearly_IsDate_i, patternYearly_Month_i, patternYearly_Day_i, patternYearly_WeekOfMonth_i, patternYearly_DayOfWeek_i,
- periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i, subscribers_i );
- //鍒犳帀涓嶉渶瑕佺殑鏃堕棿鐐�
- timeIntervals := construct( LibCal_ExplicitTimeIntervals );
- traverse( event, Participation.ExplicitTimeInterval, eti ){
- // info( '------------------------------', eti.Start(), eti.End(), exists( dates, Elements, e, e = eti.Start().Date() ), '------------------', dates.Find( eti.Start().Date() ) );
- if( dates.Find( eti.Start().Date() ) < 0 ){
- timeIntervals.Add( eti );
- }
- }
- LibCal_ExplicitTimeInterval::Delete( timeIntervals, true );
} else {
event := LibCal_Event::CreateUpdateFromUI( owner_i, participation_i, subject_i, description_i, type_i, capacity_i, category_i, isDefault_i,
startDate_i, startTimeOfDay_i, endDate_i, endTimeOfDay_i, isAllDay_i,
@@ -97,8 +81,9 @@
patternType_i, patternDaily_IsEveryWeekday_i, patternWeekly_Weekdays_i,
patternMonthly_IsDay_i, patternMonthly_Day_i, patternMonthly_WeekOfMonth_i, patternMonthly_DayOfWeek_i,
patternYearly_IsDate_i, patternYearly_Month_i, patternYearly_Day_i, patternYearly_WeekOfMonth_i, patternYearly_DayOfWeek_i,
- periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i, subscribers_i );
+ periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i, subscribers_i, ismultiple );
}
+
if( not isnull( event ) ){
event.EventType( relset, eventtype_i );
}
diff --git a/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI0.qbl b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI0.qbl
new file mode 100644
index 0000000..a7e3fbe
--- /dev/null
+++ b/_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI0.qbl
@@ -0,0 +1,94 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod CreateUpdateFromUI (
+ LibCal_Calendar owner_i,
+ LibCal_LeadingParticipation participation_i,
+ String subject_i,
+ String description_i,
+ String type_i,
+ Real capacity_i,
+ LibCal_EventCategory category_i,
+ Boolean isDefault_i,
+ Date startDate_i,
+ Duration startTimeOfDay_i,
+ Date endDate_i,
+ Duration endTimeOfDay_i,
+ Boolean isAllDay_i,
+ Boolean isRecurring_i,
+ Number recurrenceInterval_i,
+ String patternType_i,
+ Boolean patternDaily_IsEveryWeekday_i,
+ String patternWeekly_Weekdays_i,
+ Boolean patternMonthly_IsDay_i,
+ Number patternMonthly_Day_i,
+ String patternMonthly_WeekOfMonth_i,
+ String patternMonthly_DayOfWeek_i,
+ Boolean patternYearly_IsDate_i,
+ Number patternYearly_Month_i,
+ Number patternYearly_Day_i,
+ String patternYearly_WeekOfMonth_i,
+ String patternYearly_DayOfWeek_i,
+ String periodType_i,
+ Date periodStartDate_i,
+ Number nrOfOccurrences_i,
+ Date periodEndDate_i,
+ LibCal_Calendars subscribers_i,
+ Boolean is_multiple
+) as LibCal_Event
+{
+ Description: 'Create and/or update an Event and its LeadingParticipation, based on information from the UI.'
+ TextBody:
+ [*
+ event := null( LibCal_Event );
+ leadPart := participation_i;
+ timezone := owner_i.GetTimeZone();
+
+ if( isnull( leadPart ) )
+ {
+ // Create a new Event. This also creates a new LeadingParticipation.
+ event := LibCal_Event::Create( owner_i, "", Date::Today( timezone ), 1 );
+ leadPart := event.LeadingParticipation();
+ }
+ else
+ {
+ // Get the event of the participation.
+ event := leadPart.Event();
+ }
+
+ if( is_multiple ){
+ event.IsMultiple( is_multiple );
+ }
+
+ // Update the event...
+ duration := endDate_i.Add( timezone, endTimeOfDay_i ) - startDate_i.Add( timezone, startTimeOfDay_i );
+ isFromUI := true;
+ event.Update( subject_i, description_i, type_i, capacity_i, isDefault_i, startTimeOfDay_i, endTimeOfDay_i, duration, isAllDay_i, isFromUI );
+
+ // Changing the category is a different kind of change, with no impact on the event itself.
+ event.EventCategory( relset, category_i );
+
+ // ...and its recurrence pattern.
+ event.UpdateRecurrencePattern( isRecurring_i, patternType_i, recurrenceInterval_i,
+ patternDaily_IsEveryWeekday_i,
+ patternWeekly_Weekdays_i,
+ patternMonthly_IsDay_i, patternMonthly_Day_i, patternMonthly_WeekOfMonth_i, patternMonthly_DayOfWeek_i,
+ patternYearly_IsDate_i, patternYearly_Month_i, patternYearly_Day_i, patternYearly_WeekOfMonth_i, patternYearly_DayOfWeek_i );
+
+ // Update the participation...
+ leadPart.Update( startDate_i, endDate_i );
+
+ // ...and its recurrence period.
+ leadPart.UpdateRecurrencePeriod( isRecurring_i, periodType_i, periodStartDate_i, nrOfOccurrences_i, periodEndDate_i );
+
+ // Effectuate the changes.
+ leadPart.UpdateCalendarWhenChanged();
+
+ // Set the subscribers. Must be done *after* UpdateCalendar.
+ leadPart.SetSubscribers( subscribers_i );
+
+ // Call a post-processing method that can be extended to implement additional logic.
+ event.OnCreateUpdateFromUI();
+
+ return event;
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl b/_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl
new file mode 100644
index 0000000..5b0cd8e
--- /dev/null
+++ b/_Main/BL/Type_LibCal_Event/StaticMethod_ValidDate.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod ValidDate (
+ output String feedback_o,
+ MacroPlan owner,
+ DateTime startdate,
+ DateTime endtime
+) declarative remote as Boolean
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-26-2024 (created)
+ feedback_o := '';
+ if( startdate > endtime ){
+ feedback_o := Translations::MP_LibCal_Event_ValidDatePeriod();
+ }
+
+ if( not exists( owner, Period_MP, period, not period.IsHistorical()
+ and period.TimeUnit() = Translations::MP_GlobalParameters_Day()
+ and period.StartDate() = startdate.Date()
+ and ( period.EndDate() = endtime.Date() or period.StartDate() = endtime.Date() ) ) ){
+ feedback_o := Translations::MP_LibCal_Event_ValidDate();
+ }
+ return feedback_o = '';
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_ExplicitTimeInterval/StaticMethod_Delete.qbl b/_Main/BL/Type_LibCal_ExplicitTimeInterval/StaticMethod_Delete.qbl
new file mode 100644
index 0000000..b90eafb
--- /dev/null
+++ b/_Main/BL/Type_LibCal_ExplicitTimeInterval/StaticMethod_Delete.qbl
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Delete (
+ LibCal_ExplicitTimeIntervals timeIntervals_i
+)
+{
+ TextBody:
+ [*
+ traverse( timeIntervals_i, Elements, eti ){
+ leadingeti := eti.LeadingETI();
+ if( leadingeti.SubscribingETI( relsize ) = 1 ){
+ part := leadingeti.Participation();
+ if( part.ExplicitTimeInterval( relsize ) = 1 ){
+ part.Event().Delete();
+ }
+ if( not isnull( leadingeti ) ){
+ leadingeti.Delete();
+ }
+ }
+ if( not isnull( leadingeti ) ){
+ eti.Delete();
+ }
+
+ }
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_ExplicitTimeInterval/_ROOT_Type_LibCal_ExplicitTimeInterval.qbl b/_Main/BL/Type_LibCal_ExplicitTimeInterval/_ROOT_Type_LibCal_ExplicitTimeInterval.qbl
new file mode 100644
index 0000000..4dbbf96
--- /dev/null
+++ b/_Main/BL/Type_LibCal_ExplicitTimeInterval/_ROOT_Type_LibCal_ExplicitTimeInterval.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type LibCal_ExplicitTimeInterval #extension
+{
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventColumn/Attribute_TimeUnit.qbl b/_Main/BL/Type_LibCal_SubscriberEventColumn/Attribute_TimeUnit.qbl
new file mode 100644
index 0000000..f017187
--- /dev/null
+++ b/_Main/BL/Type_LibCal_SubscriberEventColumn/Attribute_TimeUnit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute TimeUnit
+{
+ #keys: '3[415136.0.941300421][415136.0.941300420][415136.0.941300422]'
+ Description: '鏃堕棿绫诲瀷'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventColumn/Method_FilterByDatePeriod.qbl b/_Main/BL/Type_LibCal_SubscriberEventColumn/Method_FilterByDatePeriod.qbl
index f0e5182..0bf30d1 100644
--- a/_Main/BL/Type_LibCal_SubscriberEventColumn/Method_FilterByDatePeriod.qbl
+++ b/_Main/BL/Type_LibCal_SubscriberEventColumn/Method_FilterByDatePeriod.qbl
@@ -2,7 +2,8 @@
#parent: #root
Method FilterByDatePeriod (
Date start,
- Date end
+ Date end,
+ String timeunit
) declarative remote as Boolean
{
TextBody:
@@ -10,7 +11,7 @@
// 鐢勫叞楦� May-29-2024 (created)
value := false;
//info( this.Index(), this.LibCal_SubscriberEventTable().Name(), this.Period(), start, end );
- if( this.Index() < 2 or ( this.Period() >= start and this.Period() <= end ) ){
+ if( this.Period() >= start and this.Period() <= end and this.TimeUnit() = timeunit ){
value := true;
}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventColumn/Method_GetCellByTimeUnit.qbl b/_Main/BL/Type_LibCal_SubscriberEventColumn/Method_GetCellByTimeUnit.qbl
new file mode 100644
index 0000000..fedb5be
--- /dev/null
+++ b/_Main/BL/Type_LibCal_SubscriberEventColumn/Method_GetCellByTimeUnit.qbl
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetCellByTimeUnit (
+ LibCal_SubscriberEventRow row,
+ String desc
+) as LibCal_SubscriberEventCell
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-26-2024 (created)
+ cell := selectobject( this, LibCal_SubscriberEventCell, cell, cell.LibCal_SubscriberEventRow() = row );
+ if( isnull( cell ) ){
+ cell := this.LibCal_SubscriberEventCell( relnew, Value := '0'
+ , Description := desc );
+ row.LibCal_SubscriberEventCell( relinsert, cell );
+ }
+ return cell;
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventRow/Attribute_Name.qbl b/_Main/BL/Type_LibCal_SubscriberEventRow/Attribute_Name.qbl
new file mode 100644
index 0000000..5a246b9
--- /dev/null
+++ b/_Main/BL/Type_LibCal_SubscriberEventRow/Attribute_Name.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.918010439][415136.0.918010438][415136.0.918010440]'
+ Description: '浜х嚎In浜嬩欢'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventRow/Function_CalcName.qbl b/_Main/BL/Type_LibCal_SubscriberEventRow/Function_CalcName.qbl
new file mode 100644
index 0000000..f027aba
--- /dev/null
+++ b/_Main/BL/Type_LibCal_SubscriberEventRow/Function_CalcName.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcName
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-23-2024 (created)
+
+ value := this.Subscriber().Concat( " in " ).Concat( this.Event() );
+
+ this.Name( value );
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventRow/Method_GetTimeByTimeUnit.qbl b/_Main/BL/Type_LibCal_SubscriberEventRow/Method_GetTimeByTimeUnit.qbl
new file mode 100644
index 0000000..9d2ad1c
--- /dev/null
+++ b/_Main/BL/Type_LibCal_SubscriberEventRow/Method_GetTimeByTimeUnit.qbl
@@ -0,0 +1,22 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetTimeByTimeUnit (
+ DateTime starttime,
+ DateTime starttimetmp,
+ String timeunit
+) as Date
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-26-2024 (created)
+ time := starttime.Date();
+ if( starttime = starttimetmp ){
+ if ( timeunit = Translations::MP_GlobalParameters_Week() ){
+ time := starttime.StartOfWeek().Date();
+ } else if ( timeunit = Translations::MP_GlobalParameters_Month() ){
+ time := starttime.StartOfMonth().Date();
+ }
+ }
+ return time;
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventRow/Method_InitializeDate.qbl b/_Main/BL/Type_LibCal_SubscriberEventRow/Method_InitializeDate.qbl
new file mode 100644
index 0000000..fdff292
--- /dev/null
+++ b/_Main/BL/Type_LibCal_SubscriberEventRow/Method_InitializeDate.qbl
@@ -0,0 +1,76 @@
+Quintiq file version 2.0
+#parent: #root
+Method InitializeDate (
+ LibCal_SubscriberEventTable table,
+ DateTime starttime,
+ DateTime endtime,
+ String desc
+)
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� May-29-2024 (created)
+ startTime := starttime;
+ nextweektime := starttime;
+ nextmonthtime := starttime;
+ while( startTime < endtime ){
+ //for( startTime := starttime; startTime < endtime; startTime := startTime.StartOfNextDay() ){
+ //澶�
+ daytime := this.GetTimeByTimeUnit( starttime, startTime, Translations::MP_GlobalParameters_Day() );
+ daycolumn := table.GetColumnByTimeUnit( table, daytime, Translations::MP_GlobalParameters_Day() );
+ daycell := daycolumn.GetCellByTimeUnit( this, desc );
+
+ dayvalue := [Real]daycell.Value();
+ if( startTime.StartOfNextDay() > endtime ){
+ duration := endtime - startTime;
+ dayvalue := dayvalue + duration.HoursAsReal();
+ daycell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) );
+ }else{
+ duration := startTime.StartOfNextDay() - startTime;
+ dayvalue := dayvalue + duration.HoursAsReal();
+ daycell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextDay().Format( 'M/D/Y H:m' ) );
+ }
+ daycell.Value( [String]dayvalue );
+ //鍛�
+ if( nextweektime = startTime ){
+ weektime := this.GetTimeByTimeUnit( starttime, startTime, Translations::MP_GlobalParameters_Week() );
+ weekcolumn := table.GetColumnByTimeUnit( table, weektime, Translations::MP_GlobalParameters_Week() );
+ weekcell := weekcolumn.GetCellByTimeUnit( this, desc );
+
+ weekvalue := [Real]weekcell.Value();
+ if( startTime.StartOfNextWeek() > endtime ){
+ duration := endtime - startTime;
+ weekvalue := weekvalue + duration.HoursAsReal();
+ weekcell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) );
+ }else{
+ duration := startTime.StartOfNextWeek() - startTime;
+ weekvalue := weekvalue + duration.HoursAsReal();
+ weekcell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextWeek().Format( 'M/D/Y H:m' ) );
+ }
+ weekcell.Value( [String]weekvalue );
+ nextweektime := startTime.StartOfNextWeek();
+ }
+ // info( '-----------------------------1------------------------', nextmonthtime, startTime, nextweektime );
+ //鏈�
+ if( nextmonthtime = startTime ){
+ monthtime := this.GetTimeByTimeUnit( starttime, startTime, Translations::MP_GlobalParameters_Month() );
+ monthcolumn := table.GetColumnByTimeUnit( table, monthtime, Translations::MP_GlobalParameters_Month() );
+ monthcell := monthcolumn.GetCellByTimeUnit( this, desc );
+ info( nextmonthtime, startTime, monthtime, isnull( monthcolumn ), isnull( monthcell ) );
+ monthvalue := [Real]monthcell.Value();
+ if( startTime.StartOfNextMonth() > endtime ){
+ duration := endtime - startTime;
+ monthvalue := monthvalue + duration.HoursAsReal();
+ monthcell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) );
+ }else{
+ duration := startTime.StartOfNextMonth() - startTime;
+ monthvalue := monthvalue + duration.HoursAsReal();
+ monthcell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextMonth().Format( 'M/D/Y H:m' ) );
+ }
+ monthcell.Value( [String]monthvalue );
+ nextmonthtime := startTime.StartOfNextMonth();
+ }
+ startTime := startTime.StartOfNextDay();
+ }
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_GetColumnByTimeUnit.qbl b/_Main/BL/Type_LibCal_SubscriberEventTable/Method_GetColumnByTimeUnit.qbl
new file mode 100644
index 0000000..757b1d4
--- /dev/null
+++ b/_Main/BL/Type_LibCal_SubscriberEventTable/Method_GetColumnByTimeUnit.qbl
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetColumnByTimeUnit (
+ LibCal_SubscriberEventTable table,
+ Date time,
+ String timeunit
+) as LibCal_SubscriberEventColumn
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-26-2024 (created)
+ column := selectobject( table, LibCal_SubscriberEventColumn, column, column.Name() = time.Format( 'M/D/Y' ) );
+ if( isnull( column ) ){
+ column := table.LibCal_SubscriberEventColumn( relnew, Name := time.Format( 'M/D/Y' ), Period := time, TimeUnit := timeunit );
+ }
+ return column;
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeDay.qbl b/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeDay.qbl
deleted file mode 100644
index 247b3c4..0000000
--- a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeDay.qbl
+++ /dev/null
@@ -1,37 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method InitializeDay (
- LibCal_SubscriberEventTable table,
- LibCal_SubscriberEventRow row,
- DateTime starttime,
- DateTime endtime,
- String desc
-)
-{
- TextBody:
- [*
- // 鐢勫叞楦� May-29-2024 (created)
- for( startTime := starttime; startTime < endtime; startTime := startTime.StartOfNextDay() ){
- time := startTime.Format( 'M/D/Y' );
- column := selectobject( table, LibCal_SubscriberEventColumn, column, column.Name() = time );
- if( isnull( column ) ){
- column := table.LibCal_SubscriberEventColumn( relnew, Name := time, Period := startTime.Date() );
- }
-
- if( startTime.StartOfNextDay() > endtime ){
- duration := endtime - startTime;
- cell := column.LibCal_SubscriberEventCell( relnew, Value := [String]duration.HoursAsReal()
- , Description := desc );
- cell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) );
- row.LibCal_SubscriberEventCell( relinsert, cell );
- }else{
- duration := startTime.StartOfNextDay() - startTime;
- cell := column.LibCal_SubscriberEventCell( relnew, Value := [String]duration.HoursAsReal()
- , Description := desc );
- cell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextDay().Format( 'M/D/Y H:m' ) );
- row.LibCal_SubscriberEventCell( relinsert, cell );
- }
- // info( startTime, column.Name(), duration.AsQUILL(), duration.HoursAsReal() );
- }
- *]
-}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeMonth.qbl b/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeMonth.qbl
deleted file mode 100644
index 096e9f4..0000000
--- a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeMonth.qbl
+++ /dev/null
@@ -1,45 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method InitializeMonth (
- LibCal_SubscriberEventTable table,
- LibCal_SubscriberEventRow row,
- DateTime starttime,
- DateTime endtime,
- String desc
-)
-{
- TextBody:
- [*
- // 鐢勫叞楦� May-29-2024 (created)
- for( startTime := starttime; startTime < endtime; startTime := startTime.StartOfNextMonth() ){
- time := startTime;
- if( starttime = startTime ){
- time := startTime.StartOfMonth();
- }
- column := selectobject( table, LibCal_SubscriberEventColumn, column, column.Name() = time.Format( 'M/D/Y' ) );
- if( isnull( column ) ){
- column := table.LibCal_SubscriberEventColumn( relnew, Name := time.Format( 'M/D/Y' ), Period := time.Date() );
- }
-
- cell := selectobject( column, LibCal_SubscriberEventCell, cell, cell.LibCal_SubscriberEventRow() = row );
- if( isnull( cell ) ){
- cell := column.LibCal_SubscriberEventCell( relnew, Value := '0'
- , Description := desc );
- row.LibCal_SubscriberEventCell( relinsert, cell );
- }
-
- value := [Real]cell.Value();
- if( startTime.StartOfNextMonth() > endtime ){
- duration := endtime - startTime;
- value := value + duration.HoursAsReal();
- cell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) );
- }else{
- duration := startTime.StartOfNextMonth() - startTime;
- value := value + duration.HoursAsReal();
- cell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextMonth().Format( 'M/D/Y H:m' ) );
- }
- cell.Value( [String]value );
- // info( startTime, column.Name(), duration.AsQUILL(), duration.HoursAsReal() );
- }
- *]
-}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeTable.qbl b/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeTable.qbl
index 14023ce..0df1514 100644
--- a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeTable.qbl
+++ b/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeTable.qbl
@@ -8,20 +8,10 @@
[*
// 鐢勫叞楦� May-28-2024 (created)
rownr := this.LibCal_SubscriberEventRow( relsize );
- subscribercolumn := selectobject( this, LibCal_SubscriberEventColumn, column, column.RowName() = 'Line' );
- if( isnull( subscribercolumn ) ){
- subscribercolumn := this.LibCal_SubscriberEventColumn( relnew, RowName := 'Line' );
- }
- eventcolumn := selectobject( this, LibCal_SubscriberEventColumn, column, column.RowName() = 'Event' );
- if( isnull( eventcolumn ) ){
- eventcolumn := this.LibCal_SubscriberEventColumn( relnew, RowName := 'Event' );
- }
traverse( subscribers, Elements, subscriber ){
- // info( '------------------------', subscriber.CalendarID(), subscriber.CalendarType() );
- // traverse( subscriber,Participation.astype( LibCal_Subscription ).LeadingParticipation, participation ){
+
traverse( subscriber,Participation.astype( LibCal_Subscription ).LeadingParticipation, participation, participation.Event().EventCategory().Name() = 'Unavailable' ){
- // info( '---------------1---------', participation.Event().Subject(), '------', participation.Event().EventCategory().Name() );
event := participation.Event();
row := selectobject( this, LibCal_SubscriberEventRow, row, row.Subscriber() = subscriber.CalendarID()
@@ -34,32 +24,12 @@
Event := event.Subject(),
EventType := event.EventType().Name() );
- subscribercell := subscribercolumn.LibCal_SubscriberEventCell( relnew, Value := row.Subscriber() );
- if( counter( this, LibCal_SubscriberEventRow, linerow, linerow.Subscriber() = row.Subscriber() ) <> 1 ){
- subscribercell.Value( '' );
- }
- row.LibCal_SubscriberEventCell( relinsert, subscribercell );
-
- eventcell := eventcolumn.LibCal_SubscriberEventCell( relnew, Value := row.Event() );
- row.LibCal_SubscriberEventCell( relinsert, eventcell );
rownr := rownr + 1;
}
traverse( participation, ExplicitTimeInterval, eti ){
- info( eti.Start(), eti.End(), eti.DefinitionName() );
- if( this.ID() = 'Day' ){
- this.InitializeDay( this, row, eti.Start(), eti.End(), event.Description() );
- }else if( this.ID() = 'Week' ){
- this.InitializeWeek( this, row, eti.Start(), eti.End(), event.Description() );
- }else{
- this.InitializeMonth( this, row, eti.Start(), eti.End(), event.Description() );
- }
+ row.InitializeDate( this, eti.Start(), eti.End(), event.Description() );
}
-
-
- //
- // endTime := participation.EndDate().DateTime( timezone ).AddAsPeriod( timezone, event.EndTimeOfDay() );
- // startTime := participation.StartDate().DateTime( timezone ).AddAsPeriod( timezone, event.StartTimeOfDay() );
}
}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeWeek.qbl b/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeWeek.qbl
deleted file mode 100644
index e543a38..0000000
--- a/_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeWeek.qbl
+++ /dev/null
@@ -1,46 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-Method InitializeWeek (
- LibCal_SubscriberEventTable table,
- LibCal_SubscriberEventRow row,
- DateTime starttime,
- DateTime endtime,
- String desc
-)
-{
- TextBody:
- [*
- // 鐢勫叞楦� May-29-2024 (created)
- for( startTime := starttime; startTime < endtime; startTime := startTime.StartOfNextWeek() ){
- time := startTime;
- if( starttime = startTime ){
- time := startTime.StartOfWeek();
- }
- column := selectobject( table, LibCal_SubscriberEventColumn, column, column.Name() = time.Format( 'M/D/Y' ) );
- if( isnull( column ) ){
- column := table.LibCal_SubscriberEventColumn( relnew, Name := time.Format( 'M/D/Y' ), Period := time.Date() );
- }
-
- cell := selectobject( column, LibCal_SubscriberEventCell, cell, cell.LibCal_SubscriberEventRow() = row );
- if( isnull( cell ) ){
- cell := column.LibCal_SubscriberEventCell( relnew, Value := '0'
- , Description := desc );
- row.LibCal_SubscriberEventCell( relinsert, cell );
- }
-
- value := [Real]cell.Value();
- if( startTime.StartOfNextWeek() > endtime ){
- duration := endtime - startTime;
- value := value + duration.HoursAsReal();
- cell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := endtime.Format( 'M/D/Y H:m' ) );
- }else{
- duration := startTime.StartOfNextWeek() - startTime;
- value := value + duration.HoursAsReal();
- cell.Period( relnew, Start := startTime.Format( 'M/D/Y H:m' ), End := startTime.StartOfNextWeek().Format( 'M/D/Y H:m' ) );
- }
- cell.Value( [String]value );
-
- // info( startTime, column.Name(), duration.AsQUILL(), duration.HoursAsReal() );
- }
- *]
-}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl b/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl
index 77d0846..4cc4cef 100644
--- a/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl
+++ b/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl
@@ -1,66 +1,81 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Export (
- LibCal_SubscriberEventTable table
+ LibCal_SubscriberEventColumns columns,
+ LibCal_SubscriberEventRows rows
) as BinaryValue
{
TextBody:
[*
// 鐢勫叞楦� May-30-2024 (created)
// lihongji Jun-8-2023 (created)
- returnBinaryData := BinaryData::Construct();
- tableGroupHandle := TableGroupHandle::Create( "" );
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + LibCal_SubscriberEventTable::GetDefaultName() + '</name></table>' );
- xmlImpl := XMLDOMImplementation::Create();
- xmlDoc := xmlImpl.CreateDocument();
- xmlSeri := xmlImpl.CreateSerializer();
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+
+ //浜х嚎
+ subscribercolumnelement := xmlDOM.CreateElement( "column" );
+ subscribernameelement := xmlDOM.CreateElement( "name" );
+ subscribertypeelement := xmlDOM.CreateElement( "type" );
+ subscribernameelement.TextContent( '浜х嚎' );
+ subscribertypeelement.TextContent( "String" );
+ subscribercolumnelement.AppendChild( subscribernameelement );
+ subscribercolumnelement.AppendChild( subscribertypeelement );
+ //浜嬩欢
+ eventcolumnelement := xmlDOM.CreateElement( "column" );
+ eventnameelement := xmlDOM.CreateElement( "name" );
+ eventtypeelement := xmlDOM.CreateElement( "type" );
+ eventnameelement.TextContent( '浜嬩欢' );
+ eventtypeelement.TextContent( "String" );
+ eventcolumnelement.AppendChild( eventnameelement );
+ eventcolumnelement.AppendChild( eventtypeelement );
+
+ tableElement.AppendChild( subscribercolumnelement );
+ tableElement.AppendChild( eventcolumnelement );
+ columns := selectsortedset( columns, Elements, column, column.Period() );
+ isfirst := true;
+ traverse ( columns, Elements, column ) {
+ columnelement := xmlDOM.CreateElement( "column" );
+ nameelement := xmlDOM.CreateElement( "name" );
+ typeelement := xmlDOM.CreateElement( "type" );
+ nameelement.TextContent( column.Name() );
+ typeelement.TextContent( "String" );
+ columnelement.AppendChild( nameelement );
+ columnelement.AppendChild( typeelement );
- xmlTable := xmlDoc.CreateElement( "table" );
- xmlTableName := xmlDoc.CreateElement( "name" );
- xmlTableName.TextContent( table.Name() );
- xmlTable.AppendChild( xmlTableName );
-
- traverse ( table, LibCal_SubscriberEventColumn, column ) {
- xmlColumn := xmlDoc.CreateElement( "column" );
- xmlColumnName := xmlDoc.CreateElement( "name" );
- if( column.Index() = 0 ){
- xmlColumnName.TextContent( '浜х嚎' );
- }else if(column.Index() = 1 ){
- xmlColumnName.TextContent( '浜嬩欢' );
- }else{
- xmlColumnName.TextContent( column.Name() );
- }
- xmlColumn.AppendChild( xmlColumnName );
- xmlColumnType := xmlDoc.CreateElement( "type" );
- xmlColumnType.TextContent( "String" );
- xmlColumn.AppendChild( xmlColumnType );
-
- rowTotal := table.LibCal_SubscriberEventRow( relsize );
- for ( i := 0; i < rowTotal; i++ ) {
- cell := select( column, LibCal_SubscriberEventCell, cell, cell.LibCal_SubscriberEventRow().RowNr() = i );
- row := cell.LibCal_SubscriberEventRow();
- xmlCell := xmlDoc.CreateElement( "cell" );
- if( column.Index() = 0 ){
- xmlCell.SetAttribute( "value", row.Subscriber() );
- }else if(column.Index() = 1 ){
- xmlCell.SetAttribute( "value", row.Event() );
- }else{
- xmlCell.SetAttribute( "value", cell.Value() );
+ cells := selectsortedset( column, LibCal_SubscriberEventCell, cell, rows.Find( cell.LibCal_SubscriberEventRow() ) > -1, cell.LibCal_SubscriberEventRow().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( isfirst ){
+ row := c.LibCal_SubscriberEventRow();
+ //subscriber
+ subscribercellElement := xmlDOM.CreateElement( "cell" );
+ subscribercellElement.SetAttribute( "value", row.Subscriber() );
+ subscribercolumnelement.AppendChild( subscribercellElement );
+ //event
+ eventcellElement := xmlDOM.CreateElement( "cell" );
+ eventcellElement.SetAttribute( "value", row.Event() );
+ eventcolumnelement.AppendChild( eventcellElement );
}
- xmlColumn.AppendChild( xmlCell );
+ cellElement := xmlDOM.CreateElement( "cell" );
+ cellElement.SetAttribute( "value", c.Value() );
+ columnelement.AppendChild( cellElement );
}
-
- xmlTable.AppendChild( xmlColumn );
+ tableElement.AppendChild( columnelement );
+ isfirst := false;
}
- xmlDoc.AppendChild( xmlTable );
- xmlStr := xmlSeri.WriteToString( xmlDoc );
- tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlStr ) );
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( LibCal_SubscriberEventTable::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
tableGroupHandle.Add( tableHandle );
- //}
- returnBinaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
- return returnBinaryData.AsBinaryValue();
+ return binaryData.AsBinaryValue();
*]
}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_GetDefaultName.qbl b/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_GetDefaultName.qbl
new file mode 100644
index 0000000..ab03a51
--- /dev/null
+++ b/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_GetDefaultName.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefaultName () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-23-2024 (created)
+ return 'Calendar unavailable event';
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_InitializeTable.qbl b/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_InitializeTable.qbl
index f6e41d1..e95dfc4 100644
--- a/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_InitializeTable.qbl
+++ b/_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_InitializeTable.qbl
@@ -10,11 +10,9 @@
// 鐢勫叞楦� May-28-2024 (created)
owner.LibCal_SubscriberEventTable( relflush );
if( owner.LibCal_SubscriberEventTable( relsize ) < 1 ){
- owner.LibCal_SubscriberEventTable( relnew, ID := 'Day', Name := 'Day' );
- owner.LibCal_SubscriberEventTable( relnew, ID := 'Week', Name := 'Week' );
- owner.LibCal_SubscriberEventTable( relnew, ID := 'Month', Name := 'Month' );
+ owner.LibCal_SubscriberEventTable( relnew, ID := LibCal_SubscriberEventTable::GetDefaultName(), Name := LibCal_SubscriberEventTable::GetDefaultName() );
}
- info('-----------------------------', owner.LibCal_SubscriberEventTable( relsize ), subscribers.Size() );
+
traverse( owner, LibCal_SubscriberEventTable, table ){
table.InitializeTable( subscribers );
}
diff --git "a/_Main/BL/Type_LibCal_Subscription/Method_CopyOccurrences\043486.qbl" "b/_Main/BL/Type_LibCal_Subscription/Method_CopyOccurrences\043486.qbl"
new file mode 100644
index 0000000..fd50beb
--- /dev/null
+++ "b/_Main/BL/Type_LibCal_Subscription/Method_CopyOccurrences\043486.qbl"
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: #root
+Method CopyOccurrences #extension
+{
+ TextBody:
+ [*
+ timezone := this.Calendar().GetTimeZone();
+
+ if( this.IsRecurring() and not this.LeadingParticipation().Event().IsMultiple() )
+ {
+ // If the participation ends at the start of a day, this is the start of the next day.
+ // In that case, one day should be subtracted in order to not take the next day into account.
+ endDate := this.LeadingParticipation().RecurrencePeriod().EndDate()
+ - ifexpr( this.LeadingParticipation().EndTime() = this.LeadingParticipation().EndTime().StartOfDay( timezone ), 1, 0 );
+
+ this.CopyOccurrences( this.LeadingParticipation().RecurrencePeriod().StartDate(), endDate );
+ }
+ else
+ {
+ // In case of a non-recurring event, there is only one occurrence (i.e. ExplicitTimeInterval),
+ // with an arbitrary Start and End. The Start and End of this occurrence must be used in order to have it copied to the subscription.
+ leadingETI := select( this.LeadingParticipation(), ExplicitTimeInterval, eti, true, true );
+
+ if( not isnull( leadingETI ) )
+ {
+ endDate := leadingETI.End().Date( timezone )
+ - ifexpr( leadingETI.End() = leadingETI.End().StartOfDay( timezone ), 1, 0 );
+
+ this.CopyOccurrences( leadingETI.Start().Date( timezone ), endDate );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_LibCal_Subscription/_ROOT_Type_LibCal_Subscription.qbl b/_Main/BL/Type_LibCal_Subscription/_ROOT_Type_LibCal_Subscription.qbl
new file mode 100644
index 0000000..ba6ae5b
--- /dev/null
+++ b/_Main/BL/Type_LibCal_Subscription/_ROOT_Type_LibCal_Subscription.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization LibCal_Subscription #extension
+{
+}
diff --git "a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl" "b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl"
index 19ebdae..ddece8a 100644
--- "a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl"
+++ "b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport\0431.qbl"
@@ -12,16 +12,16 @@
// rislai Jul-9-2024 (created)
table := owner.LocalTable( relnew,Name := "缁煎悎宸ユ椂鍒舵姤琛�");
- //column1 := table.LocalColumn( relnew,Name := "宸ュ巶" ,Index := 1);
- //column2 := table.LocalColumn( relnew,Name := "浜х嚎" ,Index := 2);
+ //column1 := table.LocalColumn( relnew,Name := "宸ュ巶" ,CustomIndex := 1);
+ //column2 := table.LocalColumn( relnew,Name := "浜х嚎" ,CustomIndex := 2);
- column3 := table.LocalColumn( relnew,Name := "鐢熶骇澶╂暟" ,Index := 3);
+ column3 := table.LocalColumn( relnew,Name := "鐢熶骇澶╂暟" ,CustomIndex := 3);
- column4 := table.LocalColumn( relnew,Name := "鍔犵彮/娆犲伐鏃堕暱" ,Index := 4);
- column5 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝椂闀�" ,Index := 6);
+ column4 := table.LocalColumn( relnew,Name := "鍔犵彮/娆犲伐鏃堕暱" ,CustomIndex := 4);
+ column5 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝椂闀�" ,CustomIndex := 6);
- column6 := table.LocalColumn( relnew,Name := "鍔犵彮/娆犲伐璐�" ,Index := 8);
- column7 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝垂" ,Index := 10);
+ column6 := table.LocalColumn( relnew,Name := "鍔犵彮/娆犲伐璐�" ,CustomIndex := 8);
+ column7 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝垂" ,CustomIndex := 10);
units := selectset( shiftPlans,Elements.UnitPeriodTime.Unit,unit,true );
diff --git a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
index b88493c..bf0aaa9 100644
--- a/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
+++ b/_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
@@ -12,20 +12,20 @@
// rislai Jul-4-2024 (created)
table := owner.LocalTable( relnew,Name := "鏍囧噯宸ユ椂鍒舵姤琛�");
- //column1 := table.LocalColumn( relnew,Name := "宸ュ巶" ,Index := 1);
- //column2 := table.LocalColumn( relnew,Name := "浜х嚎" ,Index := 2);
+ //column1 := table.LocalColumn( relnew,Name := "宸ュ巶" ,CustomIndex := 1);
+ //column2 := table.LocalColumn( relnew,Name := "浜х嚎" ,CustomIndex := 2);
- column3 := table.LocalColumn( relnew,Name := "鐢熶骇澶╂暟" ,Index := 3);
+ column3 := table.LocalColumn( relnew,Name := "鐢熶骇澶╂暟" ,CustomIndex := 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);
+ column4 := table.LocalColumn( relnew,Name := "骞虫棩鍔犵彮鏃堕暱" ,CustomIndex := 4);
+ column5 := table.LocalColumn( relnew,Name := "浼戞伅鏃ュ姞鐝椂闀�" ,CustomIndex := 5);
+ column6 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝椂闀�" ,CustomIndex := 6);
+ column7 := table.LocalColumn( relnew,Name := "娆犲伐鏃堕暱" ,CustomIndex := 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);
+ column8 := table.LocalColumn( relnew,Name := "骞虫棩鍔犵彮璐�" ,CustomIndex := 8);
+ column9 := table.LocalColumn( relnew,Name := "浼戞伅鏃ュ姞鐝垂" ,CustomIndex := 9);
+ column10 := table.LocalColumn( relnew,Name := "鑺傚亣鏃ュ姞鐝垂" ,CustomIndex := 10);
+ column11 := table.LocalColumn( relnew,Name := "娆犲伐璐�" ,CustomIndex := 11);
units := selectset( shiftPlans,Elements.UnitPeriodTime.Unit,unit,true );
diff --git a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GenerateColumnIndex.qbl b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GenerateColumnIndex.qbl
index 5bdd4f8..44609af 100644
--- a/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GenerateColumnIndex.qbl
+++ b/_Main/BL/Type_LocalCell_DemandComparison/StaticMethod_GenerateColumnIndex.qbl
@@ -30,7 +30,7 @@
// 2023/01/01
index := [Number]generalColumn.Name().ReplaceAll( "/", "" );
}
- column := localTable.LocalColumn( relnew, Name := generalColumn.Name(),Index := index );
+ column := localTable.LocalColumn( relnew, Name := generalColumn.Name(),CustomIndex := index );
columns.Add( column );
columnTree.Root().AddChild( tempHandle,columns.Size() - 1 );
}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Actual.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Actual.qbl
new file mode 100644
index 0000000..e46be0b
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Actual.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Actual
+{
+ #keys: '3[412672.1.64753749][412672.1.64753748][412672.1.64753750]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_BaseVersionValue.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_BaseVersionValue.qbl
new file mode 100644
index 0000000..7abefbe
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_BaseVersionValue.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute BaseVersionValue
+{
+ #keys: '3[412672.1.64753763][412672.1.64753762][412672.1.64753764]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_CompareVersionValue.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_CompareVersionValue.qbl
new file mode 100644
index 0000000..8e0d3b4
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_CompareVersionValue.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CompareVersionValue
+{
+ #keys: '3[412672.1.64753752][412672.1.64753751][412672.1.64753753]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Gap.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Gap.qbl
new file mode 100644
index 0000000..e066a00
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Gap.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Gap
+{
+ #keys: '3[412672.1.64753755][412672.1.64753754][412672.1.64753756]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Plan.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Plan.qbl
new file mode 100644
index 0000000..7592aad
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/Attribute_Plan.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Plan
+{
+ #keys: '3[412672.1.64753743][412672.1.64753742][412672.1.64753744]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/DefaultValue_BaseVersionValue.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/DefaultValue_BaseVersionValue.qbl
new file mode 100644
index 0000000..2f8d5c8
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/DefaultValue_BaseVersionValue.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: BaseVersionValue
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/DefaultValue_CompareVersionValue.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/DefaultValue_CompareVersionValue.qbl
new file mode 100644
index 0000000..3f4ebb7
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/DefaultValue_CompareVersionValue.qbl
@@ -0,0 +1,6 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ TargetAttribute: CompareVersionValue
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/Function_CalcGap.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/Function_CalcGap.qbl
new file mode 100644
index 0000000..dcff02a
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/Function_CalcGap.qbl
@@ -0,0 +1,13 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcGap
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+
+ value := this.Plan() - this.Actual();
+
+ this.Gap( value );
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/Method_GetAttributeByName.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/Method_GetAttributeByName.qbl
new file mode 100644
index 0000000..f235f04
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/Method_GetAttributeByName.qbl
@@ -0,0 +1,44 @@
+Quintiq file version 2.0
+#parent: #root
+Method GetAttributeByName (
+ String attributeName
+) const declarative as String
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+ value := "";
+
+ if( attributeName = "BaseVersion" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := this.Plan().Format( "N(Dec)" );
+ }
+ }
+ if( attributeName = "CompareVersion" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := this.Actual().Format( "N(Dec)" );
+ }
+ }
+ if( attributeName = "Gap" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := this.Gap().Format( "N(Dec)" );
+ }
+ }
+ if( attributeName = "BaseVersionValue" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := "0";
+ }else{
+ value := this.BaseVersionValue();
+ }
+ }
+ if( attributeName = "CompareVersionValue" ){
+ if( not this.LocalColumn().IsAttrbuteColumn() ){
+ value := "0";
+ }else{
+ value := this.CompareVersionValue();
+ }
+ }
+
+ return value;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_AsyncExport.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_AsyncExport.qbl
new file mode 100644
index 0000000..d19420b
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_AsyncExport.qbl
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod AsyncExport (
+ RecycleBin recycleBin,
+ const constcontent LocalRows rows,
+ const constcontent LocalColumns columns,
+ const MacroPlan macroPlan
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ sortColumns := selectsortedset( columns,Elements,column,true,column.Index());
+
+ attributeNames := LocalCell_DemandComparison::GetAttributeNames();
+
+ columnstring := emit( "" );
+ flag := true;
+ traverse( sortColumns,Elements,sortColumn ){
+ if( flag ){
+ attributeXML := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames,"attribute",macroPlan );
+ columnstring := columnstring.Merge( attributeXML )
+ flag := false;
+ }
+
+ cellxml := rows -> LocalCell_DemandComparison::GetColumnXML( sortColumn,attributeNames ,"data",macroPlan );
+ columnstring := columnstring.Merge( cellxml);
+ }
+
+ columnstring -> GroupAll() -> ExportXMLManager::AwaitLocalTableXMLData( recycleBin,guard( rows.Element(0).LocalTable().Name(),"Sheet1") );
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_Compared.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_Compared.qbl
new file mode 100644
index 0000000..3c0055a
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_Compared.qbl
@@ -0,0 +1,118 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Compared (
+ RecycleBin recycleBin,
+ String baseVersionPath,
+ String compareVersionPath,
+ String baseVersionName,
+ String compareVersionName
+) as LocalTable
+{
+ TextBody:
+ [*
+ // rislai Jun-20-2024 (created)
+ localTable := recycleBin.LocalTable( relnew,Name := baseVersionName + "__" + compareVersionName );
+
+ baseVersionFile := OSFile::Construct();
+ compareVersionFile := OSFile::Construct();
+
+ try {
+ baseVersionFile.Open( baseVersionPath, "Read", false );
+ baseVersionDataSource := GeneralExcelImportAndExportDataSource::Upload( recycleBin, baseVersionFile.ReadBinary(), baseVersionPath );
+ baseVersionDataSource.ReadStructure();
+
+ compareVersionFile.Open( compareVersionPath, "Read", false );
+ compareVersionDataSource := GeneralExcelImportAndExportDataSource::Upload( recycleBin, compareVersionFile.ReadBinary(), compareVersionPath );
+ compareVersionDataSource.ReadStructure();
+
+ baseVersionTable := select( baseVersionDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
+ compareVersionTable := select( compareVersionDataSource, GeneralExcelImportAndExportDataTable, tempGEIAEDT, true );
+
+ if( not isnull( baseVersionTable ) and not isnull( compareVersionTable )){
+
+ //鐢熸垚琛屾暟鎹�
+ rowKeys := construct( Strings );
+ baseVersionRowTree := NamedValueTree::Create();
+ baseVersionRows := construct( GeneralExcelImportAndExportDataRows ,constcontent);
+ compareVersionRowTree := NamedValueTree::Create();
+ compareVersionRows := construct( GeneralExcelImportAndExportDataRows ,constcontent);
+ LocalCell_DemandComparison::FillRows( baseVersionTable,rowKeys,baseVersionRowTree,baseVersionRows );
+ LocalCell_DemandComparison::FillRows( compareVersionTable,rowKeys,compareVersionRowTree,compareVersionRows );
+
+ // 鐢熸垚鍒楁暟鎹�
+ columnTree := NamedValueTree::Create();
+ columns := construct( LocalColumns );
+ LocalCell_DemandComparison::GenerateColumnIndex( baseVersionTable,localTable,columnTree,columns );
+ LocalCell_DemandComparison::GenerateColumnIndex( compareVersionTable,localTable,columnTree,columns );
+ columnNames := selectvalues( columns,Elements,column,true,column.Name() );
+
+ // 鐢熸垚鏁版嵁
+
+ for ( rowIndex := 0; rowIndex < rowKeys.Size(); rowIndex++ ) {
+ rowKey := rowKeys.Element( rowIndex );
+
+ baseVersionCellTree := NamedValueTree::Create();
+ baseVersionCells := construct( GeneralExcelImportAndExportDataCells ,constcontent);
+
+ compareVersionCellTree := NamedValueTree::Create();
+ compareVersionCells := construct( GeneralExcelImportAndExportDataCells ,constcontent);
+
+ LocalCell_DemandComparison::FillCells( rowKey,baseVersionRowTree,baseVersionRows,baseVersionCellTree,baseVersionCells );
+ LocalCell_DemandComparison::FillCells( rowKey,compareVersionRowTree,compareVersionRows,compareVersionCellTree,compareVersionCells );
+
+ row := localTable.LocalRow( relnew,Index := localTable.GetRowIndexCache() );
+
+ traverse( columnNames,Elements,columnName ){
+ columnHandle := columnTree.GetHandle( columnName );
+ columnIndex := columnTree.Root().Child( columnHandle ).GetValueAsNumber();
+ column := columns.Element( columnIndex );
+
+ baseVersionCell := constnull( GeneralExcelImportAndExportDataCell );
+ baseVersionCellHandle := baseVersionCellTree.GetHandle( columnName );
+ try{
+ baseVersionCellIndex := baseVersionCellTree.Root().Child( baseVersionCellHandle ).GetValueAsNumber();
+ baseVersionCell := baseVersionCells.Element( baseVersionCellIndex );
+ }onerror{}
+
+ compareVersionCell := constnull( GeneralExcelImportAndExportDataCell );
+ compareVersionCellHandle := compareVersionCellTree.GetHandle( columnName );
+ try{
+ compareVersionCellIndex := compareVersionCellTree.Root().Child( compareVersionCellHandle ).GetValueAsNumber();
+ compareVersionCell := compareVersionCells.Element( compareVersionCellIndex );
+ }onerror{}
+
+ if( columnName = "浜у湴" or columnName = "杞﹀瀷" or columnName = "鍙戝姩鏈洪浂浠跺彿" or columnName = "鍙戝姩鏈哄洓浣嶇爜" ){
+ row.LocalCell( relnew,LocalCell_DemandComparison,LocalColumn := column,
+ BaseVersionValue := ifexpr( isnull( baseVersionCell ), "绌�", baseVersionCell.Value()),
+ CompareVersionValue := ifexpr( isnull( compareVersionCell ),"绌�",compareVersionCell.Value()));
+ column.IsAttrbuteColumn( true );
+ if( columnName = "鍙戝姩鏈洪浂浠跺彿" ){
+ row.CustomName( ifexpr( isnull( baseVersionCell ), ifexpr( isnull( compareVersionCell ),"绌�",compareVersionCell.Value()), baseVersionCell.Value()) );
+ }
+ }else{
+ row.LocalCell( relnew,LocalCell_DemandComparison,LocalColumn := column,
+ BaseVersion := ifexpr( isnull( baseVersionCell ),0,[Real]baseVersionCell.Value()),
+ CompareVersion := ifexpr( isnull( compareVersionCell ), 0 ,[Real]compareVersionCell.Value() ));
+ }
+ }
+ }
+ }
+ // 鍚庣画鍒犻櫎
+ baseVersionDataSource.Delete();
+ compareVersionDataSource.Delete();
+
+ baseVersionFile.Close();
+ compareVersionFile.Close();
+ } onerror {
+ if( not isnull( baseVersionFile )){
+ baseVersionFile.Close();
+ }
+ if( not isnull( compareVersionFile )){
+ compareVersionFile.Close();
+ }
+ error( e );
+ }
+
+ return localTable;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillCells.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillCells.qbl
new file mode 100644
index 0000000..6aeded1
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillCells.qbl
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod FillCells (
+ String rowName,
+ NamedValueTree rowTree,
+ constcontent GeneralExcelImportAndExportDataRows rows,
+ NamedValueTree cellTree,
+ constcontent GeneralExcelImportAndExportDataCells cells
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-22-2024 (created)
+ rowHandel := rowTree.GetHandle( rowName );
+ try{
+ rowIndex := rowTree.Root().Child( rowHandel ).GetValueAsNumber();
+ row := rows.Element( rowIndex );
+
+ temp_cells := selectsortedset( row,GeneralExcelImportAndExportDataCell,cell,true,cell.GeneralExcelImportAndExportDataColumn().ColumnIndex() );
+ for( i := 0 ; i<temp_cells.Size();i++ ){
+ cell := temp_cells.Element( i );
+ tempHandle := cellTree.GetHandle( cell.GeneralExcelImportAndExportDataColumn().Name() );
+
+ cells.Add( cell );
+ cellTree.Root().AddChild( tempHandle,cells.Size() - 1 );
+
+ }
+ }onerror{}
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillRows.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillRows.qbl
new file mode 100644
index 0000000..391100a
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_FillRows.qbl
@@ -0,0 +1,36 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod FillRows (
+ const GeneralExcelImportAndExportDataTable general,
+ Strings rowKeys,
+ NamedValueTree rowTree,
+ constcontent GeneralExcelImportAndExportDataRows rows
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-22-2024 (created)
+ rowKeyColumn1 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "浜у湴" );
+ rowKeyColumn2 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "杞﹀瀷" );
+ rowKeyColumn3 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "鍙戝姩鏈洪浂浠跺彿" );
+ rowKeyColumn4 := select( general, GeneralExcelImportAndExportDataColumn, column, column.Name() = "鍙戝姩鏈哄洓浣嶇爜" );
+ tempRowKeyCells1 := selectset( rowKeyColumn1,GeneralExcelImportAndExportDataCell,cell,true );
+ tempRowKeyCells2 := selectset( rowKeyColumn2,GeneralExcelImportAndExportDataCell,cell,true );
+ tempRowKeyCells3 := selectset( rowKeyColumn3,GeneralExcelImportAndExportDataCell,cell,true );
+ tempRowKeyCells4 := selectset( rowKeyColumn4,GeneralExcelImportAndExportDataCell,cell,true );
+
+ for( i := 0; i< tempRowKeyCells1.Size(); i++ ){
+ tempRowKeyCell1 := tempRowKeyCells1.Element( i );
+ tempRowKeyCell2 := tempRowKeyCells2.Element( i );
+ tempRowKeyCell3 := tempRowKeyCells3.Element( i );
+ tempRowKeyCell4 := tempRowKeyCells4.Element( i );
+
+ rowKey := tempRowKeyCell1.Value() + tempRowKeyCell2.Value() + tempRowKeyCell3.Value() + tempRowKeyCell4.Value();
+
+ tempHandle := rowTree.GetHandle( rowKey );
+ rowTree.Root().AddChild( tempHandle ,i);
+ rows.Add( tempRowKeyCell1.GeneralExcelImportAndExportDataRow());
+ rowKeys.Add( rowKey );
+ }
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GenerateColumnIndex.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GenerateColumnIndex.qbl
new file mode 100644
index 0000000..44609af
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GenerateColumnIndex.qbl
@@ -0,0 +1,39 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateColumnIndex (
+ const GeneralExcelImportAndExportDataTable table,
+ LocalTable localTable,
+ NamedValueTree columnTree,
+ LocalColumns columns
+)
+{
+ TextBody:
+ [*
+ // rislai Jun-22-2024 (created)
+ tableColumns := selectset( table,GeneralExcelImportAndExportDataColumn,column,true );
+ for( i := 0; i< tableColumns.Size(); i++ ){
+ generalColumn := tableColumns.Element( i );
+ tempHandle := columnTree.GetHandle( generalColumn.Name() );
+
+ nameValue := guard( columnTree.Root().Child( tempHandle ),null( NamedValue ));
+ if( isnull( nameValue )){
+ index := 999;
+ if( generalColumn.Name() = "浜у湴" ){
+ index := 1;
+ }else if( generalColumn.Name() = "杞﹀瀷" ){
+ index := 2;
+ }else if( generalColumn.Name() = "鍙戝姩鏈洪浂浠跺彿" ){
+ index := 3;
+ }else if( generalColumn.Name() = "鍙戝姩鏈哄洓浣嶇爜" ){
+ index := 4;
+ }else{
+ // 2023/01/01
+ index := [Number]generalColumn.Name().ReplaceAll( "/", "" );
+ }
+ column := localTable.LocalColumn( relnew, Name := generalColumn.Name(),CustomIndex := index );
+ columns.Add( column );
+ columnTree.Root().AddChild( tempHandle,columns.Size() - 1 );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetAttributeNames.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetAttributeNames.qbl
new file mode 100644
index 0000000..1072935
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetAttributeNames.qbl
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetAttributeNames () const declarative as owning Strings
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+ attributeNames := construct( Strings );
+
+ attributeNames.Add( "BaseVersion" );
+ attributeNames.Add( "CompareVersion" );
+ attributeNames.Add( "Gap" );
+
+ return &attributeNames;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetColumnXML.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetColumnXML.qbl
new file mode 100644
index 0000000..6d45dc4
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/StaticMethod_GetColumnXML.qbl
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetColumnXML (
+ const constcontent LocalRows rows,
+ const LocalColumn column,
+ const Strings attributeNames,
+ String type,
+ const MacroPlan macroPlan
+) const as String
+{
+ TextBody:
+ [*
+ // rislai Jun-21-2024 (created)
+ // rislai Jun-20-2024 (created)
+ columnXML := "";
+ cells := selectsortedset( column, LocalCell.astype( LocalCell_DemandComparison ), cell,
+ exists( rows,Elements,element,element = cell.LocalRow()), cell.LocalRow().Index());
+ if( type = "data" ){
+ columnXML := "";
+ if( column.IsAttrbuteColumn() ){
+ columnXML := "<column><name>" + column.Name() + "</name><type>String</type>";
+ }else{
+ columnXML := "<column><name>" + column.Name() + "</name><type>Number</type>";
+ }
+ traverse ( cells, Elements, cell ) {
+ traverse( attributeNames ,Elements,e ){
+ cellXML := '<cell value="' + cell.GetAttributeByName( e ) + '"/>'
+ columnXML := columnXML + cellXML;
+ }
+ }
+ columnXML := columnXML + "</column>";
+ }
+ if( type = "attribute" ){
+ columnXML0_1 := "<column><name>Sales Segment</name><type>String</type>";
+ columnXML0_2 := "<column><name>Generation</name><type>String</type>";
+ columnXML0_3 := "<column><name>MQB/MLB</name><type>String</type>";
+ columnXML0_4 := "<column><name>鍔熺巼</name><type>String</type>";
+
+ columnXML1 := "<column><name>Product ID</name><type>String</type>";
+ columnXML2 := "<column><name>Attribute</name><type>String</type>";
+
+ traverse ( cells, Elements, cell ) {
+ flag := true;
+ traverse( attributeNames ,Elements,e ){
+ if( flag ){
+ cellXML := '<cell value="' + cell.LocalRow().Name() + '"/>'
+ columnXML1 := columnXML1 + cellXML;
+
+ salesSegment := select( cell.LocalRow().LocalTable(),LocalColumn.LocalCell.astype( LocalCell_DemandComparison ),temp_cell,temp_cell.LocalRow() = cell.LocalRow() and temp_cell.LocalColumn().Name() = "浜у湴");
+ if( not isnull( salesSegment )){
+ cellXML0_1 := '<cell value="' + ifexpr( salesSegment.BaseVersionValue() <> "绌�",salesSegment.BaseVersionValue(),salesSegment.CompareVersionValue()) + '"/>';
+ columnXML0_1 := columnXML0_1 + cellXML0_1;
+ }else{
+ cellXML0_1 := '<cell value=" "/>'
+ columnXML0_1 := columnXML0_1 + cellXML0_1;
+ }
+
+ product := select( macroPlan,Product_MP,product,product.ID() = cell.LocalRow().Name() );
+ if( not isnull( product )){
+ cellXML0_2 := '<cell value="' + product.Generation() + '"/>';
+ cellXML0_3 := '<cell value="' + product.MQBMLB() + '"/>';
+ cellXML0_4 := '<cell value="' + product.Power() + '"/>';
+ columnXML0_2 := columnXML0_2 + cellXML0_2;
+ columnXML0_3 := columnXML0_3 + cellXML0_3;
+ columnXML0_4 := columnXML0_4 + cellXML0_4;
+ }else{
+ cellXML0_2 := '<cell value=" "/>';
+ cellXML0_3 := '<cell value=" "/>';
+ cellXML0_4 := '<cell value=" "/>';
+ columnXML0_2 := columnXML0_2 + cellXML0_2;
+ columnXML0_3 := columnXML0_3 + cellXML0_3;
+ columnXML0_4 := columnXML0_4 + cellXML0_4;
+ }
+
+ flag := false;
+ }else{
+ cellXML := '<cell value=" "/>'
+ columnXML1 := columnXML1 + cellXML;
+ cellXML0_1 := '<cell value=" "/>'
+ cellXML0_2 := '<cell value=" "/>';
+ cellXML0_3 := '<cell value=" "/>';
+ cellXML0_4 := '<cell value=" "/>';
+ columnXML0_1 := columnXML0_1 + cellXML0_1;
+ columnXML0_2 := columnXML0_2 + cellXML0_2;
+ columnXML0_3 := columnXML0_3 + cellXML0_3;
+ columnXML0_4 := columnXML0_4 + cellXML0_4;
+ }
+ cellXML := '<cell value="' + e + '"/>'
+ columnXML2 := columnXML2 + cellXML;
+ }
+ }
+ columnXML := columnXML0_1 + "</column>" + columnXML0_2 + "</column>" + columnXML0_3 + "</column>" + columnXML0_4 + "</column>" + columnXML1 + "</column>" + columnXML2 + "</column>";
+ }
+
+ return columnXML;
+ *]
+}
diff --git a/_Main/BL/Type_LocalCell_ProductionComparison/_ROOT_Type_LocalCell_ProductionComparison.qbl b/_Main/BL/Type_LocalCell_ProductionComparison/_ROOT_Type_LocalCell_ProductionComparison.qbl
new file mode 100644
index 0000000..3271cca
--- /dev/null
+++ b/_Main/BL/Type_LocalCell_ProductionComparison/_ROOT_Type_LocalCell_ProductionComparison.qbl
@@ -0,0 +1,9 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+TypeSpecialization LocalCell_ProductionComparison
+{
+ #keys: '2[412672.1.64753741][412672.1.64753740]'
+ Parent: LocalCell
+ StructuredName: 'LocalCell_ProductionComparisons'
+}
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/Attribute_CustomIndex.qbl b/_Main/BL/Type_LocalColumn/Attribute_CustomIndex.qbl
new file mode 100644
index 0000000..08e7058
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Attribute_CustomIndex.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CustomIndex
+{
+ #keys: '3[412672.1.64721865][412672.1.64721864][412672.1.64721866]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_LocalColumn/DefaultValue_CustomIndex.qbl b/_Main/BL/Type_LocalColumn/DefaultValue_CustomIndex.qbl
new file mode 100644
index 0000000..d26aba3
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/DefaultValue_CustomIndex.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+DefaultValue
+{
+ ISOValue: '-999'
+ TargetAttribute: CustomIndex
+}
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_LocalColumn/Function_CalcIndex.qbl b/_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl
new file mode 100644
index 0000000..8319f34
--- /dev/null
+++ b/_Main/BL/Type_LocalColumn/Function_CalcIndex.qbl
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+#parent: #root
+Function CalcIndex
+{
+ TextBody:
+ [*
+ // rislai Jul-24-2024 (created)
+ year := this.Date().Year();
+ month := this.Date().Month();
+ day := this.Date().Day();
+
+ index := [String]year;
+ if( month < 10 ){
+ index := index + "0" + [String]month;
+ }
+ if( day < 10 ){
+ index := index + "0" + [String]day;
+ }
+
+
+ value := ifexpr( this.CustomIndex() = -999,[Number]index,this.CustomIndex() );
+
+ this.Index( value );
+ *]
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_AllTotal.qbl b/_Main/BL/Type_MachineStockData/Attribute_AllTotal.qbl
new file mode 100644
index 0000000..b3eb4eb
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_AllTotal.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute AllTotal
+{
+ #keys: '3[415136.0.931886946][415136.0.931886945][415136.0.931886947]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_DDay.qbl b/_Main/BL/Type_MachineStockData/Attribute_DDay.qbl
new file mode 100644
index 0000000..d1a9eef
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_DDay.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DDay
+{
+ #keys: '3[415136.0.931886953][415136.0.931886952][415136.0.931886954]'
+ Description: '鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_Date.qbl b/_Main/BL/Type_MachineStockData/Attribute_Date.qbl
new file mode 100644
index 0000000..4bc883d
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_Date.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Date
+{
+ #keys: '3[415136.0.931886848][415136.0.931886847][415136.0.931886849]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_Fac.qbl b/_Main/BL/Type_MachineStockData/Attribute_Fac.qbl
new file mode 100644
index 0000000..3330234
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_Fac.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Fac
+{
+ #keys: '3[415136.0.931886928][415136.0.931886927][415136.0.931886929]'
+ Description: '宸ュ巶code'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_FacName.qbl b/_Main/BL/Type_MachineStockData/Attribute_FacName.qbl
new file mode 100644
index 0000000..c29b23b
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_FacName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FacName
+{
+ #keys: '3[415136.0.931886918][415136.0.931886917][415136.0.931886919]'
+ Description: '宸ュ巶鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_Inventory.qbl b/_Main/BL/Type_MachineStockData/Attribute_Inventory.qbl
new file mode 100644
index 0000000..b983b8f
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_Inventory.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Inventory
+{
+ #keys: '3[415136.0.931886842][415136.0.931886841][415136.0.931886843]'
+ Description: '瀵瑰簲鏃ユ湡鐨勫疄闄呭簱瀛樻暟閲�'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_LineType.qbl b/_Main/BL/Type_MachineStockData/Attribute_LineType.qbl
new file mode 100644
index 0000000..bcae9ae
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_LineType.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute LineType
+{
+ #keys: '3[415136.0.931886957][415136.0.931886956][415136.0.931886958]'
+ Description: '浜х嚎绫诲瀷'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_MaterialName.qbl b/_Main/BL/Type_MachineStockData/Attribute_MaterialName.qbl
new file mode 100644
index 0000000..f566022
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_MaterialName.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaterialName
+{
+ #keys: '3[415136.0.931886910][415136.0.931886909][415136.0.931886911]'
+ Description: '闆朵欢鍚嶇О'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_MaterialNo.qbl b/_Main/BL/Type_MachineStockData/Attribute_MaterialNo.qbl
new file mode 100644
index 0000000..9da74c7
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_MaterialNo.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute MaterialNo
+{
+ #keys: '3[415136.0.931886900][415136.0.931886899][415136.0.931886901]'
+ Description: '闆朵欢鍙�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_Product.qbl b/_Main/BL/Type_MachineStockData/Attribute_Product.qbl
new file mode 100644
index 0000000..a249e20
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_Product.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Product
+{
+ #keys: '3[415136.0.931886845][415136.0.931886844][415136.0.931886846]'
+ Description: '浜у搧'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_Total.qbl b/_Main/BL/Type_MachineStockData/Attribute_Total.qbl
new file mode 100644
index 0000000..9691ce7
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_Total.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Total
+{
+ #keys: '3[415136.0.931886936][415136.0.931886935][415136.0.931886937]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_MachineStockData/Attribute_Unit.qbl b/_Main/BL/Type_MachineStockData/Attribute_Unit.qbl
new file mode 100644
index 0000000..0fb83f7
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/Attribute_Unit.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Unit
+{
+ #keys: '3[415136.0.931886839][415136.0.931886838][415136.0.931886840]'
+ Description: '搴撳瓨鐐逛俊鎭�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_MachineStockData/StaticMethod_GenerateData.qbl b/_Main/BL/Type_MachineStockData/StaticMethod_GenerateData.qbl
new file mode 100644
index 0000000..d070932
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/StaticMethod_GenerateData.qbl
@@ -0,0 +1,32 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateData (
+ InterfaceLoginfo owner,
+ StringToDate cnv,
+ JSON item
+) as MachineStockData
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-17-2024 (created)
+ material_no := guard( item.Get( "material_no").GetString(),"");
+ material_name := guard( item.Get( "material_name").GetString(),"");
+ fac_name := guard( item.Get( "fac_name").GetString(),"");
+ fac := guard( item.Get( "fac").GetString(),"");
+ total := guard( item.Get( "total").GetReal(), 0 );
+ all_total := guard( item.Get( "all_total").GetReal(), 0 );
+ dday := guard( item.Get( "dday").GetString(),"");
+ line_type := guard( item.Get( "fac").GetString(),"");
+
+ msdata := owner.MachineStockData( relnew, MaterialNo := material_no
+ , MaterialName := material_name
+ , Fac := fac
+ , FacName := fac_name
+ , Total := total
+ , AllTotal := all_total
+ , DDay := cnv.Convert( dday )
+ , LineType := line_type );
+
+ return msdata;
+ *]
+}
diff --git a/_Main/BL/Type_MachineStockData/StaticMethod_GetRequestBody.qbl b/_Main/BL/Type_MachineStockData/StaticMethod_GetRequestBody.qbl
new file mode 100644
index 0000000..3751bf2
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/StaticMethod_GetRequestBody.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetRequestBody (
+ Date date
+) as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-19-2024 (created)
+ json := JSON::Object()
+ .Add( "inParam", JSON::Object().Add( "dday", date.Format( "Y-M2-D2" ) ).Add( "fac", "" ) ).Build();
+ requestbody := json.AsString();
+ return requestbody
+ *]
+}
diff --git a/_Main/BL/Type_MachineStockData/StaticMethod_Synchronize.qbl b/_Main/BL/Type_MachineStockData/StaticMethod_Synchronize.qbl
new file mode 100644
index 0000000..6bc9761
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/StaticMethod_Synchronize.qbl
@@ -0,0 +1,33 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Synchronize (
+ InterfaceDataset owner,
+ String executor
+)
+{
+ TextBody:
+ [*
+ //// 鐢勫叞楦� Jul-17-2024 (created)
+ date := Date::ActualDate();
+ loginfo := owner.InterfaceLoginfo( relnew, ExecuteUser := executor
+ , Name := Translations::InterfaceDataset_MachineStockData_Name()
+ , InterfaceDateTime := DateTime::ActualTime()
+ , Message := '搴撳瓨鏁版嵁锛堟満鍔犲簱瀛橈級'
+ , RequestBody := MachineStockData::GetRequestBody( date ) );
+
+ data := InterfaceLoginfo::CallInterface( owner, loginfo );
+ if( not isnull( data ) ){
+
+ cnv2 := StringToDate::StandardConverter();
+ cnv2.SetCustomConversion();
+ cnv2.CustomFormatString( 'yyyy-MM-dd' );
+
+ // sadatalist := construct( ShippingActualDatas );
+ for( seq := 0;seq < data.Size();seq++){
+ item := data.Get(seq);
+ MachineStockData::GenerateData( loginfo, cnv2, item );
+ // sadatalist.Add( sadata );
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_MachineStockData/_ROOT_Type_MachineStockData.qbl b/_Main/BL/Type_MachineStockData/_ROOT_Type_MachineStockData.qbl
new file mode 100644
index 0000000..429b55e
--- /dev/null
+++ b/_Main/BL/Type_MachineStockData/_ROOT_Type_MachineStockData.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type MachineStockData
+{
+ #keys: '5[415136.0.931886835][415136.0.931886833][0.0.0][415136.0.931886834][415136.0.931886836]'
+ BaseType: Object
+ Description: '搴撳瓨鏁版嵁锛堟満鍔犲簱瀛橈級'
+ StructuredName: 'MachineStockDatas'
+}
diff --git a/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl b/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl
new file mode 100644
index 0000000..9434ec7
--- /dev/null
+++ b/_Main/BL/Type_OfflinePlanTable/Method_Comparison.qbl
@@ -0,0 +1,62 @@
+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 := "浜ч噺瀵规瘮鎶ヨ〃");
+
+ actualDailyProductionDatas := selectset( macroPlan,ActualDailyProductionData,data,true );
+ actualDailyProductionDataIndexTree := NamedValueTree::Create();
+ for( i := 0; i< actualDailyProductionDatas.Size(); i++ ){
+ actualDailyProductionData := actualDailyProductionDatas.Element( i );
+ actualDailyProductionDataKey := actualDailyProductionData.Product() + actualDailyProductionData.Date().AsQUILL();
+ actualDailyProductionDataHandle := actualDailyProductionDataIndexTree.GetHandle( actualDailyProductionDataKey );
+ actualDailyProductionDataIndexTree.Root().AddChild( actualDailyProductionDataHandle,i );
+ }
+
+ 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();
+ productLine := row.ProductionLine();
+ 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 )){
+ actualDailyProductionDataKey := productID + cell.OfflinePlanColumn().ColumnDate().AsQUILL();
+ actualDailyProductionDataHandle := actualDailyProductionDataIndexTree.GetHandle( actualDailyProductionDataKey );
+ actualDailyProductionDataIndex := guard( actualDailyProductionDataIndexTree.Root().Child( actualDailyProductionDataHandle ),null( NamedValue ));
+
+ actualDailyProductionVolume := 0.0;
+ if( not isnull( actualDailyProductionDataIndex )){
+ actualDailyProductionData := actualDailyProductionDatas.Element( actualDailyProductionDataIndex.GetValueAsNumber() );
+ actualDailyProductionVolume := actualDailyProductionData.ProductionVolume();
+ }
+ localColumn := localColumns.Element( localColumnIndex.GetValueAsNumber() );
+ localRow.LocalCell( relnew,LocalCell_ProductionComparison ,LocalColumn := localColumn,
+ Plan := cell.Quantity(),Actual := actualDailyProductionVolume );
+ }
+ }
+ }
+ traverse( table,LocalColumn,column ){
+ if( column.LocalCell( relsize ) = 0 ){
+ column.Delete();
+ }
+ }
+
+ return table;
+ *]
+}
diff --git a/_Main/BL/Type_ShippingActualCell/Attribute_Quantity.qbl b/_Main/BL/Type_ShippingActualCell/Attribute_Quantity.qbl
new file mode 100644
index 0000000..fc57d0a
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualCell/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+ #keys: '3[415136.0.904040075][415136.0.904040074][415136.0.904040076]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_ShippingActualCell/_ROOT_Type_ShippingActualCell.qbl b/_Main/BL/Type_ShippingActualCell/_ROOT_Type_ShippingActualCell.qbl
new file mode 100644
index 0000000..eea883e
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualCell/_ROOT_Type_ShippingActualCell.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ShippingActualCell
+{
+ #keys: '5[415136.0.904040072][415136.0.904040070][0.0.0][415136.0.904040071][415136.0.904040073]'
+ BaseType: Object
+ Description: '瀹為檯鍙戣繍鏁版嵁鍗曞厓鏍�'
+ StructuredName: 'ShippingActualCells'
+}
diff --git a/_Main/BL/Type_ShippingActualColumn/Attribute_Index.qbl b/_Main/BL/Type_ShippingActualColumn/Attribute_Index.qbl
new file mode 100644
index 0000000..ced89a2
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualColumn/Attribute_Index.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Index
+{
+ #keys: '3[415136.0.904040147][415136.0.904040146][415136.0.904040148]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_ShippingActualColumn/Attribute_StartDate.qbl b/_Main/BL/Type_ShippingActualColumn/Attribute_StartDate.qbl
new file mode 100644
index 0000000..dab5099
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualColumn/Attribute_StartDate.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute StartDate
+{
+ #keys: '3[415136.0.904040023][415136.0.904040022][415136.0.904040024]'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_ShippingActualColumn/_ROOT_Type_ShippingActualColumn.qbl b/_Main/BL/Type_ShippingActualColumn/_ROOT_Type_ShippingActualColumn.qbl
new file mode 100644
index 0000000..da2edb7
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualColumn/_ROOT_Type_ShippingActualColumn.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ShippingActualColumn
+{
+ #keys: '5[415136.0.904040006][415136.0.904040004][0.0.0][415136.0.904040005][415136.0.904040007]'
+ BaseType: Object
+ Description: '瀹為檯鍙戣繍鏁版嵁鍒�'
+ StructuredName: 'ShippingActualColumns'
+}
diff --git a/_Main/BL/Type_ShippingActualData/Attribute_CreateTime.qbl b/_Main/BL/Type_ShippingActualData/Attribute_CreateTime.qbl
new file mode 100644
index 0000000..f856ece
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/Attribute_CreateTime.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute CreateTime
+{
+ #keys: '3[415136.0.904000065][415136.0.904000064][415136.0.904000066]'
+ Description: '鏃堕棿'
+ ValueType: DateTime
+}
diff --git a/_Main/BL/Type_ShippingActualData/Attribute_DDay.qbl b/_Main/BL/Type_ShippingActualData/Attribute_DDay.qbl
new file mode 100644
index 0000000..e1631e0
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/Attribute_DDay.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute DDay
+{
+ #keys: '3[415136.0.904000085][415136.0.904000084][415136.0.904000086]'
+ Description: '鏃ユ湡'
+ ValueType: Date
+}
diff --git a/_Main/BL/Type_ShippingActualData/Attribute_Fac.qbl b/_Main/BL/Type_ShippingActualData/Attribute_Fac.qbl
new file mode 100644
index 0000000..407b39b
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/Attribute_Fac.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Fac
+{
+ #keys: '3[415136.0.904000115][415136.0.904000114][415136.0.904000116]'
+ Description: '宸ュ巶浠g爜'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ShippingActualData/Attribute_FourCode.qbl b/_Main/BL/Type_ShippingActualData/Attribute_FourCode.qbl
new file mode 100644
index 0000000..cc1e7e5
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/Attribute_FourCode.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute FourCode
+{
+ #keys: '3[415136.0.904000095][415136.0.904000094][415136.0.904000096]'
+ Description: '鍥涗綅鐮�'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ShippingActualData/Attribute_ID.qbl b/_Main/BL/Type_ShippingActualData/Attribute_ID.qbl
new file mode 100644
index 0000000..9ced94f
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/Attribute_ID.qbl
@@ -0,0 +1,8 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute ID
+{
+ #keys: '3[415136.0.904000125][415136.0.904000124][415136.0.904000126]'
+ Description: '闆朵欢鍚嶇О'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_ShippingActualData/Attribute_Quantity.qbl b/_Main/BL/Type_ShippingActualData/Attribute_Quantity.qbl
new file mode 100644
index 0000000..594b5da
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/Attribute_Quantity.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Quantity
+{
+ #keys: '3[415136.0.904000105][415136.0.904000104][415136.0.904000106]'
+ ValueType: Real
+}
diff --git a/_Main/BL/Type_ShippingActualData/StaticMethod_Export.qbl b/_Main/BL/Type_ShippingActualData/StaticMethod_Export.qbl
new file mode 100644
index 0000000..2a07ff6
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/StaticMethod_Export.qbl
@@ -0,0 +1,64 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Export (
+ InterfaceDataset owner
+) as BinaryValue
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-18-2024 (created)
+ name := ShippingActualData::GetDefalutName();
+
+ xmlDOMI := XMLDOMImplementation::Create();
+ xmlDOM := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>' + name + '</name></table>' );
+
+ tableElement := xmlDOM.GetElementByTagName( "table", 0 );
+ //Product
+ productcolumnelement := xmlDOM.CreateElement( "column" );
+ productnameelement := xmlDOM.CreateElement( "name" );
+ producttypeelement := xmlDOM.CreateElement( "type" );
+ productnameelement.TextContent( 'Product' );
+ producttypeelement.TextContent( "String" );
+ productcolumnelement.AppendChild( productnameelement );
+ productcolumnelement.AppendChild( producttypeelement );
+
+ tableElement.AppendChild( productcolumnelement );
+ traverse ( owner, ShippingActualColumn, column ) {
+ columnelement := xmlDOM.CreateElement( "column" );
+ nameelement := xmlDOM.CreateElement( "name" );
+ typeelement := xmlDOM.CreateElement( "type" );
+ nameelement.TextContent( column.StartDate().Format( "M2/D2/Y" ) );
+ typeelement.TextContent( "String" );
+ columnelement.AppendChild( nameelement );
+ columnelement.AppendChild( typeelement );
+
+ cells := selectsortedset( column, ShippingActualCell, cell, cell.ShippingActualRow().RowNr() );
+
+ traverse ( cells, Elements, c ) {
+ if( column.Index() = 0 ){
+ row := c.ShippingActualRow();
+ //Product
+ productcellElement := xmlDOM.CreateElement( "cell" );
+ productcellElement.SetAttribute( "value", row.Name() );
+ productcolumnelement.AppendChild( productcellElement );
+ }
+ cellElement := xmlDOM.CreateElement( "cell" );
+ cellElement.SetAttribute( "value", [String]c.Quantity() );
+ columnelement.AppendChild( cellElement );
+ }
+ tableElement.AppendChild( columnelement );
+ }
+
+ xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM )
+
+ //info( xmlString );
+
+ tableGroupHandle := TableGroupHandle::Create( FinancialProductionReport::GetDefaultName() );
+ tableHandle := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) );
+ tableGroupHandle.Add( tableHandle );
+
+ binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true );
+
+ return binaryData.AsBinaryValue();
+ *]
+}
diff --git a/_Main/BL/Type_ShippingActualData/StaticMethod_GenerateData.qbl b/_Main/BL/Type_ShippingActualData/StaticMethod_GenerateData.qbl
new file mode 100644
index 0000000..12089d6
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/StaticMethod_GenerateData.qbl
@@ -0,0 +1,29 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GenerateData (
+ InterfaceLoginfo owner,
+ StringToDateTime cnv1,
+ StringToDate cnv,
+ JSON item
+) as ShippingActualData
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-17-2024 (created)
+ createtime := guard( item.Get( "create_time").GetString(),"");
+ dday := guard( item.Get( "dday").GetString(),"");
+ fourcode := guard( item.Get( "four_code").GetString(),"");
+ quantity := guard( item.Get( "qty").GetReal(), 0);
+ fac := guard( item.Get( "fac").GetString(),"");
+ id := guard( item.Get( "id").GetNumber(),0);
+
+ sadata := owner.ShippingActualData( relnew, CreateTime := cnv1.Convert( createtime )
+ , Fac := fac
+ , FourCode := fourcode
+ , Quantity := quantity
+ , DDay := cnv.Convert( dday )
+ , ID := id);
+
+ return sadata;
+ *]
+}
diff --git a/_Main/BL/Type_ShippingActualData/StaticMethod_GetDefalutName.qbl b/_Main/BL/Type_ShippingActualData/StaticMethod_GetDefalutName.qbl
new file mode 100644
index 0000000..c593be6
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/StaticMethod_GetDefalutName.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetDefalutName () as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-18-2024 (created)
+ return "Shipping actual";
+ *]
+}
diff --git a/_Main/BL/Type_ShippingActualData/StaticMethod_GetRequestBody.qbl b/_Main/BL/Type_ShippingActualData/StaticMethod_GetRequestBody.qbl
new file mode 100644
index 0000000..d122b01
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/StaticMethod_GetRequestBody.qbl
@@ -0,0 +1,15 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod GetRequestBody (
+ Date date
+) as String
+{
+ TextBody:
+ [*
+ // 鐢勫叞楦� Jul-19-2024 (created)
+ json := JSON::Object()
+ .Add( "inParam", JSON::Object().Add( "dday", date.Format( "Y-M2-D2" ) ) ).Build();
+ requestbody := json.AsString();
+ return requestbody
+ *]
+}
diff --git a/_Main/BL/Type_ShippingActualData/StaticMethod_Synchronize.qbl b/_Main/BL/Type_ShippingActualData/StaticMethod_Synchronize.qbl
new file mode 100644
index 0000000..c26a9b3
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/StaticMethod_Synchronize.qbl
@@ -0,0 +1,74 @@
+Quintiq file version 2.0
+#parent: #root
+StaticMethod Synchronize (
+ InterfaceDataset owner,
+ String executor
+)
+{
+ TextBody:
+ [*
+ //// 鐢勫叞楦� Jul-17-2024 (created)
+ date := Date::ActualDate();
+ loginfo := owner.InterfaceLoginfo( relnew, ExecuteUser := executor
+ , Name := Translations::InterfaceDataset_ShippingActualData_Name()
+ , InterfaceDateTime := DateTime::ActualTime()
+ , Message := '鍙戣繍瀹為檯鏁版嵁'
+ , RequestBody := ShippingActualData::GetRequestBody( date ) );
+ // vwedadmin Jul-18-2024 (created)
+ //address := "ds-yunrong-gw.dmp.vwfawedl.mobi";
+ //
+ // /// http://ds-yunrong-gw.dmp.vwfawedl.mobi/data-service/api/service/post-data/V1.101/f4f94c47c1a2440898b5e1e2c0c5cbc8
+ //httpinterface := HTTPInterface::Create( address,80);
+ // httpinterface.URL("/data-service/api/service/post-data/V1.101/f4f94c47c1a2440898b5e1e2c0c5cbc8");
+ //httpinterface.MediaType("application/json");
+ ////httpinterface.SSL(true);
+ ////httpinterface.SSLKeystore("MyKeystore");
+ //httpinterface.PostMethod(true);
+ ////str :='{
+ //// "inParam":
+ //// {
+ //// "dday" : "2024-07-11"
+ //// }
+ ////}'
+ //httpinterface.AddHeader("Authorization","MTlLeG94UEYyNWN5OTZLOFRMXzUyNzA4ODkwNzg1NTA2OTIxNV9wcml2YXRlS2V5XzE3MjEzMDM4Nzc0NTE=")
+ //httpinterface.Call( ShippingActualData::GetRequestBody( column.StartDate() ) ); //Sends request with the header Authorization: 538baa9045a84c0e889f 鍙互浼犻�掑姩鎬乼oken 鐨勫惂
+ //result := httpinterface.Result();
+
+ data := InterfaceLoginfo::CallInterface( owner, loginfo );
+ if( not isnull( data ) ){
+ cnv1 := StringToDateTime::StandardConverter();
+ cnv1.SetCustomConversion();
+ cnv1.CustomFormatString( 'yyyy-MM-dd HH:mm:ss' );
+
+ cnv2 := StringToDate::StandardConverter();
+ cnv2.SetCustomConversion();
+ cnv2.CustomFormatString( 'yyyy-MM-dd' );
+ column := owner.ShippingActualColumn( relnew, StartDate := date, Index := owner.ShippingActualColumn( relsize ) );
+
+ sadatalist := construct( ShippingActualDatas );
+ for( seq := 0;seq < data.Size();seq++){
+ item := data.Get(seq);
+ sadata := ShippingActualData::GenerateData( loginfo, cnv1, cnv2, item );
+ sadatalist.Add( sadata );
+ }
+ beforerowsize := owner.ShippingActualRow( relsize );
+ traverse( sadatalist, Elements, e ){
+ row := selectobject( owner, ShippingActualRow, row, row.Name() = e.FourCode() );
+ if( isnull( row ) ){
+ owner.ShippingActualRow( relnew, Name := e.FourCode() );
+ }
+
+ cell := row.ShippingActualCell( relnew, Quantity := e.Quantity() );
+ column.ShippingActualCell( relinsert, cell );
+ }
+ if( beforerowsize <> owner.ShippingActualRow( relsize ) ){
+ rows := selectsortedset( owner, ShippingActualRow, row, row.Name() );
+ nr := 0;
+ traverse( rows, Elements, e ){
+ e.RowNr( nr );
+ nr := nr + 1;
+ }
+ }
+ }
+ *]
+}
diff --git a/_Main/BL/Type_ShippingActualData/_ROOT_Type_ShippingActualData.qbl b/_Main/BL/Type_ShippingActualData/_ROOT_Type_ShippingActualData.qbl
new file mode 100644
index 0000000..8d74386
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualData/_ROOT_Type_ShippingActualData.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ShippingActualData
+{
+ #keys: '5[415136.0.904000038][415136.0.904000036][0.0.0][415136.0.904000037][415136.0.904000039]'
+ BaseType: Object
+ Description: '鍙戣繍瀹為檯鏁版嵁'
+ StructuredName: 'ShippingActualDatas'
+}
diff --git a/_Main/BL/Type_ShippingActualRow/Attribute_Name.qbl b/_Main/BL/Type_ShippingActualRow/Attribute_Name.qbl
new file mode 100644
index 0000000..39f826d
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualRow/Attribute_Name.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute Name
+{
+ #keys: '3[415136.0.904040051][415136.0.904040050][415136.0.904040052]'
+ ValueType: String
+}
diff --git a/_Main/BL/Type_ShippingActualRow/Attribute_RowNr.qbl b/_Main/BL/Type_ShippingActualRow/Attribute_RowNr.qbl
new file mode 100644
index 0000000..7bbefe5
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualRow/Attribute_RowNr.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute RowNr
+{
+ #keys: '3[415136.0.904040061][415136.0.904040060][415136.0.904040062]'
+ ValueType: Number
+}
diff --git a/_Main/BL/Type_ShippingActualRow/_ROOT_Type_ShippingActualRow.qbl b/_Main/BL/Type_ShippingActualRow/_ROOT_Type_ShippingActualRow.qbl
new file mode 100644
index 0000000..7b9b84b
--- /dev/null
+++ b/_Main/BL/Type_ShippingActualRow/_ROOT_Type_ShippingActualRow.qbl
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+#root
+#parent: #DomainModel
+Type ShippingActualRow
+{
+ #keys: '5[415136.0.904040034][415136.0.904040032][0.0.0][415136.0.904040033][415136.0.904040035]'
+ BaseType: Object
+ Description: '瀹為檯鑸硅繍鏁版嵁琛�'
+ StructuredName: 'ShippingActualRows'
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDebug.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDebug.def
index 3069a9f..a24dc49 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDebug.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDebug.def
@@ -16,6 +16,21 @@
Taborder: 0
]
}
+ Component ButtonInterface
+ {
+ #keys: '[415136.0.931576995]'
+ BaseType: 'WebButton'
+ Children:
+ [
+ #child: ContextMenuInterface
+ ]
+ Properties:
+ [
+ Image: 'ARROW_SHUFFLE'
+ Label: 'Interface'
+ Taborder: 1
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
index 8417130..7f3a077 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupReport.def
@@ -71,6 +71,17 @@
Taborder: 5
]
}
+ Component ButtonOfflinePlanComparisonReport
+ {
+ #keys: '[412672.1.66051424]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'DOCUMENT_INFO'
+ Label: '浜ч噺瀵规瘮鎶ヨ〃'
+ Taborder: 6
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def
new file mode 100644
index 0000000..ac50d15
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def
@@ -0,0 +1,46 @@
+Quintiq file version 2.0
+Component ContextMenuInterface
+{
+ #keys: '[415136.0.931500880]'
+ BaseType: 'WebContextMenu'
+ Children:
+ [
+ Component MenuInterface
+ {
+ #keys: '[415136.0.931500881]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'DOCUMENT'
+ Taborder: 0
+ Title: 'Interface loginfo'
+ ]
+ }
+ Component MenuMachineStockData
+ {
+ #keys: '[415136.0.931501127]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'SPREADSHEET'
+ Taborder: 1
+ Title: 'Machine stock data'
+ ]
+ }
+ Component MenuFinishedEngineInventory
+ {
+ #keys: '[415136.0.933525462]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'SPREADSHEET'
+ Taborder: 2
+ Title: 'Finished engine inventory'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
index 2c89ac6..7221e9b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_abgSecondDevelopmentPlan.def
@@ -16,7 +16,7 @@
Taborder: 0
]
}
- Component bPackagingPlan
+ Component bBlank
{
#keys: '[413988.0.1291640400]'
BaseType: 'WebButton'
@@ -59,6 +59,17 @@
Taborder: 4
]
}
+ Component bShippingActualData
+ {
+ #keys: '[415136.0.905520117]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'TABLE_CONNECTION'
+ Label: 'Shipping data'
+ Taborder: 5
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonOfflinePlanComparisonReport.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonOfflinePlanComparisonReport.def
new file mode 100644
index 0000000..76d3138
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ActionBarGroupReport_ButtonOfflinePlanComparisonReport.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: ActionBarGroupReport/ButtonOfflinePlanComparisonReport
+Response OnClick () id:Response_MacroPlanner_ActionBarGroupReport_ButtonOfflinePlanComparisonReport_OnClick
+{
+ #keys: '[412672.1.66051682]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ // Open view
+ ApplicationMacroPlanner.OpenView( 'OfflinePlanComparisonReport', this );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuFinishedEngineInventory_OnCli.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuFinishedEngineInventory_OnCli.def
new file mode 100644
index 0000000..b68285d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuFinishedEngineInventory_OnCli.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ContextMenuInterface/MenuFinishedEngineInventory
+Response OnClick () id:Response_MacroPlanner_ContextMenuInterface_MenuFinishedEngineInventory_OnClick
+{
+ #keys: '[415136.0.933525609]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMenu_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Finished_engine_inventory", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuInterface_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuInterface_OnClick.def
new file mode 100644
index 0000000..7544bbd
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuInterface_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ContextMenuInterface/MenuInterface
+Response OnClick () id:Response_MacroPlanner_ContextMenuInterface_MenuInterface_OnClick
+{
+ #keys: '[415136.0.931500984]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMenu_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Interface_loginfo_view", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuMachineStockData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuMachineStockData_OnClick.def
new file mode 100644
index 0000000..352d640
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuMachineStockData_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: ContextMenuInterface/MenuMachineStockData
+Response OnClick () id:Response_MacroPlanner_ContextMenuInterface_MenuMachineStockData_OnClick
+{
+ #keys: '[415136.0.932240790]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebMenu_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Machine_stock_data", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bShippingActualData_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bShippingActualData_OnClick.def
new file mode 100644
index 0000000..19a4c93
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_abgSecondDevelopmentPlan_bShippingActualData_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: abgSecondDevelopmentPlan/bShippingActualData
+Response OnClick () id:Response_MacroPlanner_abgSecondDevelopmentPlan_bShippingActualData_OnClick
+{
+ #keys: '[415136.0.905520217]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ApplicationScope.ViewManager().ResetUserViewById( "Shipping_actual_data_view", true);
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_MatrixEditorTable.def
index 8b3cfbe..842cdd6 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_MatrixEditorTable.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_MatrixEditorTable.def
@@ -17,10 +17,10 @@
BaseType: 'WebDataExtractor'
Properties:
[
- DataType: 'LibCal_SubscriberEventTable'
- Source: 'dhTable'
+ DataType: 'structured[LibCal_SubscriberEventColumn]'
+ Source: 'dhColumns'
Taborder: 0
- Transformation: 'LibCal_SubscriberEventColumn.LibCal_SubscriberEventCell'
+ Transformation: 'Elements.LibCal_SubscriberEventCell'
]
}
]
@@ -44,18 +44,16 @@
BaseType: 'WebDataExtractor'
Properties:
[
- DataType: 'LibCal_SubscriberEventTable'
- FilterArguments: 'subscribers:dhSubscribers;eventtypes:dhEventTypes'
- FixedFilter: 'object.FilterBySubscriberAndEventType( subscribers, eventtypes )'
- Source: 'dhTable'
+ DataType: 'structured[LibCal_SubscriberEventRow]'
+ Source: 'dhRows'
Taborder: 0
- Transformation: 'LibCal_SubscriberEventRow'
+ Transformation: 'Elements'
]
}
]
Properties:
[
- Legend: 'RowNr'
+ Legend: 'Name'
SortCriteria: 'RowNr'
Taborder: 1
]
@@ -72,20 +70,18 @@
BaseType: 'WebDataExtractor'
Properties:
[
- DataType: 'LibCal_SubscriberEventTable'
+ DataType: 'structured[LibCal_SubscriberEventColumn]'
Description: 'object.FilterByDatePeriod( Date::MinDate(), Date::MaxDate() )'
- FilterArguments: 'period:dhDate'
- FixedFilter: 'object.FilterByDatePeriod( period.Start(), period.End() )'
- Source: 'dhTable'
+ Source: 'dhColumns'
Taborder: 0
- Transformation: 'LibCal_SubscriberEventColumn'
+ Transformation: 'Elements'
]
}
]
Properties:
[
Legend: 'Name'
- SortCriteria: 'Index'
+ SortCriteria: 'Period'
Taborder: 2
]
}
@@ -110,6 +106,6 @@
Columns: 'MatrixEditorTableColumns'
ContextMenu: 'matrixeditorContextMenuTable'
Rows: 'MatrixEditorTableRows'
- Taborder: 1
+ Taborder: 2
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def
index 15a8928..4178267 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def
@@ -12,7 +12,7 @@
Properties:
[
Image: 'EXPORT1'
- Taborder: 0
+ Taborder: 1
]
}
Component ButtonInitialize
@@ -22,7 +22,17 @@
Properties:
[
Image: 'ARROW_CIRCLE'
- Taborder: 1
+ Taborder: 2
+ ]
+ }
+ Component ButtonSearch
+ {
+ #keys: '[415136.0.922435407]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: 'Search'
+ Taborder: 0
]
}
]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelList.def b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelList.def
index 3a1f26f..23f141e 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelList.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelList.def
@@ -6,14 +6,24 @@
Children:
[
#child: MatrixEditorTable
- Component dhTable
+ Component dhColumns
{
#keys: '[415136.0.672310139]'
BaseType: 'WebDataHolder'
- Databinding: 'LibCal_SubscriberEventTable'
+ Databinding: 'structured[LibCal_SubscriberEventColumn]*'
Properties:
[
Description: '琛�'
+ Taborder: 1
+ ]
+ }
+ Component dhRows
+ {
+ #keys: '[415136.0.922436014]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[LibCal_SubscriberEventRow]*'
+ Properties:
+ [
Taborder: 0
]
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelPeriods.def b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelPeriods.def
index 2b876f1..8e8390c 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelPeriods.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelPeriods.def
@@ -17,7 +17,6 @@
Orientation: 'horizontal'
Taborder: 0
Title: 'Periods'
- Tooltip: '<html>Select if the periods are used for planning or merely for visualization.<br>The planning periods define the granularity at which planning is done.<br>In case of overlapping planning periods, the smallest ones are used.<br>The planning periods are shown in the period overview in blue.</html>'
]
}
]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_OnCreated.def
index 04b4ca1..0d64dac 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_OnCreated.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_OnCreated.def
@@ -11,6 +11,16 @@
[*
this.InitializeSubscribers();
+
+ columns := construct( LibCal_SubscriberEventColumns );
+ rows := construct( LibCal_SubscriberEventRows );
+
+ traverse( dhCalendar.Data(), LibCal_SubscriberEventTable, table, table.ID() = RadioButtonGroupUseForPlanning.BoundValue() ){
+ columns := selectset( table, LibCal_SubscriberEventColumn, column, true );
+ rows := selectset( table, LibCal_SubscriberEventRow, row, true );
+ }
+ dhColumns.Data( &columns );
+ dhRows.Data( &rows );
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def
index 73a9922..63682a2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def
@@ -9,9 +9,9 @@
{
Body:
[*
- binaryValue := LibCal_SubscriberEventTable::Export( dhTable.Data() );
+ binaryValue := LibCal_SubscriberEventTable::Export( dhColumns.Data(), dhRows.Data() );
- Application.Download( "Unavailable events.xlsx", binaryValue.AsBinaryData() );
+ Application.Download( LibCal_SubscriberEventTable::GetDefaultName() + ".xlsx", binaryValue.AsBinaryData() );
*]
GroupServerCalls: false
}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonSearch_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonSearch_OnClick.def
new file mode 100644
index 0000000..5fc08f4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonSearch_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelExport/ButtonSearch
+Response OnClick () id:Response_PanelExport_ButtonSearch_OnClick
+{
+ #keys: '[415136.0.922435443]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ columns := construct( LibCal_SubscriberEventColumns );
+ rows := construct( LibCal_SubscriberEventRows );
+ subscribers := dhSubscribers.Data();
+ eventtypes := dhEventTypes.Data();
+ date := dhDate.Data();
+ traverse( dhCalendar.Data(), LibCal_SubscriberEventTable, table ){
+ columns := selectset( table, LibCal_SubscriberEventColumn, column, column.FilterByDatePeriod( date.Start(), date.End(), RadioButtonGroupUseForPlanning.BoundValue() ) );
+ rows := selectset( table, LibCal_SubscriberEventRow, row, row.FilterBySubscriberAndEventType( subscribers, eventtypes ) );
+ }
+ dhColumns.Data( &columns );
+ dhRows.Data( &rows );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged.def
deleted file mode 100644
index 29c6ed7..0000000
--- a/_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged.def
+++ /dev/null
@@ -1,22 +0,0 @@
-Quintiq file version 2.0
-#parent: PanelPeriods/RadioButtonGroupUseForPlanning
-Response OnChanged () id:Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged
-{
- #keys: '[415136.0.672310167]'
- CanBindMultiple: false
- DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
- QuillAction
- {
- Body:
- [*
- owner_i := dhCalendar.Data();
- if( owner_i.LibCal_SubscriberEventTable( relsize ) < 1 ){
- LibCal_SubscriberEventTable::InitializeTable( dhPotentialSubscribers.Data(), dhCalendar.Data() );
- }
- table := selectobject( owner_i, LibCal_SubscriberEventTable, table, table.ID() = this.BoundValue() );
-
- dhTable.Data( table );
- *]
- GroupServerCalls: false
- }
-}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_ListFinishedEngineInventory.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_ListFinishedEngineInventory.def
new file mode 100644
index 0000000..dec6b0f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_ListFinishedEngineInventory.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListFinishedEngineInventory
+{
+ #keys: '[415136.0.933380308]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractorFinishedEngineInventory
+ {
+ #keys: '[415136.0.933380309]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InterfaceDataset'
+ Source: 'InterfaceDataset'
+ Taborder: 0
+ Transformation: 'InterfaceLoginfo.FinishedEngineInventory'
+ ]
+ }
+ #child: listActionBarPageFinishedEngineInventory
+ Component DataSetLevelFinishedEngineInventory
+ {
+ #keys: '[415136.0.933380314]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenuFinishedEngineInventory
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FourCode","title":"FourCode","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FourCode"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"VehicleType","title":"VehicleType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"VehicleType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReceiptPlace","title":"ReceiptPlace","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReceiptPlace"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FullName","title":"FullName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FullName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SpellName","title":"SpellName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SpellName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineType","title":"EngineType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EngineModularPlatform","title":"EngineModularPlatform","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EngineModularPlatform"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Brand","title":"Brand","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Brand"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"BIPlace","title":"BIPlace","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"BIPlace"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Total","title":"Total","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Total"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Amount","title":"Amount","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Amount"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DType","title":"DType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Fac","title":"Fac","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Fac"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DDay","title":"DDay","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DDay"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DWeek","title":"DWeek","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DWeek"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DMonth","title":"DMonth","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DMonth"}}]'
+ ContextMenu: 'listContextMenuFinishedEngineInventory'
+ SortCriteria: 'desc:DDay'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listActionBarPageFinishedEngineInventory.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listActionBarPageFinishedEngineInventory.def
new file mode 100644
index 0000000..182e5cf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listActionBarPageFinishedEngineInventory.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageFinishedEngineInventory
+{
+ #keys: '[415136.0.933380311]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listContextMenuFinishedEngineInventory.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listContextMenuFinishedEngineInventory.def
new file mode 100644
index 0000000..488df4f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listContextMenuFinishedEngineInventory.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuFinishedEngineInventory
+{
+ #keys: '[415136.0.933380316]'
+ BaseType: 'listContextMenu'
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/_ROOT_Component_FormFinishedEngineInventory.def b/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/_ROOT_Component_FormFinishedEngineInventory.def
new file mode 100644
index 0000000..2fa6221
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/_ROOT_Component_FormFinishedEngineInventory.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormFinishedEngineInventory
+{
+ #keys: '[415136.0.933380255]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: ListFinishedEngineInventory
+ ]
+ Properties:
+ [
+ Image: 'SPREADSHEET'
+ Title: 'Finished engine inventory'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_ListInterfaceLoginfo.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_ListInterfaceLoginfo.def
new file mode 100644
index 0000000..9c5085b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_ListInterfaceLoginfo.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListInterfaceLoginfo
+{
+ #keys: '[415136.0.931545401]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractorInterfaceLoginfo
+ {
+ #keys: '[415136.0.931545402]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'external[InterfaceDataset]'
+ Source: 'InterfaceDataset'
+ Taborder: 0
+ Transformation: 'InterfaceLoginfo'
+ ]
+ }
+ #child: listActionBarPageInterfaceLoginfo
+ Component DataSetLevelInterfaceLoginfo
+ {
+ #keys: '[415136.0.931545407]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenuInterfaceLoginfo
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ExecuteUser","title":"ExecuteUser","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ExecuteUser"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"InterfaceDateTime","title":"InterfaceDateTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"InterfaceDateTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FinishTime","title":"FinishTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FinishTime"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Message","title":"Message","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Message"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Success","title":"Success","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Success"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReturnSuccess","title":"ReturnSuccess","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReturnSuccess"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ReturnMsg","title":"ReturnMsg","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ReturnMsg"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Last","title":"Last","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Last"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"TotalRow","title":"TotalRow","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"TotalRow"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"RequestBody","title":"RequestBody","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"RequestBody"}}]'
+ ContextMenu: 'listContextMenuInterfaceLoginfo'
+ SortCriteria: 'desc:InterfaceDateTime'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listActionBarPageInterfaceLoginfo.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listActionBarPageInterfaceLoginfo.def
new file mode 100644
index 0000000..5e6a83a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listActionBarPageInterfaceLoginfo.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageInterfaceLoginfo
+{
+ #keys: '[415136.0.931545404]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listContextMenuInterfaceLoginfo.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listContextMenuInterfaceLoginfo.def
new file mode 100644
index 0000000..e02fdda
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listContextMenuInterfaceLoginfo.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuInterfaceLoginfo
+{
+ #keys: '[415136.0.931545409]'
+ BaseType: 'listContextMenu'
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/_ROOT_Component_FormInterfaceLoginfo.def b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/_ROOT_Component_FormInterfaceLoginfo.def
new file mode 100644
index 0000000..884db36
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/_ROOT_Component_FormInterfaceLoginfo.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormInterfaceLoginfo
+{
+ #keys: '[415136.0.931210186]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: ListInterfaceLoginfo
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT'
+ Title: 'Interface loginfo'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_ListMachineStockData.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_ListMachineStockData.def
new file mode 100644
index 0000000..f9f1e69
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_ListMachineStockData.def
@@ -0,0 +1,42 @@
+Quintiq file version 2.0
+Component ListMachineStockData
+{
+ #keys: '[415136.0.931501240]'
+ BaseType: 'WebList'
+ Children:
+ [
+ Component DataExtractorMachineStockData
+ {
+ #keys: '[415136.0.931501241]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InterfaceDataset'
+ Source: 'InterfaceDataset'
+ Taborder: 0
+ Transformation: 'InterfaceLoginfo.MachineStockData'
+ ]
+ }
+ #child: listActionBarPageMachineStockData
+ Component DataSetLevelMachineStockData
+ {
+ #keys: '[415136.0.931501246]'
+ BaseType: 'WebDataSetLevel'
+ Children:
+ [
+ #child: listContextMenuMachineStockData
+ ]
+ Properties:
+ [
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialNo","title":"MaterialNo","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialNo"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"MaterialName","title":"MaterialName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"MaterialName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Fac","title":"Fac","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Fac"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"FacName","title":"FacName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"FacName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LineType","title":"LineType","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LineType"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"DDay","title":"DDay","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"DDay"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Total","title":"Total","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Total"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AllTotal","title":"AllTotal","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AllTotal"}}]'
+ ContextMenu: 'listContextMenuMachineStockData'
+ SortCriteria: 'desc:DDay'
+ Taborder: 2
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listActionBarPageMachineStockData.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listActionBarPageMachineStockData.def
new file mode 100644
index 0000000..b082d74
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listActionBarPageMachineStockData.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listActionBarPageMachineStockData
+{
+ #keys: '[415136.0.931501243]'
+ BaseType: 'listActionBarPage'
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listContextMenuMachineStockData.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listContextMenuMachineStockData.def
new file mode 100644
index 0000000..e8477ce
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listContextMenuMachineStockData.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component listContextMenuMachineStockData
+{
+ #keys: '[415136.0.931501248]'
+ BaseType: 'listContextMenu'
+ Properties:
+ [
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/_ROOT_Component_FormMachineStockData.def b/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/_ROOT_Component_FormMachineStockData.def
new file mode 100644
index 0000000..5e5e176
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/_ROOT_Component_FormMachineStockData.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormMachineStockData
+{
+ #keys: '[415136.0.931501186]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: ListMachineStockData
+ ]
+ Properties:
+ [
+ Image: 'SPREADSHEET'
+ Title: 'Machine stock data'
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_MatrixEditor\043988.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_MatrixEditor\043988.def"
new file mode 100644
index 0000000..9fe94ea
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_MatrixEditor\043988.def"
@@ -0,0 +1,102 @@
+Quintiq file version 2.0
+Component MatrixEditor id:MatrixEditor_988
+{
+ #keys: '[412672.1.61940674]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCell
+ {
+ #keys: '[412672.1.61940675]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCells
+ {
+ #keys: '[412672.1.61940676]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'LocalRow.LocalCell.astype(LocalCell_ProductionComparison)'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Plan;Actual;Gap'
+ Column: 'LocalColumn'
+ Row: 'LocalRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRows
+ {
+ #keys: '[412672.1.61940677]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRows
+ {
+ #keys: '[412672.1.61940678]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ FilterArguments: 'checkedProduct:QMacroPlanner::FormOfflinePlanComparison.dhFinelProduct'
+ FixedFilter: 'exists( checkedProduct,Elements,product,product.ID() = object.Name() )'
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'LocalRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'Index'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumns
+ {
+ #keys: '[412672.1.61940679]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumns
+ {
+ #keys: '[412672.1.61940680]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'LocalTable'
+ FilterArguments: 'startDate:QMacroPlanner::FormOfflinePlanComparison.dhStartDate;endDate:QMacroPlanner::FormOfflinePlanComparison.dhEndDate'
+ FixedFilter: 'not object.IsAttrbuteColumn() and startDate <= object.Date() and endDate > object.Date()'
+ Source: 'dhComparisonData'
+ Taborder: 0
+ Transformation: 'LocalColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Date'
+ SortCriteria: 'Index'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageDemandComparison_1
+ #child: matrixeditorContextMenuDemandComparison_1
+ ]
+ Properties:
+ [
+ AllowMultipleAttributes: true
+ Columns: 'MatrixEditorColumns'
+ ContextMenu: 'matrixeditorContextMenuDemandComparison'
+ Rows: 'MatrixEditorRows'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison\043634.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison\043634.def"
new file mode 100644
index 0000000..d1923c2
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelDemandComparison\043634.def"
@@ -0,0 +1,84 @@
+Quintiq file version 2.0
+Component PanelDemandComparison id:PanelDemandComparison_634
+{
+ #keys: '[412672.1.61940673]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditor_988
+ Component dhComparisonData
+ {
+ #keys: '[412672.1.61940683]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'LocalTable'
+ Properties:
+ [
+ Taborder: 1
+ ]
+ }
+ Component dhCheckedProduct
+ {
+ #keys: '[412672.1.61940684]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Product_MP]*'
+ Children:
+ [
+ Component deCheckedProduct
+ {
+ #keys: '[412672.1.61940685]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[Product_MP]'
+ Source: 'ApplicationMacroPlanner.DataHolderCheckedProduct'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 3
+ ]
+ }
+ Component dhFinelProduct
+ {
+ #keys: '[412672.1.61940686]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[Product_MP]*'
+ Properties:
+ [
+ Taborder: 2
+ ]
+ }
+ Component dhCheckedSalesSegment
+ {
+ #keys: '[412672.1.61940687]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'structured[SalesSegment_MP]*'
+ Children:
+ [
+ Component deCheckedSalesSegment
+ {
+ #keys: '[412672.1.61940688]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'structured[SalesSegment_MP]'
+ Source: 'ApplicationMacroPlanner.DataHolderCheckedSalesSegment'
+ Taborder: 0
+ Transformation: 'Elements'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 4
+ ]
+ }
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter\043119.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter\043119.def"
new file mode 100644
index 0000000..688487d
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelFilter\043119.def"
@@ -0,0 +1,96 @@
+Quintiq file version 2.0
+Component PanelFilter id:PanelFilter_119
+{
+ #keys: '[412672.1.61991354]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddslGeneration
+ {
+ #keys: '[412672.1.61991355]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'Generation'
+ Taborder: 0
+ ]
+ }
+ Component ddslMQBMLB
+ {
+ #keys: '[412672.1.61991356]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: 'MQB/MLB'
+ Taborder: 1
+ ]
+ }
+ Component ddslPower
+ {
+ #keys: '[412672.1.61991357]'
+ BaseType: 'WebDropDownStringList'
+ Properties:
+ [
+ Label: '鍔熺巼'
+ Taborder: 2
+ ]
+ }
+ Component dsStartDate
+ {
+ #keys: '[412672.1.61991358]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Label: 'Start Date'
+ Taborder: 3
+ ]
+ }
+ Component dsEndDate
+ {
+ #keys: '[412672.1.61991359]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ Date: 9999-12-31
+ Label: 'End Date'
+ Taborder: 5
+ ]
+ }
+ Component ButtonFilter
+ {
+ #keys: '[412672.1.61991360]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '杩囨护'
+ Taborder: 7
+ ]
+ }
+ Component dhStartDate
+ {
+ #keys: '[412672.1.61991361]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Date*'
+ Properties:
+ [
+ Taborder: 4
+ ]
+ }
+ Component dhEndDate
+ {
+ #keys: '[412672.1.61991362]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Date*'
+ Properties:
+ [
+ Taborder: 6
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def
new file mode 100644
index 0000000..8c81a3d
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+Component PanelRibbon
+{
+ #keys: '[412672.1.64210439]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: PanelFilter_119
+ #child: PanelRibbon504
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def
new file mode 100644
index 0000000..1350b9a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def
@@ -0,0 +1,72 @@
+Quintiq file version 2.0
+Component PanelRibbon504
+{
+ #keys: '[412672.1.64850929]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ddlOfflinePlanTable
+ {
+ #keys: '[412672.1.64850982]'
+ BaseType: 'WebDropDownList'
+ Databinding: 'OfflinePlanTable'
+ Children:
+ [
+ Component DataExtractorRibbon
+ {
+ #keys: '[412672.1.64850983]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'MacroPlan'
+ Source: 'MacroPlan'
+ Taborder: 0
+ Transformation: 'OfflinePlanTable'
+ ]
+ }
+ ]
+ Properties:
+ [
+ DisplayField: 'SaveDateTime'
+ Label: '涓嬬嚎璁″垝:'
+ Taborder: 0
+ ]
+ }
+ Component bComparison
+ {
+ #keys: '[412672.1.64851009]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '寮�濮嬪姣�'
+ Taborder: 1
+ ]
+ }
+ Component LabelRibbon
+ {
+ #keys: '[412672.1.66018113]'
+ BaseType: 'WebLabel'
+ Properties:
+ [
+ DataBinding: 'ddlOfflinePlanTable.Data.SaveDateTime'
+ Taborder: 2
+ ]
+ }
+ Component ButtonRibbon
+ {
+ #keys: '[415720.0.38711791]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Label: '瀹為檯鐢熶骇鏁版嵁鎺ュ彛鍚屾'
+ Taborder: 3
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_matrixEditorActionBarPageDemandComparison\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_matrixEditorActionBarPageDemandComparison\0431.def"
new file mode 100644
index 0000000..f0083f7
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_matrixEditorActionBarPageDemandComparison\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageDemandComparison id:matrixEditorActionBarPageDemandComparison_1
+{
+ #keys: '[412672.1.61940681]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_matrixeditorContextMenuDemandComparison\0431.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_matrixeditorContextMenuDemandComparison\0431.def"
new file mode 100644
index 0000000..5cd9345
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_matrixeditorContextMenuDemandComparison\0431.def"
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuDemandComparison id:matrixeditorContextMenuDemandComparison_1
+{
+ #keys: '[412672.1.61940682]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged.def
new file mode 100644
index 0000000..15c2b22
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelDemandComparison_634/dhCheckedProduct
+Response OnDataChanged () id:Response_PanelDemandComparison_634_dhCheckedProduct_OnDataChanged
+{
+ #keys: '[412672.1.61940669]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( this.Data().Size() <> 0 ){
+ dhFinelProduct.Data( this.Data().Copy() );
+ }else{
+ dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged.def
new file mode 100644
index 0000000..48ec71e
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: PanelDemandComparison_634/dhCheckedSalesSegment
+Response OnDataChanged () id:Response_PanelDemandComparison_634_dhCheckedSalesSegment_OnDataChanged
+{
+ #keys: '[412672.1.61940667]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ if( this.Data().Size() <> 0 ){
+ prods := selectset( dhFinelProduct.Data(),Elements,element,exists( this.Data(),Elements.SalesDemand.Product_MP,prod,element = prod ));
+ dhFinelProduct.Data( &prods );
+ }else{
+ dhFinelProduct.Data( DataHolderProduct.Data().Copy() );
+ }
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhComparisonData_OnDataChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhComparisonData_OnDataChanged.def
new file mode 100644
index 0000000..0142a22
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhComparisonData_OnDataChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelDemandComparison_634/dhComparisonData
+Response OnDataChanged () id:Response_PanelDemandComparison_634_dhComparisonData_OnDataChanged
+{
+ #keys: '[412672.1.61940670]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnDataChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ PanelDemandComparison.Title( this.Data().Name() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhFinelProduct_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhFinelProduct_OnCreated.def
new file mode 100644
index 0000000..c3eacc2
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelDemandComparison_634_dhFinelProduct_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelDemandComparison_634/dhFinelProduct
+Response OnCreated () id:Response_PanelDemandComparison_634_dhFinelProduct_OnCreated
+{
+ #keys: '[412672.1.61940668]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( DataHolderProduct.Data().Copy() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ButtonFilter_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ButtonFilter_OnClick.def
new file mode 100644
index 0000000..a4f3788
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ButtonFilter_OnClick.def
@@ -0,0 +1,26 @@
+Quintiq file version 2.0
+#parent: PanelFilter_119/ButtonFilter
+Response OnClick () id:Response_PanelFilter_119_ButtonFilter_OnClick
+{
+ #keys: '[412672.1.61991348]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ products := dhCheckedProduct.Data().Copy();
+ if( ddslGeneration.Text() <> "<All>" ){
+ products := selectset( products,Elements,element,element.Generation() <> ddslGeneration.Text());
+ }
+ if( ddslMQBMLB.Text() <> "<All>" ){
+ products := selectset( products,Elements,element,element.MQBMLB() <> ddslMQBMLB.Text());
+ }
+ if( ddslPower.Text() <> "<All>" ){
+ products := selectset( products,Elements,element,element.Power() <> ddslPower.Text());
+ }
+ dhFinelProduct.Data( &products );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslGeneration_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslGeneration_OnCreated.def
new file mode 100644
index 0000000..d7286fc
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslGeneration_OnCreated.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelFilter_119/ddslGeneration
+Response OnCreated () id:Response_PanelFilter_119_ddslGeneration_OnCreated
+{
+ #keys: '[412672.1.61991353]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.Generation() );
+
+ res := strings.Concatenate( ";" );
+
+ this.Strings( "<All>;" + res );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslMQBMLB_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslMQBMLB_OnCreated.def
new file mode 100644
index 0000000..3228a00
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslMQBMLB_OnCreated.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelFilter_119/ddslMQBMLB
+Response OnCreated () id:Response_PanelFilter_119_ddslMQBMLB_OnCreated
+{
+ #keys: '[412672.1.61991352]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.MQBMLB() );
+
+ res := strings.Concatenate( ";" );
+
+ this.Strings( "<All>;" + res );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslPower_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslPower_OnCreated.def
new file mode 100644
index 0000000..7d8370b
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_ddslPower_OnCreated.def
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: PanelFilter_119/ddslPower
+Response OnCreated () id:Response_PanelFilter_119_ddslPower_OnCreated
+{
+ #keys: '[412672.1.61991351]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ strings := selectuniquevalues( MacroPlan,Product_MP,product,not product.IsSystem(),product.Power() );
+
+ res := strings.Concatenate( ";" );
+
+ this.Strings( "<All>;" + res );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dhEndDate_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dhEndDate_OnCreated.def
new file mode 100644
index 0000000..2aedb4a
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dhEndDate_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelFilter_119/dhEndDate
+Response OnCreated () id:Response_PanelFilter_119_dhEndDate_OnCreated
+{
+ #keys: '[412672.1.61991346]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( Date::MaxDate() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dhStartDate_OnCreated.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dhStartDate_OnCreated.def
new file mode 100644
index 0000000..a2dc135
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dhStartDate_OnCreated.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelFilter_119/dhStartDate
+Response OnCreated () id:Response_PanelFilter_119_dhStartDate_OnCreated
+{
+ #keys: '[412672.1.61991347]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebComponent_OnCreated'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ this.Data( Date::MinDate() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dsEndDate_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dsEndDate_OnChanged.def
new file mode 100644
index 0000000..79ee881
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dsEndDate_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelFilter_119/dsEndDate
+Response OnChanged () id:Response_PanelFilter_119_dsEndDate_OnChanged
+{
+ #keys: '[412672.1.61991349]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dhEndDate.Data( this.Date() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dsStartDate_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dsStartDate_OnChanged.def
new file mode 100644
index 0000000..1b7e133
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelFilter_119_dsStartDate_OnChanged.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelFilter_119/dsStartDate
+Response OnChanged () id:Response_PanelFilter_119_dsStartDate_OnChanged
+{
+ #keys: '[412672.1.61991350]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ GroupServerCalls: true
+ QuillAction
+ {
+ Body:
+ [*
+ dhStartDate.Data( this.Date() );
+ *]
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_ButtonRibbon_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_ButtonRibbon_OnClick.def
new file mode 100644
index 0000000..c472499
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_ButtonRibbon_OnClick.def
@@ -0,0 +1,16 @@
+Quintiq file version 2.0
+#parent: PanelRibbon504/ButtonRibbon
+Response OnClick () id:Response_PanelRibbon504_ButtonRibbon_OnClick
+{
+ #keys: '[415720.0.38711805]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ ActualDailyProductionData::Synchronize( MacroPlan,InterfaceDataset );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick\043613.def" "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick\043613.def"
new file mode 100644
index 0000000..99add2b
--- /dev/null
+++ "b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick\043613.def"
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#parent: PanelRibbon504/bComparison
+Response OnClick () id:Response_PanelRibbon504_bComparison_OnClick_613
+{
+ #keys: '[412672.1.64851008]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ QuillAction
+ {
+ Body:
+ [*
+ opt := ddlOfflinePlanTable.Data();
+
+ dhComparisonData.Data( opt.Comparison( RecycleBin ));
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def
new file mode 100644
index 0000000..064466f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/_ROOT_Component_FormOfflinePlanComparison.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormOfflinePlanComparison
+{
+ #keys: '[412672.1.61921213]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: PanelRibbon
+ #child: PanelDemandComparison_634
+ ]
+ Properties:
+ [
+ Image: 'DOCUMENT_INFO'
+ Title: '浜ч噺瀵规瘮鎶ヨ〃'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_MatrixEditorTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_MatrixEditorTable.def
new file mode 100644
index 0000000..82d2baf
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_MatrixEditorTable.def
@@ -0,0 +1,97 @@
+Quintiq file version 2.0
+Component MatrixEditorTable
+{
+ #keys: '[415136.0.904311855]'
+ BaseType: 'WebMatrixEditor'
+ Children:
+ [
+ Component MatrixEditorCellTable
+ {
+ #keys: '[415136.0.904311856]'
+ BaseType: 'WebMatrixEditorCell'
+ Children:
+ [
+ Component DataExtractorCell
+ {
+ #keys: '[415136.0.904311857]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InterfaceDataset'
+ Source: 'InterfaceDataset'
+ Taborder: 0
+ Transformation: 'ShippingActualRow.ShippingActualCell'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Attributes: 'Quantity'
+ Column: 'ShippingActualColumn'
+ Row: 'ShippingActualRow'
+ Taborder: 0
+ ]
+ }
+ Component MatrixEditorRowsTable
+ {
+ #keys: '[415136.0.904311860]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorRow
+ {
+ #keys: '[415136.0.904311861]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InterfaceDataset'
+ Source: 'InterfaceDataset'
+ Taborder: 0
+ Transformation: 'ShippingActualRow'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'Name'
+ SortCriteria: 'RowNr'
+ Taborder: 1
+ ]
+ }
+ Component MatrixEditorColumnsTable
+ {
+ #keys: '[415136.0.904311864]'
+ BaseType: 'WebMatrixEditorHeaderLevel'
+ Children:
+ [
+ Component DataExtractorColumn
+ {
+ #keys: '[415136.0.904311865]'
+ BaseType: 'WebDataExtractor'
+ Properties:
+ [
+ DataType: 'InterfaceDataset'
+ Source: 'InterfaceDataset'
+ Taborder: 0
+ Transformation: 'ShippingActualColumn'
+ ]
+ }
+ ]
+ Properties:
+ [
+ Legend: 'StartDate'
+ SortCriteria: 'StartDate'
+ Taborder: 2
+ ]
+ }
+ #child: matrixEditorActionBarPageTable
+ #child: matrixeditorContextMenuTable
+ ]
+ Properties:
+ [
+ Columns: 'MatrixEditorColumnsTable'
+ ContextMenu: 'matrixeditorContextMenuTable'
+ Rows: 'MatrixEditorRowsTable'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_PanelButton.def b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_PanelButton.def
new file mode 100644
index 0000000..8178b3f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_PanelButton.def
@@ -0,0 +1,25 @@
+Quintiq file version 2.0
+Component PanelButton
+{
+ #keys: '[415136.0.904311760]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ Component ButtonButton
+ {
+ #keys: '[415136.0.904311805]'
+ BaseType: 'WebButton'
+ Properties:
+ [
+ Image: 'EXPORT1'
+ Taborder: 0
+ ]
+ }
+ ]
+ Properties:
+ [
+ FixedSize: true
+ Orientation: 'horizontal'
+ Taborder: 0
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_PanelTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_PanelTable.def
new file mode 100644
index 0000000..40e1586
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_PanelTable.def
@@ -0,0 +1,14 @@
+Quintiq file version 2.0
+Component PanelTable
+{
+ #keys: '[415136.0.904311784]'
+ BaseType: 'WebPanel'
+ Children:
+ [
+ #child: MatrixEditorTable
+ ]
+ Properties:
+ [
+ Taborder: 1
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_matrixEditorActionBarPageTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_matrixEditorActionBarPageTable.def
new file mode 100644
index 0000000..106bbe8
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_matrixEditorActionBarPageTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixEditorActionBarPageTable
+{
+ #keys: '[415136.0.904311868]'
+ BaseType: 'matrixEditorActionBarPage'
+ Properties:
+ [
+ Taborder: 3
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_matrixeditorContextMenuTable.def b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_matrixeditorContextMenuTable.def
new file mode 100644
index 0000000..312fee5
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Component_matrixeditorContextMenuTable.def
@@ -0,0 +1,10 @@
+Quintiq file version 2.0
+Component matrixeditorContextMenuTable
+{
+ #keys: '[415136.0.904311871]'
+ BaseType: 'matrixeditorContextMenu'
+ Properties:
+ [
+ Taborder: 4
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Response_PanelButton_ButtonButton_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Response_PanelButton_ButtonButton_OnClick.def
new file mode 100644
index 0000000..fe6c193
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/Response_PanelButton_ButtonButton_OnClick.def
@@ -0,0 +1,24 @@
+Quintiq file version 2.0
+#parent: PanelButton/ButtonButton
+Response OnClick () id:Response_PanelButton_ButtonButton_OnClick
+{
+ #keys: '[415136.0.904312139]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebButton_OnClick'
+ Precondition:
+ [*
+ return not isnull( InterfaceDataset );
+ *]
+ QuillAction
+ {
+ Body:
+ [*
+ binaryValue := ShippingActualData::Export( InterfaceDataset );
+
+ Application.Download( ShippingActualData::GetDefalutName() + '.xlsx', binaryValue.AsBinaryData() );
+
+ //ShippingActualData::Synchronize( InterfaceDataset );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/_ROOT_Component_FormShippingActualData.def b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/_ROOT_Component_FormShippingActualData.def
new file mode 100644
index 0000000..e9be208
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_FormShippingActualData/_ROOT_Component_FormShippingActualData.def
@@ -0,0 +1,18 @@
+Quintiq file version 2.0
+#root
+#parent: MacroPlannerWebApp
+OrphanComponent FormShippingActualData
+{
+ #keys: '[415136.0.904311721]'
+ BaseType: 'WebForm'
+ Children:
+ [
+ #child: PanelButton
+ #child: PanelTable
+ ]
+ Properties:
+ [
+ Image: 'TABLE_CONNECTION'
+ Title: 'Shipping data'
+ ]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def
index 2716134..6568406 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def
@@ -40,7 +40,6 @@
Properties:
[
DataType: 'structured[LibCal_EventType]'
- FixedFilter: 'object.IsLeaf()'
Source: 'dhEventTypes'
Taborder: 0
Transformation: 'Elements'
@@ -49,6 +48,7 @@
]
Properties:
[
+ AllowEmpty: true
Description: 'dhEvent.Data.EventType'
DisplayField: 'Name'
NumberOfColumns: 15
@@ -61,5 +61,6 @@
[
Orientation: 'horizontal'
Taborder: 4
+ Visible: false
]
}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_CreateEvent\043791.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_CreateEvent\043791.def"
index a775035..a9d7c68 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_CreateEvent\043791.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_CreateEvent\043791.def"
@@ -29,6 +29,13 @@
{
sEvent.Type( LibCal_Event::TYPE_PARTIAL() );
}
+ if( guard( category_i.Name() = LibCal_Event::TYPE_UNAVAILABLE(), false ) )
+ {
+ pnlEventType.Visible( true );
+ }else
+ {
+ pnlEventType.Visible( false );
+ }
// Set the Event and the related controls...
// The values are explicitly assigned here 'at the beginning' to the controls,
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_EditEvent.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_EditEvent.def
index c5a9ec4..243a121 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_EditEvent.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_EditEvent.def
@@ -29,7 +29,14 @@
this.InitializeEventTypes();
// Must be done here, when done in the OnCreated() the checkmarks are not always set.
this.InitializeSubscribers();
-
+ if( guard( sEvent.EventCategory().Name() = LibCal_Event::TYPE_UNAVAILABLE(), false ) )
+ {
+ pnlEventType.Visible( true );
+ }else
+ {
+ pnlEventType.Visible( false );
+ }
+ ddlEventType.Data( sEvent.EventType() );
// Open the dialog.
this.Show( "modal" );
*]
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_ListList.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_ListList.def
index b212955..15c2afa 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_ListList.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_ListList.def
@@ -12,7 +12,7 @@
Properties:
[
DataType: 'LibCal_EventCategory'
- FixedFilter: "object.Participation().Calendar().CalendarID() <> 'Common Calendar'"
+ FixedFilter: "object.Participation().Calendar().CalendarID() <> 'Common Calendar' and object.Participation().Event().IsMultiple()"
Source: 'dhCategory'
Taborder: 0
Transformation: 'Event.Participation.ExplicitTimeInterval'
@@ -29,8 +29,9 @@
]
Properties:
[
- Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StartDate","title":"StartDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":""}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Calendar.CalendarID","title":"CalendarID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Calendar.CalendarID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.EventType.Name","title":"Name","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.EventType.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.Subject","title":"Subject","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.Subject"}},{"attribute":{"classtype":"WebApiDefinitionAttributeExpression","columnid":"StartDate","title":"StartDate","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.Start().Date()"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.StartTimeOfDay","title":"StartTimeOfDay","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.StartTimeOfDay"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.EndTimeOfDay","title":"EndTimeOfDay","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.EndTimeOfDay"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.Description","title":"Description","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.Description"}}]'
+ Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Calendar.CalendarID","title":"浜х嚎","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Calendar.CalendarID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.EventType.Name","title":"浜嬩欢绫诲瀷","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.EventType.Name"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.Subject","title":"浜嬩欢","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.Subject"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Start","title":"寮�濮嬫棩鏈�","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Start"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"End","title":"缁撴潫鏃ユ湡","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"End"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.Description","title":"澶囨敞","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.Description"}}]'
ContextMenu: 'listContextMenu967'
+ SortCriteria: 'desc:Start'
Taborder: 2
]
}
@@ -39,4 +40,22 @@
[
Taborder: 0
]
+ ResponseDefinitions:
+ [
+ DelegatedResponseDefinition OnClick id:Responsedef_ListList_WebMenu_OnClick
+ {
+ #keys: '[415136.0.905460388]'
+ Initiator: 'WebMenu'
+ IsInherited: false
+ ResponseType: 'OnClick'
+ Arguments:
+ [
+ ResponseDefinitionArgument selection
+ {
+ #keys: '[1197.0.10345066]'
+ Binding: 'this.Selection()'
+ }
+ ]
+ }
+ ]
}
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def"
index ba6fd1e..56e3225 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader\043144.def"
@@ -12,7 +12,7 @@
Properties:
[
DataBinding: 'dhEvent.Data.Subject'
- Label: 'Name'
+ Label: '浜嬩欢'
PlaceHolder: '<Enter a name>'
Taborder: 0
]
@@ -25,10 +25,11 @@
[
CanBeNegative: false
DurationFormat: 'h:m'
- Label: 'Start time'
+ Label: '寮�濮嬫棩鏈�'
MaxDuration: P0DT23H59M0S
MinDuration: P0DT0H0M0S
- Taborder: 8
+ ShowLabel: false
+ Taborder: 9
]
}
Component dhStartTimeOfDay
@@ -38,7 +39,7 @@
Databinding: 'Duration'
Properties:
[
- Taborder: 9
+ Taborder: 10
]
}
Component durEndTimeOfDay
@@ -49,10 +50,11 @@
[
CanBeNegative: false
DurationFormat: 'h:m'
- Label: 'End time'
+ Label: '缁撴潫鏃ユ湡'
MaxDuration: P0DT23H59M0S
MinDuration: P0DT0H0M0S
- Taborder: 10
+ ShowLabel: false
+ Taborder: 13
]
}
Component dhEndTimeOfDay
@@ -62,7 +64,7 @@
Databinding: 'Duration'
Properties:
[
- Taborder: 11
+ Taborder: 14
]
}
Component edtDescription
@@ -77,7 +79,7 @@
Multiline: true
NumberOfColumns: 29
ShowLabel: false
- Taborder: 13
+ Taborder: 16
]
}
Component dsStartDate
@@ -87,8 +89,8 @@
Properties:
[
DateFormat: 'DMMY'
- Label: 'Date'
- Taborder: 6
+ Label: '寮�濮嬫棩鏈�'
+ Taborder: 7
]
}
Component dhStartDate
@@ -98,7 +100,7 @@
Databinding: 'Date'
Properties:
[
- Taborder: 7
+ Taborder: 8
]
}
Component lblDescription id:lblDescription_456
@@ -107,9 +109,9 @@
BaseType: 'WebLabel'
Properties:
[
- Label: 'Description'
+ Label: '澶囨敞'
NumberOfColumns: 0
- Taborder: 12
+ Taborder: 15
]
}
Component ButtonCreate
@@ -118,8 +120,8 @@
BaseType: 'WebButton'
Properties:
[
- Label: '鏂板缓'
- Taborder: 14
+ Label: '鏂板'
+ Taborder: 17
]
}
Component ddslType id:ddslType_360
@@ -190,7 +192,6 @@
Properties:
[
DataType: 'structured[LibCal_EventType]'
- FixedFilter: 'object.IsLeaf()'
Source: 'dhEventTypes'
Taborder: 0
Transformation: 'Elements'
@@ -199,12 +200,46 @@
]
Properties:
[
+ AllowEmpty: true
DisplayField: 'Name'
- Label: 'Event type'
+ Label: '浜嬩欢绫诲瀷'
NumberOfColumns: 15
Taborder: 3
]
}
+ Component dsEndDate
+ {
+ #keys: '[415136.0.923680588]'
+ BaseType: 'WebDateSelector'
+ Properties:
+ [
+ DateFormat: 'DMMY'
+ Label: '缁撴潫鏃ユ湡'
+ Taborder: 11
+ ]
+ }
+ Component dhEndDate
+ {
+ #keys: '[415136.0.923671132]'
+ BaseType: 'WebDataHolder'
+ Databinding: 'Date'
+ Properties:
+ [
+ Taborder: 12
+ ]
+ }
+ Component ckbIsAllDay id:ckbIsAllDay_812
+ {
+ #keys: '[415136.0.926885762]'
+ BaseType: 'WebCheckbox'
+ Properties:
+ [
+ CheckboxType: 'toggle'
+ Label: 'All day'
+ NumberOfColumns: 0
+ Taborder: 6
+ ]
+ }
]
Properties:
[
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_listContextMenu967.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_listContextMenu967.def
index f3a5116..196d498 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_listContextMenu967.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_listContextMenu967.def
@@ -3,6 +3,31 @@
{
#keys: '[415136.0.657740261]'
BaseType: 'listContextMenu'
+ Children:
+ [
+ Component MenuDelete
+ {
+ #keys: '[415136.0.905460274]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'DELETE'
+ Taborder: 4
+ Title: 'Delete'
+ ]
+ }
+ Component MenuEdit
+ {
+ #keys: '[415136.0.925451472]'
+ BaseType: 'WebMenu'
+ Properties:
+ [
+ Image: 'PENCIL'
+ Taborder: 3
+ Title: 'Edit'
+ ]
+ }
+ ]
Properties:
[
Taborder: 0
diff --git "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def" "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def"
index a3ed57b..ddcfc95 100644
--- "a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def"
+++ "b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent\043778.def"
@@ -48,7 +48,7 @@
// Set the Participation and the related controls
// (only the DataHolders, the Date-controls are set later on, after the recurrence has been initialized)
dhStartDate.Data( sLeadPart.StartDate() );
- //dhEndDate.Data( sLeadPart.EndDate() );
+ dhEndDate.Data( sLeadPart.EndDate() );
dhLeadingParticipation.Data( &sLeadPart );
dhCategory.Data(category_i);
//info( '-----------------------', isnull( dhLeadingParticipation.Data() ) );
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def
index 1b3e681..a3aacd2 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def
@@ -18,9 +18,9 @@
isDefault := ckbApplyToNewResources.Checked();
startDate := dsStartDate.Date();
startTimeOfDay := durStartTimeOfDay.Duration();
- endDate := dsStartDate.Date();
+ endDate := dsEndDate.Date();
endTimeOfDay := durEndTimeOfDay.Duration();
- isAllDay := false;
+ isAllDay := ckbIsAllDay.Checked();
eventType := ddslType.Text();
capacity := Real::MinReal(); // Always fill the capacity.
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def
index 12e8065..d57cae5 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def
@@ -23,6 +23,7 @@
// the value of the other controls are then set via the responses of these controls.
//dhEndDate .Data( sParticipation.EndDate() + delta );
dsStartDate.Date( startDate );
+ dsEndDate.Date( startDate );
// Directly initialize the Duration
//this.InitializeDuration();
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowAllDay.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowAllDay.def
new file mode 100644
index 0000000..a3194f3
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowAllDay.def
@@ -0,0 +1,63 @@
+Quintiq file version 2.0
+#parent: #root
+Method ShowAllDay () id:Method_LibCal_dlgMultipleEvent_ShowAllDay
+{
+ #keys: '[415136.0.926885827]'
+ Body:
+ [*
+ // Show the controls according to the state of ckbAllDay.
+ // Keep as is when running in days only mode.
+ if( not LibCal_Event::USE_ONLY_DAYS() )
+ {
+ if( ckbIsAllDay.Checked() )
+ {
+ // Store the EndDate before updating the StartTime, otherwise setting the StartTime can already have influenced the EndDate.
+ endDate := dsEndDate.Date();
+
+ // Set to whole day if this is not yet the case.
+ if( durStartTimeOfDay.Duration() <> Duration::Zero() )
+ {
+ durStartTimeOfDay.Duration( Duration::Zero() );
+ }
+
+ if( durEndTimeOfDay.Duration() <> Duration::Zero() )
+ {
+ durEndTimeOfDay.Duration( Duration::Zero() );
+ dsEndDate.Date( endDate + 1 );
+ }
+
+ // Disable the controls.
+ durStartTimeOfDay.Enabled( false, "All day is selected" );
+ durEndTimeOfDay .Enabled( false, "All day is selected" );
+ }
+ else
+ {
+ if( durStartTimeOfDay.Duration() <> dhStartTimeOfDay.Data() )
+ {
+ durStartTimeOfDay.Duration( dhStartTimeOfDay.Data() );
+ }
+
+ if( durEndTimeOfDay.Duration() <> dhEndTimeOfDay.Data() )
+ {
+ durEndTimeOfDay.Duration( dhEndTimeOfDay.Data() );
+
+ // During initialization, just take over the value from the DataHolder.
+ endDate := dsEndDate.Date();
+ if( endDate.IsInfinite() )
+ {
+ endDate := dhEndDate.Data();
+ }
+ // See if the EndDate must be corrected.
+ else if( dhEndTimeOfDay.Data() <> Duration::Zero() )
+ {
+ endDate := endDate - 1;
+ }
+ dsEndDate.Date( endDate );
+ }
+
+ durStartTimeOfDay.Enabled( true, "" );
+ durEndTimeOfDay .Enabled( true, "" );
+ }
+ }
+ *]
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuDelete_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuDelete_OnClick.def
new file mode 100644
index 0000000..d401e21
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuDelete_OnClick.def
@@ -0,0 +1,19 @@
+Quintiq file version 2.0
+#parent: ListList
+Response OnClick (
+ structured[LibCal_ExplicitTimeInterval] selection
+) id:Response_ListList_MenuDelete_OnClick
+{
+ #keys: '[415136.0.905460576]'
+ CanBindMultiple: false
+ DefinitionID => /ListList/Responsedef_ListList_WebMenu_OnClick
+ Initiator: 'MenuDelete'
+ QuillAction
+ {
+ Body:
+ [*
+ LibCal_ExplicitTimeInterval::Delete( selection );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuEdit_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuEdit_OnClick.def
new file mode 100644
index 0000000..f4e9cb1
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuEdit_OnClick.def
@@ -0,0 +1,21 @@
+Quintiq file version 2.0
+#parent: ListList
+Response OnClick (
+ LibCal_ExplicitTimeInterval selection
+) id:Response_ListList_MenuEdit_OnClick
+{
+ #keys: '[415136.0.925451544]'
+ CanBindMultiple: false
+ DefinitionID => /ListList/Responsedef_ListList_WebMenu_OnClick
+ Initiator: 'MenuEdit'
+ QuillAction
+ {
+ Body:
+ [*
+ dlg := construct( LibCal_dlgEditTimeInterval );
+ dlg.edtComment().Visible( false )
+ dlg.Edit( selection );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def
index 2490324..910c38b 100644
--- a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ButtonCreate_OnClick.def
@@ -6,6 +6,10 @@
CanBindMultiple: false
DefinitionID: 'Responsedef_WebButton_OnClick'
GroupServerCalls: true
+ Precondition:
+ [*
+ return LibCal_Event::ValidDate( feedback, MacroPlan, dhStartDate.Data() + durStartTimeOfDay.Duration(), dhEndDate.Data() + durEndTimeOfDay.Duration() );
+ *]
QuillAction
{
Body:
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ckbIsAllDay_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ckbIsAllDay_OnChanged.def
new file mode 100644
index 0000000..2f86201
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ckbIsAllDay_OnChanged.def
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/ckbIsAllDay_812
+Response OnChanged () id:Response_MacroPlanner_pnlStartTime_ckbIsAllDay_OnChanged
+{
+ #keys: '[415136.0.926885761]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ //鏄惁鏄竴鏁村ぉ
+ Form.ShowAllDay();
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsEndDate_OnChanged.def b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsEndDate_OnChanged.def
new file mode 100644
index 0000000..626e3ed
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsEndDate_OnChanged.def
@@ -0,0 +1,30 @@
+Quintiq file version 2.0
+#parent: PanelHeader_144/dsEndDate
+Response OnChanged () id:Response_PanelHeader_144_dsEndDate_OnChanged
+{
+ #keys: '[415136.0.923680587]'
+ CanBindMultiple: false
+ DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
+ QuillAction
+ {
+ Body:
+ [*
+ // Adjust the EndDate accordingly.
+ //if( dhStartDate.Data().IsFinite() )
+ //{
+ // // Use the EndDate of the instance if the value of the control has not been set yet.
+ // endDate := ifexpr( dsEndDate.Date().IsFinite(), dsEndDate.Date(), dhLeadingParticipation.Data().EndDate() );
+ //
+ // delta := this.Date() - dhStartDate.Data();
+ // dsEndDate.Date( endDate + delta );
+ //}
+
+ // Update the 'memory' for later delta-calculation, and/or setting the time back when AllDay is turned off.
+ dhEndDate.Data( this.Date() );
+
+ // Also set StartOfPeriod (always, also in case of a non-recurring event).
+ //dsStartOfPeriod.Date( this.Date() );
+ *]
+ GroupServerCalls: false
+ }
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Calendar_unavailable_event_view.vw b/_Main/UI/MacroPlannerWebApp/Views/Calendar_unavailable_event_view.vw
index 4b625b8..6ec090a 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/Calendar_unavailable_event_view.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/Calendar_unavailable_event_view.vw
@@ -107,10 +107,10 @@
FormCalendarUnavailableEvent_MatrixEditorTable
{
gridColor: '#c4c4c4'
- totalHeaderWidth: 37
+ totalHeaderWidth: 231
attributeHeaderWidthRatio: 0.6
nameHeaderWidthRatio: 0.4
- columnWidth: 238
+ columnWidth: 74
horizontalGrid: true
verticalGrid: true
backendState
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Finished_engine_inventory.vw b/_Main/UI/MacroPlannerWebApp/Views/Finished_engine_inventory.vw
new file mode 100644
index 0000000..5e6e378
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Finished_engine_inventory.vw
@@ -0,0 +1,200 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormFinishedEngineInventory
+ {
+ title: 'QMacroPlanner::FormFinishedEngineInventory'
+ shown: true
+ componentID: 'QMacroPlanner::FormFinishedEngineInventory'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormFinishedEngineInventory_ListFinishedEngineInventory
+ {
+ }
+ FormFinishedEngineInventory_DataSetLevelFinishedEngineInventory
+ {
+ groupDepth: -1
+ sort: 'DESC:DDay'
+ column_FourCode
+ {
+ columnId: 'FourCode'
+ dataPath: 'FourCode'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_VehicleType
+ {
+ columnId: 'VehicleType'
+ dataPath: 'VehicleType'
+ dataType: 'string'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ column_ReceiptPlace
+ {
+ columnId: 'ReceiptPlace'
+ dataPath: 'ReceiptPlace'
+ dataType: 'string'
+ index: 2
+ subtotals: ''
+ width: 150
+ }
+ column_FullName
+ {
+ columnId: 'FullName'
+ dataPath: 'FullName'
+ dataType: 'string'
+ index: 3
+ subtotals: ''
+ width: 150
+ }
+ column_SpellName
+ {
+ columnId: 'SpellName'
+ dataPath: 'SpellName'
+ dataType: 'string'
+ index: 4
+ subtotals: ''
+ width: 150
+ }
+ column_EngineType
+ {
+ columnId: 'EngineType'
+ dataPath: 'EngineType'
+ dataType: 'string'
+ index: 5
+ subtotals: ''
+ width: 150
+ }
+ column_EngineModularPlatform
+ {
+ columnId: 'EngineModularPlatform'
+ dataPath: 'EngineModularPlatform'
+ dataType: 'string'
+ index: 6
+ subtotals: ''
+ width: 150
+ }
+ column_Brand
+ {
+ columnId: 'Brand'
+ dataPath: 'Brand'
+ dataType: 'string'
+ index: 7
+ subtotals: ''
+ width: 150
+ }
+ column_BIPlace
+ {
+ columnId: 'BIPlace'
+ dataPath: 'BIPlace'
+ dataType: 'string'
+ index: 8
+ subtotals: ''
+ width: 150
+ }
+ column_Price
+ {
+ columnId: 'Price'
+ dataPath: 'Price'
+ dataType: 'string'
+ index: 9
+ subtotals: ''
+ width: 150
+ }
+ column_Total
+ {
+ columnId: 'Total'
+ dataPath: 'Total'
+ dataType: 'real'
+ index: 10
+ subtotals: ''
+ width: 150
+ }
+ column_Amount
+ {
+ columnId: 'Amount'
+ dataPath: 'Amount'
+ dataType: 'real'
+ index: 11
+ subtotals: ''
+ width: 150
+ }
+ column_DType
+ {
+ columnId: 'DType'
+ dataPath: 'DType'
+ dataType: 'string'
+ index: 12
+ subtotals: ''
+ width: 150
+ }
+ column_Fac
+ {
+ columnId: 'Fac'
+ dataPath: 'Fac'
+ dataType: 'string'
+ index: 13
+ subtotals: ''
+ width: 150
+ }
+ column_DDay
+ {
+ columnId: 'DDay'
+ dataPath: 'DDay'
+ dataType: 'date'
+ index: 14
+ subtotals: ''
+ width: 150
+ }
+ column_DWeek
+ {
+ columnId: 'DWeek'
+ dataPath: 'DWeek'
+ dataType: 'string'
+ index: 15
+ subtotals: ''
+ width: 150
+ }
+ column_DMonth
+ {
+ columnId: 'DMonth'
+ dataPath: 'DMonth'
+ dataType: 'string'
+ index: 16
+ subtotals: ''
+ width: 150
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 24
+ image: 'SPREADSHEET'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Finished_engine_inventory'
+ name: 'Finished engine inventory'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Interface_loginfo_view.vw b/_Main/UI/MacroPlannerWebApp/Views/Interface_loginfo_view.vw
new file mode 100644
index 0000000..cc85355
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Interface_loginfo_view.vw
@@ -0,0 +1,146 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormInterfaceLoginfo
+ {
+ title: 'QMacroPlanner::FormInterfaceLoginfo'
+ shown: true
+ componentID: 'QMacroPlanner::FormInterfaceLoginfo'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 16
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormInterfaceLoginfo_ListInterfaceLoginfo
+ {
+ }
+ FormInterfaceLoginfo_DataSetLevelInterfaceLoginfo
+ {
+ groupDepth: -1
+ sort: 'DESC:InterfaceDateTime'
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_ExecuteUser
+ {
+ columnId: 'ExecuteUser'
+ dataPath: 'ExecuteUser'
+ dataType: 'string'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ column_InterfaceDateTime
+ {
+ columnId: 'InterfaceDateTime'
+ dataPath: 'InterfaceDateTime'
+ dataType: 'datetime'
+ index: 2
+ subtotals: ''
+ width: 150
+ }
+ column_FinishTime
+ {
+ columnId: 'FinishTime'
+ dataPath: 'FinishTime'
+ dataType: 'datetime'
+ index: 3
+ subtotals: ''
+ width: 150
+ }
+ column_Message
+ {
+ columnId: 'Message'
+ dataPath: 'Message'
+ dataType: 'string'
+ index: 4
+ subtotals: ''
+ width: 150
+ }
+ column_Success
+ {
+ columnId: 'Success'
+ dataPath: 'Success'
+ dataType: 'boolean'
+ index: 5
+ subtotals: ''
+ width: 150
+ }
+ column_ReturnSuccess
+ {
+ columnId: 'ReturnSuccess'
+ dataPath: 'ReturnSuccess'
+ dataType: 'boolean'
+ index: 6
+ subtotals: ''
+ width: 150
+ }
+ column_ReturnMsg
+ {
+ columnId: 'ReturnMsg'
+ dataPath: 'ReturnMsg'
+ dataType: 'string'
+ index: 7
+ subtotals: ''
+ width: 150
+ }
+ column_Last
+ {
+ columnId: 'Last'
+ dataPath: 'Last'
+ dataType: 'boolean'
+ index: 8
+ subtotals: ''
+ width: 150
+ }
+ column_TotalRow
+ {
+ columnId: 'TotalRow'
+ dataPath: 'TotalRow'
+ dataType: 'number'
+ index: 9
+ subtotals: ''
+ width: 150
+ }
+ column_RequestBody
+ {
+ columnId: 'RequestBody'
+ dataPath: 'RequestBody'
+ dataType: 'string'
+ index: 10
+ subtotals: ''
+ width: 150
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 22
+ image: 'DOCUMENT'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Interface_loginfo_view'
+ name: 'Interface loginfo view'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw b/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
index f547af8..4fc1f6f 100644
--- a/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
+++ b/_Main/UI/MacroPlannerWebApp/Views/Labor_Costs.vw
@@ -2,10 +2,183 @@
{
viewcontents
{
- image: 'MONEY_BILL_FIRE'
+ forms
+ {
+ form_FormEmployeeCost
+ {
+ title: 'QMacroPlanner::FormEmployeeCost'
+ shown: true
+ componentID: 'QMacroPlanner::FormEmployeeCost'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 25
+ columnPosition: 1
+ columnSpan: 10
+ }
+ components
+ {
+ FormEmployeeCost_Panel189
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_PanelEmployeeCost
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_PanelAction
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_ListEmployeeCost
+ {
+ }
+ FormEmployeeCost_DataSetLevel775
+ {
+ groupDepth: -1
+ column_EmployeeType_Name
+ {
+ columnId: 'EmployeeType.Name'
+ dataPath: 'EmployeeType.Name'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_EmployeeNumber
+ {
+ columnId: 'EmployeeNumber'
+ dataPath: 'EmployeeNumber'
+ dataType: 'number'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ column_Unit_Name
+ {
+ columnId: 'Unit.Name'
+ dataPath: 'Unit.ID'
+ dataType: 'string'
+ index: 2
+ subtotals: ''
+ width: 150
+ }
+ column_StartDate
+ {
+ columnId: 'StartDate'
+ dataPath: 'StartDate'
+ dataType: 'date'
+ index: 3
+ subtotals: ''
+ width: 150
+ }
+ column_TimeUnit
+ {
+ columnId: 'TimeUnit'
+ dataPath: 'TimeUnit'
+ dataType: 'string'
+ index: 4
+ subtotals: ''
+ width: 150
+ }
+ column_BaseSalary
+ {
+ columnId: 'BaseSalary'
+ dataPath: 'BaseSalary'
+ dataType: 'real'
+ index: 5
+ subtotals: ''
+ width: 150
+ }
+ }
+ FormEmployeeCost_Panel972
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_Panel700
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_PanelOvertimeMultiplier
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_PanelEditOvertimeMultiplier
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_PanelActions
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_ListOvertimeMultiplier
+ {
+ }
+ FormEmployeeCost_DataSetLevel613
+ {
+ groupDepth: -1
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_Multiplier
+ {
+ columnId: 'Multiplier'
+ dataPath: 'Multiplier'
+ dataType: 'real'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ }
+ FormEmployeeCost_PanelEmployeeType
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_PanelEditEmployeeType
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_PanelActions526
+ {
+ sizeRatio: 1
+ }
+ FormEmployeeCost_ListEmployeeType
+ {
+ }
+ FormEmployeeCost_DataSetLevel963
+ {
+ groupDepth: -1
+ column_Name
+ {
+ columnId: 'Name'
+ dataPath: 'Name'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ }
+ FormEmployeeCost_PanelStandardWorkingDay
+ {
+ sizeRatio: 1
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
page: ''
group: ''
index: 0
+ image: 'MONEY_BILL_FIRE'
description: ''
}
formatversion: 2
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Machine_stock_data.vw b/_Main/UI/MacroPlannerWebApp/Views/Machine_stock_data.vw
new file mode 100644
index 0000000..0c37faa
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Machine_stock_data.vw
@@ -0,0 +1,119 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormMachineStockData
+ {
+ title: 'QMacroPlanner::FormMachineStockData'
+ shown: true
+ componentID: 'QMacroPlanner::FormMachineStockData'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormMachineStockData_ListMachineStockData
+ {
+ }
+ FormMachineStockData_DataSetLevelMachineStockData
+ {
+ groupDepth: -1
+ sort: 'DESC:DDay'
+ column_MaterialNo
+ {
+ columnId: 'MaterialNo'
+ dataPath: 'MaterialNo'
+ dataType: 'string'
+ index: 0
+ subtotals: ''
+ width: 150
+ }
+ column_MaterialName
+ {
+ columnId: 'MaterialName'
+ dataPath: 'MaterialName'
+ dataType: 'string'
+ index: 1
+ subtotals: ''
+ width: 150
+ }
+ column_Fac
+ {
+ columnId: 'Fac'
+ dataPath: 'Fac'
+ dataType: 'string'
+ index: 2
+ subtotals: ''
+ width: 150
+ }
+ column_FacName
+ {
+ columnId: 'FacName'
+ dataPath: 'FacName'
+ dataType: 'string'
+ index: 3
+ subtotals: ''
+ width: 150
+ }
+ column_LineType
+ {
+ columnId: 'LineType'
+ dataPath: 'LineType'
+ dataType: 'string'
+ index: 4
+ subtotals: ''
+ width: 150
+ }
+ column_DDay
+ {
+ columnId: 'DDay'
+ dataPath: 'DDay'
+ dataType: 'date'
+ index: 5
+ subtotals: ''
+ width: 150
+ }
+ column_Total
+ {
+ columnId: 'Total'
+ dataPath: 'Total'
+ dataType: 'real'
+ index: 6
+ subtotals: ''
+ width: 150
+ }
+ column_AllTotal
+ {
+ columnId: 'AllTotal'
+ dataPath: 'AllTotal'
+ dataType: 'real'
+ index: 7
+ subtotals: ''
+ width: 150
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 23
+ image: 'SPREADSHEET'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Machine_stock_data'
+ name: 'Machine stock data'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/OfflinePlanComparisonReport.vw b/_Main/UI/MacroPlannerWebApp/Views/OfflinePlanComparisonReport.vw
new file mode 100644
index 0000000..874c68f
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/OfflinePlanComparisonReport.vw
@@ -0,0 +1,116 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormOfflinePlanComparison
+ {
+ title: 'QMacroPlanner::FormOfflinePlanComparison'
+ shown: true
+ componentID: 'QMacroPlanner::FormOfflinePlanComparison'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 27
+ columnPosition: 1
+ columnSpan: 9
+ }
+ components
+ {
+ FormOfflinePlanComparison_PanelRibbon
+ {
+ sizeRatio: 1
+ }
+ FormOfflinePlanComparison_PanelRibbon504
+ {
+ sizeRatio: 1
+ }
+ FormOfflinePlanComparison_PanelFilter
+ {
+ sizeRatio: 1
+ }
+ FormOfflinePlanComparison_PanelDemandComparison
+ {
+ sizeRatio: 1
+ }
+ FormOfflinePlanComparison_MatrixEditor
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormOfflinePlanComparison.MatrixEditor'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_Plan
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Plan'
+ }
+ attribute_Actual
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 1
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Actual'
+ }
+ attribute_Gap
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 2
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Gap'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'Index'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 0
+ image: 'DOCUMENT_INFO'
+ description: ''
+ }
+ formatversion: 2
+ id: 'OfflinePlanComparisonReport'
+ name: 'OfflinePlanComparisonReport'
+ isglobal: false
+ isroot: true
+}
diff --git a/_Main/UI/MacroPlannerWebApp/Views/Shipping_actual_data_view.vw b/_Main/UI/MacroPlannerWebApp/Views/Shipping_actual_data_view.vw
new file mode 100644
index 0000000..56af2c4
--- /dev/null
+++ b/_Main/UI/MacroPlannerWebApp/Views/Shipping_actual_data_view.vw
@@ -0,0 +1,92 @@
+Quintiq file version 2.0
+{
+ viewcontents
+ {
+ forms
+ {
+ form_FormShippingActualData
+ {
+ title: 'QMacroPlanner::FormShippingActualData'
+ shown: true
+ componentID: 'QMacroPlanner::FormShippingActualData'
+ layout
+ {
+ mode: 'open'
+ rowPosition: 1
+ rowSpan: 15
+ columnPosition: 1
+ columnSpan: 12
+ }
+ components
+ {
+ FormShippingActualData_PanelButton
+ {
+ sizeRatio: 1
+ }
+ FormShippingActualData_PanelTable
+ {
+ sizeRatio: 1
+ }
+ FormShippingActualData_MatrixEditorTable
+ {
+ gridColor: '#c4c4c4'
+ totalHeaderWidth: 200
+ attributeHeaderWidthRatio: 0.6
+ nameHeaderWidthRatio: 0.4
+ columnWidth: 100
+ horizontalGrid: true
+ verticalGrid: true
+ backendState
+ {
+ componentId: 'QMacroPlanner::FormShippingActualData.MatrixEditorTable'
+ state
+ {
+ cells
+ {
+ attributes
+ {
+ attribute_Quantity
+ {
+ type: 'MatrixEditorWebApiCellDataModelInterest'
+ index: 0
+ rowsubtotal: ''
+ columnsubtotal: ''
+ attribute: 'Quantity'
+ }
+ }
+ }
+ columns
+ {
+ sorting
+ {
+ criteria: "datamember:'StartDate'"
+ }
+ }
+ rows
+ {
+ sorting
+ {
+ criteria: "datamember:'RowNr'"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ userconfigurableinformation
+ {
+ }
+ page: ''
+ group: ''
+ index: 21
+ image: 'TABLE_CONNECTION'
+ description: ''
+ }
+ formatversion: 2
+ id: 'Shipping_actual_data_view'
+ name: 'Shipping actual data view'
+ isglobal: false
+ isroot: true
+}
--
Gitblit v1.9.3