yanweiyuan3
2023-09-20 793923d88f0a0168b1e365e06202784b4089c717
Order Lock frontend develop

订单锁定/解锁前端界面绘制及筛选相关功能开发,剩余为锁定及解锁相关功能
已添加41个文件
已修改1个文件
1512 ■■■■■ 文件已修改
_Main/BL/Relations/Relation_OrderLockLog_MacroPlan_MacroPlan_OrderLockLog.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_LastModify.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_CustomerOrder/Attribute_LastModifyTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_CustomerName#23.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_End.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_EndDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_IsFirmed#2.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_LastModify.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_LastModifyTime.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_OrderID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_Price.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_Quantity.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_SalesSegmentName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_StockingPointID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/Attribute_UnitOfMeasureName.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/DefaultValue_LastModify.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_OrderLockLog/_ROOT_Type_OrderLockLog.qbl 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_Scenario/Attribute_IsOrderLocked.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock#844.def 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_MatrixEditorProductPlanning#679.def 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelMatrix#780.def 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLock.def 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockHeader#545.def 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockOrder.def 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockPlanning.def 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_listActionBarPageOrderLock#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_listContextMenuOrderLock#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_matrixEditorActionBarPageProductPlanning#1.def 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_matrixeditorContextMenuProductPlanning#1.def 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_MenuLock_OnClick.def 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_MenuUnlock_OnClick.def 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_OnCheckEditability.def 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_OnUserSelectionChanged.def 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderClear_OnClick.def 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeader_OnClick.def 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderCustomerOrder_O.def 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderPlanDeliver_OnC.def 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/_ROOT_Component_FormOrderLock.def 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPHeader.def 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Views/OrderLock.vw 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_OrderLockLog_MacroPlan_MacroPlan_OrderLockLog.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation OrderLockLog_MacroPlan_MacroPlan_OrderLockLog
{
  #keys: '1[412960.0.217504333]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide MacroPlan
  {
    #keys: '3[412960.0.217504335][412960.0.217504334][412960.0.217504336]'
    Cardinality: '0to1'
    ObjectDefinition: OrderLockLog
    OwningSide: 'Reference'
  }
  RelationSide.RightSide OrderLockLog
  {
    #keys: '3[412960.0.217504338][412960.0.217504337][412960.0.217504339]'
    Cardinality: '1toN'
    ObjectDefinition: MacroPlan
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_CustomerOrder/Attribute_LastModify.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastModify
{
  #keys: '3[412960.0.217504307][412960.0.217504306][412960.0.217504308]'
  Description: '最后修改人'
  ValueType: String
}
_Main/BL/Type_CustomerOrder/Attribute_LastModifyTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastModifyTime
{
  #keys: '3[412960.0.217504317][412960.0.217504316][412960.0.217504318]'
  Description: '最后操作时间'
  ValueType: DateTime
}
_Main/BL/Type_OrderLockLog/Attribute_CustomerName#23.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute CustomerName
{
  #keys: '3[412960.0.217504426][412960.0.217504425][412960.0.217504427]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_End.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute End
{
  #keys: '3[412960.0.217504488][412960.0.217504487][412960.0.217504489]'
  ValueType: Date
}
_Main/BL/Type_OrderLockLog/Attribute_EndDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute EndDate
{
  #keys: '3[412960.0.217504467][412960.0.217504466][412960.0.217504468]'
  ValueType: Date
}
_Main/BL/Type_OrderLockLog/Attribute_IsFirmed#2.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute IsFirmed
{
  #keys: '3[412960.0.217504477][412960.0.217504476][412960.0.217504478]'
  ValueType: Boolean
}
_Main/BL/Type_OrderLockLog/Attribute_LastModify.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastModify
{
  #keys: '3[412960.0.217504501][412960.0.217504500][412960.0.217504502]'
  Description: '最后修改人'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_LastModifyTime.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute LastModifyTime
{
  #keys: '3[412960.0.217504498][412960.0.217504497][412960.0.217504499]'
  Description: '最后操作时间'
  ValueType: DateTime
}
_Main/BL/Type_OrderLockLog/Attribute_OrderID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute OrderID
{
  #keys: '3[412960.0.217504386][412960.0.217504385][412960.0.217504387]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_Price.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Price
{
  #keys: '3[412960.0.217504457][412960.0.217504456][412960.0.217504458]'
  ValueType: Real
}
_Main/BL/Type_OrderLockLog/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[412960.0.217504396][412960.0.217504395][412960.0.217504397]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_Quantity.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Quantity
{
  #keys: '3[412960.0.217504437][412960.0.217504436][412960.0.217504438]'
  ValueType: Real
}
_Main/BL/Type_OrderLockLog/Attribute_SalesSegmentName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute SalesSegmentName
{
  #keys: '3[412960.0.217504406][412960.0.217504405][412960.0.217504407]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_StockingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StockingPointID
{
  #keys: '3[412960.0.217504416][412960.0.217504415][412960.0.217504417]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/Attribute_UnitOfMeasureName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute UnitOfMeasureName
{
  #keys: '3[412960.0.217504447][412960.0.217504446][412960.0.217504448]'
  ValueType: String
}
_Main/BL/Type_OrderLockLog/DefaultValue_LastModify.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: LastModify
}
_Main/BL/Type_OrderLockLog/_ROOT_Type_OrderLockLog.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type OrderLockLog
{
  #keys: '5[412960.0.217504330][412960.0.217504328][0.0.0][412960.0.217504329][412960.0.217504331]'
  BaseType: Object
  Description: '订单锁定操作日志'
  StructuredName: 'OrderLockLogs'
}
_Main/BL/Type_Scenario/Attribute_IsOrderLocked.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute IsOrderLocked
{
  #keys: '3[412960.0.212420059][412960.0.212420058][412960.0.212420060]'
  Description: '订单锁定的是否锁定筛选条件'
  ValueType: String
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_ListOrderLock#844.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
Quintiq file version 2.0
Component ListOrderLock id:ListOrderLock_844
{
  #keys: '[412960.0.217980651]'
  BaseType: 'WebList'
  Children:
  [
    Component DataExtractorOrderLock743
    {
      #keys: '[412960.0.217980652]'
      BaseType: 'WebDataExtractor'
      Properties:
      [
        DataType: 'structured[CustomerOrder]'
        Description: '获取订单'
        Source: 'DataHolderOrderLock'
        Taborder: 0
        Transformation: 'Elements'
      ]
    }
    #child: listActionBarPageOrderLock_1
    Component DataSetLevelOrderLock
    {
      #keys: '[412960.0.217980654]'
      BaseType: 'WebDataSetLevel'
      Children:
      [
        #child: listContextMenuOrderLock_1
      ]
      Properties:
      [
        Columns: '[{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"OrderID","title":"OrderID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"OrderID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"ProductID","title":"ProductID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"ProductID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"SalesSegmentName","title":"SalesSegmentName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"SalesSegmentName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"StockingPointID","title":"StockingPointID","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"StockingPointID"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"CustomerName","title":"CustomerName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"CustomerName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Quantity","title":"Quantity","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Quantity"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"UnitOfMeasureName","title":"UnitOfMeasureName","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"UnitOfMeasureName"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"Price","title":"Price","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"Price"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"EndDate","title":"EndDate","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"EndDate"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"IsFirmed","title":"IsFirmed","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"IsFirmed"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"First.AsPlanningBaseSalesDemandInPeriod.End","title":"End","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"First.AsPlanningBaseSalesDemandInPeriod.End"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModify","title":"LastModify","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModify"}},{"attribute":{"classtype":"WebApiDefinitionAttributeDataMember","columnid":"LastModifyTime","title":"LastModifyTime","subtotals":"","tooltip":"","width":-1,"display":"shown","editable":false,"attribute":"LastModifyTime"}}]'
        ContextMenu: 'listContextMenuOrderLock'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_MatrixEditorProductPlanning#679.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,210 @@
Quintiq file version 2.0
Component MatrixEditorProductPlanning id:MatrixEditorProductPlanning_679
{
  #keys: '[412960.0.220270414]'
  BaseType: 'WebMatrixEditor'
  Children:
  [
    Component MatrixEditorCellPISPIP
    {
      #keys: '[412960.0.220270415]'
      BaseType: 'WebMatrixEditorCell'
      Children:
      [
        Component DataExtractorPISPIP
        {
          #keys: '[412960.0.220270416]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[ProductInStockingPoint_MP]'
            FixedFilter: 'not object.ProductInStockingPoint_MP().IsSystem() and object.ProductInStockingPoint_MP().IsLeaf()'
            Source: 'ApplicationMacroPlanner.DataHolderPISP'
            Taborder: 0
            Transformation: 'Elements.ProductInStockingPointInPeriod'
          ]
        }
      ]
      Properties:
      [
        Attributes: 'DisplaySupplyQuantity;DependentDemandAndSalesDemandQuantity;TargetInventoryLevel;InventoryLevelEnd;StockLevelInDays'
        Column: 'Period_MP'
        Row: 'ProductInStockingPoint_MP'
        Taborder: 2
      ]
    }
    Component MatrixEditorRowsPISP
    {
      #keys: '[412960.0.220270417]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorPISP
        {
          #keys: '[412960.0.220270418]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'CustomerOrder'
            ExtractionMode: 'Selected'
            FixedFilter: 'not object.IsSystem() and object.IsLeaf()'
            Source: 'ListOrderLock'
            Taborder: 0
            Transformation: 'ProductInStockingPoint_MP'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Name'
        SortCriteria: 'Product_MP.DisplayIndex;Name'
        Taborder: 0
      ]
    }
    Component MatrixEditorColumnsPeriod
    {
      #keys: '[412960.0.220270419]'
      BaseType: 'WebMatrixEditorHeaderLevel'
      Children:
      [
        Component DataExtractorPeriod
        {
          #keys: '[412960.0.220270420]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'structured[Period_MP]'
            Source: 'ApplicationMacroPlanner.DataHolderPeriods'
            Taborder: 0
            Transformation: 'Elements'
          ]
        }
      ]
      Properties:
      [
        Legend: 'Start'
        SortCriteria: 'Start'
        Taborder: 1
      ]
    }
    Component UserConfigurableInformationMatrixEditorProductPlanning
    {
      #keys: '[412960.0.220270421]'
      BaseType: 'WebUserConfigurableInformation'
      Properties:
      [
        Identifier: 'Cell: PISPIP'
        ObjectType: 'ProductInStockingPointInPeriod'
        Taborder: 3
        Text: 'Test text'
        Tooltip: '<table><tr><td><b>SYNONYM(object.InventoryLevelEnd())</b></td><td>VALUE( MacroPlan::GetDisplayValue( object.InventoryLevelEnd() ) )</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td><b>Inventory holding cost </b></td><td>VALUE(object.TotalBaseInventoryHoldingCost())VALUE( \' \'+ object.ProductInStockingPoint_MP().StockingPoint_MP().Currency_MP().Symbol() )</td><td>VALUE( \'[\' + object.TotalBaseInventoryHoldingCostPerQuantity().Format(\'N(Dec(2))\') )</td><td>VALUE( object.ProductInStockingPoint_MP().StockingPoint_MP().Currency_MP().Symbol()  + \'/\' + object.ProductInStockingPoint_MP().UnitOfMeasure_MP().Name() + \']\' )  </td></tr><tr><td><b>SYNONYM(object.StockLevelInDays())</b></td><td>VALUE(object.StockLevelInDays)</td><td>day</td></tr><tr><td><b>Total supply </b></td><td>VALUE(object.SupplyQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td/><td><b>Total demand </b></td><td>VALUE(object.GetDemandQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td></tr><br><tr><td><b>Inventory start </b></td><td>VALUE( guard( MacroPlan::GetDisplayValue( object.InventoryLevelStartPISPIP().InventoryLevelEnd() ), 0.0 ) )</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td/><td><b>Sales demand </b></td><td>VALUE(object.SalesDemandQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td></tr><tr><td><b>New supply </b></td><td>VALUE(object.NewSupplyQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td/><td><b>Dependent demand </b></td><td>VALUE(object.DependentDemandQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td></tr><tr><td><b>Inventory supply </b></td><td>VALUE(object.InventorySupplyQuantity())</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td><td/><td><b>Fulfilled demand </b></td><td>VALUE(object.FulfilledDemandQuantity() )</td><td>VALUE(object.ProductInStockingPoint_MP().UnitOfMeasureName())</td></tr></table><hr>VALUE( object.ImgHasFeedback() ) VALUE(  ifexpr( object.HasFeedback() , " Feedback message exist. Refer to Supply Planning matrix for details."  , "" )  )'
      ]
    }
    #child: matrixEditorActionBarPageProductPlanning_1
    #child: matrixeditorContextMenuProductPlanning_1
  ]
  Properties:
  [
    AllowAttributeConfiguration: true
    AllowMultipleAttributes: true
    Columns: 'MatrixEditorColumnsPeriod'
    ContextMenu: 'matrixeditorContextMenuProductPlanning'
    Rows: 'MatrixEditorRowsPISP'
    ShowEditability: true
    ShowSingleAttribute: true
    Taborder: 0
  ]
  ResponseDefinitions:
  [
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick
    {
      #keys: '[412960.0.220270401]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[6763.0.7990336]'
          Binding: 'this.Selection()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebButton_OnClick
    {
      #keys: '[412960.0.220270400]'
      Initiator: 'WebButton'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selection
        {
          #keys: '[6763.0.7990409]'
          Binding: 'this.Selection()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick_119
    {
      #keys: '[412960.0.220270399]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selectedrows
        {
          #keys: '[6763.0.7990482]'
          Binding: 'this.SelectedRows()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebButton_OnClick_720
    {
      #keys: '[412960.0.220270398]'
      Initiator: 'WebButton'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selectedrows
        {
          #keys: '[6763.0.7990555]'
          Binding: 'this.SelectedRows()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick_640
    {
      #keys: '[412960.0.220270397]'
      Initiator: 'WebMenu'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selectedcolumns
        {
          #keys: '[6763.0.7990628]'
          Binding: 'this.SelectedColumns()'
        }
      ]
    }
    DelegatedResponseDefinition OnClick id:Responsedef_MatrixEditorProductPlanning_679_WebButton_OnClick_582
    {
      #keys: '[412960.0.220270396]'
      Initiator: 'WebButton'
      IsInherited: false
      ResponseType: 'OnClick'
      Arguments:
      [
        ResponseDefinitionArgument selectedcolumns
        {
          #keys: '[6763.0.7990701]'
          Binding: 'this.SelectedColumns()'
        }
      ]
    }
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelMatrix#780.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
Quintiq file version 2.0
Component PanelMatrix id:PanelMatrix_780
{
  #keys: '[412960.0.220270412]'
  BaseType: 'WebPanel'
  Children:
  [
    Component DataHolderSelectedPISPIPsInProductPlanningMatrix
    {
      #keys: '[412960.0.220270413]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[ProductInStockingPointInPeriod]*'
      Properties:
      [
        Taborder: 1
      ]
    }
    #child: MatrixEditorProductPlanning_679
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLock.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
Quintiq file version 2.0
Component PanelOrderLock
{
  #keys: '[412960.0.212571359]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelOrderLockHeader_545
    #child: PanelOrderLockOrder
    #child: PanelOrderLockPlanning
  ]
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockHeader#545.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
Quintiq file version 2.0
Component PanelOrderLockHeader id:PanelOrderLockHeader_545
{
  #keys: '[412960.0.212571440]'
  BaseType: 'WebPanel'
  Children:
  [
    Component LabelOrderLockHeaderVersion
    {
      #keys: '[412960.0.212571441]'
      BaseType: 'WebLabel'
      Properties:
      [
        Description: 'MPS版本名称'
        Label: 'MPS版本:'
        Taborder: 0
      ]
    }
    Component EditFieldOrderLockHeader
    {
      #keys: '[412960.0.212571468]'
      BaseType: 'WebEditField'
      Properties:
      [
        Description: '模糊搜索筛选框'
        PlaceHolder: '模糊搜索'
        Taborder: 1
      ]
    }
    Component DateSelectorOrderLockHeaderCustomerOrder
    {
      #keys: '[412960.0.212571527]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 2023-01-01
        Description: '客户需求时间'
        Label: '客户需求时间'
        Taborder: 3
      ]
    }
    Component DateSelectorOrderLockHeaderPlanDeliver
    {
      #keys: '[412960.0.212571611]'
      BaseType: 'WebDateSelector'
      Properties:
      [
        Date: 2023-01-01
        Description: '计划交付时间'
        Label: '计划交付时间'
        Taborder: 4
      ]
    }
    Component ButtonOrderLockHeader
    {
      #keys: '[412960.0.212571669]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '模糊搜索按钮'
        Label: '搜索'
        Taborder: 2
      ]
    }
    Component RadioButtonGroupOrderLockHeader
    {
      #keys: '[412960.0.212571696]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
        BoundValue: 'all'
        ButtonLabels: '已锁定;未锁定;全部'
        ButtonValues: 'locked;unlocked;all'
        DataBinding: 'DataHolderOrderLockGlobal.Data.IsOrderLocked'
        Description: '是否锁定的点选框'
        Orientation: 'horizontal'
        Taborder: 5
      ]
    }
    Component ButtonOrderLockHeaderLock
    {
      #keys: '[412960.0.221760476]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '订单锁定'
        Label: '锁定'
        Taborder: 7
      ]
    }
    Component ButtonOrderLockHeaderUnlock
    {
      #keys: '[412960.0.221760488]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '订单解锁'
        Label: '解锁'
        Taborder: 8
      ]
    }
    Component ButtonOrderLockHeaderClear
    {
      #keys: '[412960.0.223264324]'
      BaseType: 'WebButton'
      Properties:
      [
        ButtonSize: 'compact'
        Description: '清除筛选项'
        Label: '清除筛选'
        Taborder: 6
      ]
    }
  ]
  Properties:
  [
    Description: '放置lable,按钮等'
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockOrder.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
Quintiq file version 2.0
Component PanelOrderLockOrder
{
  #keys: '[412960.0.217980613]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: ListOrderLock_844
  ]
  Properties:
  [
    Description: '订单信息展示'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_PanelOrderLockPlanning.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
Quintiq file version 2.0
Component PanelOrderLockPlanning
{
  #keys: '[412960.0.220270252]'
  BaseType: 'WebPanel'
  Children:
  [
    #child: PanelMatrix_780
  ]
  Properties:
  [
    Border: true
    Description: '订单对应的计划数据'
    Taborder: 2
    Title: '计划详情'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_listActionBarPageOrderLock#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listActionBarPageOrderLock id:listActionBarPageOrderLock_1
{
  #keys: '[412960.0.217980653]'
  BaseType: 'listActionBarPage'
  Properties:
  [
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_listContextMenuOrderLock#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component listContextMenuOrderLock id:listContextMenuOrderLock_1
{
  #keys: '[412960.0.217980655]'
  BaseType: 'listContextMenu'
  Properties:
  [
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_matrixEditorActionBarPageProductPlanning#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
Quintiq file version 2.0
Component matrixEditorActionBarPageProductPlanning id:matrixEditorActionBarPageProductPlanning_1
{
  #keys: '[412960.0.220270422]'
  BaseType: 'matrixEditorActionBarPage'
  Properties:
  [
    Taborder: 5
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Component_matrixeditorContextMenuProductPlanning#1.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
Quintiq file version 2.0
Component matrixeditorContextMenuProductPlanning id:matrixeditorContextMenuProductPlanning_1
{
  #keys: '[412960.0.220270423]'
  BaseType: 'matrixeditorContextMenu'
  Children:
  [
    Component MenuCopy
    {
      #keys: '[138034.3.1296123318]'
      BaseType: 'MenuCopy'
      IsDerived: true
      Properties:
      [
        Taborder: 2
      ]
    }
    Component MenuSeparator3
    {
      #keys: '[412960.0.220270424]'
      BaseType: 'WebMenu'
      Properties:
      [
        Separator: true
        Taborder: 1
      ]
    }
    Component MenuLock
    {
      #keys: '[412960.0.220270427]'
      BaseType: 'WebMenu'
      Properties:
      [
        DelegationID: 'ActionBarPlan_Lock'
        Image: 'LOCK'
        Taborder: 3
        Title: 'Lock'
      ]
    }
    Component MenuUnlock
    {
      #keys: '[412960.0.220270428]'
      BaseType: 'WebMenu'
      Properties:
      [
        DelegationID: 'ActionBarPlan_Unlock'
        Image: 'LOCK_OPEN'
        Taborder: 4
        Title: 'Unlock'
      ]
    }
  ]
  Properties:
  [
    Taborder: 4
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_MenuLock_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
Quintiq file version 2.0
#parent: MatrixEditorProductPlanning_679
Response OnClick (
  structured[ProductInStockingPointInPeriod] selection
) id:Response_MatrixEditorProductPlanning_679_MenuLock_OnClick
{
  #keys: '[412960.0.220270410]'
  CanBindMultiple: false
  DefinitionID => /MatrixEditorProductPlanning_679/Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick
  Initiator: 'MenuLock'
  Precondition:
  [*
    return ProductInStockingPointInPeriod::CanLockUnlock( selection, feedback );
  *]
  QuillAction
  {
    Body:
    [*
      // Lock total supply quantity for PISPIPs
      // This is a workaround, we supposedly set the bindingtype of selection as the subtype, but
      // the response would have trouble handling multiple cell selection, so for now, we bind the base type
      // then select the subtype
      pispipLeafs := selectset( selection,
                                Elements.astype( ProductInStockingPointInPeriodPlanningLeaf ),
                                pispip,
                                true );
      ProductInStockingPointInPeriod::LockUnlockPlanning( pispipLeafs, true, true );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_MenuUnlock_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
Quintiq file version 2.0
#parent: MatrixEditorProductPlanning_679
Response OnClick (
  structured[ProductInStockingPointInPeriod] selection
) id:Response_MatrixEditorProductPlanning_679_MenuUnlock_OnClick
{
  #keys: '[412960.0.220270407]'
  CanBindMultiple: false
  DefinitionID => /MatrixEditorProductPlanning_679/Responsedef_MatrixEditorProductPlanning_679_WebMenu_OnClick
  Initiator: 'MenuUnlock'
  Precondition:
  [*
    return ProductInStockingPointInPeriod::CanLockUnlock( selection, feedback );
  *]
  QuillAction
  {
    Body:
    [*
      // Unlock the total supply quantity of pispips
      // This is a workaround, we supposedly set the bindingtype of selection as the subtype, but
      // the response would have trouble handling multiple cell selection, so for now, we bind the base type
      // then select the subtype
      pispipLeafs := selectset( selection, Elements.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispip,
                                true );
      ProductInStockingPointInPeriod::LockUnlockPlanning( pispipLeafs, false, true );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_OnCheckEditability.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
Quintiq file version 2.0
#parent: MatrixEditorProductPlanning_679
Response OnCheckEditability (
  structured[ProductInStockingPointInPeriodPlanning] cell,
  Real value
) id:Response_MatrixEditorProductPlanning_679_OnCheckEditability
{
  #keys: '[412960.0.220270404]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMatrixEditor_OnCheckEditability'
  QuillAction
  {
    Body:
    [*
      //Precondition
      attributes := construct( Strings );
      attributes.Add(focusedattribute);
      isSupply_o := false;
      feedback :="";
      cond := MacroPlan.CanPlan( feedback )
              and ProductInStockingPointInPeriod::CanEnterSupplyQuantity( feedback,
                                                                          cell,
                                                                          attributes,
                                                                          isSupply_o );
      if( cond )
      {
        if( isSupply_o )
        {
          periods := selectset( cell, Elements.Period_MP, period, true );
          cond := ScenarioManager::CanStartSmartPlan( ScenarioManager,
                                                      DataHolderActiveScenario.Data(),
                                                      true,
                                                      periods,
                                                      feedback );
        }
      }
      editinfo.CanEdit( cond );
      editinfo.UserHint( feedback );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_MatrixEditorProductPlanning_679_OnUserSelectionChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
Quintiq file version 2.0
#parent: MatrixEditorProductPlanning_679
Response OnUserSelectionChanged (
  structured[ProductInStockingPointInPeriod] selection
) id:Response_MatrixEditorProductPlanning_679_OnUserSelectionChanged
{
  #keys: '[412960.0.220270402]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebMatrixEditor_OnUserSelectionChanged'
  QuillAction
  {
    Body:
    [*
      //Assign selection to data holder
      DataHolderSelectedPISPIPsInProductPlanningMatrix.Data( selection.Copy() );
    *]
    GroupServerCalls: false
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderClear_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/ButtonOrderLockHeaderClear
Response OnClick () id:Response_PanelOrderLockHeader_545_ButtonOrderLockHeaderClear_OnClick
{
  #keys: '[412960.0.223264347]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      EditFieldOrderLockHeader.Text( "" );
      DateSelectorOrderLockHeaderCustomerOrder.Date( Date::Construct(2023,1,1) );
      DateSelectorOrderLockHeaderPlanDeliver.Date( Date::Construct(2023,1,1) );
      RadioButtonGroupOrderLockHeader.BoundValue( "all" );
      DataExtractorOrderLock.FixedFilter( "true" );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_ButtonOrderLockHeader_OnClick.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/ButtonOrderLockHeader
Response OnClick () id:Response_PanelOrderLockHeader_545_ButtonOrderLockHeader_OnClick
{
  #keys: '[412960.0.221841965]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      thisfilter := "( object.OrderID().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.ProductID().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.UnitOfMeasureName().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.StockingPointID().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.CustomerName().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " )"
      + " or " + "object.SalesSegmentName().LikeUserLocale( " + EditFieldOrderLockHeader.Text().AsQUILL() + " ) )" ;
      existfilter := DataExtractorOrderLock.FixedFilter();
      if( existfilter = "true" ){
        existfilter := "";
        }
      existfilterlist := existfilter.Tokenize( " and " );
      newfilter := "";
      findcount := 0;
      traverse( existfilterlist, Elements, filter ){
        if( filter.FindString( "OrderID()", 0 ) >= 0 ){
          if( newfilter = "" ){
            newfilter := thisfilter;
            }else{
              newfilter := newfilter + " and " + thisfilter;
              }
          findcount := 1;
          }else{
            if( newfilter = "" ){
              newfilter := filter;
              }else{
                newfilter := newfilter + " and " + filter;
                }
            }
        }
      if( findcount = 0 ){
        if( newfilter = "" ){
          newfilter := thisfilter;
          }else{
            newfilter := newfilter + " and " + thisfilter;
            }
        }
      info( newfilter );
      DataExtractorOrderLock.FixedFilter( newfilter );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderCustomerOrder_O.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/DateSelectorOrderLockHeaderCustomerOrder
Response OnChanged () id:Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderCustomerOrder_OnChanged
{
  #keys: '[412960.0.221842202]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      existfilter := DataExtractorOrderLock.FixedFilter();
      if( existfilter = "true" ){
        existfilter := "";
        }
      existfilterlist := existfilter.Tokenize( " and " );
      newfilter := "";
      findcount := 0;
      traverse( existfilterlist, Elements, filter ){
        if( filter.FindString( "EndDate()", 0 ) >= 0 ){
          if( newfilter = "" ){
            newfilter := "( object.EndDate() = " + this.Date().AsQUILL() + " )";
            }else{
              newfilter := newfilter + " and " + "( object.EndDate() = " + this.Date().AsQUILL() + " )";
              }
          findcount := 1;
          }else{
            if( newfilter = "" ){
              newfilter := filter;
              }else{
                newfilter := newfilter + " and " + filter;
                }
            }
        }
      if( findcount = 0 ){
        if( newfilter = "" ){
          newfilter := "( object.EndDate() = " + this.Date().AsQUILL() + " )";
          }else{
            newfilter := newfilter + " and " + "( object.EndDate() = " + this.Date().AsQUILL() + " )";
            }
        }
      info( newfilter );
      DataExtractorOrderLock.FixedFilter( newfilter );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderPlanDeliver_OnC.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/DateSelectorOrderLockHeaderPlanDeliver
Response OnChanged () id:Response_PanelOrderLockHeader_545_DateSelectorOrderLockHeaderPlanDeliver_OnChanged
{
  #keys: '[412960.0.221842649]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebDateTimeFieldBase_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      existfilter := DataExtractorOrderLock.FixedFilter();
      if( existfilter = "true" ){
        existfilter := "";
        }
      existfilterlist := existfilter.Tokenize( " and " );
      newfilter := "";
      findcount := 0;
      traverse( existfilterlist, Elements, filter ){
        if( filter.FindString( "End()", 0 ) >= 0 and filter.FindString( "EndDate()", 0 ) < 0 ){
          if( newfilter = "" ){
            newfilter := "( object.First().AsPlanningBaseSalesDemandInPeriod().End().Date() = " + this.Date().AsQUILL() + " )";
            }else{
              newfilter := newfilter + " and " + "( object.First().AsPlanningBaseSalesDemandInPeriod().End().Date() = " + this.Date().AsQUILL() + " )";
              }
          findcount := 1;
          }else{
            if( newfilter = "" ){
              newfilter := filter;
              }else{
                newfilter := newfilter + " and " + filter;
                }
            }
        }
      if( findcount = 0 ){
        if( newfilter = "" ){
          newfilter := "( object.First().AsPlanningBaseSalesDemandInPeriod().End().Date() = " + this.Date().AsQUILL() + " )";
          }else{
            newfilter := newfilter + " and " + "( object.First().AsPlanningBaseSalesDemandInPeriod().End().Date() = " + this.Date().AsQUILL() + " )";
            }
        }
      info( newfilter );
      DataExtractorOrderLock.FixedFilter( newfilter );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
Quintiq file version 2.0
#parent: PanelOrderLockHeader_545/RadioButtonGroupOrderLockHeader
Response OnChanged () id:Response_PanelOrderLockHeader_545_RadioButtonGroupOrderLockHeader_OnChanged
{
  #keys: '[412960.0.221843171]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnChanged'
  GroupServerCalls: true
  QuillAction
  {
    Body:
    [*
      existfilter := DataExtractorOrderLock.FixedFilter();
      if( existfilter = "true" ){
        existfilter := "";
        }
      existfilterlist := existfilter.Tokenize( " and " );
      newfilter := "";
      findcount := 0;
      traverse( existfilterlist, Elements, filter ){
        if( filter.FindString( "IsFirmed()", 0 ) >= 0 ){
          if( this.BoundValue() = "locked" ){
            if( newfilter = "" ){
              newfilter := "( object.IsFirmed() = true )";
              }else{
                newfilter := newfilter + " and " + "( object.IsFirmed() = true )";
                }
            }else if( this.BoundValue() = "unlocked" ){
              if( newfilter = "" ){
                newfilter := "( object.IsFirmed() = false )";
                }else{
                  newfilter := newfilter + " and " + "( object.IsFirmed() = false )";
                  }
              }else if( this.BoundValue() = "all" ){
                newfilter := newfilter + "";
                }
          findcount := 1;
          }else{
            if( newfilter = "" ){
              newfilter := filter;
              }else{
                newfilter := newfilter + " and " + filter;
                }
            }
        }
      if( findcount = 0 ){
        if( this.BoundValue() = "locked" ){
          if( newfilter = "" ){
            newfilter := "( object.IsFirmed() = true )";
            }else{
              newfilter := newfilter + " and " + "( object.IsFirmed() = true )";
              }
          }else if( this.BoundValue() = "unlocked" ){
            if( newfilter = "" ){
              newfilter := "( object.IsFirmed() = false )";
              }else{
                newfilter := newfilter + " and " + "( object.IsFirmed() = false )";
                }
            }else if( this.BoundValue() = "all" ){
              newfilter := newfilter + "";
              }
        }
      DataExtractorOrderLock.FixedFilter( newfilter );
    *]
  }
}
_Main/UI/MacroPlannerWebApp/Component_FormOrderLock/_ROOT_Component_FormOrderLock.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
Quintiq file version 2.0
#root
#parent: MacroPlannerWebApp
OrphanComponent FormOrderLock
{
  #keys: '[412960.0.212511678]'
  BaseType: 'WebForm'
  Children:
  [
    #child: PanelOrderLock
    Component DataHolderOrderLock
    {
      #keys: '[412960.0.212571799]'
      BaseType: 'WebDataHolder'
      Databinding: 'structured[CustomerOrder]*'
      Children:
      [
        Component DataExtractorOrderLock
        {
          #keys: '[412960.0.212571816]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'MacroPlan'
            Description: '抽取订单数据'
            Source: 'MacroPlan'
            Taborder: 0
            Transformation: 'SalesDemand.astype(CustomerOrder)'
          ]
        }
      ]
      Properties:
      [
        Taborder: 1
      ]
    }
    Component DataHolderOrderLockGlobal
    {
      #keys: '[412960.0.212571897]'
      BaseType: 'WebDataHolder'
      Databinding: 'shadow[Scenario]*'
      Properties:
      [
        Description: '存储是否锁定的筛选条件'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    Description: '订单锁定解锁界面'
    Image: 'DATA_LOCK'
    Title: '订单锁定解锁界面'
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormVersionOfSOP/Component_PanelVersionOfSOPHeader.def
@@ -5,17 +5,6 @@
  BaseType: 'WebPanel'
  Children:
  [
    Component LabelVersionOfSOPHeader
    {
      #keys: '[412960.0.138000861]'
      BaseType: 'WebLabel'
      Properties:
      [
        Description: '版本号展示处'
        FixedSize: false
        Taborder: 0
      ]
    }
    Component ButtonVersionOfSOPHeaderFresh
    {
      #keys: '[412960.0.138000879]'
@@ -25,7 +14,7 @@
        ButtonSize: 'compact'
        Description: '用于刷新各事业部当前版本发布状态的按钮'
        Label: '刷新'
        Taborder: 2
        Taborder: 1
      ]
    }
    Component ButtonVersionOfSOPHeaderCopy
@@ -37,18 +26,7 @@
        ButtonSize: 'compact'
        Description: '用于复制选中的版本全量版本号的按钮'
        Label: '全量版本号复制'
        Taborder: 3
      ]
    }
    Component LabelVersionOfSOPHeaderVersionID
    {
      #keys: '[412960.0.140790247]'
      BaseType: 'WebLabel'
      Properties:
      [
        Description: 'rootversionid'
        Taborder: 1
        Visible: false
        Taborder: 2
      ]
    }
    Component ButtonVersionOfSOPHeaderRelease
@@ -60,10 +38,21 @@
        ButtonSize: 'compact'
        Description: '发布一个新版本'
        Label: '测试用版本发布'
        Taborder: 4
        Taborder: 3
        Visible: false
      ]
    }
    Component LabelVersionOfSOPHeader
    {
      #keys: '[412960.0.138000861]'
      BaseType: 'WebLabel'
      Properties:
      [
        Description: '版本号展示处'
        FixedSize: false
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
_Main/UI/MacroPlannerWebApp/Views/OrderLock.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: 2
    image: 'DOCUMENT_LOCK'
    description: ''
  }
  formatversion: 2
  id: 'OrderLock'
  name: 'OrderLock'
  isglobal: false
  isroot: true
}