localization · BC29official - Microsoftreviewed - checked by Opus

Belgium (BE)

Belgium (BE) localization of Business Central 29. It covers Belgian VAT reporting with non-deductible VAT, Intrastat, CODA bank statements, electronic banking (domestic, international, SEPA payments), domiciliation direct debits, enterprise numbers, legal ledger reports and PEPPOL 3.0. It answers where Belgian-specific setup, fields and reports live.

What BE changes in W1 80 objects, BC29

table/254 "VAT Entry" +8, 11 changed
  • +field(11310; "Enterprise No."; Text[50])
  • +field(11311; "Non Ded. VAT Amount"; Decimal)
  • +field(11312; "Non Ded. Source Curr. VAT Amt."; Decimal)
  • +field(11391; "Month/Quarter"; Text[2])
  • +field(11392; "Year"; Text[4])
  • +key(Key14; "Document Date")
  • +key(Key15; "G/L Acc. No.")
  • +key(Key16; "Type", "Closed", "VAT Bus. Posting Group", "VAT Prod. Posting Group", "Reversed", "Posting Date", "G/L Acc. No.", "VAT Reporting Date")
  • Δkey(Key3; "Journal Templ. Name", "Type", "Closed", "VAT Bus. Posting Group", "VAT Prod. Posting Group", "Document Type", "Posting Date", "VAT Reporting Date")
  • Δkey(Key4; "Type", "Closed", "Tax Jurisdiction Code", "Use Tax", "Posting Date")
  • Δkey(Key5; "Type", "Country/Region Code", "VAT Registration No.", "VAT Bus. Posting Group", "VAT Prod. Posting Group", "Posting Date")
  • Δkey(Key6; "Document No.", "Posting Date")
  • Δkey(Key7; "Transaction No.")
  • Δkey(Key8; "Tax Jurisdiction Code", "Tax Group Used", "Tax Type", "Use Tax", "Posting Date")
  • Δkey(Key9; "Type", "Bill-to/Pay-to No.", "Transaction No.")
  • Δkey(Key10; "Type", "Bill-to/Pay-to No.", "Country/Region Code", "EU 3-Party Trade", "Posting Date")
  • Δkey(Key11; "Country/Region Code", "VAT Registration No.", "EU 3-Party Trade", "Year", "Month/Quarter")
  • Δkey(Key12; "Type", "Closed", "VAT Bus. Posting Group", "VAT Prod. Posting Group", "Tax Jurisdiction Code", "Use Tax", "Posting Date", "G/L Acc. No.")
  • Δkey(Key13; "Posting Date", "Type", "Closed", "VAT Bus. Posting Group", "VAT Prod. Posting Group", "Reversed", "G/L Acc. No.", "VAT Reporting Date")
codeunit/9998 "Upgrade Tag Definitions" +17
  • +procedure GetGLEntryJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetGLRegisterJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetGenJournalTemplateDatesUpgradeTag(): Code[250]
  • +procedure GetGenJournalTemplateNamesSetupUpgradeTag(): Code[250]
  • +procedure GetVATEntryJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetBankAccountLedgerEntryJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetCustLedgerEntryJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetEmplLedgerEntryJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetVendLedgerEntryJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetSalesHeaderJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetPurchaseHeaderJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetServiceHeaderJournalTemplateNameUpgradeTag(): Code[250]
  • +procedure GetCustLedgerEntryPmtDiscPossibleUpgradeTag(): Code[250]
  • +procedure GetVendLedgerEntryPmtDiscPossibleUpgradeTag(): Code[250]
  • +procedure GetGenJournalLinePmtDiscPossibleUpgradeTag(): Code[250]
  • +procedure GetVATDateFieldServiceUpgrade(): Code[250]
  • +procedure GetVATDateFieldServiceBlankUpgrade(): Code[250]
table/17 "G/L Entry" +9, 6 changed
  • +field(11301; "Open"; Boolean)
  • +field(11302; "Remaining Amount"; Decimal)
  • +field(11303; "Closed by Entry No."; Integer)
  • +field(11304; "Closed at Date"; Date)
  • +field(11305; "Closed by Amount"; Decimal)
  • +field(11306; "Applies-to ID"; Code[50])
  • +key(Key14; "Journal Templ. Name", "G/L Account No.", "Posting Date", "Document Type")
  • +key(Key15; "Closed by Entry No.")
  • +key(Key16; "Dimension Set ID")
  • Δkey(Key8; "Journal Templ. Name", "Posting Date", "Document No.")
  • Δkey(Key9; "IC Partner Code")
  • Δkey(Key10; "G/L Account No.", "Job No.", "Posting Date")
  • Δkey(Key11; "Posting Date", "G/L Account No.", "Dimension Set ID")
  • Δkey(Key12; "Gen. Bus. Posting Group", "Gen. Prod. Posting Group")
  • Δkey(Key13; "VAT Bus. Posting Group", "VAT Prod. Posting Group")
