localization · BC29official - Microsoftreviewed - checked by Opus

Norway (NO)

Norway (NO) localization of Business Central 29. Covers Norwegian VAT codes, proportional VAT, electronic VAT returns and SAF-T export, remittance and OCR/KID electronic banking, EHF and PEPPOL e-invoicing, recurring orders and payroll import. Answers where Norway extends W1 tables, codeunits and reports.

What NO changes in W1 75 objects, BC29

table/112 "Sales Invoice Header" +4, 35 removed
  • +field(10605; "GLN"; Code[13])
  • +field(10606; "Account Code"; Text[30])
  • +field(10612; "E-Invoice Created"; Boolean)
  • +field(10613; "E-Invoice"; Boolean)
  • −local event OnBeforeCheckNoPrinted(var SalesInvoiceHeader: Record "Sales Invoice Header"; var IsHandled: Boolean)
  • −local event OnBeforeEmailRecords(var ReportSelections: Record "Report Selections"; var SalesInvoiceHeader: Record "Sales Invoice Header"; DocTxt: Text; var ShowDialog: Boolean; var IsHandled: Boolean)
  • −local event OnBeforePrintRecords(var ReportSelections: Record "Report Selections"; var SalesInvoiceHeader: Record "Sales Invoice Header"; ShowRequestPage: Boolean; var IsHandled: Boolean)
  • −local event OnBeforeDoPrintToDocumentAttachment(var SalesInvoiceHeader: Record "Sales Invoice Header"; var ShowNotificationAction: Boolean; var IsHandled: Boolean)
  • −local event OnBeforeSendProfile(var ReportSelections: Record "Report Selections"; var SalesInvoiceHeader: Record "Sales Invoice Header"; DocTxt: Text; var IsHandled: Boolean; var DocumentSendingProfile: Record "Document Sending Profile")
  • −local event OnBeforeSendRecords(var ReportSelections: Record "Report Selections"; var SalesInvoiceHeader: Record "Sales Invoice Header"; DocTxt: Text; var IsHandled: Boolean)
  • −local event OnBeforeShowCanceledOrCorrCrMemo(var SalesInvoiceHeader: Record "Sales Invoice Header"; var IsHandled: Boolean)
  • −local event OnBeforeShowCorrectiveCreditMemo(var SalesInvoiceHeader: Record "Sales Invoice Header"; var IsHandled: Boolean)
  • −local event OnBeforeShowCancelledCreditMemo(var SalesInvoiceHeader: Record "Sales Invoice Header"; var IsHandled: Boolean)
  • −local event OnBeforeSetSecurityFilterOnRespCenter(var SalesInvoiceHeader: Record "Sales Invoice Header"; var IsHandled: Boolean)
  • −local event OnGetPaymentReference(var PaymentReference: Text)
  • −local event OnGetPaymentReferenceLbl(var PaymentReferenceLbl: Text)
  • −local event OnLookupAppliesToDocNoOnAfterSetFilters(var CustLedgEntry: Record "Cust. Ledger Entry"; SalesInvoiceHeader: Record "Sales Invoice Header")
  • −local event OnPostedSalesInvoiceFullyOpen(var SalesInvoiceHeader: Record "Sales Invoice Header"; var FullyOpen: Boolean; var IsHandled: Boolean)
  • −local event OnBeforeGetWorkDescription(var SalesInvoiceHeader: Record "Sales Invoice Header")
  • −procedure GetCustomerGlobalLocationNumber(): Text
  • −procedure GetCustomerGlobalLocationNumberLbl(): Text
  • −procedure GetSellToCustomerFaxNo(): Text
  • −procedure GetPaymentReference(): Text
  • −procedure GetPaymentReferenceLbl(): Text
  • −procedure GetLegalStatement(): Text
  • −procedure GetRemainingAmount(): Decimal
  • −procedure ShowDimensions()
  • −procedure SetSecurityFilterOnRespCenter()
  • −procedure GetDocExchStatusStyle(): Text
  • −procedure ShowActivityLog()
  • −procedure StartTrackingSite()
  • −procedure GetSelectedPaymentsText(): Text
  • −procedure GetWorkDescription(): Text
  • −procedure GetCurrencySymbol(): Text[10]
  • −procedure DocExchangeStatusIsSent(): Boolean
  • −procedure ShowCanceledOrCorrCrMemo()
  • −procedure ShowCorrectiveCreditMemo()
  • −procedure ShowCancelledCreditMemo()
  • −procedure GetDefaultEmailDocumentName(): Text[150]
table/23 "Vendor" +33, 2 changed
  • +field(15000000; "Remittance"; Boolean)
  • +field(15000001; "Remittance Account Code"; Code[10])
  • +field(15000002; "Recipient Bank Account No."; Code[35])
  • +field(15000003; "Remittance Agreement Code"; Code[10])
  • +field(15000004; "BOLS Text Code"; Option)
  • +field(15000005; "Recipient ref. 1 - inv."; Code[40])
  • +field(15000006; "Recipient ref. 2 - inv."; Code[40])
  • +field(15000007; "Recipient ref. 3 - inv."; Code[40])
  • +field(15000008; "Recipient ref. 1 - cred."; Code[40])
  • +field(15000009; "Recipient ref. 2 - cred."; Code[40])
  • +field(15000010; "Recipient ref. 3 - cred."; Code[40])
  • +field(15000011; "Payment Type Code Domestic"; Code[2])
  • +field(15000012; "Charges Domestic"; Option)
  • +field(15000013; "Warning Notice"; Option)
  • +field(15000014; "Warning Text"; Code[25])
  • +field(15000015; "SWIFT"; Code[11])
  • +field(15000016; "Bank Name"; Code[35])
  • +field(15000017; "Bank Address 1"; Code[35])
  • +field(15000018; "Bank Address 2"; Code[35])
  • +field(15000019; "Bank Address 3"; Code[35])
  • +field(15000020; "SWIFT Remb. Bank"; Code[11])
  • +field(15000021; "Rcpt. Bank Country/Region Code"; Code[2])
  • +field(15000022; "Recipient Confirmation"; Option)
  • +field(15000023; "Telex Country/Region Code"; Code[2])
  • +field(15000024; "Telex/Fax No."; Text[18])
  • +field(15000025; "Recipient Contact"; Text[20])
  • +field(15000026; "Recipient Ref. Abroad"; Code[35])
  • +field(15000027; "Payment Type Code Abroad"; Code[2])
  • +field(15000028; "Specification (Norges Bank)"; Code[60])
  • +field(15000029; "To Own Account"; Boolean)
  • +field(15000030; "Charges Abroad"; Option)
  • +field(15000031; "Own Vendor Recipient Ref."; Boolean)
  • +key(Key16; "SystemModifiedAt")
  • Δkey(Key14; "Remittance", "No.")
  • Δkey(Key15; "Blocked")
