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:
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 { } } ...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 { } } ...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 ...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 ...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; ...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.