report/12 "VAT Statement" +8, 4 removed
  • +local event OnCalcManualVATCorrectionSumsOnAfterManualVATCorrectionSetFilters(VATStmtLine: Record "VAT Statement Line"; var ManualVATCorrection: Record "Manual VAT Correction")
  • +local event OnCalcLineTotalWithBaseOnAfterGLAccSetFilters(var GLAccount: Record "G/L Account"; VATStatementLine2: Record "VAT Statement Line"; var GLEntry: Record "G/L Entry")
  • +procedure CalcLineTotal(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; var CorrectionAmount: Decimal; var NetAmountLCY: Decimal; JournalTempl: Code[10]; Level: Integer): Boolean
  • +procedure CalcLineTotalWithBase(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; var TotalBase: Decimal; var CorrectionAmount: Decimal; var NetAmountLCY: Decimal; JournalTempl: Code[10]; Level: Integer): Boolean
  • +local procedure CalcTotalAmount(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; var TotalBase: Decimal; var NetAmountLCY: Decimal)
  • +local procedure CalcCorrection(VATStmtLine2: Record "VAT Statement Line"; var CorrectionAmount: Decimal)
  • +local procedure CalcManualVATCorrectionSums(VATStmtLine2: Record "VAT Statement Line"; var ManualVATCorrection: Record "Manual VAT Correction")
  • +local procedure GetPeriodStartDate(): Date
  • −local event OnCalcLineTotalWithBaseOnAfterGLAccSetFilters(var GLAccount: Record "G/L Account"; VATStatementLine2: Record "VAT Statement Line")
  • −procedure CalcLineTotal(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; Level: Integer): Boolean
  • −procedure CalcLineTotalWithBase(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; var TotalBase: Decimal; Level: Integer): Boolean
  • −local procedure CalcTotalAmount(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; var TotalBase: Decimal)
table/18 "Customer" +7, 4 changed
  • +field(11310; "Enterprise No."; Text[50])
  • +field(11311; "VAT Liable"; Boolean)
  • +field(2000020; "Domiciliation No."; Text[12])
  • +key(Key18; "Salesperson Code")
  • +key(Key19; "SystemModifiedAt")
  • +local event OnBeforeValidateEnterpriseNo(var Customer: Record Customer; xCustomer: Record Customer; CurrFieldNo: Integer; var IsHandled: Boolean)
  • +local procedure FormatEnterpriseNo(EnterpriseNo: Text; CountryCode: Code[10]): Text
  • Δkey(Key14; "Enterprise No.")
  • Δkey(Key15; "Domiciliation No.")
  • Δkey(Key16; "Blocked")
  • Δkey(Key17; "Primary Contact No.")
table/79 "Company Information" +8, 3 changed
  • +field(11300; "Intrastat Establishment No."; Text[2])
  • +field(11301; "Enterprise No. Accountant"; Text[50])
  • +field(11302; "XML Seq. No. Annual Listing"; Integer)
  • +field(11303; "XML Seq. No. EU Sales List"; Integer)
  • +field(11304; "XML Seq. No. VAT Declaration"; Integer)
  • +field(11310; "Enterprise No."; Text[50])
  • +field(11311; "Branch No."; Text[20])
  • +local procedure FormatEnterpriseNo(EnterpriseNo: Text; CountryCode: Code[10]): Text
  • Δfield(11; "Giro No."; Text[20])
  • Δfield(14; "Bank Account No."; Text[30])
  • Δfield(38; "IBAN"; Code[50])
page/475 "VAT Statement Preview Line" +6, 3 removed
  • +local event OnBeforeCalcColumnValue(VATStatementLine: Record "VAT Statement Line"; var TotalAmount: Decimal; var CorrectionValue: Decimal; var NetAmountLCY: Decimal; JournalTempl: Code[10]; Level: Integer; var IsHandled: Boolean; Selection: Enum "VAT Statement Report Selection"; PeriodSelection: Enum "VAT Statement Report Period Selection"; PrintInIntegers: Boolean; UseAmtsInAddCurr: Boolean)
  • +local procedure CalcColumnValue(VATStatementLine: Record "VAT Statement Line"; var ColumnValue: Decimal; var CorrectionValue: Decimal; var NetAmountLCY: Decimal; JournalTempl: Code[10]; Level: Integer)
  • +local procedure ApplyDateFilter(var ManualVATCorrection: Record "Manual VAT Correction")
  • +procedure DrillDownCorrectionValue()
  • +local procedure MarkLinesManVATCorrections(VATStatementLine: Record "VAT Statement Line"; var ManualVATCorrection: Record "Manual VAT Correction")
  • +local procedure MarkManVATCorrections(VATStatementLine: Record "VAT Statement Line"; var ManualVATCorrection: Record "Manual VAT Correction"): Boolean
  • −local event OnBeforeCalcColumnValue(VATStatementLine: Record "VAT Statement Line"; var TotalAmount: Decimal; Level: Integer; var IsHandled: Boolean; Selection: Enum "VAT Statement Report Selection"; PeriodSelection: Enum "VAT Statement Report Period Selection"; PrintInIntegers: Boolean; UseAmtsInAddCurr: Boolean)
  • −local procedure SetKeyForVATEntry(var VATEntryLocal: Record "VAT Entry")
  • −local procedure CalcColumnValue(VATStatementLine: Record "VAT Statement Line"; var ColumnValue: Decimal; Level: Integer)
table/39 "Purchase Line" +8, 1 removed
  • +field(11303; "Suggested Line"; Boolean)
  • +field(11305; "Non Deductible VAT %"; Decimal)
  • +local event OnAfterUpdateVATAmounts(var PurchaseLine: Record "Purchase Line"; TotalLineAmount: Decimal; TotalInvDiscAmount: Decimal; TotalAmount: Decimal; TotalAmountInclVAT: Decimal; TotalVATDifference: Decimal; TotalQuantityBase: Decimal; TotalVATBaseAmount: Decimal)
  • +procedure SetUseVATForReverseCharge()
  • +procedure GetDeductibleVATAmount(): Decimal
  • +procedure GetNonDeductibleVATAmount(): Decimal
  • +local procedure GetVatAmount(): Decimal
  • +procedure GetVatBaseAmount(): Decimal
  • −local event OnAfterUpdateVATAmounts(var PurchaseLine: Record "Purchase Line"; TotalLineAmount: Decimal; TotalInvDiscAmount: Decimal; TotalAmount: Decimal; TotalAmountInclVAT: Decimal; TotalVATDifference: Decimal; TotalQuantityBase: Decimal)