table/81 "Gen. Journal Line" +34
  • +field(10604; "VAT Code"; Code[10])
  • +field(10605; "Bal. VAT Code"; Code[10])
  • +field(10608; "VAT Base Amount Type"; Option)
  • +field(10610; "VAT Number"; Code[20])
  • +field(10611; "Bal. VAT Number"; Code[20])
  • +field(15000000; "Remittance Account Code"; Code[10])
  • +field(15000001; "BOLS Text Code"; Option)
  • +field(15000002; "Payment Type Code Domestic"; Code[2])
  • +field(15000003; "KID"; Code[30])
  • +field(15000004; "Recipient Ref. 1"; Code[80])
  • +field(15000005; "Recipient Ref. 2"; Code[80])
  • +field(15000006; "Recipient Ref. 3"; Code[80])
  • +field(15000007; "Urgent"; Boolean)
  • +field(15000008; "Agreed Exch. Rate"; Decimal)
  • +field(15000009; "Agreed With"; Code[6])
  • +field(15000010; "Futures Contract No."; Code[6])
  • +field(15000011; "Futures Contract Exch. Rate"; Decimal)
  • +field(15000012; "Check"; Option)
  • +field(15000013; "Recipient Ref. Abroad"; Code[35])
  • +field(15000014; "Payment Type Code Abroad"; Code[2])
  • +field(15000015; "Specification (Norges Bank)"; Code[60])
  • +field(15000016; "Remittance Type"; Option)
  • +field(15000017; "Payment Due Date"; Date)
  • +field(15000018; "Remittance Agreement Code"; Code[10])
  • +field(15000019; "Remittance Warning"; Boolean)
  • +field(15000020; "Remittance Warning Text"; Text[100])
  • +field(15000025; "Waiting Journal Reference"; Integer)
  • +field(15000027; "Remittance Handling Ref."; Text[6])
  • +field(15000037; "Execution Ref. 2"; Text[12])
  • +field(15000040; "Structured Payment"; Boolean)
  • +field(15000041; "Our Account No."; Text[20])
  • +field(15000100; "Warning"; Boolean)
  • +field(15000101; "Warning text"; Text[100])
  • +procedure SetStructuredPayment()
table/1383 "Vendor Templ." +32, 1 changed
  • +field(15000000; "Remittance"; Boolean)
  • +field(15000001; "Remittance Account Code"; Code[10])
  • +field(15000002; "Recipient Bank Account No."; Code[35])
  • +field(15000003; "Remittance Agreement Code"; Code[10])
  • +field(15000004; "BOLS Text Code"; Option)
  • +field(15000005; "Recipient ref. 1 - inv."; Code[40])
  • +field(15000006; "Recipient ref. 2 - inv."; Code[40])
  • +field(15000007; "Recipient ref. 3 - inv."; Code[40])
  • +field(15000008; "Recipient ref. 1 - cred."; Code[40])
  • +field(15000009; "Recipient ref. 2 - cred."; Code[40])
  • +field(15000010; "Recipient ref. 3 - cred."; Code[40])
  • +field(15000011; "Payment Type Code Domestic"; Code[2])
  • +field(15000012; "Charges Domestic"; Option)
  • +field(15000013; "Warning Notice"; Option)
  • +field(15000014; "Warning Text"; Code[25])
  • +field(15000015; "SWIFT"; Code[11])
  • +field(15000016; "Bank Name"; Code[35])
  • +field(15000017; "Bank Address 1"; Code[35])
  • +field(15000018; "Bank Address 2"; Code[35])
  • +field(15000019; "Bank Address 3"; Code[35])
  • +field(15000020; "SWIFT Remb. Bank"; Code[11])
  • +field(15000021; "Rcpt. Bank Country/Region Code"; Code[2])
  • +field(15000022; "Recipient Confirmation"; Option)
  • +field(15000023; "Telex Country/Region Code"; Code[2])
  • +field(15000024; "Telex/Fax No."; Text[18])
  • +field(15000025; "Recipient Contact"; Text[20])
  • +field(15000026; "Recipient Ref. Abroad"; Code[35])
  • +field(15000027; "Payment Type Code Abroad"; Code[2])
  • +field(15000028; "Specification (Norges Bank)"; Code[60])
  • +field(15000029; "To Own Account"; Boolean)
  • +field(15000030; "Charges Abroad"; Option)
  • +field(15000031; "Own Vendor Recipient Ref."; Boolean)
  • Δfield(14; "Our Account No."; Text[20])
