rislai
2024-07-25 290e66e2ed986ae5c6fe3f78f7203a0988657e21
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev
已修改26个文件
已添加69个文件
已删除1个文件
1994 ■■■■■ 文件已修改
Calendars/BL/Relations/Relation_LibCal_ExplicitTimeInterval_LeadingETI_LibCal_ExplicitTimeInterval_.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calendars/BL/Type_LibCal_LeadingParticipation/Method_AddSubscribers.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Calendars/BL/Type_LibCal_Participation/Method_CreateTimeInterval.qbl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Dataset_InterfaceDataset/Daemon_MachineStockInterface.qbl 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/InfoMessages.qbl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_FinishedEngineInventory_InterfaceLoginfo_InterfaceLoginfo_FinishedE.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_MachineStockData_InterfaceLoginfo_InterfaceLoginfo_MachineStockData.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_Amount.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_BIPlace.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_Brand.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_DDay.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_DMonth.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_DType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_DWeek.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_EngineModularPlatform.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_EngineType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_Fac.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_FourCode.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_FullName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_Price.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_ReceiptPlace.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_SpellName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_Total.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/Attribute_VehicleType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/DefaultValue_Fac.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/StaticMethod_GenerateData.qbl 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/StaticMethod_GetRequestBody.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/StaticMethod_Synchronize.qbl 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_FinishedEngineInventory/_ROOT_Type_FinishedEngineInventory.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterface.qbl 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallToken.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_Event/Attribute_IsMultiple.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_SubscriberEventRow/Attribute_Name.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_SubscriberEventRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeTable.qbl 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_GetDefaultName.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_AllTotal.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_DDay.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_Date.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_Fac.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_FacName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_Inventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_LineType.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_MaterialName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_MaterialNo.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_Product.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_Total.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/Attribute_Unit.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/StaticMethod_GenerateData.qbl 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/StaticMethod_GetRequestBody.qbl 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/StaticMethod_Synchronize.qbl 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MachineStockData/_ROOT_Type_MachineStockData.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ActionBarGroupDebug.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Component_ContextMenuInterface.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuFinishedEngineInventory_OnCli.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuInterface_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_ApplicationMacroPlanner/Response_MacroPlanner_ContextMenuInterface_MenuMachineStockData_OnClick.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_MatrixEditorTable.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelExport.def 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Component_PanelList.def 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_OnCreated.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonHeader_OnClick.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelExport_ButtonSearch_OnClick.def 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged.def 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_ListFinishedEngineInventory.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listActionBarPageFinishedEngineInventory.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/Component_listContextMenuFinishedEngineInventory.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormFinishedEngineInventory/_ROOT_Component_FormFinishedEngineInventory.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_ListInterfaceLoginfo.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listActionBarPageInterfaceLoginfo.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/Component_listContextMenuInterfaceLoginfo.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormInterfaceLoginfo/_ROOT_Component_FormInterfaceLoginfo.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_ListMachineStockData.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listActionBarPageMachineStockData.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/Component_listContextMenuMachineStockData.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormMachineStockData/_ROOT_Component_FormMachineStockData.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_CreateEvent#791.def 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_EditEvent.def 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_ListList.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader#144.def 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_listContextMenu967.def 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent#778.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateUpdateEventAndParticipation.def 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_SetParticipationData.def 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_ShowAllDay.def 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuDelete_OnClick.def 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuEdit_OnClick.def 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_ckbIsAllDay_OnChanged.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_PanelHeader_144_dsEndDate_OnChanged.def 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Calendar_unavailable_event_view.vw 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Finished_engine_inventory.vw 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Interface_loginfo_view.vw 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/Machine_stock_data.vw 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
  {
Calendars/BL/Type_LibCal_LeadingParticipation/Method_AddSubscribers.qbl
@@ -14,5 +14,4 @@
      this.AddSubscriber( subscriber, useLeadingPeriod_i );
    }
  *]
  InterfaceProperties { Accessibility: 'Module' }
}
Calendars/BL/Type_LibCal_Participation/Method_CreateTimeInterval.qbl
@@ -19,5 +19,4 @@
    
    return timeInterval;
  *]
  InterfaceProperties { Accessibility: 'Module' }
}
_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" );
  *]
}
_Main/BL/InfoMessages.qbl
@@ -102,9 +102,37 @@
  {
    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
  {
@@ -112,7 +140,7 @@
  }
  InfoMessage InterfaceDataset_Token_URL
  {
    DefaultText: '/authorization/token/api/open/token/generateToken?grant_type=client_credentials&client_id=19KxoxPF25cy96K8TL&client_secret=514390007906041965'
    DefaultText: '/authorization/token/api/open/token/generateToken?grant_type=client_credentials&client_id=19KxoxPF25cy96K8TL&client_secret='
  }
  InfoMessage MP_ChangeLossSetting_CheckNull
  {
_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'
  }
}
_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'
  }
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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;SAP系统 é•¿æ˜¥å¤–族库 å¤§è¿žåœ¨é€”'
  ValueType: String
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_Main/BL/Type_FinishedEngineInventory/DefaultValue_Fac.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Fac
}
_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;
  *]
}
_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
  *]
}
_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 );
      }
    }
  *]
}
_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'
}
_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallInterface.qbl
@@ -10,23 +10,44 @@
    // ç”„兰鸽 Jul-22-2024 (created)
    address       := Translations::InterfaceDataset_Address(); 
    httpinterface := HTTPInterface::Create( address,80);
    if( loginfo.Name() = Translations::InterfaceDataset_ShippingActualData_Name() ){//发运实际数据
      httpinterface.URL( Translations::InterfaceDataset_ShippingActualData_URL() );
      httpinterface.MediaType( Translations::InterfaceDataset_ContentType() );
      httpinterface.PostMethod( true );
      try{
        httpinterface.AddHeader("Authorization",InterfaceLoginfo::CallToken())
    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 );
      }onerror{
        loginfo.ReturnMsg( e.GeneralInformation() );
      } 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 );
      }
    }onerror{
      loginfo.ReturnMsg( e.GeneralInformation() );
    }
    if( loginfo.Name() = Translations::InterfaceDataset_ActualDailyProductionData_Name() ){//生产实际数据
      
_Main/BL/Type_InterfaceLoginfo/StaticMethod_CallToken.qbl
@@ -1,6 +1,8 @@
Quintiq file version 2.0
#parent: #root
StaticMethod CallToken () as String
StaticMethod CallToken (
  String secret
) as String
{
  TextBody:
  [*
@@ -8,13 +10,14 @@
    address       := Translations::InterfaceDataset_Address(); 
    httpinterface := HTTPInterface::Create( address,80);
    
    httpinterface.URL( Translations::InterfaceDataset_Token_URL() );
    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" ).AsString();
    token          := resultJson.Get( "access_token" ).GetString();
    
    return token;
  *]
_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
}
_Main/BL/Type_LibCal_Event/StaticMethod_CreateUpdateFromUI.qbl
@@ -41,55 +41,41 @@
  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 );
    info( '-------------', not isnull( event ), ismultiple );
    //只有通过批量创建界面且已有同名事件进入下面操作
    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() );
        }
      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 );
    //  startDate := starttime.Date( timezone );
    //  endDate   := endtime.Date( timezone ) - ifexpr( endtime = endtime.StartOfDay( timezone ), 1, 0 );
      lp.AddSubscribers( subscribers_i, true );;
      leadingETI := selectobject( lp, ExplicitTimeInterval, eti, eti.Start() = starttime and eti.End() = endtime );
      if( isnull( leadingETI ) ){
        leadingETI := lp.CreateTimeInterval( starttime, endtime, event.Capacity() );
      }
      //修改旧事件的间隔
      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 );
    //  info( '-----------------------2-----------------', lp.ExplicitTimeInterval( relsize ) );
    //  if( not isnull( leadingETI ) ){
    //    traverse( lp, Subscription, subscription, subscribers_i.Find( subscription.Calendar() ) >= 0 and
    //              startDate <= subscription.Calendar().EndDate()   and
    //              endDate   >= subscription.Calendar().StartDate() and
    //              ( isnull( subscription.RecurrencePeriod() ) or
    //                ( startDate <= subscription.RecurrencePeriod().EndDate() and
    //                  endDate   >= subscription.RecurrencePeriod().StartDate() ) ) ){
    //      info( '-----------------------1-----------------', subscription.ExplicitTimeInterval( relsize ) );
    //      subscribingETI := subscription.CreateTimeInterval( starttime, endtime, event.Capacity() );
    //
    //      if( not isnull( subscribingETI ) ){
    //        subscribingETI.LeadingETI( relset, leadingETI );
    //      }
    //      info( '-----------------------4-----------------', subscription.ExplicitTimeInterval( relsize ) );
    //    }
    //  }
    //  info( '-----------------------3-----------------', lp.ExplicitTimeInterval( relsize ) );
    } 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, 