codeunit/1605 "PEPPOL Management" +7
  • +procedure AddPaymentDiscountCompensation(var VATAmtLine: Record "VAT Amount Line")
  • +local procedure GetPmtDiscCompensationVATIdentifier(): Code[20]
  • +local procedure IsPmtDiscCompensationLine(VATAmtLine: Record "VAT Amount Line"): Boolean
  • +local procedure HasPmtDiscCompensationLine(var VATAmtLine: Record "VAT Amount Line"): Boolean
  • +local procedure CalcLegalMonetaryInfoWithCompensation(SalesHeader: Record "Sales Header"; var TempSalesLine: Record "Sales Line" temporary; var VATAmtLine: Record "VAT Amount Line"; var LineExtensionAmount: Text; var LegalMonetaryTotalCurrencyID: Text; var TaxExclusiveAmount: Text; var TaxExclusiveAmountCurrencyID: Text; var TaxInclusiveAmount: Text; var TaxInclusiveAmountCurrencyID: Text; var AllowanceTotalAmount: Text; var AllowanceTotalAmountCurrencyID: Text; var ChargeTotalAmount: Text; var ChargeTotalAmountCurrencyID: Text; var PrepaidAmount: Text; var PrepaidCurrencyID: Text; var PayableRoundingAmount: Text; var PayableRndingAmountCurrencyID: Text; var PayableAmount: Text; var PayableAmountCurrencyID: Text)
  • +procedure GetTaxExemptionReason(VATAmtLine: Record "VAT Amount Line"; var VATProductPostingGroupCategory: Record "VAT Product Posting Group"; var TaxExemptionReasonTxt: Text; TaxCategoryID: Text)
  • +local procedure FormatEnterpriseNo(EnterpriseNo: Text; CountryCode: Code[10]): Text
report/20 "Calc. and Post VAT Settlement" +5, 2 removed
  • +procedure InitializeRequest(NewStartDate: Date; NewEndDate: Date; NewPostingDate: Date; NewJnlTemplName: Code[10]; NewJnlBatchName: Code[10]; NewSettlementAcc: Code[20]; ShowVATEntries: Boolean; Post: Boolean)
  • +procedure InitializeRequest(NewStartDate: Date; NewEndDate: Date; NewPostingDate: Date; NewVATDate: Date; NewJnlTemplName: Code[10]; NewJnlBatchName: Code[10]; NewSettlementAcc: Code[20]; ShowVATEntries: Boolean; Post: Boolean)
  • +local procedure BalanceNormalFullVAT()
  • +local procedure BalanceReverseChargeVAT()
  • +local procedure BalanceSalesTax()
  • −procedure InitializeRequest(NewStartDate: Date; NewEndDate: Date; NewPostingDate: Date; NewDocNo: Code[20]; NewSettlementAcc: Code[20]; ShowVATEntries: Boolean; Post: Boolean)
  • −procedure InitializeRequest(NewStartDate: Date; NewEndDate: Date; NewPostingDate: Date; NewVATDate: Date; NewDocNo: Code[20]; NewSettlementAcc: Code[20]; ShowVATEntries: Boolean; Post: Boolean)
report/840 "Suggest Worksheet Lines" +7
  • +local procedure CalculateVATBaseAmtForPurchLine(PurchHeader2: Record "Purchase Header"; PurchaseLine: Record "Purchase Line"): Decimal
  • +local procedure CalculateVATBaseAmtForSalesLine(SalesHeader2: Record "Sales Header"; SalesLine: Record "Sales Line"): Decimal
  • +procedure CalcAmountLCY(CurrencyCode: Code[10]; CurrencyFactor: Decimal; PostingDate: Date; Amount: Decimal): Decimal
  • +procedure GetAmountRoundingPrecision(CurrencyCode: Code[10]): Decimal
  • +local procedure CalcVATBaseAmtForCustLedgEntry(CustLedgEntry: Record "Cust. Ledger Entry"): Decimal
  • +local procedure CalcVATBaseAmtForVendLedgEntry(VendLedgEntry: Record "Vendor Ledger Entry"): Decimal
  • +local procedure CalcVATBaseAmtFromVATEntry(PostingDate: Date; DocNo: Code[20]; EntryType: Enum "General Posting Type"): Decimal
table/263 "Intrastat Jnl. Line" +5, 2 removed
  • +field(11315; "Conversion Factor"; Decimal)
  • +field(11316; "Unit of Measure"; Text[10])
  • +field(11317; "No. of Supplementary Units"; Decimal)
  • +key(Key3; "Type", "Country/Region Code", "Tariff No.", "Transaction Type", "Transport Method", "Transaction Specification", "Area", "Country/Region of Origin Code", "Partner VAT ID")
  • +key(Key4; "Internal Ref. No.")
  • −key(Key6; "Journal Template Name", "Journal Batch Name", "Type", "Internal Ref. No.")
  • −key(Key7; "Journal Template Name", "Journal Batch Name", "Type", "Country/Region Code", "Tariff No.", "Transaction Type", "Transport Method", "Country/Region of Origin Code", "Partner VAT ID")
