Šablona: CPR – Šablona pro Fiacx kód aplikace Navision

Chyba č: 211713 (Údržba obsahu)

Platby v hotovosti pro revidovaných směnek by deklarována v roce původní fakturu a není založen na rok přepracovaných směnky v prohlášení 347 v španělská verze Microsoft Dynamics NAV 2009. K tomuto problému dochází v následujících produktů:

  • Španělská verze Microsoft Dynamics NAV 2009 R2

  • Španělská verze Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Příčina

K tomuto problému dochází, protože nesprávné datum je převzato z Export prohlášení 347 v případě revidovaných směnek

Řešení

Informace o opravě hotfix

Podporovaná oprava hotfix je nyní k dispozici od společnosti Microsoft. Však je určena pouze k odstranění problému popsaného v tomto článku. Použijte ji pouze u systémů, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může být dále testována. Proto pokud jste závažně tento problém, doporučujeme počkat na další aktualizaci service pack produktu Microsoft Dynamics NAV 2009 nebo další verze produktu Microsoft Dynamics NAV, která obsahuje tuto opravu hotfix.

Poznámka: Ve zvláštních případech poplatky, které jsou třeba obvykle zaplatit za telefonní hovory mohou být stornovány, jestliže pracovník technické podpory společnosti Microsoft Dynamics a souvisejících produktů Určuje, že konkrétní aktualizace odstraní váš problém. Výdaje na technickou podporu použije dalších otázek a problémů, které nelze vyřešit konkrétní aktualizací.

Pokud není tato oprava hotfix k volnému stahování (tj. v článku není uvedena veřejná adresa URL opravy hotfix), vyžaduje její distribuce technickým vedoucím, členem týmu a vedoucím přičemž následující předpoklady:

  • Opravu hotfix mohou získat zákazníci se vyskytla chyba, která je uvedena v části "Příznaky".

  • Musí sledovat zákazníci Chcete-li odeslat a dodat v další aktualizaci service Pack, až bude k dispozici (Pokud bude vydána aktualizace service pack).

Tato oprava hotfix oprava hotfix bude zahrnuta v španělská verze Microsoft Dynamics NAV 2013 a španělská verze Microsoft Dynamics NAV 2013 R2.

Informace o instalaci

Společnost Microsoft poskytuje ukázky programování pouze pro ilustraci bez žádné záruky výslovně uvedené nebo odvozené. To zahrnuje, ale není omezen pouze na předpokládané záruky obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předmětem ukázky a s nástroji, které slouží k vytvoření a ladění skriptu. Pracovníci podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu. Nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků.

Poznámka: Před instalací této opravy hotfix ověřte, že všichni uživatelé klienta Microsoft Dynamics NAV odhlášeni systému. To zahrnuje služby Microsoft Dynamics NAV Application Server (NAS). Je třeba klienta pouze uživatel přihlášený při implementaci opravy hotfix.

Chcete-li implementovat tuto opravu hotfix, musí mít licenci vývojáře.

Doporučujeme, aby uživatelský účet v okně přihlášení systému Windows nebo v okně přihlášení databáze přidělí "SUPER" ID role. Pokud uživatelský účet nelze přiřadit ID role "SUPER", musíte ověřit, že uživatelský účet má následující oprávnění:

  • Změnit oprávnění pro objekt, který budete měnit.

  • Oprávnění ke spuštění pro System Object ID 5210 objekt a System Object ID 9015

    objektu.

Poznámka: Nemáte práva k úložištím dat. Pokud nebudete provádět opravu dat.

Změny kódu

Poznámka: vždy otestujte opravy kódu v kontrolovaném prostředí před instalací opravy v provozních počítačích. Před použitím změnu, importujte všechny aktualizace SEPA.

