Sales invoice journal create and posting classes in D365FO.
While creating:
[ExtensionOf(classstr(SalesInvoiceJournalCreateBase))]
final class SalesInvoiceJournalCreateBase_Extension
{
public InvoiceId SalesInvoiceNum;
protected void initJournalHeader()
{
next initJournalHeader();
if(CustParameters::find().ManualSalesInvoiceId == NoYes::Yes)
{
custInvoiceJour custInvoiceJourLocal;
if(!SalesInvoiceNum)
{
warning("Invoice number must be filled in.");
throw error(strFmt("@SYS26498", custInvoiceJour.SalesId));
}
select firstonly SalesId,InvoiceId from custInvoiceJourLocal
where custInvoiceJourLocal.InvoiceId == SalesInvoiceNum;
if(custInvoiceJourLocal.RecId != 0)
{
warning(strFmt("Invoice number %1 already used for sales order %2",
SalesInvoiceNum,custInvoiceJourLocal.SalesId));
throw error(strFmt("@SYS26498", custInvoiceJour.SalesId));
}
custInvoiceJour.InvoiceId = SalesInvoiceNum;
}
}
protected container getNumAndVoucher()
{
container conLocal = next getNumAndVoucher();
if(CustParameters::find().ManualSalesInvoiceId == NoYes::Yes)
{
SalesInvoiceNum = salesParmUpdate.InvoiceId;
conLocal = conPoke(conLocal,1,SalesInvoiceNum);
}
return conLocal;
}
}While Posting:
[ExtensionOf(classstr(CustPostInvoice))]
final class CustPostInvoice_Extension
{
public CustInvoiceId CustInvoiceId;
protected container getInvoiceIdAndVoucher(CustInvoiceTable _custInvoiceTable, NumberSeq _numberSeq)
{
CustInvoiceTable custInvoiceTableLocal;
container conLocal = next getInvoiceIdAndVoucher(_custInvoiceTable,_numberSeq);
if(CustParameters::find().ManualSalesInvoiceId == NoYes::Yes)
{
CustInvoiceId = _custInvoiceTable.InvoiceId;
if(!CustInvoiceId)
{
warning("Invoice number must be filled in.");
throw error("Posting has been cancelled.");
}
select firstonly InvoiceId from custInvoiceTableLocal
where custInvoiceTableLocal.InvoiceId == CustInvoiceId;
if(custInvoiceTableLocal.RecId != 0)
{
warning(strFmt("Invoice number %1 has already been used.", CustInvoiceId));
throw error("Posting has been cancelled.");
}
conLocal = conPoke(conLocal,1,CustInvoiceId);
}
return conLocal;
}
}Keep Daxing!!
No comments:
Post a Comment