codeunit/104000 "Upgrade - BaseApp" +5, 1 removed
  • +local procedure InsertExportProtocol(ExpenseCode: Code[20]; ExpenseDescription: Text[50]; CheckObjectID: Integer; ExportObjectID: Integer; ExportNoSeries: Code[20]; ExportObjectType: Option; CodeExpense: Option)
  • +local procedure UpgradeCustomerVATLiable()
  • +local procedure UpgradeGenJournalTemplates()
  • +local procedure UpgradeJournalTemplateNamesInSetupTables()
  • +local procedure LogTelemetryForManyRecords(TableNo: Integer; NoOfRecords: Integer): Boolean
  • −local procedure UpgradeICGLAccountNoInStandardGeneralJournalLine()
table/49 "Invoice Post. Buffer" +5, 1 changed
  • +field(11300; "Line No."; Integer)
  • +field(11301; "Posting Description"; Text[100])
  • +field(11303; "Non Deductible VAT Amt."; Decimal)
  • +field(11304; "Non Ded. VAT Amt. (ACY)"; Decimal)
  • +field(11305; "Journal Template Name"; Code[10])
  • Δkey(Key1; "Journal Template Name", "Line No.", "Type", "G/L Account", "Gen. Bus. Posting Group", "Gen. Prod. Posting Group", "VAT Bus. Posting Group", "VAT Prod. Posting Group", "Tax Area Code", "Tax Group Code", "Tax Liable", "Use Tax", "Dimension Set ID", "Job No.", "Fixed Asset Line No.", "Deferral Code", "Additional Grouping Identifier")
table/98 "General Ledger Setup" +5, 1 changed
  • +field(11315; "VAT Statement Template Name"; Code[10])
  • +field(11316; "VAT Statement Name"; Code[10])
  • +field(11317; "Use Workdate for Appl./Unappl."; Boolean)
  • +field(11320; "Simplified Intrastat Decl."; Boolean)
  • +field(2000000; "Currency Euro"; Code[10])
  • Δfield(175; "Journal Templ. Name Mandatory"; Boolean)
table/23 "Vendor" +5
  • +field(11310; "Enterprise No."; Text[50])
  • +field(2000005; "Suggest Payments"; Boolean)
  • +local event OnBeforeValidateEnterpriseNo(var Vendor: Record Vendor; xVendor: Record Vendor; CurrFieldNo: Integer; var IsHandled: Boolean)
  • +procedure UpdateReferencedIds(var PrevVendor: Record Vendor)
  • +local procedure FormatEnterpriseNo(EnterpriseNo: Text; CountryCode: Code[10]): Text
table/256 "VAT Statement Line" +4, 1 changed
  • +field(11308; "Document Type"; Enum "VAT Stmt. Line Document Type")
  • +field(11309; "Print on Official VAT Form"; Boolean)
  • +field(11310; "Incl. Non Deductible VAT"; Boolean)
  • +procedure GetAdditionalReportingCurrencyCode(): Code[10]
  • Δfield(11; "Row Totaling"; Text[80])
table/270 "Bank Account" +3, 2 changed
  • +field(2000040; "Protocol No."; Text[3])
  • +field(2000041; "Version Code"; Text[1])
  • +field(2000043; "Interbank Clearing Code"; Option)
  • Δfield(13; "Bank Account No."; Text[30])
  • Δfield(110; "IBAN"; Code[50])
table/9 "Country/Region" +5
  • +field(2000000; "ISO Country/Region Code"; Code[2])
  • +field(2000001; "IBAN Country/Region"; Boolean)
  • +field(2000005; "SEPA Allowed"; Boolean)
  • +local event OnBeforeDetermineCountry(var CountryRegion: Record "Country/Region"; var IsHandled: Boolean; var Result: Boolean)
  • +procedure DetermineCountry(CountryCode: Code[10]): Boolean
codeunit/104059 "Serv. Upgrade BaseApp" 4 removed
  • −local procedure UpdateServiceEntries()
  • −local procedure UpdateServiceBlankEntries()
  • −procedure GetVATDateFieldServiceUpgrade(): Code[250]
  • −procedure GetVATDateFieldServiceBlankUpgrade(): Code[250]
codeunit/57 "Document Totals" +3, 1 removed
  • +local event OnPurchaseCalculateTotalsWithInvoiceRoundingOnAfterCalculateTotalPurchaseLineAndVATAmount(var TempPurchaseLine: Record "Purchase Line" temporary; var TempTotalPurchaseLine: Record "Purchase Line" temporary; var VATAmount: Decimal)
  • +local procedure CalculateTotalPurchaseLineAndVATAmount(PurchaseHeader: Record "Purchase Header"; var VATAmount: Decimal; var TempTotalPurchaseLine: Record "Purchase Line" temporary; var TempPurchaseLine: Record "Purchase Line" temporary)
  • +local procedure CalculateNonDeductibleVAT(var PurchaseLine: Record "Purchase Line"): Decimal
  • −local procedure CalculateTotalPurchaseLineAndVATAmount(PurchaseHeader: Record "Purchase Header"; var VATAmount: Decimal; var TempTotalPurchaseLine: Record "Purchase Line" temporary)
table/1381 "Customer Templ." +3, 1 changed
  • +field(11310; "Enterprise No."; Text[50])
  • +field(11311; "VAT Liable"; Boolean)
  • +field(2000020; "Domiciliation No."; Text[12])
  • Δfield(14; "Our Account No."; Text[20])
