Podczas uruchamiania raportu Utwórz deklarację 347 dla zaksięgowanych faktur w hiszpańskiej wersji programu Microsoft Dynamics NAV system używa daty dokumentu zamiast daty publikowania niepoprawnie.

Dotyczy
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Ten artykuł dotyczy aplikacji Microsoft Dynamics NAV dla regionu hiszpańskiego (es).

Objawy

Załóżmy, że w hiszpańskiej wersji programu Microsoft Dynamics NAV jest wyświetlanych kilka faktur zakupu lub sprzedaży. Po uruchomieniu raportu Make 347 Declaration (10707) korzystającego z zakresu daty dokumentu zaksięgowanych faktur system generuje nieprawidłowo dane w pliku deklaracji 347. Ponadto system nie generuje nic w pliku deklaracji 347 po uruchomieniu raportu Make 347 Declaration, który używa zakresu daty księgowania zaksięgowanych faktur. Jednak podczas uruchamiania raportu Deklaracja make 347 dla faktur system powinien używać daty księgowania zamiast daty dokumentu.
Ten problem występuje w następujących produktach:

  • Hiszpańska wersja oprogramowania Microsoft Dynamics NAV 2009 R2
  • Dodatek Service Pack 1 dla hiszpańskiej wersji oprogramowania Microsoft Dynamics NAV 2009
  • Dodatek Service Pack 1 dla hiszpańskiej wersji oprogramowania Microsoft Dynamics NAV 5.0

      

Rozwiązanie

Informacje dotyczące poprawek

Obsługiwana poprawka jest teraz dostępna od firmy Microsoft. Jednak jego celem jest tylko naprawienie problemu opisanego w tym artykule. Zastosuj ją tylko do systemów, w których występuje ten konkretny problem. Ta poprawka może wymagać dodatkowych testów. Dlatego jeśli ten problem cię nie dotyczy poważnie, zalecamy poczekanie na kolejny dodatek Service Pack dla oprogramowania Microsoft Dynamics NAV 2009 lub następną wersję microsoft Dynamics NAV zawierającą tę poprawkę.

Uwaga W specjalnych przypadkach opłaty, które zwykle naliczane są w związku z połączeniami pomocy technicznej, mogą zostać anulowane, jeśli specjalista pomocy technicznej w zakresie oprogramowania Microsoft Dynamics i produktów pokrewnych ustali, że określona aktualizacja rozwiąże problem. Typowe koszty pomocy technicznej będą miały zastosowanie do dodatkowych pytań dotyczących pomocy technicznej i problemów, które nie kwalifikują się do określonej aktualizacji.

            
          

Informacje o instalacji

Firma Microsoft udostępnia przykłady programowania wyłącznie w celach ilustracyjnych, bez gwarancji wyrażonej lub dorozumianej. To obejmuje między innymi dorozumiane gwarancje przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że znasz język programowania, który jest demonstrowany, oraz narzędzia, które są używane do tworzenia i debugowania procedur. Inżynierowie pomocy technicznej firmy Microsoft mogą pomóc w objaśnieniu funkcjonalności określonej procedury, ale nie zmodyfikują tych przykładów w celu zapewnienia dodatkowych funkcji ani skonstruowania procedur spełniających określone wymagania.

Uwaga Przed zainstalowaniem tej poprawki sprawdź, czy wszyscy użytkownicy klienckich usługi Microsoft Navision wylogowali się z systemu. Dotyczy to również użytkowników klienckich usług Microsoft Navision Application Services (NAS). Należy być jedynym użytkownikiem klienckim, który jest zalogowany podczas implementowania tej poprawki.

Aby zaimplementować tę poprawkę, musisz mieć licencję dewelopera.