Chcete-li vyřešit tento problém, postupujte takto:

  1. Změňte kód ve funkci IdentifyCashPayments v sestavě vytvořit prohlášení 347 (10707) takto:
    Existující kód 1

    ...LOCAL PROCEDURE IdentifyCashPayments@1100010(CustomerNo@1100000 : Code[20];VATRegistrationNo@1100002 : Text[20]);
    VAR
    CustLedgerEntry@1100001 : Record 21;
    BEGIN
    // es0020.begin
    CustLedgerEntry.SETCURRENTKEY("Document Type","Customer No.","Posting Date","Currency Code");
    CustLedgerEntry.SETRANGE("Document Type",CustLedgerEntry."Document Type"::Payment);
    ...

    Změněný kód 1

    ...LOCAL PROCEDURE IdentifyCashPayments@1100010(CustomerNo@1100000 : Code[20];VATRegistrationNo@1100002 : Text[20]);
    VAR
    CustLedgerEntry@1100001 : Record 21;

    // Add the following line.
    DocumentPostingDate@1170000000 : Date;

    BEGIN
    // es0020.begin
    CustLedgerEntry.SETCURRENTKEY("Document Type","Customer No.","Posting Date","Currency Code");
    CustLedgerEntry.SETRANGE("Document Type",CustLedgerEntry."Document Type"::Payment);
    ...

    Existující kód 2

    ...CustLedgerEntry.SETCURRENTKEY("Document Type","Customer No.","Posting Date","Currency Code");
    CustLedgerEntry.SETRANGE("Document Type",CustLedgerEntry."Document Type"::Payment);
    CustLedgerEntry.SETRANGE("Customer No.",CustomerNo);

    // Delete the following lines.
    CustLedgerEntry.SETRANGE("Posting Date",FromDate,ToDate);
    IF CustLedgerEntry.FINDSET THEN
    REPEAT
    IF (CustLedgerEntry."Bal. Account Type" = CustLedgerEntry."Bal. Account Type"::"G/L Account") AND
    (CustLedgerEntry."Bal. Account No." <> '')
    THEN BEGIN
    IF IsCashAccount(CustLedgerEntry."Bal. Account No.") THEN
    CreateCashTotals(CustLedgerEntry."Entry No.",VATRegistrationNo);
    END ELSE
    IF ((CustLedgerEntry."Bal. Account No." = '') OR
    (CustLedgerEntry."Bal. Account Type" <> CustLedgerEntry."Bal. Account Type"::"G/L Account"))
    THEN BEGIN
    IF IdentifyCashPaymentsFromGL(CustLedgerEntry) THEN
    CreateCashTotals(CustLedgerEntry."Entry No.",VATRegistrationNo);
    END;
    // End of the deleted lines.

    UNTIL CustLedgerEntry.NEXT = 0;
    // es0020.end
    END;
    ...

    Náhradní kód 2

    ...CustLedgerEntry.SETCURRENTKEY("Document Type","Customer No.","Posting Date","Currency Code");
    CustLedgerEntry.SETRANGE("Document Type",CustLedgerEntry."Document Type"::Payment);
    CustLedgerEntry.SETRANGE("Customer No.",CustomerNo);

    // Add the following lines.
    // we need payments made in future.
    // CustLedgerEntry.SETRANGE("Posting Date",FromDate,ToDate);
    IF CustLedgerEntry.FINDSET THEN
    REPEAT
    DocumentPostingDate := GetPaymentDocumentPostingDate(CustLedgerEntry);
    IF (CheckCashTotalsPossibility(CustLedgerEntry,DocumentPostingDate)) THEN
    CreateCashTotals(CustLedgerEntry."Entry No.",VATRegistrationNo,DocumentPostingDate);
    // End of the added lines.

    UNTIL CustLedgerEntry.NEXT = 0;
    // es0020.end
    END;
    ...
  2. Změňte kód ve funkci CreateCashTotals v sestavě vytvořit prohlášení 347 (10707) takto:
    Existující kód 1

    ...UNTIL CustLedgerEntry.NEXT = 0;
    // es0020.end
    END;

    // Delete the following line.
    LOCAL PROCEDURE CreateCashTotals@2(CustLedgerEntryNo@1100000 : Integer;VATRegistrationNo@1100001 : Text[20]) : Boolean;

    VAR
    CustLedgerEntry@1100091 : Record 21;
    DtldCustLedgEntry@1100094 : Record 379;
    DtldCustLedgEntry2@1100095 : Record 379;
    ...

    Změněný kód 1

    ...UNTIL CustLedgerEntry.NEXT = 0;
    // es0020.end
    END;

    // Add the following line.
    LOCAL PROCEDURE CreateCashTotals@2(CustLedgerEntryNo@1100000 : Integer;VATRegistrationNo@1100001 : Text[20];DocumentPostingDate@1170000000 : Date) : Boolean;

    VAR
    CustLedgerEntry@1100091 : Record 21;
    DtldCustLedgEntry@1100094 : Record 379;
    DtldCustLedgEntry2@1100095 : Record 379;
    ...

    Existující kód 2

    ...THEN BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,

    // Delete the following line.
    DATE2DMY(CustLedgerEntry."Posting Date",3),-(DtldCustLedgEntry2."Amount (LCY)"));

    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    ...

    Náhradní kód 2

    ...THEN BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,

    // Add the following line.
    DATE2DMY(DocumentPostingDate,3),-(DtldCustLedgEntry2."Amount (LCY)"));

    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    ...

    Existující kód 3

    ...END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,

    // Delete the following line.
    DATE2DMY(CustLedgerEntry."Posting Date",3),DtldCustLedgEntry."Amount (LCY)");

    END;
    UNTIL DtldCustLedgEntry.NEXT = 0;
    // es0020.end
    ...

    Změněný kód 3

    ...END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,

    // Add the following line.
    DATE2DMY(DocumentPostingDate,3),DtldCustLedgEntry."Amount (LCY)");

    END;
    UNTIL DtldCustLedgEntry.NEXT = 0;
    // es0020.end
    ...
  3. Změňte kód ve funkci GetPaymentDocumentPostingDate v sestavě vytvořit prohlášení 347 (10707) takto:
    Existující kód

    ...IF Vendor."Country/Region Code" = CountryCode THEN
    FromJournal := TRUE;
    END;
    ...

    Změněný kód

    ...IF Vendor."Country/Region Code" = CountryCode THEN
    FromJournal := TRUE;
    END;

    // Add the following lines.
    LOCAL PROCEDURE GetPaymentDocumentPostingDate@1170000000(CustLedgerEntry@1170000000 : Record 21) PostingDate : Date;
    VAR
    CustLedgerEntryRelated@1170000001 : Record 21;
    BEGIN
    WITH CustLedgerEntry DO BEGIN;
    TESTFIELD("Document Type","Document Type"::Payment);
    PostingDate := "Posting Date";
    END;

    // If payment for Bill then we need get Posting Date of the Document related to the Bill
    WITH CustLedgerEntryRelated DO BEGIN
    SETRANGE("Closed by Entry No.",CustLedgerEntry."Entry No.");
    SETRANGE("Document Type","Document Type"::Bill);
    IF FINDFIRST THEN BEGIN
    RESET;
    SETRANGE("Document No.","Document No.");
    SETFILTER("Document Type",'%1|%2',"Document Type"::Invoice,"Document Type"::"Credit Memo");
    FINDFIRST;
    PostingDate := "Posting Date";
    END
    END;

    EXIT(PostingDate);
    END;

    PROCEDURE CheckCashTotalsPossibility@1170000008(CustLedgerEntry@1170000000 : Record 21;DocumentPostingDate@1170000001 : Date) : Boolean;
    BEGIN
    IF (DocumentPostingDate < FromDate) OR (DocumentPostingDate > ToDate) THEN
    EXIT(FALSE);

    WITH CustLedgerEntry DO
    IF ("Bal. Account Type" = "Bal. Account Type"::"G/L Account") AND ("Bal. Account No." <> '') THEN BEGIN
    IF IsCashAccount("Bal. Account No.") THEN
    EXIT(TRUE);
    END ELSE
    IF ("Bal. Account No." = '') OR ("Bal. Account Type" <> "Bal. Account Type"::"G/L Account") THEN
    IF IdentifyCashPaymentsFromGL(CustLedgerEntry) THEN
    EXIT(TRUE);

    EXIT(FALSE);
    END;
    // End of the added lines.
    ...


Předpoklady

Musí mít jednu z následujících produktů nainstalovali tuto opravu hotfix:

  • Španělská verze Microsoft Dynamics NAV 2009 R2

  • Španělská verze Microsoft Dynamics NAV 2009 SP1

Informace o odinstalaci

Tato oprava hotfix nelze odebrat.

Stav

Společnost Microsoft potvrdila, že se jedná o problém v produktech společnosti Microsoft, které jsou uvedeny v části "Platí pro".

Odkazy

VSFT DynamicsNAVSE: 317271

Poznámka: Toto je článek "Rychlé publikování" vytvářen přímo v rámci odborné pomoci společnosti Microsoft. Informace obsažené v tomto dokumentu jsou poskytovány tak, jak je v reakci na vznikající problémy. V důsledku rychlosti v jeho zpřístupnění materiály, mohou obsahovat typografické chyby a mohou být upraveny kdykoli bez předchozího upozornění. Viz Podmínky použitípro další aspekty.

Autor: vagarcia
Writer: v-six
Odborný recenzent: vagarcia
Editor:

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou překladu?
Co ovlivnilo váš názor?

Děkujeme za váš názor!

×