table/55 "Invoice Posting Buffer" +4
  • +field(11300; "Line No."; Integer)
  • +field(11303; "Non Deductible VAT Amt."; Decimal)
  • +field(11304; "Non Ded. VAT Amt. (ACY)"; Decimal)
  • +procedure SetNDAmounts(TotalNDAmount: Decimal; TotalNDAmountACY: Decimal)
table/81 "Gen. Journal Line" +4
  • +field(11310; "Enterprise No."; Text[50])
  • +field(11311; "Non Ded. VAT Amount"; Decimal)
  • +field(11312; "Non Ded. Source Curr. VAT Amt."; Decimal)
  • +procedure SetTestReport(NewTestReport: Boolean)
table/110 "Sales Shipment Header" +3
  • +field(11310; "Enterprise No."; Text[50])
  • +local event OnBeforeGetCustomerVATRegistrationNumber(var SalesShipmentHeader: Record "Sales Shipment Header"; var ReturnValue: Text; var IsHandled: Boolean)
  • +local event OnBeforeGetCustomerVATRegistrationNumberLbl(var SalesShipmentHeader: Record "Sales Shipment Header"; var ReturnValue: Text; var IsHandled: Boolean)
table/123 "Purch. Inv. Line" +3
  • +field(11305; "Non Deductible VAT %"; Decimal)
  • +procedure GetDeductibleVATAmount(): Decimal
  • +procedure GetNonDeductibleVATAmount(): Decimal
table/1383 "Vendor Templ." +2, 1 changed
  • +field(11310; "Enterprise No."; Text[50])
  • +field(2000005; "Suggest Payments"; Boolean)
  • Δfield(14; "Our Account No."; Text[20])
table/181 "Posted Gen. Journal Line" +3
  • +field(11310; "Enterprise No."; Text[50])
  • +field(11311; "Non Ded. VAT Amount"; Decimal)
  • +field(11312; "Non Ded. Source Curr. VAT Amt."; Decimal)
table/260 "Tariff Number" +3
  • +field(11315; "Conversion Factor"; Decimal)
  • +field(11316; "Unit of Measure"; Text[10])
  • +field(11317; "Weight Mandatory"; Boolean)
table/287 "Customer Bank Account" +1, 2 changed
  • +field(2000000; "Export Protocol Code"; Code[20])
  • Δfield(14; "Bank Account No."; Text[30])
  • Δfield(24; "IBAN"; Code[50])
table/288 "Vendor Bank Account" +1, 2 changed
  • +field(2000000; "Export Protocol Code"; Code[20])
  • Δfield(14; "Bank Account No."; Text[30])
  • Δfield(24; "IBAN"; Code[50])
table/6660 "Return Receipt Header" +3
  • +field(11310; "Enterprise No."; Text[50])
  • +local event OnBeforeGetCustomerVATRegistrationNumber(var ReturnReceiptHeader: Record "Return Receipt Header"; var ReturnValue: Text; var IsHandled: Boolean)
  • +local event OnBeforeGetCustomerVATRegistrationNumberLbl(var ReturnReceiptHeader: Record "Return Receipt Header"; var ReturnValue: Text; var IsHandled: Boolean)
codeunit/12 "Gen. Jnl.-Post Line" +1, 1 changed
  • +local procedure CheckAccountNo(GenJournalLine: Record "Gen. Journal Line")
  • Δprocedure UpdateGLEntryNo(var GLEntryNo: Integer; var SavedEntryNo: Integer)
codeunit/46 "SelectionFilterManagement" +2
  • +procedure GetSelectionFilterForBankAccount(var BankAccount: Record "Bank Account"): Text
  • +procedure GetSelectionFilterForEBPaymentJournal(var EBPaymentJournal: Record "Payment Journal Line"): Text
codeunit/90 "Purch.-Post" +2
  • +local event OnDivideAmountOnBeforeCalcVATBaseAmount(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var TempVATAmountLineRemainder: Record "VAT Amount Line" temporary; Currency: Record Currency; var IsHandled: Boolean)
  • +local event OnDivideAmountOnBeforeCalcPmtDiscountAmount(PurchaseHeader: Record "Purchase Header"; var PurchaseLine: Record "Purchase Line"; var TempVATAmountLine: Record "VAT Amount Line" temporary; var TempVATAmountLineRemainder: Record "VAT Amount Line" temporary; Currency: Record Currency; var IsHandled: Boolean)
page/161 "Purchase Statistics" +2
  • +local procedure FillNonDeductibleVATBuf(var PurchLine: Record "Purchase Line"; var TempNonDeductVATAmountLineBuffer: Record "VAT Amount Line" temporary)
  • +local procedure ApplyNonDeductVATToTotals(var TempNonDeductVATAmountLineBuffer: Record "VAT Amount Line" temporary)
page/400 "Purchase Invoice Statistics" +2
  • +local procedure FillVATAmountLineBuf(PurchInvLine: Record "Purch. Inv. Line"; var TempNonDeductVATAmountLine: Record "VAT Amount Line" temporary)
  • +local procedure ApplyNonDeductVATToTotals(var TempNonDeductVATAmountLine: Record "VAT Amount Line" temporary)
table/1207 "Direct Debit Collection" +2
  • +field(20000022; "Domiciliation Batch Name"; Code[20])
  • +procedure SetErrorLink(var GenJnlLine: Record "Gen. Journal Line")
table/125 "Purch. Cr. Memo Line" +2
  • +field(11305; "Non Deductible VAT %"; Decimal)
  • +procedure GetNonDeductibleVATAmount(): Decimal
