Create and post inventory movement journal

 


InventNonConformanceTable inventNonConformanceTable;    
public void createInventJournalTable()
    {
 	
        InventJournalNameId inventJournalNameId;

        if (!inventJournalTable)
        {
            inventJournalTable.clear();
            inventJournalTable.initValue();

            inventJournalNameId = InventJournalName::standardJournalName(InventJournalType::Movement);
            inventJournalTable.initFromInventJournalName(InventJournalName::find(inventJournalNameId));
        
            if (inventJournalTable.validateField(fieldNum(InventJournalTable, JournalNameId)))
            {
                inventJournalTable.modifiedField(fieldNum(InventJournalTable, JournalNameId));
                inventJournalTable.JournalType = InventJournalType::Movement;
                inventJournalTable.insert();
            }
        }
    }

    public void createInventJournalTrans(ItemId _itemId, InventDimId _inventDimId,  Qty _avaWeight, boolean isNonconformance = false) 
    {
        InventJournalTrans            inventJournalTrans;
        ProdParameters                prodParamters = ProdParameters::find();
        ProdParametersDim             prodParametersDim;
        LedgerDimensionDefaultAccount scrapAccount;
        InventDim                     inventDim;
        InventDim                     inventDimLoc = InventDim::find(_inventDimId);
      //  ProdJournalTable              prodJournalTable = ProdJournalTable::(_prodJournalProd.JournalId);

        select firstonly prodParametersDim
           // where prodParametersDim.ProdJournalNameId == journalId
            exists  join inventDim
             where inventDim.inventDimId == prodParametersDim.InventDimId
               &&  inventDim.inventDimId != InventDim::inventDimIdBlank();

        
        if (prodParamters.ProdParamInventDimLookup    == ProdParamInventDimLookup::Site     &&
            inventDimLoc.InventSiteId == prodParametersDim.inventSite().SiteId &&
            prodParametersDim.CostingScrapMethod      == ProdScrapMethod::ScrapAccount         &&
            prodParametersDim.LedgerDimension)
        {
            scrapAccount = prodParametersDim.LedgerDimension;
        }
        else
        {
            prodParametersDim = ProdParametersDim::findDefault();

            if (prodParametersDim.CostingScrapMethod      == ProdScrapMethod::ScrapAccount     &&
                prodParametersDim.LedgerDimension)
            {
                scrapAccount = prodParametersDim.LedgerDimension;
            }
        }
        
        lineNum++;
        inventJournalTrans.clear();
        inventJournalTrans.initValue();
        inventJournalTrans.initFromInventJournalTable(inventJournalTable);
        inventJournalTrans.TransDate = today();
       
        if (isNonconformance)
        {
            inventJournalTrans.Qty     = -inventNonConformanceTable.AVAScrapQty; 
        }
        else
        {
            inventJournalTrans.Qty = _avaWeight * inventNonConformanceTable.AVAScrapQty;
        }

        inventJournalTrans.ItemId  = _itemId;
        inventJournalTrans.LineNum = lineNum;
        inventJournalTrans.modifiedField(fieldNum(InventJournalTrans, ItemId));
        
        inventJournalTrans.InventDimId = inventDimLoc.InventDimId;
        inventJournalTrans.modifiedField(fieldNum(InventJournalTrans, inventDimId));
        
        inventJournalTrans.modifiedField(fieldNum(inventJournalTrans, Qty));
        inventJournalTrans.LedgerDimension = (scrapAccount != 0) ? scrapAccount:0;

        inventJournalTrans.JournalType = InventJournalType::Movement;
        inventJournalTrans.AVAOrderId  = inventNonConformanceTable.InventRefId;
        inventJournalTrans.AVAInventNonConformanceID = inventNonConformanceTable.InventNonConformanceID;
        inventJournalTrans.insert();
    }

    public void postInventJournal()
    {
        JournalCheckPost               journalCheckPost;

        if (inventJournalTable)
        {
            journalCheckPost = InventJournalCheckPost::newPostJournal(inventJournalTable);
            journalCheckPost.run();
        }
    }

Comments