Create Transfer Journal in d365fo x++

Create Transfer Journal in d365fo x++

Code:

[FormControlEventHandler(formControlStr(TxlDemandNoteForm, CreateTransferJournal), FormControlEventType::Clicked)]
    public static void CreateTransferJournal_OnClicked(FormControl sender, FormControlEventArgs e)
    {
        TxlDemandNoteLine   TxlDemandNoteLine;
        InventJournalTable  inventJournalTable;
        InventJournalTrans  inventJournalTrans;
        InventJournalName   InventJournalName;
        int64               line = 0;
        NumberSeq           num,num1;

        FormDataSource      TxlDemandNoteHeader_DS  = sender.formRun().dataSource(formDataSourceStr(TxlDemandNoteForm, TxlDemandNoteHeader));
        TxlDemandNoteHeader TxlDemandNoteHeader     = TxlDemandNoteHeader_DS.cursor();

        select TxlDemandNoteLine where TxlDemandNoteLine.DemandNO == TxlDemandNoteHeader.DemandNO;
        if(!TxlDemandNoteLine)
        {
            error("Add Lines!");
            return;
        }

        if(TxlDemandNoteHeader.CBLTransferJournal)
        {
            error("Journal already Created!");
            return;
        }

        if(!TxlDemandNoteHeader.CBLInventSiteId || !TxlDemandNoteHeader.CBLInventLocationId || !TxlDemandNoteHeader.CBLwMSLocationId)
        {
            error("Site, warehouse & location must be filled in!");
            return;
        }

        TxlDemandNoteLine.clear();
        ttsbegin;
        inventJournalTable.clear();
        num  = new NumberSeq();
        num  = NumberSeq::newGetNum(InventParameters::numRefTransferId());

        InventJournalName = InventJournalName::find('ITrf');
        inventJournalTable.initFromInventJournalName(InventJournalName::find(InventJournalName.JournalNameId));
                    
        inventJournalTable.Description      = "Transfer from Demand note ";
        inventJournalTable.bfpJournalType   = bfpJournalType::NonGarment;
        inventJournalTable.SystemBlocked    = true;
        inventJournalTable.JournalType      = InventJournalType::Transfer;
        inventJournalTable.insert();

        while
        select TxlDemandNoteLine 
        where TxlDemandNoteLine.DemandNO == TxlDemandNoteHeader.DemandNO
        {
            InventDim          frominventDim,ToinventDim;
            frominventDim = InventDim::find(TxlDemandNoteLine.InventDimId);

            num1 = new NumberSeq();
            num1 = NumberSeq::newGetNum(InventParameters::bfpNumRefInventTransLineGroupId());
                
            inventJournalTrans.clear();
            
            inventJournalTrans.bfpInventJournalTransLineGroupId = num1.num();
            inventJournalTrans.initFromInventJournalTable(inventJournalTable);
            inventJournalTrans.initFromInventTable(InventTable::find(TxlDemandNoteLine.ItemId));
            InventJournalTrans.JournalType      = InventJournalType::Transfer;
            inventJournalTrans.Qty              = (-1) * TxlDemandNoteLine.Qty;
            inventJournalTrans.TransDate        = SystemDateget();
            inventJournalTrans.InventDimId      = InventDim::findOrCreate(frominventDim).inventDimId;
            ToinventDim.configId                = frominventDim.configId;
            ToinventDim.InventSiteId            = TxlDemandNoteHeader.CBLInventSiteId;
            ToinventDim.wMSLocationId           = TxlDemandNoteHeader.CBLwMSLocationId;
            ToinventDim.InventLocationId        = TxlDemandNoteHeader.CBLInventLocationId;
            inventJournalTrans.ToInventDimId    = InventDim::findOrCreate(ToinventDim).inventDimId;
            inventJournalTrans.insert();
                   
        }
              
            TxlDemandNoteHeader.selectForUpdate(true);
            TxlDemandNoteHeader.CBLTransferJournal = inventJournalTable.JournalId;
            TxlDemandNoteHeader.update();
            ttscommit;
        
        TxlDemandNoteHeader_DS.research(true);
        TxlDemandNoteHeader_DS.reread();
        Info(strFmt("%1 Journal Created!", inventJournalTable.JournalId));
    }

Comments

Popular posts from this blog

D365FO – AX – X++ –Refresh, Reread, Research, and ExecuteQuery

Create Inventory Journal through Code in D365FO X++

SalesLine Reservation in D365fo x++