table/15 "G/L Account" +2
  • +field(11300; "% Non deductible VAT"; Decimal)
  • +field(11301; "Print Details"; Boolean)
table/179 "Reversal Entry" +1, 1 removed
  • +local event OnBeforeCheckPostingDate(PostingDate: Date; Caption: Text[50]; EntryNo: Integer; JnlTemplName: Code[10]; var IsHandled: Boolean; var ReversalEntry: Record "Reversal Entry"; var MaxPostingDate: Date)
  • −local event OnBeforeCheckPostingDate(PostingDate: Date; Caption: Text[50]; EntryNo: Integer; var IsHandled: Boolean; var ReversalEntry: Record "Reversal Entry"; var MaxPostingDate: Date)
table/213 "Alt. Cust. VAT Reg." +2
  • +field(11300; "Enterprise No."; Text[50])
  • +local event OnBeforeValidateEnterpriseNo(var AltCustVATReg: Record "Alt. Cust. VAT Reg."; xAltCustVATReg: Record "Alt. Cust. VAT Reg."; CurrFieldNo: Integer; var IsHandled: Boolean)
table/242 "Source Code Setup" +2
  • +field(11307; "Financial Journal"; Code[10])
  • +field(2000020; "Domiciliation Journal"; Code[10])
table/262 "Intrastat Jnl. Batch" +2
  • +field(11300; "System 29 reported"; Boolean)
  • +field(11301; "System 19 reported"; Boolean)
table/36 "Sales Header" +2
  • +field(11310; "Enterprise No."; Text[50])
  • +field(11311; "Alt. Enterprise No."; Boolean)
codeunit/205 "Alt. Cust. VAT Reg. Doc. Impl." +1
  • +local procedure CopyVATRegNoOrEnterpriseNoFromCustToSalesHeader(var SalesHeader: Record "Sales Header"; Customer: Record Customer)
codeunit/5760 "Whse.-Post Receipt" +1
  • +procedure GetSourceJnlTemplate()
codeunit/816 "Purch. Post Invoice" +1
  • +local procedure InitTotalAmounts(PurchLine: Record "Purchase Line"; PurchLineACY: Record "Purchase Line"; var TotalVAT: Decimal; var TotalVATACY: Decimal; var TotalAmount: Decimal; var TotalAmountACY: Decimal; var TotalVATBase: Decimal; var TotalVATBaseACY: Decimal; var NonDeDuctibleVAT: Decimal; var NonDeDuctibleVATACY: Decimal)
page/371 "Bank Account List" +1
  • +procedure GetSelectionFilter(): Text
page/474 "VAT Statement Preview" +1
  • +local procedure RunReport(ReportID: Integer)
reportextension/6485 "Serv. Suggest Worksheet Lines" +1
  • +local procedure CalculateVATBaseAmtForServiceLine(ServiceHeader: Record "Service Header"; ServiceLine: Record "Service Line"): Decimal
table/10 "Shipment Method" +1
  • +field(11300; "Incoterm in Intrastat Decl."; Code[10])
table/111 "Sales Shipment Line" +1
  • +field(11302; "Pmt. Discount Amount"; Decimal)
table/112 "Sales Invoice Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/114 "Sales Cr.Memo Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/120 "Purch. Rcpt. Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/121 "Purch. Rcpt. Line" +1
  • +field(11302; "Pmt. Discount Amount"; Decimal)
table/122 "Purch. Inv. Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/124 "Purch. Cr. Memo Hdr." +1
  • +field(11310; "Enterprise No."; Text[50])
table/189 "VAT Setup" 1 changed
  • Δfield(2; "Enable Non-Deductible VAT"; Boolean)
table/258 "Transaction Type" 1 changed
  • Δfield(1; "Code"; Code[10])
table/259 "Transport Method" 1 changed
  • Δfield(1; "Code"; Code[10])
table/290 "VAT Amount Line" +1
  • +field(11301; "VAT Base (Lowered)"; Decimal)
table/295 "Reminder Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/297 "Issued Reminder Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/302 "Finance Charge Memo Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/304 "Issued Fin. Charge Memo Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/311 "Sales & Receivables Setup" +1
  • +field(11316; "Orders"; Boolean)
table/38 "Purchase Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/382 "CV Ledger Entry Buffer" +1
  • +field(11300; "Journal Template Name"; Code[10])
table/5050 "Contact" +1
  • +field(11310; "Enterprise No."; Text[50])
table/5107 "Sales Header Archive" +1
  • +field(11310; "Enterprise No."; Text[50])
table/5109 "Purchase Header Archive" +1
  • +field(11310; "Enterprise No."; Text[50])
table/6650 "Return Shipment Header" +1
  • +field(11310; "Enterprise No."; Text[50])
table/846 "Cash Flow Worksheet Line" +1
  • +field(11300; "VAT Base Amount"; Decimal)
xmlport/1010 "SEPA DD pain.008.001.02" +1
  • +local event OnBeforePassFieldEnterpriseNo(var EnterpriseNo: Text[50])
xmlport/1011 "SEPA DD pain.008.001.08" +1
  • +local event OnBeforePassFieldEnterpriseNo(var EnterpriseNo: Text[50])
enum/89 "Gen. Journal Template Type" body changes only
permissionset/1001 "LOCAL" body changes only
permissionset/1002 "LOCAL READ" body changes only

BC29 · country layer against W1 · Learn: local functionality · narrative reviewed (checked by Opus)

Overview

