Ovaj se članak odnosi na regionalnu shemu sustava Microsoft Dynamics NAV za ruski (ru).
Simptomi
Pretpostavimo da ste instalirali lokalni kritični PS59774 ažuriranja i lokalni kritični PS60060 ažuriranja za rusku verziju sustava Microsoft Dynamics NAV 2009 R2. Dodatne informacije potražite na sljedećim Microsoftovim web-mjestima:
- Lokalno kritično ažuriranje za Microsoft Dynamics NAV 2009 RU "Promjene u izračunu doprinosa za osiguranje za bolovanje – novi predložak za obrazac NDFL-2
- Персонал и зарплата. Регистр налога на доходы физических лиц Microsoft Dynamics NAV 2009 R2 - Россия
Nakon knjiženja ispravka za dokument o plaćama sustav popunjava iznose za ispravak u glavnoj knjizi (G/L) unose. Međutim, iznosi se razlikuju od iznosa u glavnim unosima za izvorni dokument o plaćama.
Rješenje
Informacije o hitnom popravku
Microsoft sada nudi podržani hitni popravak. No njegova je namjena samo ispravljanje problema opisanog u ovom članku. Primijenite ga samo na sustave koji imaju taj specifični problem. Ovaj hitni popravak može proći dodatna testiranja. Stoga, ako se ovaj problem ne odnosi ozbiljno, preporučujemo da pričekate sljedeći servisni paket za Microsoft Dynamics NAV 2009 ili sljedeću verziju sustava Microsoft Dynamics NAV koja sadrži ovaj hitni popravak.
Napomena: U posebnim slučajevima, ako stručnjak tehničke podrške za Microsoft Dynamics i povezane proizvode utvrdi da određeno ažuriranje može riješiti problem, poziv službi podrške može biti besplatan. Uobičajene cijene poziva službi za podršku primjenjuju se na dodatna pitanja i probleme koje nemaju veze s pripadnom nadopunom.
Informacije o instalaciji
Microsoft daje primjere programiranja samo za ilustraciju, bez jamstva, bilo izričitog ili prešutnog. To uključuje, bez ograničenja, implicitna jamstva utrživosti ili prikladnosti za određenu svrhu. U članku se podrazumijeva da ste upoznati s programskim jezikom koji se pokazuje te s alatima koji se koriste za stvaranje i ispravljanje pogrešaka procedura. Microsoftovi inženjeri za podršku mogu vam objasniti funkcionalnost određenog postupka. Međutim, oni neće mijenjati te primjere radi pružanja dodatne funkcionalnosti ili konstruirati postupke koji zadovoljavaju vaše specifične zahtjeve.
Napomena Prije nego što instalirate ovaj hitni popravak, provjerite jesu li svi korisnici Microsoft Navision klijenta odjavljeni sa sustava. To obuhvaća korisnike klijentskih usluga Microsoft Navision Application Services (NAS). Trebali biste biti jedini klijentski korisnik prijavljen na vrijeme implementacije ovog hitnog popravka.
Da biste implementirali ovaj hitni popravak, morate imati licencu za razvojne inženjere.
Preporučujemo da se korisničkom računu u prozoru Prijave u sustav Windows ili u prozoru Prijave u bazu podataka dodijeli ID uloge "SUPER". Ako korisničkom računu nije moguće dodijeliti ID uloge "SUPER", morate provjeriti ima li korisnički račun sljedeće dozvole:
- Dozvola za izmjenu objekta koji ćete mijenjati.
- Dozvola za izvršavanje za objekt System Object ID 5210 i za objekt System Object ID 9015
Napomena: nemate pravo na spremišta podataka, osim ako morate popraviti podatke.
Promjene koda
Napomena: uvijek testirajte popravke koda u kontroliranom okruženju prije primjene popravaka na proizvodnim računalima.
Da biste riješili taj problem, učinite sljedeće:
Promijenite kod u dokumentu Payroll – Calculatecodeunit (17404). Da biste to učinili, slijedite ove korake:
Na sljedeći način stvorite novu funkciju:
LOCAL PROCEDURE IsCorrDocument@1210011(DocumentNo@1210000 : Code[20]) : Boolean; VAR PayrollDocument@1210001 : Record 17414; BEGIN IF PayrollDocument.GET(DocumentNo) THEN EXIT(PayrollDocument.Correction); END;Promijenite kod u funkciji zadržavanja podatke. Slijedite korake u nastavku.
Dodajte lokalnu varijablu, a zatim je navedite na sljedeći način:
- Ime: Potpis
- Vrsta podataka: cijeli broj
Kod promijenite na sljedeći način:
Postojeći kod 1... IF RangeHeader.FIND('+') THEN; FundTax := (PayrollDocLine."Element Type" = PayrollDocLine."Element Type"::Funds); ...Zamjenski kod 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); ...Postojeći kod 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. ...Zamjenski kod 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. ...
Promijenite šifru na dokumentu Plaće – Poštanski brojjedinica (17405). Slijedite korake u nastavku.
Na sljedeći način stvorite novu funkciju:
... LOCAL PROCEDURE GetSignFactor@1210010(Amount@1170000000 : Decimal) : Integer; BEGIN IF Amount >= 0 THEN EXIT(1); EXIT(-1); END; ...Promijenite kod u okidaču Prilikom pokretanja na sljedeći način:
Postojeći kod... 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"); ...Zamjenski kôd
... PostedPayrDocLineToGenJnlLine(PostedPayrollDocLine,GenJnlLine); // Add the following line. GenJnlLine.VALIDATE(Amount,PayrollDocBuffer."Tax Amount"); ...Promijenite kod u funkciji Zbirni porezi. Slijedite korake u nastavku.
Dodajte lokalnu varijablu, a zatim je navedite na sljedeći način:
- Ime: Potpis
- Vrsta podataka: cijeli broj
Kod promijenite na sljedeći način:
Postojeći kod... 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; ...Zamjenski kôd
... 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; ...
Preduvjeti
Da biste primijenili ovaj hitni popravak, morate imati instaliranu rusku verziju sustava Microsoft Dynamics NAV 2009 R2.
Podaci o uklanjanju
Ovaj hitni popravak ne možete ukloniti.
Status
Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.
Napomena: Ovo je članak "FAST PUBLISH" stvoren izravno u Microsoftovoj ustanovi za podršku. Ovdje sadržane informacije pružaju se takve kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske pogreške i mogu se revidirati u bilo kojem trenutku bez prethodne najave. Dodatne napomene potražite u Uvjetima korištenja .