@@ -102,7 +88,9 @@
    if( not isnull( event ) ){
      event.EventType( relset, eventtype_i );
    }
    if( ismultiple ){
      event.IsMultiple( ismultiple );
    }
    return event;
  *]
}
_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
}
_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 );
  *]
}
_Main/BL/Type_LibCal_SubscriberEventTable/Method_InitializeTable.qbl
@@ -8,14 +8,14 @@
  [*
    // ç”„兰鸽 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' );
    }
    //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() );
@@ -34,14 +34,14 @@
                                                 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 );
    //      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;
        }
        
_Main/BL/Type_LibCal_SubscriberEventTable/StaticMethod_Export.qbl
@@ -1,66 +1,79 @@
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 );
      
    xmlTable := xmlDoc.CreateElement( "table" );
    xmlTableName := xmlDoc.CreateElement( "name" );
    xmlTableName.TextContent( table.Name() );
    xmlTable.AppendChild( xmlTableName );
    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 );
      
    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" );
      cells := selectsortedset( column, LibCal_SubscriberEventCell, cell, rows.Find( cell.LibCal_SubscriberEventRow() ) > -1, cell.LibCal_SubscriberEventRow().RowNr() );
      traverse ( cells, Elements, c ) {
        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() );
          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 );
    }
      
    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();
  *]
}
_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';
  *]
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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
}
_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;
  *]
}
_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
  *]
}
_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 );
      }
    }
  *]
}
_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'
}
_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:
  [
_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
  ]
}
_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
  }
}
_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
  }
}
_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
  }
}
_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,13 +70,11 @@
          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'
          ]
        }
      ]