Zalecamy przypisanie do konta użytkownika w oknie Logowania systemu Windows lub w oknie Logowania bazy danych identyfikator roli "SUPER". Jeśli do konta użytkownika nie można przypisać identyfikatora roli "SUPER", należy sprawdzić, czy konto użytkownika ma następujące uprawnienia:

  • Uprawnienie Modyfikuj dla obiektu, który ma zostać zmieniony.
  • Uprawnienie Execute dla obiektu System Object ID 5210 i obiektu System Object ID 9015.

                
Uwaga Nie musisz mieć praw do magazynów danych, chyba że musisz wykonać naprawę danych.

Zmiany kodu

Uwaga Przed zastosowaniem poprawek do komputerów produkcyjnych należy zawsze testować poprawki kodu w środowisku kontrolowanym.
Aby rozwiązać ten problem, wykonaj następujące czynności:

  1. Zmień kod w elemencie danych numer 3 w raporcie Make 347 Declaration (10707) w następujący sposób:
    Istniejący kod 1

    ...
    VATEntry.RESET;
    VATEntry.SETCURRENTKEY(Type,"Posting Date","Document Type","Document No.","Bill-to/Pay-to No.");
    VATEntry.SETRANGE(Type,VATEntry.Type::Sale);
    VATEntry.SETRANGE("Document No.","Document No.");
    
    // Delete the following line.
    VATEntry.SETRANGE("Document Date","Document Date");
    
    VATEntry.SETRANGE("Document Type","Document Type");
    VATEntry.SETRANGE("Country/Region Code",CountryCode);
    IF NOT VATEntry.FINDFIRST THEN BEGIN
    CASE "Document Type" OF
    ...
    

    Kod zastępczy 1

    ...
    VATEntry.RESET;
    VATEntry.SETCURRENTKEY(Type,"Posting Date","Document Type","Document No.","Bill-to/Pay-to No.");
    VATEntry.SETRANGE(Type,VATEntry.Type::Sale);
    VATEntry.SETRANGE("Document No.","Document No.");
    
    // Add the following lines.
    VATEntry.SETRANGE("Document Date","Document Date");
    VATEntry.SETRANGE("Posting Date","Posting Date");
    // End of the lines.
    
    VATEntry.SETRANGE("Document Type","Document Type");
    VATEntry.SETRANGE("Country/Region Code",CountryCode);
    IF NOT VATEntry.FINDFIRST THEN BEGIN
    CASE "Document Type" OF
    ...
    

    Istniejący kod 2

    ...
    END;
    IF (VATEntry."VAT Registration No." <> '') OR NoTaxVATFound OR FromJournal THEN BEGIN
    CALCFIELDS("Amount (LCY)");
    SalesAmt := SalesAmt + "Amount (LCY)";
    
    // Delete the following line.
    UpdateQuarterAmount(AmountType::Sales,"Amount (LCY)","Document Date");
    
    END ELSE
    EmptyVATRegNo := TRUE;
    END;
    OnPostDataItem=VAR
    ...
    

    Kod zastępczy 2

    ...
    END;
    IF (VATEntry."VAT Registration No." <> '') OR NoTaxVATFound OR FromJournal THEN BEGIN
    CALCFIELDS("Amount (LCY)");
    SalesAmt := SalesAmt + "Amount (LCY)";
    
    // Add the following lines.
    UpdateQuarterAmount(AmountType::Sales,"Amount (LCY)","Document Date");
    UpdateQuarterAmount(AmountType::Sales,"Amount (LCY)","Posting Date");
    // End of the lines.
    
    END ELSE
    EmptyVATRegNo := TRUE;
    END;
    OnPostDataItem=VAR
    ...
    

    Istniejący kod 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Customer No.=FIELD(No.),
    
    // Delete the following line.
    Document Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    

    Kod zastępczy 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Customer No.=FIELD(No.),
    
    // Add the following line.
    Posting Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    
  2. Zmień kod w elemencie danych numer 6 w raporcie Make 347 Declaration (10707) w następujący sposób:
    Istniejący kod 1

    ...
    VATEntry.RESET;
    VATEntry.SETCURRENTKEY(Type,"Posting Date","Document Type","Document No.","Bill-to/Pay-to No.");
    VATEntry.SETRANGE(Type,VATEntry.Type::Purchase);
    VATEntry.SETRANGE("Document No.","Document No.");
    
    // Delete the following line.
    VATEntry.SETRANGE("Document Date","Document Date");
    
    VATEntry.SETRANGE("Document Type","Document Type");
    VATEntry.SETRANGE("Country/Region Code",CountryCode);
    IF NOT VATEntry.FINDFIRST THEN BEGIN
    CASE "Document Type" OF
    ...
    

    Kod zastępczy 1

    ...
    VATEntry.RESET;
    VATEntry.SETCURRENTKEY(Type,"Posting Date","Document Type","Document No.","Bill-to/Pay-to No.");
    VATEntry.SETRANGE(Type,VATEntry.Type::Purchase);
    VATEntry.SETRANGE("Document No.","Document No.");
    
    // Add the following lines.
    VATEntry.SETRANGE("Document Date","Document Date");
    VATEntry.SETRANGE("Posting Date","Posting Date");
    // End of the lines.
    
    VATEntry.SETRANGE("Document Type","Document Type");
    VATEntry.SETRANGE("Country/Region Code",CountryCode);
    IF NOT VATEntry.FINDFIRST THEN BEGIN
    CASE "Document Type" OF
    ...
    

    Istniejący kod 2

    ...
    END;
    IF (VATEntry."VAT Registration No." <> '') OR NoTaxVATFound OR FromJournal THEN BEGIN
    CALCFIELDS("Amount (LCY)");
    PurchasesAmt := PurchasesAmt - "Amount (LCY)";
    
    // Delete the following line.
    UpdateQuarterAmount(AmountType::Purchase,-"Amount (LCY)","Document Date");
    
    END ELSE
    EmptyVATRegNo := TRUE;
    END;
    OnPostDataItem=BEGIN
    ...
    

    Kod zastępczy 2

    ...
    END;
    IF (VATEntry."VAT Registration No." <> '') OR NoTaxVATFound OR FromJournal THEN BEGIN
    CALCFIELDS("Amount (LCY)");
    PurchasesAmt := PurchasesAmt - "Amount (LCY)";
    
    // Add the following lines.
    UpdateQuarterAmount(AmountType::Purchase,-"Amount (LCY)","Document Date");
    UpdateQuarterAmount(AmountType::Purchase,-"Amount (LCY)","Posting Date");
    // End of the lines.
    
    END ELSE
    EmptyVATRegNo := TRUE;
    END;
    OnPostDataItem=BEGIN
    ...
    

    Kod Exisitng 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Vendor No.=FIELD(No.),
    
    // Delete the following line.
    Document Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    

    Kod zastępczy 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Vendor No.=FIELD(No.),
    
    // Add the following line.
    Posting Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    
  3. Zmień kod funkcji CheckSameVATRegNo w raporcie Make 347 Declaration (10707) w następujący sposób:
    Istniejący kod 1

    ...
    END ELSE BEGIN
    VATEntry3.SETRANGE(Type,VATEntry3.Type::Purchase); 
    VATEntry3.SETRANGE("VAT Registration No.",Vendor."VAT Registration No.");
    VATEntry3.SETFILTER("Bill-to/Pay-to No.",'<>%1',Vendor."No.");
    END;
    
    // Delete the following line.
    VATEntry3.SETRANGE("Document Date",FromDate,ToDate); 
    
    IF VATEntry3.FINDFIRST THEN
    REPEAT
    IF IsCustomer THEN
    Amt := Amt - VATEntry3.Base - VATEntry3.Amount
    ...
    

    Kod zastępczy 1

    ...
    END ELSE BEGIN
    VATEntry3.SETRANGE(Type,VATEntry3.Type::Purchase);
    VATEntry3.SETRANGE("VAT Registration No.",Vendor."VAT Registration No.");
    VATEntry3.SETFILTER("Bill-to/Pay-to No.",'<>%1',Vendor."No.");
    END;
    
    // Add the following lines.
    VATEntry3.SETRANGE("Document Date",FromDate,ToDate);
    VATEntry3.SETRANGE("Posting Date",FromDate,ToDate);
    // End of the lines.
    
    IF VATEntry3.FINDFIRST THEN
    REPEAT
    IF IsCustomer THEN
    Amt := Amt - VATEntry3.Base - VATEntry3.Amount
    ...
    

    Istniejący kod 2

    ...
    IF IsCustomer THEN
    Amt := Amt - VATEntry3.Base - VATEntry3.Amount
    ELSE
    Amt := Amt + VATEntry3.Base + VATEntry3.Amount;
    
    // Delete the following line.
    UpdateQuarterAmount(AmountType::Sales,ABS(VATEntry3.Base) + ABS(VATEntry3.Amount),VATEntry3."Document Date");
    
    TempVATEntry.SETRANGE("Transaction No.",VATEntry3."Transaction No.");
    IF NOT TempVATEntry.FINDFIRST THEN BEGIN
    GLEntry.SETRANGE("Transaction No.",VATEntry3."Transaction No.");
    IF GLEntry.FINDSET THEN
    REPEAT
    ...
    

    Kod zastępczy 2

    ...
    IF IsCustomer THEN
    Amt := Amt - VATEntry3.Base - VATEntry3.Amount
    ELSE
    Amt := Amt + VATEntry3.Base + VATEntry3.Amount;
    
    // Add the following lines.
    UpdateQuarterAmount(AmountType::Sales,ABS(VATEntry3.Base) + ABS(VATEntry3.Amount),VATEntry3."Document Date");
    UpdateQuarterAmount(AmountType::Sales,ABS(VATEntry3.Base) + ABS(VATEntry3.Amount),VATEntry3."Posting Date");
    // End of the lines.
    
    TempVATEntry.SETRANGE("Transaction No.",VATEntry3."Transaction No.");
    IF NOT TempVATEntry.FINDFIRST THEN BEGIN
    GLEntry.SETRANGE("Transaction No.",VATEntry3."Transaction No.");
    IF GLEntry.FINDSET THEN
    REPEAT
    ...
    
  4. Zmień kod w funkcji IdentifyCashPayments w raporcie Make 347 Declaration (10707) w następujący sposób:
    Istniejący kod

    ...
    CustLedgerEntry@1100001 : Record 21;
    BEGIN
    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 line.
    CustLedgerEntry.SETRANGE("Document 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 BEGIN
    ...
    

    Kod zastępczy

    ...
    CustLedgerEntry@1100001 : Record 21;
    BEGIN
    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.
    CustLedgerEntry.SETRANGE("Document Date",FromDate,ToDate);
    CustLedgerEntry.SETRANGE("Posting Date",FromDate,ToDate);
    // End of the lines.
    
    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 BEGIN
    ...
    
  5. Zmień kod w funkcji CreateCashTotals w raporcie Make 347 Declaration (10707) w następujący sposób:
    Istniejący kod 1

    ...
    IF DtldCustLedgEntry2."Cust. Ledger Entry No." <>
    DtldCustLedgEntry2."Applied Cust. Ledger Entry No."
    THEN BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    
    // Delete the following line.
    DATE2DMY(CustLedgerEntry."Document Date",3),-(DtldCustLedgEntry2."Amount (LCY)"));
    
    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    ...
    

    Kod zastępczy 1

    ...
    IF DtldCustLedgEntry2."Cust. Ledger Entry No." <>
    DtldCustLedgEntry2."Applied Cust. Ledger Entry No."
    THEN BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry2."Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    
    // Add the following lines.
    DATE2DMY(CustLedgerEntry."Document Date",3),-(DtldCustLedgEntry2."Amount (LCY)"));
    DATE2DMY(CustLedgerEntry."Posting Date",3),-(DtldCustLedgEntry2."Amount (LCY)"));
    // End of the lines.
    
    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    ...
    

    Istniejący kod 2

    ...
    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    
    // Delete the following line.
    DATE2DMY(CustLedgerEntry."Document Date",3),DtldCustLedgEntry."Amount (LCY)");
    
    END;
    UNTIL DtldCustLedgEntry.NEXT = 0;
    END;
    LOCAL PROCEDURE IsCashAccount@1100015(GLAccountNo@1100000 : Text[20]) : Boolean;
    ...
    

    Kod zastępczy 2

    ...
    END;
    UNTIL DtldCustLedgEntry2.NEXT = 0;
    END ELSE BEGIN
    IF CustLedgerEntry.GET(DtldCustLedgEntry."Applied Cust. Ledger Entry No.") THEN
    UpdateCustomerCashBuffer(VATRegistrationNo,
    
    // Add the following lines.
    DATE2DMY(CustLedgerEntry."Document Date",3),DtldCustLedgEntry."Amount (LCY)");
    DATE2DMY(CustLedgerEntry."Posting Date",3),DtldCustLedgEntry."Amount (LCY)");
    // End of the lines.
    
    END;
    UNTIL DtldCustLedgEntry.NEXT = 0;
    END;
    LOCAL PROCEDURE IsCashAccount@1100015(GLAccountNo@1100000 : Text[20]) : Boolean;
    ...
    
  6. Zmień kod w funkcji UpdateNotIn347Amount w raporcie Make 347 Declaration (10707) w następujący sposób:
    Istniejący kod

    ...
    BEGIN
    WITH GLEntry DO BEGIN
    GLAccount.GET("G/L Account No.");
    IF GLAccount."Ignore in 347 Report" THEN BEGIN
    NotIn347Amt := NotIn347Amt + Amount + "VAT Amount";
    
    // Delete the following line.
    UpdateQuarterAmount(AmountType::NotIn347Report,Amount + "VAT Amount","Document Date");
    
    END;
    END;
    END;
    BEGIN
    ...
    

    Kod zastępczy

    ...
    BEGIN
    WITH GLEntry DO BEGIN
    GLAccount.GET("G/L Account No.");
    IF GLAccount."Ignore in 347 Report" THEN BEGIN
    NotIn347Amt := NotIn347Amt + Amount + "VAT Amount";
    
    // Add the following lines.
    UpdateQuarterAmount(AmountType::NotIn347Report,Amount + "VAT Amount","Document Date");
    UpdateQuarterAmount(AmountType::NotIn347Report,Amount + "VAT Amount","Posting Date");
    // End of the lines.
    
    END;
    END;
    END;
    BEGIN
    ...
    

          

Wymagania wstępne

Aby zastosować tę poprawkę, musisz mieć zainstalowany jeden z następujących produktów:

  • Hiszpańska wersja oprogramowania Microsoft Dynamics NAV 2009 R2
  • Dodatek Service Pack 1 dla hiszpańskiej wersji oprogramowania Microsoft Dynamics NAV 2009
  • Dodatek Service Pack 1 dla hiszpańskiej wersji oprogramowania Microsoft Dynamics NAV 5.0

Informacje o usunięciu

Nie można usunąć tej poprawki.

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Uwaga Jest to artykuł "SZYBKIE PUBLIKOWANIE" utworzony bezpośrednio z poziomu organizacji pomocy technicznej firmy Microsoft. Informacje zawarte w niniejszym artykule są dostarczane w stanie odpowiadającym na pojawiające się problemy. Ze względu na szybkość jego udostępnienia materiały mogą zawierać błędy typograficzne i mogą zostać poprawione w dowolnym momencie bez powiadomienia. Zobacz Warunki użytkowania , aby zapoznać się z innymi zagadnieniami.