מאמר זה חל על Microsoft Dynamics NAV עבור המדינות ואזורי השפה הבאים.
- סלובקית (SK)
- צ'כית (cz)
סימפטומים
נניח שיצרת שורה חדשה ביומן כללי בגירסה סלובקית או בגירסה הצ'כית של Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1). לאחר התאמת הערך של סכום מע"מ באופן ידני ופרסום היומן הכללי, המערכת מחשבת מחדש את סכום המס המוסף לערך (VAT) על רישום היומן ומחליפה את סכום המע"מ המותאם באמצעות הערך המחושב.
פתרון
מידע אודות תיקונים חמים
תיקון חם נתמך זמין כעת מ- Microsoft. עם זאת, הוא מיועד רק לתיקון הבעיה המתוארת במאמר זה. החל אותו רק על מערכות שנתקלות בבעיה ספציפית זו. תיקון חם זה עשוי לקבל בדיקות נוספות. לכן, אם אתה לא מושפע באופן חמור מבעיה זו, מומלץ להמתין ל- Service Pack הבא של Microsoft Dynamics NAV 5.0 או לגירסת MICROSOFT Dynamics NAV הבאה המכילה תיקון חם זה.
הערה במקרים מיוחדים, חיובים שנצבורים בדרך כלל עבור שיחות תמיכה עשויים להבוטל אם מומחה תמיכה טכנית עבור Microsoft Dynamics ומוצרים קשורים קובע שעדכון ספציפי יפתור את הבעיה. עלויות התמיכה הרגילות יחולו על שאלות ובעיות תמיכה נוספות שלא עומדות בדרישות לעדכון הספציפי הרלוונטי.
מידע התקנה
Microsoft מספקת דוגמאות תיכנות לאיור בלבד, ללא אחריות, מפורשת או משתמעת. הדבר כולל, אך אינו מוגבל לאחריות המשתמעת של סוחר או התאמה למטרה מסוימת. מאמר זה מבוסס על ההנחה שאתה מכיר את שפת התיכנות המודגמת, עם הכלים המשמשים ליצירת הליכים ולאתר באגים. מהנדסי התמיכה של Microsoft יכולים לעזור להסביר את הפונקציונליות של הליך מסוים, אך הם לא ישנו דוגמאות אלה כדי לספק פונקציונליות נוספת או לבנות הליכים שיסייעו לך לעמוד בדרישות הספציפיות שלך.
הערה לפני התקנת תיקון חם זה, ודא כי כל משתמשי לקוח Microsoft Navision נרשם המערכת. הדבר כולל משתמשי לקוח של Microsoft Navision Application Services (NAS). עליך להיות משתמש הלקוח היחיד שנכנס בעת יישום תיקון חם זה.
כדי ליישם תיקון חם זה, דרוש לך רשיון מפתח.
אנו ממליצים להקצות לחשבון המשתמש בחלון כניסות Windows או בחלון כניסות מסד נתונים את מזהה התפקיד "SUPER". אם אין אפשרות להקצות לחשבון המשתמש את מזהה התפקיד "SUPER", עליך לוודא שלחשבון המשתמש יש את ההרשאות הבאות:
- ההרשאה Modify עבור האובייקט שאתה תשנה.
- ההרשאה Execute עבור אובייקט System Object ID 5210 ולאובייקט System Object ID 9015.
הערה אין צורך להחזיק בזכויות על מאגרי הנתונים אלא אם עליך לבצע תיקון נתונים.
שינויי קוד
הערה בדוק תמיד את תיקוני הקוד בסביבה מבוקרת לפני החלת התיקונים על מחשבי הייצור שלך.
כדי לפתור בעיה זו, בצע את הפעולות הבאות:
שנה את הקוד בהדק סכום מע"מ - OnValidate ב- Gen. טבלת יומן קו (81) באופן הבא:
קוד קיים... "VAT Difference" := "VAT Amount" - ROUND( // Delete the following lines. Amount * "VAT %" / (100 + "VAT %"), Currency."Amount Rounding Precision",Currency.VATRoundingDirection); // End of the lines. GLSetup.GET; GLSetup.GetRoundingParamentersLCY(Currency,RoundingPrecisionLCY,RoundingDirectionLCY); ...קוד חלופי
... "VAT Difference" := "VAT Amount" - ROUND( // Add the following lines. Amount - ROUND(Amount / (1 + "VAT %" / 100), Currency."Amount Rounding Precision",Currency.VATRoundingDirection)); //End of the lines. GLSetup.GET; GLSetup.GetRoundingParamentersLCY(Currency,RoundingPrecisionLCY,RoundingDirectionLCY); ...שנה את הקוד ב- % מע"מ - OnValidate גורם מדור שני. טבלת יומן קו (81) באופן הבא:
קוד קיים... CASE "VAT Calculation Type" OF "VAT Calculation Type"::"Normal VAT", "VAT Calculation Type"::"Reverse Charge VAT": // Delete the following lines. BEGIN GLSetup.GET; IF GLSetup."Round VAT Coeff." THEN BEGIN GLSetup.GetRoundingParamenters(Currency,RoundingPrecision,RoundingDirection); "VAT Amount" := ROUND( Amount * ROUND("VAT %" / (100 + "VAT %"),GLSetup."VAT Coeff. Rounding Precision"), RoundingPrecision, RoundingDirection); "VAT Base Amount" := Amount - "VAT Amount"; END ELSE BEGIN "VAT Base Amount" := ROUND(Amount / (1 + "VAT %" / 100),Currency."Amount Rounding Precision"); "VAT Amount" := ROUND(Amount - "VAT Base Amount",Currency."Amount Rounding Precision",Currency.VATRoundingDirection); END; END; // End of the lines. "VAT Calculation Type"::"Full VAT": BEGIN IF ("Prepayment Type" = "Prepayment Type"::Advance) AND NOT "System-Created Entry" AND ...קוד חלופי
... CASE "VAT Calculation Type" OF "VAT Calculation Type"::"Normal VAT", "VAT Calculation Type"::"Reverse Charge VAT": // Add the following line. CalcVATAmount(Amount,"VAT Amount","VAT Base Amount","VAT %"); "VAT Calculation Type"::"Full VAT": BEGIN IF ("Prepayment Type" = "Prepayment Type"::Advance) AND NOT "System-Created Entry" AND ...שנה את הקוד ב- Bal. VAT % - OnValidate trigger ב- Gen. טבלת יומן קו (81) באופן הבא:
קוד קיים... CASE "Bal. VAT Calculation Type" OF "Bal. VAT Calculation Type"::"Normal VAT", "Bal. VAT Calculation Type"::"Reverse Charge VAT": // Delete the following lines. BEGIN GLSetup.GET; IF GLSetup."Round VAT Coeff." THEN BEGIN GLSetup.GetRoundingParamenters(Currency,RoundingPrecision,RoundingDirection); "Bal. VAT Amount" := ROUND( -Amount * ROUND("Bal. VAT %" / (100 + "Bal. VAT %"),GLSetup."VAT Coeff. Rounding Precision"), RoundingPrecision, RoundingDirection); "Bal. VAT Base Amount" := -Amount - "Bal. VAT Amount"; END ELSE BEGIN "Bal. VAT Base Amount" := ROUND(-Amount / (1 + "Bal. VAT %" / 100),Currency."Amount Rounding Precision"); "Bal. VAT Amount" := ROUND(-Amount - "Bal. VAT Base Amount",Currency."Amount Rounding Precision",Currency.VATRoundingDirection); END; END; // End of the lines. "Bal. VAT Calculation Type"::"Full VAT": "Bal. VAT Amount" := -Amount; "Bal. VAT Calculation Type"::"Sales Tax": ...קוד חלופי
... CASE "Bal. VAT Calculation Type" OF "Bal. VAT Calculation Type"::"Normal VAT", "Bal. VAT Calculation Type"::"Reverse Charge VAT": // Add the following line CalcVATAmount(-Amount,"Bal. VAT Amount","Bal. VAT Base Amount","Bal. VAT %"); "Bal. VAT Calculation Type"::"Full VAT": "Bal. VAT Amount" := -Amount; "Bal. VAT Calculation Type"::"Sales Tax": ...צור פונקציה מקומית חדשה של CalcVATAmount ב- Gen. טבלת יומן קו (81) באופן הבא:
LOCAL PROCEDURE CalcVATAmount@1220000(Amount@1220000 : Decimal;VAR VATAmount@1220001 : Decimal;VAR VATBase@1220002 : Decimal;VATPercent@1220003 : Decimal); VAR RoundingPrecision@1220004 : Decimal; RoundingDirection@1220005 : Text[1]; BEGIN GLSetup.GET; IF GLSetup."Round VAT Coeff." THEN BEGIN GLSetup.GetRoundingParamenters(Currency,RoundingPrecision,RoundingDirection); VATAmount := ROUND( Amount * ROUND(VATPercent / (100 + VATPercent),GLSetup."VAT Coeff. Rounding Precision"), RoundingPrecision, RoundingDirection); VATBase := Amount - VATAmount; END ELSE BEGIN VATBase := ROUND( Amount / (1 + VATPercent / 100), Currency."Amount Rounding Precision", Currency.VATRoundingDirection); VATAmount := Amount - VATBase; END; END;שנה את הקוד בפונקציה InitVat בפונקציה Gen. Jnl.-Post Line codeunit (12). לשם כך, בצע את השלבים הבאים:
מחק את המשתנים המקומיים הבאים:
- CalculatedVATAmtLCY : עשרוני
- RoundingPrecisionLCY : Decimal
- RoundingDirectionLCY : Text[1]
הוסף משתנה חדש ולאחר מכן ציין את המשתנה באופן הבא:
- שם: VATAmtLCY
- סוג נתונים:עשרוני
שנה את הקוד באופן הבא:
קוד קיים... GenJnlLine."VAT Amount LCY (Non Deduct.)"; GLEntry."VAT Amount" := "Amount (LCY)" - GLEntry.Amount; // Delete the following lines. GLSetup.GET; GLSetup.GetRoundingParamentersLCY(Currency,RoundingPrecisionLCY,RoundingDirectionLCY); IF GLSetup."Round VAT Coeff." THEN CalculatedVATAmtLCY := ROUND( "Amount (LCY)" * ROUND("VAT %" / (100 + "VAT %"),GLSetup."VAT Coeff. Rounding Precision"), RoundingPrecisionLCY, RoundingDirectionLCY) ELSE CalculatedVATAmtLCY := ROUND( "Amount (LCY)" - ROUND("Amount (LCY)" / (1 + "VAT %" / 100),RoundingPrecisionLCY), RoundingPrecisionLCY, RoundingDirectionLCY); IF ("VAT Amount (LCY)" <> CalculatedVATAmtLCY) AND ("Currency Code" <> '') THEN BEGIN // End of the lines. GLEntry.Amount := "VAT Base Amount (LCY)"; GLEntry."VAT Amount" := "VAT Amount (LCY)"; END; ...קוד חלופי
... GenJnlLine."VAT Amount LCY (Non Deduct.)"; GLEntry."VAT Amount" := "Amount (LCY)" - GLEntry.Amount; // Add the following lines. VATAmtLCY := CalculatedVATAmountLCY; IF ("VAT Amount (LCY)" <> VATAmtLCY) AND ("Currency Code" <> '') THEN BEGIN //End of the lines. GLEntry.Amount := "VAT Base Amount (LCY)"; GLEntry."VAT Amount" := "VAT Amount (LCY)"; // Add the following lines. END ELSE IF GLSetup."Round VAT Coeff." THEN BEGIN GLEntry."VAT Amount" := VATAmtLCY - "VAT Amount LCY (Non Deduct.)"; GLEntry.Amount := "Amount (LCY)" - GLEntry."VAT Amount"; //End of the lines. END; ...
שנה את הקוד בפונקציה InsertVAT בפונקציה Gen. Jnl.-Post Line codeunit (12). לשם כך, בצע את השלבים הבאים:
מחק את המשתנים המקומיים הבאים:
- CalculatedVATAmtLCY : עשרוני
- RoundingPrecisionLCY : Decimal
- RoundingDirectionLCY : Text[1]
שנה את הקוד באופן הבא:
קוד קיים... "Posting Date","Currency Code","VAT Difference", CurrExchRate.ExchangeRate("Posting Date","Currency Code"))); // Delete the following lines. GLSetup.GET; GLSetup.GetRoundingParamentersLCY(Currency,RoundingPrecisionLCY,RoundingDirectionLCY); IF GLSetup."Round VAT Coeff." THEN CalculatedVATAmtLCY := ROUND( "Amount (LCY)" * ROUND("VAT %" / (100 + "VAT %"),GLSetup."VAT Coeff. Rounding Precision"), RoundingPrecisionLCY, RoundingDirectionLCY) ELSE CalculatedVATAmtLCY := ROUND( "Amount (LCY)" - ROUND("Amount (LCY)" / (1 + "VAT %" / 100),RoundingPrecisionLCY), RoundingPrecisionLCY, RoundingDirectionLCY); IF ("VAT Amount (LCY)" <> CalculatedVATAmtLCY) AND ("Currency Code" <> '') THEN VATDifferenceLCY := "VAT Amount (LCY)" - CalculatedVATAmtLCY; // End of the lines. IF "VAT Calculation Type" = "VAT Calculation Type"::"Sales Tax" THEN BEGIN IF TaxJurisdiction.Code <> TaxDetail."Tax Jurisdiction Code" THEN ...קוד חלופי
... "Posting Date","Currency Code","VAT Difference", CurrExchRate.ExchangeRate("Posting Date","Currency Code"))); // Add the following lines. IF "VAT Amount (LCY)" <> CalculatedVATAmountLCY THEN VATDifferenceLCY := "VAT Amount (LCY)" - CalculatedVATAmountLCY; //End of the lines. IF "VAT Calculation Type" = "VAT Calculation Type"::"Sales Tax" THEN BEGIN IF TaxJurisdiction.Code <> TaxDetail."Tax Jurisdiction Code" THEN ...
צור פונקציה מקומית חדשה של CalculatedVATAmountLCY ב- Gen. Jnl.-Post Line codeunit (12) באופן הבא:
LOCAL PROCEDURE CalculatedVATAmountLCY@1220009() : Decimal; VAR CalculatedVATAmtLCY@1220002 : Decimal; RoundingPrecisionLCY@1220001 : Decimal; RoundingDirectionLCY@1220000 : Text[1]; BEGIN WITH GenJnlLine DO BEGIN IF "Currency Code" = '' THEN EXIT("VAT Amount (LCY)"); GLSetup.GET; GLSetup.GetRoundingParamentersLCY(Currency,RoundingPrecisionLCY,RoundingDirectionLCY); IF GLSetup."Round VAT Coeff." THEN CalculatedVATAmtLCY := ROUND( "Amount (LCY)" * ROUND("VAT %" / (100 + "VAT %"),GLSetup."VAT Coeff. Rounding Precision"), RoundingPrecisionLCY, RoundingDirectionLCY) ELSE CalculatedVATAmtLCY := ROUND( "Amount (LCY)" - ROUND("Amount (LCY)" / (1 + "VAT %" / 100),RoundingPrecisionLCY), RoundingPrecisionLCY, RoundingDirectionLCY); EXIT(CalculatedVATAmtLCY); END; END;
דרישות מוקדמות
דרוש לך אחד המוצרים הבאים מותקנים כדי להחיל תיקון חם זה:
- הגירסה הסלובקית של Microsoft Dynamics NAV 5.0 Service Pack 1
- הגירסה הצ'כית של Microsoft Dynamics NAV 5.0 Service Pack 1
בנוסף, עליך להתקין את התיקון החם 2527241 כדי להחיל תיקון חם זה.
לקבלת מידע נוסף, לחץ על מספר המאמר הבא כדי להציג את המאמר מתוך מאגר הידע Microsoft Knowledge Base:
2527241 סכום המע"מ שפורסם בערך המע"מ שגוי בעת שימוש בפונקציונליות "Round VAT Coeff" בגירסה הצ'כית של Microsoft Dynamics NAV 5.0 SP1 עם Feature Pack 1 מותקן
מידע על הסרה
אין באפשרותך להסיר תיקון חם זה.
מצב
Microsoft אישרה שזוהי בעיה במוצרי Microsoft המפורטים בסעיף "חל על".
הערה זהו מאמר "FAST PUBLISH" שנוצר ישירות מתוך ארגון התמיכה של Microsoft. המידע הכלול ב- Herein מסופק כפי שהוא בתגובה לבעיות מתפתחות. כתוצאה מההפיכתה לזמינה, החומרים עשויים לכלול שגיאות טיפוגרפיות וייתכן שיתוקנו בכל עת ללא הודעה מוקדמת. ראה תנאי שימוש לקבלת שיקולים אחרים.