table/181 "Posted Gen. Journal Line" +33
  • +field(10604; "VAT Code"; Code[10])
  • +field(10605; "Bal. VAT Code"; Code[10])
  • +field(10608; "VAT Base Amount Type"; Option)
  • +field(10610; "VAT Number"; Code[20])
  • +field(10611; "Bal. VAT Number"; Code[20])
  • +field(15000000; "Remittance Account Code"; Code[10])
  • +field(15000001; "BOLS Text Code"; Option)
  • +field(15000002; "Payment Type Code Domestic"; Code[2])
  • +field(15000003; "KID"; Code[30])
  • +field(15000004; "Recipient Ref. 1"; Code[80])
  • +field(15000005; "Recipient Ref. 2"; Code[80])
  • +field(15000006; "Recipient Ref. 3"; Code[80])
  • +field(15000007; "Urgent"; Boolean)
  • +field(15000008; "Agreed Exch. Rate"; Decimal)
  • +field(15000009; "Agreed With"; Code[6])
  • +field(15000010; "Futures Contract No."; Code[6])
  • +field(15000011; "Futures Contract Exch. Rate"; Decimal)
  • +field(15000012; "Check"; Option)
  • +field(15000013; "Recipient Ref. Abroad"; Code[35])
  • +field(15000014; "Payment Type Code Abroad"; Code[2])
  • +field(15000015; "Specification (Norges Bank)"; Code[60])
  • +field(15000016; "Remittance Type"; Option)
  • +field(15000017; "Payment Due Date"; Date)
  • +field(15000018; "Remittance Agreement Code"; Code[10])
  • +field(15000019; "Remittance Warning"; Boolean)
  • +field(15000020; "Remittance Warning Text"; Text[100])
  • +field(15000025; "Waiting Journal Reference"; Integer)
  • +field(15000027; "Remittance Handling Ref."; Text[6])
  • +field(15000037; "Execution Ref. 2"; Text[12])
  • +field(15000040; "Structured Payment"; Boolean)
  • +field(15000041; "Our Account No."; Text[20])
  • +field(15000100; "Warning"; Boolean)
  • +field(15000101; "Warning text"; Text[100])
codeunit/1605 "PEPPOL Management" +12, 1 removed
  • +local event OnAfterGetPaymentMeansInfo(SalesHeader: Record "Sales Header"; var PaymentMeansCode: Text; var PaymentChannelCode: Text; var PaymentID: Text; var PrimaryAccountNumberID: Text; var NetworkID: Text)
  • +procedure GetAccountingSupplierPartyTaxSchemeNO(var CompanyID: Text; var CompanyIDSchemeID: Text; var TaxSchemeID: Text)
  • +procedure GetPaymentMeansInfoReminder(SalesHeader: Record "Sales Header"; var PaymentMeansCode: Text; var PaymentChannelCode: Text; var PaymentID: Text; var PrimaryAccountNumberID: Text; var NetworkID: Text)
  • +procedure GetAllowanceChargeInfoReminder(VATAmtLine: Record "VAT Amount Line"; SalesHeader: Record "Sales Header"; var ChargeIndicator: Text; var AllowanceChargeReasonCode: Text; var AllowanceChargeReason: Text; var Amount: Text; var AllowanceChargeCurrencyID: Text; var TaxCategoryID: Text; var TaxCategorySchemeID: Text; var Percent: Text; var AllowanceChargeTaxSchemeID: Text)
  • +procedure CopyIssuedFinCharge(var TempSalesHeader: Record "Sales Header" temporary; var TempSalesLine: Record "Sales Line" temporary; var TempSalesLineInvRounding: Record "Sales Line" temporary; FinChargeNo: Code[20])
  • +procedure CopyIssuedReminder(var TempSalesHeader: Record "Sales Header" temporary; var TempSalesLine: Record "Sales Line" temporary; var TempSalesLineInvRounding: Record "Sales Line" temporary; ReminderNo: Code[20])
  • +procedure CopyFinCharge(var TempSalesHeader: Record "Sales Header" temporary; var TempSalesLine: Record "Sales Line" temporary; FinChargeNo: Code[20])
  • +procedure CopyReminder(var TempSalesHeader: Record "Sales Header" temporary; var TempSalesLine: Record "Sales Line" temporary; ReminderNo: Code[20])
  • +local procedure ReminderHeaderToSalesHeader(var TempSalesHeader: Record "Sales Header" temporary; IssuedReminderHeader: Record "Issued Reminder Header"; GiroKIDDocType: Integer)
  • +local procedure ReminderLineToSalesLine(var TempSalesLine: Record "Sales Line" temporary; var TempSalesLineInvRounding: Record "Sales Line" temporary; IssuedReminderHeader: Record "Issued Reminder Header"; IssuedReminderLine: Record "Issued Reminder Line")
  • +procedure GetBillingReferenceInfo(var TempSalesLine: Record "Sales Line" temporary; var InvoiceDocRefID: Text)
  • +procedure GetReminderLineNote(SalesLine: Record "Sales Line"): Text
  • −local event OnAfterGetPaymentMeansInfo(SalesHeader: Record "Sales Header"; var PaymentMeansCode: Text; var PaymentMeansListID: Text; var PaymentDueDate: Text; var PaymentChannelCode: Text; var PaymentID: Text; var PrimaryAccountNumberID: Text; var NetworkID: Text)
table/325 "VAT Posting Setup" +9, 2 changed
  • +field(6201; "Non-Ded. Sales VAT Account"; Code[20])
  • +field(10604; "Calc. Prop. Deduction VAT"; Boolean)
  • +field(10605; "Proportional Deduction VAT %"; Decimal)
  • +field(10606; "VAT Code"; Code[10])
  • +field(10607; "VAT Number"; Code[20])
  • +field(10608; "VAT Settlement Rate"; Option)
  • +field(10609; "Sales VAT Reporting Code"; Code[10])
  • +field(10610; "Purchase VAT Reporting Code"; Code[10])
  • +key(Key4; "VAT Number")
  • Δfield(25; "Sale VAT Reporting Code"; Code[20])
  • Δfield(26; "Purch. VAT Reporting Code"; Code[20])
