Monday, 17 June 2019

Creating Item requirements through x++

All projects - Plan - Item Requirements

public class INTC_CreateItemRequirements
{
    public void create(RecId   _recid)
    {
        INTC_MaterialTakeOffTable       materialTakeOffTable, materialTakeOffTableUpdate;
        ProjTable                       projTable;
        SalesLine                       salesLine;
        Str1260                         msg;

        select materialTakeOffTable where materialTakeOffTable.RecId    ==  _recid;
        select projTable where projTable.ProjId ==  materialTakeOffTable.ProjId;
       
        ttsbegin;
        salesLine = this.initializeSalesLine(_recid, projTable);
        salesLine.createLine();

        select forupdate materialTakeOffTableUpdate where materialTakeOffTableUpdate.RecId  == _recid;
        materialTakeOffTableUpdate.ItemRequirement  =   NoYes::Yes;
        materialTakeOffTableUpdate.update();
        ttscommit;
    }

    public SalesLine initializeSalesLine(RecId  _recid, ProjTable _projTable)
    {
        SalesLine                       salesline;
        INTC_MaterialTakeOffTable       materialTakeOffTable;
        ProjTable                       projTable;
        InventDim                       inventDim, inventDimLocal;
        LegalEntity                     legalEntity;

        select materialTakeOffTable where materialTakeOffTable.RecId    ==  _recid;
        select projTable where projTable.ProjId ==  materialTakeOffTable.ProjId;

        inventDim   =   this.getInventDimension(materialTakeOffTable.ItemId);

        if(materialTakeOffTable)
        {
            salesLine.initValue();
            salesLine.setInventDimId("");
            salesLine.ItemId        =   materialTakeOffTable.ItemId;
            salesLine.itemIdChanged();

            if(materialTakeOffTable.AvailableQty > materialTakeOffTable.QtyRequired)
            {
                salesLine.SalesQty      =   materialTakeOffTable.QtyRequired;
                salesLine.QtyOrdered    =   materialTakeOffTable.QtyRequired;
            }
            else if(materialTakeOffTable.QtyRequired > materialTakeOffTable.AvailableQty)
            {
                salesLine.SalesQty      =   materialTakeOffTable.AvailableQty;
                salesLine.QtyOrdered    =   materialTakeOffTable.AvailableQty;
            }
            salesLine.ProjId            =   materialTakeOffTable.ProjId;
            salesLine.CurrencyCode      =   ledger::accountingCurrency(CompanyInfo::Find().RecId);
            salesLine.SalesUnit         =   materialTakeOffTable.Uom;
            salesLine.ProjCategoryId    =   materialTakeOffTable.projCategoryId;

            inventdim.InventSiteId      =   materialTakeOffTable.InventSiteId;
            inventdim.InventLocationId  =   materialTakeOffTable.InventLocationId;
            salesLine.InventDimId       =   InventdIm::findOrCreate(inventDim).inventDimId;
            inventDim.initFromInventTable(InventTable::find(salesLine.ItemId));
            salesLine.initFromProjTable(projTable, false);
            salesLine.TaxGroup          =   projTable.TaxGroupId;
            salesLine.CostPrice         =   materialTakeOffTable.UnitCost;
            salesLine.SalesPrice        =   materialTakeOffTable.UnitCost;
            SalesLineType_ItemReq::setSalesLineReceiptDate(salesLine);
        }
        return  salesLine;
    }

    public InventDim getInventDimension(ItemId   _itemId)
    {
        InventTable                 inventTable = inventTable::find(_itemId);
        InventItemOrderSetupType    setupType   = InventItemOrderSetupType::Invent;
        InventDim                   inventDim;

        inventDim.InventSiteId      = inventTable.inventItemOrderSetupMap(setupType).inventSiteId(inventDim.InventSiteId, inventTable);
        inventDim.InventLocationId  = inventTable.inventItemOrderSetupMap(  setupType,
                                                                            InventDim::findOrCreate(inventDim).InventDimId).inventLocationId(inventDim.InventLocationId,
                                                                            inventTable,
                                                                            inventDim.InventSiteId);
        inventDim.ConfigId  = inventTable.StandardConfigId;
        inventDim           = InventDim::findOrCreate(inventDim);
        return  inventDim;
    }

}

No comments:

Post a Comment