Sistem neispravno koristi datum dokumenta umesto datuma knjiženja kada pokrenete izveštaj "Napravi 347 deklaraciju" za objavljene fakture u španskoj verziji aplikacije Microsoft Dynamics NAV

Primenjuje se na
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Ovaj članak se odnosi na Microsoft Dynamics NAV za španski (es) region.

Simptomi

Pretpostavimo da ste objavili nekoliko faktura za nabavku ili prodaju u španskoj verziji sistema Microsoft Dynamics NAV. Kada pokrenete izveštaj "Napravi 347 deklaraciju" (10707) koji koristi opseg datuma dokumenta knjiženih faktura, sistem neispravno generiše podatke u datoteci 347 deklaracije. Pored toga, sistem ne generiše ništa u datoteci deklaracije 347 kada pokrenete izveštaj "Napravi 347 deklaraciju" koji koristi opseg datuma knjiženja objavljenih faktura. Međutim, sistem bi trebalo da koristi datum knjiženja umesto datuma dokumenta kada pokrećete izveštaj "Napravi 347 deklaraciju" za fakture.
Ovaj problem se javlja u sledećim proizvodima:

  • Španska verzija programa Microsoft Dynamics NAV 2009 R2
  • Španska verzija servisnog paketa 1 za Microsoft Dynamics NAV 2009
  • Španska verzija usluge Microsoft Dynamics NAV 5.0 servisni paket 1

      

Rešenje

Informacije o hitnim ispravkama

Podržana hitna ispravka je sada dostupna od korporacije Microsoft. Međutim, namena je samo za rešavanje problema koji je opisan u ovom članku. Primenite je samo na sisteme koji imaju ovaj određeni problem. Ova hitna ispravka može proći dodatno testiranje. Stoga, ako ovaj problem ne utiče ozbiljno, preporučujemo da sačekate sledeći servisni paket za Microsoft Dynamics NAV 2009 ili sledeću verziju programa Microsoft Dynamics NAV koja sadrži ovu hitnu ispravku.

Napomena: U posebnim slučajevima, troškovi koji se obično nastaju za pozive podršci mogu biti otkazani ako stručnjak za tehničku podršku za Microsoft Dynamics i srodne proizvode utvrdi da će određena ispravka rešiti problem. Uobičajeni troškovi podrške primenjivaće se na dodatna pitanja podrške i probleme koji ne ispunjavaju uslove za određenu ispravku u pitanju.

            
          

Informacije o instalaciji

Microsoft pruža primere programiranja samo za ilustraciju, bez izričite ili podrazumevane garancije. Ovo uključuje, ali nije ograničeno na, podrazumevane garancije o podesnosti za prodaju ili o podesnosti za određenu namenu. U ovom članku se pretpostavlja da ste upoznati sa programskim jezikom koji se demonstrira i sa alatkama koje se koriste za kreiranje procedura i otklanjanje grešaka. Inženjeri Microsoft podrške mogu da vam objasne funkcionalnost određene procedure, ali neće izmeniti ove primere da bi obezbedili dodatnu funkcionalnost ili konstruisali procedure koje ispunjavaju vaše određene zahteve.

Napomena: Pre nego što instalirate ovu hitnu ispravku, proverite da li su svi korisnici Microsoft Navision klijenta odjavljeni iz sistema. To uključuje korisnike Microsoft Navision Application Services (NAS) klijenta. Vi bi trebalo da budete jedini korisnik klijenta koji je prijavljen kada primenjujete ovu hitnu ispravku.

Da biste primenili ovu hitnu ispravku, morate imati licencu za projektante.

Preporučujemo da se korisničkom nalogu u prozoru "Prijavljivanje u operativni sistem Windows" ili u prozoru "Prijavljivanje u bazu podataka" dodeli ID uloge "SUPER". Ako korisničkom nalogu nije moguće dodeliti ID uloge "SUPER", morate da proverite da li korisnički nalog ima sledeće dozvole:

  • Dozvola "Izmeni" za objekat koji ćete menjati.
  • Dozvola za izvršavanje za objekat sistema ID 5210 i za objekat sistema ID 9015.

                
Napomena: Ne morate da imate prava na skladišta podataka osim ako ne morate da izvršite popravku podataka.

Promene kodova

Napomena: Popravke kodova uvek testirajte u kontrolisanom okruženju pre nego što ih primenite na računare proizvodnje.
Pratite ove korake da biste rešili problem:

  1. Promenite kôd u stavci podataka broj 3 u izveštaju o deklaraciji "Make 347" (10707) na sledeći način:
    Postojeći kôd 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
    ...
    

    Kôd za zamenu 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
    ...
    

    Postojeći kôd 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
    ...
    

    Kôd zamene 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
    ...
    

    Postojeći kôd 3

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

    Kôd za zamenu 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Customer No.=FIELD(No.),
    
    // Add the following line.
    Posting Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    
  2. Promenite kôd u stavci podataka broj 6 u izveštaju o deklaraciji "Make 347" (10707) na sledeći način:
    Postojeći kôd 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
    ...
    

    Kôd za zamenu 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
    ...
    

    Postojeći kôd 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
    ...
    

    Kôd zamene 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
    ...
    

    Postojeći kod 3

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

    Kôd za zamenu 3

    ...
    END;
    END;
    CalcFields=Amount;
    DataItemLink=Vendor No.=FIELD(No.),
    
    // Add the following line.
    Posting Date=FIELD(Date Filter);
    
    }
    SECTIONS
    {
    }
    }
    ...
    
  3. Promenite kôd u funkciji CheckSameVATRegNo u izveštaju "Make 347 deklaracija" (10707) na sledeći način:
    Postojeći kôd 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
    ...
    

    Kôd za zamenu 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
    ...
    

    Postojeći kôd 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
    ...
    

    Kôd zamene 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. Promenite kôd u funkciji IdentifyCashPayments u izveštaju "Make 347 Deklaracija" (10707) na sledeći način:
    Postojeći kôd

    ...
    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
    ...
    

    Kôd za zamenu

    ...
    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. Promenite kôd u funkciji CreateCashTotals u izveštaju o deklaraciji Make 347 (10707) na sledeći način:
    Postojeći kôd 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,
    ...
    

    Kôd za zamenu 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,
    ...
    

    Postojeći kôd 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;
    ...
    

    Kôd zamene 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. Promenite kôd u funkciji UpdateNotIn347Amount u izveštaju o deklaraciji Make 347 (10707) na sledeći način:
    Postojeći kôd

    ...
    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
    ...
    

    Kôd za zamenu

    ...
    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
    ...
    

          

Preduslovi

Morate da imate instaliran jedan od sledećih proizvoda da biste primenili ovu hitnu ispravku:

  • Španska verzija programa Microsoft Dynamics NAV 2009 R2
  • Španska verzija servisnog paketa 1 za Microsoft Dynamics NAV 2009
  • Španska verzija usluge Microsoft Dynamics NAV 5.0 servisni paket 1

Informacije o uklanjanju

Ne možete da uklonite ovu hitnu ispravku.

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.

Napomena: Ovo je članak "BRZO OBJAVLJIVANJE" koji je kreiran direktno u okviru organizacije Microsoft podrške. Informacije koje se nalaze ovde pružaju se kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske greške i mogu se revidirati u bilo kom trenutku bez prethodne najave. Pogledajte Uslove korišćenja za druga razmatranja.