table/311 "Sales & Receivables Setup" +10
  • +field(10600; "Print Receipt on Giro"; Boolean)
  • +field(10603; "KID Setup"; Option)
  • +field(10604; "Document No. length"; Integer)
  • +field(10605; "Customer No. length"; Integer)
  • +field(10606; "Use KID on Fin. Charge Memo"; Boolean)
  • +field(10607; "Use KID on Reminder"; Boolean)
  • +field(10608; "E-Invoice Sales Invoice Path"; Text[250])
  • +field(10609; "E-Invoice Sales Cr. Memo Path"; Text[250])
  • +field(10610; "E-Invoice Reminder Path"; Text[250])
  • +field(10611; "E-Invoice Fin. Charge Path"; Text[250])
table/344 "VAT Reporting Code" +7
  • +field(10600; "Gen. Posting Type"; Option)
  • +field(10601; "Test Gen. Posting Type"; Option)
  • +field(10610; "Trade Settlement 2017 Box No."; Option)
  • +field(10611; "Reverse Charge Report Box No."; Option)
  • +field(10620; "VAT Specification Code"; Code[50])
  • +field(10621; "VAT Note Code"; Code[50])
  • +field(10622; "SAF-T VAT Code"; Code[20])
codeunit/12 "Gen. Jnl.-Post Line" +6
  • +local procedure GLEntryCalcPropDeduction(GenJnlLine: Record "Gen. Journal Line"; GLEntry: Record "G/L Entry"; VATPostingSetup: Record "VAT Posting Setup")
  • +local procedure GLEntryAdjustPurchase(var GLEntry: Record "G/L Entry"; GenJnlLine: Record "Gen. Journal Line"; VATPostingSetup: Record "VAT Posting Setup")
  • +local procedure VATEntryAdjustForPropDeduction(GenJnlLine: Record "Gen. Journal Line"; VATPostingSetup: Record "VAT Posting Setup")
  • +local procedure IsPropDeduction(Amount: Decimal; GenJnlLine: Record "Gen. Journal Line"; VATPostingSetup: Record "VAT Posting Setup"): Boolean
  • +procedure GetReverseChargeVATAmount(Amount: Decimal; PropDeductionAmount: Decimal; UnrealizedVAT: Boolean): Decimal
  • +procedure GetReverseChargeVATAmountACY(AmountACY: Decimal; PropDeductionAmountACY: Decimal; UnrealizedVAT: Boolean): Decimal
codeunit/1221 "SEPA CT-Fill Export Buffer" +6
  • +local event OnAfterUpdateGenJnlFields(var PaymentExportData: Record "Payment Export Data"; GenJournalLine: Record "Gen. Journal Line")
  • +local event OnBeforeUpdateGenJnlFields(var PaymentExportData: Record "Payment Export Data"; GenJournalLine: Record "Gen. Journal Line")
  • +procedure MoveToWaitingJournal(GenJournalLine: Record "Gen. Journal Line"; MsgId: Code[20]; PaymentInfId: Code[20]; InstrId: Code[20]; EndToEndId: Code[20])
  • +local procedure NextWaitingJournalRef(): Integer
  • +procedure CreatePaymOrderHead()
  • +local procedure UpdateGenJnlFields(var PaymentExportData: Record "Payment Export Data"; GenJournalLine: Record "Gen. Journal Line"; RegRepThreshAmt: Decimal)
codeunit/392 "Reminder-Make" +3, 3 removed
  • +local procedure InsertReminderLine(ReminderNo: Code[20]; LineType: Enum "Reminder Line Type"; Description: Text[100]; var NextLineNo: Integer)
  • +local procedure InitReminderLine(var ReminderLine: Record "Reminder Line"; ReminderNo: Code[20]; LineType: Enum "Reminder Line Type"; Description: Text[100]; var NextLineNo: Integer)
  • +local procedure GetLastLineNo(ReminderNo: Code[20]): Integer
  • −local procedure InsertReminderLine(ReminderNo: Code[50]; LineType: Enum "Reminder Line Type"; Description: Text[100]; var NextLineNo: Integer)
  • −local procedure InitReminderLine(var ReminderLine: Record "Reminder Line"; ReminderNo: Code[50]; LineType: Enum "Reminder Line Type"; Description: Text[100]; var NextLineNo: Integer)
  • −local procedure GetLastLineNo(ReminderNo: Code[50]): Integer
report/3 "G/L Register" 6 removed
  • −local procedure DetailsPrinted(PurchInvLine: Record "Purch. Inv. Line"): Boolean
  • −local procedure PopulateRecFromPurchInvLine(PurchInvLine: Record "Purch. Inv. Line"; CurrancyFactor: Decimal; PricesInclVAT: Boolean)
  • −local procedure PopulateRecFromPurchCrMemoLine(PurchCrMemoLine: Record "Purch. Cr. Memo Line"; CurrancyFactor: Decimal; PricesInclVAT: Boolean)
  • −local procedure PopulateRecFromSalesInvoiceLine(SalesInvoiceLine: Record "Sales Invoice Line"; CurrancyFactor: Decimal; PricesInclVAT: Boolean)
  • −local procedure PopulateRecFromSalesCrMemoLine(SalesCrMemoLine: Record "Sales Cr.Memo Line"; CurrancyFactor: Decimal; PricesInclVAT: Boolean)
  • −local procedure SetCurrancyFactor(HeaderCurrancyFactor: Decimal): Decimal
table/79 "Company Information" +3, 3 changed
  • +field(43; "IC Inbox Details"; Text[250])
  • +field(10601; "Enterpriseregister"; Boolean)
  • +procedure GetEnterpriseClassification(): Text[50]
  • Δfield(11; "Giro No."; Text[20])
  • Δfield(14; "Bank Account No."; Text[30])
  • Δfield(38; "IBAN"; Code[50])