Belgium adds a large set of own objects on top of W1. Electronic banking (tables and codeunits in the 2000000 range) handles payment journals, export protocols, payment file reports and checks, domiciliation journals, and CODA import, application and posting. Learn documents these under Belgian Electronic Banking, Belgian electronic payments, Belgian CODA Bank Statements and Belgian Direct Debit Using Domiciliation.

For tax and statutory reporting, the country adds VAT reports (VAT form, annual listing, VAT-VIES disk, Intervat helper), manual VAT corrections, representatives, legal ledgers (sales, purchase, general, centralization, financial), a trial balance and the Link to Accon export. W1 tables get Enterprise No. fields, non-deductible VAT fields and Intrastat fields. Intrastat is implemented through extensions to the Intrastat report and tariff number import reports.

Other layers cover service documents (BE reports and header extensions), PEPPOL 3.0 validation and payment discount compensation, Shopify enterprise number mapping, journal template names made mandatory with upgrade tags, and cash flow VAT base amounts. The code also adds 18 events on W1 objects, for example in VAT Statement, Customer, Vendor and Country/Region.

Key points

  • Electronic banking: payment journals, export protocols, domestic, international, SEPA and non-Euro SEPA payment files, with check codeunits and error logs
  • CODA bank statements: import, application to ledger entries, financial journal transfer and posting; bank account fields Protocol No. and Version Code
  • Domiciliation direct debit: journals, suggestions, test and file reports; Customer fields Domiciliation No. and VAT Liable
  • Belgian VAT: VAT form and Intervat declaration, annual listing, VAT-VIES disk, manual VAT corrections, representatives
  • Non-deductible VAT: % Non deductible VAT on G/L Account, amounts on VAT Entry, purchase lines and posting buffers
  • Enterprise No. and Branch No. on Company Information, customers, vendors, contacts and document headers
  • Intrastat: simplified and extended declarations, tariff number setup and import, OneGate export, Intrastat Establishment No.
  • Legal reports: sales, purchase, general, centralization and financial ledgers, trial balance, Link to Accon export; PEPPOL 3.0 BE

Narrative written by Sonnet from the code diff and 38 Learn page summaries. In numbers: Belgium (BE) localization of Business Central in BC29: 129 objects of its own, 80 W1 objects changed (101 fields and 18 events added). From the code; country apps outside the Base Application are not included yet.

By area

Area W1 objects changed Own objects Fields added
Bank 5 55 4
Finance 21 27 38
Inventory 5 13 8
Purchases 17 1 16
Sales 16 2 20
Service 0 11 0
Peppol 0 10 0
Foundation 4 3 13
(no namespace) 0 5 0
CashFlow 3 0 1
Upgrade 3 0 0
Integration 0 2 0
Security 2 0 0
CRM 1 0 1
Text 1 0 0
Utilities 1 0 0
Warehouse 1 0 0

Bank

Adds the Belgian electronic banking stack: payment journal templates, batches and lines, export protocols, check codeunits for domestic, international, SEPA and non-Euro SEPA payments, and payment file reports. Also adds domiciliation journals and CODA statement import, application and posting. Bank Account gets Protocol No., Version Code and Interbank Clearing Code.

Why: Learn explains that the setup supports electronic payments, CODA statements and domiciliation direct debits, with export protocols defining the payment file formats.

Objects: table/2000001 “Payment Journal Line” (own), codeunit/2000000 “PmtJrnlManagement” (own), report/2000005 “File SEPA Payments” (own), report/2000030 “Import CODA Statement” (own), codeunit/2000040 “Coda Import Management” (own), table/2000040 “CODA Statement” (own), report/2000021 “File Domiciliations” (own), table/2000022 “Domiciliation Journal Line” (own).

All 60 objects of Bank in the diff

Finance

Adds Belgian VAT handling: VAT form, annual listing, VAT-VIES disk, VAT statement reports, manual VAT corrections and representatives. Also adds legal ledger reports and Link to Accon. W1 VAT Statement and VAT Entry gain non-deductible VAT and Enterprise No. fields, and G/L Entry gets application fields.

Why: Learn documents monthly or quarterly VAT declarations, annual listings, manual VAT corrections and general ledger entry application for Belgium.

Objects: report/11307 “VAT - Form” (own), report/11308 “VAT Annual Listing” (own), table/11301 “Manual VAT Correction” (own), report/12 “VAT Statement”, table/254 “VAT Entry”, table/256 “VAT Statement Line”, table/17 “G/L Entry”, report/11313 “Link to Accon” (own).

All 48 objects of Finance in the diff

Inventory

Implements Belgian Intrastat through Intrastat report extensions, tariff number import reports and fields on Tariff Number and Intrastat lines. Adds conversion factor, unit of measure and supplementary unit fields, plus batch flags for reporting systems.

Why: Learn describes simplified and extended declarations and export to the OneGate portal.

Objects: codeunit/11346 “IntrastatReportManagementBE” (own), table/260 “Tariff Number”, table/263 “Intrastat Jnl. Line”, pageextension/11346 “Intrastat Report BE” (own), report/11333 “Import Tariff Numbers Part 1” (own), report/11332 “Import Tariff Numbers Part 2” (own), tableextension/11346 “Intrastat Report Header BE” (own), table/262 “Intrastat Jnl. Batch”.

All 18 objects of Inventory in the diff

Purchases

Adds non-deductible VAT percentages and amount procedures on purchase lines and posted lines. Adds Enterprise No. on purchase headers and vendors, Suggest Payments on Vendor, an Export Protocol Code on vendor bank accounts, and the Purchase Ledger report.

