Plăţi în numerar pentru facturi retrasarea trebuie declarate în anul factura original și nu se bazează pe anul retrasarea factura în declarația 347 în versiunea spaniolă de Microsoft Dynamics NAV 2009. Această problemă se produce în următoarele produse:
-
Versiunea spaniolă de Microsoft Dynamics NAV 2009 R2
-
Versiunea spaniolă de Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
Cauza
Această problemă apare deoarece incorecte data este preluat de la exportul 347 declarație în cazul retrasarea facturi
Rezolvare
Informații despre remedierea rapidă
Un hotfix acceptat este acum disponibil de la Microsoft. Cu toate acestea, acesta este destinat numai corectării problemei descrise în acest articol. Aplicați-o numai pe sistemele care întâmpină această problemă anume. Această remediere rapidă poate să necesite testare suplimentară. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următorul pachet service pack Microsoft Dynamics NAV 2009 sau versiunea Microsoft Dynamics NAV următoare, care conține această remediere rapidă.
Notă În cazuri speciale, costurile implicate de obicei pentru asistență apeluri pot fi anulate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produse asociate stabilește că o anumită actualizare va rezolva problema. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistenţă şi pentru probleme ce nu fac obiectul actualizării în cauză.
Informaţii despre instalare
Microsoft furnizează exemple de programare scop ilustrativ, fără nicio garanţie explicită sau implicită. Aceasta include, dar nu se limitează la, garanţiile implicite de vandabilitate sau de potrivire pentru un anumit scop. Acest articol presupune că sunteţi familiarizat cu limbajul de programare care este prezentat şi cu instrumentele utilizate pentru a crea şi a depana proceduri. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri. Cu toate acestea, nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară construi proceduri pentru a răspunde cerințelor dvs. specifice.
Notă Înainte de a instala această remediere rapidă, verificați dacă toți utilizatorii de client Microsoft Dynamics NAV sunt log off sistemul. Aceasta include servicii Microsoft Dynamics NAV Application Server (NAS). Ar trebui să fie singurul client utilizatorului care este conectat când implementați această remediere rapidă.
Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltare.
Vă recomandăm că contul de utilizator în fereastra Conectări Windows sau în fereastra Conectări bază de date se atribuie "SUPER" rolul ID-ul. În cazul în care contul de utilizator nu poate fi atribuit ID-ul "SUPER" rolul, trebuie să verificați că contul de utilizator are următoarele permisiuni:
-
Modify permisiunea pentru obiectul care se va schimba.
-
Permisiunea de executare pentru obiectul sistem obiect ID 5210 și sistem obiect ID 9015
obiect.
Notă Nu trebuie să aveți drepturi de la magazine de date decât dacă trebuie să efectuați o reparare de date.
Modificări de cod
Notă întotdeauna test cod remedieri într-un mediu controlat înainte de a aplica remedieri pentru computerele de producție. Înainte de a aplica modificarea, vă rugăm să importați toate actualizările SEPA.
Pentru a rezolva această problemă, urmați acești pași:
-
Modificați codul din funcția IdentifyCashPayments din raportul face 347 declarație (10707) după cum urmează:
Cod existent 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);
...Înlocuirea cod 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);
...Cod existent 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;
...Înlocuirea cod 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;
... -
Modificați codul din funcția CreateCashTotals din raportul face 347 declarație (10707) după cum urmează:
Cod existent 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;
...Înlocuirea cod 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;
...Cod existent 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
...Înlocuirea cod 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
...Cod existent 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
...Înlocuirea cod 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
... -
Modificați codul din funcția GetPaymentDocumentPostingDate din raportul face 347 declarație (10707) după cum urmează:
Cod existent...IF Vendor."Country/Region Code" = CountryCode THEN
FromJournal := TRUE;
END;
...Cod de înlocuire
...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.
...
Cerințe preliminare
Trebuie să aveți unul dintre următoarele produse instalate pentru a aplica această remediere rapidă:
-
Versiunea spaniolă de Microsoft Dynamics NAV 2009 R2
-
Versiunea în limba spaniolă Microsoft Dynamics NAV 2009 SP1
Eliminare informaţii
Nu se poate elimina această remediere rapidă.
Stare
Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".
Notă Acesta este un articol "rapid publicat" creat direct în cadrul organizației de asistență Microsoft. Informațiile conținute în acest document sunt furnizate ca răspuns la problemele care apar. Ca rezultat al vitezei în a-l face disponibil, materialele pot include erori tipografice și pot fi revizuite în orice moment, fără notificare. Consultați Termenii de utilizarepentru alte considerații.