invoice rounding precision in GL

I am involved in implementing for a customer in Muscat. In muscat currency decimals should be 3. I have set up the decimal places in the currency accordingly. But in the GL the details are not getting posted to 3 decimals. I am unable to change the invoice rounding precision to 0.001 for the purpose of this. It always gives an error message that decimal places cannot be more than 2 places.This is SQL option. Have any body else come across this problem and as it been resolved?Is there any solution available for this?

I believe that Navision is written for the g/l to have just two decimal places, irrespective of the number of decimal places of your currency.

Hi, If the Amount Decimal Places column in GL Setup is setup as ‘3:3’ then all the gl entries displaying 3 decimals in navision properitory database and also allow as to change the Inv. Rouding Precesion (LCY) to 3 decimals. Where as the Navision SQL database implementation does not change the GL figures to 3 decimals and also not allowing as to enter three decimals in the setup screen. This is strange, the same feature works in Navision Properitory database where as in sql does not work. Any comments on this…

Is this the local currency IE: Blank Currency Code? if so: Contact your reseller and find out the following Are you using a worlwide or local version ?? Ask them to have a look at the currency table there is a function where you can localise the rounding GB & Worldwide Versions sample code InitRoundingPrecision() GLSetup.GET; IF GLSetup.“Amount Rounding Precision” <> 0 THEN “Amount Rounding Precision” := GLSetup.“Amount Rounding Precision” ELSE “Amount Rounding Precision” := 0.01; IF GLSetup.“Unit-Amount Rounding Precision” <> 0 THEN “Unit-Amount Rounding Precision” := GLSetup.“Unit-Amount Rounding Precision” ELSE “Unit-Amount Rounding Precision” := 0.00001; Anywhere there is no “Currency Code” these are what the system will use for rounding, so if you change the Invoice Rounding Precision the damage will already be done as the amounts will already be rounded to 0.01 You could localise this code to 0.001, this would make it 3 places as default for new companies without having to remember to fill in the values in the G/L setup, which for a good reason the fields are not on the G/L Setup form in the UK, this I assume is to stop users filling them in or changing them with all the problems that would come after;

Check the general ledger setup records… on the standard database there are a couple of fields for the rounding that are not being shown and are controlling the number of decimals used on rounding… Now that i see David post those are the ones… those fields are not in the setup form… maybe as David says because they want to stop users from changing them… but in old versions they were. It has caused more than one trouble not having them at least visibles on the setup form (i’ve to disagree on not having those fields on the setup, as if they just wanted the users not to change them they could make those fields non editable…). Sometimes the fields were having initial values of 1 and you were having to change them to 0.01… and things like that… and if you didn’t noticed fast enough… well… you know… Regards,

Localised copies should be set by Navision to suit local currencies. If there is not a local version for Muscat you will have to change the worldwide or other by either by adding the fields and editing the values for all companies in all databases, or localise the functions in the customers and your master databases. A World Wide version would be set at 0.01 (Amount)and 0.00001 for (Unit Amount) as default in the InitRoundingPrecision()function on the currency table. For some customers the unit amount at 5 decimals might not be enough, if I buy 100,000 sheets of paper for 33.99 LCY the unit cost would need seven places 0.0003399 each If you look in the codeunits these are used as IF “Currency Code” = ‘’ THEN Currency.InitRoundingPrecision ELSE BEGIN Currency.GET(“Currency Code”); Currency.TESTFIELD(“Amount Rounding Precision”); END; the all through the system tables and codeunits the values are rounded as Amount := ROUND(Amount,Currency.“Amount Rounding Precision”) “Unit Cost” := ROUND(“Unit Cost”,Currency.“Unit Amt. Rounding Precision”) So by setting the Value to 0.001 in the function this should solve your problem with one simple change.