لوگوی تجارت هوشمند درسان

قوانین رندینگ (اعشار) در سامانه مودیان

بازگشت
سامانه مودیان قوانین رندینگ آموزشی

قوانین رندینگ (اعشار) در سامانه مودیان

راهنمای کامل و اجرایی برای جلوگیری از خطاهای «نامعتبر بودن مبلغ/اعشار» در هنگام صدور و ارسال صورتحساب الکترونیکی.

0
ریالی (قطع کردن)
4
ارزی (قطع کردن)
8
مبلغ واحد (حداکثر)
قاعده طلایی
در سامانه مودیان «گرد کردن (Round)» معمولاً مبنا نیست؛ قاعده عمومی «قطع کردن (Truncate)» است: یعنی ارقام اضافی اعشار حذف می‌شوند و افزایش انجام نمی‌شود.
جستجوی هوشمند قوانین رندینگ
سوال را بنویسید (مثل: «مبلغ واحد چند رقم اعشار دارد؟» یا «ریالی چند رقم؟»)
یک سوال را انتخاب کنید تا پاسخ نمایش داده شود.

خلاصه قوانین (برای پیاده‌سازی سریع)

1
مبالغ ریالی
اغلب فیلدهای ریالی (جمع‌ها، مالیات، عوارض، تخفیف‌ها و …) باید بدون اعشار ارسال شوند (0 رقم اعشار) و اگر محاسبات شما اعشار تولید کرد، باید با روش «قطع کردن» به عدد صحیح تبدیل شود.
2
مبالغ ارزی
برای فیلدهای ارزی، حداکثر 4 رقم اعشار مجاز است و باز هم روش محاسبه «قطع کردن» می‌باشد.
3
مبلغ واحد
«مبلغ واحد» (Unit Price) می‌تواند اعشاری باشد و طبق سند فنی، حداکثر 8 رقم اعشار مجاز دارد. اگر بیش از 8 رقم تولید شود باید قطع شود.

رندینگ یعنی چی؟ تفاوت «گرد کردن» با «قطع کردن»

Round (گرد کردن)
بر اساس رقم بعدی، مقدار افزایش/کاهش می‌کند. مثال: 12.345 → (با 2 رقم) 12.35
Truncate (قطع کردن)
ارقام اضافی حذف می‌شوند و مقدار افزایش نمی‌یابد. مثال: 12.345 → (با 2 رقم) 12.34
چرا این مهم است؟
بسیاری از خطاهای رایج سامانه مودیان، ناشی از مغایرت اعشار/طول فیلدهاست. با اعمال «قطع کردن» طبق تعداد رقم اعشار مجاز هر فیلد، ریسک رد شدن صورتحساب به شدت کم می‌شود.

تمرکز روی فیلدهای حساس

نوع مقدار حداکثر رقم اعشار روش نکته اجرایی
مبالغ ریالی (به‌جز مبلغ واحد) 0 قطع کردن هر اعشار تولید شد حذف شود (به عدد صحیح)
مبالغ ارزی 4 قطع کردن به‌ویژه در الگوهای ارزی/صادراتی
مبلغ واحد (Unit Price) 8 قطع کردن طبق سند فنی «مبلغ واحد»، حداکثر 8 رقم اعشار
یادآوری
اگر محاسبات شما منفی هم تولید می‌کند (مثل برگشت از فروش)، «قطع کردن» باید به سمت صفر انجام شود (نه همیشه floor).

فرمول‌های استاندارد قطع کردن (0، 4 و 8 رقم اعشار)

قاعده عمومی (Truncate به سمت صفر)
اگر مقدار مثبت است: floor(x × 10^n) ÷ 10^n
اگر مقدار منفی است: ceil(x × 10^n) ÷ 10^n
ریالی (0 رقم اعشار)
Trunc0(x) = (x ≥ 0) ? floor(x) : ceil(x)
ارزی (4 رقم اعشار)
Trunc4(x) = (x ≥ 0) ? floor(x×10000)/10000 : ceil(x×10000)/10000
مبلغ واحد (8 رقم اعشار)
Trunc8(x) = (x ≥ 0) ? floor(x×100000000)/100000000 : ceil(x×100000000)/100000000
کاربرد سریع
اگر در خروجی اکسل/نرم‌افزار واسط، «مبلغ واحد» شما بیشتر از 8 رقم اعشار داشت، قبل از ارسال به سامانه مودیان آن را Trunc8 کنید. برای مبالغ ریالی (TBILL، TODAM، TVAM و …) هم Trunc0 را اعمال کنید.

خطاها و مشکلات رایج (و راه‌حل)

1) رد شدن صورتحساب به دلیل اعشار نامعتبر
معمولاً وقتی رخ می‌دهد که فیلدی بیشتر از اعشار مجاز ارسال شود (مثلاً مبلغ واحد با بیش از 8 اعشار). راه‌حل: قبل از ساخت JSON نهایی، Trunc مطابق فیلد اعمال شود.
2) اختلاف یک ریال/یک واحد در جمع‌ها
اگر در یک جا Round و در جای دیگر Truncate کنید، جمع‌ها ناهماهنگ می‌شوند. راه‌حل: یک سیاست واحد «قطع کردن» و اعمال در تمام مراحل محاسبه.
3) ارزی/صادراتی: نرخ VAT باید صفر باشد
در الگوی صادرات معمولاً نرخ مالیات بر ارزش افزوده باید صفر ثبت شود (و اعشار ارزی هم حداکثر 4 رقم).
4) برگشت از فروش و مقادیر منفی
اگر از floor برای منفی‌ها استفاده کنید، مقدار از نظر قدرمطلق بزرگ‌تر می‌شود. راه‌حل: قطع کردن به سمت صفر (برای منفی‌ها از ceil استفاده کنید).
171
(0)
ثبت نظر
دسته‌بندی آموزش‌ها