FTI Posting with manual number in D365fo x++
FTI Posting with manual number in D365fo x++
[ExtensionOf(classStr(CustPostInvoice))]
final class CustPostInvoice_AdremGH_Extension
{
protected container getInvoiceIdAndVoucher(CustInvoiceTable _custInvoiceTable, NumberSeq _numberSeq)
{
InvoiceId _invoiceId;
Voucher _voucher;
next getInvoiceIdAndVoucher(_custInvoiceTable, _numberSeq);
CustFreeInvoiceCalcTotals custFreeInvoiceCalcTotals = this.custFreeInvoiceCalcTotals;
boolean creditNote = this.isCreditNote(custFreeInvoiceCalcTotals.custFreeInvoiceInvoiceAmount());
if (!this.validate(custFreeInvoiceCalcTotals.custFreeInvoiceInvoiceAmount(), creditNote))
{
Message::Add(MessageSeverity::Error, "@SYS25904");
throw Exception::Error;
}
NumberSeq newNumSeq = this.allocateNumAndVoucher(creditNote);
if (CustParameters::find().ADMFTIManualNum)
{
[_invoiceId, _voucher] = this.getNumAndVoucher(_custInvoiceTable, newNumSeq);
if (!CustInvoiceJour::checkDuplicateNum_W(_invoiceId, '', custInvoiceTable.InvoiceDate))
{
throw error("@SYS25904");
}
}
else
{
[_invoiceId, _voucher] = newNumSeq.numAndVoucher();
}
if (custInvoiceTable.CustomerRef && RetailMCRChannelTable::findForCurrentUser().mcrEnableOrderCompletion)
{
_invoiceId = custInvoiceTable.CustomerRef;
_voucher = custInvoiceTable.mcrLedgerVoucher;
}
if (!_voucher)
{
throw error("@SYS71652");
}
return [_invoiceId, _voucher];
}
private container getNumAndVoucher(CustInvoiceTable _custInvoiceTable, NumberSeq _numberSeq)
{
container ret;
if (_custInvoiceTable.CustomerRef && CustParameters::find().ADMFTIManualNum)
{
_numberSeq.parmNumberSequenceCode('');
_numberSeq.parmNumberSequenceId(0);
ret = [_custInvoiceTable.CustomerRef, _numberSeq.voucher()];
}
else
{
ret = _numberSeq.numAndVoucher();
}
return ret;
}
}
Comments
Post a Comment