Dynamics 365 Finance and Operations: Kodla Ön Ödeme Oluşturup Deftere Nakletmek.
Bu yazıda Dynamics 365 Finance and Operations standart özelliklerinden biri olan ön ödemeyi kodla nasıl yapıyoruz bir örnekle anlatacağım.
Bu işlem Satınalma siparişleri üzerinden yapılabiliyor. Ancak bize gelen talepte bunun basit bir onaya tabi olması istendi. Bunun için bir ara tablo yapıp onun üzerinden otomatik ön ödeme oluşturup deftere nakletmek istedik.
Resim-1
Şöyle bir kodla işimizi halldebiliriz.
PurchFormLetter purchFormLetter;
purchTable purchTable;
PurchPrepayTable PurchPrepayTable;
PurchId purchId;
PackingSlipId packingSlipId;
;
ttsBegin;
purchTable = PurchTable::find(DmrSellerAdvance.OrderNumber);
PurchPrepayTable = PurchPrepayTable::findPurchId(DmrSellerAdvance.OrderNumber , true);
if(PurchPrepayTable.RecId == 0)
{
PurchPrepayTable.clear();
PurchPrepayTable.Type = PurchPrepayType::Fixed;
PurchPrepayTable.PurchTable = DmrSellerAdvance.OrderNumber;
PurchPrepayTable.PrepayCategoryId = 313452354; // Kategori zorunlu
PurchPrepayTable.Currency = PurchTable::find(DmrSellerAdvance.OrderNumber).CurrencyCode;
PurchPrepayTable.Description = DmrSellerAdvance.Description;
PurchPrepayTable.Value = DmrSellerAdvance.PayableQty; // Ödenecek tutar burası.
PurchPrepayTable.PrepayLimit = DmrSellerAdvance.OrderQty;
PurchPrepayTable.PrepayAvailable = DmrSellerAdvance.PayableQty;
purchPrepayTable.recalculatePrepayLimit();
purchPrepayTable.recalculateAmounts(false);
PurchPrepayTable.insert();
}
Else
// Eğer birden çok ödeme yapılacaksa Value güncelleyerek yapabilirsiniz.
{
PurchPrepayTable.Value = PurchPrepayTable.Value + DmrSellerAdvance.PayableQty;
purchPrepayTable.recalculatePrepayLimit();
purchPrepayTable.recalculateAmounts();
PurchPrepayTable.update();
}
purchFormLetter = PurchFormLetter::construct(DocumentStatus::Invoice);
PurchFormLetter.parmInvoiceType(PurchInvoiceType::VendorAdvance); // Fatura tipi böyle olmalı.
purchFormLetter.update(purchTable, NumberSeq::newGetNumFromId( PurchParameters::numRefPurchAdvanceVoucher().NumberSequenceId).num());
ttsCommit;
Bu yazıda bir ön ödeme kaydı oluşturup deftere nakletme örneğini inceledik. Satınla tarafı biraz kafa karıştırıcı olabiliyor. Bekleyen tedarikçi faturası olmadı sürece direk sipariş üzerinden faturalama yapabilirsiniz.
Selamlar.
www.fatihdemirci.net
TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, PurchInvoiceType::VendorAdvance, PrePayment, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365,X++