@@ -110,6 +106,6 @@
    Columns: 'MatrixEditorTableColumns'
    ContextMenu: 'matrixeditorContextMenuTable'
    Rows: 'MatrixEditorTableRows'
    Taborder: 1
    Taborder: 2
  ]
}
_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
      ]
    }
  ]
_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
      ]
    }
_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
  }
_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
  }
_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, table.ID() = RadioButtonGroupUseForPlanning.BoundValue() ){
        columns  := selectset( table, LibCal_SubscriberEventColumn, column, column.FilterByDatePeriod( date.Start(), date.End() ) );
        rows     := selectset( table, LibCal_SubscriberEventRow, row, row.FilterBySubscriberAndEventType( subscribers, eventtypes ) );
      }
      dhColumns.Data( &columns );
      dhRows.Data( &rows );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormCalendarUnavailableEvent/Response_PanelPeriods_RadioButtonGroupUseForPlanning_OnChanged.def
ÎļþÒÑɾ³ý
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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'
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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'
  ]
}
_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
  ]
}
_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
  ]
}
_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
  ]
}
_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'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Component_pnlEventType.def
@@ -49,6 +49,7 @@
      ]
      Properties:
      [
        AllowEmpty: true
        Description: 'dhEvent.Data.EventType'
        DisplayField: 'Name'
        NumberOfColumns: 15
@@ -61,5 +62,6 @@
  [
    Orientation: 'horizontal'
    Taborder: 4
    Visible: false
  ]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_CreateEvent#791.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,
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgEvent/Method_EditEvent.def
@@ -29,7 +29,13 @@
    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 );
    }
    // Open the dialog.
    this.Show( "modal" );
  *]
_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,7 +29,7 @@
      ]
      Properties:
      [
        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":"WebApiDefinitionAttributeExpression","columnid":"StartDate","title":"日期","subtotals":"","tooltip":"","width":-1,"display":"shown","expressionbody":"object.Start().Date()"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.StartTimeOfDay","title":"开始时间","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.StartTimeOfDay"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.EndTimeOfDay","title":"结束时间","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Participation.Event.EndTimeOfDay"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Participation.Event.Description","title":"备注","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
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_PanelHeader#144.def
@@ -28,7 +28,8 @@
        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
@@ -52,7 +53,8 @@
        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: '日期'
        Taborder: 6
        Label: '开始日期'
        Taborder: 7
      ]
    }
    Component dhStartDate
@@ -98,7 +100,7 @@
      Databinding: 'Date'
      Properties:
      [
        Taborder: 7
        Taborder: 8
      ]
    }
    Component lblDescription id:lblDescription_456
@@ -109,7 +111,7 @@
      [
        Label: '备注'
        NumberOfColumns: 0
        Taborder: 12
        Taborder: 15
      ]
    }
    Component ButtonCreate
@@ -119,7 +121,7 @@
      Properties:
      [
        Label: '新增'
        Taborder: 14
        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: '事件类型'
        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:
  [
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Component_listContextMenu967.def
@@ -12,10 +12,21 @@
      Properties:
      [
        Image: 'DELETE'
        Taborder: 3
        Taborder: 4
        Title: 'Delete'
      ]
    }
    Component MenuEdit
    {
      #keys: '[415136.0.925451472]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'PENCIL'
        Taborder: 3
        Title: 'Edit'
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Method_CreateEvent#778.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() ) );
_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.
_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();
_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, "" );
      }
    }
  *]
}
_Main/UI/MacroPlannerWebApp/Component_LibCal_dlgMultipleEvent/Response_ListList_MenuDelete_OnClick.def
@@ -1,7 +1,7 @@
Quintiq file version 2.0
#parent: ListList
Response OnClick (
  structured[ExplicitTimeInterval] selection
  structured[LibCal_ExplicitTimeInterval] selection
) id:Response_ListList_MenuDelete_OnClick
{
  #keys: '[415136.0.905460576]'
@@ -12,9 +12,7 @@
  {
    Body:
    [*
      traverse( selection, Elements, e ){
        e.Delete();
      }
      LibCal_ExplicitTimeInterval::Delete( selection, true );
    *]
    GroupServerCalls: false
  }
_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
  }
}
_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
  }
}
_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
  }
}
_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
_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
}
_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
}
_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
}