Check report Layout customization
http://insidedax.blogspot.com/2019/10/d365-modifying-check-report-along-with.html
/// <summary>
/// This calss is a extension class for ChequeController.
/// </summary>
[ExtensionOf(classStr(ChequeController))]
final class UTTChequeController_Extension
{
/// <summary>
/// If the checkFormType is USStyle we calling the new report design
/// </summary>
/// <param name = "_chequeFormType"> CheckFormtype </param>
/// <param name = "_bankChequeLayout"> BankChequeLayout buffer</param>
/// <returns>It returns the type of report design</returns>
protected str determineReportMenuOutput(ChequeFormType _chequeFormType, BankChequeLayout _bankChequeLayout)
{
chequeReport = next determineReportMenuOutput( _chequeFormType, _bankChequeLayout);
switch (_chequeFormType)
{
case ChequeFormType::USStyle:
chequeReport = ssrsReportStr(UTTCheque_US, Report);
break;
}
return chequeReport;
}
}
/// <summary>
/// This class is a extension class for CheqqueDP
/// </summary>
[ExtensionOf (classStr(ChequeDP))]
final class UTTChequeDP_Extension
{
/// <summary>
/// Address needs to populate in a single line
/// </summary>
protected void populateChequeTmp()
{
#Define.Company('MAV')
#Define.DefaultMAVCompany('1000')
#Define.EmptySpace(' ')
#Define.BarCodeSplit('BARCODESPLIT')
#Define.SlipText('\n\n\n\t SEE ENCLOSED FOR DETAILS OF INVOICES PAID.')
next populateChequeTmp();
BarcodeCode39 barcode, barCodeSplit;
barcode = Barcode::construct(BarcodeType::Code39);
barCodeSplit = Barcode::construct(BarcodeType::Code39);
barcode.string(true, (tmpChequePrintout.UTTVendorCompanyID == #Company? #DefaultMAVCompany: tmpChequePrintout.UTTVendorCompanyID)
+#EmptySpace+ tmpChequePrintout.UTTVendorID +#EmptySpace+ chequeTmp.ChequeNum);
barcode.encode();
barCodeSplit.string(true, #BarCodeSplit);
barCodeSplit.encode();
chequeTmp.UTTBarCode = barcode.barcodeStr();
chequeTmp.UTTBarCodeStatic = barCodeSplit.barcodeStr();
chequeTmp.UTTVendorCompanyName = tmpChequePrintout.UTTVendorCompanyName;
chequeTmp.UTTVendorID = tmpChequePrintout.UTTVendorID;
int64 invoiceCount = BankChequePaymTrans::getInvoiceCount(chequeTmp.ChequeNum, chequeTmp.AccountId);
if (invoiceCount > 28)
{
chequeTmp.SlipTxt = #SlipText;
}
}
}
/// <summary>
/// This class is a extension class for CustVendCheque
/// </summary>
[ExtensionOf(classStr(CustVendCheque))]
final class UTTCustVendCheque_Extension
{
/// <summary>
/// Check report getting payment notes data not required to polulate in report
/// </summary>
/// <param name = "_ledgerJournalTrans"> ledgerJournalTrans table buffer</param>
/// <returns> returns the empty buffer of paymentNotes </returns>
protected ChequeSlipTxt formatSlipText(LedgerJournalTrans _ledgerJournalTrans)
{
#define.NullValue('')
_ledgerJournalTrans.PaymentNotes = next formatSlipText(_ledgerJournalTrans);
_ledgerJournalTrans.PaymentNotes = #NullValue;
return _ledgerJournalTrans.PaymentNotes;
}
/// <summary>
/// This method is used to return PrintPaymentNotes
/// </summary>
/// <param name = "_ledgerJournalTrans">LedgerJournalTrans</param>
/// <param name = "_bankChequePaymTransLines">Counter</param>
/// <param name = "_totalBankChequePaymTransLines">Counter</param>
/// <returns>it return boolean</returns>
protected boolean shouldPrintPaymentNotes(LedgerJournalTrans _ledgerJournalTrans, Counter _bankChequePaymTransLines, Counter _totalBankChequePaymTransLines)
{
boolean ret;
ledgerJournalTrans ledgerJournalTrans = _ledgerJournalTrans;
ledgerJournalTrans = null;
ret = next shouldprintpaymentNotes(ledgerJournalTrans,_bankChequePaymTransLines,_totalBankChequePaymTransLines);
return ret;
}
/// <summary>
/// Calculate the remaining total bank check payment transaction lines.
/// </summary>
/// <param name = "_totalBankChequePaymTransLines">
/// The current total of remaining bank cheque payment transaction lines.
/// </param>
/// <returns>
/// The total remaining bank check payment transaction lines.
/// </returns>
protected int getRemainingTotalBankChequePaymentTransLines(int _totalBankChequePaymTransLines)
{
int totalBankChequePaymTransLines = next getRemainingTotalBankChequePaymentTransLines(_totalBankChequePaymTransLines);
if (totalBankChequePaymTransLines > 28)
{
totalBankChequePaymTransLines = -1;
}
return totalBankChequePaymTransLines;
}
/// <summary>
/// Creates the <c>TmpChequePrintout</c> table buffer that contains the information that is required to
/// create the physical check.
/// </summary>
/// <param name="_custVendPaym">
/// A class that contains the transaction information that is needed for the check.
/// </param>
/// <exception cref="M:Exception::Error">
/// The <c>LedgerJournalACType</c> enumeration value cannot have checks.
/// </exception>
public void output(CustVendPaym _custVendPaym)
{
vendTable vendTable;
LedgerJournalTrans ledgerJournalTrans = _custVendPaym.ledgerJournalTrans();
next output(_custVendPaym);
if (ledgerJournalTrans.AccountType == LedgerJournalACType::Vend && ledgerJournalTrans.Company)
{
vendTable = VendTable::findByLedgerDimension(ledgerJournalTrans.parmLedgerDimension());
ttsbegin;
tmpChequePrintout.selectforupdate(true);
tmpChequePrintout.UTTVendorCompanyName = CompanyInfo::findByCompany_IN(ledgerJournalTrans.Company).Name;
tmpChequePrintout.UTTVendorID = vendTable.AccountNum;
tmpChequePrintout.UTTVendorCompanyID = ledgerJournalTrans.Company;
if (BankChequeLayout::find(tmpChequePrintout.AccountId).chequeFormType == ChequeFormType::USStyle)
{
tmpChequePrintout.AmountTxt = strFmt('***%1', tmpChequePrintout.AmountTxt);
}
tmpChequePrintout.update();
ttscommit;
}
}
}
/// <summary>
/// This class is a extension class for CustVendChequeSlipTextCalculator
/// </summary>
[ExtensionOf(classStr(CustVendChequeSlipTextCalculator))]
final class UTTCustVendChequeSlipTextCalculator_Extension
{
#define.NullValue('')
/// <summary>
/// This method is used to get Title information
/// </summary>
/// <param name = "_bankChequeTable">BankChequeTable</param>
/// <param name = "_chequeFormType">ChequeFormType</param>
/// <returns>container</returns>
public container determineSlipTextTitleAndEndLinesAdjustmentForChequeFormType(
BankChequeTable _bankChequeTable,
ChequeFormType _chequeFormType)
{
ChequeSlipTxt chequeSlipText;
Counter endLines;
[chequeSlipText, endLines] = next determineSlipTextTitleAndEndLinesAdjustmentForChequeFormType(_bankChequeTable,_chequeFormType);
switch (_chequeFormType)
{
case ChequeFormType::USStyle,
ChequeFormType::ESStyle,
ChequeFormType::MXStyle,
ChequeFormType::CAStyle:
chequeSlipText = #NullValue;
endLines = 0;
break;
}
return [chequeSlipText, endLines];
}
/// <summary>
/// This method is used to get title end lines
/// </summary>
/// <param name = "_bankChequeTable">BankChequeTable</param>
/// <param name = "_chequeFormType">ChequeFormType</param>
/// <returns>container</returns>
public container determineSlipTextTitleAndEndLinesAdjustmentForChequeRecipientType(
BankChequeTable _bankChequeTable,
ChequeFormType _chequeFormType)
{
ChequeSlipTxt chequeSlipText;
Counter endLines;
[chequeSlipText, endLines] = next determineSlipTextTitleAndEndLinesAdjustmentForChequeRecipientType(_bankChequeTable, _chequeFormType);
switch (_bankChequeTable.RecipientType)
{
case BankChequeRecipientType::Vend:
VendTable vendTable = VendTable::findByCompany(_bankChequeTable.RecipientCompany, _bankChequeTable.RecipientAccountNum);
if (vendTable)
{
chequeSlipText = #NullValue;
endLines = 0;
}
break;
}
return [chequeSlipText, endLines];
}
/// <summary>
/// Determine slip text title and end lines adjustment for column headers.
/// </summary>
/// <param name = "_bankChequeTable">The bank check table.</param>
/// <param name = "_chequeFormType">The check form type.</param>
/// <returns>The slip text and the end lines adjustment.</returns>
public container determineSlipTextTitleAndEndLinesAdjustmentForColumnHeaders(
BankChequeTable _bankChequeTable,
ChequeFormType _chequeFormType)
{
ChequeSlipTxt chequeSlipText;
Counter endLines;
[chequeSlipText, endLines] = next determineSlipTextTitleAndEndLinesAdjustmentForColumnHeaders(_bankChequeTable, _chequeFormType);
switch (_chequeFormType)
{
case ChequeFormType::USStyle,
ChequeFormType::ESStyle,
ChequeFormType::MXStyle,
ChequeFormType::CAStyle,
ChequeFormType::DEStyle,
ChequeFormType::UKStyle:
chequeSlipText = #NullValue;
chequeSlipText += strFmt(
'%1 %2 %3 %4 %5 %6\n\n',
"@SYS339127", "@SYS4726", "@SYS35300", "@SYS53072", "@SYS77949", "@SYS6901");
endLines = -2;
break;
}
return [chequeSlipText, endLines];
}
/// <summary>
/// Align the Total amount in check report
/// </summary>
/// <param name = "_args">args</param>
/// <returns> returns the total amount in a aligned formate</returns>
protected CustVendChequeSlipTextCalcDeterminSlipTextForTotalReturn determineSlipTextTitleAndEndLinesForSubTotalOrTotal(CustVendChequeSlipTextCalcDeterminSlipTextForTotalParameters _args)
{
CustVendChequeSlipTextCalcDeterminSlipTextForTotalReturn totalReturn = CustVendChequeSlipTextCalcDeterminSlipTextForTotalReturn::construct();
totalReturn = next determineSlipTextTitleAndEndLinesForSubTotalOrTotal(_args);
totalReturn.chequeSlipTxt = '';
totalReturn.endLines = -28;
return totalReturn;
}
/// <summary>
/// This method is used for shouldPrintSubTotal
/// </summary>
/// <param name = "_endLines">Counter</param>
/// <param name = "_bankChequePaymTransLines">Counter</param>
/// <param name = "_totalBankChequePaymTransLines">Counter</param>
/// <param name = "_chequeFormType">ChequeFormType</param>
/// <returns>boolean</returns>
protected boolean shouldPrintSubTotal(Counter _endLines, Counter _bankChequePaymTransLines, Counter _totalBankChequePaymTransLines, ChequeFormType _chequeFormType)
{
boolean shouldPrintSubTotal = next shouldPrintSubTotal(_endLines, _bankChequePaymTransLines, _totalBankChequePaymTransLines, _chequeFormType);
if (_chequeFormType == ChequeFormType::USStyle)
{
shouldPrintSubTotal = false;
}
return shouldPrintSubTotal;
}
/// <summary>
/// Determine slip text and end lines adjustment for <c>BankChequePaymTrans</c>.
/// </summary>
/// <param name = "bankChequePaymTrans">The bank payment transaction.</param>
/// <returns>The slip text and the end lines adjustment.</returns>
protected container determineSlipTextAndEndLinesAdjustmentForBankChequePaymTrans(BankChequePaymTrans bankChequePaymTrans)
{
ChequeSlipTxt chequeSlipText;
VendTrans vendTrans;
Counter endLines;
BankChequeTable bankChequeTable;
FromDate invoiceDate = bankChequePaymTrans.InvoiceDate;
CashDiscAmount cashDiscAmount = bankChequePaymTrans.CashDiscAmountCur;
[chequeSlipText, endLines] = next determineSlipTextAndEndLinesAdjustmentForBankChequePaymTrans(bankChequePaymTrans);
bankChequeTable = bankChequeTable::find(bankChequePaymTrans.AccountId, bankChequePaymTrans.ChequeNum);
switch (bankChequeTable.RecipientType)
{
case BankChequeRecipientType::Vend:
select firstonly Txt from vendTrans
where vendTrans.Invoice == bankChequePaymTrans.InvoiceId;
chequeSlipText = #NullValue;
chequeSlipText += strFmt('%1 %2 %3 %4 %5 %6\n',
strLFix(date2StrUsr(invoiceDate), 12),
strLFix(bankChequePaymTrans.InvoiceId, 14),
strLFix(vendTrans.Txt, 20),
strRFix(num2str(-bankChequePaymTrans.InvoiceAmountCur, 0, 2, -1, -1), 12),
strRFix(num2str(cashDiscAmount, 0, 2, -1, -1), 13),
strRFix(num2str(-bankChequePaymTrans.PaymentAmountCur, 0, 2, -1, -1), 14));
endLines = -1;
break;
}
return [chequeSlipText, endLines];
}
}
No comments:
Post a Comment