Report 400 Remittance Advice - Entries
- App
- Base Application
- Namespace
- Microsoft.Purchases.Reports
- Versions
- 17-28
Versions171819202122232425262728
Source29
Source in 29
src/Layers/W1/BaseApp/Purchases/Reports/RemittanceAdviceEntries.Report.al459 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace Microsoft.Purchases.Reports;
using Microsoft.Finance.Currency;
using Microsoft.Finance.GeneralLedger.Setup;
using Microsoft.Foundation.Address;
using Microsoft.Foundation.Company;
using Microsoft.Purchases.Payables;
using Microsoft.Purchases.Vendor;
using System.Utilities;
report 400 "Remittance Advice - Entries"
{
Caption = 'Remittance Advice - Entries';
WordMergeDataItem = "Vendor Ledger Entry";
DefaultRenderingLayout = RDLCLayout;
dataset
{
dataitem("Vendor Ledger Entry"; "Vendor Ledger Entry")
{
DataItemTableView = sorting("Vendor No.") where("Document Type" = const(Payment));
RequestFilterFields = "Vendor No.", "Posting Date", "Currency Code", "Entry No.";
column(CompanyAddr1; CompanyAddr[1])
{
}
column(VendorAddr1; VendorAddr[1])
{
}
column(CompanyAddr2; CompanyAddr[2])
{
}
column(VendorAddr2; VendorAddr[2])
{
}
column(CompanyAddr3; CompanyAddr[3])
{
}
column(VendorAddr3; VendorAddr[3])
{
}
column(CompanyAddr4; CompanyAddr[4])
{
}
column(VendorAddr4; VendorAddr[4])
{
}
column(CompanyAddr5; CompanyAddr[5])
{
}
column(CompanyAddr6; CompanyAddr[6])
{
}
column(CompanyAddr7; CompanyAddr[7])
{
}
column(CompanyAddr8; CompanyAddr[8])
{
}
column(VendorAddr5; VendorAddr[5])
{
}
column(VendorAddr6; VendorAddr[6])
{
}
column(CompanyInfoPhoneNo; CompanyInfo."Phone No.")
{
}
column(VendorAddr7; VendorAddr[7])
{
}
column(CompanyInfoVATRegNo; CompanyInfo."VAT Registration No.")
{
}
column(CompanyInfoFaxNo; CompanyInfo."Fax No.")
{
}
column(VendorAddr8; VendorAddr[8])
{
}
column(CompanyInfoBankName; CompanyInfo."Bank Name")
{
}
column(CompanyInfoBankAccNo; CompanyInfo."Bank Account No.")
{
}
column(CompanyInfoBankBranchNo; CompanyInfo."Bank Branch No.")
{
}
column(DocNo_VendLedgEntry; "Document No.")
{
}
column(EntryNo_VendLedgEntry; "Entry No.")
{
}
column(VendorLedgerEntryVendorNo; "Vendor No.")
{
}
column(RemittanceAdviceCaption; RemittanceAdvCaptionLbl)
{
}
column(PhoneNoCaption; PhoneNoCaptionLbl)
{
}
column(FaxNoCaption; FaxNoCaptionLbl)
{
}
column(VATRegNoCaption; VATRegNoCaptionLbl)
{
}
column(BankNameCaption; BankCaptionLbl)
{
}
column(BankAccountNoCaption; AccNoCaptionLbl)
{
}
column(SortCodeCaption; SortCodeCaptionLbl)
{
}
column(AmountCaption; AmtCaptionLbl)
{
}
column(PmtDiscTakenCaption; PmtDiscTakenCaptionLbl)
{
}
column(RemainingAmtCaption; RemAmtCaptionLbl)
{
}
column(OriginalAmountCaption; OriginalAmtCaptionLbl)
{
}
column(YourDocNoCaption; YourDocNoCaptionLbl)
{
}
column(DocTypeCaption_VendLedgEntry2; VendLedgEntry2.FieldCaption("Document Type"))
{
}
column(OurDocNoCaption; OurDocNoCaptionLbl)
{
}
column(CurrCodeCaption; CurrCodeCaptionLbl)
{
}
column(DocumentDateCaption; DocDateCaptionLbl)
{
}
column(PostingDateCaption; PostingDateCaptionLbl) { }
dataitem(VendLedgEntry2; "Vendor Ledger Entry")
{
DataItemTableView = sorting("Entry No.");
column(LineAmtLineDiscCurr; -LineAmount - LineDiscount)
{
AutoFormatExpression = "Vendor Ledger Entry"."Currency Code";
AutoFormatType = 1;
}
column(NegAmount_VendLedgEntry2; -Amount)
{
AutoFormatExpression = "Vendor Ledger Entry"."Currency Code";
AutoFormatType = 1;
}
column(RemAmt_VendLedgEntry2; -"Remaining Amount")
{
AutoFormatExpression = "Vendor Ledger Entry"."Currency Code";
AutoFormatType = 1;
}
column(DocType_VendLedgEntry2; "Document Type")
{
}
column(ExtDocNo_VendLedgEntry2; "External Document No.")
{
}
column(LineDiscount_VendLedgEntry2; -LineDiscount)
{
AutoFormatExpression = "Vendor Ledger Entry"."Currency Code";
AutoFormatType = 1;
}
column(CurrCode_VendLedgEntry2; CurrencyCode("Currency Code"))
{
}
column(DocDateFormat_VendLedgEntry2; Format("Document Date"))
{
}
column(PostingDateFormat_VendLedgEntry2; Format(VendLedgEntry2."Posting Date")) { }
column(LAmountWDiscCur; LAmountWDiscCur)
{
}
column(EntryNo_VendLedgEntry2; "Entry No.")
{
}
dataitem("Detailed Vendor Ledg. Entry"; "Detailed Vendor Ledg. Entry")
{
DataItemLink = "Vendor Ledger Entry No." = field("Entry No."), "Initial Document Type" = field("Document Type");
DataItemTableView = sorting("Vendor Ledger Entry No.", "Entry Type", "Posting Date") where("Entry Type" = const(Application), "Document Type" = const("Credit Memo"));
column(LineDisc_DtldVendLedgEntry; -LineDiscount)
{
AutoFormatExpression = "Vendor Ledger Entry"."Currency Code";
AutoFormatType = 1;
}
column(VendLedgEntry3RemAmt; -VendLedgEntry3."Remaining Amount")
{
AutoFormatExpression = "Vendor Ledger Entry"."Currency Code";
AutoFormatType = 1;
}
column(Amt_DtldVendLedgEntry; -Amount)
{
AutoFormatExpression = "Vendor Ledger Entry"."Currency Code";
AutoFormatType = 1;
}
column(VendLedgEntry3CurrCode; CurrencyCode(VendLedgEntry3."Currency Code"))
{
}
column(VendLedgEntry3DocDateFormat; Format(VendLedgEntry3."Document Date"))
{
}
column(VendLedgEntry3PostingDateFormat; Format(VendLedgEntry3."Posting Date"))
{
}
column(VendLedgEntry3ExtDocNo; VendLedgEntry3."External Document No.")
{
}
column(DocType_DtldVendLedgEntry; "Document Type")
{
}
column(VendLedgerEntryNo_DtldVendLedgEntry; "Vendor Ledger Entry No.")
{
}
trigger OnAfterGetRecord()
begin
VendLedgEntry3.Get("Applied Vend. Ledger Entry No.");
if "Vendor Ledger Entry No." = "Applied Vend. Ledger Entry No." then
CurrReport.Skip();
VendLedgEntry3.CalcFields(Amount, "Remaining Amount");
LineAmount := VendLedgEntry3.Amount - VendLedgEntry3."Remaining Amount";
LineDiscount :=
CurrExchRate.ExchangeAmtFCYToFCY(
"Posting Date", '', "Currency Code",
VendLedgEntry3."Pmt. Disc. Rcd.(LCY)");
LineDiscountCurr :=
CurrExchRate.ExchangeAmtFCYToFCY(
VendLedgEntry3."Posting Date", '', "Vendor Ledger Entry"."Currency Code",
VendLedgEntry3."Pmt. Disc. Rcd.(LCY)");
VendLedgEntry3.Amount :=
VendLedgEntry3.Amount + LineDiscountCurr;
end;
}
trigger OnAfterGetRecord()
var
DtldVendLedgEntry: Record "Detailed Vendor Ledg. Entry";
begin
CalcFields(Amount, "Remaining Amount");
DtldVendLedgEntry.SetRange("Vendor Ledger Entry No.", "Entry No.");
DtldVendLedgEntry.SetRange("Entry Type", DtldVendLedgEntry."Entry Type"::Application);
DtldVendLedgEntry.SetRange("Document Type", DtldVendLedgEntry."Document Type"::Payment);
DtldVendLedgEntry.SetRange("Document No.", "Vendor Ledger Entry"."Document No.");
DtldVendLedgEntry.SetRange(Unapplied, false);
if DtldVendLedgEntry.IsEmpty() then
CurrReport.Skip();
DtldVendLedgEntry.CalcSums(Amount, "Remaining Pmt. Disc. Possible");
LineAmount := DtldVendLedgEntry.Amount;
if "Currency Code" <> '' then begin
if IsDiscountAppliedToPayment("Vendor Ledger Entry"."Entry No.", "Vendor Ledger Entry"."Document No.") then
LineDiscount := DtldVendLedgEntry."Remaining Pmt. Disc. Possible"
end else
LineDiscount := CurrExchRate.ExchangeAmtFCYToFCY("Posting Date", '', "Currency Code", "Pmt. Disc. Rcd.(LCY)");
"Vendor Ledger Entry".Amount += LineDiscount;
LAmountWDiscCur := -LineAmount - LineDiscount;
end;
trigger OnPreDataItem()
begin
CreateVendLedgEntry := "Vendor Ledger Entry";
FindApplnEntriesDtldtLedgEntry();
SetCurrentKey("Entry No.");
SetRange("Entry No.");
if CreateVendLedgEntry."Closed by Entry No." <> 0 then begin
"Entry No." := CreateVendLedgEntry."Closed by Entry No.";
Mark(true);
end;
SetCurrentKey("Closed by Entry No.");
SetRange("Closed by Entry No.", CreateVendLedgEntry."Entry No.");
if Find('-') then
repeat
Mark(true);
until Next() = 0;
SetCurrentKey("Entry No.");
SetRange("Closed by Entry No.");
MarkedOnly(true);
end;
}
dataitem("Integer"; "Integer")
{
DataItemTableView = sorting(Number) where(Number = const(1));
column(Amount_VendLedgEntry; "Vendor Ledger Entry".Amount)
{
AutoFormatExpression = "Vendor Ledger Entry"."Currency Code";
AutoFormatType = 1;
}
column(CurrCode_VendLedgEntry; CurrencyCode("Vendor Ledger Entry"."Currency Code"))
{
}
column(TotalCaption; TotalCaptionLbl)
{
}
}
trigger OnAfterGetRecord()
begin
Vend.Get("Vendor No.");
FormatAddr.Vendor(VendorAddr, Vend);
CalcFields(Amount);
end;
}
}
requestpage
{
layout
{
}
actions
{
}
}
rendering
{
layout(RDLCLayout)
{
Type = RDLC;
LayoutFile = './Purchases/Reports/RemittanceAdviceEntries.rdlc';
Summary = 'Report layout made in the legacy RDLC format. Use an RDLC editor to modify the layout.';
}
}
labels
{
}
trigger OnPreReport()
begin
CompanyInfo.Get();
FormatAddr.Company(CompanyAddr, CompanyInfo);
GLSetup.Get();
GLSetup.TestField("LCY Code");
end;
var
Vend: Record Vendor;
GLSetup: Record "General Ledger Setup";
CurrExchRate: Record "Currency Exchange Rate";
CreateVendLedgEntry: Record "Vendor Ledger Entry";
VendLedgEntry3: Record "Vendor Ledger Entry";
FormatAddr: Codeunit "Format Address";
LineAmount: Decimal;
LineDiscount: Decimal;
LineDiscountCurr: Decimal;
LAmountWDiscCur: Decimal;
RemittanceAdvCaptionLbl: Label 'Remittance Advice';
PhoneNoCaptionLbl: Label 'Phone No.';
FaxNoCaptionLbl: Label 'Fax No.';
VATRegNoCaptionLbl: Label 'VAT Reg. No.';
BankCaptionLbl: Label 'Bank';
AccNoCaptionLbl: Label 'Account No.';
SortCodeCaptionLbl: Label 'Sort Code';
AmtCaptionLbl: Label 'Amount';
PmtDiscTakenCaptionLbl: Label 'Pmt. Disc. Taken';
RemAmtCaptionLbl: Label 'Remaining Amount';
OriginalAmtCaptionLbl: Label 'Original Amount';
YourDocNoCaptionLbl: Label 'Your Document No.';
OurDocNoCaptionLbl: Label 'Our Document No.';
CurrCodeCaptionLbl: Label 'Curr. Code';
DocDateCaptionLbl: Label 'Document Date';
PostingDateCaptionLbl: Label 'Posting Date';
TotalCaptionLbl: Label 'Total';
protected var
CompanyInfo: Record "Company Information";
VendorAddr: array[8] of Text[100];
CompanyAddr: array[8] of Text[100];
procedure CurrencyCode(SrcCurrCode: Code[10]): Code[10]
begin
if SrcCurrCode = '' then
exit(GLSetup."LCY Code");
exit(SrcCurrCode);
end;
local procedure FindApplnEntriesDtldtLedgEntry()
var
DtldVendLedgEntry1: Record "Detailed Vendor Ledg. Entry";
DtldVendLedgEntry2: Record "Detailed Vendor Ledg. Entry";
begin
DtldVendLedgEntry1.Reset();
DtldVendLedgEntry1.SetCurrentKey("Vendor Ledger Entry No.");
DtldVendLedgEntry1.SetRange("Vendor Ledger Entry No.", CreateVendLedgEntry."Entry No.");
DtldVendLedgEntry1.SetRange(Unapplied, false);
if DtldVendLedgEntry1.Find('-') then
repeat
if DtldVendLedgEntry1."Vendor Ledger Entry No." =
DtldVendLedgEntry1."Applied Vend. Ledger Entry No."
then begin
DtldVendLedgEntry2.Reset();
DtldVendLedgEntry2.SetCurrentKey("Applied Vend. Ledger Entry No.", "Entry Type");
DtldVendLedgEntry2.SetRange(
"Applied Vend. Ledger Entry No.", DtldVendLedgEntry1."Applied Vend. Ledger Entry No.");
DtldVendLedgEntry2.SetRange("Entry Type", DtldVendLedgEntry2."Entry Type"::Application);
DtldVendLedgEntry2.SetRange(Unapplied, false);
if DtldVendLedgEntry2.Find('-') then
repeat
if DtldVendLedgEntry2."Vendor Ledger Entry No." <>
DtldVendLedgEntry2."Applied Vend. Ledger Entry No."
then begin
VendLedgEntry2.SetCurrentKey("Entry No.");
VendLedgEntry2.SetRange("Entry No.", DtldVendLedgEntry2."Vendor Ledger Entry No.");
if VendLedgEntry2.Find('-') then
VendLedgEntry2.Mark(true);
end;
until DtldVendLedgEntry2.Next() = 0;
end else begin
VendLedgEntry2.SetCurrentKey("Entry No.");
VendLedgEntry2.SetRange("Entry No.", DtldVendLedgEntry1."Applied Vend. Ledger Entry No.");
if VendLedgEntry2.Find('-') then
VendLedgEntry2.Mark(true);
end;
until DtldVendLedgEntry1.Next() = 0;
end;
local procedure IsDiscountAppliedToPayment(VendLedgEntryNo: Integer; DocNo: Code[20]): Boolean
var
DtldVendLedgEntry: Record "Detailed Vendor Ledg. Entry";
begin
DtldVendLedgEntry.LoadFields("Vendor Ledger Entry No.", "Entry Type", "Document Type", "Document No.", "Currency Code", Unapplied);
DtldVendLedgEntry.SetRange("Vendor Ledger Entry No.", VendLedgEntryNo);
DtldVendLedgEntry.SetRange("Entry Type", DtldVendLedgEntry."Entry Type"::"Payment Discount");
DtldVendLedgEntry.SetRange("Document Type", DtldVendLedgEntry."Document Type"::Payment);
DtldVendLedgEntry.SetRange("Document No.", DocNo);
DtldVendLedgEntry.SetFilter("Currency Code", '<>%1', '');
DtldVendLedgEntry.SetRange(Unapplied, false);
if not DtldVendLedgEntry.IsEmpty() then
exit(true);
end;
}