Archive for Şubat 11th, 2022

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++