Why: Learn explains vendor setup for automatic payment suggestions and non-deductible VAT for expense accounts.

Objects: table/39 “Purchase Line”, table/23 “Vendor”, table/123 “Purch. Inv. Line”, table/288 “Vendor Bank Account”, codeunit/90 “Purch.-Post”, report/11301 “Purchase Ledger” (own), table/38 “Purchase Header”, page/161 “Purchase Statistics”.

All 18 objects of Purchases in the diff

Sales

Adds Enterprise No. to sales documents, reminders and finance charge memos. Customer gets VAT Liable and Domiciliation No. PEPPOL Management gains payment discount compensation procedures, and the Sales Ledger report is added.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: table/18 “Customer”, table/36 “Sales Header”, codeunit/1605 “PEPPOL Management”, table/287 “Customer Bank Account”, report/11300 “Sales Ledger” (own), table/1381 “Customer Templ.”, codeunit/854 “Sales Post Invoice Events BE” (own), table/112 “Sales Invoice Header”.

All 18 objects of Sales in the diff

Service

Adds Belgian service invoice, credit memo, shipment and test reports, with table extensions on service headers and archive. Codeunits manage service lines and documents.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: report/11321 “Service - Invoice (BE)” (own), report/11322 “Service - Credit Memo (BE)” (own), report/11323 “Service - Shipment (BE)” (own), report/11325 “Service Document - Test (BE)” (own), codeunit/11309 “Service Line Mgt. BE” (own), codeunit/11350 “Serv. Document Mgt. BE” (own), tableextension/11300 “Service Header BE” (own).

All 11 objects of Service in the diff

Peppol

Adds PEPPOL 3.0 Belgian format support with validation for sales and service documents, tax, payment and monetary info, a discount (Escompte) codeunit, subscribers and an upgrade codeunit.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: codeunit/37312 “PEPPOL30 BE Initialize” (own), codeunit/37314 “PEPPOL30 BE Subscribers” (own), codeunit/37311 “PEPPOL30 BE Sales Validation” (own), codeunit/37310 “PEPPOL30 BE Service Validation” (own), codeunit/37315 “PEPPOL30 BE Tax Info” (own), codeunit/37316 “PEPPOL30 BE Escompte” (own), codeunit/37318 “PEPPOL30 BE Monetary Info” (own), enumextension/37310 “PEPPOL 3.0 Format BE” (own).

All 10 objects of Peppol in the diff

Foundation

Adds Belgian company identifiers to Company Information: enterprise and branch numbers, Intrastat establishment number and XML sequence numbers. Country/Region gets ISO, IBAN and SEPA fields, and Source Code Setup gets financial and domiciliation journal codes.

Why: Learn describes enterprise numbers issued by the Crossroads Bank for Enterprises and the Intrastat establishment number.

Objects: table/79 “Company Information”, table/9 “Country/Region”, table/242 “Source Code Setup”, tableextension/11307 “SourceCodeSetupBE” (own), pageextension/11307 “SourceCodeSetupBE” (own), table/10 “Shipment Method”, codeunit/11311 “Serv. Report Selection Mgt. BE” (own).

All 7 objects of Foundation in the diff

(no namespace)

Holds the Transaction Coding table and page used with CODA, plus a copy-invoice-number-to-payment-reference codeunit and ISO code upgrade plumbing.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: table/2000043 “Transaction Coding” (own), page/2000045 “Transaction Coding” (own), codeunit/104153 “Copy Inv. No. To Pmt. Ref” (own).

All 5 objects of (no namespace) in the diff

CashFlow

Cash flow suggestions compute a VAT base amount for sales, purchase and service lines and ledger entries. Cash Flow Worksheet Line gets a VAT Base Amount field.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: report/840 “Suggest Worksheet Lines”, table/846 “Cash Flow Worksheet Line”, reportextension/6485 “Serv. Suggest Worksheet Lines”.

All 3 objects of CashFlow in the diff

Integration

Shopify integration maps the Belgian enterprise number as company tax ID through an enum extension and a codeunit.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: codeunit/30461 “Shpfy Enterprise No. BE” (own), enumextension/30461 “Shpfy Comp. Tax Id Mapping BE” (own).

All 2 objects of Integration in the diff

Security

Changes the LOCAL and LOCAL READ permission sets to include Belgian objects.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: permissionset/1001 “LOCAL”, permissionset/1002 “LOCAL READ”.

All 2 objects of Security in the diff

CRM

Contact gets an Enterprise No. field.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: table/5050 “Contact”.

All 1 objects of CRM in the diff

Text

Selection filter helpers gain procedures for bank accounts and EB payment journals.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: codeunit/46 “SelectionFilterManagement”.

All 1 objects of Text in the diff

Utilities

Document Totals gains procedures and an event to calculate non-deductible VAT in purchase totals.

Why: not explained by a Learn page in the input; the code shows the change, not the requirement.

Objects: codeunit/57 “Document Totals”.

All 1 objects of Utilities in the diff

Warehouse

Whse.-Post Receipt gets a procedure to get the source journal template, supporting mandatory journal template names.

Why: Learn describes making journal templates mandatory in the Belgian version.

Objects: codeunit/5760 “Whse.-Post Receipt”.

All 1 objects of Warehouse in the diff

Objects of its own

129 objects only this country has.

Other versions

  • BC28: 184 objects differ from W1 (101 fields, 18 events added)
  • BC30: 209 objects differ from W1 (101 fields, 18 events added)

Source: country layer of the Base Application compared with W1 of the same version (data/code/diffs/country/).