table/114 "Sales Cr.Memo Header" +5
  • +field(10605; "GLN"; Code[13])
  • +field(10606; "Account Code"; Text[30])
  • +field(10612; "E-Invoice Created"; Boolean)
  • +field(10613; "E-Invoice"; Boolean)
  • +procedure AccountCodeLineSpecified(): Boolean
table/1226 "Payment Export Data" +4, 1 changed
  • +field(10601; "Reg.Rep. Thresh.Amt Exceeded"; Boolean)
  • +field(15000000; "Urgent"; Boolean)
  • +field(15000001; "KID"; Code[30])
  • +field(15000002; "External Document No."; Code[35])
  • Δfield(31; "Sender Bank Account No."; Text[50])
table/295 "Reminder Header" +5
  • +field(10605; "GLN"; Code[13])
  • +field(10606; "Account Code"; Text[30])
  • +field(10613; "E-Invoice"; Boolean)
  • +procedure ReminderLinesExist(): Boolean
  • +procedure UpdateReminderLines(ChangedFieldName: Text[100])
table/297 "Issued Reminder Header" +5
  • +field(10605; "GLN"; Code[13])
  • +field(10606; "Account Code"; Text[30])
  • +field(10612; "E-Invoice Created"; Boolean)
  • +field(10613; "E-Invoice"; Boolean)
  • +procedure AccountCodeLineSpecified(): Boolean
table/302 "Finance Charge Memo Header" +5
  • +field(10605; "GLN"; Code[13])
  • +field(10606; "Account Code"; Text[30])
  • +field(10613; "E-Invoice"; Boolean)
  • +procedure FinChrgLinesExist(): Boolean
  • +procedure UpdateFinChrgLines(ChangedFieldName: Text[100])
table/304 "Issued Fin. Charge Memo Header" +5
  • +field(10605; "GLN"; Code[13])
  • +field(10606; "Account Code"; Text[30])
  • +field(10612; "E-Invoice Created"; Boolean)
  • +field(10613; "E-Invoice"; Boolean)
  • +procedure AccountCodeLineSpecified(): Boolean
table/36 "Sales Header" +5
  • +field(10605; "GLN"; Code[13])
  • +field(10606; "Account Code"; Text[30])
  • +field(10613; "E-Invoice"; Boolean)
  • +field(15000300; "Recurring Group Code"; Code[10])
  • +field(15000301; "Deactivate recurrence"; Boolean)
codeunit/229 "Document-Print" +2, 2 removed
  • +procedure PrintSalesOrder(SalesHeader: Record "Sales Header"; Usage: Option "Order Confirmation","Work Order","Pick Instruction","Sales Order Picking List")
  • +procedure GetSalesOrderUsage(Usage: Option "Order Confirmation","Work Order","Pick Instruction","Sales Order Picking List"): Enum "Report Selection Usage"
  • −procedure PrintSalesOrder(SalesHeader: Record "Sales Header"; Usage: Option "Order Confirmation","Work Order","Pick Instruction")
  • −procedure GetSalesOrderUsage(Usage: Option "Order Confirmation","Work Order","Pick Instruction"): Enum "Report Selection Usage"
report/12 "VAT Statement" +3, 1 removed
  • +procedure CalcLineTotalWithNonDeductiblePart(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; var TotalBase: Decimal; var TotalNDAmount: Decimal; var TotalNDBase: Decimal; Level: Integer): Boolean
  • +local procedure CalcTotalAmount(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; var TotalBase: Decimal; var TotalNDAmount: Decimal; var TotalNDBase: Decimal)
  • +local procedure CalcNonDeductibleVAT(var VATBase: Decimal; var VATAmount: Decimal; var NDVATBase: Decimal; var NDVATAmount: Decimal; VATStmtLine: Record "VAT Statement Line")
  • −local procedure CalcTotalAmount(VATStmtLine2: Record "VAT Statement Line"; var TotalAmount: Decimal; var TotalBase: Decimal)
table/25 "Vendor Ledger Entry" +4
  • +field(15000000; "Remittance ID"; Integer)
  • +field(15000001; "KID"; Code[30])
  • +field(15000014; "Payment Type Code Abroad"; Code[2])
  • +field(15000015; "Specification (Norges Bank)"; Code[60])
xmlport/1000 "SEPA CT pain.001.001.03" +1, 1 changed, 2 removed
  • +local procedure InitPmtGroup(var PaymentGroupNo: Integer)
  • Δlocal event OnSpecifyRemittanceTextSeparatorText(var SeparatorText: Text)
  • −local procedure InitPmtGroup()
  • −local procedure InsertPmtGroup(var PaymentGroupNo: Integer)
xmlport/1001 "SEPA CT pain.001.001.09" +1, 1 changed, 2 removed
  • +local procedure InitPmtGroup(var PaymentGroupNo: Integer)
  • Δlocal event OnSpecifyRemittanceTextSeparatorText(var SeparatorText: Text)
  • −local procedure InitPmtGroup()
  • −local procedure InsertPmtGroup(var PaymentGroupNo: Integer)
codeunit/1620 "PEPPOL Validation" +3
  • +procedure CheckReminder(ReminderNo: Code[20])
  • +procedure CheckFinChargeMemo(FinChargeMemoNo: Code[20])
  • +local procedure CheckReminderDocument(SalesHeader: Record "Sales Header"; var SalesLine: Record "Sales Line")
table/113 "Sales Invoice Line" +3
  • +field(10604; "VAT Code"; Code[10])
  • +field(10605; "Account Code"; Text[30])
  • +field(10610; "VAT Number"; Code[20])
table/115 "Sales Cr.Memo Line" +3
  • +field(10604; "VAT Code"; Code[10])
  • +field(10605; "Account Code"; Text[30])
  • +field(10610; "VAT Number"; Code[20])
