yanweiyuan3
2023-10-26 a89f9faebe6e90c5cf1faeb1d551825e0cb2a06d
Create GlobalParameters

创建GlobalParameters类及期前端维护界面,目前对于API类及其他全局参数都可以进行维护,当前五个API对应AttributeName分别为:
①StockingPoint
②CurrencyInfo
③CurrencyRates
④Lanes
⑤LaneLegs
已添加26个文件
已修改8个文件
1047 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_GlobalParameters_GlobalOTDTable_GlobalOTDTable_GlobalParameters.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan#127.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_Address.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_AttributeName.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_AttributeValue.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_Port.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/Attribute_PostRequestBody.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/StaticMethod_TestForApiRequest.qbl 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_GlobalParameters/_ROOT_Type_GlobalParameters.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_MacroPlan/StaticMethod_DoASync#253.qbl 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Component_pnlActions.def 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Component_pnlContent.def 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_ClickBtnOk.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_Edit.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_New.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlActions_btnCancel_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlActions_btnOk_OnClick.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlContent_IsApi_OnChanged.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/_ROOT_Component_DialogGlobalParameters.def 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuNew_OnClick.def 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_ListGlobalParameters.def 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_PanelGlobalParameters.def 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_listActionBarPageGlobalParameters.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_listContextMenuGlobalParameters.def 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuDelete_OnClick.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuEdit_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuNew_OnClick.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/_ROOT_Component_FormGlobalParameters.def 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/全局参数.vw 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_GlobalParameters_GlobalOTDTable_GlobalOTDTable_GlobalParameters.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation GlobalParameters_GlobalOTDTable_GlobalOTDTable_GlobalParameters
{
  #keys: '1[412960.0.369930029]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide GlobalOTDTable
  {
    #keys: '3[412960.0.369930031][412960.0.369930030][412960.0.369930032]'
    Cardinality: '0to1'
    ObjectDefinition: GlobalParameters
    OwningSide: 'Reference'
  }
  RelationSide.RightSide GlobalParameters
  {
    #keys: '3[412960.0.369930034][412960.0.369930033][412960.0.369930035]'
    Cardinality: '1toN'
    ObjectDefinition: GlobalOTDTable
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_GlobalDTOTable/Method_SynchronizeDataToMacroPlan#127.qbl
@@ -101,14 +101,6 @@
      Global_MappingOperationCost::SynchronizeMacroPlanData( this, macroPlan, executionUser, businessTypes, organcodelist );
    }
    
    //if ( isDOI_DSI ) {
    //  Global_MappingDOI_DSI::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_DOI_DSI" );
    //}
    //
    //if ( isCustomerGrade ) {
    //  Global_MappingCustomerGrade::SynchronizeInterfaceData( this, executionUser, "GlobalOTDTable_CustomerGrade" );
    //}
    if ( isStockingPoint_MP ) {
      Global_MappingStockingPoint_MP::SynchronizeMacroPlanData( this, macroPlan, executionUser );
    }
_Main/BL/Type_GlobalParameters/Attribute_Address.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Address
{
  #keys: '3[412960.0.369930086][412960.0.369930085][412960.0.369930087]'
  Description: 'Api使用的地址'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/Attribute_AttributeName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute AttributeName
{
  #keys: '3[412960.0.369930046][412960.0.369930045][412960.0.369930047]'
  Description: '变量名称'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/Attribute_AttributeValue.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute AttributeValue
{
  #keys: '3[412960.0.369930056][412960.0.369930055][412960.0.369930057]'
  Description: '变量值'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/Attribute_Port.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Port
{
  #keys: '3[412960.0.369930066][412960.0.369930065][412960.0.369930067]'
  Description: 'Api使用的端口'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/Attribute_PostRequestBody.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute PostRequestBody
{
  #keys: '3[412960.0.369930076][412960.0.369930075][412960.0.369930077]'
  Description: 'Api使用的post body'
  ValueType: String
}
_Main/BL/Type_GlobalParameters/StaticMethod_TestForApiRequest.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
Quintiq file version 2.0
#parent: #root
StaticMethod TestForApiRequest (
  GlobalOTDTable owner
)
{
  TextBody:
  [*
    // Administrator Oct-26-2023 (created)
    info( "Sales Segment Finished, Start Get StockingPoint From Api" )
    bodynumber := "2";
    postrequestbody := JSON::Object()
                        .Add( "serviceInterfaceCode", "ESBOTDH000" + bodynumber )
                        .Add( "fromSystemCode", "OTDH000" + bodynumber )
                        .Add( "toInterfaceCode", "QIDH000" + bodynumber )
                        .Add( "ouZone", "OU_TMSH" )
                        .Add( "uuid", "1617355496bb588e353e80147eea5f45" )
                        .Add( "requestTime", DateTime::Now().Format( "Y-M2-D2 H:m:s" ) )
                        .Add( "dataType", "JSON" )
                        .Add( "data", JSON::Object()
                                      .Add( "pageIndex", "1" ) ).Build();
    info( DateTime::Now().Format( "Y-M2-D2 H:m:s" ) );
    postrequestbodystring := postrequestbody.AsString();
    info( postrequestbodystring );
    parameter := select( owner, GlobalParameters, param, param.AttributeName() = "test" );
    body := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    // for HTTPS requests:
    i := HTTPInterface::Create( address, port);
    //i := HTTPInterface::Create( address ,443);
    info( address, url, port, body );
    i.URL(url);
    i.SSL(false);
    //i.SSL(true);
    //i.SSLKeystore('MyKeystore'); // created in the Config Utility
    i.PostMethod(true); //it's a POST method
    i.Call(body); // Call's argument is for POST method's content.
    htmlresult := i.Result();
    info( htmlresult );
    htmlresponse := JSON::Parse( htmlresult );
    info( htmlresponse );
  *]
}
_Main/BL/Type_GlobalParameters/_ROOT_Type_GlobalParameters.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type GlobalParameters
{
  #keys: '5[412960.0.369930026][412960.0.369930024][0.0.0][412960.0.369930025][412960.0.369930027]'
  BaseType: Object
  Description: '全局参数'
  StructuredName: 'GlobalParameterss'
}
_Main/BL/Type_Global_MappingCurrencyRate_MP/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingCurrencyRate_MP( relflush );
    
    bodynumber := "5";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetCurrencyRatesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyRates" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_Global_MappingCurrency_MP/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingCurrency_MP( relflush );
    
    bodynumber := "1";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetCurrenciesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyInfo" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_Global_MappingLane/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingLane( relflush );
    
    bodynumber := "3";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetLanesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "Lanes" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_Global_MappingLaneLeg/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingLaneLeg( relflush );
    
    bodynumber := "4";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetLaneLegsInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "LaneLegs" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_Global_MappingStockingPoint_MP/StaticMethod_CreateByAPI.qbl
@@ -8,11 +8,11 @@
  [*
    globalOTDTable.Global_MappingStockingPoint_MP( relflush );
    
    bodynumber := "2";
    postrequestbody := globalOTDTable.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetStockingPointsInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "StockingPoint" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    i := HTTPInterface::Create( address, port);
    i.URL( url );
    i.SSL( true );
_Main/BL/Type_MacroPlan/StaticMethod_DoASync#253.qbl
@@ -45,31 +45,31 @@
    
    // åº“存点-3
    info( "Sales Segment Finished, Start Get StockingPoint From Api" )
    bodynumber := "2";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetStockingPointsInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "StockingPoint" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiStockingPointData( data );
    
    // è´§å¸ä¿¡æ¯-4
    info( "Get StockingPoint From Api Finished, Start Get CurrencyInfo From Api" )
    bodynumber := "1";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetCurrenciesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyInfo" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiCurenciesData( data );
    
    //货币汇率信息-5
    info( "Get CurrencyInfo From Api Finished, Start Get CurrencyRates From Api" )
    bodynumber := "5";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetCurrencyRatesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "CurrencyRates" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiCurencyRatesData( data );
    
@@ -93,21 +93,21 @@
    
    //车道信息-10
    info( "BOM Finished, Start Get Lanes From Api" );
    bodynumber := "3";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetLanesInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "Lanes" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiLanesData( data );
    
    //车道运输段-11
    info( "Get Lanes From Api Finished, Start Get LaneLegs From Api" );
    bodynumber := "4";
    postrequestbody := macroPlan.ApiBuildPostRequestBody( bodynumber );
    address := "api-uat-sgc.tianma.cn";
    url := "/otdService/https/GetLaneLegsInfo";
    port := 443;
    parameter := select( globalOTDTable, GlobalParameters, param, param.AttributeName() = "LaneLegs" );
    postrequestbody := parameter.PostRequestBody();
    address := parameter.Address();
    url := parameter.AttributeValue();
    port := [Number]parameter.Port();
    data := macroPlan.ApiResponesCheck( address, url, port, postrequestbody );
    macroPlan.ApiLaneLegsData( data );
    
@@ -115,7 +115,7 @@
    //info( "Get Lanelegs From Api Finished, Start ProductInLane Data Broker" );
    //macroPlan.Broker_OTD_ProductInLane().Execute();
    info( "ProductInLane Data Broker Finished, Start ProductInLane Mapping" );
    macroPlan.DoASyncMappingProductInLaneData(globalOTDTable,businessTypeName);
    macroPlan.DoASyncMappingProductInLaneData(globalOTDTable,guard( businessTypeName.Element( 0 ), "" ));
    
    // åœ¨åº“库存数据-13
    //info( "ProductInLane Finished, Start ActualPISPIP Data Broker" );
@@ -130,7 +130,7 @@
    macroPlan.DoASyncMappingExternalSupplyData( businessTypeName, isKeyProduct ,globalOTDTable, organcodelist );
    
    // åº“存成本-15
    InventoryValueAndCost::DoASync( macroPlan,globalOTDTable, businessTypeName );
    InventoryValueAndCost::DoASync( macroPlan,globalOTDTable,guard( businessTypeName.Element( 0 ), "" ) );
    
    // todo åˆ¶é€ æˆæœ¬-16
    info( "InventoryCost Finished, Start OperationCost Mapping" );
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Component_pnlActions.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
Quintiq file version 2.0
Component pnlActions
{
  #keys: '[412960.0.370310585]'
  BaseType: 'WebPanel'
  Children:
  [
    Component btnOk
    {
      #keys: '[412960.0.370310589]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'OK'
        Taborder: 0
      ]
    }
    Component btnCancel
    {
      #keys: '[412960.0.370310591]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: 'Cancel'
        Taborder: 1
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    Border: true
    ExcludeFromActiveComponent: true
    FixedSize: true
    Orientation: 'horizontal'
    Padding: 'true'
    Style: 'footer'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Component_pnlContent.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
Quintiq file version 2.0
Component pnlContent
{
  #keys: '[412960.0.370310583]'
  BaseType: 'WebPanel'
  Children:
  [
    Component editAttributeName
    {
      #keys: '[412960.0.370311392]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.AttributeName'
        Label: '参数名称'
        Taborder: 1
      ]
    }
    Component editAttributeValue
    {
      #keys: '[412960.0.370311429]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.AttributeValue'
        Label: '参数值'
        Taborder: 2
      ]
    }
    Component editAddress
    {
      #keys: '[412960.0.370311489]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.Address'
        Label: 'Api地址'
        Taborder: 3
        Visible: false
      ]
    }
    Component editPort
    {
      #keys: '[412960.0.370311527]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.Port'
        Label: 'Api端口号'
        Taborder: 4
        Visible: false
      ]
    }
    Component editPostRequestBody
    {
      #keys: '[412960.0.370311577]'
      BaseType: 'WebEditField'
      Properties:
      [
        DataBinding: 'DataHolderGlobalParameters.Data.PostRequestBody'
        Label: 'Api请求主体'
        Taborder: 5
        Visible: false
      ]
    }
    Component IsApi
    {
      #keys: '[412960.0.370311617]'
      BaseType: 'WebCheckbox'
      Properties:
      [
        Description: '是否为API相关参数'
        Label: 'API配置'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    Padding: 'true'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_ClickBtnOk.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: #root
Method ClickBtnOk () id:Method_DialogGlobalParameters_ClickBtnOk
{
  #keys: '[412960.0.370310978]'
  Body:
  [*
    // Disabled button to prevent the possibility of multiple firing
    btnOk.Enabled(false,'');
    // OnOk
    this.ApplyChanges();
    DataHolderGlobalParameters.Data().Commit();
    this.Close();
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_Edit.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
#parent: #root
Method Edit (
  GlobalParameters selection
) id:Method_DialogGlobalParameters_Edit
{
  #keys: '[412960.0.370310979]'
  Body:
  [*
    // Edits assumption
    data := shadow( selection );
    DataHolderGlobalParameters.Data( &data );
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Method_New.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: #root
Method New (
  GlobalOTDTable owner
) id:Method_DialogGlobalParameters_New
{
  #keys: '[412960.0.370310981]'
  Body:
  [*
    data := owner.GlobalParameters(relshadow);
    DataHolderGlobalParameters.Data( &data);
    ApplicationMacroPlanner.ShowFormModal( this );
  *]
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlActions_btnCancel_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnCancel
Response OnClick () id:Response_pnlActions_btnCancel_OnClick
{
  #keys: '[412960.0.370310595]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.Close();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlActions_btnOk_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
#parent: pnlActions/btnOk
Response OnClick () id:Response_pnlActions_btnOk_OnClick
{
  #keys: '[412960.0.370310594]'
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      Form.ClickBtnOk()
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/Response_pnlContent_IsApi_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: pnlContent/IsApi
Response OnChanged () id:Response_pnlContent_IsApi_OnChanged
{
  #keys: '[412960.0.370311653]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebCheckbox_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      editAddress.Visible( this.Checked() );
      editPort.Visible( this.Checked() );
      editPostRequestBody.Visible( this.Checked() );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_DialogGlobalParameters/_ROOT_Component_DialogGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent DialogGlobalParameters
{
  #keys: '[412960.0.370310581]'
  BaseType: 'WebForm'
  Children:
  [
    #child: pnlContent
    #child: pnlActions
    Component DataHolderGlobalParameters
    {
      #keys: '[412960.0.370311111]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[GlobalParameters]*'
      Properties:
      [
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Alignment: 'trailing'
    EnterButton: 'btnOk'
    EscapeButton: 'btnCancel'
    ExcludeFromActiveComponent: true
    Padding: 'false'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_Form367/Response_ListBusinessType_MenuNew_OnClick.def
@@ -2,7 +2,7 @@
#parent: ListBusinessType
Response OnClick () id:Response_ListBusinessType_MenuNew_OnClick
{
  #keys: '[414382.0.377975353]'
  #keys: '[412960.0.373110863]'
  CanBindMultiple: false
  DefinitionID => /ListBusinessType/Responsedef_ListBusinessType_WebMenu_OnClick
  GroupServerCalls: true
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_ListGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
Quintiq file version 2.0
Component ListGlobalParameters
{
  #keys: '[412960.0.370311764]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorGlobalParameters
    {
      #keys: '[412960.0.370311765]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'GlobalOTDTable'
        Source: 'GlobalOTDTable'
        Taborder: 0
        Transformation: 'GlobalParameters'
      ]
    }
    #child: listActionBarPageGlobalParameters
    Component DataSetLevelGlobalParameters
    {
      #keys: '[412960.0.370311770]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuGlobalParameters
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AttributeName","title":"AttributeName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AttributeName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"AttributeValue","title":"AttributeValue","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"AttributeValue"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Address","title":"Address","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Address"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Port","title":"Port","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Port"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"PostRequestBody","title":"PostRequestBody","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"PostRequestBody"}}]'
        ContextMenu: 'listContextMenuGlobalParameters'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_ListGlobalParameters_WebMenu_OnClick
    {
      #keys: '[412960.0.373111120]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[693.0.13162755]'
          Binding: 'this.Selection()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_PanelGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
Component PanelGlobalParameters
{
  #keys: '[412960.0.370311750]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListGlobalParameters
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_listActionBarPageGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageGlobalParameters
{
  #keys: '[412960.0.370311767]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Component_listContextMenuGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
Quintiq file version 2.0
Component listContextMenuGlobalParameters
{
  #keys: '[412960.0.370311772]'
  BaseType: 'listContextMenu'
  Children:
  [
    Component MenuNew id:MenuNew_21
    {
      #keys: '[412960.0.370312224]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'ADD2'
        Taborder: 3
        Title: 'New'
      ]
    }
    Component MenuEdit id:MenuEdit_368
    {
      #keys: '[412960.0.370312277]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'PENCIL'
        Taborder: 4
        Title: 'Edit'
      ]
    }
    Component MenuDelete id:MenuDelete_832
    {
      #keys: '[412960.0.370312355]'
      BaseType: 'WebMenu'
      Properties:
      [
        Image: 'DELETE'
        Taborder: 5
        Title: 'Delete'
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuDelete_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: ListGlobalParameters
Response OnClick (
  GlobalParameters selection
) id:Response_ListGlobalParameters_MenuDelete_OnClick
{
  #keys: '[412960.0.373113087]'
  CanBindMultiple: false
  DefinitionID => /ListGlobalParameters/Responsedef_ListGlobalParameters_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuDelete'
  QuillAction
  {
    Body:
    [*
      selection.Delete();
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuEdit_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: ListGlobalParameters
Response OnClick (
  GlobalParameters selection
) id:Response_ListGlobalParameters_MenuEdit_OnClick
{
  #keys: '[412960.0.373112994]'
  CanBindMultiple: false
  DefinitionID => /ListGlobalParameters/Responsedef_ListGlobalParameters_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuEdit'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogGlobalParameters );
      dlg.Edit( selection );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/Response_ListGlobalParameters_MenuNew_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#parent: ListGlobalParameters
Response OnClick () id:Response_ListGlobalParameters_MenuNew_OnClick
{
  #keys: '[412960.0.373111139]'
  CanBindMultiple: false
  DefinitionID => /ListGlobalParameters/Responsedef_ListGlobalParameters_WebMenu_OnClick
  GroupServerCalls: true
  Initiator: 'MenuNew'
  QuillAction
  {
    Body:
    [*
      dlg := construct( DialogGlobalParameters );
      dlg.New( GlobalOTDTable );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormGlobalParameters/_ROOT_Component_FormGlobalParameters.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormGlobalParameters
{
  #keys: '[412960.0.367611841]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelGlobalParameters
  ]
  Properties:
  [
    Description: '存放各类全局参数,目前仅包含API相关'
    Image: 'EARTH2'
    Title: 'Global Parameters'
  ]
}
_Main/UI/MacroPlannerWebApp/Views/È«¾Ö²ÎÊý.vw
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,351 @@
Quintiq file version 2.0
{
  viewcontents
  {
    forms
    {
      form_legacy_1
      {
        title: 'Scenario manager'
        shown: true
        componentID: 'FormScenarioManager'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormScenarioManager_ListScenario
          {
          }
          FormScenarioManager_DataSetLevelScenario
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 90
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 277
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 2
              subtotals: ''
              width: 106
            }
            column_ChangedOn
            {
              columnId: 'ChangedOn'
              dataPath: 'ChangedOn'
              dataType: 'datetime'
              title: 'Changed on'
              index: 3
              subtotals: ''
              width: 99
            }
            column_StorageMode
            {
              columnId: 'StorageMode'
              dataPath: 'StorageMode'
              dataType: 'string'
              title: 'StorageMode'
              index: 4
              subtotals: ''
              width: 40
            }
          }
        }
      }
      form_legacy_2
      {
        title: 'Assumptions'
        shown: true
        componentID: 'FormAssumptions'
        layout
        {
          mode: 'open'
          rowPosition: 9
          rowSpan: 8
          columnPosition: 1
          columnSpan: 5
        }
        components
        {
          FormAssumptions_ListAssumptions
          {
          }
          FormAssumptions_DataSetLevelAssumptions
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Category
            {
              columnId: 'Category'
              dataPath: 'Category'
              dataType: 'string'
              title: '类别'
              index: 1
              subtotals: ''
              width: 108
            }
            column_Importance
            {
              columnId: 'Importance'
              dataPath: 'Importance'
              dataType: 'string'
              title: '重要性'
              index: 2
              subtotals: ''
              width: 110
            }
            column_Title
            {
              columnId: 'Title'
              dataPath: 'Title'
              dataType: 'string'
              title: '标题'
              index: 3
              subtotals: ''
              width: 150
            }
            column_ChangedBy
            {
              columnId: 'ChangedBy'
              dataPath: 'ChangedBy'
              dataType: 'string'
              title: 'Changed by'
              index: 4
              subtotals: ''
              width: 150
            }
            column_CreatedOn
            {
              columnId: 'CreatedOn'
              dataPath: 'CreatedOn'
              dataType: 'datetime'
              title: 'Created on'
              index: 5
              subtotals: ''
              width: 150
            }
          }
        }
      }
      form_FormScenariosKPIsComparison
      {
        title: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        shown: true
        componentID: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison'
        layout
        {
          mode: 'open'
          rowPosition: 1
          rowSpan: 16
          columnPosition: 6
          columnSpan: 7
        }
        components
        {
          FormScenariosKPIsComparison_MatrixEditorFinancialKPIs
          {
            gridColor: '#c4c4c4'
            totalHeaderWidth: 200
            attributeHeaderWidthRatio: 0.6
            nameHeaderWidthRatio: 0.4
            columnWidth: 100
            horizontalGrid: true
            verticalGrid: true
            backendState
            {
              componentId: 'QLibMacroPlannerWebUI::FormScenariosKPIsComparison.MatrixEditorFinancialKPIs'
              state
              {
                cells
                {
                  attributes
                  {
                    attribute_DisplayValue
                    {
                      type: 'MatrixEditorWebApiCellDataModelInterest'
                      index: 0
                      rowsubtotal: ''
                      columnsubtotal: ''
                      attribute: 'DisplayValue'
                    }
                  }
                }
                columns
                {
                  sorting
                  {
                    criteria: ''
                  }
                }
                rows
                {
                  sorting
                  {
                    criteria: "datamember:'KPISetting.DisplayIndex'"
                  }
                }
              }
            }
          }
        }
      }
      form_FormOptimizerPuzzles
      {
        title: 'Optimizer Puzzles'
        shown: false
        componentID: 'FormOptimizerPuzzles'
        layout
        {
          mode: 'dockright'
          index: 0
        }
        components
        {
          FormOptimizerPuzzles_ListOptimizerPuzzles
          {
          }
          FormOptimizerPuzzles_DataSetLevelOptimizerPuzzles
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 109
            }
            column_Description
            {
              columnId: 'Description'
              dataPath: 'Description'
              dataType: 'string'
              title: '描述'
              index: 2
              subtotals: ''
              width: 207
            }
          }
        }
      }
      form_FormKPI
      {
        title: 'KPI Dashboard'
        shown: true
        componentID: 'FormKPI'
        layout
        {
          mode: 'dockright'
          index: 1
        }
        components
        {
          FormKPI_PanelKPI
          {
            sizeRatio: 1
            activeChild: 'PanelKPISelection'
          }
          FormKPI_PanelKPIDashboard
          {
            sizeRatio: 1
          }
          FormKPI_PanelKPISelection
          {
            sizeRatio: 1
          }
          FormKPI_ListKPISelection
          {
            QuillViewData
            {
              Food_KPISetting: 'Cost of sales;Fulfillment;Fulfillment target;Inventory holding cost;Labor cost;Margin;Safety stock;Sales;Sourcing cost;Total CO2 emission;Transportation cost;Volume'
            }
          }
          FormKPI_DataSetLevelKPISelection
          {
            groupDepth: -1
            column_All_constraints
            {
              columnId: 'All constraints'
              dataPath: 'All constraints'
              dataType: 'string'
              title: 'All constraints'
              index: 0
              subtotals: ''
              width: 32
            }
            column_Name
            {
              columnId: 'Name'
              dataPath: 'Name'
              dataType: 'string'
              title: '名称'
              index: 1
              subtotals: ''
              width: 200
            }
          }
        }
      }
    }
    userconfigurableinformation
    {
    }
    page: 'applicationDevelopmentActionBarPageDef'
    group: ''
    index: 4
    image: 'EARTH2'
    description: ''
  }
  formatversion: 2
  id: '全局参数'
  name: '全局参数'
  isglobal: false
  isroot: true
}