lazhen
2024-10-23 cc75dba048cbaeb44066ed21021d901f9a4f6477
Merge branch 'dev' of http://47.101.211.7:10101/r/VWED into dev-zlg
已重命名3个文件
已添加38个文件
已修改6个文件
653 ■■■■ 文件已修改
_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanColumn_ArchivePackagin.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanRow_ArchivePackagingPl.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ArchivePackagingPlanColumn_Archive_Archive_ArchivePackagingPlanColu.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ArchivePackagingPlanRow_Archive_Archive_ArchivePackagingPlanRow.qbl 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_PackagingInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_UnpackagedInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_EndingInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_InitialPackagingInventory.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NetDemand.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NewSupply.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Out.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Package.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_PackagingInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_TransferIn.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_UnpackagedInventory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Unpacking.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/StaticMethod_Archive.qbl 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanCell/_ROOT_Type_ArchivePackagingPlanCell.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanColumn/Attribute_StartDate.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanColumn/_ROOT_Type_ArchivePackagingPlanColumn.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Category.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Factory.qbl 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_FactoryAbbreviation.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Name.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_ProductID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_StockingPointID.qbl 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Category.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Factory.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_FactoryAbbreviation.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Name.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_ProductID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_StockingPointID.qbl 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcFactoryAbbreviation.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcName.qbl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/Method_FilterProduct.qbl 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_ArchivePackagingPlanRow/_ROOT_Type_ArchivePackagingPlanRow.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport#1.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_WholeShift/Method_MobileCycleTask.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon510.def 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon763.def 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon510_rbgTimeUnit_OnUserChanged.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bComparison_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bExport_OnClick.def 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanColumn_ArchivePackagin.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ArchivePackagingPlanCell_ArchivePackagingPlanColumn_ArchivePackagingPlanColumn_ArchivePackagingPlanCell
{
  #keys: '1[414996.1.150965285]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide ArchivePackagingPlanColumn
  {
    #keys: '3[414996.1.150965287][414996.1.150965286][414996.1.150965288]'
    Cardinality: '0to1'
    ObjectDefinition: ArchivePackagingPlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ArchivePackagingPlanCell
  {
    #keys: '3[414996.1.150965290][414996.1.150965289][414996.1.150965291]'
    Cardinality: '1toN'
    ObjectDefinition: ArchivePackagingPlanColumn
    OwningSide: 'Reference'
  }
}
_Main/BL/Relations/Relation_ArchivePackagingPlanCell_ArchivePackagingPlanRow_ArchivePackagingPl.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ArchivePackagingPlanCell_ArchivePackagingPlanRow_ArchivePackagingPlanRow_ArchivePackagingPlanCell
{
  #keys: '1[414996.1.150965272]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide ArchivePackagingPlanRow
  {
    #keys: '3[414996.1.150965274][414996.1.150965273][414996.1.150965275]'
    Cardinality: '0to1'
    ObjectDefinition: ArchivePackagingPlanCell
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ArchivePackagingPlanCell
  {
    #keys: '3[414996.1.150965277][414996.1.150965276][414996.1.150965278]'
    Cardinality: '1toN'
    ObjectDefinition: ArchivePackagingPlanRow
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ArchivePackagingPlanColumn_Archive_Archive_ArchivePackagingPlanColu.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ArchivePackagingPlanColumn_Archive_Archive_ArchivePackagingPlanColumn
{
  #keys: '1[414996.1.150965298]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Archive
  {
    #keys: '3[414996.1.150965300][414996.1.150965299][414996.1.150965301]'
    Cardinality: '0to1'
    ObjectDefinition: ArchivePackagingPlanColumn
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ArchivePackagingPlanColumn
  {
    #keys: '3[414996.1.150965303][414996.1.150965302][414996.1.150965304]'
    Cardinality: '1toN'
    ObjectDefinition: Archive
    OwningSide: 'Owned'
  }
}
_Main/BL/Relations/Relation_ArchivePackagingPlanRow_Archive_Archive_ArchivePackagingPlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
Quintiq file version 2.0
#parent: #root
Relation ArchivePackagingPlanRow_Archive_Archive_ArchivePackagingPlanRow
{
  #keys: '1[414996.1.150965311]'
  DefaultRelationStrategy
  {
  }
  RelationSide.LeftSide Archive
  {
    #keys: '3[414996.1.150965313][414996.1.150965312][414996.1.150965314]'
    Cardinality: '0to1'
    ObjectDefinition: ArchivePackagingPlanRow
    OwningSide: 'Reference'
  }
  RelationSide.RightSide ArchivePackagingPlanRow
  {
    #keys: '3[414996.1.150965316][414996.1.150965315][414996.1.150965317]'
    Cardinality: '1toN'
    ObjectDefinition: Archive
    OwningSide: 'Owned'
  }
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_PackagingInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CC_PackagingInventory
{
  #keys: '3[414996.1.150965195][414996.1.150965194][414996.1.150965196]'
  Description: '长春工厂包装库存'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_CC_UnpackagedInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute CC_UnpackagedInventory
{
  #keys: '3[414996.1.150965198][414996.1.150965197][414996.1.150965199]'
  Description: '长春工厂非包装库存'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_EndingInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute EndingInventory
{
  #keys: '3[414996.1.150965201][414996.1.150965200][414996.1.150965202]'
  Description: '期末库存'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_InitialPackagingInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute InitialPackagingInventory
{
  #keys: '3[414996.1.150965204][414996.1.150965203][414996.1.150965205]'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NetDemand.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute NetDemand
{
  #keys: '3[414996.1.150965207][414996.1.150965206][414996.1.150965208]'
  Description: '净需求'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_NewSupply.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute NewSupply
{
  #keys: '3[414996.1.150965210][414996.1.150965209][414996.1.150965211]'
  Description: '供应'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Out.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Out
{
  #keys: '3[414996.1.150965213][414996.1.150965212][414996.1.150965214]'
  Description: '调出'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Package.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Package
{
  #keys: '3[414996.1.150965216][414996.1.150965215][414996.1.150965217]'
  Description: '包装'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_PackagingInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute PackagingInventory
{
  #keys: '3[414996.1.150965219][414996.1.150965218][414996.1.150965220]'
  Description: '包装库存'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_TransferIn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute TransferIn
{
  #keys: '3[414996.1.150965225][414996.1.150965224][414996.1.150965226]'
  Description: '调进'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_UnpackagedInventory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute UnpackagedInventory
{
  #keys: '3[414996.1.150965228][414996.1.150965227][414996.1.150965229]'
  Description: '非包装库存'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/Attribute_Unpacking.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Unpacking
{
  #keys: '3[414996.1.150965231][414996.1.150965230][414996.1.150965232]'
  Description: '拆包'
  ValueType: Real
}
_Main/BL/Type_ArchivePackagingPlanCell/StaticMethod_Archive.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,113 @@
Quintiq file version 2.0
#parent: #root
StaticMethod Archive (
  const MacroPlan macroPlan,
  Archive archive
)
{
  TextBody:
  [*
    // Akari Oct-23-2024 (created)
    //packagingPlanCells := selectset( macroPlan,PackagingPlanRow.PackagingPlanCell,cell,true );
    //packagingPlanCellIndexTree := NamedValueTree::Create();
    //for( i := 0; i < packagingPlanCells.Size(); i++ ){
    //  packagingPlanCell := packagingPlanCells.Element( i );
    //  packagingPlanRow := packagingPlanCell.PackagingPlanRow();
    //  packagingPlanColumn := packagingPlanCell.PackagingPlanColumn();
    //
    //  packagingPlanRowKey := packagingPlanRow.Category() + packagingPlanRow.Factory() + packagingPlanRow.ProductID() + packagingPlanRow.StockingPointID();
    //  packagingPlanColumnKey := packagingPlanColumn.StartDate().AsQUILL();
    //  packagingPlanCellKey := packagingPlanRowKey + packagingPlanColumnKey;
    //  packagingPlanCellHandle := packagingPlanCellIndexTree.GetHandle( packagingPlanCellKey );
    //
    //  packagingPlanCellIndexTree.Root().AddChild( packagingPlanCellHandle,i );
    //}
    archivePackagingPlanCells := selectset( archive,ArchivePackagingPlanRow.ArchivePackagingPlanCell,cell,true );
    archivePackagingPlanCellIndexTree := NamedValueTree::Create();
    for( i := 0; i < archivePackagingPlanCells.Size(); i++ ){
      archivePackagingPlanCell := archivePackagingPlanCells.Element( i );
      archivePackagingPlanRow := archivePackagingPlanCell.ArchivePackagingPlanRow();
      archivePackagingPlanColumn := archivePackagingPlanCell.ArchivePackagingPlanColumn();
      archivePackagingPlanRowKey := archivePackagingPlanRow.Category() + archivePackagingPlanRow.Factory() + archivePackagingPlanRow.ProductID() + archivePackagingPlanRow.StockingPointID();
      archivePackagingPlanColumnKey := archivePackagingPlanColumn.StartDate().AsQUILL();
      archivePackagingPlanCellKey := archivePackagingPlanRowKey + archivePackagingPlanColumnKey;
      archivePackagingPlanCellHandle := archivePackagingPlanCellIndexTree.GetHandle( archivePackagingPlanCellKey );
      archivePackagingPlanCellIndexTree.Root().AddChild( archivePackagingPlanCellHandle,i );
    }
    archivePackagingPlanRows := selectset( archive,ArchivePackagingPlanRow,row,true );
    archivePackagingPlanRowIndexTree := NamedValueTree::Create();
    for( i := 0; i < archivePackagingPlanRows.Size(); i++ ){
      archivePackagingPlanRow := archivePackagingPlanRows.Element( i );
      archivePackagingPlanRowKey := archivePackagingPlanRow.Category() + archivePackagingPlanRow.Factory() + archivePackagingPlanRow.ProductID() + archivePackagingPlanRow.StockingPointID();
      archivePackagingPlanRowHandle := archivePackagingPlanRowIndexTree.GetHandle( archivePackagingPlanRowKey );
      archivePackagingPlanRowIndexTree.Root().AddChild( archivePackagingPlanRowHandle,i );
    }
    archivePackagingPlanColumns := selectset( archive,ArchivePackagingPlanColumn,row,true );
    archivePackagingPlanColumnIndexTree := NamedValueTree::Create();
    for( i := 0; i < archivePackagingPlanColumns.Size(); i++ ){
      archivePackagingPlanColumn := archivePackagingPlanColumns.Element( i );
      archivePackagingPlanColumnKey := archivePackagingPlanColumn.StartDate().AsQUILL();
      archivePackagingPlanColumnHandle := archivePackagingPlanColumnIndexTree.GetHandle( archivePackagingPlanColumnKey );
      archivePackagingPlanColumnIndexTree.Root().AddChild( archivePackagingPlanColumnHandle,i );
    }
    traverse( macroPlan,PackagingPlanRow.PackagingPlanCell,packagingPlanCell ){
      packagingPlanRow := packagingPlanCell.PackagingPlanRow();
      packagingPlanColumn := packagingPlanCell.PackagingPlanColumn();
      packagingPlanRowKey := packagingPlanRow.Category() + packagingPlanRow.Factory() + packagingPlanRow.ProductID() + packagingPlanRow.StockingPointID();
      packagingPlanColumnKey := packagingPlanColumn.StartDate().AsQUILL();
      packagingPlanCellKey := packagingPlanRowKey + packagingPlanColumnKey;
      archivePackagingPlanCell := null( ArchivePackagingPlanCell );
      archivePackagingPlanCellHandle := archivePackagingPlanCellIndexTree.GetHandle( packagingPlanCellKey );
      archivePackagingPlanCellIndex := guard( archivePackagingPlanCellIndexTree.Root().Child( archivePackagingPlanCellHandle ),null( NamedValue ) );
      if( isnull( archivePackagingPlanCellIndex )){
        archivePackagingPlanRow := null( ArchivePackagingPlanRow );
        archivePackagingPlanRowHandle := archivePackagingPlanRowIndexTree.GetHandle( packagingPlanRowKey );
        archivePackagingPlanRowIndex := guard( archivePackagingPlanRowIndexTree.Root().Child( archivePackagingPlanRowHandle ),null( NamedValue ));
        if( isnull( archivePackagingPlanRowIndex )){
          archivePackagingPlanRow := archive.ArchivePackagingPlanRow( relnew,Category := packagingPlanRow.Category(),Factory := packagingPlanRow.Factory(),ProductID := packagingPlanRow.ProductID(),StockingPointID := packagingPlanRow.StockingPointID() );
          archivePackagingPlanRows.Add( archivePackagingPlanRow );
          archivePackagingPlanRowIndexTree.Root().AddChild( archivePackagingPlanRowHandle,archivePackagingPlanRows.Size() - 1 );
        }else{
          archivePackagingPlanRow := archivePackagingPlanRows.Element( archivePackagingPlanRowIndex.GetValueAsNumber() );
        }
        archivePackagingPlanColumn := null( ArchivePackagingPlanColumn );
        archivePackagingPlanColumnHandle := archivePackagingPlanColumnIndexTree.GetHandle( packagingPlanColumnKey );
        archivePackagingPlanColumnIndex := guard( archivePackagingPlanColumnIndexTree.Root().Child( archivePackagingPlanColumnHandle ),null( NamedValue ));
        if( isnull( archivePackagingPlanColumnIndex )){
          archivePackagingPlanColumn := archive.ArchivePackagingPlanColumn( relnew,StartDate := packagingPlanColumn.StartDate() );
          archivePackagingPlanColumns.Add( archivePackagingPlanColumn );
          archivePackagingPlanColumnIndexTree.Root().AddChild( archivePackagingPlanColumnHandle,archivePackagingPlanColumns.Size() - 1 );
        }else{
          archivePackagingPlanColumn := archivePackagingPlanColumns.Element( archivePackagingPlanColumnIndex.GetValueAsNumber() );
        }
        archivePackagingPlanCell := archivePackagingPlanRow.ArchivePackagingPlanCell( relnew,ArchivePackagingPlanColumn := archivePackagingPlanColumn );
        archivePackagingPlanCells.Add( archivePackagingPlanCell );
        archivePackagingPlanCellIndexTree.Root().AddChild( archivePackagingPlanCellHandle,archivePackagingPlanCells.Size() - 1 );
      }else{
        archivePackagingPlanCell := archivePackagingPlanCells.Element( archivePackagingPlanCellIndex.GetValueAsNumber());
      }
      archivePackagingPlanCell.CC_PackagingInventory( packagingPlanCell.CC_PackagingInventory() );
      archivePackagingPlanCell.CC_UnpackagedInventory( packagingPlanCell.CC_UnpackagedInventory() );
      archivePackagingPlanCell.EndingInventory( packagingPlanCell.EndingInventory() );
      archivePackagingPlanCell.InitialPackagingInventory( packagingPlanCell.InitialPackagingInventory() );
      archivePackagingPlanCell.NetDemand( packagingPlanCell.NetDemand() );
      archivePackagingPlanCell.NewSupply( packagingPlanCell.NewSupply() );
      archivePackagingPlanCell.Out( packagingPlanCell.Out() );
      archivePackagingPlanCell.Package( packagingPlanCell.Package() );
      archivePackagingPlanCell.PackagingInventory( packagingPlanCell.PackagingInventory() );
      archivePackagingPlanCell.TransferIn( packagingPlanCell.TransferIn() );
      archivePackagingPlanCell.UnpackagedInventory( packagingPlanCell.UnpackagedInventory() );
      archivePackagingPlanCell.Unpacking( packagingPlanCell.Unpacking() );
    }
  *]
}
_Main/BL/Type_ArchivePackagingPlanCell/_ROOT_Type_ArchivePackagingPlanCell.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ArchivePackagingPlanCell
{
  #keys: '5[414996.1.150965192][414996.1.150965190][0.0.0][414996.1.150965191][414996.1.150965193]'
  BaseType: Object
  StructuredName: 'ArchivePackagingPlanCells'
}
_Main/BL/Type_ArchivePackagingPlanColumn/Attribute_StartDate.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StartDate
{
  #keys: '3[414996.1.150965242][414996.1.150965241][414996.1.150965243]'
  ValueType: Date
}
_Main/BL/Type_ArchivePackagingPlanColumn/_ROOT_Type_ArchivePackagingPlanColumn.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ArchivePackagingPlanColumn
{
  #keys: '5[414996.1.150965239][414996.1.150965237][0.0.0][414996.1.150965238][414996.1.150965240]'
  BaseType: Object
  StructuredName: 'ArchivePackagingPlanColumns'
}
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Category.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Category
{
  #keys: '3[414996.1.150965250][414996.1.150965249][414996.1.150965251]'
  Description: '大类'
  ValueType: String
}
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Factory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
Quintiq file version 2.0
#parent: #root
Attribute Factory
{
  #keys: '3[414996.1.150965253][414996.1.150965252][414996.1.150965254]'
  Description: '工厂'
  ValueType: String
}
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_FactoryAbbreviation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute FactoryAbbreviation
{
  #keys: '3[414996.1.150965256][414996.1.150965255][414996.1.150965257]'
  ValueType: String
}
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute Name
{
  #keys: '3[414996.1.150965259][414996.1.150965258][414996.1.150965260]'
  ValueType: String
}
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute ProductID
{
  #keys: '3[414996.1.150965262][414996.1.150965261][414996.1.150965263]'
  ValueType: String
}
_Main/BL/Type_ArchivePackagingPlanRow/Attribute_StockingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
Quintiq file version 2.0
#parent: #root
Attribute StockingPointID
{
  #keys: '3[414996.1.150965265][414996.1.150965264][414996.1.150965266]'
  ValueType: String
}
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Category.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Category
}
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Factory.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Factory
}
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_FactoryAbbreviation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: FactoryAbbreviation
}
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_Name.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: Name
}
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_ProductID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: ProductID
}
_Main/BL/Type_ArchivePackagingPlanRow/DefaultValue_StockingPointID.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
Quintiq file version 2.0
#parent: #root
DefaultValue
{
  TargetAttribute: StockingPointID
}
_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcFactoryAbbreviation.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcFactoryAbbreviation
{
  TextBody:
  [*
    // lihongji Jul-26-2024 (created)
    value := ifexpr( this.Factory() = "大连工厂", "DL", "CC" );
    this.FactoryAbbreviation( value );
  *]
}
_Main/BL/Type_ArchivePackagingPlanRow/Function_CalcName.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
Quintiq file version 2.0
#parent: #root
Function CalcName
{
  TextBody:
  [*
    // lihongji Jul-24-2024 (created)
    value := guard( this.ProductID(), "" );
    this.Name( value );
  *]
}
_Main/BL/Type_ArchivePackagingPlanRow/Method_FilterProduct.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
Quintiq file version 2.0
#parent: #root
Method FilterProduct (
  Product_MPs products,
  String factory
) declarative remote as Boolean
{
  TextBody:
  [*
    flag := exists( products, Elements, tempP, tempP.ID() = this.ProductID() ) and this.Factory() = factory;
    return flag;
  *]
}
_Main/BL/Type_ArchivePackagingPlanRow/_ROOT_Type_ArchivePackagingPlanRow.qbl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
Quintiq file version 2.0
#root
#parent: #DomainModel
Type ArchivePackagingPlanRow
{
  #keys: '5[414996.1.150965247][414996.1.150965245][0.0.0][414996.1.150965246][414996.1.150965248]'
  BaseType: Object
  StructuredName: 'ArchivePackagingPlanRows'
}
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateComprehensiveHoursReport#1.qbl
@@ -94,11 +94,11 @@
              holidayOvertimeHourCell.RealValue( holidayOvertimeHourCell.RealValue() + nextDayOvertime );
            }else if( shiftPlan.DefaultRemark().LikeUserLocale( "周六" ) or shiftPlan.DefaultRemark().LikeUserLocale( "周日" ) ){
              // ä¸‹ä¸€å¤©æ˜¯å‘¨å…­æˆ–周日
              nextDayOvertime := shiftPlan.GetBreakDayOvertimeHour( true );
              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
              breakDayOvertimeHourCell.RealValue( breakDayOvertimeHourCell.RealValue() + nextDayOvertime );
            }else{
              // ä¸‹ä¸€å¤©æ˜¯å¹³å¸¸çš„工作日
              nextDayOvertime := shiftPlan.GetDefaultDayOvertimeHour( true );
              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
              defaultDayOvertimeHourCell.RealValue( defaultDayOvertimeHourCell.RealValue() + nextDayOvertime );
            }
          }
_Main/BL/Type_LocalCell_Default/StaticMethod_GenerateStandardHoursReport.qbl
@@ -97,11 +97,11 @@
              holidayOvertimeHourCell.RealValue( holidayOvertimeHourCell.RealValue() + nextDayOvertime );
            }else if( shiftPlan.DefaultRemark().LikeUserLocale( "周六" ) or shiftPlan.DefaultRemark().LikeUserLocale( "周日" ) ){
              // ä¸‹ä¸€å¤©æ˜¯å‘¨å…­æˆ–周日
              nextDayOvertime := shiftPlan.GetBreakDayOvertimeHour( true );
              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
              breakDayOvertimeHourCell.RealValue( breakDayOvertimeHourCell.RealValue() + nextDayOvertime );
            }else{
              // ä¸‹ä¸€å¤©æ˜¯å¹³å¸¸çš„工作日
              nextDayOvertime := shiftPlan.GetDefaultDayOvertimeHour( true );
              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
              defaultDayOvertimeHourCell.RealValue( defaultDayOvertimeHourCell.RealValue() + nextDayOvertime );
            }
          }
@@ -129,12 +129,13 @@
          overtime := shiftPlan.GetDefaultDayOvertimeHour( false );
          defaultDayOvertimeHourCell.RealValue( defaultDayOvertimeHourCell.RealValue() + overtime );
          if( not isnull( nextShiftPlan )){
            nextDayOvertime := shiftPlan.GetBreakDayOvertimeHour( true );
            if( nextShiftPlan.IsHoliday()){
              // ä¸‹ä¸€å¤©æ˜¯èŠ‚å‡æ—¥
              nextDayOvertime := shiftPlan.GetHolidayOvertimeHour( true );
              holidayOvertimeHourCell.RealValue( holidayOvertimeHourCell.RealValue() + nextDayOvertime );
            }else if( shiftPlan.DefaultRemark().LikeUserLocale( "周六" ) or shiftPlan.DefaultRemark().LikeUserLocale( "周日" ) ){
              // ä¸‹ä¸€å¤©æ˜¯å‘¨å…­æˆ–周日
              nextDayOvertime := shiftPlan.GetBreakDayOvertimeHour( true );
              breakDayOvertimeHourCell.RealValue( breakDayOvertimeHourCell.RealValue() + nextDayOvertime );
            }else{
              // ä¸‹ä¸€å¤©æ˜¯å¹³å¸¸çš„工作日
@@ -201,7 +202,7 @@
      
      // æ¬ å·¥è´¹
      qiangongCell := LocalCell_Default::GetCell(  rowKey + column7.CustomName(), cellIndexTree, cells, row, column7 );
      qiangongCell.RealValue( qiangongCell.RealValue() - 8 );
      qiangongCell.RealValue( qiangongCell.RealValue() );
      
      qiangongfeiCell := LocalCell_Default::GetCell(  rowKey + column11.CustomName(), cellIndexTree, cells, row, column11 );
      qiangongfeiCell.RealValue( EmployeeCost::GetSalary( unit,qiangongMultiplier,qiangongCell.RealValue() ));
_Main/BL/Type_LocalTool/StaticMethod_IsOverlap.qbl
@@ -10,6 +10,6 @@
  TextBody:
  [*
    // rislai Jun-14-2024 (created)
    return start1 <= end2 and start2 <= end1 ;
    return start1 <= start2 and end1 + 1 >= end2 ;
  *]
}
_Main/BL/Type_WholeShift/Method_MobileCycleTask.qbl
@@ -12,10 +12,14 @@
    
    // åˆ¤æ–­å¯ç”¨äº§èƒ½æ˜¯å¦ä¸€è‡´
    if ( fillUPTB.BaseAvailableCapacity().HoursAsReal() = targetUPTB.BaseAvailableCapacity().HoursAsReal() ) {
      // åˆ é™¤éœ€è¦å¡«å……çš„UPTB
      PeriodTaskOperation::Delete( selectset( fillUPTB, PeriodTaskOperation, tempPTO, true ) );
      traverse ( targetUPTB, PeriodTaskOperation, pto ) {
        PeriodTaskOperation::Create( pto.Operation(), fillUPTB, pto.Quantity(), false );
      }
      
      // åˆ é™¤ç›®æ ‡è¢«å–æ•°çš„UPTB
      PeriodTaskOperation::Delete( selectset( targetUPTB, PeriodTaskOperation, tempPTO, true ) );
    }
    
_Main/BL/Type_WholeShift/Method_PostProcessing2.qbl
@@ -15,8 +15,8 @@
      uptbs    := selectsortedset( unit, UnitPeriod.astype( UnitPeriodTimeBase ), tempUPTB, not tempUPTB.IsPeriodFrozen() and tempUPTB.IsPlanning(), tempUPTB.Start() );
          
      // åœ†æ•´æˆ–补零当前产线下所生产的产品
    //  this.IsRoundingOrZeroFilling3( macroPlan, uptbs ); // å€Ÿè¿˜é€»è¾‘
    //  Transaction::Transaction().Propagate();
      this.IsRoundingOrZeroFilling3( macroPlan, uptbs ); // å€Ÿè¿˜é€»è¾‘
      Transaction::Transaction().Propagate();
            
    //        // å¹³è¡¡å½“前产线下所生产的产品库存(库存 < æœ€å¤§åº“存)
    //        // this.A_balanceInventory( macroPlan, unitPeriodTimeBases );
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon504.def
@@ -5,44 +5,6 @@
  BaseType: 'WebPanel'
  Children:
  [
    Component ddlOfflinePlanTable
    {
      #keys: '[412672.1.64850982]'
      BaseType: 'WebDropDownList'
      Databinding: 'OfflinePlanTableInfo'
      Children:
      [
        Component DataExtractorRibbon
        {
          #keys: '[412672.1.64850983]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'RecycleBin'
            Source: 'RecycleBin'
            Taborder: 0
            Transformation: 'OfflinePlanTableInfo'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'TableName'
        Label: '下线计划:'
        NumberOfColumns: 50
        Taborder: 0
      ]
    }
    Component bComparison
    {
      #keys: '[412672.1.64851009]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '开始对比'
        Taborder: 1
      ]
    }
    Component LabelRibbon
    {
      #keys: '[412672.1.66018113]'
@@ -51,16 +13,6 @@
      [
        DataBinding: 'ddlOfflinePlanTable.Data.TableName'
        NumberOfColumns: 50
        Taborder: 6
      ]
    }
    Component bExport id:bExport_298
    {
      #keys: '[414996.1.108480376]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 4
      ]
    }
@@ -87,19 +39,7 @@
      ]
      Properties:
      [
        Taborder: 5
      ]
    }
    Component rbgTimeUnit
    {
      #keys: '[414996.1.147730565]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
        BoundValue: 'Day'
        ButtonLabels: 'Day;Week;Month'
        ButtonValues: 'Day;Week;Month'
        Taborder: 2
        Taborder: 3
      ]
    }
    Component dhTimeUnit
@@ -109,14 +49,15 @@
      Databinding: 'String*'
      Properties:
      [
        Taborder: 3
        Taborder: 2
      ]
    }
    #child: PanelRibbon510
    #child: PanelRibbon763
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon510.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
Quintiq file version 2.0
Component PanelRibbon510
{
  #keys: '[414996.1.148040419]'
  BaseType: 'WebPanel'
  Children:
  [
    Component rbgTimeUnit id:rbgTimeUnit_19
    {
      #keys: '[414996.1.148040622]'
      BaseType: 'WebRadioButtonGroup'
      Properties:
      [
        BoundValue: 'Day'
        ButtonLabels: 'Day;Week;Month'
        ButtonValues: 'Day;Week;Month'
        Orientation: 'horizontal'
        Taborder: 0
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 1
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Component_PanelRibbon763.def
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
Quintiq file version 2.0
Component PanelRibbon763
{
  #keys: '[414996.1.148040406]'
  BaseType: 'WebPanel'
  Children:
  [
    Component ddlOfflinePlanTable id:ddlOfflinePlanTable_217
    {
      #keys: '[414996.1.148040527]'
      BaseType: 'WebDropDownList'
      Databinding: 'OfflinePlanTableInfo'
      Children:
      [
        Component DataExtractorRibbon id:DataExtractorRibbon_568
        {
          #keys: '[414996.1.148040528]'
          BaseType: 'WebDataExtractor'
          Properties:
          [
            DataType: 'RecycleBin'
            Source: 'RecycleBin'
            Taborder: 0
            Transformation: 'OfflinePlanTableInfo'
          ]
        }
      ]
      Properties:
      [
        DisplayField: 'TableName'
        Label: '下线计划:'
        NumberOfColumns: 50
        Taborder: 0
      ]
    }
    Component bComparison id:bComparison_136
    {
      #keys: '[414996.1.148040554]'
      BaseType: 'WebButton'
      Properties:
      [
        Label: '开始对比'
        Taborder: 1
      ]
    }
    Component bExport
    {
      #keys: '[414996.1.148040586]'
      BaseType: 'WebButton'
      Properties:
      [
        Image: 'EXPORT1'
        Taborder: 2
      ]
    }
  ]
  Properties:
  [
    FixedSize: true
    Orientation: 'horizontal'
    Taborder: 0
  ]
}
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon510_rbgTimeUnit_OnUserChanged.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_rbgTimeUnit_OnUserChanged.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelRibbon504/rbgTimeUnit
Response OnUserChanged () id:Response_PanelRibbon504_801_rbgTimeUnit_OnUserChanged
#parent: PanelRibbon510/rbgTimeUnit_19
Response OnUserChanged () id:Response_PanelRibbon504_rbgTimeUnit_OnUserChanged
{
  #keys: '[414996.1.147730564]'
  #keys: '[414996.1.148040621]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebRadioButtonGroup_OnUserChanged'
  GroupServerCalls: true
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bComparison_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bComparison_OnClick#613.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelRibbon504/bComparison
Response OnClick () id:Response_PanelRibbon504_bComparison_OnClick_613
#parent: PanelRibbon763/bComparison_136
Response OnClick () id:Response_PanelRibbon504_bComparison_OnClick
{
  #keys: '[412672.1.64851008]'
  #keys: '[414996.1.148040553]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  QuillAction
_Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon763_bExport_OnClick.def
ÎļþÃû´Ó _Main/UI/MacroPlannerWebApp/Component_FormOfflinePlanComparison/Response_PanelRibbon504_bExport_OnClick#891.def ÐÞ¸Ä
@@ -1,8 +1,8 @@
Quintiq file version 2.0
#parent: PanelRibbon504/bExport_298
Response OnClick () id:Response_pOperaction_bExport_OnClick_891
#parent: PanelRibbon763/bExport
Response OnClick () id:Response_PanelRibbon504_bExport_OnClick
{
  #keys: '[414996.1.108480375]'
  #keys: '[414996.1.148040585]'
  CanBindMultiple: false
  DefinitionID: 'Responsedef_WebButton_OnClick'
  GroupServerCalls: true