table/1381 "Customer Templ." +2, 1 changed
  • +field(10601; "Account Code"; Text[30])
  • +field(10602; "E-Invoice"; Boolean)
  • Δfield(14; "Our Account No."; Text[20])
table/254 "VAT Entry" +3
  • +field(10606; "Base Amount Type"; Option)
  • +field(10607; "VAT Code"; Code[10])
  • +field(10610; "VAT Number"; Code[20])
table/37 "Sales Line" +3
  • +field(10604; "VAT Code"; Code[10])
  • +field(10605; "Account Code"; Text[30])
  • +field(10610; "VAT Number"; Code[20])
table/38 "Purchase Header" +3
  • +field(15000000; "KID"; Code[30])
  • +field(15000014; "Payment Type Code Abroad"; Code[2])
  • +field(15000015; "Specification (Norges Bank)"; Code[60])
table/5107 "Sales Header Archive" +3
  • +field(10605; "GLN"; Code[13])
  • +field(10606; "Account Code"; Text[30])
  • +field(10613; "E-Invoice"; Boolean)
codeunit/104000 "Upgrade - BaseApp" 2 removed
  • −local procedure UpgradePowerBiReportUploads()
  • −local procedure UpgradeVATSetup()
codeunit/2 "Company-Initialize" +2
  • +procedure GetNorgeSEPACT09Code(): Code[20]
  • +procedure GetNorgeSEPACT09Name(): Text[100]
page/42 "Sales Order" +2
  • +local procedure AccountCodeOnAfterValidate()
  • +local procedure CustomerUsesEInvoicing(CustomerNo: Code[20]): Boolean
page/44 "Sales Credit Memo" +2
  • +local procedure AccountCodeOnAfterValidate()
  • +local procedure CustomerUsesEInvoicing(CustomerNo: Code[20]): Boolean
page/6630 "Sales Return Order" +2
  • +local procedure AccountCodeOnAfterValidate()
  • +local procedure CustomerUsesEInvoicing(CustomerNo: Code[20]): Boolean
table/123 "Purch. Inv. Line" +2
  • +field(10604; "VAT Code"; Code[10])
  • +field(10610; "VAT Number"; Code[20])
table/125 "Purch. Cr. Memo Line" +2
  • +field(10604; "VAT Code"; Code[10])
  • +field(10610; "VAT Number"; Code[20])
table/15 "G/L Account" +2
  • +field(10601; "VAT Code"; Code[10])
  • +field(10610; "VAT Number"; Code[20])
table/18 "Customer" +2
  • +field(10601; "Account Code"; Text[30])
  • +field(10602; "E-Invoice"; Boolean)
table/256 "VAT Statement Line" +2
  • +field(10600; "VAT Code"; Code[10])
  • +field(10601; "Incl. Non Deductible VAT"; Boolean)
table/39 "Purchase Line" +2
  • +field(10604; "VAT Code"; Code[10])
  • +field(10610; "VAT Number"; Code[20])
table/742 "VAT Statement Report Line" +2
  • +field(10600; "Non-Deductible Base"; Decimal)
  • +field(10601; "Non-Deductible Amount"; Decimal)
table/98 "General Ledger Setup" +2
  • +field(10600; "Application always Allowed"; Boolean)
  • +field(10601; "Non-Taxable"; Boolean)
codeunit/11 "Gen. Jnl.-Check Line" +1
  • +procedure CheckPostingPeriod(CheckPeriod: Boolean)
codeunit/1752 "Data Class. Eval. Data Country" +1
  • +local procedure ClassifySAFT()
page/255 "Cash Receipt Journal" +1
  • +local event OnBeforeImportPayments(var GenJournalLine: Record "Gen. Journal Line"; var IsHandled: Boolean)
page/256 "Payment Journal" +1
  • +local event OnBeforeImportReturnData(var GenJournalLine: Record "Gen. Journal Line"; var IsHandled: Boolean)
page/43 "Sales Invoice" +1
  • +local procedure CustomerUsesEInvoicing(CustomerNo: Code[20]): Boolean
page/435 "Reminder Lines" +1
  • +procedure UpdatePage(SetSaveRecord: Boolean)
page/447 "Finance Charge Memo Lines" +1
  • +procedure UpdatePage(SetSaveRecord: Boolean)
page/507 "Blanket Sales Order" +1
  • +local procedure AccountCodeOnAfterValidate()
report/20 "Calc. and Post VAT Settlement" +1
  • +local procedure GetVATAmountOfPropDeduct(VATEntry: Record "VAT Entry"; VATPostingSetup: Record "VAT Posting Setup"): Decimal
table/111 "Sales Shipment Line" +1
  • +field(10601; "Qty. Remaining"; Decimal)
table/1200 "Bank Export/Import Setup" +1
  • +field(10601; "Reg.Reporting Thresh.Amt (LCY)"; Decimal)
table/122 "Purch. Inv. Header" +1
  • +field(15000000; "KID"; Code[30])
table/189 "VAT Setup" 1 changed
  • Δfield(2; "Enable Non-Deductible VAT"; Boolean)
table/296 "Reminder Line" +1
  • +field(10601; "Account Code"; Text[30])
table/298 "Issued Reminder Line" +1
  • +field(10601; "Account Code"; Text[30])
table/303 "Finance Charge Memo Line" +1
  • +field(10601; "Account Code"; Text[30])
table/305 "Issued Fin. Charge Memo Line" +1
  • +field(10601; "Account Code"; Text[30])
table/312 "Purchases & Payables Setup" +1
  • +field(10610; "Amt. Spec limit to Norges Bank"; Decimal)
table/324 "VAT Product Posting Group" +1
  • +field(10600; "Outside Tax Area"; Boolean)
table/4 "Currency" +1
  • +field(15000000; "Units to NOK"; Integer)
