From c6c7b59c0cfe4841117590bfc680bbbaf7bb6ce3 Mon Sep 17 00:00:00 2001
From: hongji.li <hongji.a.li@capgemini.com>
Date: 星期三, 20 九月 2023 16:24:59 +0800
Subject: [PATCH] Merge branch 'dev_lhj' into dev

---
 _Main/BL/EDI/Broker_GlobalOTDTable_AIPISPIP.qbl                                                                 |  151 ++++++
 _Main/BL/Type_Global_MappingOperationBOM/TypeIndex_GlobalOTDTable_OperationBOMTypeIndex.qbl                     |    2 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl                           |   13 
 _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_GlobalOTDTable_AIPISPIPTypeIndex.qbl |    2 
 _Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl                                                              |  197 ++++++++
 _Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl                                                |   10 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl                              |   17 
 _Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl                                                   |   10 
 _Main/BL/Type_Global_MappingProductInLane/TypeIndex_GlobalOTDTable_ProductInLaneTypeIndex.qbl                   |    2 
 _Main/BL/EDI/Broker_GlobalOTDTable_ConversionFactor.qbl                                                         |   82 +++
 _Main/BL/Type_Global_MappingOperation/TypeIndex_GlobalOTDTable_OperationTypeIndex.qbl                           |    2 
 _Main/BL/EDI/Broker_GlobalOTDTable_ProductInLane.qbl                                                            |   55 ++
 _Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl                                       |   10 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl                                  |   12 
 _Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl                             |   36 
 _Main/BL/Type_Global_MappingUnitCost/TypeIndex_GlobalOTDTable_OperationCostTypeIndex.qbl                        |    2 
 _Main/BL/Type_GlobalDTOTable/Attribute_NumberOfBrokersExecuting.qbl                                             |    7 
 _Main/BL/Type_Global_MappingInventorySupply/TypeIndex_GlobalOTDTable_InventorySupplyTypeIndex.qbl               |    2 
 _Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl                                            |   10 
 _Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_GlobalOTDTable_StockingPointCostTypeIndex.qbl           |    2 
 _Main/BL/EDI/Broker_GlobalOTDTable_Operation.qbl                                                                |  200 ++++++++
 _Main/BL/Type_Global_MappingConversionFactor/TypeIndex_Global_MappingConversionFactorTypeIndex#123.qbl          |    2 
 _Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl                                        |   10 
 _Main/BL/Type_GlobalDTOTable/Method_OnException.qbl                                                             |   20 
 _Main/BL/Type_Global_MappingForecast/TypeIndex_GlobalOTDTable_ForecastTypeIndex.qbl                             |    2 
 _Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl                                                            |    2 
 _Main/BL/EDI/Broker_GlobalOTDTable_InventorySupply.qbl                                                          |  152 ++++++
 /dev/null                                                                                                       |   12 
 _Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl                                                        |    2 
 _Main/BL/EDI/Broker_GlobalOTDTable_OperationBOM.qbl                                                             |  208 ++++++++
 _Main/BL/EDI/Broker_GlobalOTDTable_Forecast.qbl                                                                 |  174 +++++++
 _Main/BL/Type_Global_MappingCustomOrder/TypeIndex_GlobalOTDTable_CustomOrderTypeIndex.qbl                       |    2 
 _Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl                       |    4 
 33 files changed, 1,369 insertions(+), 45 deletions(-)

diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_AIPISPIP.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_AIPISPIP.qbl
new file mode 100644
index 0000000..3604991
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_AIPISPIP.qbl
@@ -0,0 +1,151 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_AIPISPIP
+{
+  MDSDefinition: GlobalOTDTable
+  EDIModelLink.Destination Des_ActualPISPIP0
+  {
+    EDIMLTable Global_MappingActualProductInStockingPointInPeriod
+    {
+      PrimaryKeyColumns: Date
+      PrimaryKeyColumns: ProductID
+      PrimaryKeyColumns: StockingPointID
+      TargetType: Global_MappingActualProductInStockingPointInPeriod
+      TypeIndex: GlobalOTDTable_AIPISPIPTypeIndex
+      EDIMLColumn ActualInventoryLevelEnd { Attribute: ActualInventoryLevelEnd ValueType: Real }
+      EDIMLColumn Date { Attribute: Date ValueType: Date }
+      EDIMLColumn Description { Attribute: Description ValueType: String }
+      EDIMLColumn IsAvailable { Attribute: IsAvailable ValueType: Boolean }
+      EDIMLColumn ManufacturedDate { Attribute: ManufacturedDate ValueType: Date }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn StockType { Attribute: StockType ValueType: String }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+    }
+  }
+  EDIODBCLink.Source MID_ActualPISPIP0
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_ACTUALPISPIP
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="TIANMA"'
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ACTUALLINVENTORYLEVELEND
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn DATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn DESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ISAVAILABLE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MANUFACTUREDDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STOCKTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation TransformationActualPISPIP0
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_ACTUALPISPIP
+      OutputTable: Global_MappingActualProductInStockingPointInPeriod
+      EDIColumnMatch
+      {
+        InputColumn: ACTUALLINVENTORYLEVELEND
+        OutputColumn: ActualInventoryLevelEnd
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToReal xmlns="http://www.quintiq.com/GEB/StringToReal" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToReal>
+          *]
+        }
+      }
+      EDIColumnMatch
+      {
+        InputColumn: DATE
+        OutputColumn: Date
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: DESCRIPTION OutputColumn: Description }
+      EDIColumnMatch { InputColumn: ISAVAILABLE OutputColumn: IsAvailable }
+      EDIColumnMatch
+      {
+        InputColumn: MANUFACTUREDDATE
+        OutputColumn: ManufacturedDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: STOCKTYPE OutputColumn: StockType }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_ConversionFactor.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_ConversionFactor.qbl
new file mode 100644
index 0000000..e297e91
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_ConversionFactor.qbl
@@ -0,0 +1,82 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_ConversionFactor
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination4
+  {
+    EDIMLTable Global_MappingConversionFactor
+    {
+      PrimaryKeyColumns: IsEnabled
+      PrimaryKeyColumns: ProductID
+      PrimaryKeyColumns: SourceUnitOfMeasureName
+      PrimaryKeyColumns: TargetUnitOfMeasureName
+      TargetType: Global_MappingConversionFactor
+      TypeIndex: Global_MappingConversionFactorTypeIndex
+      EDIMLColumn Factor { Attribute: Factor ValueType: Real }
+      EDIMLColumn IsEnabled { Attribute: IsEnabled ValueType: Boolean }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn SourceUnitOfMeasureName { Attribute: SourceUnitOfMeasureName ValueType: String }
+      EDIMLColumn TargetUnitOfMeasureName { Attribute: TargetUnitOfMeasureName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source3
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_BASECONVERSIONFACTORS
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ISENABLED
+      PrimaryKeyColumns: PRODUCTID
+      PrimaryKeyColumns: SOURCEUNITOFMEASURENAME
+      PrimaryKeyColumns: TARGETUNITOFMEASURENAME
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn FACTOR
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn ISENABLED
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SOURCEUNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn TARGETUNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation3
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_BASECONVERSIONFACTORS
+      OutputTable: Global_MappingConversionFactor
+      EDIColumnMatch { InputColumn: FACTOR OutputColumn: Factor }
+      EDIColumnMatch { InputColumn: ISENABLED OutputColumn: IsEnabled }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: SOURCEUNITOFMEASURENAME OutputColumn: SourceUnitOfMeasureName }
+      EDIColumnMatch { InputColumn: TARGETUNITOFMEASURENAME OutputColumn: TargetUnitOfMeasureName }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl
new file mode 100644
index 0000000..62a47a5
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_CustomOrder.qbl
@@ -0,0 +1,197 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_CustomOrder
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination9
+  {
+    EDIMLTable Global_MappingCustomOrder
+    {
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingCustomOrder
+      TypeIndex: GlobalOTDTable_CustomOrderTypeIndex
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn CurrencyID { Attribute: CurrencyID ValueType: String }
+      EDIMLColumn Customer { Attribute: Customer ValueType: String }
+      EDIMLColumn CustomerID { Attribute: CustomerID ValueType: String }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn IsAvailable { Attribute: IsAvailable ValueType: Boolean }
+      EDIMLColumn OrderDate { Attribute: OrderDate ValueType: Date }
+      EDIMLColumn OrderID { Attribute: OrderID ValueType: String }
+      EDIMLColumn OrderLineID { Attribute: OrderLineID ValueType: String }
+      EDIMLColumn OrderType { Attribute: OrderType ValueType: String }
+      EDIMLColumn Price { Attribute: Price ValueType: Real }
+      EDIMLColumn PriorityName { Attribute: PriorityName ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn Quantity { Attribute: Quantity ValueType: Real }
+      EDIMLColumn SalesSegmentName { Attribute: SalesSegmentName ValueType: String }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source8
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_CUSTOMERORDER
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn CURRENCYID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn CUSTOMER
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn CUSTOMERID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ISAVAILABLE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORDERDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn ORDERID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORDERLINEID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORDERTIME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORDERTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRICE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn PRIORITYNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTGRADE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn QUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn SALESEGMENTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SEGMENTPRIORITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SHEETPROFITABILITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation8
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_CUSTOMERORDER
+      OutputTable: Global_MappingCustomOrder
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: CURRENCYID OutputColumn: CurrencyID }
+      EDIColumnMatch { InputColumn: CUSTOMER OutputColumn: Customer }
+      EDIColumnMatch { InputColumn: CUSTOMERID OutputColumn: CustomerID }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch { InputColumn: ISAVAILABLE OutputColumn: IsAvailable }
+      EDIColumnMatch
+      {
+        InputColumn: ORDERDATE
+        OutputColumn: OrderDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ORDERID OutputColumn: OrderID }
+      EDIColumnMatch { InputColumn: ORDERLINEID OutputColumn: OrderLineID }
+      EDIColumnMatch { InputColumn: ORDERTIME OutputColumn: OrderType }
+      EDIColumnMatch { InputColumn: PRICE OutputColumn: Price }
+      EDIColumnMatch { InputColumn: PRIORITYNAME OutputColumn: PriorityName }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: QUANTITY OutputColumn: Quantity }
+      EDIColumnMatch { InputColumn: SALESEGMENTNAME OutputColumn: SalesSegmentName }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_Forecast.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_Forecast.qbl
new file mode 100644
index 0000000..5d2e4f1
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_Forecast.qbl
@@ -0,0 +1,174 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_Forecast
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination8
+  {
+    EDIMLTable Global_MappingForecast
+    {
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingForecast
+      TypeIndex: GlobalOTDTable_ForecastTypeIndex
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn CurrencyID { Attribute: CurrencyID ValueType: String }
+      EDIMLColumn EndDate { Attribute: EndDate ValueType: Date }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn Price { Attribute: Price ValueType: Real }
+      EDIMLColumn PriorityName { Attribute: PriorityName ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn Quantity { Attribute: Quantity ValueType: Real }
+      EDIMLColumn SalesSegmentName { Attribute: SalesSegmentName ValueType: String }
+      EDIMLColumn StartDate { Attribute: StartDate ValueType: Date }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+    }
+  }
+  EDIODBCLink.Source Source7
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_FORECAST
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn CURRENCYID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ENDDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRICE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn PRIORITYNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTGRADE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn QUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn SALESEGMENTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SEGMENTPRIORITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SHEETPROFITABILITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STARTDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation7
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_FORECAST
+      OutputTable: Global_MappingForecast
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: CURRENCYID OutputColumn: CurrencyID }
+      EDIColumnMatch
+      {
+        InputColumn: ENDDATE
+        OutputColumn: EndDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch { InputColumn: PRICE OutputColumn: Price }
+      EDIColumnMatch { InputColumn: PRIORITYNAME OutputColumn: PriorityName }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: QUANTITY OutputColumn: Quantity }
+      EDIColumnMatch { InputColumn: SALESEGMENTNAME OutputColumn: SalesSegmentName }
+      EDIColumnMatch
+      {
+        InputColumn: STARTDATE
+        OutputColumn: StartDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_InventorySupply.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_InventorySupply.qbl
new file mode 100644
index 0000000..458fd70
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_InventorySupply.qbl
@@ -0,0 +1,152 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_InventorySupply
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination7
+  {
+    EDIMLTable Global_MappingInventorySupply
+    {
+      PrimaryKeyColumns: ID
+      TargetType: Global_MappingInventorySupply
+      TypeIndex: GlobalOTDTable_InventorySupplyTypeIndex
+      EDIMLColumn Date { Attribute: Date ValueType: Date }
+      EDIMLColumn Description { Attribute: Description ValueType: String }
+      EDIMLColumn ID { Attribute: ID ValueType: String }
+      EDIMLColumn ManufacturedDate { Attribute: ManufacturedDate ValueType: Date }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn StockingPointID { Attribute: StockingPointID ValueType: String }
+      EDIMLColumn SupplyType { Attribute: SupplyType ValueType: String }
+      EDIMLColumn UserQuantity { Attribute: UserQuantity ValueType: Real }
+    }
+  }
+  EDIODBCLink.Source Source6
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_EXTERNALSUPPLY
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: ID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn DATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn DESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MANUFACTUREDDATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: DateTime
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn STOCKINGPOINTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SUPPLYTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn USERQUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation6
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_EXTERNALSUPPLY
+      OutputTable: Global_MappingInventorySupply
+      EDIColumnMatch
+      {
+        InputColumn: DATE
+        OutputColumn: Date
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: DESCRIPTION OutputColumn: Description }
+      EDIColumnMatch { InputColumn: ID OutputColumn: ID }
+      EDIColumnMatch
+      {
+        InputColumn: MANUFACTUREDDATE
+        OutputColumn: ManufacturedDate
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <DateTimeToDate xmlns="http://www.quintiq.com/GEB/DateTimeToDate" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+            </DateTimeToDate>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch { InputColumn: STOCKINGPOINTID OutputColumn: StockingPointID }
+      EDIColumnMatch { InputColumn: SUPPLYTYPE OutputColumn: SupplyType }
+      EDIColumnMatch
+      {
+        InputColumn: USERQUANTITY
+        OutputColumn: UserQuantity
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToReal xmlns="http://www.quintiq.com/GEB/StringToReal" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToReal>
+          *]
+        }
+      }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_Operation.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_Operation.qbl
new file mode 100644
index 0000000..0501f22
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_Operation.qbl
@@ -0,0 +1,200 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_Operation
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination5
+  {
+    EDIMLTable Global_MappingOperation
+    {
+      PrimaryKeyColumns: BusinessType
+      PrimaryKeyColumns: Line
+      PrimaryKeyColumns: OrganCode
+      PrimaryKeyColumns: PlantName
+      PrimaryKeyColumns: ProcessSection
+      PrimaryKeyColumns: ProductID
+      PrimaryKeyColumns: SequenceNumber
+      TargetType: Global_MappingOperation
+      TypeIndex: GlobalOTDTable_OperationTypeIndex
+      EDIMLColumn ActualCapacity { Attribute: ActualCapacity ValueType: Real }
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn Line { Attribute: Line ValueType: String }
+      EDIMLColumn MaximumQuantity { Attribute: MaximumQuantity ValueType: Number }
+      EDIMLColumn MinimumQuantity { Attribute: MinimumQuantity ValueType: Number }
+      EDIMLColumn OrganCode { Attribute: OrganCode ValueType: String }
+      EDIMLColumn OrganName { Attribute: OrganName ValueType: String }
+      EDIMLColumn PlantName { Attribute: PlantName ValueType: String }
+      EDIMLColumn ProcessSection { Attribute: ProcessSection ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+      EDIMLColumn SequenceNumber { Attribute: SequenceNumber ValueType: Number }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+      EDIMLColumn UserLeadTime { Attribute: UserLeadTime ValueType: Real }
+    }
+  }
+  EDIODBCLink.Source Source4
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_OPERATION
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ACTUALCAPACITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn LINE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MAXIMUMQUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MINIMUMQUANTITY
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORGANCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORGANNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PLANTNAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PROCESSSECTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SEQUENCENUMBER
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn USERLEADTIME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation4
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_OPERATION
+      OutputTable: Global_MappingOperation
+      EDIColumnMatch { InputColumn: ACTUALCAPACITY OutputColumn: ActualCapacity }
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: LINE OutputColumn: Line }
+      EDIColumnMatch
+      {
+        InputColumn: MAXIMUMQUANTITY
+        OutputColumn: MaximumQuantity
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToNumber xmlns="http://www.quintiq.com/GEB/StringToNumber" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToNumber>
+          *]
+        }
+      }
+      EDIColumnMatch
+      {
+        InputColumn: MINIMUMQUANTITY
+        OutputColumn: MinimumQuantity
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToNumber xmlns="http://www.quintiq.com/GEB/StringToNumber" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToNumber>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: ORGANCODE OutputColumn: OrganCode }
+      EDIColumnMatch { InputColumn: ORGANNAME OutputColumn: OrganName }
+      EDIColumnMatch { InputColumn: PLANTNAME OutputColumn: PlantName }
+      EDIColumnMatch { InputColumn: PROCESSSECTION OutputColumn: ProcessSection }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+      EDIColumnMatch
+      {
+        InputColumn: SEQUENCENUMBER
+        OutputColumn: SequenceNumber
+        Converter
+        {
+          XMLDefinition:
+          [*
+            <?xml version="1.0" encoding="UTF-16"?>
+            <StringToNumber xmlns="http://www.quintiq.com/GEB/StringToNumber" Key="@1">
+              <IsStandard>true</IsStandard>
+              <IsISO>false</IsISO>
+              <IsCustom>false</IsCustom>
+              <ConversionType>0</ConversionType>
+              <NumericFormatString>Standard</NumericFormatString>
+              <LocaleString>Chinese (China)</LocaleString>
+              <CurrencyString></CurrencyString>
+              <CustomFormatString></CustomFormatString>
+            </StringToNumber>
+          *]
+        }
+      }
+      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
+      EDIColumnMatch { InputColumn: USERLEADTIME OutputColumn: UserLeadTime }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_OperationBOM.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_OperationBOM.qbl
new file mode 100644
index 0000000..dc815c0
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_OperationBOM.qbl
@@ -0,0 +1,208 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_OperationBOM
+{
+  MDSDefinition: GlobalOTDTable
+  TimeZone: 'ACT'
+  UseOSTimeZone: false
+  EDIModelLink.Destination Destination6
+  {
+    EDIMLTable Global_MappingOperationBOM
+    {
+      PrimaryKeyColumns: AlternativeMaterialCode
+      PrimaryKeyColumns: BusinessType
+      PrimaryKeyColumns: ComponentCode
+      PrimaryKeyColumns: ComponentType
+      PrimaryKeyColumns: ComponentUnit
+      PrimaryKeyColumns: OrganCode
+      PrimaryKeyColumns: ProcessSection
+      PrimaryKeyColumns: ProductCode
+      TargetType: Global_MappingOperationBOM
+      TypeIndex: GlobalOTDTable_OperationBOMTypeIndex
+      EDIMLColumn AlternativeMaterialCode { Attribute: AlternativeMaterialCode ValueType: String }
+      EDIMLColumn AlternativeMaterialType { Attribute: AlternativeMaterialType ValueType: String }
+      EDIMLColumn AlternativeMaterialUnit { Attribute: AlternativeMaterialUnit ValueType: String }
+      EDIMLColumn AlternativeRate { Attribute: AlternativeRate ValueType: Real }
+      EDIMLColumn BusinessType { Attribute: BusinessType ValueType: String }
+      EDIMLColumn ComponentCode { Attribute: ComponentCode ValueType: String }
+      EDIMLColumn ComponentDescription { Attribute: ComponentDescription ValueType: String }
+      EDIMLColumn ComponentOutputRate { Attribute: ComponentOutputRate ValueType: Real }
+      EDIMLColumn ComponentType { Attribute: ComponentType ValueType: String }
+      EDIMLColumn ComponentUnit { Attribute: ComponentUnit ValueType: String }
+      EDIMLColumn ComponentUnitDescription { Attribute: ComponentUnitDescription ValueType: String }
+      EDIMLColumn DescriptionOfAlternativeMaterial { Attribute: DescriptionOfAlternativeMaterial ValueType: String }
+      EDIMLColumn DescriptionOfAlternativeMaterialUnits { Attribute: DescriptionOfAlternativeMaterialUnits ValueType: String }
+      EDIMLColumn MaterialSystem { Attribute: MaterialSystem ValueType: String }
+      EDIMLColumn OrganCode { Attribute: OrganCode ValueType: String }
+      EDIMLColumn ProcessSection { Attribute: ProcessSection ValueType: String }
+      EDIMLColumn ProductCode { Attribute: ProductCode ValueType: String }
+      EDIMLColumn ProductDescribe { Attribute: ProductDescribe ValueType: String }
+      EDIMLColumn ProductType { Attribute: ProductType ValueType: String }
+      EDIMLColumn ProductUnitDescription { Attribute: ProductUnitDescription ValueType: String }
+      EDIMLColumn SubstitutionRelationship { Attribute: SubstitutionRelationship ValueType: String }
+      EDIMLColumn UnitOfMeasureName { Attribute: UnitOfMeasureName ValueType: String }
+      EDIMLColumn UnitUsageOfComponents { Attribute: UnitUsageOfComponents ValueType: Real }
+    }
+  }
+  EDIODBCLink.Source Source5
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_BOM
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn ALTERNATIVEMATERIALCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ALTERNATIVEMATERIALTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ALTERNATIVEMATERIALUNIT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ALTERNATIVERATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn BUSINESSTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTDESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTOUTPUTRATE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+      EDIODBCLinkColumn COMPONENTTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTUNIT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn COMPONENTUNITDESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn DESCRIPTIONOFALTERNATIVEMATERIAL
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn DESCRIPTIONOFALTERNATIVEMATERIALUNIT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn MATERIALSYSTEM
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn ORGANCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PROCESSSECTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTCODE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTDESCRIBE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTTYPE
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTUNITDESCRIPTION
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn SUBSTITUTIONRELATIONSHIP
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITOFMEASURENAME
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn UNITUSAGEOFCOMPENENT
+      {
+        OthersMayUpdateColumn: true
+        ValueType: Real
+      }
+    }
+  }
+  EDITransformation.Transformation Transformation5
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_BOM
+      OutputTable: Global_MappingOperationBOM
+      EDIColumnMatch { InputColumn: ALTERNATIVEMATERIALCODE OutputColumn: AlternativeMaterialCode }
+      EDIColumnMatch { InputColumn: ALTERNATIVEMATERIALTYPE OutputColumn: AlternativeMaterialType }
+      EDIColumnMatch { InputColumn: ALTERNATIVEMATERIALUNIT OutputColumn: AlternativeMaterialUnit }
+      EDIColumnMatch { InputColumn: ALTERNATIVERATE OutputColumn: AlternativeRate }
+      EDIColumnMatch { InputColumn: BUSINESSTYPE OutputColumn: BusinessType }
+      EDIColumnMatch { InputColumn: COMPONENTCODE OutputColumn: ComponentCode }
+      EDIColumnMatch { InputColumn: COMPONENTDESCRIPTION OutputColumn: ComponentDescription }
+      EDIColumnMatch { InputColumn: COMPONENTOUTPUTRATE OutputColumn: ComponentOutputRate }
+      EDIColumnMatch { InputColumn: COMPONENTTYPE OutputColumn: ComponentType }
+      EDIColumnMatch { InputColumn: COMPONENTUNIT OutputColumn: ComponentUnit }
+      EDIColumnMatch { InputColumn: COMPONENTUNITDESCRIPTION OutputColumn: ComponentUnitDescription }
+      EDIColumnMatch { InputColumn: DESCRIPTIONOFALTERNATIVEMATERIAL OutputColumn: DescriptionOfAlternativeMaterial }
+      EDIColumnMatch { InputColumn: DESCRIPTIONOFALTERNATIVEMATERIALUNIT OutputColumn: DescriptionOfAlternativeMaterialUnits }
+      EDIColumnMatch { InputColumn: MATERIALSYSTEM OutputColumn: MaterialSystem }
+      EDIColumnMatch { InputColumn: ORGANCODE OutputColumn: OrganCode }
+      EDIColumnMatch { InputColumn: PROCESSSECTION OutputColumn: ProcessSection }
+      EDIColumnMatch { InputColumn: PRODUCTCODE OutputColumn: ProductCode }
+      EDIColumnMatch { InputColumn: PRODUCTDESCRIBE OutputColumn: ProductDescribe }
+      EDIColumnMatch { InputColumn: PRODUCTTYPE OutputColumn: ProductType }
+      EDIColumnMatch { InputColumn: PRODUCTUNITDESCRIPTION OutputColumn: ProductUnitDescription }
+      EDIColumnMatch { InputColumn: SUBSTITUTIONRELATIONSHIP OutputColumn: SubstitutionRelationship }
+      EDIColumnMatch { InputColumn: UNITOFMEASURENAME OutputColumn: UnitOfMeasureName }
+      EDIColumnMatch { InputColumn: UNITUSAGEOFCOMPENENT OutputColumn: UnitUsageOfComponents }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl
index c249e43..e5e11a4 100644
--- a/_Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_OperationCost.qbl
@@ -11,7 +11,7 @@
     {
       PrimaryKeyColumns: ID
       TargetType: Global_MappingOperationCost
-      TypeIndex: TypeIndex
+      TypeIndex: GlobalOTDTable_OperationCostTypeIndex
       EDIMLColumn AccountName { Attribute: AccountName ValueType: String }
       EDIMLColumn Cost { Attribute: Cost ValueType: Real }
       EDIMLColumn CostDriver { Attribute: CostDriver ValueType: String }
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_ProductInLane.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_ProductInLane.qbl
new file mode 100644
index 0000000..2c1bfcb
--- /dev/null
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_ProductInLane.qbl
@@ -0,0 +1,55 @@
+Quintiq file version 2.0
+#parent: #root
+EDIBroker GlobalOTDTable_ProductInLane
+{
+  MDSDefinition: GlobalOTDTable
+  EDIModelLink.Destination Des_MappingProductInLane0
+  {
+    EDIMLTable Global_MappingProductInLane
+    {
+      PrimaryKeyColumns: LineID
+      PrimaryKeyColumns: ProductID
+      TargetType: Global_MappingProductInLane
+      TypeIndex: GlobalOTDTable_ProductInLaneTypeIndex
+      EDIMLColumn LineID { Attribute: LineID ValueType: String }
+      EDIMLColumn ProductID { Attribute: ProductID ValueType: String }
+    }
+  }
+  EDIODBCLink.Source MID_PRODUCTINLINES0
+  {
+    DataIntegrityStrategy: 'Disabled'
+    SettingsEngineLink: 'domainmodel.ediremotedatasourcedefinition.remotestorage.oracle'
+    EDIODBCLinkTable MID_PRODUCTINLINES
+    {
+      OthersMayCreateTable: true
+      OthersMayDeleteRow: true
+      OthersMayDropTable: true
+      OthersMayFlushTable: true
+      OthersMayInsertRow: true
+      Parameters: '/owner="OTD"'
+      PrimaryKeyColumns: LINEID
+      PrimaryKeyColumns: PRODUCTID
+      RecordModificationHintStrategy: 'None'
+      EDIODBCLinkColumn LINEID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+      EDIODBCLinkColumn PRODUCTID
+      {
+        OthersMayUpdateColumn: true
+        ValueType: String
+      }
+    }
+  }
+  EDITransformation.Transformation TransformationProductInLane0
+  {
+    EDITableTransformation
+    {
+      InputTable: MID_PRODUCTINLINES
+      OutputTable: Global_MappingProductInLane
+      EDIColumnMatch { InputColumn: LINEID OutputColumn: LineID }
+      EDIColumnMatch { InputColumn: PRODUCTID OutputColumn: ProductID }
+    }
+  }
+}
diff --git a/_Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl b/_Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl
index c1f7632..6dda466 100644
--- a/_Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl
+++ b/_Main/BL/EDI/Broker_GlobalOTDTable_StockingPointCost.qbl
@@ -11,7 +11,7 @@
     {
       PrimaryKeyColumns: ID
       TargetType: Global_MappingStockingPointCost
-      TypeIndex: NewTypeIndex
+      TypeIndex: GlobalOTDTable_StockingPointCostTypeIndex
       EDIMLColumn AccountName { Attribute: AccountName ValueType: String }
       EDIMLColumn Cost { Attribute: Cost ValueType: Real }
       EDIMLColumn CostDriver { Attribute: CostDriver ValueType: String }
diff --git a/_Main/BL/Type_GlobalDTOTable/Attribute_NumberOfBrokersExecuting.qbl b/_Main/BL/Type_GlobalDTOTable/Attribute_NumberOfBrokersExecuting.qbl
new file mode 100644
index 0000000..005fe07
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Attribute_NumberOfBrokersExecuting.qbl
@@ -0,0 +1,7 @@
+Quintiq file version 2.0
+#parent: #root
+Attribute NumberOfBrokersExecuting
+{
+  #keys: '3[414702.0.318091378][414702.0.318091377][414702.0.318091379]'
+  ValueType: Number
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl
index aafd06e..2384943 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_Forecast.qbl
@@ -5,5 +5,16 @@
   String errorMessage
 )
 {
-  TextBody: 'info( "閿欒鍙凤細", errorNo, "errorNo璇俊鎭細", errorMessage );'
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "GlobalOTDTable_Forecast",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := errorMessage,
+                                  IsSuccess     := false,
+                                  Name          := "棰勬祴鏁版嵁",
+                                  ErrorNo       := errorNo,
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl
index 8a0c0d2..49e26b7 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecuteFailure_GlobalOTDTable_OperationBOM.qbl
@@ -8,11 +8,11 @@
   TextBody:
   [*
     this.Global_BrokerExecuteLog( relnew,
-                                  BrokerName    := "GlobalOTDTable_Operation",
+                                  BrokerName    := "GlobalOTDTable_OperationBOM",
                                   ElementTotal  := 0,
                                   ErrorMessage  := errorMessage,
                                   IsSuccess     := false,
-                                  Name          := "鎿嶄綔鏁版嵁",
+                                  Name          := "鎿嶄綔BOM鏁版嵁",
                                   ErrorNo       := errorNo,
                                   ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
                                  );
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl
index 52523c5..c9f8835 100644
--- a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_Forecast.qbl
@@ -2,4 +2,16 @@
 #parent: #root
 Method OnAsyncExecute_GlobalOTDTable_Forecast
 {
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_Forecast",
+                                  ElementTotal    := this.Global_MappingForecast( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "棰勬祴鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
 }
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl
new file mode 100644
index 0000000..12bda61
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnAsyncExecute_GlobalOTDTable_OperationBOM.qbl
@@ -0,0 +1,17 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnAsyncExecute_GlobalOTDTable_OperationBOM
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName      := "GlobalOTDTable_OperationBOM",
+                                  ElementTotal    := this.Global_MappingOperationBOM( relsize ),
+                                  ErrorMessage    := "",
+                                  IsSuccess       := true,
+                                  Name            := "鎿嶄綔BOM鏁版嵁",
+                                  SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                  ErrorNo         := 0
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/Method_OnException.qbl b/_Main/BL/Type_GlobalDTOTable/Method_OnException.qbl
new file mode 100644
index 0000000..73c0d85
--- /dev/null
+++ b/_Main/BL/Type_GlobalDTOTable/Method_OnException.qbl
@@ -0,0 +1,20 @@
+Quintiq file version 2.0
+#parent: #root
+Method OnException (
+  Exception e,
+  GlobalOTDTable globalOTDTable
+)
+{
+  TextBody:
+  [*
+    this.Global_BrokerExecuteLog( relnew,
+                                  BrokerName    := "",
+                                  ElementTotal  := 0,
+                                  ErrorMessage  := e.Message(),
+                                  IsSuccess     := false,
+                                  Name          := "鎺ュ彛璋冪敤澶辫触",
+                                  ErrorNo       := e.ErrorNumber(),
+                                  ErrorDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" )
+                                 );
+  *]
+}
diff --git a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
index 46883f2..100a489 100644
--- a/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
+++ b/_Main/BL/Type_GlobalDTOTable/StaticMethod_SynchronizationAllMappingBrokerAndAPI.qbl
@@ -26,23 +26,23 @@
     globalOTDTable.Global_MappingForecast( relflush );
     globalOTDTable.Global_MappingCustomOrder( relflush );
     
-    //globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().AsyncExecute();
-    //globalOTDTable.GlobalOTDTable_SalesSegment_MP().AsyncExecute();
-    //Global_MappingStockingPoint_MP::CreateByAPI( globalOTDTable );鍚庨潰琛�
-    //Global_MappingCurrency_MP::CreateByAPI( globalOTDTable );鍚庨潰琛�
-    //Global_MappingCurrencyRate_MP::CreateByAPI( globalOTDTable );鍚庨潰琛�
-    //globalOTDTable.GlobalOTDTable_Product_MP().AsyncExecute();
-    //globalOTDTable.GlobalOTDTable_ConversionFactor().AsyncExecute()寮傚父;
-    //globalOTDTable.GlobalOTDTable_Operation().AsyncExecute();寮傚父
-    //globalOTDTable.GlobalOTDTable_OperationBOM().AsyncExecute();寮傚父
-    //Global_MappingLane::CreateByAPI( globalOTDTable );
-    //Global_MappingLaneLeg::CreateByAPI( globalOTDTable );
-    //globalOTDTable.GlobalOTDTable_ProductInLane().AsyncExecute();寮傚父
-    //globalOTDTable.GlobalOTDTable_AIPISPIP().AsyncExecute();寮傚父
-    //globalOTDTable.GlobalOTDTable_InventorySupply().AsyncExecute();寮傚父
-    //globalOTDTable.GlobalOTDTable_StockingPointCost().AsyncExecute();寮傚父
-    //globalOTDTable.GlobalOTDTable_OperationCost().AsyncExecute();寮傚父
-    //globalOTDTable.GlobalOTDTable_Forecast().AsyncExecute();寮傚父
-    //globalOTDTable.GlobalOTDTable_CustomOrder().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_UnitOfMeasure_MP().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_SalesSegment_MP().AsyncExecute();
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingStockingPoint_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingCurrency_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingCurrencyRate_MP::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable.GlobalOTDTable_Product_MP().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_ConversionFactor().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_Operation().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_OperationBOM().AsyncExecute();
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingLane::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable -> OnException( globalOTDTable -> Global_MappingLaneLeg::CreateByAPI() -> Exception(), globalOTDTable );
+    globalOTDTable.GlobalOTDTable_ProductInLane().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_AIPISPIP().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_InventorySupply().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_StockingPointCost().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_OperationCost().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_Forecast().AsyncExecute();
+    globalOTDTable.GlobalOTDTable_CustomOrder().AsyncExecute();
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_MappingActualPISPIPTypeIndex.qbl b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_GlobalOTDTable_AIPISPIPTypeIndex.qbl
similarity index 85%
rename from _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_MappingActualPISPIPTypeIndex.qbl
rename to _Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_GlobalOTDTable_AIPISPIPTypeIndex.qbl
index da6905e..fd7cd52 100644
--- a/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_MappingActualPISPIPTypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingActualProductInStockingPointInPeriod/TypeIndex_GlobalOTDTable_AIPISPIPTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex MappingActualPISPIPTypeIndex
+TypeIndex GlobalOTDTable_AIPISPIPTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingConversionFactor/TypeIndex_TypeIndex.qbl "b/_Main/BL/Type_Global_MappingConversionFactor/TypeIndex_Global_MappingConversionFactorTypeIndex\043123.qbl"
similarity index 87%
rename from _Main/BL/Type_Global_MappingConversionFactor/TypeIndex_TypeIndex.qbl
rename to "_Main/BL/Type_Global_MappingConversionFactor/TypeIndex_Global_MappingConversionFactorTypeIndex\043123.qbl"
index 370a05f..fc0221a 100644
--- a/_Main/BL/Type_Global_MappingConversionFactor/TypeIndex_TypeIndex.qbl
+++ "b/_Main/BL/Type_Global_MappingConversionFactor/TypeIndex_Global_MappingConversionFactorTypeIndex\043123.qbl"
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex TypeIndex
+TypeIndex Global_MappingConversionFactorTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
index b927816..13d9157 100644
--- a/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
@@ -37,5 +37,15 @@
                                                     Start      := guard( cnv2.Convert( datalist.Get( j ).Get( "start" ).GetString() ), Date::MinDate() )
                                                    );
     }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingCurrencyRate_MP( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堣揣甯佹眹鐜囷級",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
index a2f745b..e938f73 100644
--- a/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
@@ -34,5 +34,15 @@
                                                 IsBase := guard( datalist.Get( j ).Get( "isbase" ).GetBoolean(), false )
                                                );
     }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingCurrency_MP( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堣揣甯侊級",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl b/_Main/BL/Type_Global_MappingCustomOrder/TypeIndex_GlobalOTDTable_CustomOrderTypeIndex.qbl
similarity index 72%
rename from _Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl
rename to _Main/BL/Type_Global_MappingCustomOrder/TypeIndex_GlobalOTDTable_CustomOrderTypeIndex.qbl
index d90f313..fea4228 100644
--- a/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingCustomOrder/TypeIndex_GlobalOTDTable_CustomOrderTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex NewTypeIndex
+TypeIndex GlobalOTDTable_CustomOrderTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingCustomOrder/TypeIndex_TypeIndex.qbl b/_Main/BL/Type_Global_MappingCustomOrder/TypeIndex_TypeIndex.qbl
deleted file mode 100644
index 29c1c4b..0000000
--- a/_Main/BL/Type_Global_MappingCustomOrder/TypeIndex_TypeIndex.qbl
+++ /dev/null
@@ -1,12 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-TypeIndex TypeIndex
-{
-  Attributes:
-  [
-    TypeIndexAttribute
-    {
-      ModelElement: ID
-    }
-  ]
-}
diff --git a/_Main/BL/Type_Global_MappingForecast/TypeIndex_TypeIndex.qbl b/_Main/BL/Type_Global_MappingForecast/TypeIndex_GlobalOTDTable_ForecastTypeIndex.qbl
similarity index 74%
rename from _Main/BL/Type_Global_MappingForecast/TypeIndex_TypeIndex.qbl
rename to _Main/BL/Type_Global_MappingForecast/TypeIndex_GlobalOTDTable_ForecastTypeIndex.qbl
index 29c1c4b..0b71e7f 100644
--- a/_Main/BL/Type_Global_MappingForecast/TypeIndex_TypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingForecast/TypeIndex_GlobalOTDTable_ForecastTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex TypeIndex
+TypeIndex GlobalOTDTable_ForecastTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingInventorySupply/TypeIndex_TypeIndex.qbl b/_Main/BL/Type_Global_MappingInventorySupply/TypeIndex_GlobalOTDTable_InventorySupplyTypeIndex.qbl
similarity index 71%
rename from _Main/BL/Type_Global_MappingInventorySupply/TypeIndex_TypeIndex.qbl
rename to _Main/BL/Type_Global_MappingInventorySupply/TypeIndex_GlobalOTDTable_InventorySupplyTypeIndex.qbl
index 29c1c4b..66def77 100644
--- a/_Main/BL/Type_Global_MappingInventorySupply/TypeIndex_TypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingInventorySupply/TypeIndex_GlobalOTDTable_InventorySupplyTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex TypeIndex
+TypeIndex GlobalOTDTable_InventorySupplyTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
index 70f08b8..6d04074 100644
--- a/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
@@ -35,5 +35,15 @@
                                          UserLeadTime := guard( datalist.Get( j ).Get( "userleadtime" ).GetString(), "" )
                                         );
     }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingLane( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堣溅閬擄級",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
index 122bc25..20f668b 100644
--- a/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
@@ -36,5 +36,15 @@
                                             UserLeadTime               := guard( datalist.Get( j ).Get( "userleadtime" ).GetString(), "" )
                                            );
     }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingLaneLeg( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堣溅閬撴敮鏋讹級",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingOperation/TypeIndex_NewTypeIndex.qbl b/_Main/BL/Type_Global_MappingOperation/TypeIndex_GlobalOTDTable_OperationTypeIndex.qbl
similarity index 92%
rename from _Main/BL/Type_Global_MappingOperation/TypeIndex_NewTypeIndex.qbl
rename to _Main/BL/Type_Global_MappingOperation/TypeIndex_GlobalOTDTable_OperationTypeIndex.qbl
index e1ca871..d525c1a 100644
--- a/_Main/BL/Type_Global_MappingOperation/TypeIndex_NewTypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingOperation/TypeIndex_GlobalOTDTable_OperationTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex NewTypeIndex
+TypeIndex GlobalOTDTable_OperationTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingOperationBOM/TypeIndex_TypeIndex.qbl b/_Main/BL/Type_Global_MappingOperationBOM/TypeIndex_GlobalOTDTable_OperationBOMTypeIndex.qbl
similarity index 92%
rename from _Main/BL/Type_Global_MappingOperationBOM/TypeIndex_TypeIndex.qbl
rename to _Main/BL/Type_Global_MappingOperationBOM/TypeIndex_GlobalOTDTable_OperationBOMTypeIndex.qbl
index d2e08d2..0e37b78 100644
--- a/_Main/BL/Type_Global_MappingOperationBOM/TypeIndex_TypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingOperationBOM/TypeIndex_GlobalOTDTable_OperationBOMTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex TypeIndex
+TypeIndex GlobalOTDTable_OperationBOMTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingProductInLane/TypeIndex_TypeIndex.qbl b/_Main/BL/Type_Global_MappingProductInLane/TypeIndex_GlobalOTDTable_ProductInLaneTypeIndex.qbl
similarity index 79%
rename from _Main/BL/Type_Global_MappingProductInLane/TypeIndex_TypeIndex.qbl
rename to _Main/BL/Type_Global_MappingProductInLane/TypeIndex_GlobalOTDTable_ProductInLaneTypeIndex.qbl
index 0612fa5..134e2d2 100644
--- a/_Main/BL/Type_Global_MappingProductInLane/TypeIndex_TypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingProductInLane/TypeIndex_GlobalOTDTable_ProductInLaneTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex TypeIndex
+TypeIndex GlobalOTDTable_ProductInLaneTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl b/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_GlobalOTDTable_StockingPointCostTypeIndex.qbl
similarity index 70%
copy from _Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl
copy to _Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_GlobalOTDTable_StockingPointCostTypeIndex.qbl
index d90f313..7b8a1cb 100644
--- a/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_GlobalOTDTable_StockingPointCostTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex NewTypeIndex
+TypeIndex GlobalOTDTable_StockingPointCostTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl b/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
index 58e6677..b800ef2 100644
--- a/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
+++ b/_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
@@ -34,5 +34,15 @@
                                                      UnitID := guard( datalist.Get( j ).Get( "unitid" ).GetString(), "" )
                                                     );
     }
