Как создать инвентарные поступления из кода - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь создать инвентарную квитанцию ​​из двухэтапной передачи, на экране, когда мы выбираем Transfer #, все поля будут заполнены, так же, как и при попытке передать номер перевода из кода, поля не заполняются, пустой документсоздает, может кто-нибудь помочь мне в этом.пожалуйста, посмотрите на код ниже

        INReceiptEntry intrgraph = PXGraph.CreateInstance<INReceiptEntry>();
        INRegister objRegister = new INRegister();

        objRegister.DocType = INDocType.Receipt;
        objRegister = intrgraph.receipt.Insert(objRegister);           
        intrgraph.Save.Press();
        INRegister objRegisteru = intrgraph.receipt.Current;
        objRegisteru.TransferNbr = "000578";
        objRegisteru = intrgraph.receipt.Update(objRegisteru);
        intrgraph.Save.Press();

1 Ответ

0 голосов
/ 15 февраля 2019

В этом примере создается документ переноса с подробной строкой и выделением.Вы можете заменить Transfer деталь на Receipt, она использует почти идентичные шаблоны:

INTransferEntry transferEntry = PXGraph.CreateInstance<INTransferEntry>();

// Document Header
INRegister register = transferEntry.CurrentDocument.Insert();
register.DocType = INDocType.Transfer;
register.SiteID = [???];
register.ToSiteID = [???];
register.BranchID = Accessinfo.BranchID;
register.TranDesc = "Description";
register.TotalQty = 1M;

// Transactions Detail line
INTran inTran = new INTran();
inTran.DocType = INDocType.Transfer;
inTran.RefNbr = register.RefNbr;
inTran = transferEntry.transactions.Insert(inTran);

inTran.BranchID = Accessinfo.BranchID;
inTran.LocationID = [???];
inTran.ToLocationID = [???];
inTran.InventoryID = inventoryItem.InventoryID;
inTran.TranDesc = inventoryItem.Descr;
inTran.TranType = INTranType.Transfer;
inTran.UOM = inventoryItem.BaseUnit;
inTran.Qty = 1M;

// Lot/Serial number allocations            
INTranSplit tranSplit = transferEntry.splits.Insert();
tranSplit.Qty = 1M;
tranSplit.LocationID = [???];
tranSplit.LotSerialNbr = [???];
tranSplit.UOM = inventoryItem.BaseUnit;
transferEntry.splits.Update(tranSplit);

transferEntry.Actions.PressSave();

Чтобы заполнить строки детализации Receipt из Transfer, вам нужно вызвать обработчик событияполя INRegister.TransferNbr.Это можно сделать с помощью метода SetValueExt, который вызывает события FieldUpdated:

graphINReceiptEntry.transactions.Cache.SetValueExt<INRegister.transferNbr>(register, transferNbr)

При установке TransferNbr с помощью SetValueExt он вызовет обработчик событий INRegister_TransferNbr_FieldUpdated графика INReceiptEntry, которыйвведите в квитанции строки с информацией о переводе.

...