table/5108 "Sales Line Archive" +1
  • +field(10605; "Account Code"; Text[30])
table/91 "User Setup" +1
  • +field(10600; "Application always Allowed"; Boolean)
enum/306 "Report Selection Usage Sales" body changes only
enum/77 "Report Selection Usage" body changes only
permissionset/1001 "LOCAL" body changes only
permissionset/1002 "LOCAL READ" body changes only
report/117 "Reminder" body changes only
report/118 "Finance Charge Memo" body changes only

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

Overview

The Norwegian layer adds a large block of finance and banking functionality. VAT is extended with a single VAT Code field on journals, lines, G/L accounts and VAT entries (VAT Code, VAT Number and VAT Base Amount Type on table 81 “Gen. Journal Line”; VAT Code, VAT Number and Base Amount Type on table 254 “VAT Entry”). Proportional deduction is set up on table 325 “VAT Posting Setup”, and table 344 “VAT Reporting Code” gets trade settlement, reverse charge and SAF-T fields. Norway’s own codeunits implement SAF-T export (codeunit 10673 “Generate SAF-T File”, codeunit 10692 “Generate SAF-T 1.3 File”) and electronic VAT return submission (the Elec. VAT codeunits, such as codeunit 10685 “Elec. VAT Submit Return” and codeunit 10680 “Elec. VAT OAuth Mgt.”). Learn documents these under Norwegian VAT reporting, Setup and generate SAF-T files, Norwegian VAT Codes and Proportional VAT.

Payments and banking are covered by the Remittance objects (numbered from 15000000). They handle remittance accounts and agreements, payment suggestions, export to bank, return file import, error handling and the Waiting Journal. Vendor, purchase header, journal and vendor ledger entry tables get remittance, KID and Norges Bank fields. Norway also adds OCR payment import, KID setup on Sales & Receivables Setup, changes to SEPA credit transfer export, import of pain.002 and CAMT.054 files, and regulatory reporting codes.

Sales and service e-invoicing supports EHF and PEPPOL BIS 3.0. Customers get Account Code and E-Invoice fields. Sales, reminder and finance charge documents get GLN, Account Code and E-Invoice fields. Norway’s own codeunits check and export these documents. Other local features are recurring orders from blanket orders, payroll transaction import, and the Application always Allowed setting for applying entries in closed periods.

Key points

  • VAT: one VAT Code field on journals, entries and lines; proportional deduction via Calc. Prop. Deduction VAT and Proportional Deduction VAT % on VAT Posting Setup, with changes in Gen. Jnl.-Post Line and VAT Statement.
  • SAF-T: mapping setup, data check, export card and files, supporting versions 1.20 and 1.30 per Learn.
  • Electronic VAT return submission through ID-Porten with OAuth 2.0 setup, VAT periods and VAT statement mapping.
  • Remittance payments: accounts, agreements, suggestions, test report, bank export (SEPA, Telepay, BBS), return file import and error pages.
  • OCR and KID: OCR payment import into the cash receipt journal, OCR Journal - Test report, KID setup on sales documents, giro printing.
  • EHF and PEPPOL 3.0 e-invoicing for sales, service, reminders and finance charge memos, using GLN, Account Code and E-Invoice fields and file path setup.
  • Recurring orders: recurring groups with date formulas, recurring group codes on blanket sales orders, and a Create Recurring Orders batch job.
  • Payroll import into general journals, and Application always Allowed in General Ledger Setup and User Setup for applying entries in closed periods.