+    
+    globalOTDTable.Global_BrokerExecuteLog( relnew,
+                                            BrokerName      := "",
+                                            ElementTotal    := globalOTDTable.Global_MappingStockingPoint_MP( relsize ),
+                                            ErrorMessage    := "",
+                                            IsSuccess       := true,
+                                            Name            := "鎺ュ彛鏁版嵁锛堝簱瀛樼偣锛�",
+                                            SuccessDateTime := DateTime::ActualTime().Format( "Y-M-D H2:m:s" ),
+                                            ErrorNo         := 0
+                                           );
   *]
 }
diff --git a/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl b/_Main/BL/Type_Global_MappingUnitCost/TypeIndex_GlobalOTDTable_OperationCostTypeIndex.qbl
similarity index 71%
copy from _Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl
copy to _Main/BL/Type_Global_MappingUnitCost/TypeIndex_GlobalOTDTable_OperationCostTypeIndex.qbl
index d90f313..77f102d 100644
--- a/_Main/BL/Type_Global_MappingStockingPointCost/TypeIndex_NewTypeIndex.qbl
+++ b/_Main/BL/Type_Global_MappingUnitCost/TypeIndex_GlobalOTDTable_OperationCostTypeIndex.qbl
@@ -1,6 +1,6 @@
 Quintiq file version 2.0
 #parent: #root
-TypeIndex NewTypeIndex
+TypeIndex GlobalOTDTable_OperationCostTypeIndex
 {
   Attributes:
   [
diff --git a/_Main/BL/Type_Global_MappingUnitCost/TypeIndex_TypeIndex.qbl b/_Main/BL/Type_Global_MappingUnitCost/TypeIndex_TypeIndex.qbl
deleted file mode 100644
index 29c1c4b..0000000
--- a/_Main/BL/Type_Global_MappingUnitCost/TypeIndex_TypeIndex.qbl
+++ /dev/null
@@ -1,12 +0,0 @@
-Quintiq file version 2.0
-#parent: #root
-TypeIndex TypeIndex
-{
-  Attributes:
-  [
-    TypeIndexAttribute
-    {
-      ModelElement: ID
-    }
-  ]
-}

--
Gitblit v1.9.3