Αυτό το άρθρο ισχύει για το Microsoft Dynamics NAV για τις τοπικές ρυθμίσεις γλώσσας ρωσικά (ru).
Συμπτώματα
Ας υποθέσουμε ότι εγκαθιστάτε την τοπική κρίσιμη ενημερωμένη έκδοση PS59774 και τοπική κρίσιμη ενημερωμένη έκδοση PS60060 για τη ρωσική έκδοση του Microsoft Dynamics NAV 2009 R2. Για περισσότερες πληροφορίες, επισκεφτείτε τις ακόλουθες τοποθεσίες Web της Microsoft:
- Τοπική κρίσιμη ενημερωμένη έκδοση για το Microsoft Dynamics NAV 2009 RU "Αλλαγές στον υπολογισμό ασφαλιστικών εισφορών για αναρρωτική άδεια - Νέο πρότυπο για τη φόρμα NDFL-2
- Персонал и зарплата. Регистр налога на доходы физических лиц Microsoft Dynamics NAV 2009 R2 - Россия
Αφού δημοσιεύσετε τη διόρθωση για ένα έγγραφο μισθοδοσίας, το σύστημα συμπληρώνει τα ποσά στις εγγραφές γενικού καθολικού (Γ/Λ) για τη διόρθωση. Ωστόσο, τα ποσά διαφέρουν από τα ποσά στις εγγραφές Γ/Λ για το πρωτότυπο έγγραφο μισθοδοσίας.
Επίλυση
Πληροφορίες επείγουσας επιδιόρθωσης
Μια υποστηριζόμενη επείγουσα επιδιόρθωση είναι τώρα διαθέσιμη από τη Microsoft. Ωστόσο, αυτή η ενέργεια προορίζεται μόνο για τη διόρθωση του ζητήματος που περιγράφεται σε αυτό το άρθρο. Εφαρμόστε το μόνο σε συστήματα που αντιμετωπίζουν αυτό το συγκεκριμένο πρόβλημα. Αυτή η επείγουσα επιδιόρθωση ενδέχεται να υποβληθεί σε πρόσθετο έλεγχο. Επομένως, εάν αυτό το ζήτημα δεν σας επηρεάζει ιδιαίτερα, συνιστάται να περιμένετε έως το επόμενο service pack του Microsoft Dynamics NAV 2009 ή την επόμενη έκδοση του Microsoft Dynamics NAV που περιέχει αυτήν την επείγουσα επιδιόρθωση.
Σημείωση Σε ειδικές περιπτώσεις, οι χρεώσεις που προκύπτουν κανονικά για κλήσεις υποστήριξης ενδέχεται να ακυρωθούν, εάν ένας επαγγελματίας τεχνικής υποστήριξης για το Microsoft Dynamics και τα σχετικά προϊόντα προσδιορίσει ότι μια συγκεκριμένη ενημερωμένη έκδοση θα επιλύσει το ζήτημά σας. Για πρόσθετες ερωτήσεις υποστήριξης και για θέματα που δεν αφορούν τη συγκεκριμένη ενημερωμένη έκδοση, θα ισχύσουν οι συνηθισμένες χρεώσεις υποστήριξης.
Πληροφορίες εγκατάστασης
Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για απεικόνιση, χωρίς καμία εγγύηση, ρητή ή σιωπηρή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που επιδεικνύεται και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία και τον εντοπισμό σφαλμάτων διαδικασιών. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας βοηθήσουν να εξηγήσετε τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας. Ωστόσο, δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παρέχουν πρόσθετες λειτουργίες ούτε θα δημιουργήσουν διαδικασίες για να ικανοποιήσουν τις συγκεκριμένες απαιτήσεις σας.
Σημείωση Πριν να εγκαταστήσετε αυτήν την επείγουσα επιδιόρθωση, βεβαιωθείτε ότι όλοι οι χρήστες προγράμματος-πελάτη Microsoft Navision έχουν αποσυνδεθεί από το σύστημα. Αυτό περιλαμβάνει χρήστες προγράμματος-πελάτη Microsoft Navision Application Services (NAS). Θα πρέπει να είστε ο μόνος χρήστης-πελάτης που είναι συνδεδεμένος όταν υλοποιείτε αυτήν την επείγουσα επιδιόρθωση.
Για να υλοποιήσετε αυτήν την επείγουσα επιδιόρθωση, πρέπει να έχετε άδεια προγραμματιστή.
Συνιστούμε ο λογαριασμός χρήστη στο παράθυρο Συνδέσεις των Windows ή στο παράθυρο Συνδέσεις βάσης δεδομένων να έχει το αναγνωριστικό ρόλου "SUPER". Εάν δεν είναι δυνατή η εκχώρηση του αναγνωριστικού ρόλου "SUPER" στο λογαριασμό χρήστη, πρέπει να επαληθεύσετε ότι ο λογαριασμός χρήστη έχει τα ακόλουθα δικαιώματα:
- Το δικαίωμα τροποποίησης για το αντικείμενο που θα αλλάξετε.
- Το δικαίωμα εκτέλεσης για το αντικείμενο αναγνωριστικού αντικειμένου συστήματος 5210 και για το αντικείμενο αναγνωριστικού αντικειμένου συστήματος 9015.
Σημείωση Δεν χρειάζεται να έχετε δικαιώματα στους χώρους αποθήκευσης δεδομένων, εκτός εάν πρέπει να εκτελέσετε επιδιόρθωση δεδομένων.
Αλλαγές κώδικα
Σημείωση Ελέγχετε πάντα τις επιδιορθώσεις κώδικα σε ελεγχόμενο περιβάλλον, πριν να εφαρμόσετε τις ενημερώσεις κώδικα στους υπολογιστές παραγωγής σας.
Για να επιλύσετε αυτό το ζήτημα, ακολουθήστε τα εξής βήματα:
Αλλάξτε τον κωδικό στο Έγγραφο μισθοδοσίας – Υπολογισμός κωδικού_μονάδας (17404). Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα:
Δημιουργήστε μια νέα συνάρτηση ως εξής:
LOCAL PROCEDURE IsCorrDocument@1210011(DocumentNo@1210000 : Code[20]) : Boolean; VAR PayrollDocument@1210001 : Record 17414; BEGIN IF PayrollDocument.GET(DocumentNo) THEN EXIT(PayrollDocument.Correction); END;Αλλάξτε τον κωδικό στη συνάρτηση παρακράτησης. Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα:
Προσθέστε μια τοπική μεταβλητή και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:
- Όνομα: σημάδι
- Τύπος δεδομένων: Ακέραιος
Αλλάξτε τον κωδικό ως εξής:
Υπάρχων κωδικός 1... IF RangeHeader.FIND('+') THEN; FundTax := (PayrollDocLine."Element Type" = PayrollDocLine."Element Type"::Funds); ...Κωδικός αντικατάστασης 1
... IF RangeHeader.FIND('+') THEN; // Add the following lines. IF TaxableGross >= 0 THEN Sign := 1 ELSE Sign := -1; // End of the added lines FundTax := (PayrollDocLine."Element Type" = PayrollDocLine."Element Type"::Funds); ...Υπάρχων κωδικός 2
... // Delete the following line. SETFILTER("Over Amount",'<%1',TaxableGross); IF NOT FIND('+') THEN BEGIN SETRANGE("Over Amount"); IF NOT FIND('-') THEN EXIT(0); END; // Delete the following lines. ReturnValue := "Tax Amount" + ((TaxableGross - "Over Amount") * "Tax %" / 100.0); IF ReturnValue < 0 THEN ReturnValue := 0; IF ("Max Deduction" > 0) AND (ReturnValue > "Max Deduction") THEN ReturnValue := "Max Deduction"; // End of the deleted lines. ...Κωδικός αντικατάστασης 2
... // Add the following line. SETFILTER("Over Amount",'<%1',ABS(TaxableGross)); IF NOT FIND('+') THEN BEGIN SETRANGE("Over Amount"); IF NOT FIND('-') THEN EXIT(0); END; // Add the following lines. ReturnValue := "Tax Amount" + ((TaxableGross - Sign * "Over Amount") * "Tax %" / 100.0); IF (ReturnValue < 0) AND NOT IsCorrDocument(PayrollDocLine."Document No.") THEN ReturnValue := 0 ELSE IF ("Max Deduction" > 0) AND (ABS(ReturnValue) > "Max Deduction") THEN ReturnValue := Sign * "Max Deduction"; // End of the added lines. ...
Αλλάξτε τον κωδικό στο Έγγραφο μισθοδοσίας – Ταχυδρομική μονάδα κώδικα (17405). Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα:
Δημιουργήστε μια νέα συνάρτηση ως εξής:
... LOCAL PROCEDURE GetSignFactor@1210010(Amount@1170000000 : Decimal) : Integer; BEGIN IF Amount >= 0 THEN EXIT(1); EXIT(-1); END; ...Αλλάξτε τον κωδικό στο έναυσμα Onrun ως εξής:
Υπάρχων κώδικας... PostedPayrDocLineToGenJnlLine(PostedPayrollDocLine,GenJnlLine); // Delete the following lines. IF Correction THEN GenJnlLine.VALIDATE(Amount,-PayrollDocBuffer."Tax Amount") ELSE GenJnlLine.VALIDATE(Amount,PayrollDocBuffer."Tax Amount"); // End of deleted lines. PayrollElement.GET(PayrollDocBuffer."Element Code"); ...Κωδικός αντικατάστασης
... PostedPayrDocLineToGenJnlLine(PostedPayrollDocLine,GenJnlLine); // Add the following line. GenJnlLine.VALIDATE(Amount,PayrollDocBuffer."Tax Amount"); ...Αλλάξτε τον κωδικό στη συνάρτηση Aggregate Taxes. Για να το κάνετε αυτό, ακολουθήστε τα παρακάτω βήματα:
Προσθέστε μια τοπική μεταβλητή και, στη συνέχεια, καθορίστε τη μεταβλητή ως εξής:
- Όνομα: σημάδι
- Τύπος δεδομένων: Ακέραιος
Αλλάξτε τον κωδικό ως εξής:
Υπάρχων κώδικας... PayrollDocBuffer.RESET; PayrollDocBuffer.SETRANGE("Element Code",PayrollDocLineFund."Element Code"); IF PayrollDocBuffer.FINDSET THEN REPEAT // Delete the following line. YTDTaxableAmount := YTDTaxableAmount + PayrollDocBuffer."Base Amount"; TempPayrollDocLine2."Employee No." := PayrollDocLineFund."Employee No."; TempPayrollDocLine2."Period Code" := PayrollDocLineFund."Period Code"; TempPayrollDocLine2."Element Code" := PayrollDocLineFund."Element Code"; YTDTaxAmount := PayrollDocCalculate.Withholding(TempPayrollDocLine2,YTDTaxableAmount); // Delete the following line. CurrPeriodTaxAmount := YTDTaxAmount + YTDPostedTaxAmount; PayrollDocBuffer."Tax Amount" := CurrPeriodTaxAmount; PayrollDocBuffer.MODIFY; // Delete the following line. YTDPostedTaxAmount := YTDPostedTaxAmount - CurrPeriodTaxAmount; UNTIL PayrollDocBuffer.NEXT = 0; ...Κωδικός αντικατάστασης
... PayrollDocBuffer.RESET; PayrollDocBuffer.SETRANGE("Element Code",PayrollDocLineFund."Element Code"); IF PayrollDocBuffer.FINDSET THEN REPEAT // Add the following lines. Sign := GetSignFactor(PayrollDocBuffer."Base Amount"); YTDTaxableAmount := YTDTaxableAmount + Sign * PayrollDocBuffer."Base Amount"; // End of the added lines. TempPayrollDocLine2."Document No." := PayrollDocLineFund."Document No."; TempPayrollDocLine2."Employee No." := PayrollDocLineFund."Employee No."; TempPayrollDocLine2."Period Code" := PayrollDocLineFund."Period Code"; TempPayrollDocLine2."Element Code" := PayrollDocLineFund."Element Code"; YTDTaxAmount := PayrollDocCalculate.Withholding(TempPayrollDocLine2,YTDTaxableAmount); // Add the following line. CurrPeriodTaxAmount := Sign * YTDTaxAmount + Sign * YTDPostedTaxAmount; PayrollDocBuffer."Tax Amount" := CurrPeriodTaxAmount; PayrollDocBuffer.MODIFY; // Add the following line. YTDPostedTaxAmount := YTDPostedTaxAmount - Sign * CurrPeriodTaxAmount; UNTIL PayrollDocBuffer.NEXT = 0; ...
Προαπαιτούμενα
Πρέπει να έχετε τη ρωσική έκδοση του Microsoft Dynamics NAV 2009 R2 για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση.
Πληροφορίες κατάργησης
Δεν μπορείτε να καταργήσετε αυτήν την επείγουσα επιδιόρθωση.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".
Σημείωση Αυτό είναι ένα άρθρο "FAST PUBLISH" που δημιουργήθηκε απευθείας μέσα από τον οργανισμό υποστήριξης της Microsoft. Οι πληροφορίες που περιέχονται στο παρόν παρέχονται ως έχουν ως απάντηση σε αναδυόμενα ζητήματα. Ως αποτέλεσμα της ταχύτητας διάθεσής του, το υλικό μπορεί να περιλαμβάνει τυπογραφικά λάθη και μπορεί να αναθεωρηθεί ανά πάσα στιγμή χωρίς προειδοποίηση. Ανατρέξτε στους Όρους χρήσης για άλλα ζητήματα.