DEV Community

Rohith_Veerapalli
Rohith_Veerapalli

Posted on

GRN Import using x++

internal final class AT_GRNImportService
{
    public void generateGRN(PurchId _purchId)
    {
        PurchFormLetter         purchFormLetter;
        PurchFormletterParmData purchFormLetterParmData;
        PurchParmUpdate         purchParmUpdate;
        PurchParmTable          purchParmTable;
        PurchParmLine           purchParmLine;
        PurchTable              purchTable = PurchTable::find(_purchId);
        PurchLine               purchLine;
        Num                     packingSlipId;
        VendPackingSlipJour     vendPackingSlipJour;

        //*********************************************************************************************************************************
        //post packing slip
        //*********************************************************************************************************************************
        packingSlipId           = NumberSeq::newGetNum(PurchParameters::ESNumRefNum()).num();;
        purchFormLetterParmData = PurchFormletterParmData::newData(DocumentStatus::PackingSlip, VersioningUpdateType::Initial);
        purchFormLetterParmData.parmOnlyCreateParmUpdate(true);
        purchFormLetterParmData.createData(false);
        purchParmUpdate = purchFormLetterParmData.parmParmUpdate();

        purchParmTable.clear();
        purchParmTable.TransDate             = SystemDateGet();
        purchParmTable.Ordering              = DocumentStatus::PackingSlip;
        purchParmTable.ParmJobStatus         = ParmJobStatus::Waiting;
        purchParmTable.Num                   = packingSlipId;
        purchParmTable.PurchId               = purchTable.PurchId;
        purchParmTable.PurchName             = purchTable.PurchName;
        purchParmTable.DeliveryName          = purchTable.DeliveryName;
        purchParmTable.DeliveryPostalAddress = purchTable.DeliveryPostalAddress;
        purchParmTable.OrderAccount          = purchTable.OrderAccount;
        purchParmTable.CurrencyCode          = purchTable.CurrencyCode;
        purchParmTable.InvoiceAccount        = purchTable.InvoiceAccount;
        purchParmTable.ParmId                = purchParmUpdate.ParmId;
        purchParmTable.insert();

        while select  purchLine
            where purchLine.PurchId == _purchId
        {

            purchParmLine.InitFromPurchLine(purchLine);
            purchParmLine.ReceiveNow = 0.5; //purchLine.PurchQty;
            purchParmLine.ParmId     = purchParmTable.ParmId;
            purchParmLine.TableRefId = purchParmTable.TableRefId;
            purchParmLine.setQty(DocumentStatus::PackingSlip, false, true);
            purchParmLine.setLineAmount();
            purchParmLine.insert();

        }

        purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);
        purchFormLetter.transDate(systemDateGet());
        purchFormLetter.proforma(false);
        purchFormLetter.specQty(PurchUpdate::PackingSlip);
        purchFormLetter.purchTable(purchTable);
        purchFormLetter.parmParmTableNum(purchParmTable.ParmId);
        purchFormLetter.parmId(purchParmTable.ParmId);
        purchFormLetter.purchParmUpdate(purchFormLetterParmData.parmParmUpdate());
        purchFormLetter.run();


    }

    public static void main(Args _args)
    {
        AT_GRNImportService service = new AT_GRNImportService();
        service.generateGRN('VDMC/26-27/PO/0133');
    }

}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)