Narrative written by Sonnet from the code diff and 42 Learn page summaries. In numbers: Norway (NO) localization of Business Central in BC29: 278 objects of its own, 75 W1 objects changed (240 fields and 5 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
Finance 19 108 94
Purchases 9 45 79
Sales 33 16 59
Service 0 36 0
EServices 0 35 0
Bank 5 9 5
Peppol 0 12 0
Foundation 4 5 2
Security 3 2 1
Payroll 0 4 0
Microsoft 0 3 0
(no namespace) 0 2 0
Utilities 1 1 0
Upgrade 1 0 0

Finance

Adds Norwegian VAT codes, proportional VAT deduction and VAT Code/VAT Number fields on journal lines, VAT entries, G/L accounts and VAT setup. Includes SAF-T export (mapping, data check, export, enums, setup wizard) and electronic VAT return objects. Gen. Jnl.-Post Line and the VAT Statement and VAT settlement reports gain procedures for proportional and non-deductible VAT.

Why: Learn describes proportional VAT for assets used for both deductible and non-deductible purposes, SAF-T files required by Norwegian authorities, and electronic VAT returns sent via ID-Porten.

Objects: table/81 “Gen. Journal Line”, table/325 “VAT Posting Setup”, table/344 “VAT Reporting Code”, table/254 “VAT Entry”, codeunit/12 “Gen. Jnl.-Post Line”, codeunit/10673 “Generate SAF-T File” (own), codeunit/10692 “Generate SAF-T 1.3 File” (own), codeunit/10685 “Elec. VAT Submit Return” (own).

All 127 objects of Finance in the diff

Purchases

The Remittance module for vendor payments: remittance accounts and agreements, payment orders, Waiting Journal, return files and errors, suggestion and export reports. Vendor, vendor template, vendor ledger entry and purchase header tables get remittance, KID and Norges Bank fields. Also local vendor reports.

Why: Learn documents electronic vendor payments through TelePay or Remittance formats, with bank processing and settlement returns.

Objects: table/23 “Vendor”, table/1383 “Vendor Templ.”, table/25 “Vendor Ledger Entry”, table/38 “Purchase Header”, codeunit/15000002 “Remittance Tools” (own), codeunit/15000031 “Export Remittance” (own), report/15000001 “Suggest Remittance Payments” (own), page/15000002 “Remittance Payment Order” (own).

All 54 objects of Purchases in the diff

Sales

Adds GLN, Account Code and E-Invoice fields on customers, sales documents, reminders and finance charge memos, plus KID and e-invoice path fields on Sales & Receivables Setup. PEPPOL codeunits get reminder and finance charge procedures. Recurring orders are added with recurring groups and a batch job.

Why: Learn explains EHF documents for public sector customers and recurring orders created from blanket orders.

Objects: table/311 “Sales & Receivables Setup”, table/36 “Sales Header”, table/18 “Customer”, codeunit/1605 “PEPPOL Management”, codeunit/1620 “PEPPOL Validation”, codeunit/392 “Reminder-Make”, table/15000300 “Recurring Group” (own), report/15000300 “Create Recurring Orders” (own).

All 49 objects of Sales in the diff

Service

Table and page extensions add the Norwegian fields to service headers, lines, invoices, credit memos and archives. Own codeunits handle posting and printing, and local service invoice, credit memo and shipment reports are added.

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

Objects: codeunit/10650 “Serv. Document Mgt. NO” (own), codeunit/10640 “Serv. Event Subscribers NO” (own), codeunit/10602 “Service Post Print NO” (own), report/10631 “Service - Invoice (NO)” (own), report/10632 “Service - Credit Memo (NO)” (own), report/10613 “Service - Shipment (NO)” (own), tableextension/10602 “Service Header NO” (own), tableextension/10611 “Service Mgt. Setup NO” (own).

All 36 objects of Service in the diff

EServices

EHF e-invoicing: check and export codeunits for sales and service invoices, credit memos, reminders and finance charge memos, plus batch reports to create electronic documents. Also OCR setup and OCR payment reports, and an export header/line/transfer file table set.

Why: Learn describes EHF XML files for public sector customers and OCR payment import with KID numbers.

Objects: codeunit/10610 “E-Invoice Document Encode” (own), codeunit/10619 “E-Invoice Export Sales Invoice” (own), codeunit/10628 “E-Invoice Export Common” (own), codeunit/10629 “E-Invoice Check Common” (own), report/10640 “Create Electronic Invoices” (own), table/10604 “E-Invoice Export Header” (own), page/15000100 “OCR Setup” (own), report/15000100 “OCR Journal - Test” (own).

All 35 objects of EServices in the diff

Bank

Extends SEPA credit transfer export with Norwegian handling (events and procedures to move lines to the Waiting Journal), adds regulatory reporting codes with a threshold amount, and imports pain.002 and CAMT.054 files.

Why: Learn documents bank export to SEPA, Telepay and BBS formats.

Objects: codeunit/1221 “SEPA CT-Fill Export Buffer”, table/1226 “Payment Export Data”, table/1200 “Bank Export/Import Setup”, table/10607 “Regulatory Reporting Code” (own), codeunit/10636 “Import Pain002” (own), codeunit/10637 “Import CAMT054” (own), codeunit/10638 “Norge SEPA CC-Export File” (own), xmlport/1000 “SEPA CT pain.001.001.03”.

All 14 objects of Bank in the diff

Peppol

Adds the Norwegian PEPPOL 3.0 format, with management, payment and subscriber codeunits, export codeunits for sales and service documents, and invoice and credit memo XMLports.

Why: Learn covers PEPPOL BIS Billing 3.0 and the E-Documents framework for Norwegian e-invoicing.

Objects: codeunit/37350 “PEPPOL30 NO Management” (own), codeunit/37351 “PEPPOL30 NO Subscribers” (own), enumextension/37350 “PEPPOL 3.0 Format NO” (own), xmlport/37355 “Sales Invoice - PEPPOL30 NO” (own), xmlport/37356 “Sales Cr.Memo - PEPPOL30 NO” (own), codeunit/37357 “Exp. Sales Inv. PEPPOL30 NO” (own), codeunit/37358 “Exp. Sales CrM. PEPPOL30 NO” (own).

All 12 objects of Peppol in the diff

Foundation

Company Information gets an enterprise register field and classification procedure. Document-Print and Report Selection Usage gain Norwegian sales order printing, and Company-Initialize provides the Norwegian SEPA CT code. SAF-T extensions hold source code and company contact data.

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

Objects: table/79 “Company Information”, codeunit/229 “Document-Print”, codeunit/2 “Company-Initialize”, enum/77 “Report Selection Usage”, tableextension/10680 “SAF-T Source Code” (own), tableextension/10684 “SAF-T Company Contact” (own).

All 9 objects of Foundation in the diff

Security

Adds the Application always Allowed setting to User Setup, extends the LOCAL and LOCAL READ permission sets, and extends the electronic VAT OAuth 2.0 setup.

Why: Learn describes Application always Allowed for applying entries outside the allowed posting period.

Objects: table/91 “User Setup”, permissionset/1001 “LOCAL”, permissionset/1002 “LOCAL READ”, tableextension/10688 “Elec. VAT OAuth 2.0. Setup” (own), pageextension/10698 “Electronic VAT OAuth 2.0 Setup” (own).

All 5 objects of Security in the diff

Payroll

Payroll integration codeunit and general journal extensions for importing payroll transactions into journals.

Why: Learn describes importing payroll from Huldt & Lillevik Lønn and Visma via Payroll Data Definitions.

Objects: codeunit/10609 “Payroll Integration (NO)” (own), pageextension/10609 “NO General Journal” (own), pageextension/10610 “NO General Journal Setup” (own), tableextension/10609 “ImportDimCodes” (own).

All 4 objects of Payroll in the diff

Utilities

DocumentTools helper codeunit, and data classification of SAF-T data.

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

Objects: codeunit/10601 “DocumentTools” (own), codeunit/1752 “Data Class. Eval. Data Country”.

All 2 objects of Utilities in the diff

Objects of its own

278 objects only this country has.

Other versions

  • BC30: 354 objects differ from W1 (240 fields, 5 events added)

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