lazhen
2024-11-14 c74a399f02c4c4a9b3ef5c2d67fc48feb1a2406f
计划库存去掉紧缺件数据
已修改1个文件
44 ■■■■ 文件已修改
_Main/BL/Type_InventoryPlanArchiveVersion/StaticMethod_GenerateData.qbl 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
_Main/BL/Type_InventoryPlanArchiveVersion/StaticMethod_GenerateData.qbl
@@ -8,8 +8,10 @@
  Description: '生成计划库存存档数据'
  TextBody:
  [*
    //interfaceDataset.InventoryPlanArchiveVersion( relflush );
    interfaceDataset.InventoryPlanArchiveVersion( relflush );
    info( '-------------------------Start---------------------');
    machineproductparent   := MachiningPipelineReport::GetDefaultProductParent();
    engineproductparent    := EnginePipelineReport::GetDefaultProductParent();
    allunit                := AssemblyOnlinePlanVersion::GetDefaultAllUnit();
    name                   := InventoryPlanArchiveVersion::GetDefaultName();
    search                 := interfaceDataset.InventoryPlanArchiveVersionSearch( relnew, Product := allunit, TimeUnit := Translations::MP_GlobalParameters_Day(), Unit := allunit, StartDate := Date::MinDate(), EndDate := Date::MaxDate() );
@@ -46,26 +48,28 @@
        inventoryindex      := inventoryindex + 1;
      }
    }
    traverse ( macroPlan, Product_MP.ProductInStockingPoint_MP, pispmp, not pispmp.IsSystem() and pispmp.IsLeaf() ) {
      unit                 := ifexpr( pispmp.StockingPointID().Regex( "大连" ) or pispmp.StockingPointID().Regex( "DL" ), FinancialProductionReport::GetDefaultDLUnit(), FinancialProductionReport::GetDefaultCCUnit() );
      inventoryrow         := table.GetRowByUnit( pispmp.Product_MP(), unit );
      traverse ( pispmp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl, not pispippl.IsPeriodFrozen() ) {
        startdate          := pispippl.Start().Date();
        daycolumn          := table.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), startdate );
        weekcolumn         := table.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), startdate );
        monthcolumn        := table.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), startdate );
        actinventoryKey    := pispmp.ProductID() + startdate.AsQUILL();
        actinventoryhandle := actinventorytree.GetHandle( actinventoryKey );
        actinventoryindex  := guard( actinventorytree.Root().Child( actinventoryhandle ),null( NamedValue ));
        actinventoryqty    := 0.0;
        if( not isnull( actinventoryindex )){
          actinventoryqty  := inventoryqrys.Element( actinventoryindex.GetValueAsNumber() );
    traverse( macroPlan, Product_MP, product, exists( product.GetAllParent(), Elements, e, e.ID() = machineproductparent or e.ID() = engineproductparent ) ){
      traverse ( product, ProductInStockingPoint_MP, pispmp, not pispmp.IsSystem() and pispmp.IsLeaf() ) {
        unit                 := ifexpr( pispmp.StockingPointID().Regex( "大连" ) or pispmp.StockingPointID().Regex( "DL" ), FinancialProductionReport::GetDefaultDLUnit(), FinancialProductionReport::GetDefaultCCUnit() );
        inventoryrow         := table.GetRowByUnit( pispmp.Product_MP(), unit );
        traverse ( pispmp, ProductInStockingPointInPeriodPlanning.astype( ProductInStockingPointInPeriodPlanningLeaf ), pispippl, not pispippl.IsPeriodFrozen() ) {
          startdate          := pispippl.Start().Date();
          daycolumn          := table.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Day(), startdate );
          weekcolumn         := table.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Week(), startdate );
          monthcolumn        := table.GetColumnByTimeUnit( Translations::MP_GlobalParameters_Month(), startdate );
          actinventoryKey    := pispmp.ProductID() + startdate.AsQUILL();
          actinventoryhandle := actinventorytree.GetHandle( actinventoryKey );
          actinventoryindex  := guard( actinventorytree.Root().Child( actinventoryhandle ),null( NamedValue ));
          actinventoryqty    := 0.0;
          if( not isnull( actinventoryindex )){
            actinventoryqty  := inventoryqrys.Element( actinventoryindex.GetValueAsNumber() );
          }
          inventoryrow.SetQuantity( daycolumn, pispippl.InventoryLevelEnd(), actinventoryqty );
          inventoryrow.SetQuantity( weekcolumn, pispippl.InventoryLevelEnd(), actinventoryqty );
          inventoryrow.SetQuantity( monthcolumn, pispippl.InventoryLevelEnd(), actinventoryqty );
        }
        inventoryrow.SetQuantity( daycolumn, pispippl.InventoryLevelEnd(), actinventoryqty );
        inventoryrow.SetQuantity( weekcolumn, pispippl.InventoryLevelEnd(), actinventoryqty );
        inventoryrow.SetQuantity( monthcolumn, pispippl.InventoryLevelEnd(), actinventoryqty );
      }
    }