OBJECT Table 4 Currency { OBJECT-PROPERTIES { Date=; Time=; Version List=; } PROPERTIES { OnModify=BEGIN "Last Date Modified" := TODAY; END; OnDelete=VAR CustLedgEntry@1000 : Record 21; VendLedgEntry@1001 : Record 25; BEGIN IF NOT CustLedgEntry.SETCURRENTKEY("Customer No.",Open,Positive,"Due Date","Currency Code") THEN CustLedgEntry.SETCURRENTKEY(Open,"Due Date"); CustLedgEntry.SETRANGE(Open,TRUE); CustLedgEntry.SETRANGE("Currency Code",Code); IF CustLedgEntry.FINDFIRST THEN ERROR(Text002,CustLedgEntry.TABLECAPTION,TABLECAPTION,Code); IF NOT VendLedgEntry.SETCURRENTKEY("Vendor No.",Open,Positive,"Due Date","Currency Code") THEN VendLedgEntry.SETCURRENTKEY(Open,"Due Date"); VendLedgEntry.SETRANGE(Open,TRUE); VendLedgEntry.SETRANGE("Currency Code",Code); IF VendLedgEntry.FINDFIRST THEN ERROR(Text002,VendLedgEntry.TABLECAPTION,TABLECAPTION,Code); CurrExchRate.SETRANGE("Currency Code",Code); CurrExchRate.DELETEALL; END; OnRename=BEGIN "Last Date Modified" := TODAY; END; LookupPageID=Page5; } FIELDS { { 1 ; ;Code ;Code10 ;NotBlank=Yes } { 2 ; ;Last Date Modified ;Date ;Editable=No } { 3 ; ;Last Date Adjusted ;Date ;Editable=No } { 6 ; ;Unrealized Gains Acc.;Code20 ;TableRelation="G/L Account"; OnValidate=BEGIN CheckGLAcc("Unrealized Gains Acc."); END; } { 7 ; ;Realized Gains Acc. ;Code20 ;TableRelation="G/L Account"; OnValidate=BEGIN CheckGLAcc("Realized Gains Acc."); END; } { 8 ; ;Unrealized Losses Acc.;Code20 ;TableRelation="G/L Account"; OnValidate=BEGIN CheckGLAcc("Unrealized Losses Acc."); END; } { 9 ; ;Realized Losses Acc.;Code20 ;TableRelation="G/L Account"; OnValidate=BEGIN CheckGLAcc("Realized Losses Acc."); END; } { 10 ; ;Invoice Rounding Precision;Decimal ;InitValue=1; OnValidate=BEGIN IF "Amount Rounding Precision" <> 0 THEN IF "Invoice Rounding Precision" <> ROUND("Invoice Rounding Precision","Amount Rounding Precision") THEN FIELDERROR( "Invoice Rounding Precision", STRSUBSTNO(Text000,"Amount Rounding Precision")); END; AutoFormatType=1; AutoFormatExpr=Code } { 12 ; ;Invoice Rounding Type;Option ;OptionString=Nearest,Up,Down } { 13 ; ;Amount Rounding Precision;Decimal ;InitValue=0,01; OnValidate=BEGIN IF "Amount Rounding Precision" <> 0 THEN "Invoice Rounding Precision" := ROUND("Invoice Rounding Precision","Amount Rounding Precision"); END; DecimalPlaces=2:5; MinValue=0 } { 14 ; ;Unit-Amount Rounding Precision;Decimal; InitValue=0,00001; DecimalPlaces=0:9; MinValue=0 } { 15 ; ;Description ;Text30 } { 17 ; ;Amount Decimal Places;Text5 ;InitValue=2:2; OnValidate=BEGIN GLSetup.CheckDecimalPlacesFormat("Amount Decimal Places"); END; NotBlank=Yes } { 18 ; ;Unit-Amount Decimal Places;Text5 ;InitValue=2:5; OnValidate=BEGIN GLSetup.CheckDecimalPlacesFormat("Unit-Amount Decimal Places"); END; NotBlank=Yes } { 19 ; ;Customer Filter ;Code20 ;FieldClass=FlowFilter; TableRelation=Customer } { 20 ; ;Vendor Filter ;Code20 ;FieldClass=FlowFilter; TableRelation=Vendor } { 21 ; ;Global Dimension 1 Filter;Code20 ;FieldClass=FlowFilter; TableRelation="Dimension Value".Code WHERE (Global Dimension No.=CONST(1)); CaptionClass='1,3,1' } { 22 ; ;Global Dimension 2 Filter;Code20 ;FieldClass=FlowFilter; TableRelation="Dimension Value".Code WHERE (Global Dimension No.=CONST(2)); CaptionClass='1,3,2' } { 23 ; ;Date Filter ;Date ;FieldClass=FlowFilter } { 24 ; ;Cust. Ledg. Entries in Filter;Boolean; FieldClass=FlowField; CalcFormula=Exist("Cust. Ledger Entry" WHERE (Customer No.=FIELD(Customer Filter), Currency Code=FIELD(Code))); Editable=No } { 25 ; ;Customer Balance ;Decimal ;FieldClass=FlowField; CalcFormula=Sum("Detailed Cust. Ledg. Entry".Amount WHERE (Customer No.=FIELD(Customer Filter), Initial Entry Global Dim. 1=FIELD(Global Dimension 1 Filter), Initial Entry Global Dim. 2=FIELD(Global Dimension 2 Filter), Posting Date=FIELD(Date Filter), Currency Code=FIELD(Code))); Editable=No; AutoFormatType=1; AutoFormatExpr=Code } { 26 ; ;Customer Outstanding Orders;Decimal;FieldClass=FlowField; CalcFormula=Sum("Sales Line"."Outstanding Amount" WHERE (Document Type=CONST(Order), Bill-to Customer No.=FIELD(Customer Filter), Currency Code=FIELD(Code), Shortcut Dimension 1 Code=FIELD(Global Dimension 1 Filter), Shortcut Dimension 2 Code=FIELD(Global Dimension 2 Filter))); Editable=No; AutoFormatType=1; AutoFormatExpr=Code } { 27 ; ;Customer Shipped Not Invoiced;Decimal; FieldClass=FlowField; CalcFormula=Sum("Sales Line"."Shipped Not Invoiced" WHERE (Document Type=CONST(Order), Bill-to Customer No.=FIELD(Customer Filter), Currency Code=FIELD(Code), Shortcut Dimension 1 Code=FIELD(Global Dimension 1 Filter), Shortcut Dimension 2 Code=FIELD(Global Dimension 2 Filter))); Editable=No; AutoFormatType=1; AutoFormatExpr=Code } { 28 ; ;Customer Balance Due;Decimal ;FieldClass=FlowField; CalcFormula=Sum("Detailed Cust. Ledg. Entry".Amount WHERE (Customer No.=FIELD(Customer Filter), Initial Entry Global Dim. 1=FIELD(Global Dimension 1 Filter), Initial Entry Global Dim. 2=FIELD(Global Dimension 2 Filter), Initial Entry Due Date=FIELD(Date Filter), Posting Date=FIELD(UPPERLIMIT(Date Filter)), Currency Code=FIELD(Code))); Editable=No; AutoFormatType=1; AutoFormatExpr=Code } { 29 ; ;Vendor Ledg. Entries in Filter;Boolean; FieldClass=FlowField; CalcFormula=Exist("Vendor Ledger Entry" WHERE (Vendor No.=FIELD(Vendor Filter), Currency Code=FIELD(Code))); Editable=No } { 30 ; ;Vendor Balance ;Decimal ;FieldClass=FlowField; CalcFormula=-Sum("Detailed Vendor Ledg. Entry".Amount WHERE (Vendor No.=FIELD(Vendor Filter), Initial Entry Global Dim. 1=FIELD(Global Dimension 1 Filter), Initial Entry Global Dim. 2=FIELD(Global Dimension 2 Filter), Posting Date=FIELD(Date Filter), Currency Code=FIELD(Code))); Editable=No; AutoFormatType=1; AutoFormatExpr=Code } { 31 ; ;Vendor Outstanding Orders;Decimal ;FieldClass=FlowField; CalcFormula=Sum("Purchase Line"."Outstanding Amount" WHERE (Document Type=CONST(Order), Pay-to Vendor No.=FIELD(Vendor Filter), Currency Code=FIELD(Code), Shortcut Dimension 1 Code=FIELD(Global Dimension 1 Filter), Shortcut Dimension 2 Code=FIELD(Global Dimension 2 Filter))); Editable=No; AutoFormatType=1; AutoFormatExpr=Code } { 32 ; ;Vendor Amt. Rcd. Not Invoiced;Decimal; FieldClass=FlowField; CalcFormula=Sum("Purchase Line"."Amt. Rcd. Not Invoiced" WHERE (Document Type=CONST(Order), Pay-to Vendor No.=FIELD(Vendor Filter), Currency Code=FIELD(Code), Shortcut Dimension 1 Code=FIELD(Global Dimension 1 Filter), Shortcut Dimension 2 Code=FIELD(Global Dimension 2 Filter))); Editable=No; AutoFormatType=1; AutoFormatExpr=Code } { 33 ; ;Vendor Balance Due ;Decimal ;FieldClass=FlowField; CalcFormula=-Sum("Detailed Vendor Ledg. Entry".Amount WHERE (Vendor No.=FIELD(Vendor Filter), Initial Entry Global Dim. 1=FIELD(Global Dimension 1 Filter), Initial Entry Global Dim. 2=FIELD(Global Dimension 2 Filter), Initial Entry Due Date=FIELD(Date Filter), Posting Date=FIELD(UPPERLIMIT(Date Filter)), Currency Code=FIELD(Code))); Editable=No; AutoFormatType=1; AutoFormatExpr=Code } { 34 ; ;Customer Balance (LCY);Decimal ;FieldClass=FlowField; CalcFormula=Sum("Detailed Cust. Ledg. Entry"."Amount (LCY)" WHERE (Customer No.=FIELD(Customer Filter), Initial Entry Global Dim. 1=FIELD(Global Dimension 1 Filter), Initial Entry Global Dim. 2=FIELD(Global Dimension 2 Filter), Posting Date=FIELD(Date Filter), Currency Code=FIELD(Code))); Editable=No; AutoFormatType=1 } { 35 ; ;Vendor Balance (LCY);Decimal ;FieldClass=FlowField; CalcFormula=-Sum("Detailed Vendor Ledg. Entry"."Amount (LCY)" WHERE (Vendor No.=FIELD(Vendor Filter), Initial Entry Global Dim. 1=FIELD(Global Dimension 1 Filter), Initial Entry Global Dim. 2=FIELD(Global Dimension 2 Filter), Posting Date=FIELD(Date Filter), Currency Code=FIELD(Code))); Editable=No; AutoFormatType=1 } { 40 ; ;Realized G/L Gains Account;Code20 ;TableRelation="G/L Account"; OnValidate=BEGIN CheckGLAcc("Realized G/L Gains Account"); END; } { 41 ; ;Realized G/L Losses Account;Code20 ;TableRelation="G/L Account"; OnValidate=BEGIN CheckGLAcc("Realized G/L Losses Account"); END; } { 44 ; ;Appln. Rounding Precision;Decimal ;MinValue=0; AutoFormatType=1; AutoFormatExpr=Code } { 45 ; ;EMU Currency ;Boolean } { 46 ; ;Currency Factor ;Decimal ;DecimalPlaces=0:5; Editable=No } { 47 ; ;Residual Gains Account;Code20 ;TableRelation="G/L Account" } { 48 ; ;Residual Losses Account;Code20 ;TableRelation="G/L Account" } { 50 ; ;Conv. LCY Rndg. Debit Acc.;Code20 ;TableRelation="G/L Account" } { 51 ; ;Conv. LCY Rndg. Credit Acc.;Code20 ;TableRelation="G/L Account" } { 52 ; ;Max. VAT Difference Allowed;Decimal;OnValidate=BEGIN IF "Max. VAT Difference Allowed" <> ROUND("Max. VAT Difference Allowed","Amount Rounding Precision") THEN ERROR( Text001, FIELDCAPTION("Max. VAT Difference Allowed"),"Amount Rounding Precision"); "Max. VAT Difference Allowed" := ABS("Max. VAT Difference Allowed"); END; AutoFormatType=1; AutoFormatExpr=Code } { 53 ; ;VAT Rounding Type ;Option ;OptionString=Nearest,Up,Down } { 54 ; ;Payment Tolerance % ;Decimal ;DecimalPlaces=0:5; MinValue=0; MaxValue=100; Editable=No } { 55 ; ;Max. Payment Tolerance Amount;Decimal; MinValue=0; Editable=No; AutoFormatType=1; AutoFormatExpr=Code } } KEYS { { ;Code ;Clustered=Yes } } FIELDGROUPS { } CODE { VAR Text000@1000 : TextConst 'ENU=must be rounded to the nearest %1'; Text001@1001 : TextConst 'ENU=%1 must be rounded to the nearest %2.'; CurrExchRate@1002 : Record 330; GLSetup@1003 : Record 98; Text002@1004 : TextConst '@@@=1 either customer or vendor ledger entry table 2 name co currency table 3 currencency code;ENU=There is one or more opened entries in the %1 table using %2 %3.'; IncorrectEntryTypeErr@1005 : TextConst 'ENU=Incorrect Entry Type %1.'; PROCEDURE InitRoundingPrecision@2(); BEGIN GLSetup.GET; IF GLSetup."Amount Rounding Precision" <> 0 THEN "Amount Rounding Precision" := GLSetup."Amount Rounding Precision" ELSE "Amount Rounding Precision" := 0.01; IF GLSetup."Unit-Amount Rounding Precision" <> 0 THEN "Unit-Amount Rounding Precision" := GLSetup."Unit-Amount Rounding Precision" ELSE "Unit-Amount Rounding Precision" := 0.00001; "Max. VAT Difference Allowed" := GLSetup."Max. VAT Difference Allowed"; "VAT Rounding Type" := GLSetup."VAT Rounding Type"; "Invoice Rounding Precision" := GLSetup."Inv. Rounding Precision (LCY)"; "Invoice Rounding Type" := GLSetup."Inv. Rounding Type (LCY)"; END; LOCAL PROCEDURE CheckGLAcc@1(AccNo@1000 : Code[20]); VAR GLAcc@1001 : Record 15; BEGIN IF AccNo <> '' THEN BEGIN GLAcc.GET(AccNo); GLAcc.CheckGLAcc; END; END; PROCEDURE VATRoundingDirection@3() : Text[1]; BEGIN CASE "VAT Rounding Type" OF "VAT Rounding Type"::Nearest: EXIT('='); "VAT Rounding Type"::Up: EXIT('>'); "VAT Rounding Type"::Down: EXIT('<'); END; END; PROCEDURE InvoiceRoundingDirection@4() : Text[1]; BEGIN CASE "Invoice Rounding Type" OF "Invoice Rounding Type"::Nearest: EXIT('='); "Invoice Rounding Type"::Up: EXIT('>'); "Invoice Rounding Type"::Down: EXIT('<'); END; END; PROCEDURE CheckAmountRoundingPrecision@5(); BEGIN TESTFIELD("Unit-Amount Rounding Precision"); TESTFIELD("Amount Rounding Precision"); END; PROCEDURE GetGainLossAccount@6(DtldCVLedgEntryBuf@1000 : Record 383) : Code[20]; BEGIN CASE DtldCVLedgEntryBuf."Entry Type" OF DtldCVLedgEntryBuf."Entry Type"::"Unrealized Loss": BEGIN TESTFIELD("Unrealized Losses Acc."); EXIT("Unrealized Losses Acc."); END; DtldCVLedgEntryBuf."Entry Type"::"Unrealized Gain": BEGIN TESTFIELD("Unrealized Gains Acc."); EXIT("Unrealized Gains Acc."); END; DtldCVLedgEntryBuf."Entry Type"::"Realized Loss": BEGIN TESTFIELD("Realized Losses Acc."); EXIT("Realized Losses Acc."); END; DtldCVLedgEntryBuf."Entry Type"::"Realized Gain": BEGIN TESTFIELD("Realized Gains Acc."); EXIT("Realized Gains Acc."); END; ELSE ERROR(IncorrectEntryTypeErr,DtldCVLedgEntryBuf."Entry Type"); END; END; BEGIN END. } }