Συμπτώματα
Μετά την εγκατάσταση του KB2694168 με την ιταλική έκδοση του Microsoft Dynamics NAV 2009, δημιουργούνται εσφαλμένες καταχωρήσεις, εάν μπορείτε να συσχετίσετε ένα πιστωτικό τιμολόγιο με ένα τιμολόγιο πώλησης και εμπλέκεται μη πραγματοποιημένο ΦΠΑ. Ακολουθήστε τα βήματα της ενότητας οι αλλαγές κώδικα για να επιλύσετε αυτό το ζήτημα. Αυτό το ζήτημα παρουσιάζεται στα ακόλουθα προϊόντα:
-
Την ιταλική έκδοση του Microsoft Dynamics NAV 2009 R2
-
Της ιταλικής έκδοσης του Microsoft Dynamics NAV 2009 SP1
Προτεινόμενη αντιμετώπιση
Πληροφορίες άμεσης επιδιόρθωσης
Μια υποστηριζόμενη άμεση επιδιόρθωση είναι τώρα διαθέσιμη από τη Microsoft. Ωστόσο, προορίζεται μόνο για τη διόρθωση του ζητήματος που περιγράφεται σε αυτό το άρθρο. Eφαρμόστε τη μόνο σε συστήματα που αντιμετωπίζουν το συγκεκριμένο ζήτημα. Αυτή η επείγουσα επιδιόρθωση ενδέχεται να υποβληθεί σε πρόσθετο έλεγχο. Επομένως, εάν αυτό το ζήτημα δεν σας επηρεάζει ιδιαίτερα, σας συνιστούμε να περιμένετε έως το επόμενο service pack του Microsoft Dynamics NAV 2009 ή την επόμενη έκδοση του Microsoft Dynamics NAV που περιέχει αυτήν την επείγουσα επιδιόρθωση.
Σημείωση Σε ειδικές περιπτώσεις, οι χρεώσεις που υφίστανται κανονικά για κλήσεις υποστήριξης ενδέχεται να να ακυρωθούν, εάν έναν επαγγελματία τεχνικής υποστήριξης για το Microsoft Dynamics και σχετικά προϊόντα προσδιορίζει ότι μια συγκεκριμένη ενημερωμένη έκδοση θα επιλύσει το ζήτημά σας. Οι συνηθισμένες χρεώσεις υποστήριξης θα ισχύει για πρόσθετες ερωτήσεις υποστήριξης και για θέματα που δεν αφορούν τη συγκεκριμένη ενημερωμένη έκδοση.
Πληροφορίες εγκατάστασης
Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς καμία εγγύηση, είτε σιωπηρή είτε ρητή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία διαδικασιών και τον εντοπισμό σφαλμάτων σε αυτές. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας. Ωστόσο, δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες για να καλύψουν τις συγκεκριμένες απαιτήσεις σας.
Σημείωση Πριν να εγκαταστήσετε αυτήν την επείγουσα επιδιόρθωση, επιβεβαιώστε ότι όλοι οι χρήστες προγράμματος-πελάτη Microsoft Dynamics NAV έχουν αποσυνδεθεί από το σύστημα. Αυτό περιλαμβάνει υπηρεσίες Microsoft Dynamics NAV εφαρμογών διακομιστή (NAS). Θα πρέπει να το πρόγραμμα-πελάτη μόνο χρήστη που είναι συνδεδεμένος κατά την εφαρμογή αυτής της επείγουσας επιδιόρθωσης.
Για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση, πρέπει να έχετε μια άδεια χρήσης του προγραμματιστή.
Συνιστούμε ότι ο λογαριασμός χρήστη στο παράθυρο "Συνδέσεις Windows" ή στο παράθυρο συνδέσεις βάσης δεδομένων να αντιστοιχιστεί το "SUPER" αναγνωριστικό ρόλου. Εάν ο λογαριασμός χρήστη δεν μπορεί να αντιστοιχιστεί το Αναγνωριστικό ρόλου "SUPER", πρέπει να επαληθεύσετε ότι ο λογαριασμός χρήστη έχει τα ακόλουθα δικαιώματα:
-
Το δικαίωμα "Τροποποίηση" για το αντικείμενο που θα αλλάξετε.
-
Τα δικαιώματα εκτέλεσης για το αντικείμενο 5210 Αναγνωριστικό αντικειμένου συστήματος και για την 9015 Αναγνωριστικό αντικειμένου συστήματος
το αντικείμενο.
Σημείωση Δεν πρέπει να έχετε δικαιώματα για τους χώρους αποθήκευσης δεδομένων, εκτός και αν έχετε να εκτελέσετε επιδιόρθωση δεδομένων.
Αλλαγές κώδικα
Σημείωση Πάντα δοκιμή κώδικα διορθώνει σε ελεγχόμενο περιβάλλον πριν να εφαρμόσετε τις ενημερώσεις κώδικα στους υπολογιστές παραγωγής.
Για να επιλύσετε αυτό το ζήτημα, ακολουθήστε τα εξής βήματα:
-
Αλλάξτε τον κωδικό στη συνάρτηση GetUnRealizedVATPart στον πίνακα "εγγραφές ΦΠΑ" (254) ως εξής:
Υπάρχοντα κώδικα...ELSE BEGIN
IF (DocType = DocType::"Credit Memo") THEN BEGIN
IF (-TotalPayments + ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) <= 0 THEN
EXIT(1)
END ELSE BEGIN
// Delete the following lines.
IF (-TotalPayments + ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) < 0 THEN
EXIT(CalcVatPart(GetCurrencyCode(), 1.0, TotalPayments,
("Remaining Unrealized Amount" + "Remaining Unrealized Base")))
// End of the deleted lines.
ELSE
EXIT(1)
END;
END;
END;
...Αντικατάσταση κώδικα
...ELSE BEGIN
IF (DocType = DocType::"Credit Memo") THEN BEGIN
IF (-TotalPayments + ("Remaining Unrealized Amount" + "Remaining Unrealized Base")) <= 0 THEN
EXIT(1)
END ELSE BEGIN
// Add the following lines.
IF (-TotalPayments - ABS("Remaining Unrealized Amount" + "Remaining Unrealized Base")) < 0 THEN
EXIT(CalcVatPart(GetCurrencyCode(), 1.0, ABS(TotalPayments),
ABS("Remaining Unrealized Amount" + "Remaining Unrealized Base")))
// End of the added lines.
ELSE
EXIT(1)
END;
END;
END;
... -
Αλλάξτε τον κωδικό στη συνάρτηση InsertVAT στη μονάδα κώδικα (12) ως εξής:
Υπάρχοντα κώδικα...IF UnrealizedVAT THEN BEGIN
VATPostingSetup.TESTFIELD("Sales VAT Unreal. Account");
InitGLEntry(
VATPostingSetup."Sales VAT Unreal. Account",
GLEntryVATAmount,SrcCurrGLEntryVATAmt,TRUE,TRUE);
// VSTF298177.begin
IF GLEntry."Document Type" = GLEntry."Document Type"::"Credit Memo" THEN
UnrealizedVATPosted := TRUE;
// VSTF298177.end
END ELSE BEGIN
VATPostingSetup.TESTFIELD("Sales VAT Account");
InitGLEntry(
VATPostingSetup."Sales VAT Account",
GLEntryVATAmount,SrcCurrGLEntryVATAmt,TRUE,TRUE);
...Αντικατάσταση κώδικα
...IF UnrealizedVAT THEN BEGIN
VATPostingSetup.TESTFIELD("Sales VAT Unreal. Account");
InitGLEntry(
VATPostingSetup."Sales VAT Unreal. Account",
GLEntryVATAmount,SrcCurrGLEntryVATAmt,TRUE,TRUE);
// Delete the following lines.
// VSTF298177.begin
IF GLEntry."Document Type" = GLEntry."Document Type"::"Credit Memo" THEN
UnrealizedVATPosted := TRUE;
// VSTF298177.end
// End of the deleted lines.
END ELSE BEGIN
VATPostingSetup.TESTFIELD("Sales VAT Account");
InitGLEntry(
VATPostingSetup."Sales VAT Account",
GLEntryVATAmount,SrcCurrGLEntryVATAmt,TRUE,TRUE);
... -
Αλλάξτε τον κωδικό στη συνάρτηση CustUnrealizedVAT στη μονάδα κώδικα (12) ως εξής:
Υπάρχοντα κωδικό 1...ROUND(
VATEntry2."Add.-Curr. Rem. Unreal. Base" * VATPart,
AddCurrency."Amount Rounding Precision");
END;
// Delete the following lines.
TotalPayments := TotalPayments - (VATEntry2."Remaining Unrealized Amount" + VATEntry2."Remaining Unrealized Base");
IF VATAmount <> 0 THEN BEGIN // IT0028
// VSTF298177.begin
IF NOT UnrealizedVATPosted THEN BEGIN
// End of the deleted lines.
InitGLEntry(SalesVATUnrealAccount,-VATAmount,0,FALSE,TRUE);
GLEntry."Additional-Currency Amount" := -VATAmountAddCurr;
GLEntry."Bal. Account No." := SalesVATAccount;
SummarizeVAT(
GLSetup."Summarize G/L Entries",GLEntry,TempGLEntryVAT,InsertedTempGLEntryVAT);
...Αντικατάσταση κώδικα 1
...ROUND(
VATEntry2."Add.-Curr. Rem. Unreal. Base" * VATPart,
AddCurrency."Amount Rounding Precision");
END;
// Add the following lines.
IF TotalPayments + ABS(VATEntry2."Remaining Unrealized Amount" + VATEntry2."Remaining Unrealized Base") < 0 THEN
TotalPayments := TotalPayments - (VATEntry2."Remaining Unrealized Amount" + VATEntry2."Remaining Unrealized Base");
IF VATAmount <> 0 THEN BEGIN // IT0028
// End of the added lines.
InitGLEntry(SalesVATUnrealAccount,-VATAmount,0,FALSE,TRUE);
GLEntry."Additional-Currency Amount" := -VATAmountAddCurr;
GLEntry."Bal. Account No." := SalesVATAccount;
SummarizeVAT(
GLSetup."Summarize G/L Entries",GLEntry,TempGLEntryVAT,InsertedTempGLEntryVAT);
...Υπάρχοντα κώδικα 2
...InitGLEntry(SalesVATUnrealAccount,-VATAmount,0,FALSE,TRUE);
GLEntry."Additional-Currency Amount" := -VATAmountAddCurr;
GLEntry."Bal. Account No." := SalesVATAccount;
SummarizeVAT(
GLSetup."Summarize G/L Entries",GLEntry,TempGLEntryVAT,InsertedTempGLEntryVAT);
END;
// VSTF298177.end
InitGLEntry(SalesVATAccount,VATAmount,0,FALSE,TRUE);
GLEntry."Additional-Currency Amount" := VATAmountAddCurr;
GLEntry."Bal. Account No." := SalesVATUnrealAccount;
GLEntry."Gen. Posting Type" := VATEntry2.Type;
...Αντικατάσταση κώδικα 2
...InitGLEntry(SalesVATUnrealAccount,-VATAmount,0,FALSE,TRUE);
GLEntry."Additional-Currency Amount" := -VATAmountAddCurr;
GLEntry."Bal. Account No." := SalesVATAccount;
SummarizeVAT(
GLSetup."Summarize G/L Entries",GLEntry,TempGLEntryVAT,InsertedTempGLEntryVAT);
// Delete the following lines.
END;
// VSTF298177.end
// End of the deleted lines.
InitGLEntry(SalesVATAccount,VATAmount,0,FALSE,TRUE);
GLEntry."Additional-Currency Amount" := VATAmountAddCurr;
GLEntry."Bal. Account No." := SalesVATUnrealAccount;
GLEntry."Gen. Posting Type" := VATEntry2.Type;
...
Προϋποθέσεις
Πρέπει να έχετε ένα από τα ακόλουθα προϊόντα, για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση:
-
Την ιταλική έκδοση του Microsoft Dynamics NAV 2009 R2
-
Της ιταλικής έκδοσης του Microsoft Dynamics NAV 2009 SP1
Επιπλέον, πρέπει να έχετε εγκατεστημένο το KB2694168 .
Πληροφορίες κατάργησης
Δεν μπορείτε να καταργήσετε αυτήν την επείγουσα επιδιόρθωση.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα των προϊόντων της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".
Σημείωση Αυτό είναι ένα άρθρο "ΤΑΧΕΙΑΣ ΔΗΜΟΣΙΕΥΣΗΣ" που έχει δημιουργηθεί απευθείας από την εταιρεία υποστήριξης της Microsoft. Οι πληροφορίες που περιέχονται στο παρόν έγγραφο παρέχονται ως έχουν, ως απάντηση σε ζητήματα που προέκυψαν. Ως αποτέλεσμα της ταχύτητας διαθεσιμότητάς του, το υλικό ενδέχεται να περιλαμβάνει τυπογραφικά λάθη και μπορεί να αναθεωρηθεί οποιαδήποτε στιγμή, χωρίς προειδοποίηση. Για άλλα θέματα, ανατρέξτε στην ενότητα " Όροι χρήσης".