چنانچه در هریک از مراحل نصب یا کاربری نرم‌افزارها به مشکلی برخورد کرده‌اید یا هر سوال، اشکال یا ابهامی در این زمینه دارید، می‌توانید پاسخ خود را ابتدا در مطالب موجود جستجو و در صورت لزوم به عنوان یک مبحث جدید مطرح کنید، تا کارشناسان پشتیبانی به آن پاسخ دهند.

به منظور ثبت سوال جدید و یا پاسخ به موضوعات موجود، ابتدا می بایست از طریق صفحه مربوطه به سامانه وارد شوید. چنانچه نام کاربری دریافت نکرده اید، به صورت رایگان و از طریق صفحه مربوطه، ابتدا در سامانه ثبت نام نمایید.

قبليقبلي Go to previous topic
بعديبعدي Go to next topic
آخرين ارسال 30 بهمن 1402 11:43 ق.ظ توسط روزبه
نسخه 12.10 (1210)
�6 پاسخ
مرتب:
شما مجاز به پاسخ به اين پست نمي باشيد.
مولف پيغام ها
روزبه
کاربر با تجربه
کاربر با تجربه

--
30 بهمن 1402 10:58 ق.ظ

    امکانات جدید نسخه 12.10 نرم‌افزار مالی یکپارچه نوسا

     

    ویرایش 12.10 نرم‌افزار مالی یکپارچه نوسا به عنوان نسخه خارج از نوبت در بهمن ماه سال 1402 جهت بازنویسی کلی ابزار اتصال به سامانه مودیان و نرم‌افزار فروش نوسا با توجه به تغییرات گسترده زیرساخت سامانه مودیان طی سال 1402 ارائه گردیده است، هر چند در این نسخه تعدادی از خواسته‌های کلی که تغییر و تست آن از قبل جهت ارائه در نسخ 13 در سال 1403 به پایان رسیده بود، همراه با برخی از اشکالات گزارش شده به شرح موجود در پایان این سلسله مستند در دسترس است، ولیکن استفاده از این نسخه به صورت ویژه برای استفاده کنندگان ابزار سامانه مودیان مفید خواهد بود.

     

    نحوه پیاده سازی و کارکرد ابزار اتصال به سامانه مودیان نوسا یک تفاوت چشم گیر با عموم نرم‌افزارهای مشابه، ابزار و راهکارهای دیگر دارد، و آن، یکپارچگی کامل این ابزار با نرم‌افزار فروش نوسا است، به این صورت که در عموم نرم‌افزارهای قابل تهیه در کشور، اطلاعات فاکتورهای فروش بصورت موجودی کاملا جداگانه از نرم‌افزار صرفا بصورت یکباره (با استفاده از اکسل و یا ابزار فراخوانی از نرم‌افزار فروش) و یا تک به تک (ورود داده به نرم‌افزار مربوطه) ذخیره گردیده و به سامانه مودیان توسط نرم‌افزار واسط ارسال می‌گردند. سپس استفاده کننده می‌تواند اطلاعات ارسالی را استعلام گرفته و از وضعیت فاکتور مربوطه با خبر گردد، هر چند پیاده سازی چنین نرم‌افزاری بسیار ساده تر از پیاده سازی یکپارچه این ابزار در دل نرم‌افزار فروش می‌باشد ولیکن در صورت استفاده از این روش، مشکلات عدیده‌ای برای استفاده کننده به مرور زمان بوجود خواهد آمد که برخی از این مشکلات به شرح زیر است:

     

    •  با ارسال اطلاعات توسط ابزار و یا نرم افزار مجزا، کنترل سلامت و مغایرت اطلاعات ارسالی و اطلاعات موجود در نرم‌افزار فروش امکان پذیر نخواهد بود، برای نمونه ممکن است در تاریخی تعدادی از فاکتور ها برای سامانه مودیان ارسال گردد، در صورتی که در تاریخ آتی آن فاکتور ها شامل هر گونه اصلاح گردد، استفاده کننده به ناچار باید اصلاح را بصورت دستی ثبت کرده و به یاد داشته باشد که فاکتور اصلاحی را به درستی برای سامانه مودیان ارسال نماید... در صورتی که چندین پرسنل در نرم‌افزار فروش دسترسی به تغییر در اطلاعات مشتری و یا فاکتورها را دارا باشند، عموما جلوگیری از مغایرت در این شرایط غیر ممکن می‌گردد.
    • با دریافت استعلام از سامانه، اطلاعات استعلام صرفا در نرم‌افزار سامانه مودیان موجود بوده و باید بصورت جداگانه توسط استفاده کننده نگهداری گردد تا زمان رسیدگی با فاکتورهای موجود در نرم‌افزار فروش ارائه گردد. نگهداری این اطلاعات شامل انواع شناسه و تاریخ‌ها برای انواع ثبت‌ها از جمله اصلاح، ابطال و برگشت، بصورت جزیره‌ای و دستی کاری دشوار خواهد بود. 
    • با جدا کردن سامانه از نرم‌افزار فروش مبدا و یا صرفا اتصال ضعیف آن در حد یک فراخوانی ساده، با توجه به پیچیدگی های موجود در فرآیند فعلی اصلاح، برگشت و ابطال و تغییرات و پیچیدگی‌های روز افزون نسخ جدید سامانه مودیان، صحت، دقت و نگهداری یکسان اطلاعات موجود در نرم‌افزار فروش و سامانه مودیان عموما غیر ممکن می‌گردد. پیچیدگی‌های روز‌افزون فرآیند‌های فاکتور‌های اصلاحی، برگشتی و ابطالی در ادامه این مستند به تفصیل در دسترس می‌باشد. 
    • در برخی از نرم‌افزارها، از آنجا که نرم‌افزار فروش مبدا، قابلیت نگهداری اطلاعات کامل مورد نیاز سامانه مودیان را نداشته، ثبت اطلاعات بصورت دستی و یا تکراری الزامی می‌باشد. 

     

    با توجه به نکات فوق، مخصوصا با توجه به مغایرت اجتناب ناپذیر داده بین سامانه مودیان و نرم‌افزار فروش در صورت جدا سازی نرم‌افزار فروش و ابزار سامانه مودیان، به دلیلی پیچیدگی و تغییرات گسترده سامانه مودیان، شرکت نوسا یکی از تنها مجموعه‌های تولید کننده نرم‌افزار در ایران است که ابزار سامانه مودیان خود را بصورت کاملا یکپارچه با نرم‌افزار فروش و زیرساخت مالی ارائه داده است، با توجه به این نکته، طبیعی است که هر گونه تغییرات گسترده در روش کارکرد سامانه مودیان ما را الزام می‌کند تا بخشی از نرم‌افزار فروش و ابزار سامانه مودیان را بصورت کلی باز نویسی نماییم. این پیچیدگی هر چند بسیار دشوار، هزینه بر و غیر قابل اجتناب، تنها راه حل منطقی برای حفظ کیفیت، دقت و سلامت داده موجود در نرم‌افزارهای نوسا در مقابله با این قانون جدید و ابزار خام و در دست تغییر آن می‌باشد.

     

    طی 11 ماه گذشته، از زمان ارائه نسخه 12.02 تا به امروز، همانطور که پیش‌بینی می‌کردیم، تغییرات زیادی در زیرساخت، API و کارکرد سامانه مودیان مالیاتی بوجود آمده که برخی از آن‌ها با ارائه سرور‌های بروز شده (فایل DLL) مجزا ارائه شده در پنج نوبت به استفاده کنندگان ابزار اتصال به این سامانه نوسا، تا حد زیادی رفع گردید، متاسفانه برخی از تغییرات مخصوصا طی دو ماه گذشته، اشکالات متعددی را در رویه‌های اجرایی نرم‌افزارهای نوسا ایجاد کردند. تلاش کردیم این اشکالات را با کمترین اثر مخرب برطرف کنیم. بسیار امیدوار بودیم که برخی از تغییرات در سامانه‌ی مودیان، اشکالات اساسی در زیرسیستم‌های این سامانه را هدف‌گیری کرده و سعی در اصلاح آنها داشته باشند، وضعیتی که هرگز رخ نداد و تغییرات، عمدتا یا در مواردی پیاده سازی شده که طبق تعریف نیاز به تغییر نداشتند (مثل زیرسیستم جمع‌آوری داده‌ها که در نسخه‌ی دوم API (فعلا غیر اجباری، نیاز به گواهی امضای الکترونیکی از نوع دولتی gica دارد) یا اشکالات جدیدی که از قبل در سامانه وجود نداشت، مثل تاثیر وضعیت تایید صورت‌حساب توسط خریدار در فرآیندها، بدون اینکه روشی برای اطلاع‌رسانی به نرم‌افزار ارسال‌کننده‌ی صورت‌حساب‌ها بصورت خودکار فراهم شده باشد و یا تغییر اساسی یک نوع از صورت‌حساب تعریف شده، از فروش ارزی به فروش ارز (صرافی) که با توجه به میزان تغییرات آن، دیگر مورد استفاده عام نداشته و در نسخه 12.10 ابزار سامانه مودیان توسط نوسا قابل پشتیبانی نمی‌باشد.

     

    احتمال زیادی وجود دارد که این رویه در آینده هم ادامه داشته باشد و درگیری ما با سامانه و تغییرات جدید آن فعلا پایانی نداشته باشد. عموم اشکالات اساسی سامانه همچنان رفع نشده باقی مانده‌اند. علی‌رغم این موضوع، در نسخه 12.10 ابزار سامانه مودیان را با توجه به تغییرات اساسی انجام گرفته طی نسخ ارائه شده سامانه مجدد بازنویسی نمودیم تا قادر به پاسخ‌گویی به نیاز عموم کاربران برای ارسال صورت‌حساب‌ها به سامانه مودیان با توجه به ابزار ارائه شده تا دی ماه سال 1402 باشیم. این تغییرات آن‌چنان مفصل بودند که مستندات قبلی (نسخه 1202) را عملا فاقد کاربرد ساختند. به همین دلیل تمام مطالب مربوط را بروزرسانی و مجددا در این مستند گردآوری کرده‌ایم؛ به صورتی که کاربران جدید نیازی به رجوع به مستندات قبلی نداشته باشند. البته سعی زیادی کرده‌ایم که ساختار مستند حفظ شود؛ فصل‌های قبلی را اصلاح و فصل‌های جدیدی هم به مستند اضافه کرده‌ایم. برای اینکه کاربرانی که با سیستم آشنا هستند، ساده‌تر و سریع‌تر بتوانند از این مستند استفاده کنند، یک فصل را به ذکر فهرست‌وار تغییرات مزبور اختصاص داده‌ایم.

     

    از آنجا که اکثر امکانات جدید در این نسخه همچنان مستلزم اتصال به سامانه مودیان، ثبت نام و دریافت شناسه‌ی یکتای حافظه‌ی مالیاتی و بسیاری تشریفات بروکراتیک مربوطه است و از آنجا که زیرساخت ارائه شده توسط سازمان امور مالیاتی همچنان در دست تکمیل است، احتمالا این نسخه از نرم‌افزار نیز طی چند ماه آتی همچنان نیاز به تغییرات متعدد خواهد داشت و همراه با نسخ جدید قابل ارائه در سال 1403 جهت پشتیبانی از این تغییرات، برخی امکانات برنامه ریزی شده جدید برای سال 1403 هم در دسترس مشتریان بروز نرم‌افزارهای نوسا قرار خواهد گرفت.

     

    در پست پایانی این مستند به برخی امکانات جدید و اشکالات رفع شده در نسخه 12.10 خارج از بازنویسی کلی ابزار اتصال نرم‌افزار فروش به سامانه مودیان اشاره گردیده است، در صورتی که شما از ابزار سامانه مودیان و نرم‌افزار فروش نوسا در رابطه با ارسال اطلاعات به سامانه مودیان استفاده نمی‌نمایید، جهت آشنایی با سایر امکانات، تغییرات و مشکلات رفع شده در نسخه 12.10 لطفا به پست آخر این مجموعه مستند مراجعه فرمایید. 

     

    در صورتی که سرور و و یا کلاینت‌های شما همچنان حداقل از ویندوز 10 (نسخه 21H1 به بالا) و یا ویندوز سرور 2016 به بالا استفاده نکرده و یا SQL سرور شما از 2016 قدیمی‌تر است، لطفا قبل از بروز‌رسانی نسخه، با توجه به آخرین نیازمند‌ی‌های سخت‌افزاری موجود در بخش فایل و مستندات، از بروز‌رسانی ساختار‌های مورد نیاز اطمینان حاصل فرمایید. این نسخه، مانند نسخ قبلی ارائه شده قابلیت کارکرد صحیح در نسخ قدیمی خارج از پشتیبانی نرم‌افزارهای زیرساخت مایکروسافت را نخواهد داشت.  

     

    وبینار تغییرات در سامانه مودیان، روش دریافت گواهی جدید کارپوشه و همچنین امکانات گسترده نسخه 12.10 ابزار سامانه مودیان در تاریخ 9 اسفند ماه سال 1402 برگزار شد. جهت بازپخش این وبینار به پست دوم مراجعه فرمایید.

     

    لینک صفحه دانلود آخرین نسخه بروز نرم‌افزار در دسترس بوده و لیست کامل‌تر برخی از امکانات، تغییرات و نحوه استفاده از آن‌ها در ادامه این متن قابل مطالعه می‌باشد.

     

     

    روزبه
    کاربر با تجربه
    کاربر با تجربه

    --
    30 بهمن 1402 11:02 ق.ظ

    بازنویسی اساسی ابزار اتصال نرم‌افزار فروش به سامانه مودیان - بخش اول: کلیات، تعاریف، اطلاعات مفهومی و تاریخی

     

    مطابق قانون نظام پایانه‌های فروشگاهی و سامانه مودیان مصوب مهر ماه سال 1398، مودیان از این پس وظایف جدیدی در رابطه با سازمان امور مالیاتی کشور برعهده دارند. برای کاربران نوسا، انجام برخی از این وظایف نیاز به تهیه ابزار جدیدی جهت اتصال نرم‌افزار فروش نوسا و مجموعه امکانات جدیدی در سیستم فروش نوسا بوجود آورده است. الزامات مطرح شده در قانون برای تبعیت از دستورالعمل‌های ذکر شده بسته به نوع مودی به شرح زیر برقرار است:

     

    • تمامی شرکت‌ها و اشخاص حقوقی (به استثنای اشخاص حقوقی موضوع ماده 16 قانون مالیات بر ارزش افزوده) از تاریخ 1 مهر ماه 1402
    • تمامی صاحبان مشاغل (اشخاص حقیقی) که تا پایان شهریور ماه بیش از 180 میلیارد ریال فروش در سال 1402 داشتند از تاریخ اول دی ماه 1402
    • تمامی صاحبان مشاغل (اشخاص حقیقی) که تا پایان آذر ماه بیش از 180 میلیارد ریال فروش در سال 1402 داشتند از تاریخ اول فروردین ماه 1403
    • تمامی صاحبان مشاغل (اشخاص حقیقی) که تا پایان اسفند ماه بیش از 180 میلیارد ریال فروش در سال 1402 داشتند از تاریخ اول تیر ماه 1403

     

    گروه توسعه نرم‌افزارهای مالی نوسا، بنا به تغییر قانون و نیاز مشتریان، الزام به فراهم کردن امکاناتی برای ارتباط با سامانه مودیان و ارسال صورت‌حساب‌ها مطابق دستورالعمل‌های ارائه شده در ویرایش 12.02 سیستم یکپارچه مالی نوسا از اول سال 1402 گردید. با اینکه حداکثر تلاش برای ایجاد مجموعه امکاناتی منسجم و قابل اطمینان بکار رفته است اما همانطور که احتمال داده بودیم، تحت تاثیر عوامل گوناگون، من جمله تغییرات ناگزیری که طی این 11 ماه در سامانه مودیان ایجاد شده، تغییرات اساسی در آنچه در نسخه 12.02 این ابزار تولید شده بود، در نسخه 12.10 داشتیم. متاسفانه همانطور که از اطلاعات و پیچیدگی موجود در فرآیند‌های ارسال انواع فاکتور‌ها به سامانه مودیان در ادامه این مستند قابل تشخیص است، مختصات سیستم، شرح فرآیندهای قابل اجرا و تغییرات اساسی که در داده‌های سیستم نوسا به عمل آمده است عموما جهت نگهداری داده دقیق در مواجهه با سامانه مودیان در دست ساخت بوده و هیچ‌یک از این تغییرات گستدره و فرآیندهای پیچیده به اختیار ما نبوده‌اند.

     

    در این مستند، به توصیف امکانات پیاده‌سازی شده در نسخه بروز این ابزار و تغییراتی که در سیستم فروش به عمل آورده‌ایم خواهیم پرداخت. در این مسیر، در بخش مقدمه به سوابق قانونی و دستورالعمل‌ها و وظایف جدیدی که برای مودیان لحاظ شده‌اند می‌پردازیم. در ادامه، به مفاهیم جدیدی که در این رابطه در سیستم فروش نوسا معرفی و پیاده‌سازی شده‌اند خواهیم پرداخت. سیر عملیاتی که باید برروی برگه‌های فروش انجام شوند و انواع و وضعیت‌های فاکتور فروش در همین رابطه را در یک بخش اختصاصی توضیح خواهیم داد. انجام عملیات مزبور، نیازمند تغییراتی در داده‌های پایه و مشخصات برگه‌های فروش بودند که در یک بخش جداگانه به آنها نیز پرداخته‌ایم. جهت ساده سازی مفاهیم، عموم مفاهیم مهم در این مستند همراه با ویدیوهای آموزشی ارائه گردیده و همچنین بخشی در سایت نوسا جهت ارائه کلیات این موضوع به آدرس go.nosa.com/sm آماده شده تا با بروزرسانی قوانین، زیرساخت‌های سازمان و نرم‌افزارهای نوسا، مشتریان نوسا همواره با آخرین تغییرات در رابطه با این سامانه بروز باشند.

     

    بخش‌های آتی در این پست و پست‌های بعدی، هر یک به مفاهیم و داده‌های جدیدی که در این ابزار به نرم افزار یکپارچه مالی نوسا اضافه کرده‌ایم (حافظه‌های مالیاتی، تعریف روش‌های ارسال اطلاعات به سامانه مودیان)، تغییراتی که در نرم‌افزار فروش جهت پشتیبانی از این ابزار ارائه شده و کاربران باید در فرآیند تنظیم فاکتور فروش مورد توجه قرار دهند و همچنین عملیاتی که با استفاده از امکانات جدید قابل انجام است (ارسال و استعلام) خواهند پرداخت.

     

    بازپخش وبینار ارائه شده توسا شرکت نوسا در اسفند ماه سال 1402 در این بخش از مستند در دسترس می‌باشد. شرکت نرم افزار و سخت افزار ایران (نوسا) در این وبینار همزمان با تفصیل مراحل ثبت نام و دریافت توکن مورد نیاز نسخه جدید کارپوشه، به ابهامات، محدودیت‌ها، پیچیدگی‌ها، تغییرات، الزامات و قابلیت‌های گسترده نسخه 12.10 ابزار یکپارچه اتصال نرم افزار فروش نوسا به سامانه مودیان می‌پردازد. این وبینار تخصصی برای مدیران و کارشناسان مالی و عموم افراد مشمول استفاده از کارپوشه مالیاتی، پایانه های فروشگاهی و سامانه مودیان مالیاتی مفید می‌باشد.

     

    زمان بندی محور‌های اصلی این وبینار:

    1. تحلیل زیرساخت سامانه مودیان و بخش‌های آن 00:04:04

    2. یکپارچگی ابزار اتصال به سامانه مودیان و نرم‌افزار فروش نوسا 00:11:02

    3. نحوه برخورد با اختلالات و محدودیت های زمانی در سامانه مودیان 00:17:03

    4. روش ثبت نام و دریافت توکن GICA برای API جدید سامانه مودیان 00:23:14

    5. ثبت انواع حافظه مالیاتی، استعلام ها و روش‌ها در نرم افزار نوسا 00:38:54

    6. آشنایی اولیه با نحوه دریافت کد کالا یا خدمات عمومی و یا خاص 00:52:20

    7. ثبت اطلاعات عمومی فروش مورد نیاز سامانه مودیان در نرم افزار 00:53:46

    8. انواع فاکتورها و الگوهای سامانه مودیان قابل استفاده در نوسا 00:58:40

    9. شرایط و نحوه ثبت و استعلام فاکتور اصلی سامانه مودیان در نوسا 01:00:56

    10. نکات مهم کلی در رابطه با کارکرد ابزار سامانه مودیان یکپارچه نوسا 01:17:39

    11. نحوه ثبت و استعلام فاکتور برگشت سامانه مودیان در نوسا 01:19:51

    12. نحوه ثبت و استعلام فاکتور اصلاحی و ابطالی سامانه مودیان در نوسا 01:32:17

    13. نحوه درخواست افزایش سقف مجاز فروش در سامانه مودیان مالیاتی 01:54:44

    14. نوع، وضعیت و فرآیند‌های فروش در نسخه 6.8 سامانه مودیان و ابزار نوسا 01:56:16

    15. مفهوم صورتحساب‌های مرجع و ارجاعی و پیچیدگی‌های فعلی سامانه مودیان 02:11:11

    16. نحوه ثبت و استعلام فاکتور برگشت کل / ابطال سامانه مودیان در نوسا 02:31:03

    17. پیچیدگی‌های فعلی سامانه، موارد خطرناک و مورد توجه جهت اطمینان از سلامت داده 02:40:32

    18. نکات خاص و برخی از امکانات جانبی ابزار اتصال به سامانه مودیان یکپارچه نوسا 03:13:02

     

     

     

     

     

     

    برخی محدودیت‌ها و نکات مهم در رابطه با نسخه فعلی ابزار ارائه شده، وضعیت سامانه مودیان، روش ارسال و فیلدهای مربوطه:

     

    عموما نرم‌افزارهای نوسا با تحقیقات بسیار، ساختار مستحکم و انعطاف بالا در دسترس کاربران قرار می‌گیرد، ولیکن از آنجا که ابزار اتصال نرم‌افزار فروش به سامانه مودیان نوسا، بر خلاف عموم نرم‌افزارهای نوسا، یک موجود تحمیلی توسط سازمان امور مالیاتی می‌باشد و این سامانه همچنان با مشکلات جدی روبرو بوده و بصورت روزمره در دست تغییر است، پس حتما انتظار می‌رود که ابزار سامانه مودیان نوسا نیز بنا به نیاز و فشار سامانه بالادستی با نسخ و رفتار‌های گوناگون مواجه باشد، این واقعیت، ابزار را با محدودیت‌هایی روبه رو خواهد کرد. دقت بفرمایید نسخه فعلی ابزار سامانه مودیان صرفا پاسخگو نسخ ارائه شده سامانه مودیان تا دی ماه سال 1402 می‌باشد و ممکن است با تغییرات آتی، کارکرد این ابزار با مشکلات متعدد مواجه گردیده و نسخ جدیدی از نرم‌افزار و یا DLL برای مشتریان بروز این ابزار، در صورت امکان پشتیبانی از تغییرات آتی، ارائه گردد.  برخی از محدودیت‌ها و نکات مهم نسخه فعلی ابزار ارائه شده توسط نوسا در ادامه این بخش بصورت ویژه جهت آشنایی استفاده کنندگان و خریداران این ابزار اعلام گردیده است:

     

    • به دلیل یکپارچگی نرم‌افزار، جهت استفاده از ابزار اتصال نرم‌افزار فروش به سامانه مودیان نوسا، وجود نرم‌افزار فروش کالا و خدمات نوسا الزامیست.
    • از آنجا  که سامانه مودیان بر مبنای وب سرویس و بر بستر وب پیاده سازی گردیده، در زمان ارسال اطلاعات به سامانه مودیان و یا استفاده از هرگونه استعلام موجود در ابزار نوسا، دسترسی به اینترنت و IP سامانه و API سازمان امور مالیاتی توسط سرور نوسا الزامیست. 
    • جهت کارکرد این ابزار، زمان و تاریخ سرور باید درست تنظیم شده باشد، در غیر اینصورت در زمان کنترل کلید امنیتی با سامانه با مشکل مواجه خواهیم شد.
    • ابزار ارائه شده توسط نوسا بر مبنای نسخه‌ی 6.8 مستند ارائه شده توسط مرکز تنظیم مقررات، نظام پایانه‌های فروشگاهی و سامانه مودیان سازمان مالیات به تاریخ دی 1402 بازنویسی گردیده است. نسخه فعلی ابزار سامانه مودیان نوسا صرفا قابلیت کارکرد صحیح با این نسخه از سامانه را فراهم می‌آورد و ممکن است با تغییرات آتی زیرساخت سامانه با مشکل مواجه گردد.
    • از انواع فاکتور‌های فروش، 4 الگو فاکتور شامل عادی، پیمانکاری، صادراتی و فروش به مصرف کننده نهایی (نوع 2) در ابزار نوسا پیاده سازی گردیده و قابل استفاده می‌باشند، سایر انواع فاکتور‌ها با استفاده از این ابزار قابل ارسال نخواهند بود. توجه بفرمایید در نسخه قدیمی سامانه 1 نوع فاکتور به نام فاکتور ارزی وجود داشت که در نسخه فعلی این نوع فاکتور به فاکتور عادی تغییر پیدا کرده و دیگر به عنوان نوع جداگانه‌ای از فاکتور اعلام نمی‌گردد. جایگزین فاکتور ارزی قدیمی، نوعی فاکتور به نام فروش ارز (صرافی) توسط سازمان اعلام گردیده که این نوع جدید از فاکتور در نسخه فعلی نرم‌افزار نوسا قابل پشتیبانی نمی‌باشد. 
    • از آنجا که برخی از فیلد‌های اعلامی در مستند سامانه مودیان مربوط به سایر الگو‌های فاکتور فروش (فروش ارز / طلا و جواهر / قبوض خدماتی / بلیط هواپیما) و یا مربوط به نوع سوم از صورت‌حساب‌های الکترونیکی (دستگاه‌های POS) هستند، با توجه به اینکه ابزار نوسا از این الگو‌های فروش پشتیبانی نمی‌کند، این نوع فیلدها نیز در نرم‌افزار نوسا قابل استفاده و ارسال نمی‌باشند.
    • مالیات ماده 17 در ابزار ارسال اطلاعات به سامانه مودیان نوسا قابل پشتیبانی نمی‌باشد.
    • سایر وجوه قانونی (موضوع، نرخ و مبلغ) در ابزار ارسال اطلاعات به سامانه مودیان نوسا قابل پشتیبانی نمی‌باشد.
    • نسخ قبلی API سامانه‌ی مودیان (که با کلید عمومی کار می‌کرد و نیازی به گواهی امضا نداشت – V0 و V1) هنوز در دسترس بوده ولی احتمال زیادی وجود دارد که در آینده‌ی نزدیک غیرعملیاتی شوند و کاربران مجبور به استفاده از نسخه‌ی جدید (که به گواهی امضا نیاز دارد – V2) شوند. برای استفاده از ابزار سامانه مودیان با نسخه V2 وب سرویس ارائه شده، دریافت گواهی از مراکز دولتی مرجع، توسط استفاده کننده طی توضیحات در بخش مربوطه الزامی خواهد بود و در غیر اینصورت ابزار اتصال سامانه مودیان نوسا قابلیت دریافت و ارسال اطلاعات استفاده کننده به سامانه را از دست خواهد داد. 
    • تاریخ و زمان ایجاد صورت‌حساب (ردیف 3 مستند سامانه مودیان به نام Intadi2m) که قرار است از درگاه اینترنتی مقداردهی شود، فعلا کاربردی نداشته و یا داستان دیگری دارد که مستند نشده است، با توجه به این نکته، این فیلد در نسخه فعلی لحاظ نگردیده است. 
    • نوع شخص خریدار (مشتری) مطابق خواسته‌ی سامانه از ترکیب حقیقی یا حقوقی بودن مشتری و نوع شرکت (سازمان) آن حاصل می‌شود: شخص حقیقی با مقدار 1، شخص حقوقی از نوع مشارکت مدنی با مقدار 3 و سایر اشخاص حقوقی با مقدار 2 صادر خواهند شد.
    • در نسخه فعلی ابزار قابلیت ارسال اطلاعات برای فروش به اتباع خارجی، مشارکت مدنی، اشخاص حقوقی و حقیقی وجود داشته ولیکن استفاده از روش های ارسال متفاوت برای برخی از این موارد الزامیست. خصوصا اگه یک شخص حقیقی پرونده مالیاتی داشته باشد، طی مستند مالیات، کد 14 رقمی شخص حقیقی ثبت نام و تایید شده در کارپوشه، برای ثبت فاکتور در کارپوشه شخص الزامیست.  اگر صرفا  کد ملی و کد پستی وارد گردد، حتی اگر شخص کارپوشه داشته باشد، اطلاعات به عنوان مصرف کننده نهایی بدون درج در کاپوشه شخص ارسال می‌گردد.
    • تمامی فاکتورهای ارسالی به سامانه مودیان توسط حافظه مالیاتی انجام می‌گردد، تمامی فاکتورهای ارسالی در هر حافظه مالیاتی شامل سریال می‌باشند و سریال به عنوان بخشی از اطلاعات، ارسال می‌گردد، این سریال باید همواره به صورت غیر تکراری اضافه گردد، بنابراین اگر از سیستم دیگری اطلاعات مجموعه به ابزار سامانه مودیان نوسا منتقل گردد، ارائه آخرین شماره سریال استفاده شده در سیستم قبلی جهت اطمینان از عدم تکراری بودن سریال الزامیست. یک حافظه مالیاتی در دو سیستم قابل استفاده نبوده و تغییر شناسه حافظه مالیاتی بجای تعریف حافظه جدید در حین استفاده از این ابزار، مشکل ساز خواهد بود.
    • اگر مطابق رویه‌ای که پس از سال 1399 جاری شده است، مجموع عوارض و مالیات بر ارزش افزوده در فیلد مالیات بر ارزش افزوده سیستم نوسا محاسبه و لحاظ شود، می‌توانیم در صورت نیاز از فیلد عوارض قانونی در سیستم نوسا به عنوان سایر عوارض قانونی در JSON استفاده کنیم. مبلغ و نرخ عوارض قانونی به این منظور قابل استفاده است اما فیلد موضوع سایر عوارض (odt) را باید با مقدار ثابت (رشته حرفی) با محتوای دلخواه در روش ارسال بیاوریم.
    • برای برخی از فیلدهای JSON (برخی از شماره ردیف‌ها در مستند سامانه مودیان) بیش از یک فیلد نوسا تامین شده است. به این ترتیب اگر کاربران داده‌های مورد نیاز را در فیلدهای متفاوتی درج کرده باشند، می‌توانند با تغییر فیلد مبداء در روش ارسال تفاوت رویه را به صورت مناسب اعمال نمایند. به جز این، در مواردی که فیلد JSON به صورت کامل و جامع در مستندات تعریف نشده بودند تمام حالت‌های قابل تصور را برای درج در آن فیلد لحاظ کرده‌ایم. مثلا برای فیلد جمع ارزش ارزی (ردیف 32 – tocv) حالت‌های جمع بهای ارزی کالاها و خدمات صورت‌حساب پیش از تخفیف / پس از تخفیف و نهایی را پیش‌بینی کرده‌ایم. آنچه با سعی و خطا مناسب تشخیص داده‌ایم (البته در وضعیت سامانه مودیان در دی‌ماه سال 1402) را در روش ارسال پیش‌فرض نوسا تعریف کرده‌ایم.
    • (فعلا) فیلد sstt در ردیف 39 مستند سامانه مودیان (عبارت توصیف کالا یا خدمت) اختیاری است و در صورت تمایل می‌توانید آن را از تعریف روش ارسال حذف کنید. البته با توجه به اینکه قرار است خریدار صورت‌حساب‌ها را در کارپوشه‌ی خود تایید نماید، عدم وجود نام یا عبارت توصیف کننده‌ی کالا یا خدمت عجیب به نظر می‌رسد (و این فیلد ممکن است در آینده اجباری شود).
    • مبلغ پرداخت نقدی از عوارض قانونی در header و سهم نقدی از عوارض قانونی در body قاعدتا می‌باید در JSON لحاظ می‌شدند (با توجه به شباهت آنها با مالیات بر ارزش افزوده). این دو فیلد در فهرست فیلدهای مبداء نوسا لحاظ شده‌اند تا چنانچه در آینده مورد نیاز باشند مشکلی نداشته باشیم.
    • اگر در روش ارسال اطلاعات، مبالغ به صورت "قطع شده" باشد، بهای سطر، ارزش افزوده و معادل ریالی فروش‌های ارزی تحت تاثیر قرار می‌گیرند، در نتیجه تفاوت چند ریالی بین داده موجود در سامانه و نرم‌افزار نوسا در برخی فاکتور‌ها قابل پیش بینی خواهد بود.
    • به صورت بسیار عجیب، درخواست عامی وجود داشت که برخی از داده‌ها به صورت تغییر یافته (متفاوت از آنچه در نوسا درج شده است) به سامانه ارسال شوند. یکی از این موارد همان ارسال مبالغ به صورت "قطع شده" بود که پیش از این دیدیم. مورد دیگر به فروش‌های صادراتی مربوط می‌شد. ترتیبی اتخاذ شده که کاربر بتواند با اصلاح روش ارسال، معادل ریالی فروش‌های ارزی را به صورت مستقل از آنچه در نوسا درج شده است و با استفاده از نرخ برابری ارز درج شده در برگه‌ی فروش محاسبه و به سامانه ارسال نماید. به این منظور فیلدهای جدیدی تعبیه شده‌اند که به عنوان فیلد محتوی (به جای فیلدهای صحیح) قابل استفاده‌اند. این فیلدها، عمدتا با شماره ردیف‌های تکراری، در جدول‌های فوق نشان داده شده‌اند.
    • هیچیک از تمهیداتی که منجر به "نادرست شدن" داده‌های ارسالی به سامانه می‌شوند (قطع کردن / استفاده از نرخ برابری ارز برگه) در روش ارسال پیش‌فرض نوسا بکار نرفته‌اند. در این روش پیش‌فرض، داده‌ها به صورت صحیح و بدون تغییر ارسال می‌شوند. طبیعی است که مسئولیت استفاده از این تمهیدات (و ارسال داده‌های نادرست به سامانه) برعهده‌ی کاربرانی است که اقدام به تغییر تعریف روش ارسال می‌کنند.
    • بنا به پیچیدگی‌های عجیب فرآیند و کارکرد فعلی سامانه که در ادامه این مستند مورد بررسی قرار گرفته است، همچنین بنا به عدم اطلاع رسانی API از وضعیت تایید فاکتورها در سامانه ولیکن ارائه رفتار‌های گوناگون بسته به وضعیت تایید، در بسیاری از شرایط اصلاح، ابطال و برگشت، قبل از ایجاد تغییرات و همزمان با استفاده از ابزار، بنا به نیاز، نکات مهمی در مراحل گوناگون استفاده از ابزار ارسال اطلاعات نوسا به استفاده کننده یادآوری می‌گردد. لطفا این یادآوری‌ها را جدی گرفته و در زمان مواجهه با هر یک، آن‌ها را به دقت بخوانید و سپس تصمیم به ادامه فرآیند با شناخت شرایط و پیش نیاز‌ها بگیرید. 

     

     

     

    تاریخچه و اطلاعات کلی در رابطه با قانون پایانه های فروشگاهی و سامانه مودیان

     

    مطالبی که در ادامه آمده‌اند به صورت ضمنی یا صریح از نسخه‌ی اصلاح شده‌ی کتاب «قانون پایانه‌های فروشگاهی و سامانه مودیان در یک نگاه»؛ تیرماه 1401 استخراج شده‌اند. مطالبی که به صورت صریح و عینا کپی شده‌اند به صورت "نقل قول" مشخص شده‌اند.

     

    تقریبا 20 سال از اصلاحیه قانون نظام صنفی مصوب سال 1382 می‌گذرد. در این 20 سال، اصلاحیه قانون مالیات‌های مستقیم مصوب سال 1394 و به خصوص ماده‌ی 169 آن، قانون پایانه‌های فروشگاهی و سامانه مودیان مصوب مهر ماه سال 1398 و قانون مالیات بر ارزش افزوده مصوب سال 1400 را نیز دیده‌ایم. همه‌ی این قوانین با اهداف مشترکی تصویب شده‌اند: "عدالت مالیاتی، مالیات‌ستانی هوشمند، شفافیت در فعالیت‌های اقتصادی، جلوگیری از فرار مالیاتی، رویکرد برابر و تکریم مودیان و افزایش رضایت آنها، تحول بنیادین در نظام مالیاتی کشور، نهادینه کردن عدالت و شفافیت اقتصادی، کاهش اقتصاد سایه (بازار سیاه)" و حتی ایجاد "بستر حیاتی برای اجرای طرح مالیات بر عایدی سرمایه و لایحه مالیات بر مجموع درآمد". در قانون پایانه‌های فروشگاهی و سامانه مودیان ذکر شده که اجرای این قانون، دستاوردهای دیگری هم خواهد داشت (مطالب عینا ذکر شده‌اند و اشکالات دستوری از ما نیست):

     

    • "اخذ سند (صورت‌حساب) برای کلیه کالا و خدمات خریداری شده به شکل یک امر مرسوم و متداول و قابلیت پیگیری مستند در خصوص مبالغ پرداخت شده بابت کالا و خدمات."
    • "آگاهی مصرف کننده از میزان مالیات بر ارزش افزوده پرداختی بابت خرید کالا و خدمات خود به شکل مستند و قابل استعلام در قالب صورت‌حساب‌های الکترونیکی وچاپی."
    • "کاهش قابل توجه کالاهای قاچاق و فاقد شناسنامه تولیدی معتبر در بازار."
    • "قابلیت رصد و کنترل نظام توزیع کالا با هدف جلوگیری از احتکار."

     

    به موجب قانون پایانه‌های فروشگاهی و سامانه مودیان، "مودیان مشمول این قانون، علاوه بر عضویت در سامانه مودیان، موظفند برای فروش کالا و خدمات خود صورت‌حساب الکترونیکی صادر کنند و اطلاعات این صورت‌حساب‌ها را در مقاطع زمانی معین برای سازمان امور مالیاتی کشور ارسال کنند. صورت‌حساب الکترونیکی، صورت‌حسابی است دارای شماره منحصر به فرد مالیاتی که مشخصات و اقلام اطلاعاتی آن متناسب با نوع کسب و کار توسط سازمان تعیین و اعلام می‌شود. عملیات ثبت فروش و صدور این صورت‌حساب‌های الکترونیکی توسط ابزاری تحت عنوان پایانه‌های فروشگاهی انجام می‌شود." موارد زیر به عنوان بخشی از تکالیف اشخاص مشمول این قانون ذکر شده‌اند:

     

    • "ثبت نام و عضویت در سامانه مودیان"
    • "تهیه و استفاده از پایانه‌های فروشگاهی"
    • "صدور صورت‌حساب‌های الکترونیکی در ازای فروش کالا / خدمات و ارائه صورت‌حساب به خریدار"
    • "ارسال اطلاعات صورت‌حساب‌های الکترونیکی صادره به سامانه مودیان"

     

    صورت‌حساب‌‎های صادره توسط نرم‌افزار فروش نوسا الکترونیکی محسوب می‌شوند، ارائه‌ی صورت‌حساب به خریدار در سیستم نوسا به صورت ارائه‌ی فرم نهایی برگه‌های فروش (چاپی) انجام می‌شود. در نتیجه وظیفه‌ی عمده‌ی باقیمانده برای ما، ارسال صورت‌حساب‌ها به سامانه مودیان است. برای انجام این وظیفه موارد زیر توسط شرکت نوسا به نرم‌افزار یکپارچه مالی اضافه گردید:

     

    • ابزار جدید اتصال نرم‌افزار فروش نوسا به سامانه مودیان طراحی گردید.
    • مفاهیم جدیدی مانند حافظه مالیاتی در سیستم، معرفی و پیاده‌سازی گردید.
    • تغییراتی در تعریف اطلاعات پایه و برگه‌های فروش در سیستم نوسا اعمال گردید.
    • رویه‌هایی برای ارسال و استعلام صورت‌حساب‌ها در سیستم پیاده‌سازی گردید.
    • فیلد‌ها، قابلیت‌ها و امکانات جدیدی در بستر یکپارچه نرم‌افزار ارائه گردید.

     

    عمده‌ مطالب این مستند مربوط به موارد اعلامی و نحوه پیاده سازی این ابزار در نرم‌افزار مالی یکپارچه نوسا خواهد بود. تلاش کرده‌ایم تا مفاهیمی که در مستندات ارائه شده توسط سازمان امور مالیاتی، به صورت مبهم و پیچیده بیان شده‌اند را ساده(تر) و نزدیک به آنچه کاربران در داده‌ها و رویه‌های نوسا عادت دارند بیان کنیم. همین تلاش، البته، در پیاده‌سازی امکانات و رویه‌ها نیز صورت گرفته است. خواهیم دید که با لحاظ کردن تغییرات پیش‌گفته و تبعیت از رویه‌های طرح شده، کاربران خواهند توانست صورت‌حساب‌ها (فاکتورهای فروش) را به سامانه‌ی مودیان ارسال کنند. سامانه‌ی مودیان اطلاعات را در بستر اینترنت (پروتکل https) و به صورت یک Web Service (یک API که متدهایی برای اجرای عملیات مختلف دارد) دریافت می‌کند. ارسال اطلاعات به سامانه مودیان توسط سرور نوسا انجام خواهد شد. به همین دلیل لازم به تذکر است که برای استفاده از امکانات جدید ابزار اتصال نرم افزار فروش نوسا به سامانه مودیان، رایانه‌ای که در نقش سرور نوسا قرار دارد باید به شبکه (اینترنت) متصل باشد.

     

    در صورت علاقه به آشنایی بیشتر با قانون پایانه های فروشگاهی و سامانه مودیان، بازپخش وبینار ارائه شده توسا شرکت نوسا در اسفند ماه سال 1401 در این بخش از مستند در دسترس می‌باشد. در این وبینار قانون پایانه های فروشگاهی و سامانه مودیان همراه با 29 ماده آن را به شرح و تصویر کشیده، تعریف حافظه مالیاتی را شفاف کرده و بخش‌های اجرا شده از قوانین در اسفند 1401، جرایم، مشوق‌ها و ضوابط اجرایی آن را تشریح خواهیم کرد. همچنین در این وبینار مروری گذرا بر ابزار جدید ارائه شده توسط شرکت نرم افزار و سخت افزار ایران (نوسا) جهت ارسال اطلاعات به روش مستقیم به این سامانه را خواهیم داشت.

     

    زمان بندی محور‌های اصلی این ویدیو:

    1. تعاریف کلی، ماده یک قانون و تعریف حافظه مالیاتی 00:00:56
    1. نگاهی اولیه به ابزار نوسا جهت ارسال مستقیم اطلاعات به سامانه مودیان 01:14:25
    1. تکلیف مودیان و فرآیند کلی اجرایی قانون پایانه‌های فروشگاهی و سامانه مودیان 1:26:24
    1. جریمه‌ها، مشوق‌ها و الزامات قانون پایانه‌های فروشگاهی و سامانه مودیان 1:52:06

     

     

     

     

     

    برخی از تغییرات در سامانه مودیان، API مربوطه و روش کارکرد آن

     

    راهکار عملی پیاده سازی قانون پایانه های فروشگاهی و سامانه مودیان به تصمیم سازمان امور مالیاتی و پیمانکاران مربوطه شامل سه بخش کلی است:

     

    • تیم طراحی و تولید درگاه Web برای اخذ شناسه‌ی مالیاتی مودی و مشاهده‌ صورت‌حساب‌های فروش و خرید و احیانا تایید یا رد صورت‌حساب‌های خرید، این گروه تا به امروز طی چندین بروزرسانی تغییرات گسترده ای در نحوه کارکرد سامانه بوجود آورده که برخی از این تغییرات در بخش بعدی این مستند اشاره شده. این تغییرات ما را الزام به باز طراحی ابزار سامانه مودیان نوسا داشته است. نسخه فعلی این زیرساخت ارائه شده توسط سازمان مالیات، نسخه 6.8 می‌باشد.
    • تیم طراحی و تولید ابزار Web API سازمان مالیات برای ارائه قابلیت ارسال و استعلام صورت‌حساب‌ها توسط تولید کنندگان نرم‌افزارها تا به امروز 3 نسخه از API سامانه مودیان را ارئه داده که البته هر سه نسخه فعلا همچنان قابل استفاده بوده و زمان الزام استفاده کنندگان از نسخه 2 مشخص نیست. نسخه 0 و 1 این ابزار هر دو در نسخه 12.02 ابزار سامانه مودیان نوسا پشتیبانی می‌گردید و نسخه 2 که البته نیاز به کلید دریافتی از مراکز gica داشته و پیچیدگی هایی را بهمراه خواهد داشت در نسخه 12.12 این ابزار به شرح این مستند جهت استفاده در آینده، و در صورت توقف کارکرد نسخه 1 این ابزار در دسترس می‌باشد. 
    • تیم طراحی و تولید سرور جمع آوری و بررسی درستی صورت‌حساب‌ها، ارائه خطاها و پردازش آنها در درگاه Web که همواره تغییرات گسترده‌ای در آن پشت صحنه در دست انجام است و مستند کاملی از تغییرات در دسترس عموم نیست. تغییرات در این بخش از سامانه مودیان نسخه گزاری نگردیده و صرفا طی زمان همراه با استفاده مشتریان از سامانه و مواجهه با خطاهای جدید، طی پیگیری با سازمان و تست‌های فرآوان داخلی نوسا، آشکار می‌گردند. 

     

    طی مذاکرات نوسا با مرکز تنظیم مقررات پایانه های فروشگاهی و سامانه مودیان سازمان مالیات، بخشی از نتیجه کار این سه گروه همراه با تغییرات قانونی توسط تیمی، گاها قبل از اعمال تغییر و گاها پس از اعمال تغییر مستند شده و به عموم در سایت مربوطه ارائه می‌گردد. متأسفانه با توجه به ساختار پیاده سازی و روش جداسازی تیم‌های تولید نرم‌افزار و پیمانکاران، هر گروه بابت این سه بخش طی تاریخ‌های متعدد تغییرات جدی در بخشی از زیرساخت این سامانه بوجود می‌آورد که این تغییرات در برخی موارد با سایر بخش‌های زیرساخت‌ سامانه همخوانی نداشته، درست مستند و اعلام نگردیده، بخشی از سامانه را بدون اعلام از دسترس خارج کرده و در نهایت مشکلات جدیدی را بوجود خواهند آورد.

     

    خلاصه برخی از تغییرات مهم نسخه 12.10 ابزار سامانه مودیان نسبت به نسخه 12.02 و DLL های ارائه شده آن طی سال 1402 در ادامه این بخش در دسترس است، توجه داشته باشید این بخش از مستند بیشتر برای کاربرانی که با امکانات قبلی سیستم نوسا در ارسال صورت‌حساب‌ها به سامانه‌ی مودیان آشنایی دارند آماده شده است. مجموعه‌ی تغییرات انجام شده در ویرایش 1210 با توضیحات مختصر و اشاره به بخش حاوی مطالب اصلی ارائه می‌گردد:

     

     

     

    نسخه‌ی جدید سامانه‌ی مودیان در 12.10 (که نیازمند گواهی امضا است – V2)

    امکانات لازم برای کار با نسخه‌ی جدید سامانه‌ی مودیان در سیستم پیاده‌سازی شدند: ثبت گواهی امضا در حافظه‌ی مالیاتی و تعیین نسخه‌ی API در محاوره‌های ارسال درخواست به سامانه. البته کماکان نسخه‌های قبلی (V0 و V1) هم پشتیبانی می‌شوند. با توجه به اشکالاتی که تا به امروز در V2 وجود دارد، پیش‌فرض فعلی ابزار را همچنان V1 قرار داده‌ایم.

     

     

     

     

     

    برخی از فیلدهای جدید در برگه‌های فروش ارائه شده در نسخه 12.10

     

     

    قابلیت ارسال و استعلام صورت‌حساب‌های برگشت از فروش در نسخه 12.10

    نکات بسیار زیادی در این مورد وجود دارد که در مبحث اختصاصی برگشت از فروش توضیح داده شده است. وضعیت‌ها و فرمان‌های ارسال جدیدی هم در این رابطه خواهیم داشت.

     

     

     

    آیتم‌های جدید در وضعیت ارسال به سامانه مودیان در نسخه 12.10 

    • اعلام صحت ابطال: در 12.02 فاکتور فروش پس از استعلام ابطالی به صورت خودکار در سیستم نوسا ابطال می‌شد. در مبحث ابطال خواهیم دید که با توجه به امکان رد ابطال توسط خریدار، این روش دیگر مناسب نیست. همچنین این روش برای ابطال صورت‌حساب‌های برگشت از فروش نیز نامناسب است (چون در آنها اصولا فرآیند ابطال در نوسا مطرح نیست). صورت‌حساب‌های ابطالی ارسال شده پس از استعلام در این وضعیت قرار خواهند گرفت و از آن پس کاربر می‌تواند در صورت تمایل آنها را در سیستم حذف یا باطل نماید (یا همانطور که در بخش مربوط خواهیم دید، فرمان اعلام رد ابطال توسط خریدار را صادر کند).
    • اعلام صحت برگشت کل / ابطال: در مبحث برگشت از فروش خواهیم دید که سامانه‌ی مودیان برگشت کل فروش را به صورت صورت‌حساب برگشتی پشتیانی نمی‌کند و انتظار صورت‌حساب ابطالی دارد. این وضعیت، به صورت اختصاصی برای برگشت‌هایی که مجبور شده‌ایم مرجع آنها را در سامانه ابطال کنیم (ولی قاعدتا در نوسا و اطلاعات مالی مجموعه‌ها نباید باطل یا حذف شوند) لحاظ شده است.

     

     

     

    فرمان‌های جدید ارسال و استعلام در نسخه 12.10

    در 12.02، صدور سه فرمان ارسال اصلی، ارسال اصلاحی و استعلام در فهرست برگه‌های فروش انجام می‌شدند و دو فرمان ارسال ابطالی و استعلام ابطالی در فرم ویرایش فاکتور فروش. در 12.10، اولا فرمان ارسال صورت‌حساب ابطالی از فرم ویرایش فاکتور فروش به فهرست برگه‌های فروش منتقل شده است، ثانیا فرمان‌های جدید ارسال صورت‌حساب برگشت از فروش و ارسال صورت‌حساب اصلاحی برگشت از فروش اضافه شده‌اند و ثالثا استعلام‌ها یکی شده و از این پس فرمان جداگانه‌ای تحت عنوان استعلام ابطالی نخواهیم داشت. در مبحث نوع و وضعیت برگه‌های فروش و سیر عملیات و همچنین هر یک از مباحث اختصاصی اصلاحی، برگشت از فروش و ابطالی بیشتر در این موارد توضیح داده شده است. در شکل‌های زیر تفاوت عملیات اصلی بین ویرایش‌های 12.02 و 12.10 را نشان داده‌ایم. مقایسه‌ی این دو شکل، شاید، بازنمایی کننده‌ی برخی از تغییرات باشد.

     

    منوی ارسال و استعلام فاکتور ها در سامانه مودیان نسخه 12.02

     

    منوی ارسال و استعلام فاکتور ها در سامانه مودیان نسخه 12.10

     

     

     

    تغییرات کلی مکانیزم ارسال و استعلام صورت‌حساب ابطالی در نسخه 12.10

    همانطور که در بندهای قبل گفتیم، ارسال صورت‌حساب ابطالی از این پس در فهرست برگه‌های فروش انجام می‌شود. استعلام این صورت‌حساب‌ها نیز به صورت یکپارچه با سایر انواع استعلام انجام می‌شود. نکات زیر قابل توجه‌اند:

    • استعلام یک صورت‌حساب که در وضعیت "در انتظار استعلام ابطالی" قرار داشته باشد صورت‌حساب را به یکی از وضعیت‌های "اعلام خطا در استعلام ابطالی" یا "اعلام صحت ابطال" (وضعیت جدید) خواهد بود. کاربر می‌تواند یک صورت‌حساب در وضعیت "اعلام صحت ابطال" را در نوسا حذف یا باطل نماید.
    • با توجه به محدودیت یک ماهه ارسال صورت‌حساب، برای ابطال صورت‌حساب‌های قدیمی، تاریخ صورت‌حساب ابطالی، به صورت مستقل و متفاوت از تاریخ صورت‌حساب، از کاربر دریافت می‌شود.
    • ابطال یک صورت‌حساب اصلاح شده (که صورت‌حساب اصلاحی مربوط به آن توسط خریدار تایید نشده باشد) به معنی ابطال اصلاح خواهد بود.
    • ابطال صورت‌حساب‌های اصلاح یا برگشت تایید شده به معنی ابطال کل زنجیره‌ی صورت‌حساب‌های مرجع (شامل فاکتور فروش اصلی) خواهد بود.

     

     

    تغییرات در روش‌های ارسال اطلاعات به سامانه در نسخه 12.10

    این نکات به صورت کامل در مبحث اختصاصی روش‌های ارسال توضیح داده شده‌اند.

    • امکان ارسال مبالغ به صورت قطع شده
    • محدود کردن کامل ارسال فیلدها برحسب موضوع صورت‌حساب (اصلی، اصلاحی، ابطالی، برگشت از فروش). در 1202 فقط گزینه‌ی "در ابطال ارسال نشود" وجود داشت.
    • در صورت‌حساب‌های صادراتی، فیلدهای جدید مبالغ ریالی معادل ارز، محاسبه شده با نرخ برابری پیش‌فرض برگه، قابل استفاده هستند.
    • روش ارسال فاکتورهای ارزی که طی مستندات سازمان مالیات به فاکتور نوع 1 عادی تغییر پیاده کرده همچنان قابل پشتیبانی بوده و دیگر نیازی به جدا سازی ندارد ولیکن نوع فاکتور جدید با نام ارسال فاکتورهای ارز (صرافی) که برای ارسال اطلاعات فروش ارز توسط صرافی‌ها توسط سازمان ارائه گردیده همچنان در نسخه 12.10 قابل پشتیبانی نمی‌باشد. بنابراین توضیحات این نسخه پس از این از 4 نوع فاکتور فروش پشتیبانی خواهد کرد که در ادامه این مستند به تفکیک اعلام گردیده‌اند. 
    • کد شعبه خریدار در فیلدهای header اضافه شد.

     

     

    برخی از سایر تغییرات اساسی در ابزار سامانه مودیان نوسا نسخه 12.10

    اکثر این مطالب در فصل «سایر نکات» به ریز توضیح داده شده‌اند:

    • در فهرست برگه‌های فروش فرمانی برای بازنمایی JSON ارسالی به سامانه‌ی مودیان تعبیه شده است.
    • صدور فرمان استعلام صورت‌حساب‌های ارسالی از این پس در وضعیت‌های "اعلام خطا دراستعلام" نیز میسر است.
    • گونه‌ای از استعلام وضعیت صورت‌حساب‌ها بدون اینکه تغییری در وضعیت آنها ایجاد شود پیاده‌سازی شده است.
    • فرمان اعلام تایید صورت‌حساب اصلی یا اصلاحی در سامانه (که عمل تایید درواقع توسط خریدار انجام شده است) پیاده‌سازی شده است.
    • فرمان اعلام رد شدن صورت‌حساب ابطالی در سامانه (که در واقع توسط خریدار انجام شده است) پیاده‌سازی شده است.
    • فرمان‌های انصراف از ارسال صورت‌حساب ابطالی و اصلاحی پیاده‌سازی شده‌اند. اینها در مواردی که خطاهای عجیب و غیرقابل رفع از سامانه دریافت می‌شوند کاربرد خواهند داشت.

     

     

     

    مفاهیم و تغییرات رمزنگاری نامتقارن (RSA) در سامانه مودیان و نحوه دریافت گواهی برای نسخه 2 API سامانه مودیان

     

    در انتقال اطلاعات بین رایانه‌ها، معمولا داده‌ها توسط نرم‌افزار ارسال کننده (در اینجا سیستم نوسا) رمزگذاری و توسط نرم‌افزار دریافت کننده (در اینجا زیرسیستم جمع‌آوری سامانه مودیان) رمزگشایی می‌شوند. عمل رمزکردن داده‌ها با یک "کلید" انجام می‌شود. این کلید صرفا یک متن (شبیه کلمه عبور اما بزرگتر) است. در رمزنگاری نامتقارن، از دو کلید (زوج کلید) استفاده می‌شود و کلیدهایی که برای رمزگذاری و رمزگشایی استفاده می‌شوند متفاوت هستند – به همین دلیل به آن نامتقارن گفته می‌شود. یکی از آنها کلید عمومی و دیگری کلید خصوصی نام دارند. کلید عمومی، همانطور که از نام‌اش پیداست، نیازی به مراقبت امنیتی ندارد و می‌تواند در اختیار عموم قرار بگیرد. در مقابل امنیت کلید خصوصی بسیار حساس است و همانند کلمه‌ی عبور، تحت هیچ شرایطی نباید افشا شود. در رمز کردن داده‌ها چنین است که داده‌ها را فقط می‌توان با کلید عمومی رمزگذاری و با کلید خصوصی رمزگشایی کرد و از آنجا که هیچ‌کس به کلید خصوصی دسترسی ندارد، افراد ثالث هرگز قادر به رمزگشایی داده‌های مزبور نخواهند بود.

     

    سامانه‌ی مودیان کلید عمومی خود را در اختیار همگان قرار داده است و سیستم نوسا با استفاده از همین کلید، داده‌ها را رمز می‌کند و به سامانه ارسال می‌کند. طبیعی است که در این فرآیند نیازی به درگیر شدن با زوج کلید (یا گواهی امضای الکترونیکی) نداریم. اما یکی از تمهیدات امنیتی که در استفاده از API سامانه مودیان اجبار شده است، امضای دیجیتالی داده‌های (درخواست) ارسالی به سامانه است. امضای دیجیتالی یکی دیگر از مکانیزم‌های استاندارد رمزنگاری نامتقارن است. در این فرآیند نیز با یک زوج کلید عمومی و خصوصی سرکار داریم که به کاربر (امضا کننده‌ی داده‌ها) اختصاص دارند. در امضای دیجیتال، یک متن رمز شده که بسیار مختصرتر و کوچک‌تر از داده‌های اصلی است با "کلید خصوصی" ایجاد شده و به همراه داده‌ها ارسال می‌شود. در مقابل، گیرنده‌ی داده‌ها (سامانه‌ی مودیان) می‌تواند صحت امضا را با استفاده از "کلید عمومی" مربوط بررسی کند. در اینجا نیز فقط کسی که کلید خصوصی را در اختیار داشته باشد می‌تواند داده‌ها را امضا کند که البته این امضا، بدون اینکه قابل بازتولید باشد، صرفا با استفاده از کلید عمومی قابل صحت‌سنجی است. برای ایجاد امکان امضای دیجیتال، سامانه‌ی مودیان اجبار کرده است که هر مودی باید یک زوج کلید اختصاصی به ازای هر حافظه مالیاتی داشته باشد. کلید خصوصی باید نزد مودی با امنیت کامل حفظ شود و کلید عمومی باید در حین ایجاد حافظه مالیاتی در سامانه بارگذاری شود.

     

    در ابتدا در نسخ 0 و 1 API سامانه مودیان که هنوز هم قابل استفاده می‌باشند، کاربران بدون اینکه نیازی به انجام مراحل دریافت گواهی الکترونیکی داشته باشند، صرفا با ابزار ساده‌ای مانند ابزاری که نوسا در نرم‌افزار نصب آماده کرده بود قادر بودند کلیدهای مورد نیاز را تولید کنند و از آنها برای برپاسازی حافظه مالیاتی در کارپوشه سامانه مودیان و ارسال صورت‌حساب‌ها استفاده نمایند. در این شرایط، کلید عمومی را در کارپوشه بارگذاری کرده و کلید خصوصی را در سیستم نوسا درج می‌کردند. اما از پاییز 1402، با ارائه نسخه‌ی 2 API سامانه‌ی مودیان، به جای کلید عمومی، باید پس از این یک فایل حاوی گواهی الکترونیکی در کارپوشه‌ی سامانه بارگذاری شود. نرم‌افزار ارسال‌کننده نیز باید مطابق دستورالعمل‌های جدید، داده‌ها را با لحاظ کردن گواهی الکترونیکی و با کلید خصوصی متناظر با آن گواهی، امضا کند.

     

    گواهی الکترونیکی (که به آن گواهی امضا یا certificate هم گفته می‌شود) یک فایل (شبیه کلیدهای خصوصی وعمومی) است. محتویات این فایل شامل همان کلید عمومی + مشخصات کاربر (نام شرکت، شناسه‌ی ملی و واحد سازمانی) + امضای الکترونیکی مرکز صادرکننده‌ی گواهی است. نکته‌ی قابل توجه این است که این فایل باید توسط یک مرکز میانی معتبر (مثلا gica) "تولید" شده باشد. تشخیص اینکه گواهی توسط چه مرکزی صادر شده است با همان امضای الکترونیکی ثبت شده در فایل گواهی است. چنین است که مثلا gica یک زوج کلید خصوصی و عمومی برای صدور گواهی دارد و طبیعتا کلید خصوصی آن در اختیار هیچ شخص دیگری قرار ندارد. در مقابل کلید عمومی متناظر با این کلید خصوصی را مثلا در اختیار سامانه‌ی مودیان قرار داده است. امضای gica مندرج در فایل گواهی به همراه سایر محتویات همان فایل با استفاده از کلید عمومی توسط سامانه‌ی مودیان صحت‌سنجی می‌شود و به این ترتیب سامانه می‌تواند تشخیص دهد که فایل گواهی توسط gica صادر شده است و معتبر است.

     

    مراحل کار برای استفاده از نسخه 2 API سامانه مودیان چنین است: یک زوج کلید خصوصی و عمومی تولید می‌شود + کلید عمومی به همراه مشخصات کاربر به صورت یک فایل حاوی "درخواست صدور گواهی – CSR" آماده می‌شود + فایل CSR با طی مراحل و رعایت تشریفات خاصی در سایت gica بارگذاری می‌شود + هزینه‌ی مربوط در سایت gica پرداخت می‌شود + به یکی از دفترخانه‌های اسناد رسمی مورد تایید gica مراجعه می‌شود و هزینه‌ی مربوط به دفترخانه پرداخت می‌شود و درخواست صدور گواهی توسط دفترخانه تایید می‌شود + فایل گواهی از سایت gica دانلود می‌شود. برای تسهیل در انجام مراحل فوق، امکاناتی در نرم‌افزار نصب سیستم نوسا پیاده‌سازی کرده‌ایم. عملیات تا انتهای تشکیل CSR توسط ابزاری که به همین منظور آماده شده است انجام خواهند شد. همانطور که مشاهده می‌شود در اینجا هم با دو فایل سروکار داریم: فایل حاوی گواهی امضای الکترونیکی دریافت شده از gica + فایل حاوی کلید خصوصی. فایل گواهی باید درکارپوشه‌ی سامانه‌ی مودیان برای حافظه‌ی مالیاتی بارگذاری شود. هر دو فایل گواهی امضا و کلید خصوصی باید در حافظه‌ی مالیاتی در سیستم نوسا درج شوند.

     

    جهت سهولت در ثبت نام در کارپوشه مودیان سازمان مالیات و دریافت شناسه یکتا در نسخه جدید کارپوشه، ویدیو آموزشی مربوطه توسط شرکت نوسا ارائه گردیده، در این ویدیو نحوه عضویت و ثبت نام در کارپوشه سامانه مودیان سازمان امور مالیاتی، استفاده از کلید امنیتی و نحوه اتصال مستقیم نرم افزارهای نوسا جهت ثبت داده فروش در کارپوشه مذکور بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه 1402 آموزش داده خواهد شد:

     

     

     

    در گذشته، گواهی امضای الکترونیکی به صورت یک وسیله‌ی سخت‌افزاری (Doungleای که شبیه به یک حافظه‌ی فلش، ولی بزرگتر بود) ارائه می‌شد و به آن "توکن سخت‌افزاری" می‌گفتند. در آن روش ارائه، کلید خصوصی به صورت فایل در اختیار قرار نداشته، این کلید در داخل توکن تعبیه شده بود و هیچ روشی هم برای استخراج آن وجود نداشت. روش مناسب ارائه‌ی گواهی امضا برای کاربردهایی چون سامانه‌ی مودیان، بعدا به سامانه‌ی gica افزوده شد. این روش در حال حاضر با "ثبت درخواست گواهی از طریق CSR" شناخته می‌شود. این همان روشی است که همزمان با فایل CSR، فایل کلید خصوصی را هم ارائه می‌دهد و برای کار ما مناسب است (همان روشی که در نرم‌افزار اختصاصی "ابزار تشکیل زوج کلید RSA و درخواست صدور گواهی" توسط نوسا ارائه شده است).

     

    در پایان این مبحث، چند نکته قابل توجه‌اند:

    • نسخه‌ی قبلی سامانه‌ی مودیان (که با کلید عمومی کار می‌کرد و نیازی به گواهی امضا نداشته – V1) هنوز عملیاتی است ولی احتمال بسیار زیادی وجود دارد که در آینده‌ی نزدیک غیرعملیاتی شود و کاربران مجبور به استفاده از نسخه‌ی جدید (که به گواهی امضا نیاز دارد – V2) شوند.
    • در V1 معرفی فایل کلید عمومی به نوسا اختیاری بود اما در V2 حتما باید گواهی امضا (به جای کلید عمومی) در نوسا درج شود. خواهیم دید که اینکار در محاوره‌ی تدوین یک حافظه‌ی مالیاتی با گزینه‌ی "خواندن کلید عمومی یا گواهی امضا از فایل" انجام می‌شود.
    • با گذشت بیش از 4 ماه از ارائه‌ی نسخه‌ی V2، هنوز اشکالات زیادی در آن وجود دارد و به همین دلیل، با اینکه سیستم نوسا به صورت کامل برای استفاده از V2 توسعه داده شده است اما به صورت پیش‌فرض از V1 برای کار با سامانه استفاده می‌شود.
    • سیستم نوسا حتی با گواهی الکترونیکی (گواهی امضا) هم قادر است با روش V1 با سامانه‌ی مودیان کار کند. یعنی اگر پس از دریافت گواهی امضا و بارگذاری آن در سامانه‌ی مودیان و درج در حافظه‌ی مالیاتی در سیستم نوسا، مشکل پیش‌بینی نشده‌ای در نسخه‌ی V2 سامانه پیش بیاید، کاربران می‌توانند بدون تغییر پیکربندی حافظه‌ی مالیاتی به سهولت از V1 برای کار با سامانه استفاده کنند.
    • در پایان عملیات با gica یک فایل حاوی گواهی الکترونیکی با فرمت crt دریافت می‌شود. این فرمت برای سامانه‌ی مودیان مناسب نیست و باید به فرمت cer تبدیل شود. به این منظور فایل crt دریافت شده از gica را با Double Click باز کنید (محاوره‌ی بازنمایی محتویات در Windows ظاهر می‌شود). در صفحه‌ی Details، تکمه‌ی Copy To File را فشار دهید. یک Export Wizard بازنمایی خواهد شد. در صفحه‌ی دوم این Wizard گزینه‌ی دوم (Base-64 encoded X.509) را انتخاب کنید و در ادامه نام فایل cer را مشخص کنید. فایلی که از این روش حاصل می‌شود برای بارگذاری در سامانه‌ی مودیان و درج در حافظه‌ی مالیاتی در سیستم نوسا مناسب است.

     

     

    مفاهیم و تغییرات کلی نوسا در رابطه با حافظه مالیاتی سامانه مودیان

     

    مودیان باید در نظام پایانه‌های فروشگاهی و سامانه مودیان (دوباره) ثبت نام کنند و این ثبت نام صرفا به معنی ایجاد (یا معرفی) یک حافظه مالیاتی در آن سامانه است. علی‌رغم حجم عظیم توضیحات و تفصیلات و عملیات بروکراتیکی که در سامانه‌ی مزبور حول مفهوم حافظه مالیاتی در صفحه‌های واسط کاربر و مستندات وجود دارد، واقعیت این است که هر حافظه مالیاتی صرفا یک شناسه برای شناسایی مودی است – شبیه شماره اقتصادی یا شناسه ملی. دلیل واقعی اینکه یک شناسه جدید معرفی شده است را نمی‌دانیم – حدس می‌زنیم برای پشتیبانی از تفکیک عملیات مختلف یک شماره اقتصادی باشد، به نحوی که یک مودی با یک کد اقتصادی مشخص بتواند چندین شناسه در سامانه مودیان داشته باشد و به این ترتیب امکان معرفی یا تعریف چندین حافظه مالیاتی در کارپوشه‌ی سامانه مودیان برای یک مودی وجود دارد.

     

    تنوع و تعدد حافظه‌های مالیاتی در سیستم نوسا نه لزوما فقط به تبعیت از ایده‌ی فوق بلکه با ملاحظات دیگری همراه بوده است. ابتدا تذکر می‌دهیم که برای بیش از 90 درصد از کاربران ما احتمالا فقط یک حافظه مالیاتی مطرح است و اگر از رویه‌های عادی سیستم نوسا تبعیت شود در نهایت چنین خواهد بود که پس از تعریف ابتدایی حافظه مالیاتی، دیگر هرگز در حین تنظیم برگه‌های فروش یا کار با بخش‌های مختلف سیستم، نیازی به درگیری با مفهوم حافظه مالیاتی نخواهیم داشت. اما به دفعات دیده شده که در یک پایگاه اطلاعاتی سیستم نوسا، عملا داده‌هایی که مربوط به مودیان مختلفی هستند به صورت درهم‌کرد درج می‌شوند و در این حین از بخش‌های سیستم نیز برای تفکیک داده‌های مزبور استفاده می‌شود. مثلا یک هولدینگ همه‌ی شرکت‌های زیرمجموعه‌ی خود را در یک پایگاه تعریف می‌کند یا یک شرکت دولتی که در همه‌ی شهرستان‌های یک استان موجودیت‌های مجزایی دارد، از یک پایگاه اطلاعاتی به صورت درهم‌کرد برای همه‌ی شهرستان‌ها استفاده می‌کند. در این موارد قاعدتا بخش‌ها به این موجودیت‌های تلفیق شده مربوط هستند و البته ممکن است یک موجودیت چند بخش داشته باشد یا یک بخش مربوط به چند موجودیت باشد. برای اینکه این کاربران بتوانند کماکان از امکانات جدید نوسا استفاده کنند، مجبور بودیم تا تعدد حافظه‌های مالیاتی در یک پایگاه را به رسمیت بشناسیم، برای این امر فهرستی از حافظه‌های مالیاتی مربوط به سامانه مودیان داریم که با انتخاب گزینه‌ی مربوط از منوی سیستم در صفحه‌ای به شکل زیر احضار می‌شود:

     

     

    چنین است که در یک پایگاه اطلاعاتی نوسا می‌توانیم به تعداد دلخواه حافظه مالیاتی تعریف کنیم. هر حافظه مالیاتی باید در سامانه‌ی مودیان معرفی شود و شناسه‌ی مربوط از سامانه دریافت شده و به عنوان مهم‌ترین فیلد برای حافظه مالیاتی در سیستم نوسا درج شود. از طرف دیگر، برای هر یک از حافظه‌های مالیاتی باید بخش‌هایی که مربوط به آن حافظه هستند را مشخص کنیم. همانطور که اشاره کردیم، به جز اینکه هر حافظه مالیاتی ممکن است بخش‌های متعددی داشته باشد، هر بخش نیز ممکن است به بیش از یک حافظه مالیاتی مرتبط شود. در زمان تنظیم برگه‌ی فروش، از روی بخش سند فروش (که به صورت پیش‌فرض همان بخش جاری کاربر است) فهرستی از حافظه‌های مالیاتی مرتبط برای انتخاب در اختیار کاربر قرار خواهد گرفت. اما همانطور که گفتیم برای بیشتر کاربران فقط یک حافظه مالیاتی وجود دارد و همه‌ی بخش‌هایی که امکان تنظیم برگه‌ی فروش دارند به همان یک حافظه‌ی مالیاتی مرتبط هستند. به این ترتیب در حین تنظیم برگه‌ی فروش حافظه مالیاتی به صورت خودکار لحاظ خواهد شد و کاربر نیاز به انتخاب نخواهد داشت.

     

    جزییات تعریف حافظه‌های مالیاتی و تعیین فیلدهای آن، در بخش مربوط، به تفصیل توضیح داده خواهند شد. به اختصار چنین است که هر حافظه مالیاتی به جز فیلدهای استاندارد شناسایی (کد، نام، نام لاتین و یادداشت)، همانطور که گفتیم، یک "شناسه در سامانه مودیان" دارد. مجموعه‌ای از مشخصات فروشنده (برای بازنمایی یا چاپ در برگه‌های فروش مربوط به حافظه‌ی مالیاتی) نیز در حافظه مالیاتی تعیین می‌شود.

     

    حافظه مالیاتی، به جز شناسه‌ای که در سامانه مودیان به آن نسبت داده می‌شود، دو وظیفه‌ی فرعی را نیز (حداقل با تحلیلی که ما از سیستم انجام داده‌ایم) برعهده دارد. یکی ایجاد امکان امضای دیجیتال با استفاده از زوج کلید خصوصی و عمومی (یا گواهی امضا) و دیگر، تفکیک سریال صورت‌حساب‌های ارسال شده به سامانه مودیان. درگیری با سریال صورت‌حساب‌ها و ایجاد شناسه‌ی منحصر به فرد برای هر صورت‌حساب در زمان ارسال، برعهده‌ی سیستم نوسا است. تنها نکته‌ی (کلاسیک، استاندارد و) ساده‌ای که به نظر می‌رسد این است که به نحوی تعیین کنیم سریال مزبور از چه شماره‌ای آغاز شود – به عبارت دیگر آخرین سریال صادر شده (قبلی) از حافظه مالیاتی چیست. این داده، البته، در کارپوشه‌ی سامانه مودیان غایب بوده است اما ما برای تکمیل مفهوم و نیز برای اینکه کاربران بتوانند ادامه‌ی صورت‌حساب‌هایی که قبلا در یک سیستم دیگر (یا با واسطه) ارسال شده‌اند را با سیستم نوسا ارسال کنند برای هر حافظه مالیاتی "آخرین سریال صادر شده" را تعبیه کرده‌ایم. البته در اکثر موارد این فیلد صفر است و با ارسال صورت‌حساب‌ها به تدریج توسط سیستم به هنگام می‌گردد.

     

    یکی از تمهیدات امنیتی که در استفاده از API سامانه مودیان اجبار شده است، امضای دیجیتالی داده‌های (درخواست) ارسالی به سامانه است. به جز این هر یک از صورت‌حساب‌های ارسالی نیز علاوه بر رمزگذاری باید جداگانه به صورت دیجیتالی امضا شوند (و از آنجا که صورت‌حساب رمز شده و امضای دیجیتالی آن بخشی از داده‌های ارسالی به سامانه است، آن امضا نیز باید به همراه صورت‌حساب رمز شده دوباره امضا شود). امضای دیجیتالی یکی از مکانیزم‌های استاندارد رمزنگاری نامتقارن است که به صورت کامل در یکی از مباحث بخش "مقدمه" توضیح داده شده است. گفتیم که در این فرآیند با یک فایل حاوی کلید خصوصی و یک فایل دیگر حاوی کلید عمومی یا گواهی امضا سروکار داریم. مجددا یادآوری می‌کنیم که امنیت کلید خصوصی بسیار حساس است و همانند کلمه‌ی عبور، تحت هیچ شرایطی نباید افشا شود. برای ایجاد امکان امضای دیجیتال، سامانه‌ی مودیان اجبار کرده است که هر مودی باید یک زوج کلید اختصاصی به ازای هر حافظه مالیاتی داشته باشد. کلید خصوصی باید نزد مودی با امنیت کامل حفظ شود و کلید عمومی یا گواهی امضا باید در حین ایجاد حافظه مالیاتی در سامانه بارگذاری شود. مراحل ابتدایی برپاسازی سیستم، به اختصار، عبارت است از:

     

    • ایجاد 3 فایل حاوی کلید خصوصی، درخواست گواهی امضا (CSR) و کلید عمومی توسط ابزار ارائه شده توسط نوسا (در برنامه‌ی نصب).
    • دریافت فایل گواهی الکترونیکی مبتنی بر CSR ایجاد شده در مرحله‌ی قبل از gica (این مرحله برای استفاده از نسخه‌ی V2 سامانه ضروری است ولی برای استفاده از نسخه‌ی V1 اختیاری است) + تبدیل فایل دریافت شده از gica از فرمت crt به فرمت cer.
    • ثبت نام در سامانه مودیان و بارگذاری فایل حاوی گواهی امضای الکترونیکی (cer – برای V2 یا V1) یا کلید عمومی (برای V1) و دریافت شناسه‌ی حافظه مالیاتی
    • تعریف حافظه‌ی مالیاتی در سیستم نوسا با شناسه‌ی دریافت شده از سامانه مودیان و بارگذاری فایل حاوی کلید خصوصی و فایل حاوی گواهی امضا (cer – برای V2).
    • ارتباط دادن بخش‌ها به حافظه‌ی مالیاتی

     

    لازم به ذکر است که کلید خصوصی در پایگاه اطلاعاتی نوسا به صورت رمز شده نگهداری می‌شود به صورتی که حتی دسترسی مستقیم به داده‌ها منجر به افشای کلید خصوصی نخواهد شد. خود سیستم در زمان مناسب کلید خصوصی را رمزگشایی می‌کند و از آن برای امضای دیجیتال صورت‌حساب‌ها و داده‌های ارسالی به سامانه مودیان استفاده می‌کند. جزییات کار با حافظه‌های مالیاتی در یکی از بخش‌های آتی همین مستند توضیح داده شده‌اند. شکل زیر محاوره‌ی تدوین یک حافظه مالیاتی را نشان می‌دهد:

     

     

     

     

     

     

    مفاهیم و تغییرات کلی روش‌های ارسال پارامتریک اطلاعات به سامانه مودیان

     

    طی تعریف، صورت‌حساب‌ها توسط API در قالب JSON به سامانه مودیان ارسال می‌شوند. به دلایلی که در ادامه توضیح خواهیم داد، تصمیم گرفتیم که میزانی از قابلیت تعریف و شخصی‌سازی را در مکانیزم تولید JSON توسط سیستم نوسا فراهم کنیم. این JSON یک object است حاوی یک object دیگر و دو بردار. یک object به نام header داریم که حاوی اطلاعات عمومی صورت‌حساب و جمع مبالغ سطرهای صورت‌حساب است. یک بردار body داریم که هر المان آن یکی از سطرهای صورت‌حساب است. یک بردار payments هم داریم که مربوط به پایانه‌های فروشگاهی است و هر المان آن مربوط به یکی از پرداخت‌ها است. از آنجا که سیستم ما یک پایانه فروشگاهی نیست (و مکانیزم پرداخت آنلاین یا POS نداریم)، با بردار payments کاری نداریم – یا حداقل در وضعیت کنونی تعریف نظام پایانه‌های فروشگاهی و سامانه مودیان، فعلا کاری با آن نداریم. header و هر یک از المان‌های body خود یک object هستند و حاوی تعدادی فیلد. در تعریف روش ارسال اطلاعات، فیلدهای تشکیل‌دهنده‌ی header و body و نحوه‌ی پر شدن آنها با داده‌های نوسا مشخص می‌شوند. در ادامه، دلایل پیاده‌سازی روش ارسال قابل تعریف را شرح می‌دهیم:

     

    1. برخی از فیلدهایی که در JSON مورد نیاز هستند مثل کدهای جدید واحد‌های مقدار یا نوع ارز و شناسه‌ی کالا / خدمت به تازگی در سیستم نوسا تعبیه شده‌اند. اما ممکن است کاربران از قبل همین فیلدها را به صورتی در داده‌های نوسا تامین کرده باشند – مثلا "کد واحد مقدار در سامانه مودیان" را به عنوان "کد واحد مقدار" وارد کرده باشند یا کد ISO 4217 انواع ارز را به عنوان علامت اختصاری ارز درج کرده باشند یا شناسه‌ی کالا / خدمت را به عنوان کد میله‌ای یا شماره فنی وارد کرده باشند. برای اینکه کاربران در این شرایط نیاز به اصلاح داده‌های خود نداشته باشند، روش ارسال را قابل تعریف کرده‌ایم تا کاربران بتوانند در شرایط فوق فیلد مبداء را تغییر دهند و مثلا به جای شناسه‌ی کالا / خدمت از کد میله‌ای یا شماره‌ی فنی استفاده کنند.

     

    1. رفتار کاربران در تنظیم برگه‌های فروش ممکن است با هم متفاوت باشد، به خصوص با تغییری که در سه سال گذشته در رابطه با تلفیق عوارض و مالیات بر ارزش افزوده مشاهده کرده‌ایم. به صورت مشخص این احتمال را می‌دهیم که کاربران ممکن است مطابق دستور‌العمل‌های کنونی دیگر از عوارض ارزش افزوده استفاده نکنند و کل مبلغ ارزش افزوده را به عنوان مالیات لحاظ کنند. همچنین این احتمال را هم می‌دهیم که کاربران ممکن است کماکان مالیات و عوارض را به صورت تفکیک شده (و در امتداد روش پیش از سال 1399) محاسبه و درج نمایند. برای اینکه بتوانیم هر دو وضعیت فوق را در ارسال اطلاعات به سامانه مودیان پشتیبانی کنیم از روش ارسال قابل تعریف کمک می‌گیریم. در آنچه به صورت پیش‌فرض تعریف کرده‌ایم فرض بر این است که مالیات بر ارزش افزوده، کل مبلغ مربوط را در خود داشته باشد و در مقابل عوارض قانونی به صورت جداگانه و حسب مورد برای کالاهای خاص لحاظ شده و ارسال شود. در صورتی که این فرض با روال عملیات کاربر متفاوت باشد، کاربر می‌تواند تعریف روش ارسال را تغییر دهد و به جای مالیات بر ارزش افزوده از جمع عوارض و مالیات بر ارزش افزوده برای تشکیل JSON و ارسال استفاده نماید.

     

    1. با توجه به اینکه ساختار JSON مورد بحث از تیر ماه 1401 تا به حال (دی ماه 1402)، بیش از 8 بار تغییر کرده و از این تغییرات 3 مورد پس از آبان ماه 1401، 1 مورد در نیمه‌ی بهمن‌ماه 1401 و 3 مورد در سال 1402 بوده است (زمان زیادی پس از اجبار شرکت‌های بورسی به ارسال صورت‌حساب به سامانه مودیان) به احتمال بسیار بسیار زیاد باز هم تغییر خواهیم داشت و آن تغییرات آتی مستلزم تغییر در سیستم نوسا نیز خواهند بود. با این همه یک احتمال ضعیف هم وجود دارد که تغییرات به صورتی باشند که فقط با اصلاح روش ارسال اطلاعات قابل مدیریت بوده و نیازی به تغییر سیستم نداشته باشیم. حتی اگر چنین نباشد (و مجبور باشیم سیستم را تغییر دهیم) وجود روش ارسال قابل تعریف باعث می‌شود که مشکلی با داده‌هایی که قبلا با روش قدیمی به سامانه مودیان ارسال شده‌اند نداشته باشیم.

     

    1. حاصل محاسبات اعشاری در سامانه‌ی مودیان همیشه، به غلط، به صورت "قطع شده" مورد انتظار است – نرم‌افزار پردازش داده‌ها در سامانه‌ی مودیان، در این زمینه بسیار حساس، پیگیر و سخت‌گیر است و کوچکترین تفاوتی را برنمی‌تابد و خطا می‌دهد. در مبحث اختصاصی روش‌های ارسال اطلاعات به سامانه‌ی مودیان خواهیم دید که تمهیداتی در تعریف روش ارسال اندیشیده‌ایم که در صورت استفاده از آنها می‌توانیم داده‌ها را با اندکی اختلاف به سامانه ارسال کنیم – به صورتی که خطاهای مورد اشاره پیش نیایند.

     

    یک روش ارسال که به نظر ما مناسب می‌آید برای هر نوع فاکتور فروش و فاکتورهای اصلاحی، برگشت و ابطال آن‌ها توسط نوسا آماده شده (به عنوان پیش‌فرض نوسا). فایل صادره‌ی حاوی این روش‌ ارسال توسط نوسا به کاربران ارائه می‌شود. روش ارسال موجود در این فایل‌ را می‌توان با امکانات سیستم / فراخوانی یک فایل صادره به پایگاه اطلاعاتی اضافه کرد. در محاوره‌ی فراخوانی، در صفحه‌ی فروش، آخرین گزینه مربوط به روش‌های ارسال اطلاعات به سامانه مودیان است. حداکثر تلاش را انجام داده‌ایم تا این روش‌ ارسال "کامل" باشد و برای ارسال همه‌ی انواع صورت‌حساب و نیز ارسال صورت‌حساب‌های اصلاحی، ابطالی و برگشت از فروش قابل استفاده باشند. با این همه ممکن است نیاز باشد که کاربران تغییراتی در این روش‌ به عمل آورند و یا روش‌های جدیدی تعریف گردد. توضیحات بیشتر در یکی از بخش‌های آتی که به صورت اختصاصی برای روش‌های ارسال نوشته شده است ارائه خواهد شد.

     

    جهت سهولت در تعریف حافظه مالیاتی و روش‌های ارسال پارامتریک اطلاعات در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه 1402 آموزش داده خواهد شد:

     

     

     

    روزبه
    کاربر با تجربه
    کاربر با تجربه

    --
    30 بهمن 1402 11:18 ق.ظ

    بازنویسی اساسی ابزار اتصال نرم‌افزار فروش به سامانه مودیان - بخش دوم: نوع و وضعیت برگه‌های فروش و سیر عملیات مرتبط با سامانه در نرم‌افزار نوسا

     

     

    تفکیک صورت‌حساب‌ها در سامانه‌ی مودیان برحسب "نوع" و "الگو"

     

    در سامانه مودیان دو فیلد جداگانه ولی مربوط به هم برای توصیف صورت‌حساب لحاظ شده‌اند: نوع و الگو. نوعِ اول حاوی اطلاعات کامل فروشنده، خریدار و کالا یا خدمت است / نوع دوم فاقد اطلاعات خریدار / نوع سوم فاقد اطلاعات خریدار و کالا یا خدمت است. به بیان دیگر نوع سوم رسید پرداخت وجه صادره از دستگاه کارت‌خوان بانکی یا درگاه الکترونیکی پرداخت (پایانه فروشگاهی) است. انواع اول و دوم برای صورت‌حساب‌های شرکتی / سیستمی استفاده می‌شوند که البته نوع دوم برای فروش به مصرف‌کننده نهایی است.

     

    در صورت‌حساب‌های نوع اول یا دوم، یک "الگوی صورت‌حساب" نیز داریم: در نوع اول، الگوهای 1) فروش، 2) فروش ارز، 3) صورت‌حساب طلا، جواهر و پلاتین، 4) قرارداد پیمانکاری، 5) قبوض خدماتی، 6) بلیط هواپیما، 7) صادرات وجود دارند. در نوع دوم، الگوهای 1) فروش، 2) صورت‌حساب طلا، جواهر و پلاتین وجود دارند. در صورت‌حساب‌های نوع سوم الگو وجود ندارد.

     

    از بین 10 مدل صورت‌حسابی که از ترکیب نوع و الگو حاصل می‌شوند؛ نوع سوم که مربوط به درگاه‌های پرداخت (POS) است طبیعتا به ما مربوط نمی‌شود + صورت‌حساب طلا و جواهر (2 مدل)، قبوض خدماتی و بلیط هواپیما مربوط به سیستم‌های اختصاصی فروش هستند و ربطی به سیستم ما ندارند. 5 مدل صورت‌حساب باقی می‌ماند که باید در سیستم نوسا پشتیبانی شوند. برای هر فاکتور فروش یک فیلد به نام "نوع صورت‌حساب در سامانه مودیان" خواهیم داشت که می‌تواند یکی از حالت‌های زیر باشد:

     

    فروش عادی                                                               (نوع 1 الگوی 1)

    قرارداد پیمانکاری                                                        (نوع 1 الگوی 4)

    صادرات                                                                     (نوع 1 الگوی 7)

    فروش به مصرف‌کننده نهایی                                       (نوع 2 الگوی 1)

     

    در گذشته، الگوی فروش ارز، مربوط به فروش ارزی بود و در ویرایش 12.02 نوسا هم پشتیبانی می‌شد. در یکی از تغییرات سال 1402، فروش ارزی را به فروش ارز تغییر دادند و در همین رابطه ساختار JSON مربوط به این الگو را نیز به صورت اساسی اصلاح کردند. این الگو در ویرایش 1210 نوسا حذف یا غیرفعال شده است.

     

    مقدار پیش‌فرض فیلد انواع فروش در نرم‌افزار نوسا، "فروش عادی" است و طبیعتا همه‌ی برگه‌های فروشی که از قبل در پایگاه اطلاعات درج شده‌اند همین نوع را خواهند داشت. در مستندات سامانه مودیان، نوع و الگوی صورت‌حساب تاثیر زیادی در ساختار JSON ارسالی به سامانه مودیان دارد. در سیستم نوسا این تاثیر را بیش از همه در تعریف روش ارسال خواهیم دید. در تعریف سطرهای یک روش ارسال، یک دریچه‌ی قابل علامت‌گذاری چندگانه وجود دارد که با استفاده از آن تعیین می‌کنیم که فیلد مورد نظر (تعریف شده در آن سطر) در کدام نوع یا انواع صورت‌حساب باید به سامانه ارسال شود.

     

     

     

    بدون اینکه بخواهیم به جزییات تدوین یکی از سطرهای روش ارسال بپردازیم، در شکل فوق مشخص است که "روش تسویه" تحت نام "setm" در header درج می‌شود ولی نه برای انواع صادرات و فروش به مصرف‌کننده نهایی.

     

     

     

     

    تفکیک صورت‌حساب‌ها در سامانه‌ی مودیان برحسب "موضوع"

     

    جهت سهولت در این ویدیو به رفتار کلی و وضعیت های فاکتورهای فروش در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

     

    در سامانه‌ی مودیان از مفهومی به نام "موضوع" برای تفکیک صورت‌حساب‌ها برحسب عملکرد آنها استفاده شده است. موضوع می‌تواند اصلی، برگشت از فروش، اصلاحی  و ابطالی باشد. صورت‌حساب اصلی همان فاکتور فروش است و صورت‌حساب برگشت از فروش نیز متناظر با همان نوع از برگه‌های فروش نوسا است. البته خواهیم دید که برگشت از فروش در سامانه‌ی مودیان، نه به صورت یک رویداد مستقل، بلکه با ارجاع به یک صورت‌حساب اصلی (فاکتور فروش) تعریف شده است. برای اصلاح فاکتورهای فروش یا صورت‌حساب‌های برگشت از فروشی که قبلا به سامانه‌ی مودیان ارسال شده‌اند، باید وضعیت جدید (اصلاح شده‌‌ی) آنها را با موضوع صورت‌حساب اصلاحی به سامانه ارسال کنیم. ابطال یک صورت‌حساب ارسال شده‌ی قبلی در سامانه با ارسال صورت‌حساب ابطالی انجام می‌شود.

     

    صورت‌حساب‌های برگشت از فروش، اصلاحی و ابطالی صورت‌حساب‌های «ارجاعی» هستند – یعنی باید یک صورت‌حساب که قبلا به سامانه ارسال شده باشد به عنوان "مرجع" آنها مشخص شود. صورت‌حساب‌های اصلی، برگشت از فروش و اصلاحی می‌توانند در نقش صورت‌حساب «مرجع» قرار بگیرند. ترکیب این دو تعریف، حالت‌های بسیار متنوعی را پیش می‌آورد که متاسفانه تمام آنها امکان وقوع دارند و باید بررسی شوند. به تدریج با مفاهیم و ابزارهایی که برای مدیریت حالت‌های مزبور پیاده‌سازی شده‌اند آشنا خواهیم شد:

     

    اصلاح یک فاکتور فروش

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب اصلاحی – فاکتور فروش اصلاح شده – ارجاعی

     

    ابطال یک فاکتور فروش

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب ابطالی – خالی – ارجاعی

     

    اصلاح مجدد یک فاکتورفروش

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب اصلاحی اول – فاکتور فروش اصلاح شده (1) – ارجاعی – مرجع
        • صورت‌حساب اصلاحی دوم – فاکتورفروش اصلاح شده – ارجاعی (با مرجع سطر قبل)

     

    ابطال اصلاحی یک فاکتور فروش

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب اصلاحی – فاکتور فروش اصلاح شده – ارجاعی – مرجع
        • صورت‌حساب ابطالی – خالی – ارجاعی (با مرجع سطر قبل)

     

    ابطال فاکتور فروش پس از اصلاح

    اگر صورت‌حساب اصلاحی توسط خریدار تایید نشده باشد برای ابطال فاکتور فروش پس از اصلاح باید ابتدا صورت‌حساب اصلاحی را ابطال کنیم – یعنی یک صورت‌حساب ابطالی با مرجع صورت‌حساب اصلاحی ارسال کنیم – و سپس اقدام به ارسال صورت‌حساب ابطالی با مرجع صورت‌حساب اصلی نماییم. در مورد "وضعیت‌های صورت‌حساب در سامانه‌ی مودیان برحسب واکنش خریدار" در بند بعدی توضیح خواهیم داد.

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب اصلاحی – فاکتور فروش اصلاح شده – ارجاعی – مرجع
        • صورت‌حساب ابطالی – خالی – ارجاعی (با مرجع سطر قبل)
      • صورت‌حساب ابطالی – خالی – ارجاعی (با مرجع فاکتور فروش)

    تایید صورت‌حساب اصلاحی توسط خریدار، به صورت خودکار منجر به ابطال صورت‌حساب اصلی در سامانه‌ی مودیان خواهد شد. به همین دلیل اگر این وضعیت وجود داشته باشد، ابطال صورت‌حساب اصلاحی خود به خود به معنی ابطال فاکتور فروش نیز خواهد بود.

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب اصلاحی – فاکتور فروش اصلاح شده – ارجاعی – مرجع
        • صورت‌حساب ابطالی – خالی – ارجاعی (با مرجع سطر قبل)

     

    برگشت یک فاکتور فروش

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش – مانده‌ی فاکتور فروش پس از برگشت – ارجاعی

     

    ابطال صورت‌حساب برگشتی

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش – مانده‌ی فاکتور فروش پس از برگشت – ارجاعی – مرجع
        • صورت‌حساب ابطالی – خالی – ارجاعی (با مرجع سطر قبل)

     

    ابطال فاکتور فروش پس از برگشت

    اگر صورت‌حساب برگشت توسط خریدار تایید نشده باشد برای ابطال فاکتور فروش پس از برگشت باید ابتدا صورت‌حساب برگشت را ابطال کنیم – یعنی یک صورت‌حساب ابطالی با مرجع صورت‌حساب برگشت ارسال کنیم – و سپس اقدام به ارسال صورت‌حساب ابطالی با مرجع صورت‌حساب اصلی نماییم.

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش – مانده‌ی فاکتور فروش پس از برگشت – ارجاعی – مرجع
        • صورت‌حساب ابطالی – خالی – ارجاعی (با مرجع سطر قبل)
      • صورت‌حساب ابطالی – خالی – ارجاعی (با مرجع فاکتور فروش)

    تایید صورت‌حساب برگشت توسط خریدار، به صورت خودکار منجر به ابطال صورت‌حساب اصلی در سامانه‌ی مودیان خواهد شد. به همین دلیل اگر این وضعیت وجود داشته باشد، ابطال صورت‌حساب برگشت خود به خود به معنی ابطال فاکتور فروش نیز خواهد بود.

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش – مانده‌ی فاکتور فروش پس از برگشت – ارجاعی – مرجع
        • صورت‌حساب ابطالی – خالی – ارجاعی (با مرجع سطر قبل)

     

    اصلاح صورت‌حساب برگشتی

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش – مانده‌ی فاکتور فروش پس از برگشت – ارجاعی – مرجع
        • صورت‌حساب اصلاحی – مانده‌ی فاکتور فروش پس از برگشت اصلاح شده – ارجاعی (با مرجع سطر قبل)

     

    برگشت یک فاکتور فروش پس از اصلاح

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب اصلاحی – فاکتور فروش اصلاح شده – ارجاعی – مرجع
        • صورت‌حساب برگشت از فروش – مانده‌ی فاکتور فروش اصلاح شده پس از برگشت – ارجاعی (با مرجع سطر قبل)

     

    برگشت مجدد یک فاکتور فروش

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش اول – مانده‌ی فاکتور فروش پس از برگشت اول – ارجاعی – مرجع
        • صورت‌حساب برگشت از فروش دوم – مانده‌ی فاکتورفروش پس از هر دو  برگشت – ارجاعی (با مرجع سطر قبل)

     

    برگشت مجدد پس از اصلاح برگشت اول

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش اول – مانده‌ی فاکتور فروش پس از برگشت اول – ارجاعی – مرجع
        • صورت‌حساب اصلاحی – مانده‌ی فاکتور فروش پس از برگشت اول اصلاح شده – ارجاعی (با مرجع سطر قبل) – مرجع
          • صورت‌حساب برگشت از فروش دوم – مانده‌ی فاکتور فروش پس از برگشت اول اصلاح شده و برگشت دوم – ارجاعی (با مرجع سطر قبل)

     

    همانطور که مشاهده می‌شود هر صورت‌حساب ارجاعی (به جز ابطالی)، خود نیز می‌تواند صورت‌حساب مرجع باشد. یک نکته‌ی قابل توجه این است که برای یک مرجع نمی‌توان بیش از یک صورت‌حساب ارجاعی تنظیم کرد و همین محدودیت باعث شده که زنجیره‌ای از صورت‌حساب‌های مرجع و ارجاعی تشکیل شود و مجبور باشیم هر کاربرد را جداگانه بررسی کنیم. واضح است که حالت‌های متعدد دیگری نیز در زنجیره فاکتورها قابل تصور هستند که آنها را شرح نداده‌ایم اما همه‌ی آنها با مطالعه‌ی همین نمونه‌ها قابل طرح و فهم خواهند بود. البته اگر صورت‌حساب ارجاعی اول ابطال شود می‌توانیم مجددا برای صورت‌حساب مرجع یک ارجاعی دیگر درج کنیم. مثلا اگر یک فاکتور فروش قبلا برگشت شده باشد و بخواهیم آنرا اصلاح کنیم باید ابتدا صورت‌حساب برگشت (ارجاعی موجود) را ابطال کنیم تا فاکتور فروش (مرجع) بتواند مجددا در نقش مرجع – مثلا برای صورت‌حساب اصلاحی ظاهر شود. نکته‌ی دیگر اینکه مرجع یک صورت‌حساب اصلاحی و برگشت، اگر صورت‌حساب اصلی نباشد (و مثلا مرجع خود یک اصلاحی یا برگشت باشد)، حتما باید "تایید شده" باشد. در مورد "وضعیت‌های صورت‌حساب در سامانه‌ی مودیان برحسب واکنش خریدار" در بند بعدی توضیح خواهیم داد.

     

     

     

    تفکیک صورت‌حساب‌ها در سامانه‌ی مودیان برحسب "واکنش خریدار"

     

    خریدار این اختیار را دارد که در کارپوشه‌ی خود صورت‌حساب‌های دریافت شده (صورت‌حساب‌های خرید از دید خریدار که البته کماکان از موضوعات اصلی، برگشتی، اصلاحی و ابطالی هستند) را تایید یا رد نماید. اگر در یک محدوده‌ی زمانی 30 روزه به اینکار اقدام نکند، صورت‌حساب‌ها به صورت خودکار توسط سامانه تایید می‌شوند. البته خواهیم دید که همه‌ی صورت‌حساب‌ها امکان تایید یا رد ندارند. در همین رابطه مفهومی (مجددا) به نام وضعیت در کارپوشه‌ی سامانه‌ی مودیان تعبیه شده است. وضعیت هر صورت‌حساب تحت تاثیر واکنش خریدار (و ماهیت صورت‌حساب و برخی نکات دیگر) مشخص می‌شود. این وضعیت در کارپوشه‌ی فروشنده نیز قابل مشاهده است. متاسفانه در حال حاضر هیچ روشی برای اینکه نرم‌افزار فروش بتواند از این وضعیت آگاهی یابد در API سامانه تعبیه نشده است – اما در مقابل، همانطور که در ادامه (و در مباحث بعدی) خواهیم دید، وضعیت مزبور (به خصوص انواع حالت‌های تایید شده) تاثیر بسیار زیادی در رویه‌های ارسال صورت‌حساب‌ها به سامانه دارند.

     

    ابتدا در مورد تاثیر انواع کارپوشه‌ی خریدار در وضعیت‌های مزبور توضیح می‌دهیم. با سعی و خطا، 3 حالت را تشخیص داده‌ایم:

    1) کارپوشه‌ی خریدار در سامانه‌ی مودیان وجود دارد و عملیاتی است.

    2) کارپوشه‌ی خریدار در سامانه‌ی مودیان وجود ندارد – مثلا خریدار مصرف‌کننده‌ی نهایی است یا اصلا فاقد پرونده‌ی مالیاتی یا کارپوشه است.

    3) کارپوشه‌ی خریدار در سامانه‌ی مودیان وجود دارد ولی مراحل برپاسازی کارپوشه به صورت کامل انجام نشده است (طبق توصیف سامانه، کارپوشه‌ی خریدار در گام نهایی نیست). وضعیت‌های مزبور به شرح زیر هستند:

     

     

    همانطور که مشاهده می‌شود بسیاری از رویه‌های سیستم به شدت تحت تاثیر وضعیت صورت‌حساب در سامانه قرار دارند. خواهیم دید که پیغام‌های اخطار مفصل (و ترسناکی) برای توجه دادن کاربر به اهمیت این موضوع در نرم‌افزار تعبیه شده‌اند. همچنین برای اینکه تکلیف سیستم در این رویه‌ها (با صورت‌حساب‌هایی که ممکن است تایید شده باشند) روشن باشد فرمان‌های صریحی برای "تعیین وضعیت تایید صورت‌حساب در سامانه" در فهرست برگه‌های فروش تعبیه شده‌اند که در جای خود به تفصیل توضیح داده خواهند شد.

     

     

     

    وضعیت برگه‌ی فروش در ارتباط با سامانه (در سیستم نوسا) و عملیات قابل اجرا

     

    هر برگه‌ی فروش یک فیلد مهم به نام "وضعیت ارسال به سامانه مودیان" دارد که در ابتدای کار در حالت "ارسال نشده" قرار دارد. رویه‌ی کلی چنین است که با اجرای انواع عملیات "ارسال"، برگه‌ی فروش به یکی از حالت‌های "در انتظار استعلام" می‌رود. پس از اخذ استعلام از سامانه‌ی مودیان، برگه‌ی فروش حسب مورد به یکی از وضعیت‌های "اعلام خطا در استعلام" یا "اعلام صحت" می‌رود. با توجه به تفاوت اساسی فاکتورفروش و صورت‌حساب برگشت از فروش در سامانه‌ی مودیان (اینکه اولی اصلی و دومی ارجاعی است)، طبیعی است که وضعیت ارسال به سامانه (و نیز عملیاتی که برروی برگه‌ی فروش قابل اجرا است) به صورت اساسی به نوع برگه‌ی فروش (فاکتور فروش یا صورت‌حساب برگشت از فروش) نیز وابسته است.

     

    همانطور که در بندهای قبلی همین بخش توضیح دادیم، در بسیاری از رویه‌ها، وضعیت تایید صورت‌حساب در کارپوشه‌ی خریدار در سامانه‌ی مودیان نقش اساسی ایفا می‌کند. دو فیلد برای بازنمایی این وضعیت در برگه‌ی فروش تعبیه شده‌اند: "وضعیت تایید در سامانه" و "وضعیت تایید اصلاحی در سامانه". در مورد تفاوت این دو کمی بعد بیشتر توضیح خواهیم داد. فعلا هیچ روشی برای اینکه بتوانیم این وضعیت تایید را مثلا با API از سامانه‌ی مودیان دریافت کنیم در سامانه تعبیه نشده است – اما از آنجا که اطلاع از وضعیت تایید، به هر حال، در رویه‌های مختلف اهمیت بسیار زیادی داشته است، فرمان‌هایی برای تعیین صریح این وضعیت توسط کاربر در سیستم پیاده‌سازی کرده‌ایم – کاربر باید به کارپوشه‌ی خود (فروشنده) در سامانه‌ی مودیان مراجعه کند و وضعیت تایید صورت‌حساب توسط خریدار را در آنجا مشاهده نماید و حاصل را با فرمان‌های پیش‌گفته در برگه‌های فروش در سیستم نوسا درج نماید. البته وضعیت تایید صورت‌حساب‌ها بیشتر در رویه‌های مربوط به صورت‌حساب‌های ارجاعی (اصلاح، برگشت، ابطال) مورد توجه قرار می‌گیرند. در این رویه‌ها، خطرات و نکات، همیشه، با پیغام‌های موکد و ترسناک به کاربر اطلاع داده می‌شوند. در رویه‌های اصلی سیستم (ارسال و استعلام فاکتورهای فروش به عنوان صورت‌حساب‌های اصلی) عموما کاری با این وضعیت‌ها نداریم و نیازی به بررسی آنها در کارپوشه و اعمال تغییرات در برگه‌های فروش نخواهیم داشت.

     

    خلاصه اینکه فیلدهای زیر، در کنار هم، وضعیت یک برگه‌ی فروش در ارتباط با سامانه‌ی مودیان را در سیستم نوسا مشخص می‌کنند: نوع برگه‌ی فروش، وضعیت ارسال برگه‌ی فروش به سامانه، وضعیت تایید در سامانه، وضعیت تایید اصلاحی در سامانه.

     

    توضیح در مورد وضعیت تایید اصلاح: در این مستند، یک بخش کامل به صورت‌حساب‌های اصلاحی اختصاص یافته است. به صورت خلاصه چنین است که اصلاحات انجام شده در یک برگه‌ی فروش به صورت یک صورت‌حساب اصلاحی به سامانه مودیان ارسال می‌شود. صورت‌حساب اصلاحی حاوی وضعیت اصلاح شده‌ی برگه‌ی فروش (نسبت به آنچه به عنوان "اصلی" به سامانه ارسال شده است) خواهد بود. مشخصات آخرین صورت‌حساب اصلاحی ارسال شده برای هر برگه‌ی فروش، در همان برگه‌ی فروش نگهداری می‌شوند. طبق تعریف سامانه‌ی مودیان، اصلاح مجدد یک برگه‌ی فروش (ارسال مجدد صورت‌حساب اصلاحی) فقط به شرطی میسر است که صورت‌حساب اصلاحی قبلی توسط خریدار تایید شده باشد. همچنین ارسال صورت‌حساب برگشت از فروش با مرجع یک برگه‌ی فروش اصلاح شده (یعنی برگه‌ای که صورت‌حساب اصلاحی مربوط به آن به سامانه ارسال شده است) فقط در صورتی میسر است که صورت‌حساب اصلاحی مزبور (که به عنوان مرجع برگشت لحاظ می‌شود) توسط خریدار تایید شده باشد.

     

    با توجه به این نکات، وضعیت تایید خود برگه‌ی فروش و وضعیت تایید صورت‌حساب اصلاحی ارسال شده برای آن برگه‌ی فروش به صورت دو فیلد جداگانه در برگه‌ی فروش بازنمایی می‌شوند: وضعیت تایید برگه‌ی فروش در سامانه و وضعیت تایید اصلاحی در سامانه. هر دو فیلد فقط می‌توانند حالت‌های تایید نشده و تایید شده را داشته باشند. همانطور که در بندهای قبلی گفتیم، وضعیت‌های تایید شده، عدم نیاز به واکنش و تایید سیستمی در کارپوشه‌ی سامانه‌ی مودیان، در نوسا به عنوان تایید شده تلقی می‌شوند. هر یک از فیلدهای پیش‌گفته، کاربردهای خود را دارند و به صورتی که در بخش‌های بعدی خواهیم دید در رویه‌های سیستم تاثیر می‌گذارند.

     

     

     

    عملیات قابل اجرا برروی برگه‌های فروش در نرم‌افزار فروش نوسا (در رابطه با سامانه‌ی مودیان)

     

    تمام این عملیات در فهرست برگه‌های فروش انجام می‌شوند. در جدول زیر به شرح آنها می‌پردازیم:

     

     

     

    وضعیت‌های فاکتورهای ارسالی به سامانه در نرم‌افزار نوسا:

     

    در جدول زیر به شرح این وضعیت‌ها می‌پردازیم:

     

     

    هر یک از عملیات پیش‌گفته برروی برگه‌های فروش با وضعیت‌های به خصوص قابل اجرا هستند:

     

     

    توجه کنید که استعلام صورت‌حساب‌ها در وضعیت‌های اعلام خطا نیز میسر است؛ رویه‌ی منطقی و صحیح (قاعدتا) این است که اگر سامانه مودیان در دریافت و پردازش صورت‌حساب‌ها مشکلی داشته باشد، مشکل مزبور باید به صورت خطای درخواست گزارش شود نه به عنوان خطای صورت‌حساب. به بیان دیگر، این خطاها مربوط به محتویات برگه‌ی فروش نیستند. متاسفانه در بسیاری از موارد دیده شده که خطاهای سامانه به عنوان خطای صورت‌حساب گزارش می‌شوند و در نتیجه صورت‌حساب را به یکی از وضعیت‌های اعلام خطا می‌برند. با گذشت زمان معمولا اشکال سامانه برطرف می‌شود و حتی صورت‌حسابی که اعلام خطا شده‌اند در کارپوشه‌ی سامانه به عنوان صورت‌حساب ارسال شده (که طبیعتا صحیح هم بوده است) مشاهده می‌شود. با وضعیت عجیبی مواجه خواهیم شد: صورت‌حساب، اعلام خطا شده است و باید دوباره ارسال شود ولی در کارپوشه ثبت شده است – یعنی اگر دوباره ارسال شود با خطای تکراری بودن شناسه‌ی منحصر به فرد صورت‌حساب مواجه خواهیم شد – که البته این خطا هم درست گزارش نمی‌شود!

     

    در این موارد، اگر صورت‌حساب اعلام خطا شده را دوباره استعلام کنیم (به جای ارسال مجدد) به احتمال بسیار زیاد، اعلام صحت دریافت خواهیم کرد. با توجه به این نکات، امکان استعلام صورت‌حساب‌های اعلام خطا شده را نیز فراهم کرده‌ایم تا حتی‌الامکان در این موارد بتوانیم به نحوی مشکل را حل کنیم.

     

     

    رویه‌های قابل اجرا بر روی برگه‌های فروش

     

    جهت سهولت در این ویدیو به مفهوم صورتحساب‌های مرجع و ارجاعی در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

     

    در این مبحث سیر عملیات قابل اجرا بر روی برگه‌های فروش و تاثیر آنها بر وضعیت ارسال به سامانه‌ی مودیان در برگه‌ها را بررسی خواهیم کرد. هر سیر را به صورت یک دیاگرام نشان خواهیم داد. وضعیت‌ها در یک مستطیل، عملیات به صورت فلش و تفکیک خروجی استعلام با لوزی نشان داده می‌شوند. در مورد ارسال اصلاحی، ابطالی و برگشت نکات خاصی وجود دارد که در ادامه (به همراه دیاگرام سیر مربوط) توضیح داده خواهند شد.

     

     

    دیاگرام فوق مربوط به ارسال ابتدایی یک فاکتور فروش (ارسال اصلی) یا یک صورت‌حساب برگشت از فروش است. با ارسال، برگه‌ی فروش به وضعیت "در انتظار استعلام اصلی" می‌رود و باید بعدا استعلام شود. اگر خطایی در استعلام پیش نیاید، به وضعیت "اعلام صحت" خواهد رفت و کار تمام است. اما اگر خطایی وجود داشته باشد، برگه‌ی فروش به وضعیت "اعلام خطا در استعلام اصلی" خواهد رفت. در این وضعیت قاعدتا باید خطای برگه اصلاح شود و دوباره ارسال گردد (حسب مورد اصلی یا برگشت از فروش). همچنین گفتیم که برخی از خطاهای اعلامی از سامانه، خطای برگه‌ی فروش نیستند و از اشکالات سامانه ناشی شده‌اند. این موارد از بررسی پیغام‌های خطا و همچنین بررسی بازنمایی شدن صورت‌حساب در کارپوشه‌ی سامانه‌ی مودیان قابل تشخیص هستند. در این موارد، اگر دوباره ارسال کنیم با خطای تکراری بودن شناسه‌ی یکتای صورت‌حساب مواجه خواهیم شد. برای ممانعت از این وضعیت امکان استعلام مجدد برگه‌های فروش "اعلام خطا در استعلام" (در اینجا اصلی و به صورت مشابه در سایر موارد) را فراهم کرده‌ایم.

     

    نکته در مورد مرجع برگشت از فروش: در یک بخش جداگانه توضیحات مفصلی در این مورد خواهیم داد – در اینجا به صورت خلاصه ذکر می‌کنیم که برگه‌های برگشت از فروش فقط به شرطی قابل ارسال به سامانه‌ی مودیان هستند که مرجع آنها در سیستم نوسا قابل شناسایی باشد. این مرجع و شرایط قابل استفاده بودن آن در دیاگرام فوق (طبیعتا) نشان داده نشده است. معتبر نبودن مرجع، به هر دلیل، منجر به خطا (در سیستم نوسا) در ارسال صورت‌حساب برگشت از فروش خواهد شد. هر خطایی در عملیات نوسا به صورت مناسب مدیریت می‌شود واشکالی در سیر عملیات ایجاد نخواهد کرد – مثلا در اینجا وضعیت برگه‌ی فروش را آشفته نخواهد کرد.

     

     

    پیشتر گفتیم که اگر کاربر یک برگه‌ی فروش اعلام صحت شده را اصلاح کند، آن برگه‌ی فروش به وضعیت "نیازمند ارسال اصلاحی" خواهد رفت. این، از معدود مواردی است که "وضعیت ارسال به سامانه"، بدون اینکه عملیاتی با سامانه انجام شده باشد، تغییر داده می‌شود. البته در بخش اختصاصی مربوط به صورت‌حساب‌های اصلاحی خواهیم دید که شرایط متعددی برای "امکان" اصلاح برگه‌ی فروش، یعنی برای اینکه به وضعیت "نیازمند ارسال اصلاحی" برود، وجود دارند – سیستم این شرایط را در صدور فرمان اصلاح یک برگه‌ی فروش بررسی می‌کند و اگر برقرار نباشند فقط به اندازه‌ای اجازه‌ی اصلاح برگه‌ی فروش را می‌دهد که اطلاعات ارسال شده به سامانه تغییر نکنند و نیازی به ارسال اصلاحی وجود نداشته باشد.

     

    دیاگرام فوق رویه‌ی ارسال و استعلام اصلاحی را نشان می‌دهد. شبیه است به سایر دیاگرام‌های ارسال و استعلام (وضعیت‌های درانتظار، اعلام خطا و اعلام صحت در آن دیده می‌شوند). ارسال صورت‌حساب اصلاحی برای فاکتور فروش و صورت‌حساب برگشت از فروش با دو فرمان جداگانه انجام می‌شوند که در دیاگرام مشاهده می‌گردد.

     

    تاثیر "وضعیت تایید اصلاحی در سامانه" در این رویه: در بندهای قبل گفتیم که وضعیت تایید صورت‌حساب‌ها در کارپوشه‌ی خریدار، تاثیر قابل ملاحظه‌ای در برخی از رویه‌ها دارد. در اینجا وضعیت تایید صورت‌حساب اصلاحی مورد بحث است. فرض کنید یک صورت‌حساب اصلاحی مطابق دیاگرام فوق برای یک برگه‌ی فروش ارسال شده باشد. تا زمانی که صورت‌حساب اصلاحی مزبور، در کارپوشه‌ی خریدار در سامانه‌ی مودیان تایید نشده باشد، امکان اصلاح مجدد برگه‌ی فروش وجود نخواهد داشت. این یکی از شرایطی است که سیستم در ابتدای اصلاح برگه‌ی فروش (و بردن آن به وضعیت "نیازمند ارسال اصلاحی" ) بررسی می‌کند. یادآوری می‌کنیم که از بین وضعیت‌های صورت‌حساب در کارپوشه‌ی سامانه‌ی مودیان، حالت‌های تایید شده، تایید سیستمی و عدم نیاز به واکنش در این مبحث (برای نوسا) تایید شده تلقی می‌شوند.

     

    ترکیب وضعیت اعلام صحت ناشی از ارسال و استعلام اصلاحی و وضعیت تایید اصلاحی در سامانه، دو وضعیت مهم و متفاوت را حاصل می‌کنند: اعلام صحت پس از اصلاحی که صورت‌حساب اصلاحی آن توسط خریدار تایید نشده باشد / یا تایید شده باشد. در سامانه‌ی مودیان، تایید یک صورت‌حساب ارجاعی (در اینجا صورت‌حساب اصلاحی) صورت‌حساب مرجع (فاکتور فروش یا صورت‌حساب برگشت از فروش) را به وضعیت "باطل شده" خواهد برد – صورت‌حساب ارجاعی عملا جایگزین صورت‌حساب مرجع خواهد شد. به همین دلیل اعلام صحت پس از اصلاحی که صورت‌حساب اصلاحی آن توسط خریدار تایید شده باشد، دقیقا همانند یک اعلام صحت عادی خواهد بود (یعنی، اینکه قبلا اصلاح شده است عملا فراموش می‌شود). البته استعلام این وضعیت تایید از سامانه‌ی مودیان در API سامانه پیاده‌سازی نشده است و دیدیم که وظیفه‌ی بررسی این وضعیت در کارپوشه و اعمال آن به داده‌های نوسا برعهده‌ی کاربر است (با فرمان صریح "تعیین وضعیت تایید اصلاحی در سامانه" در فهرست برگه‌های فروش).

     

    همین وضعیت تایید اصلاحی، در دیاگرام‌های بعدی (برای ابطال) هم موثر است که در ادامه خواهیم دید. از این پس، اعلام صحت پس از اصلاحی که صورت‌حساب اصلاحی آن توسط خریدار تایید نشده باشد را به صورت "اعلام صحت اصلاحی" در دیاگرام‌ها نشان خواهیم داد (یعنی، اینکه قبلا اصلاح شده است در عملیات موثر خواهد بود – فراموش نشده است). البته گفتیم که برگه‌ی فروشی که در وضعیت فرضی "اعلام صحت اصلاحی" قرار داشته باشد دوباره به وضعیت نیازمند ارسال اصلاحی نخواهد رفت – سیستم ممانعت می‌کند. در بخش‌های بعدی خواهیم دید که چنین برگه‌ای نمی‌تواند به عنوان مرجع برگشت نیز ایفای نقش نماید. البته تمام محدودیت‌های اینچنینی، بدون برهم زدن وضعیت برگه‌های فروش، توسط سیستم نوسا کنترل می‌شوند و پیغام‌های خطا (یا اخطار) مفصلی هم در مورد آنها داده خواهند شد. به همین دلیل برای مختصر کردن شکل‌ها آنها را در دیاگرام‌ها نشان نداده‌ایم. دیاگرام بعدی اهمیت بسیار زیادی دارد – صورت‌حساب اصلاحی تایید نشده به صورت مستقل قابل ابطال است:

     

     

    مطابق توضیحاتی که قبلا دادیم، برگه‌ی فروشی را تصور کنید که اصلاح شده باشد و به وضعیت "نیازمند ارسال اصلاحی" رفته باشد و در ادامه صورت‌حساب اصلاحی مربوط به سامانه ارسال شده و در استعلام "اعلام صحت" شده باشد. گفتیم که اگر صورت‌حساب اصلاحی توسط خریدار در کارپوشه‌اش تایید نشده باشد برای آن، وضعیت فرضی "اعلام صحت اصلاحی" را لحاظ خواهیم کرد. حال اگر برای این برگه‌ی فروش اقدام به ارسال صورت‌حساب ابطالی نماییم، اتفاقاتی که در دیاگرام فوق نشان داده شده‌اند رخ می‌دهد. در نهایت آنچه در این رویه ابطال می‌شود همان صورت‌حساب اصلاحی تایید نشده است. از آنجا که برگه‌ی فروش قبلا اصلاح شده بوده است در صورتی که در استعلام خطایی دریافت نشود، برگه‌ی فروش به وضعیت "نیازمند ارسال اصلاحی" خواهد رفت (نه اعلام صحت).

    یکی از روش‌های اصلاح مجدد یک برگه‌ی فروش، مادامیکه خریدار آنرا تایید نکرده است (و قصد تایید هم ندارد یا اصلا آن اصلاح را رد کرده است) همین است که اصلاح تایید نشده را به روش فوق ابطال نماییم.

    در اینجا یک خطر وجود دارد: اگر صورت‌حساب اصلاحی توسط خریدار یا سیستم تایید شده باشد و این تایید توسط کاربر بررسی و مشاهده نشود و با فرمان "تعیین وضعیت تایید صورت‌حساب اصلاحی در سامانه" به سیستم نوسا اطلاع داده نشود، سیستم اقدام به ابطال صورت‌حساب اصلاحی می‌کند و برگه‌ی فروش را حفظ می‌کند. در صورتی‌که در سامانه، تایید اصلاحی منجر به ابطال مرجع می‌شود و در نتیجه ابطال اصلاحی عملا به معنی ابطال کل فروش است! در این زمینه پیغام‌های اخطار مفصل (و ترسناکی) به کاربر داده می‌شود و مسئولیت بسیار سنگینی که با این ابطال برعهده دارد یادآوری می‌گردد:

    »» توجه: اين صورت‌حساب قبلا اصلاح شده است (صورت‌حساب اصلاحي به سامانه موديان ارسال و اعلام صحت شده است). در اين شرايط، "ابطال" به معني ابطال صورت‌حساب اصلاحي مزبور خواهد بود (نه ابطال صورت‌حساب مرجع).

    با پايان عمليات ابطال (پس از استعلام) اين صورت‌حساب به وضعيت "نيازمند ارسال اصلاحي" خواهد رفت (نه وضعيت اعلام صحت ابطال). از آن پس، اصلاح مجدد صورت‌حساب مرجع يا ابطال آن ميسر خواهد بود.

    »» توجه (بسيار مهم): اگر صورت‌حساب اصلاحي در سامانه موديان تاييد شده باشد، صورت‌حساب مرجع خود به خود در وضعيت ابطال شده قرار خواهد داشت. متاسفانه هيچ روشي براي اينکه سيستم ما بتواند اين شرايط را تشخيص دهد در سامانه موديان تعبيه نشده است. در اين وضعيت ابطال صورت‌حساب اصلاحي عملا به معني ابطال صورت‌حساب مرجع نيز خواهد بود!!!

    لازم است تا با مراجعه به کارپوشه‌ي سامانه‌ي موديان، وضعيت صورت‌حساب اصلاحي و مرجع (اصلي يا برگشت) را بررسي نماييد. اگر صورت‌حساب اصلاحي تاييد شده (و در نتيجه صورت‌حساب مرجع ابطال شده) باشد لازم است تا پيش از ابطال صورت‌حساب، در فهرست برگه‌هاي فروش فرمان "تعيين وضعيت تاييد صورت‌حساب اصلاحي در سامانه" را صادر کنيد و "تاييد شده" بودن صورت‌حساب اصلاحي را اعلام نماييد. با اينکار ابطال صورت‌حساب به معني ابطال صورت‌حساب مرجع خواهد بود - وگرنه يک صورت‌حساب مرجع (اصلي يا برگشت) در سيستم خواهيم داشت که در سامانه‌ي موديان ابطال شده است. ابطال صورت‌حساب ابطال شده در سامانه با خطا مواجه خواهد شد.

     در دیاگرام بعدی به ابطال عادی برگه‌های فروش خواهیم پرداخت:

     

     

    ارسال صورت‌حساب ابطالی برای سه گروه از برگه‌های فروش توسط دیاگرام فوق توضیح داده می‌شود:

    • برگه‌های فروش اعلام صحت شده‌ای که بعدا صورت‌حساب اصلاحی برای آنها ارسال نشده باشد (عادی‌ترین کاربرد).
    • برگه‌های فروشی که صورت‌حساب اصلاحی برای آنها ارسال شده و اصلاح مزبور توسط خریدار تایید شده (و این تایید توسط کاربر به سیستم نوسا اعلام شده باشد).
    • برگه‌های فروشی که نیازمند ارسال اصلاحی باشند ولی بخواهیم بدون انجام عملیات ارسال صورت‌حساب اصلاحی مستقیما آنها را ابطال کنیم.

     

    روال کار شبیه سایر موارد (ارسال، استعلام، اعلام صحت یا اعلام خطا در استعلام) است. البته وضعیت نهایی "اعلام صحت ابطال" است. این یک وضعیت اختصاصی است که به کاربر اجازه می‌دهد برگه‌ی فروش را در سیستم نوسا حذف یا فاکتور فروش را ابطال کند. البته به یاد داریم که اگر مرجع ابطال توسط خریدار یا سیستم تایید شده باشد، صورت‌حساب ابطالی در کارپوشه‌ی سامانه‌ی مودیان در وضعیت در انتظار واکنش قرار می‌گیرد. در این شرایط، صورت‌حساب ابطالی نیز باید توسط خریدار تایید شود و اگر خریدار چنین نکند (یا اگر صورت‌حساب ابطالی را در کارپوشه‌ی خود "رد" کند) گرفتاری خواهیم داشت. به همین دلیل در زمان حذف فیزیکی یا ابطال یک برگه‌ی فروش در وضعیت "اعلام صحت ابطال" یک پیغام به صورت زیر بازنمایی می‌شود که توجه به آن بسیار ضروری است:

    »» توجه: صورت‌حساب ابطالي به سامانه موديان ارسال و اعلام صحت دريافت شده است. با اين وجود ممکن است صورت‌حساب ابطالي در سامانه نياز به تاييد داشته باشد و درانتظار واکنش (يا حتي رد شده باشد). اگر چنين باشد صورت‌حساب مرجع در سامانه‌ي موديان باقي مانده است (ابطال نشده است). متاسفانه هيچ روشي براي تشخيص خودکار اين شرايط در سامانه‌ي موديان تعبيه نشده است و تنها راه اين است که به کارپوشه مراجعه کرده و وضعيت صورت‌حساب ابطالي و مرجع را بررسي نماييد. اگر صورت‌حساب ابطالي هنوز تاييد نشده يا رد شده باشد، حذف يا ابطال صورت‌حساب از سيستم نوسا کار نادرستي خواهد بود؛ چرا که صورت‌حساب در سامانه موجود ولي از نوسا حذف خواهد شد.

     

    ممکن است مجبور شویم پیش از حذف یا ابطال برگه‌ی فروش، در انتظار واکنش خریدار بمانیم! اگر با مراجعه به کارپوشه‌ی سامانه‌ی مودیان متوجه شویم که خریدار صورت‌حساب ابطالی را رد کرده است، باید به جای حذف یا ابطال برگه‌ی فروش، از فرمان "اعلام رد شدن صورت‌حساب ابطالی در سامانه" که در فهرست برگه‌های فروش تعبیه شده است استفاده کنیم. در مورد این فرمان در بخش "سایر نکات و امکانات" توضیح داده‌ایم. دیاگرام زیر این اعلام رد شدن را نشان می‌دهد:

     

    اگر پیش از ابطال، صورت‌حساب در وضعیت نیازمند ارسال اصلاحی بوده باشد، در پایان این عملیات مجددا به همان وضعیت بازمی‌گردد (وگرنه به وضعیت اعلام صحت خواهد رفت). در نهایت مثل این خواهد بود که صورت‌حساب ابطالی از ابتدا ارسال نشده باشد.

     

    ابطال برگشت: متاسفانه صورت‌حساب برگشت از فروش در سامانه‌ی مودیان یک صورت‌حساب ارجاعی است. همانند صورت‌حساب اصلاحی، چنین است که اگر صورت‌حساب برگشت از فروش توسط خریدار تایید شود، صورت‌حساب مرجع آن خود به خود باطل خواهد شد. به همین دلیل ابطال صورت‌حساب برگشت از فروش در سامانه ممکن است نه به معنی ابطال برگشت بلکه به معنی ابطال کل فروش تلقی شود. در اینجا به "وضعیت تایید برگه‌ی فروش در سامانه" توجه می‌شود. اگر تایید نشده باشد پیغام زیر در ارسال ابطال مشاهده خواهد شد:

    »» توجه (بسيار مهم): اگر اين صورت‌حساب برگشت از فروش در سامانه موديان توسط خريدار (يا سيستم) تاييد شده باشد، ابطال آن به معني ابطال صورت‌حساب فروش اصلي (فاکتور فروش) و تمام برگشت‌هاي قبلي آن فاکتور فروش که به سامانه ارسال شده‌اند خواهد بود – چرا که اگر يک صورت‌حساب ارجاعي (در اينجا برگشت از فروش) در سامانه موديان تاييد شده باشد، صورت‌حساب مرجع (در اينجا فاکتور فروش يا برگشت قبلي همان فاکتورفروش) خود به خود در وضعيت ابطال شده قرار خواهد داشت. متاسفانه هيچ روشي براي اينکه سيستم ما بتواند اين شرايط را تشخيص دهد در سامانه موديان تعبيه نشده است. در اين وضعيت ابطال صورت‌حساب برگشت از فروش عملا به معني ابطال صورت‌حساب‌هاي مرجع نيز خواهد بود!!!

    لازم است تا با مراجعه به کارپوشه‌ي سامانه‌ي موديان، وضعيت صورت‌حساب برگشت را بررسي نماييد. اگر صورت‌حساب برگشت تاييد شده (و در نتيجه صورت‌حساب مرجع ابطال شده) باشد لازم است تا پيش از ابطال صورت‌حساب، در فهرست برگه‌هاي فروش فرمان "تعيين وضعيت تاييد صورت‌حساب در سامانه" را صادر کنيد و "تاييد شده" بودن صورت‌حساب برگشت را اعلام نماييد. با اينکار ابطال صورت‌حساب برگشت به معني ابطال زنجيره‌ي صورت‌حساب‌هاي مرجع (فاکتور فروش و برگشت‌هاي قبلي آن) خواهد بود - وگرنه تعدادي صورت‌حساب مرجع (فاکتور فروش يا برگشت) در سيستم خواهيم داشت که در سامانه‌ي موديان ابطال شده‌اند. ابطال صورت‌حساب ابطال شده در سامانه با خطا مواجه خواهد شد.

     

    در مقابل اگر سیستم تشخیص دهد که قصد ابطال یک برگشت تایید شده توسط خریدار را دارید پیغام دیگری را بازنمایی می‌کند که توضیحات لازم در آن ارائه شده است:

    »» توجه (بسيار مهم): قبلا به نرم‌افزار اعلام شده است که اين صورت‌حساب برگشت از فروش در سامانه‌ي موديان توسط خريدار (يا سيستم) تاييد شده است. از آنجا که اگر يک صورت‌حساب ارجاعي (در اينجا برگشت از فروش) در سامانه موديان تاييد شده باشد، صورت‌حساب مرجع (در اينجا فاکتور فروش يا برگشت قبلي همان فاکتورفروش) خود به خود در وضعيت ابطال شده قرار خواهد داشت، ابطال اين صورت‌حساب برگشت به معني ابطال زنجيره‌ي صورت‌حساب‌هاي مرجع (فاکتور فروش و برگشت‌هاي قبلي آن) خواهد بود.

    شماره سند فاکتور فروشي که با اينکار ابطال خواهد شد: --- (در کل ---)

    شماره/سري ساير صورت‌حساب(هاي) برگشت از فروشي که ابطال خواهند شد:

    ---/---

    ---/---

    یعنی با ابطال یک صورت‌حساب برگشت از فروش، علاوه بر همان برگه، ممکن است تعدادی دیگری از برگه‌های فروش نیز به وضعیت "اعلام صحت ابطال" برده شوند. برگه‌های فروش مزبور در پیغام ذکر می‌شوند. با توجه به ماهیت زنجیره‌ای مرجع – ارجاع در سامانه‌ی مودیان، اگر بیش از یک صورت‌حساب برگشت از فروش با مرجع یک فاکتور فروش تنظیم و ارسال شده باشد، مرجع برگشت اول = فاکتور فروش، مرجع برگشت دوم = برگشت اول و به همین ترتیب برای برگشت‌های بعدی خواهد بود. این همان ترکیبی است که در پیغام به آن "زنجیره‌ی صورت‌حساب‌های مرجع" گفته شده است.

     

    انصراف از ابطال یا اصلاح: دیدیم که برای ابطال یا اصلاح صورت‌حساب‌ها در سامانه‌ی مودیان باید حسب مورد صورت‌حساب‌های ابطالی یا اصلاحی به سامانه ارسال کنیم. همچنین مشخص شد که پس از استعلام این صورت‌حساب‌ها یکی از وضعیت‌های ممکن، "اعلام خطا در استعلام" است. خطایی که سامانه اعلام کرده است، در محاوره‌ی استعلام نمایش داده می‌شود و همچنین در خود برگه‌ی فروش نیز درج می‌شود (در خود برگه یا در فهرست برگه‌های فروش قابل مشاهده است). در دیاگرام‌های قبلی دیدیم که در وضعیت‌های اعلام خطا قاعدتا باید خطای مزبور را رفع کنیم و صورت‌حساب ابطالی یا اصلاحی را دوباره به سامانه ارسال کنیم. در حالت‌های خاص، استعلام مجدد صورت‌حساب‌های دارای خطا نیز ممکن است مفید باشد (در مواقعی که خطا نه مربوط به محتویات صورت‌حساب بلکه ناشی از اشکالات موقتی سامانه باشد).

     

     

    اگر پیش از ابطال، صورت‌حساب در وضعیت نیازمند ارسال اصلاحی بوده باشد، در پایان این عملیات مجددا به همان وضعیت بازمی‌گردد (وگرنه به وضعیت اعلام صحت خواهد رفت). در مورد اصلاح هم طبیعتا به وضعیت نیازمند ارسال اصلاحی خواهیم رفت – در نهایت مثل این خواهد بود که صورت‌حساب ابطالی یا اصلاحی از ابتدا ارسال نشده باشند. توجه شود که صورت‌حساب‌های اصلاحی و ابطالی مورد بحث، قبلا یک سریال از حافظه‌ی مالیاتی را به خود اختصاص داده‌اند و با انصراف از ارسال آنها سریال مزبور به سایر صورت‌حساب‌ها تخصیص داده نخواهد شد. مشابه این وضعیت در اعلام رد شدن صورت‌حساب ابطالی در سامانه نیز رخ می‌دهد. در تطابق سریال‌ها با کارپوشه باید این نکته را در نظر داشته باشید.

    روزبه
    کاربر با تجربه
    کاربر با تجربه

    --
    30 بهمن 1402 11:39 ق.ظ

    بازنویسی اساسی ابزار اتصال نرم‌افزار فروش به سامانه مودیان - بخش سوم: شرح تغییرات و قابلیت‌های جدید در اطلاعات پایه و برگه‌ی فروش در نرم‌افزار

     

    برای تامین داده‌هایی که سامانه‌ی مودیان در صورت‌حساب‌های ارسالی اجبار کرده است و همچنین برای اینکه بتوانیم فرآیندهای متنوع ارسال و استعلام در رابطه با سامانه مودیان را ساماندهی کنیم (در تلاش برای پیاده‌سازی منطقی آنها در سیستم نوسا)، انجام تغییراتی در ساختار اطلاعات سیستم لازم بوده است. این تغییرات را در این بخش شرح خواهیم داد. همراه با اطلاعات موجود، ویدیو ارائه شده در رابطه با روش فعال سازی نرم افزار سامانه مودیان در پایگاه های نوسا و برخی تغییرات جدید در نرم افزار فروش از جمله نحوه ثبت شناسه کالاها و خدمات، واحد های مقدار و کد استاندارد انواع ارز جهت ثبت داده فروش در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در فروردین 1402 در دسترس می‌باشد.

     

    جهت سهولت برخی تغییرات جدید در نرم افزار فروش از جمله نحوه ثبت شناسه کالاها و خدمات، واحد های مقدار و کد استاندارد انواع ارز جهت ثبت داده فروش در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 آموزش داده خواهد شد:

     

     

     

     

     

    نوع شرکت (سازمان) در دفتر تلفن و نشانی

     

    برخلاف داده‌هایی که سازمان امور مالیاتی قبلا از مودیان درخواست می‌کرده است، در نظام پایانه‌های فروشگاهی و سامانه‌ی مودیان نوع شخص خریدار به حقیقی، حقوقی و مشارکت مدنی تفکیک شده است. تا پیش از این مشارکت مدنی در سیستم نوسا به صورت یک موجودیت جداگانه وجود نداشته است. برای پشتیبانی نوع شخص خریدار خواسته شده‌ی کنونی، در دفتر تلفن و نشانی در فیلد "نوع شرکت (سازمان)" یک گزینه به نام "مشارکت مدنی" اضافه کردیم.

     

     

     

    شناسه‌ی کالا / خدمت

     

    همه‌ی کالاها و خدماتی که در صورت‌حساب‌ها درج شده و به سامانه مودیان ارسال می‌شوند باید شناسه‌ی استاندارد داشته باشند. فایل اکسل آخرین نسخه از شناسه کالا و خدمات عمومی از سایت سازمان امور مالیاتی به آدرس stuffid.tax.gov.ir قابل دریافت بوده و همچنین جهت دریافت شناسه کالا اختصاصی مراجعه به سایت سامانه جامع تجارت به آدرس www.ntsw.ir در دسترس می‌باشد. در صورت نیاز به دریافت شناسه کالا اختصاصی در این سایت ثبت نام نموده و سپس مراحل را طی نمایید، ویدیو آموزشی ارائه شده توسط این سامانه واقع در آپارات صرفا جهت همکاری با مودیان در دسترس قرار گرفته، لطفا در صورت نیاز به آشنایی بیشتر با نحوه ثبت شناسه کالا و خدمات اختصاصی با پشتیبانی این سامانه تماس حاصل فرمایید.

     

    در نرم‌افزار مالی یکپارچه نوسا یک فیلد جدید با همین نام به اطلاعات کالاها و خدمات نوسا اضافه شده است. این فیلد در درخت کالاها و خدمات، در محاوره‌ی تدوین یک کالا یا خدمت قابل درج است. امکان جستجو و انتخاب کالاها و خدمات با استفاده از این شناسه نیز در سیستم پیاده‌سازی شده است. به جز این، امکان اعلام شناسه‌های تکراری در فهرست کالاها و خدمات نیز فراهم شده است. همچنین در انواع قوانین شرح رخدادها (انبار، اموال، فروش) که تا پیش از این امکان درج خودکار مشخصات کالا در شرح را داشتیم، از این به بعد می‌توانیم از شناسه هم استفاده کنیم. شناسه‌ی مزبور از این پس در جستجوی عمومی (و سراسری) داده‌ها نیز لحاظ می‌شود.

     

     

     

     

     

    تاثیر ابزار سامانه مودیان نوسا در مشخصات سیستم اطلاعاتی (Admin)

     

    مشخصات یک سیستم اطلاعاتی در نرم‌افزار Admin و همچنین در بخش Admin از نرم‌افزار کلاینت قابل مشاهده و اصلاح است. یک مشخصه‌ی جدید به نام "ارتباط برگه فروش با حافظه مالیاتی" اضافه شده است. سه گزینه برای این مشخصه قابل انتخاب هستند: "ندارد" که به معنی عدم ارتباط برگه‌های فروش با حافظه مالیاتی است و برای پایگاه‌های اطلاعاتی که کاربران نمی‌خواهند اصلا آنها را به سامانه مودیان مرتبط کنند کاربرد دارد / "اجباری" که یعنی همه‌ی برگه‌های فروشی که از این به بعد در پایگاه اطلاعاتی درج می‌شوند حتما باید حافظه مالیاتی داشته باشند / "اختیاری" که منجر به ایجاد امکان استفاده از حافظه‌های مالیاتی در برگه‌های فروش خواهد شد اما وجود آنها را اجبار نخواهد کرد و در مواردی که کاربران قصد دارند فقط بخشی از داده‌های خود را به سامانه مودیان ارسال نمایند کاربرد خواهد داشت. شکل زیر این مشخصه‌ی جدید را در صفحه‌ی فروش از محاوره‌ی مشخصات یک سیستم اطلاعاتی نشان می‌دهد:

     

     

     

     

     

    روش‌های پرداخت و درصد نسیه در سامانه مودیان

     

    در دستورالعمل صدور صورت‌حساب الکترونیکی منتشر شده توسط مرکز تنظیم مقررات، نظام پایانه‌های فروشگاهی و سامانه مودیان، چند فیلد زیر با تعریف کاملا مبهم در صورت‌حساب‌های ارسالی به سامانه‌ی مودیان در شرایط خاص اجبار شده‌اند. در ادامه، این فیلدها و معنی آنها را ذکر می‌کنیم. چهار فیلد اول در header و دو فیلد بعدی در body جای دارند. شماره ردیف هر فیلد مطابق با جدول شماره‌ی 2 از مستند پیش‌گفته ذکر شده‌اند:

     

    33) روش تسویه: یکی از حالت‌های 1 نقدی، 2 نسیه و 3 نقدی نسیه. سایر فیلدها در روش "نقدی نسیه" اجباری هستند. در دو حالت دیگر، در صورت ارسال فیلدهای بعدی با اخطار "خارج از الگو" مواجه خواهیم شد.

    34) مبلغ پرداختی نقدی: این، جمع مبلغ پرداخت نقدی از بهای کالاها و خدمات صورت‌حساب (بدون احتساب مالیات و عوارض) است.

    35) مبلغ نسیه: میزان باقیمانده و پرداخت نشده‌ی جمع بهای کالاها و خدمات صورت‌حساب است.

    36) مجموع سهم مالیات بر ارزش افزوده از پرداخت: جمع مبلغی از مالیات بر ارزش افزوده سطرهای صورت‌حساب که به صورت نقدی پرداخت شده‌اند.

    64) سهم نقدی از پرداخت: در هر سطر، در کمال تعجب، میزانی از جمع بهای کالاها و خدمات "به اضافه‌ی" مالیات بر ارزش افزوده‌ی پرداخت شده‌ی نقدی است.

    65) سهم مالیات بر ارزش افزوده از پرداخت: در هر سطر میزانی از مالیات بر ارزش افزوده‌ای است که به صورت نقدی پرداخت شده است.

     

    از آنجا که در یک نظام منطقی مبتنی بر حسابداری تعهدی طرف حساب فاکتورهای فروش اصولا یک حساب دریافتنی (مثل بدهکاران تجاری) است طبیعی است که داده‌های فوق از چنین نظامی قابل انتظار نیستند. ضمن اینکه عموما در موسسات، یک روند پرداخت تدریجی و مداوم از طرف بدهکاران تجاری برقرار و البته مبتنی بر مانده‌ی بدهکار حساب مزبور است. با توجه به این نکات، اینکه چه میزان از مبلغ یک صورت‌حساب به صورت نقدی پرداخت شده است (بدون تعیین زمان اندازه‌گیری مورد نظر) به طور کلی محلی از اعراب (چه رسد به توجه و محاسبه) ندارد.

     

    برای اینکه بتوانیم به روشی فیلدهای اجباری فوق را در JSON صورت‌حساب‌های ارسالی به سامانه تامین کنیم، یک فیلد به نام "درصد نسیه در پرداخت" به فاکتور فروش اضافه کردیم. یک عدد صحیح بین صفر و 100 در این فیلد قابل درج است. مقدار صفر به این معنی است که تمام بهای صورت‌حساب به صورت نقدی پرداخت شده است و مقدار 100 به این معنی است که تمام مبلغ صورت‌حساب به صورت نسیه در بدهکاری طرف حساب باقی مانده است. پیش‌فرض این درصد از فیلد "نحوه‌ پرداخت" برگه‌ی فروش مشخص می‌شود.

     

    فیلدهای فوق، همگی با استفاده از درصد نسیه در پرداخت به صورت خودکار محاسبه و در JSON درج می‌شوند. اگر درصد نسیه صفر باشد، روش تسویه، نقدی (1) خواهد بود، اگر 100 باشد روش تسویه، نسیه (2) خواهد بود و هر مقدار دیگری منجر به روش تسویه‌ی نقدی / نسیه (3) خواهد شد. در حالت نقدی / نسیه (3)، مبالغ پرداختی نقدی (از کل و مالیات و سطر و...) و همچنین مبلغ نسیه، با همین درصد، نسبت به مبالغ مندرج در سطرهای اصلی برگه‌ی فروش محاسبه می‌شوند. دو نکته قابل تذکر است:

     

    • اول اینکه در وضعیت کنونی سامانه مودیان (تعاریف فوق و امکانات موجود در درگاه اینترنتی) رویه‌ی دستی برای تسویه‌ی نهایی صورت‌حساب وجود دارد. کاملا ممکن است که دردسر نسیه اعلام کردن یک فروش (مثلا برای اینکه مالیات بر ارزش افزوده‌ی آن را فعلا پرداخت نکنیم) بسیار بیش از آن باشد که مطابق رویه‌های کنونی، مالیات فروش‌هایی که مبلغ آنها هنوز دریافت نشده است را پرداخت کنیم. در استفاده از امکانات جدیدی که در اینجا توضیح دادیم، لطفا به این نکته توجه نمایید.
    • نکته‌ی دوم به تعریف فیلد "سهم نقدی از پرداخت (64)" بازمی‌گردد: همانطور که گفتیم با سعی و خطا متوجه شدیم که این فیلد باید مربوط به بهای نهایی سطر باشد (اگر غیر از این ارسال شود منجر به خطا خواهد شد). با این همه با توجه به سایر فیلدهایی که در این گروه وجود دارند، منطقی و طبیعی است که فیلد سهم نقدی از پرداخت فقط مربوط به بهای کالاها و خدمات (بهای سطر پس از کسر تخفیف) باشد. بسیار احتمال می‌دهیم که این مشکل در آینده برطرف شود و این فیلد مطابق تعریف منطقی خود دریافت شود. اگر چنین شد باید روش ارسال اصلاح شود – در فیلد cop (در body) به جای مبداء کنونی "سهم نقدی از بهای نهایی سطر" باید از "سهم نقدی از پرداخت بهای سطر پس از کسر تخفیف" استفاده شود.

    مقدار پیش‌فرض فیلد درصد نسیه در پرداخت در روش پرداخت تعیین می‌شود (در فیلدی به نام "پیش‌فرض درصد نسیه در پرداخت فاکتورهای فروش" و به صورت یک عدد بین صفر تا 100). در همه‌ی روش‌های پرداختی که از قبل در سیستم وجود داشته‌اند، فیلد مزبور مساوی صفر خواهد بود. در تکرار نکته فوق، هر چند قابلیت استفاده از پرداخت نسیه در این ابزار پشتیبانی شده، با توجه به زیرساخت فعلی کارپوشه مودیان و پیچیدگی مراحل تایید این گونه پرداخت، استفاده از پرداخت نقد برای فاکتور‌های ارسالی در وضعیت فعلی پیشنهاد می‌گردد.

     

     

     

    واحد‌های پول (ارز)

     

    در دستورالعمل صدور صورت‌حساب الکترونیکی، فیلدی به نام cut در هر یک از اقلام صورت‌حساب (body) با عنوان "نوع ارز" تعریف شده است. گفته شده که "شامل انواع پول رایج کشورهای مختلف می‌باشد." و در ادامه ذکر شده که باید حاوی کد ایزوی 4217  باشد. همانجا، در پانویس، صفحه‌ی فارسی "کد ایزوی 4217 – فهرست یکای پول رایج کشورها" لینک شده است. فهرست کامل‌تر کدهای مورد اشاره از لینک زیر نیز قابل حصول است:

     

     https://en.wikipedia.org/wiki/ISO_4217

     

    برای اینکه امکان درج کدهای فوق در JSON ارسالی به سامانه مودیان را داشته باشیم، در سیستم نوسا یک فیلد جدید به نام "کد ISO4217" به واحدهای پول (ارز) اضافه کردیم. یادآوری می‌کنیم که این جدول از منوی سیستم و با انتخاب گزینه‌ای به همین نام قابل احضار و ویرایش است. کاربران باید واحدهای پول مورد استفاده‌ی خود را در لینک فوق بررسی و کد ISO4217 مربوط را در سیستم نوسا تعیین کنند. همین کد در روش ارسال به صورت فیلد مبداء "کد ISO4217 واحد پول" در اختیار قرار خواهد داشت.

     

     

     

     

    واحد‌های مقدار

     

    در دستورالعمل صدور صورت‌حساب الکترونیکی، فیلدی به نام mu در هر یک از اقلام فروش (اجزاء body) با عنوان "واحد اندازه‌گیری" تعریف شده است. گفته شده که "معیاری برای اندازه‌گیری مقدار یا شمارش کالا/خدمت است." و در ادامه ذکر شده که "واحد اندازه‌گیری می‌بایست از کدهای جدول واحدهای اندازه‌گیری در سند واحدهای اندازه‌گیری کالا/خدمت استخراج و ثبت شود". این مستند به صورت ماهانه در دست بروز رسانی و افزایش می‌باشد. سند مورد اشاره فقط یک جدول دارد که آنرا عینا مطابق آنچه در ویرایش RC_UMGS.ST_V1.13 (03 بهمن 1402) مستند سامانه مودیان در سایت intamedia.ir آمده است ارائه کردیم:

     

     

     

    محتویات این جدول در مستند مذکور قابل مشاهده می‌باشند و با رجوع به سایت سازمان امور مالیاتی و لینک فوق، نسخه بروز آن قابل دریافت است. از آنجا که در JSON ارسالی به سامانه مودیان باید از کدهای فوق برای واحدهای مقدار استفاده شود، در سیستم نوسا یک فیلد جدید به نام "کد در سامانه مودیان" به اطلاعات واحدها (مقدار – تعداد) اضافه کردیم. یادآوری می‌کنیم که این جدول از منوی سیستم و با انتخاب گزینه‌ای به همین نام قابل احضار و ویرایش است. کاربران باید واحدهای مقدار مورد استفاده‌ی خود را در جدول فوق بررسی کنند و کد واحد در سامانه‌ی مودیان را در سیستم نوسا تعیین کنند. همین کد در روش ارسال به صورت فیلد مبداء "کد واحد مقدار فروش در سامانه مودیان" در اختیار قرار خواهد داشت.

     

     

     

    برخی از فیلدهای مرتبط با ابزار سامانه مودیان در برگه‌های فروش

     

    فیلدهای متعددی به برگه‌ی فروش افزوده شده‌اند. برخی از این فیلدها سیستمی هستند و نقش بسیار مهمی در فرآیندهای ارسال و استعلام در رابطه با سامانه مودیان ایفا می‌کنند: حافظه مالیاتی و نوع صورت‌حساب در سامانه مودیان از جمله این فیلدها هستند که کاربر، در حین تنظیم برگه‌ی فروش، در تعیین آنها نقش مستقیم دارد. وضعیت ارسال صورت‌حساب به سامانه مودیان نیز یکی از فیلدهای مهمی است که تحت تاثیر ارسال و استعلام صورت‌حساب توسط سیستم مقداردهی می‌شود. سیستم، پیش از ارسال صورت‌حساب، یک شناسه‌ی منحصر به فرد، مطابق دستورالعمل ارائه شده توسط کارگروه، ایجاد می‌کند و به عنوان یکی از فیلدهای صورت‌حساب درج می‎‌کند. به جز این شناسه، خواسته شده که یک uid (نوعی شناسه که به صورت سراسری منحصر به فرد است) نیز برای هر صورت‌حساب ایجاد و تخصیص داده شود. پس از ارسال صورت‌حساب، سامانه مودیان یک شناسه جدید که این نیز شبیه uid است به عنوان شماره ارجاع (reference number) برای صورت‌حساب بازمی‌گرداند. uid و شماره ارجاع نیز در هر صورت‌حساب ذخیره می‌شوند.

     

     

    یک فیلد مهم دیگر "نیازمند ارسال صورت‌حساب اصلاحی" است. اگر صورت‌حسابی قبلا به سامانه مودیان ارسال شده باشد و همچنین استعلام آن اخذ شده و در وضعیت "اعلام صحت" قرار گرفته باشد، قاعدتا اصلاحات بعدی روی آن صورت‌حساب با تشریفاتی همراه خواهد بود. در اقدام به اصلاح چنین صورت‌حسابی، به کاربر اطلاع داده خواهد شد که اصلاح صورت‌حساب آنرا به وضعیت "نیازمند ارسال اصلاحی" خواهد برد و تایید این تغییر وضعیت نیز از کاربر اخذ خواهد شد. اگر کاربر این تغییر وضعیت را تایید نکند (یا اگر اختیار این تغییر وضعیت را نداشته باشد) کماکان می‌تواند برخی از مشخصات و محتویات برگه‌ی فروش (که در JSON ارسالی به سامانه مودیان تاثیری ندارند) را اصلاح نماید اما اقلام اطلاعاتی زیر غیرقابل اصلاح خواهند شد – در مقابل با تایید تغییر وضعیت، اصلاح برگه‌ی فروش مجاز خواهد بود و البته باید بعدا اصلاحات انجام شده در یک صورت‌حساب اصلاحی به سامانه ارسال گردد:

     

    • تاریخ
    • نوع صورت‌حساب در سامانه مودیان
    • مشتری (خریدار)
    • برخی از مشخصات مشتری متفرقه (شماره اقتصادی، شناسه ملی، کد پستی)
    • کد شعبه فروشنده
    • کد شعبه خریدار
    • فیلدهای مربوط به فروش صادراتی (پروانه و کوتاژ گمرکی و کد گمرک محل اظهار)
    • شناسه یکتای ثبت قرارداد پیمانکاری
    • درصد نسیه در پرداخت
    • رخداد انبار یا انجام خدمات (و در نتیجه کالا یا خدمت، مقدار اصلی، مقدار و واحد فرعی)
    • فروش برحسب واحد فرعی
    • وزن خالص
    • شناسه یکتای قرارداد حق‌العمل‌کاری
    • انواع فیلدهای مربوط بها (و مالیات و عوارض اعم از ریالی یا ارزی)

     

    در نسخه‌ی جدید API سامانه‌ی مودیان (V2)، استعلام صورت‌حساب فقط در یک بازه‌ی زمانی میسر است. یعنی در زمان استعلام صورت‌حساب‌ها، علاوه بر اینکه باید uid یا شماره‌ی ارجاع صورت‌حساب را مشخص کنیم باید محدوده‌ی تاریخ استعلام را نیز به سامانه اعلام کنیم. متاسفانه این محدوده‌ی تاریخ، مربوط به تاریخ صورت‌حساب‌ها (تاریخ برگه‌های فروش) نیست، بلکه در بررسی آن در سامانه به تاریخ ارسال صورت‌حساب‌ها به سامانه توجه می‌شود. در ضمن، محدوده‌ی تاریخی مزبور نباید بزرگتر از یک هفته باشد – یعنی در هر بار استعلام گروهی تعدادی از صورت‌حساب‌های ارسال شده ، تمام صورت‌حساب‌های انتخاب شده باید در یک محدوده‌ی یک هفته‌ای به سامانه ارسال شده باشند.

     

    برای مدیریت عملیات استعلام در این وضعیت جدید، فیلد "تاریخ ارسال صورت‌‎حساب به سامانه مودیان" را به برگه‌ی فروش اضافه کرده‌ایم. با هر ارسال، تاریخ روز در این فیلد درج می‌شود تا در استعلام مورد استفاده واقع شود. این فیلد در صورت‌حساب‌هایی که با ویرایش 1202 سیستم نوسا به سامانه ارسال شده‌اند مقداردهی نشده است و به همین دلیل استعلام صورت‌حساب‌های مزبور در ویرایش 1210 فقط با نسخه‌ی V1 سامانه قابل اجرا است. در مقابل، در ویرایش 1210 این فیلد حتی در صورت‌حساب‌هایی که با نسخه‌ی V1 به سامانه ارسال می‌شوند نیز مقداردهی می‌شود و به این ترتیب همه‌ی صورت‌حساب‌هایی که با ویرایش 1210 به سامانه ارسال شده باشند (مستقل از اینکه با کدام نسخه از API سامانه ارسال شده باشند) با نسخه‌ی V2 قابل استعلام خواهند بود.

     

    تعدادی فیلد برای مدیریت صورت‌حساب‌های ارجاعی به برگه‌های فروش اضافه شده‌اند. در بخش‌های قبلی گفتیم که صورت‌حساب‌های برگشت از فروش، اصلاحی و ابطالی در سامانه‌ی مودیان به عنوان صورت‌حسا‌ب‌های ارجاعی شناخته می‌شوند. در این صورت‌حساب‌ها حتما باید یک صورت‌حساب که قبلا به سامانه ارسال شده (و در استعلام اعلام صحت گرفته باشد) به عنوان صورت‌حساب مرجع در JSON به سامانه معرفی شود. صورت‌حساب برگشت از فروش به صورت یک برگه‌ی فروش جداگانه در سیستم نوسا تنظیم می‌شود و به سامانه ارسال می‌شود. فیلد "شناسه‌ی منحصر به فرد صورت‌حساب مرجع برگشت" در برگه‌های فروش، صورت‌حساب مرجع برگشت در سامانه‌ی مودیان را مشخص می‌کند

     

    صورت‌حساب‌های اصلاحی و ابطالی، نه به صورت یک برگه‌ی فروش جداگانه، بلکه در همان برگه‌ای که اصلاح شده یا قرار است ابطال شود به سامانه ارسال می‌شوند. در هر برگه‌ی فروش فیلدهای "شناسه‌ی منحصر به فرد صورت‌حساب مرجع اصلاح" و "شناسه‌ی منحصر به فرد صورت‌حساب مرجع ابطال" وظیفه‌ی تعیین مرجع را در این دو موضوع برعهده دارند. چنین است که صورت‌حساب اصلاحی به صورت یک صورت‌حساب جدید به سامانه ارسال می‌شود که قاعدتا یک شناسه‌ی منحصر به فرد جدید نیز خواهد داشت. از آنجا که در سیستم نوسا ممکن (و صحیح) نیست که دو نسخه از یک صورت‌حساب وجود داشته باشد و از طرف دیگر در این سیستم (و قاعدتا هر سیستم منطقی قابل تصور دیگر) ارسال صورت‌حساب اصلاحی قاعدتا باید «پس» از اصلاح صورت‌حساب در نرم‌افزار انجام شود، ترتیبی داده شده که شناسه‌ی منحصر به فرد صورت‌حساب اصلاحی در پایگاه اطلاعاتی نوسا جایگزین صورت‌حساب اولیه در برگه‌ی فروش شود و در مقابل شناسه‌ی منحصر به فرد اولیه، پس از ارسال صورت‌حساب اصلاحی، به عنوان شناسه‌ی مرجع اصلاح حفظ شود. مشابه این عمل در مورد صورت‌حساب ابطالی نیز انجام شده و شناسه‌ی مرجع ابطال به همین دلیل تعریف شده است.

     

    در صورت‌حساب‌های اصلاحی و ابطالی، در کنار فیلدهای شناسه‌ی مرجع، فیلدهای uid، شماره‌ی ارجاع دریافتی از سامانه و تاریخ ارسال صورت‌حساب مرجع نیز حفظ می‌شوند. کاربرد این فیلدها در فرمان‌های اعلام رد شدن صورت‌حساب ابطالی، انصراف از ارسال صورت‌حساب ابطالی و انصراف از ارسال صورت‌حساب اصلاحی است. همانطور که در بخش‌های قبل توضیح دادیم، حاصل این فرمان‌ها حذف تاثیر صورت‌حساب‌های ابطالی و اصلاحی از برگه‌ی فروش است. به این منظور، لازم بوده تا uid، شماره‌ی ارجاع دریافتی از سامانه و تاریخ ارسال صورت‌حساب مرجع را نیز حفظ کنیم تا در صورت اعلام رد یا انصراف از ارسال، آنها را در مقادیر ابتدایی جایگزین نماییم.

     

    سایر فیلدهایی که به برگه فروش افزوده شده‌اند آنهایی هستند که در مستندات مربوط به سامانه مودیان آورده شده‌اند یا مربوط به وضعیت تایید صورت‌حساب اصلی و اصلاحی در سامانه مودیان هستند یا قرار است در مباحث بعدی به تفصیل توضیح داده شوند. گروهی از این فیلدها فقط برای برخی از انواع صورت‌حساب مطرح هستند – مثلا فروش صادراتی یا پیمانکاری – و برخی از فیلدها هم فقط برای بعضی از کاربران دارای کاربرد هستند – مثل کد شعبه‌ی خریدار. در جدول زیر همه‌ی فیلدها (سیستمی و عادی) آورده شده‌اند:

     

     

    شکل‌های زیر برخی از فیلدهای مورد بحث را در محاوره‌ی ویرایش یک فاکتور فروش نشان می‌دهند:

     

     

     

     

     

     

     

     

    برخی از فیلدهای مرتبط با ابزار سامانه در سطرهای اصلی برگه‌های فروش

     

    فیلد وزن خالص (برحسب کیلوگرم) در JSON ارسالی به سامانه مودیان برای فروش‌های صادراتی اجباری است که به صورت زیر به سیستم اضافه شده است. به جز این، فیلد شناسه‌ی یکتای ثبت قرارداد حق‌العمل‌کاری (که یک فیلد اختیاری است) هم در سطرهای اصلی قابل درج است.

     

     

     

     

     

    برخی از فیلدهای مرتبط با ابزار سامانه در فاکتور‌های باطل شده

     

    در بخش‌های قبلی گفتیم که ابطال فاکتور‌هایی که به سامانه مودیان ارسال شده‌اند با تشریفات خاصی همراه است. این فاکتورها باید به صورت یک صورت‌حساب ابطالی به سامانه ارسال شوند و پس از استعلام و عدم وجود خطا، در سیستم نوسا باطل شوند. در این فرآیند با دو سری از فیلدهای مشابه مواجه هستیم؛ یک سری مربوط به صورت‌حساب اصلی (فاکتور فروشی که ابطال شده است) و سری دیگر مربوط به صورت‌حساب ابطالی که بعدا به سامانه ارسال شده است – شامل شناسه‌ی منحصر به فرد در سامانه مودیان، uid و شماره‌ی ارجاع دریافتی از سامانه مودیان. این شش فیلد به مشخصات فاکتورهای باطل شده در سیستم نوسا اضافه شده‌اند. همه‌ی آنها در فرآیند ابطال فاکتور (پس از استعلام صورت‌حساب ابطالی) به صورت خودکار توسط سیستم مقداردهی می‌شوند و به صورتی که در شکل زیر مشاهده می‌شود بازنمایی می‌گردند.

     

     

     

     

     

    پارامترهای جدید در گزارش‌های فروش

     

    در یکی از بخش‌های آتی خواهیم دید که انواع و وضعیت‌های صورت‌حساب‌ها به عنوان پارامترهای قابل تعیین جدیدی در گزارش‌های فروش در اختیار قرار داده شده‌اند. در محاوره‌ی ابتدایی این گزارش‌ها، صفحه‌ی "بخش" به "بخش (و حافظه مالیاتی)" تغییر نام یافته است و دریچه‌هایی برای انتخاب انواع و وضعیت‌ها (و حافظه‌های مالیاتی) مورد نظر برای تاثیر در گزارش در آن تعبیه شده‌اند. شکل زیر به عنوان مثال صفحه‌ی مزبور را در گزارش فهرست برگه‌های فروش نشان می‌دهد. پارامترهای پیش‌گفته از قضا در همین گزارش بیشترین کاربرد را دارند – برای احضار برگه‌هایی که وضعیت آنها برای اجرای عملیات به خصوصی مناسب است (مثلا ارسال اصلی).

     

     

     

     

     

    کارکرد حافظه‌های مالیاتی و نحوه استفاده از بخش در نرم‌افزار برای تعدادی حافظه‌ی مالیاتی

     

    پیش از این گفتیم که در بیشتر کاربردها (و برای بیش از 90 درصد از کاربران نوسا) فقط یک حافظه مالیاتی خواهیم داشت. اما در موارد خاص (که در آنها، یک مودی بیش از یک شناسه‌ی حافظه مالیاتی داشته باشد یا یک پایگاه اطلاعاتی حاوی داده‌های چند مودی باشد) نیاز به تعریف حافظه‌های مالیاتی متعدد خواهیم داشت. با انتخاب گزینه‌ی مربوط از منوی سیستم، فهرست حافظه‌های مالیاتی به شکل زیر بازنمایی می‌شود:

     

     

    هر حافظه مالیاتی، طبق معمول کد، نام، نام لاتین و یادداشت دارد که نکته‌ی خاصی ندارند. شناسه حافظه مالیاتی همان است که از درگاه اینترنتی پایانه‌های فروشگاهی و سامانه مودیان با انجام تشریفات ثبت یا معرفی حافظه مالیاتی دریافت می‌شود. اگر قبلا به روشی با استفاده از همین شناسه، صورت‌حساب به سامانه مودیان ارسال شده باشد، لازم است تا آخرین سریال صادر شده قبلی از همین حافظه مالیاتی نیز در اینجا وارد شود. اگر چنین نیست مقدار پیش‌فرض صفر مناسب خواهد بود (که به این ترتیب سریال داخلی صورت‌حساب‌ها از یک آغاز خواهد شد).

     

    اجرای متدهای API سامانه مودیان نیازمند امضای اطلاعات با استفاده از یک کلید خصوصی است. گفتیم که این کلید خصوصی در کنار یک کلید عمومی یا گواهی امضای الکترونیکی، زوج کلید نامتقارن اختصاصی هر حافظه مالیاتی را تشکیل می‌دهد. یادآوری می‌کنیم که برای استفاده از نسخه‌ی V2 سامانه‌ی مودیان حتما باید با مراجعه به مراکز میانی معتبر (مثل سایت gica)، فایل گواهی امضا مبتنی بر CSR را دریافت نمایید.

     

    کلید عمومی یا گواهی امضا را باید در درگاه اینترنتی سامانه مودیان، در حین معرفی حافظه مالیاتی و دریافت شناسه، بارگذاری نمایید. کلید خصوصی را باید در همینجا به حافظه مالیاتی نسبت دهید. باید در حفظ کلید خصوصی حداکثر دقت را به خرج دهید و آنرا در اختیار هیچ‌کس قرار ندهید. ترتیبی داده‌ایم که کلید خصوصی به صورت رمز شده در پایگاه اطلاعاتی ذخیره شود تا حتی با دسترسی مستقیم به داده‌ها نیز کلید خصوصی آشکار نشود. خود سیستم در زمان امضای داده‌ها (برای ارسال به سامانه) کلید خصوصی را ابتدا رمزگشایی می‌کند و سپس برای امضا مورد استفاده قرار می‌دهد. درج کلید عمومی در نوسا اختیاری است اما اگر قصد استفاده از نسخه‌ی V2 سامانه را داشته باشید، درج گواهی امضا در نوسا اجباری خواهد بود.

     

    در محاوره‌ی تدوین یکی از حافظه‌های مالیاتی، یک تکمه برای "مدیریت کلید خصوصی و کلید عمومی یا گواهی امضا" تعبیه شده است. این تکمه یک منو با 3 گزینه را باز می‌کند که گزینه‌ی اول آن "خواندن کلید خصوصی از فایل pem" است. البته همانطور که گفتیم کلید خصوصی بلافاصله رمزگذاری می‌شود و در پایگاه اطلاعاتی برای آن حافظه مالیاتی ذخیره می‌شود. با انتخاب گزینه‌ی مزبور باید فایل ***_privatekey.pem را انتخاب نمایید. بهتر است پس از اینکار، آن فایل را کلا به یک مکان بسیار امن منتقل نمایید.

     

    در استفاده از نسخه‌ی V1 سامانه (بدون گواهی امضا)، خواندن کلید عمومی در اطلاعات نوسا الزامی نیست. فایل حاوی این کلید (***_publickey.pem) باید به درگاه اینترنتی سامانه مودیان معرفی شود. با این همه می‌توانید کلید عمومی را در همین حافظه مالیاتی نیز آرشیو نمایید تا هم به صورت متنی به آن دسترسی داشته باشید و هم در صورت تمایل آنرا در یک فایل pem ذخیره کنید. اما برای استفاده از نسخه‌ی V2 سامانه (با گواهی امضا)، خواندن گواهی امضا در اطلاعات نوسا الزامی است. گفتیم که در پایان عملیات درخواست و دریافت گواهی از gica، فایل حاوی این گواهی باید از سایت gica دریافت شود (و فرمت آن از crt به cer تغییر داده شود) + در کارپوشه‌ی سامانه (بخش عضویت – شناسه‌های مالیاتی) بارگذاری شود. همین فایل cer باید با انتخاب گزینه‌ی "خواندن کلید عمومی یا گواهی امضا از فایل" در حافظه‌ی مالیاتی درج شود (منوی تکمه‌ی "مدیریت کلید خصوصی و کلید عمومی یا گواهی امضا" در محاوره‌ی حافظه مالیاتی در نوسا).

     

    به جز این، برای دسترسی به کلید عمومی یا گواهی امضای آرشیو یا خوانده شده در نوسا، آخرین گزینه از منوی مورد بحث برای "ذخیره کردن کلید عمومی یا گواهی امضا در فایل" بکار می‌رود. شکل زیر صفحه اصلی محاوره‌ی تدوین یکی از حافظه‌های مالیاتی را نشان می‌دهد.

     

     

    تا پیش از حافظه‌های مالیاتی، مشخصات فروشنده در برگه‌های فروش فقط در تنظیمات سیستم (برای تمام کاربران) و در صفحه‌ی مربوط قابل تعیین بودند. در تعریف انواع فرم‌های ویرایش و نهایی برگه‌های فروش، مشخصات مزبور قابل بازنمایی یا چاپ بودند – در فرم‌های نمایش یا چاپ با استفاده از مولفه‌های "متن" و در مجموعه ستون‌های چاپی با یک نوع خاص از محتوای سلول (مشخصات یا اطلاعات عمومی گزارش). از این پس با وجود حافظه‌های مالیاتی و احتمال تعدد و تنوع آنها، طبیعی است که برای برگه‌های فروش (که می‌توانند حافظه مالیاتی داشته باشند)، چنین قرارداد کنیم که اگر حافظه مالیاتی تعیین شده باشد، مشخصات فروشنده به جای تنظیمات سیستم از حافظه مالیاتی استخراج شود. برای استفاده از این امکانات جدید نیازی به تغییرتعریف فرم‌ها نخواهیم داشت و همان فرم‌های قبلی – که مبتنی بر مشخصات فروشنده در تنظیمات سیستم تعریف شده بودند – کماکان قابل استفاده خواهند بود. مشخصات فروشنده در حافظه مالیاتی در محاوره تدوین یکی از حافظه‌های مالیاتی در یک صفحه‌ی اختصاصی (مطابق شکل زیر) قابل تعیین هستند:

     

     

     

     

    روش پیاده سازی ارتباط بخش‌ها به حافظه‌ی مالیاتی

    در بخش "مفاهیم" گفتیم که هر حافظه‌ی مالیاتی می‌تواند در ارتباط با یک یا چند بخش قرار داشته باشد. یک بخش می‌تواند به بیش از یک حافظه مالیاتی نیز مرتبط شود. در فهرست حافظه‌های مالیاتی، با فشار تکمه‌ی قلم صفحه‌ی زیر بازنمایی می‌شود:

     

     

    فهرست بخش‌های مربوط به یک حافظه‌ی مالیاتی بازنمایی می‌شود. مطابق روال معمول امکان افزودن، اصلاح و حذف بخش در این فهرست وجود دارد. برای هر بخش، به صورت اختیاری می‌توان کد شعبه را نیز تعیین نمود. در تنظیم برگه‌ی فروش جدید برای یک بخش، سیستم، حافظه‌ی مالیاتی را تشخیص می‌دهد و در برگه‌ی فروش درج می‌کند. اگر در ارتباط بخش و حافظه‌ی مالیاتی کد شعبه نیز تعیین شده باشد، همان کد در برگه‌ی فروش به عنوان "کد شعبه فروشنده" درج خواهد شد. یادآوری می‌کنیم که در تنظیم برگه‌ی فروش جدید، همیشه بخش جاری کاربر (که در تنظیمات سیستم برای کاربر فعلی / بخش کاربر در برگه‌ها تعیین می‌شود) به صورت پیش‌فرض در برگه‌ی جدید درج می‌شود. ممکن است کاربر اختیار تغییر بخش را داشته باشد و در نهایت بخش برگه توسط سیستم یا کاربر مشخص خواهد شد. اگر بخش برگه به بیش از یک حافظه‌ی مالیاتی مرتبط شده باشد، اولین حافظه‌ی مالیاتی (دارای کوچکترین کد) در برگه درج می‌شود و البته کاربر این اختیار را خواهد داشت که حافظه‌ی مالیاتی را تغییر دهد.

     

    کاربرانی که فقط یک حافظه‌ی مالیاتی دارند، لازم است تا تمام بخش‌هایی که از آنها اقدام به تنظیم برگه‌ی فروش می‌شود را به همان یک حافظه‌ی مالیاتی ارتباط دهند (احتمالا به تفکیک کد شعبه). طبیعتا کاربرانی که فقط یک بخش دارند، لازم است تا همان بخش را به تمام حافظه‌های مالیاتی نسبت دهند.

     

     

     

    قابلیت استعلام حافظه مالیاتی و کد اقتصادی از سامانه مودیان

     

    این امکانات، علاوه بر اینکه به خودی خود دارای کاربردهستند، بیشتر با هدف آزمایش سیستم و بررسی درستی ارتباط با سامانه مودیان، با حداقل تشریفات پیاده‌سازی شده‌اند. اگر این عملیات با موفقیت انجام شوند به این معنی است که: رایانه‌ی سرور نوسا به صورت مناسب و صحیح به اینترنت و سامانه مودیان متصل است / حافظه مالیاتی به صورت مناسب در سیستم نوسا و در درگاه اینترنتی سامانه مودیان تعریف شده است / کلید خصوصی و کلید عمومی یا گواهی امضای حافظه مالیاتی به صورت مناسب مدیریت شده‌اند (کلید عمومی یا گواهی امضا به سامانه مودیان معرفی شده و کلید خصوصی مربوط به آن در حافظه مالیاتی در پایگاه اطلاعات نوسا خوانده شده است). برای اجرای این استعلام‌ها گزینه‌ی مربوط را از منوی سیستم انتخاب کنید. با اینکار با پنجره‌ای به شکل زیر مواجه خواهید شد:

     

     

    ابتدا به این نکته توجه می‌دهیم که در همه‌ی فرآیندهای تبادل داده‌ها با سامانه مودیان، حتما باید حافظه مالیاتی مشخص باشد – به عبارت دیگر عملیات همیشه برای یک حافظه مالیاتی به خصوص اجرا می‌شود. در بخش‌های بعد خواهیم دید که در ارسال و استعلام صورت‌حساب‌ها، همه‌ی صورت‌حساب‌های انتخاب شده باید اولا حافظه مالیاتی داشته باشند و ثانیا حافظه مالیاتی همه‌ی آنها یکسان باشد – به این ترتیب در ارسال و استعلام صورت‌حساب‌ها، حافظه مالیاتی به صورت ضمنی قابل تشخیص است. اما در اینجا لازم است تا حافظه مالیاتی به صورت صریح تعیین شود. همانطور که گفتیم، در 90 درصد از کاربردها اصولا فقط یک حافظه مالیاتی وجود دارد – در مواردی که بیش از یک حافظه مالیاتی داریم، دریچه‌ای برای تعیین حافظه مالیاتی در محاوره تعبیه شده است.

     

    استعلام حافظه مالیاتی (که با تکمه‌ای با همین عنوان انجام می‌شود)، همانطور که در شکل فوق دیده می‌شود، اطلاعات مختصری از حافظه مالیاتی را ارائه می‌دهد. برای استعلام کد اقتصادی، باید کد مورد نظر را در دریچه‌ای که به همین منظور تعبیه شده است وارد کنید. نتیجه‌ی حاصله به صورتی که در شکل فوق نشان داده شده است گزارش می‌شود. سامانه‌ی مودیان مدتی است کد پستی و آدرس مودی را در استعلام کد اقتصادی گزارش نمی‌کند.

     

    تا به حال سه نسخه از API سامانه‌ی مودیان ارائه شده است. نسخه‌ی V0 قدیمی است ولی کماکان کار می‌کند. پشتیبانی از آنرا حفظ کرده‌ایم تا اگر احیانا نسخه‌های جدیدتر مشکل داشتند (ولی نسخه‌ی قدیمی فعال باشد) بتوانیم از آن استفاده کنیم. نسخه‌ی V2 فقط با گواهی امضا کار می‌کند. نسخه‌ی V1 با کلید عمومی و یا گواهی امضا کار می‌کند – یعنی حتی پس از دریافت گواهی امضا و بارگذاری در حافظه‌ی مالیاتی در سامانه‌ی مودیان می‌توانید کماکان از نسخه‌ی V1 برای کار با همان حافظه‌ی مالیاتی استفاده نمایید. از آنجا که در ماه‌های اخیر V2 در بسیاری از مواقع خارج از دسترس بوده است، ما در ارتباط با سامانه پیش‌فرض را روی V1 تنظیم کرده‌ایم. پیش‌بینی می‌کنیم که V0 و V1 به مرور از دسترس خارج شوند و همه‌ی مودیان مجبور به استفاده از V2 شوند. تعیین نسخه‌ی API سامانه با دریچه‌ای که در شکل فوق دیده می‌شود انجام می‌شود.

    روزبه
    کاربر با تجربه
    کاربر با تجربه

    --
    30 بهمن 1402 11:41 ق.ظ

    بازنویسی اساسی ابزار اتصال نرم‌افزار فروش به سامانه مودیان - بخش چهارم: شرح استفاده از نرم‌افزار در ارتباط با سامانه مودیان

     

     

    تغییر و بروزرسانی روش‌های ارسال به سامانه مودیان

     

    تعریف روش‌های ارسال اطلاعات به سامانه مودیان با انتخاب گزینه‌ای به همین نام از منوی سیستم میسر است. برای هر روش ارسال به روال عادی، کد، نام، نام لاتین و یادداشت قابل تعیین است. از آنجا که اسامی مولفه‌های JSON قبلا یکبار در سامانه مودیان تغییر کرده‌اند، برای اینکه تغییرات احتمالی بعدی مشکل کمتری ایجاد کند، نام header object و بردارهای body و payments را نیز قابل تعریف کرده‌ایم. تنها نکته‌ی قابل توجه در تعریف روش ارسال را در شکل زیر (به همراه توضیحات) مشاهده می‌کنید:

     

     

    ما رفتار سامانه در کنترل حاصل محاسبات اعشاری با پیش‌فرض قطع کردن را یک اشکال مهم در سامانه‌ی مودیان می‌دانیم. بارها به صورت حضوری و مکتوب این اشکال را به کارگروه مربوط اعلام کرده‌ایم. مستقل از اینکه حاصل محاسبات اعشاری باید گرد شوند یا قطع شوند (که نمونه‌ای ازمحاسبات و توضیح مربوط را در خود محاوره هم آورده‌ایم) مواردی پیش می‌آیند که حاصل باید به جای محاسبات اعشاری، مستقل از روش گرد کردن (یا قطع کردن)، از مانده‌ی عملیات قبلی بدست آید. مثلا اگر همان 3 واحد کالای ذکر شده در شکل فوق را به تدریج برگشت دهیم، در برگشت دو عدد باید 66 ریال لحاظ کنیم و در برگشت آخر باید بدون توجه به عملیات اعشاری و بهای واحد و غیره، یک عدد باقیمانده را به بهای 34 ریال برگشت دهیم – وگرنه مانده‌ی مقدار صفر و مانده‌ی بها یک ریال خواهد شد! طبیعی است که اگر روی حاصل محاسبات اعشاری کنترل صحت بی‌‎مورد وجود داشته باشد حتما با ارسال یک واحد به بهای 34 ریال در سامانه خطا خواهیم داشت. این در حالی است که مجبوریم بهای واحد را کماکان 33333333/33 ارسال کنیم (در سامانه‌ی مودیان، بهای واحد در صورت‌حساب برگشت باید حتما مساوی بهای واحد در فاکتور فروش – یعنی صورت‌حساب مرجع – باشد)

     

    اما اصل داستان این است که هر روش ارسال، تعدادی سطر دارد که هر یک از آنها، یکی از فیلدهایی که قرار است در JSON درج شوند را مشخص می‌کند. برای تعریف سطرهای یک روش ارسال ، یک تکمه‌ی اختصاصی (به شکل قلم) در فهرست روش‌ها تعبیه شده است که منجر به احضار فهرست سطرهای روش ارسال تحت مکان‌نما می‌شود. برای ساده‌تر شدن مکانیزم تعریف سطرها (فیلدها)، به جای اینکه سه فهرست سطر به تفکیک header، body و paymets داشته باشیم، ترتیبی دادیم که همه‌ی فیلدها، در یک فهرست تعریف شوند و در عوض محل درج فیلد در JSON برای هر یک تعیین شود (البته در payments فیلدی ارسال نمی‌کنیم). هر یک از سطرها به صورتی که در شکل زیر خواهیم دید ویرایش می‌شوند. توجه کنید که نحوه‌ی تعریف از جهاتی بسیار متفاوت از روش‌های صدوری است که پیش از این در سیستم داشته‌ایم.

     

     

    محل درج فیلد، یکی از سه گزینه‌ای است که پیش از این به دفعات مطرح شدند و البته با اسامی معقول‌تر:

     

    • اطلاعات عمومی صورت‌حساب
    • سطرهای صورت‌حساب
    •  اطلاعات پرداخت

     

    همانطور که در بخش تعاریف این مستند اعلام شد، مطابق توضیحاتی که تا به حال ارائه شده‌اند، در JSONهای حاصله از سیستم نوسا هیچ فیلدی در بخش payments ارسال نخواهد شد. در ادامه، نام فیلد در JSON مطابق مستندات سامانه مودیان تعیین می‌شود که البته متغیرترین بخش از کل داستان است و البته دلیل اصلی تعریف روش ارسال نیز تعیین مقدار برای فیلدی با همین نام در بخش مشخصی از JSON است.

     

    در بخش تعاریف گفتیم در سامانه‌ی مودیان 3 نوع صورت‌حساب پیش‌بینی شده است: نوع اول با 7 الگو، نوع دوم با دو الگو(ی 1 و 3) و نوع سوم بدون الگو. از بین این 10 مدل، ما 4 مدل را در سیستم پشتیبانی کرده‌ایم و آنها را با فیلد "نوع صورت‌حساب در سامانه مودیان" مشخص کرده‌ایم. برای اینکه قادر باشیم از یک روش ارسال تعریف شده برای ارسال JSON برای انواع و الگوهای متفاوت صورت‌حساب استفاده کنیم کنترل ارسال هر فیلد در انواع مختلف فاکتور را پیش‌بینی کرده‌ایم. به این منظور یک دریچه با 5 گزینه‌ی قابل علامت‌گذاری تعبیه شده است که ترکیب دلخواهی از گزینه‌های آنها برای هر فیلد قابل علامت‌گذاری است – البته یک گزینه مربوط به فروش ارز و غیرفعال است. به صورت پیش‌فرض همه‌ی گزینه‌ها علامت‌گذاری شده‌اند که به این معنی است که فیلد در همه‌ی انواع صورت‌حساب به سامانه ارسال می‌شود. API سامانه مودیان حساسیت زیادی روی فیلدهایی که در نوع خاصی از صورت‌حساب نباید فرستاده شوند دارد و اگر فیلدهای غیرضروری در JSON صادر شوند، اخطار (یا حتی در مواردی خطا) می‌دهد. در روش ارسالی که به عنوان پیش‌فرض نوسا آماده کرده‌ایم به همه‌ی فیلدهای مزبور به تفکیک نوع پرداخته‌ایم و گزینه‌های دریچه‌ی فوق را به دقت علامت‌گذاری کرده‌ایم.

     

    برای اینکه بتوانیم از یک روش صدور، همزمان برای ارسال صورت‌حساب‌های اصلی، اصلاحی، ابطالی و برگشت از فروش استفاده کنیم، یک دریچه با سطرهای قابل علامت‌گذاری با عنوان "ارسال در موضوعات" برای هر یک از سطرهای روش ارسال (هر یک از فیلدها) پیش‌بینی کرده‌ایم. در تعریف سطرهای جدید، گزینه‌ی ابطالی در این دریچه به صورت پیش‌فرض علامت‌گذاری نشده است. آنچه با سعی و خطا تشخیص داده‌ایم را در سطرهای روش ارسال پیش‌فرض نوسا به صورت مناسب علامت‌گذاری کرده‌ایم. هر یک از فیلدهای JSON قاعدتا باید حاوی یکی از فیلدهای قابل ارائه توسط سیستم نوسا باشند – که در بیشتر موارد نیز چنین است. اما برای پشتیبانی از حالت‌های خاص و استثنایی گزینه‌های دیگری را نیز به عنوان "نوع محتوی" لحاظ کرده‌ایم:

     

    • یکی از فیلدها
    • مقدار ثابت (عدد)
    • مقدار ثابت (رشته)
    • مقدار ثابت (منطقی)
    • خالی (null)

     

    انتظار داریم که گزینه‌ی "یکی از فیلدها" بیشترین کاربرد را داشته باشد و در ادامه بیشتر در این مورد صحبت خواهیم کرد. در مواردی ممکن است بخواهیم یک مقدار ثابت را در یکی از فیلدهای JSON برای همه‌ی صورت‌حساب‌ها (در header یا body) ارسال کنیم. 

     

    مهم‌ترین پارامتری که در اینجا باید تعیین شود "فیلد مبداء" است. دو مجموعه از فیلدهای قابل ارسال برای استفاده در header object و هر یک از المان‌های بردار body آماده شده‌اند. با تعاریف فعلی، هیچ فیلدی برای بردار payments وجود ندارد. انتخاب فیلد مبداء با دریچه‌ای که به همین منظور در محاوره قرار داده‌ایم انجام می‌شود. این دریچه، فهرستی از فیلدها را برای انتخاب احضار می‌کند. فهرست فیلدهای مبداء قابل انتخاب، به گزینه‌ی انتخاب شده در دریچه‌ی "محل درج فیلد در JSON" بستگی دارد (header یا body). همانطور که پیشتر اشاره کردیم، فیلدهای مبداء متنوع‌تر از فیلدهایی هستند که به عنوان محتوای JSON در مستندات سامانه ذکر شده است. برای برخی از فیلدهای JSON بیش از یک فیلد مبداء داریم که کاربر می‌تواند حسب مورد و بسته به رویه‌ای که در تنظیم داده‌های صورت‌حساب، کالا یا خدمت و دفتر تلفن و نشانی بکار برده است از این تنوع برای انتخاب فیلد مبداء مناسب استفاده نماید.

     

     

     

    تنظیم فاکتور فروش و صورت‌حساب برگشت از فروش

     

    در بخش‌های قبلی، فیلدهای جدیدی که به برگه‌های فروش اضافه شده‌اند را شرح دادیم. دیدیم که برخی از این فیلدها سیستمی هستند و تقریبا بدون دخالت مستقیم کاربر در فرآیندهای اصلاح برگه فروش یا ارسال و استعلام توسط سیستم مقداردهی می‌شوند. در مقابل برخی از فیلدها نیز باید توسط کاربر تعیین شوند. فیلدهای متعددی هم وجود دارند که یا اختیاری هستند یا فقط در برخی از انواع صورت‌حساب باید تعیین شوند (مثل شناسه قرارداد پیمانکاری). فیلدهای مزبور در یک فرم محاوره‌ی تدوین مشخصات عمومی فاکتور فروش و صورت‌حساب برگشت از فروش، به نام "پیش‌فرض نوسا (سامانه مودیان)" قرار داده شده‌اند. مطابق شکل زیر، در این محاوره یک صفحه به نام سامانه مودیان تعبیه شده است. در این صفحه، یک ناحیه چند صفحه‌ای وجود دارد. در صفحه‌ی اول فیلدهای اصلی و مهم قرار داده شده‌اند؛ کاربر باید (با تشریفات و ملاحظاتی که در ادامه شرح خواهیم داد) حافظه مالیاتی را انتخاب نماید. البته در اکثر قریب به اتفاق موارد حافظه مالیاتی (به همراه کد شعبه فروشنده) از بخش کاربر قابل تشخیص است و نیازی به تغییر آنها پیش نمی‌آید.

     

    نوع در سامانه‌ی مودیان یکی از 4 حالتی است که پیش از این معرفی کردیم و باید توسط کاربر تعیین شود. دیدیم که این نوع بیش از همه با روش ارسال اطلاعات در رابطه است و در درج فیلدهای مختلف در JSON صورت‌حساب نقش مهمی را ایفا می‌کند. یادآوری می‌کنیم که انواع مزبور عبارتند از: فروش عادی / قرارداد پیمانکاری / صادرات / فروش به مصرف‌کننده نهایی.

     

    همانطور که در شکل زیر دیده می‌شود برخی از فیلدهای سیستمی نیز در همین محاوره بازنمایی می‌شوند که البته قابل تغییر نیستند. این فیلدها را در بخش‌های قبلی توصیف کرده‌ایم. در ناحیه‌ی چندصفحه‌ای سامانه مودیان، صفحه‌ای به نام "صادرات" هم مشاهده می‌شود. فیلدهای گمرکی و کوتاژ در این صفحه تعیین می‌شوند.

     

    همانطور که پیش از این گفتیم، وضعیت ارسال برگه‌های فروش جدید، "ارسال نشده" خواهد بود. اینها صورت‌حساب‌هایی هستند که باید به سامانه مودیان ارسال شوند. پردازش صورت‌حساب‌ها در سامانه مودیان به صورت آنی انجام نمی‌شود – به همین دلیل ارسال یک صورت‌حساب به معنی پایان کار نیست و باید بعدا صحت داده‌ها یا احیانا خطاهای احتمالی را به صورت جداگانه و با فرآیند استعلام از سامانه مودیان درخواست کرد. پس از استعلام ممکن است خطاهایی گزارش شوند که به معنی پایان نیافتن کار ما با صورت‌حساب خواهد بود. در این حالت، صورت‌حساب در وضعیت "اعلام خطا در استعلام" قرار خواهد گرفت و لازم است تا پس از رفع خطاها (اصلاح برگه‌ی فروش یا اصلاح روش ارسال) دوباره صورت‌حساب را ارسال کنیم. خطاهایی که در استعلام دریافت شده‌اند در محاوره‌ی اطلاعات عمومی برگه‌ی فروش در صفحه‌ی سامانه مودیان و زیرصفحه‌ی خطاها بازنمایی خواهند شد. در فرآیند استعلام ممکن است برخی اشکالات جزیی نیز در صورت‌حساب وجود داشته باشند که به عنوان اخطار (Warning) گزارش می‌شوند. این اخطارها نیز در یک صفحه‌ی دیگر بازنمایی می‌شوند.

     

     

     

     

     

    تغییر حافظه‌ی مالیاتی

    در بخش‌های قبل گفتیم که حافظه‌های مالیاتی در ارتباط نزدیک با بخش‌ها قرار دارند. دیدیم که در حین تعریف حافظه‌های مالیاتی باید بخش‌های سیستم را به حافظه‌های مالیاتی نسبت دهیم. در نهایت چنین خواهد شد که هر بخش به یک یا چند حافظه مالیاتی مرتبط خواهد بود. البته در 90 درصد از کاربردها فقط یک حافظه مالیاتی وجود دارد که همه‌ی بخش‌ها به آن حافظه مرتبط هستند. 

     

    با چنین طرحی، در حین تنظیم یک برگه‌ی فروش، با تعیین بخش (به صورت خودکار در ابتدا یا به صورت صریح توسط کاربر در صفحه‌ی سند) حافظه‌های مالیاتی‌ای که برای برگه‌ی فروش قابل انتخاب‌اند هم معلوم می‌شوند. اولین حافظه مالیاتی به صورت خودکار لحاظ می‌شود. اگر در حین تخصیص بخش‌ها به حافظه‌ی مالیاتی "کد شعبه فروشنده" هم مشخص شده باشد، آن کد نیز به صورت خودکار در فیلد مربوط درج خواهد شد. با این همه کاربر می‌تواند با Ctrl+Enter در فیلد نام "حافظه مالیاتی" محاوره‌ی زیر را احضار کند و نسبت به تغییر حافظه مالیاتی (و سایر فیلدها) اقدام نماید.

     

     

    همانطور که مشاهده می‌شود در این محاوره تعیین بخش، حافظه مالیاتی و کد شعبه میسر است. با تغییر بخش ممکن است فهرست حافظه‌های مالیاتی قابل انتخاب در فیلد بعدی تغییر کنند. همچنین با تغییر بخش و حافظه مالیاتی، اگر کاربر به صورت دستی قبلا کد شعبه را تغییر نداده باشد، کد شعبه نیز به پیش‌فرضی که برای آن بخش در آن حافظه مالیاتی تعیین شده است مقداردهی می‌شود.

     

    یادآوری می‌کنیم که تغییر بخش فقط در حین تنظیم برگه‌ی فروش جدید میسر است (اصلاح بخش برگه‌ای که قبلا تنظیم شده است میسر نیست). رویه‌ی سیستم در تنظیم برگه‌ها و سندهای جدید چنین است: هر کاربر دارای تعدادی بخش است که در صفحه‌ی تعریف کاربران تعیین می‌شوند. یکی از این بخش‌ها مستقیما برای کاربر تعیین می‌شود و بقیه‌ی آنها با تکمه‌ای که به همین منظور در تعریف کاربران داریم مشخص می‌شوند. اینها در مجموع بخش‌های کاربر را تشکیل می‌دهند. به جز این، هر کاربر می‌تواند در تنظیمات سیستم (کاربر فعلی) بخش جاری خود را از بین همان بخش‌ها تعیین کند. در تنظیم هر برگه (یا سند) جدید، سیستم همواره بخش جاری کاربر را به برگه نسبت می‌دهد. کاربری که اختیار تنظیم برگه برای سایر بخش‌ها را نداشته باشد نمی‌تواند بخش مزبور را تغییر دهد و تا به حال تنها راه برای تنظیم برگه برای یک بخش دیگر (از بین بخش‌های مجاز کاربر) این بود که کاربر در تنظیمات سیستم بخش جاری خود را تغییر دهد. در تنظیم برگه‌ی فروش جدید، با استفاده از امکاناتی که محاوره‌ی فوق در اختیار قرار می‌دهد کاربران قادر خواهند بود که برای هر یک از بخش‌های مجاز خود برگه تنظیم نماید – یعنی دریچه‌ی بخش در محاوره‌ی فوق حاوی تمام بخش‌های مجاز کاربر خواهد بود.

     

    در دریچه‌ی حافظه مالیاتی یک گزینه‌ی "ندارد" هم وجود دارد. این گزینه برای تنظیم برگه‌ی فروش بدون ارتباط با سامانه مودیان تعبیه شده است. البته توجه کنید که در مشخصات یک سیستم اطلاعاتی (Admin)، در صفحه‌ی "فروش" دریچه‌ای برای تعیین "ارتباط برگه‌ی فروش با حافظه مالیاتی" تعبیه شده است که گزینه‌های ندارد / اجباری / اختیاری در آن لحاظ شده‌اند. اگر این وضعیت "ندارد" باشد، طبیعتا، امکان تعیین حافظه مالیاتی برای برگه‌ی فروش وجود نخواهد داشت. در مقابل در وضعیت "اجباری" امکان انتخاب گزینه‌ی "ندارد" در حافظه‌ی مالیاتی را نخواهیم داشت.

     

    همانطور که در بخش‌های قبلی توضیح دادیم، در سطرهای اصلی برگه‌ی فروش، دو فیلد جدید اضافه شده‌اند که حسب مورد (و نیاز) توسط کاربر قابل درج هستند: "وزن خالص (برحسب کیلوگرم)" که به صورت اختصاصی در صورت‌حساب‌های صادراتی باید تعیین شود و "شناسه‌ی یکتای ثبت قرارداد حق‌العمل‌کاری". آخرین نکته‌ی قابل اشاره در تنظیم برگه‌های فروش این است که در فراخوانی (کپی) یک فاکتور فروش (Ctrl+I) در دریچه‌ی انتخابی چندگانه‌ی "مشخصات عمومی برگه" گزینه‌هایی برای کپی "اطلاعات پروانه و کوتاژ گمرکی" و نیز "شناسه یکتای ثبت قرارداد پیمانکاری" اضافه شده‌اند.

     

     

     

     

    نیاز به ارسال صورت‌حساب اصلاحی

     

    پیش از این در حین توصیف فیلد جدید برگه‌ی فروش یعنی "نیازمند ارسال صورت‌حساب اصلاحی است" توضیحاتی در مورد تشریفات اصلاح صورت‌حساب‌های ارسال شده به سامانه مودیان ارائه کردیم. به صورت خلاصه یادآوری می‌کنیم که هر صورت‌حساب یک فیلد مهم به نام "وضعیت ارسال به سامانه مودیان" دارد. برگه‌های جدید (و همه‌ی برگه‌هایی که از سال‌های مالی قبل در پایگاه اطلاعاتی وجود دارند) در وضعیت "ارسال نشده" قرار دارند. اینها باید به عنوان صورت‌حساب اصلی یا صورت‌حساب برگشت از فروش به سامانه ارسال شوند. خواهیم دید که این عمل از فهرست برگه‌های فروش انجام می‌شود. اگر ارسال با خطا مواجه نشود، برگه‌ی فروش در وضعیت "در انتظار استعلام اصلی" قرار می‌گیرد. برگه‌های در انتظار استعلام باید در فهرست برگه‌های فروش از سامانه استعلام شوند. حاصل استعلام ممکن است اعلام صحت یا اعلام خطای صورت‌حساب باشد که حسب مورد متناظر با وضعیت‌های "اعلام صحت" یا "اعلام خطا در استعلام اصلی" است. صورت‌حساب‌های دارای خطا باید اصلاح شوند و دوباره به سامانه ارسال شوند که در نتیجه دوباره در وضعیت در انتظار استعلام اصلی قرار می‌گیرند و باید استعلام شوند. اما صورت‌حساب‌هایی که در وضعیت "اعلام صحت" قرار دارند به نوعی تعیین تکلیف نهایی شده‌اند و ممکن است دیگر هیچ کاری با آنها نداشته باشیم.

    صورت‌حساب‌های در انتظار استعلام در بلاتکلیف‌ترین وضعیت قرار دارند و به همین دلیل طبیعی است که اصلاح آنها به هیچ وجه میسر نباشد. صورت‌حساب‌های با وضعیت "خطا در استعلام" طبیعتا باید اصلاح شوند تا خطاهای مربوط رفع شوند و به همین دلیل وضعیت ارسال، محدودیتی در اصلاح آنها ایجاد نمی‌کند. اما اصلاح صورت‌حساب‌هایی که در وضعیت "اعلام صحت" قرار داشته باشند قاعدتا با تشریفاتی همراه خواهد بود. دو نوع اصلاح برای این صورت‌حساب‌ها تعبیه کرده‌ایم – یکی اصلاح کامل که البته منجر به تغییر JSON قابل ارسال به سامانه مودیان نیز می‌شود و صورت‌حساب را به وضعیت "نیازمند ارسال اصلاحی" می‌برد و دیگری یک اصلاح محدود که باعث تغییر JSON نخواهد شد. هر کاربر یک اختیار با عنوان "اصلاح اطلاعات اصلی صورت‌حساب‌های نهايی (اعلام صحت)" دارد که فقط اگر واجد آن باشد می‌تواند به اصلاح آزاد چنین صورت‌حساب‌هایی اقدام کند. کاربری که اختیار پیش‌گفته را داشته باشد در اقدام به اصلاح صورت‌حساب "اعلام صحت" شده با پیغام زیر مواجه خواهد شد:

     

     

     

    لغو کردن این پیغام به معنی لغو کردن اقدام به اصلاح برگه‌ی فروش است. پاسخ «منفی» باعث می‌شود که همزمان با ذخیره کردن صورت‌حساب پس از اصلاح، آن صورت‌حساب در وضعیت "نیازمند ارسال اصلاحی" قرار بگیرد. پاسخ «مثبت» به این معنی است که کاربر نمی‌خواهد اصلاحات اساسی در برگه انجام دهد. این همان حالتی است که برای کاربری که فاقد اختیار پیش‌گفته باشد، توسط سیستم تحمیل می‌شود – یعنی کاربری که اختیار "اصلاح اطلاعات اصلی صورت‌حساب‌های نهايی (اعلام صحت)" را نداشته باشد شبیه کاربری است که به پرسش فوق پاسخ مثبت داده باشد. این محدودیت (در کنار سایر محدودیت‌های احتمالی) به کاربر اطلاع داده خواهد شد.

     

     

    فیلدهایی که در این وضعیت محدودیت خواهند داشت و اصلاح آنها میسر نخواهد بود را یادآوری می‌کنیم:

    • تاریخ
    • نوع صورت‌حساب در سامانه مودیان
    • مشتری (خریدار)
    • برخی از مشخصات مشتری متفرقه (شماره اقتصادی، شناسه ملی، کد پستی)
    • کد شعبه فروشنده
    • کد شعبه خریدار
    • فیلدهای مربوط به فروش صادراتی (پروانه و کوتاژ گمرکی و کد گمرک محل اظهار)
    • شناسه یکتای ثبت قرارداد پیمانکاری
    • درصد نسیه در پرداخت
    • رخداد انبار یا انجام خدمات (و در نتیجه کالا یا خدمت، مقدار اصلی، مقدار و واحد فرعی)
    • فروش برحسب واحد فرعی
    • وزن خالص
    • شناسه یکتای قرارداد حق‌العمل‌کاری
    • انواع فیلدهای مربوط بها (و مالیات و عوارض اعم از ریالی یا ارزی)

    در فصل‌های آتی این مستند، در یک فصل اختصاصی، ارسال و استعلام صورت‌حساب‌های اصلاحی را توضیح خواهیم داد.

     

     

     

    پارامترهای جدید در گزارش‌های فروش

     

    در محاوره‌ی ابتدایی همه‌ی گزارش‌های سیستم فروش، در صفحه‌ای که پیش از این برای انتخاب بخش‌های دخیل در گزارش تعبیه شده بود، دریچه‌های جدیدی به صورتی که در شکل زیر دیده می‌شوند اضافه شده‌اند:

     

     

     

    همانطور که در شکل فوق دیده می‌شود، نام صفحه را به "بخش (و حافظه مالیاتی)" تغییر داده‌ایم. علاوه بر دریچه‌های مربوط به بخش، سه دریچه‌ی جدید مشاهده می‌شوند. حافظه‌های مالیاتی تعریف شده در یک دریچه با گزینه‌های قابل علامت‌گذاری بازنمایی شده‌اند که کارکرد مشخصی دارد. در همینجا یک گزینه‌ی "ندارد" هم وجود دارد که متناظر با برگه‌هایی است که حافظه مالیاتی در آنها تعیین نشده است (برگه‌های سال‌های مالی قبل یا برگه‌هایی که به هر دلیل قرار نبوده که حافظه مالیاتی داشته باشند و به سامانه ارسال شوند). دو دریچه‌ی دیگر برای انتخاب ترکیب دلخواهی از انواع صورت‌حساب در سامانه مودیان و یا وضعیت ارسال تعبیه شده‌اند. اینها هم رفتار و کارکرد مشخصی دارند. طبق معمول برای هر یک از دریچه‌های مزبور امکان علامت‌گذاری یا حذف علامت به یکباره برای همه‌ی گزینه‌ها تعبیه شده است.

     

    یک کاربرد بسیار مهم برای این امکانات در زمانی است که می‌خواهیم با استفاده از فهرست برگه‌های فروش صورت‌حساب‌ها را ارسال کنیم یا استعلام آنها را از سامانه‌ی مودیان اخذ نماییم. در این عملیات باید همه‌ی صورت‌حساب‌ها حافظه مالیاتی داشته باشند + مربوط به یک حافظه مالیاتی مشترک باشند + وضعیت‌های از پیش معلومی داشته باشند. مثلا برای ارسال صورت‌حساب‌های اصلی، گزارش باید حاوی فاکتورهای فروش در وضعیت‌های "ارسال نشده" یا "اعلام خطا در استعلام اصلی" باشند. ارسال صورت‌حساب‌های اصلاحی، در وضعیت‌های "نیازمند ارسال اصلاحی" یا "اعلام خطا در استعلام اصلاحی" قابل انجام است. برای استعلام صورت‌حساب‌ها نیز طبیعی است که برگه‌های فروش باید در یکی وضعیت‌های "در انتظار استعلام" باشند. برای انجام عملیات پیش‌گفته می‌توانیم با امکاناتی که در اینجا دیدیم صرفا فهرست برگه‌هایی با حافظه مالیاتی و وضعیت مناسب را احضار کنیم.

     

     

     

    ارسال و استعلام صورت‌حساب‌های اصلی (فاکتورهای فروش)

     

    جهت سهولت در این ویدیو به ثبت فاکتور فروش اصلی در سامانه مودیان، شرایط و نحوه دریافت استعلام آن جهت ثبت داده فروش در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

     

    پیش از این اشاره کردیم که ارسال و استعلام صورت‌حساب‌ها (اصلی، اصلاحی، برگشت از فروش، ابطالی) از فهرست برگه‌های فروش انجام می‌شود. تکمه‌ی "عملیات مربوط به سامانه مودیان" در فهرست برگه‌های فروش و منویی که با فشار آن تکمه احضار می‌شود را در شکل زیر مشاهده می‌کنید:

     

     

    در مورد صورت‌حساب‌های برگشت، اصلاحی و ابطالی در فصل‌های آتی توضیح خواهیم داد. فاکتورهای فروش به عنوان صورت‌حساب‌های اصلی به سامانه ارسال می‌شوند: فاکتورهای فروش مورد نظر از بین سطرهای بازنمایی شده در گزارش انتخاب می‌شوند و فرمان "ارسال صورت‌حساب‌های اصلی" (با انتخاب گزینه‌ی مربوط از منوی فوق) صادر می‌گردد. اگر چند فاکتور فروش به صورت همزمان انتخاب نشده باشند عملیات برروی تک فاکتور فروش تحت مکان‌نما اجرا خواهد شد. در ادامه باید روش ارسال (از بین روش‌هایی که از قبل تعریف شده‌اند) انتخاب شود و پس از آن محاوره‌ای به شکل زیر بازنمایی می‌شود:

     

     

    با این محاوره در انواع عملیات ارسال مواجه خواهیم شد. در یک متن توصیفی در ابتدای محاوره تعداد صورت‌حساب‌های انتخاب شده به تفکیک وضعیت گزارش می‌شوند. در ارسال اصلی، وضعیت‌های قابل قبول "ارسال نشده" و "اعلام خطا در استعلام اصلی" هستند. البته قبلا کنترل شده است که همه‌ی برگه‌های انتخاب شده حافظه مالیاتی مشترکی داشته باشند و در وضعیت‌های پیش‌گفته قرار داشته باشند. واضح است که اگر پس از ارسال، در استعلام، از سامانه خطا بگیریم قاعدتا باید بتوانیم پس از اصلاحات لازم دوباره همان صورت‌حساب را ارسال کنیم و به همین دلیل است که وضعیت‌های "اعلام خطا در استعلام" نیز برای ارسال قابل قبول هستند.

     

    عملیات ارسال با تکمه‌ی اختصاصی انجام می‌شود. صورت‌حساب‌های انتخاب شده تک به تک و به ترتیب تاریخ و شماره سند (ترتیب پیش‌فرض) ارسال می‌شوند. به ازای هر صورت‌حساب یک شماره‌ی سریال جدید در حافظه مالیاتی تخصیص داده می‌شود و با ترکیب آن سریال با شناسه‌ی حافظه مالیاتی و تاریخ صورت‌حساب، شناسه‌ی منحصر به فرد جدیدی برای صورت‌حساب تشکیل می‌شود. همچنین یک uid نیز ایجاد و به صورت‌حساب نسبت داده می‌شود. اینها در پایان ارسال صورت‌حساب در داده‌های صورت‌حساب در پایگاه اطلاعاتی نوسا نیز ذخیره می‌شوند.

     

    ممکن است در ارسال خطایی پیش بیاید که احتمالا ناشی از مشکلات شبکه یا درست نبودن کلیدها یا گواهی امضا در حافظه مالیاتی و مواردی از این قبیل است. توجه کنید که این خطا به صورت اساسی و کلی با خطاهایی که بعدا از استعلام حاصل می‌شوند متفاوت است. این خطا یعنی موفق به ارسال نشدیم – مثلا شبکه قطع است – و باید پس از رفع مشکل دوباره دقیقا همین صورت‌حساب، بدون اصلاح محتویات، دوباره ارسال شود. به همین دلیل اگر در حین ارسال با خطایی برخورد کنیم، آن خطا صرفا گزارش می‌شود و وضعیت و سایر داده‌های صورت‌حساب در سیستم نوسا تغییری نخواهند کرد. همچنین آخرین سریال صادر شده از یک حافظه مالیاتی، در صورتی که خطایی رخ داده باشد، تغییری نخواهد کرد و همین سریال (و احتمالا شناسه‌ی منحصر به فرد حاصل از آن) مجددا مورد استفاده قرار خواهد گرفت. آخرین نکته‌ی قابل اشاره این است که اگر در حین ارسال تعدادی صورت‌حساب در میانه‌ی راه با خطا مواجه شویم باید عملیات ارسال را متوقف کنیم و خطای ارسال را گزارش دهیم – چرا که اگر از ارسال یک صورت‌حساب صرف‌نظر کنیم و بقیه را صادر کنیم حتما شماره سریال صورت‌حساب‌های ارسالی به ترتیب مناسب نخواهند بود (و مثلا بین‌شان فاصله خواهد افتاد).

     

    اگر در ارسال یک صورت‌حساب خطایی پیش نیاید اولا آخرین سریال صادر شده از حافظه مالیاتی در پایگاه داده‌ها اصلاح می‌شود و ثانیا صورت‌حساب در وضعیت "در انتظار استعلام اصلی" قرار خواهد گرفت. همزمان، شناسه‌ی منحصر به فرد صورت‌حساب، uid و شماره‌ی ارجاع بازگشته از سامانه نیز در صورت‌حساب ذخیره خواهند شد.

     

    صورت‌حساب‌های ارسال شده به سامانه‌ی مودیان بلافاصله پردازش نمی‌شوند و باید وضعیت آنها را پس از ارسال، از سامانه استعلام کنیم. استعلام انواع صورت‌حساب‌های ارسال شده، به همراه هم، از فهرست برگه‌های فروش قابل انجام است. رویه استعلام چنین است: برگه‌های فروش در فهرست انتخاب می‌شوند + فرمان استعلام صادر می‌شود. در ادامه محاوره‌ای به شکل زیر بازنمایی می‌شود:

     

     

    استعلام (طبیعتا) نیاز به روش ارسال ندارد اما پیغام وضعیت و حافظه‌ی مالیاتی، درست شبیه قبل، در محاوره‌ی استعلام هم وجود دارند. فرمان "استعلام صورت‌حساب‌ها" عمومی است و برای همه‌ی برگه‌های فروشی که در یکی از وضعیت‌های "در انتظار استعلام" قرار داشته باشند قابل اجرا است. به همین دلیل وضعیت‌های نهایی صورت‌حساب‌ها در پیغام ابتدایی محاوره در اینجا متنوع‌تر هستند.  همانند محاوره‌های قبلی، در اینجا هم نسخه‌ی API قابل تعیین است. در استفاده از نسخه‌ی V2 نکاتی وجود دارند که قبلا توضیح دادیم:

     

    • همانند سایر کاربردهای V2، استعلام با نسخه‌ی V2 فقط در صورتی میسر است که فایل گواهی امضا در حافظه‌ی مالیاتی خوانده شده باشد.
    • استعلام صورت‌حساب‌ها در V2 فقط در یک بازه‌ی زمانی میسر است. محدوده‌ی تاریخ استعلام با توجه به صورت‌حساب‌های انتخاب شده به صورت خودکار توسط سیستم تشخیص داده و در درخواست اعمال می‌شود.
    • محدوده‌ی تاریخ مزبور مربوط به تاریخ ارسال صورت‌حساب‌ها به سامانه است. به یاد داریم که فیلد مناسب برای حفظ این تاریخ را به برگه‌های فروش اضافه کرده‌ایم. این فیلد در زمان ارسال به صورت خودکار مقداردهی می‌شود.
    • محدوده‌ی تاریخ مورد بحث نمی‌تواند بزرگتر از یک هفته باشد – یعنی در صورت استعلام گروهی صورت‌حساب‌ها، فقط برگه‌هایی را می‌توانیم به همراه هم انتخاب و استعلام کنیم که در یک محدوده‌ی یک هفته‌ای به سامانه ارسال شده باشند.
    • حتی در صورت ارسال صورت‌حساب با V1 نیز فیلد تاریخ ارسال توسط سیستم مقداردهی می‌شود – یعنی می‌توانیم صورت‌حساب ارسال شده با V1 را بعدا با V2 استعلام کنیم.
    • از آنجا که برگه‌های فروش ارسال شده با ویرایش 1202 نوسا فاقد فیلد تاریخ ارسال بوده‌اند، استعلام آنها با V2 در ویرایش 1210 میسر نیست. البته استعلام با V1 مشکلی نخواهد داشت.

     

    استعلام، به صورت پیش‌فرض، با uidای که در ارسال به هر برگه‌ی فروش اختصاص یافته است انجام می‌شود. امکان استعلام با استفاده از شماره‌ی ارجاع دریافتی از سامانه نیز میسر است و دریچه‌ای به همین منظور در محاوره تعبیه شده است. همانطور که در توضیح درج شده در محاوره دیده می‌شود، همیشه پیش از استعلام صورت‌حساب‌ها 10 ثانیه مکث خواهیم داشت. پس از این مکث، درخواست به سامانه ارسال می‌شود و پاسخ استعلام در همان محاوره به صورت زیر بازنمایی می‌گردد:

     

     

    درخواست استعلام عملا به سامانه "ارسال" می‌شود که این عمل با یک تکمه‌ی اختصاصی قابل انجام است. حاصل استعلام ممکن است یکی از 3 وضعیت زیر باشد:

    • پردازش صورت‌حساب در سامانه مودیان هنوز به انجام نرسیده است
    • صورت‌حساب صحیح بوده و خطایی نداشته است
    • صورت‌حساب دارای خطا بوده است.

    اگر پردازش هنوز انجام نشده باشد هیچ تغییری در صورت‌حساب داده نمی‌شود و صرفا به کاربر اطلاع داده می‌شود تا در آینده دوباره استعلام صورت‌حساب را درخواست نماید. اگر صورت‌حساب صحیح بوده باشد، فیلد "وضعیت صورت‌حساب در سامانه‌ی مودیان" به "اعلام صحت" تبدیل می‌شود. اگر خطایی وجود داشته باشد، فیلد وضعیت، به "اعلام خطا در استعلام اصلی" مقداردهی می‌شود. گفتیم که این صورت‌حساب‌ها باید پس از رفع خطا دوباره به سامانه ارسال شوند. در هر صورت خطاها و اخطارهای گزارش شده از سامانه، علاوه بر بازنمایی در این محاوره، در فیلدهای متناظر در صورت‌حساب نیز درج خواهند شد. این فیلدها در فرم ویرایش فاکتور فروش، در محاوره‌ی فاکتور و در صفحه‌ی "سامانه مودیان" و همچنین در ناحیه‌ی بازشونده در فهرست برگه‌های فروش (فرم اختصاصی سامانه مودیان) قابل مشاهده خواهند بود. در مثال فوق برخی از فیلدها را نادرست ارسال کرده‌ایم تا نمونه‌ای از اخطارها را مشاهده کنید.

     

     

     

    ارسال و استعلام صورت‌حساب برگشت از فروش

     

    جهت سهولت در این ویدیو به ثبت فاکتور فروش برگشتی در سامانه مودیان، شرایط و نحوه دریافت استعلام آن جهت ثبت داده فروش در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

     

    مطابق رویه‌های مرسوم (و استاندارد) در عملیات مالی، برگشت از فروش باید به صورت مستقل در یک نظام مالی مستند شود و به صورت مناسب در گزارش‌های مالی افشا گردد. استقلال برگشت از فروش تقریبا در همه‌ی سیستم‌های مکانیزه (و دستی)، به عنوان یک اصل، پذیرفته شده و به همان صورت نیز عمل می‌شود. در سامانه‌ی مبتنی بر TTMS نیز برگشت از فروش‌ها به صورت مستقل گزارش می‌شدند. در سامانه‌ی مودیان مبتنی بر نظام پایانه‌های فروشگاهی، اما، از این رویه‌ی استاندارد تبعیت نشده است و صورت‌حساب‌های برگشت از فروش، با ترتیبات عجیب و غریبی دریافت می‌شوند؛ برای ارسال صورت‌حساب‌های برگشت از فروش به سامانه‌ی مودیان، نباید کالاها و خدمات برگشتی را گزارش کرد، بلکه باید وضعیت جدید فاکتور فروش ارسال شده‌ی قبلی (پس از برگشت) را به سامانه ارسال نمود. در صورت‌حساب برگشت از فروش باید شناسه‌ی یکتای صورت‌حساب ارسال شده‌ی قبلی را به عنوان مرجع مشخص نمود. صورت‌حسابی که به عنوان برگشتی به سامانه ارسال می‌شود، پس از تایید خریدار، جایگزین صورت‌حساب ارسال شده‌ی قبلی می‌گردد (صورت‌حساب قبلی باطل می‌شود):

    • اگر فروش مربوط به دوره‌ای باشد که فاکتور فروش آن به سامانه‌ی مودیان ارسال نشده باشد، امکان ارسال برگشت از فروش به سامانه را نخواهیم داشت.
    • همچنین، اگر سطرهای یک صورت‌حساب برگشت از فروش در نرم‌افزار مربوط به فاکتورهای فروش متفاوتی باشند.
    • در برگشت‌های متعدد برروی یک فاکتور فروش همیشه باید به آخرین برگشت ارسال شده به سامانه (مربوط به همان فاکتور فروش) توجه شود و شناسه‌ی یکتای آخرین برگشت به عنوان مرجع برگشت جدید لحاظ شود.
    • برگشت از فروش حتما باید با همان بهای فاکتور ثبت شده باشد.
    • اگر تمام مقدار یک کالا برگشت داده شده باشد آن کالا نباید در صورت‌حساب برگشت از فروش ارسال شود. چرا که رخداد برگشت به صورت مستقل به رسمیت شناخته نشده و فقط به وضعیت جدید صورت‌حساب پس از برگشت توجه شده است (سامانه هیچ آماری از برگشت‌ها در اختیار نخواهد داشت).
    • اگر تمام مقادیر تمام کالاها برگشت داده شده باشند با یک صورت‌حساب برگشت از فروش خالی مواجه خواهیم شد. از آنجا که سامانه توانایی دریافت صورت‌حساب خالی را ندارد عملا برگشت کل را پشتیبانی نمی‌کند. در مستندات به صراحت گفته شده که در این موارد باید به جای برگشت از فروش، صورت‌حساب ابطالی به سامانه ارسال شود!!! این شیوه به هیچ وجه در یک نرم‌افزار فروش قابل قبول نیست و عملیات برگشت حتما باید به صورت مستقل در پایگاه داده‌ها مستند شده باشند (و به همان صورت باقی بمانند – ابطال یا حذف نشوند).

     

    با عنایت به نکات فوق، و با قطع امید از اینکه عقلا برای خارج کردن سنگ از چاه کمترین تلاشی به خرج دهند، در ویرایش 1210 امکاناتی را برای کار با صورت‌حساب‌های برگشت از فروش فراهم کردیم. تا حد توان سعی کرده‌ایم که کاربر، هر چه کمتر، با پیچیدگی‌های این طرح درخشان درگیر شود. در روشی که پیاده کرده‌ایم، برگه‌های فروش نوسا، از نوع صورت‌حساب برگشت از فروش، به صورت مستقیم به سامانه ارسال می‌شوند. پیش از ارسال، مجموعه‌ای از شرایط در محتویات برگه‌ی فروش بررسی می‌شوند که در ادامه ذکر خواهیم کرد. آنچه به جای هر صورت‌حساب برگشت از فروش به سامانه ارسال می‌شود وضعیت جدید فاکتور فروش مرجع با اعمال اصلاحات قبلی + برگشت‌های قبلی + اصلاحات برگشت‌های قبلی + برگشت جاری است. با این روش، کاربر برگه‌های فروش خود (اعم از فاکتور فروش یا صورت‌حساب برگشت از فروش) را با همان وضعیت‌های آشنای ارسال نشده / در انتظار استعلام اصلی / اعلام صحت / ... خواهد دید و حسب مورد فرمان‌های لازم را صادر خواهد کرد.

     

    ارسال صورت‌حساب برگشت از فروش به سامانه‌ی مودیان در فهرست برگه‌های فروش انجام می‌شود. ارسال صورت‌حساب برگشت از فروش در هر بار فقط برای یک برگه‌ی فروش قابل انجام است. انتخاب گزینه‌ی مربوط از منوی متصل به تکمه‌ی "عملیات مربوط به سامانه مودیان" (شکل زیر) منجر به ارسال صورت‌حساب برگشت از فروش تحت مکان‌نما به سامانه خواهد شد:

     

     

     

     

    شرایط ارسال صورت‌حساب برگشت از فروش به سامانه‌ی مودیان – محتویات برگه‌ی فروش در نوسا

    با صدور فرمان ارسال صورت‌حساب برگشت از فروش، سیستم باید وضعیت جدید فاکتور فروش مرجع همان صورت‌حساب برگشت را محاسبه نماید و به سامانه ارسال کند. تشخیص فاکتور فروش مرجع با بررسی رخداد انبار برگشت از فروش یا رخداد برگشت فروش خدمات انجام می‌شود. در برگشت فروش خدمات به رخداد مرجع (رخداد فروش خدمات) توجه می‌شود و همان فاکتور فروشی که رخداد فروش خدمات مرجع در آن درج شده است به عنوان فاکتور فروش مرجع لحاظ می‌شود. در برگشت فروش کالاها با دو نوع رخداد انبار مواجه خواهیم بود: برگشت از فروش دوره‌ی جاری و برگشت از فروش دوره‌ی قبل. در دوره‌ی جاری به رخداد مرجع (رخداد انبار از نوع فروش) توجه می‌شود. در دوره‌ی قبل رخداد مرجع وجود ندارد – این رخدادها باید درخواست برگشت از فروش داشته باشند و این بار به رخداد مرجع درخواست برگشت از فروش (مجددا رخداد انبار از نوع فروش) توجه می‌شود. با مشخص شدن رخداد انبار فروش کالای مرجع، فاکتور فروشی که این مرجع در آن درج شده است به عنوان فاکتور فروش مرجع لحاظ می‌شود.

    موفقیت این عملیات پیچیده مستلزم شرایطی است که توسط سیستم کنترل می‌شود و اگر برآورده نشود امکان ارسال صورت‌حساب برگشت از فروش (به عنوان اصلی یا اصلاحی) را نخواهیم داشت. توجه کنید که برگه‌ی برگشت از فروش به صورت سطر به سطر مورد پردازش و بررسی قرار می‌گیرد:

     

    • در تمام سطرهای برگه‌ی برگشت از فروش باید فاکتور فروش مرجع قابل تشخیص باشد. یعنی مثلا در برگشت‌های فروش کالای دوره‌ی قبل درخواست درج شده باشد و رخداد انبار فروش کالا در آن درخواست مرجع شده باشد / رخدادهای فروش کالا یا خدمات مرجع، قبلا  فاکتور شده باشند و مواردی از این قبیل.
    • همه‌ی سطرهای برگه‌ی برگشت از فروش باید مربوط به یک فاکتور فروش باشند. یعنی فاکتور فروش مرجع در همه‌ی سطرها باید یکسان باشد.
    • حافظه‌ی مالیاتی برگه‌‎ی برگشت از فروش باید با حافظه‌ی مالیاتی فاکتور فروش مرجع یکسان باشد.
    • وضعیت ارسال به سامانه‌ی مودیان در فاکتور فروش مرجع باید "اعلام صحت" باشد. یعنی فاکتور فروش قبلا به سامانه ارسال شده و با استعلام تعیین تکلیف شده باشد.
    • فاکتور فروش مرجع نباید "نیازمند ارسال اصلاحی" باشد.
    • سطرهای برگه‌ی برگشت از فروش باید "هم‌بها با سطر مرجع" باشند. سامانه مودیان تفاوت بهای واحد بین فروش و برگشت را غیرمجاز می‌داند.
    • اگر برای همان فاکتور فروش مرجع برگه‌های برگشت از فروش دیگری (به جز برگه‌ای که مشغول ارسال آن هستیم) در سیستم وجود داشته باشد، آن سایر برگه‌های برگشت باید ارسال نشده یا اعلام صحت باشند (و نیازمند ارسال اصلاحی نباشند). یعنی اگر برای یک فاکتور فروش برگه‌های برگشت متعدد داشته باشیم و در حال ارسال یکی از آن برگشت‌ها باشیم، برگه‌های برگشت قبلی باید اعلام صحت شده باشند و برگه‌های برگشت بعدی باید ارسال نشده باشند. البته این احتمال را لحاظ کرده‌ایم که کاربر نخواهد برخی از برگشت‌های قبلی را به سامانه ارسال کند. به همین دلیل در مورد برگه‌های برگشت قبلی صرفا اخطار داده‌ایم اما به هر حال قبلی‌ها هم حداکثر می‌توانند "ارسال نشده" باشند (مثلا در انتظار استعلام یا اعلام خطا نباشند).
    • در بند بعدی، در بررسی شرایط ارسال صورت‌حساب برگشت به سامانه‌ی مودیان خواهیم دید که اگر برای فاکتور فروش مرجع، صورت حساب اصلاحی به سامانه ارسال شده باشد، ارسال صورت‌حساب برگشت از فروش فقط در صورتی میسر است که صورت‌حساب اصلاحی مزبور در سامانه‌ی مودیان توسط خریدار (یا سیستم) تایید شده باشد یا در وضعیت عدم نیاز به واکنش باشد (که گفتیم در اکثر کاربردها همانند تایید است). همانطور که پیش از این گفتیم، هیچ روشی برای اینکه سیستم نوسا از وضعیت تایید صورت‌حساب‌ها در سامانه اطلاع پیدا کند وجود ندارد. به همین دلیل لازم است تا کاربر با مراجعه به کارپوشه‌ی فروشنده در سامانه‌ی مودیان، وضعیت تایید صورت‌حساب اصلاحی مزبور را بررسی کند و اگر تایید شده بود این تایید را با فرمان "تعیین وضعیت تایید صورت‌حساب اصلاحی در سامانه" در فهرست برگه‌های فروش و برای فاکتور فروش مرجع به نرم‌افزار اطلاع دهد.
    • گفتیم که اگر قبلا برای فاکتور فروش، یک صورت‌حساب برگشت به سامانه ارسال شده باشد، صورت‌حساب برگشت مزبور به عنوان مرجع برای برگشت جدید لحاظ می‌شود. در بند بعدی خواهیم دید که در این شرایط، صورت‌حساب برگشتی که به عنوان مرجع تشخیص داده می‌شود باید در سامانه‌ی مودیان توسط خریدار (یا سیستم) تایید شده باشد یا در وضعیت عدم نیاز به واکنش باشد. لازم است تا کاربر با مراجعه به کارپوشه‌ی فروشنده در سامانه‌ی مودیان، وضعیت تایید صورت‌حساب برگشتی مزبور را بررسی کند و اگر تایید شده بود این تایید را با فرمان "تعیین وضعیت تایید صورت‌حساب در سامانه" در فهرست برگه‌های فروش و برای آن برگه‌ی برگشت از فروش مرجع به نرم‌افزار اطلاع دهد.
    • اگر در همان شرایط بند قبلی، برای برگه‌ی برگشت از فروشی که به عنوان مرجع تشخیص داده شده است، قبلا صورت‌حساب اصلاحی به سامانه ارسال شده باشد، این بار همان صورت‌حساب اصلاحی به عنوان مرجع برای برگشت جدید لحاظ می‌شود. در بند بعدی خواهیم دید که در این شرایط، صورت‌حساب اصلاحی مزبور باید در سامانه‌ی مودیان توسط خریدار (یا سیستم) تایید شده باشد یا در وضعیت عدم نیاز به واکنش باشد. لازم است تا کاربر با مراجعه به کارپوشه‌ی فروشنده در سامانه‌ی مودیان، وضعیت تایید صورت‌حساب اصلاحی مزبور را بررسی کند و اگر تایید شده بود این تایید را با فرمان "تعیین وضعیت تایید صورت‌حساب اصلاحی در سامانه" در فهرست برگه‌های فروش و برای آن برگه‌ی برگشت از فروش مرجع به نرم‌افزار اطلاع دهد.

     

     

     

    زنجیره‌ی برگشت و شرایط ارسال از نقطه‌نظر سامانه

    همانطور که چند بار اشاره کردیم، ماهیت عجیب صورت‌حساب‌های برگشت از فروش در سامانه‌ی مودیان (اینکه به جای برگشت متعارف، وضعیت جدید صورت‌حساب را دریافت می‌کند) در کنار وضعیت آشفته‌ای که در کل صورت‌حساب‌های ارجاعی (به خصوص اصلاحی) وجود دارد منجر به بروز پدیده‌ای می‌شود که ما آنرا زنجیره‌ی برگشت می‌نامیم. حالت‌های زیر که در فصل نوع و وضعیت برگه‌های فروش / تفکیک برحسب موضوع ذکر شده‌اند را یادآوری می‌کنیم:

     

    برگشت یک فاکتور فروش پس از اصلاح – در این وضعیت، صورت‌حساب اصلاحی، مرجع برگشت خواهد بود:

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب اصلاحی – فاکتور فروش اصلاح شده – ارجاعی – مرجع
        • صورت‌حساب برگشت از فروش – مانده‌ی فاکتور فروش اصلاح شده پس از برگشت – ارجاعی (با مرجع سطر قبل)

     

    برگشت مجدد یک فاکتور فروش – صورت‌حساب برگشت اول، مرجع برگشت دوم:

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش اول – مانده‌ی فاکتور فروش پس از برگشت اول – ارجاعی – مرجع
        • صورت‌حساب برگشت از فروش دوم – مانده‌ی فاکتورفروش پس از هر دو  برگشت – ارجاعی (با مرجع سطر قبل)

     

    برگشت مجدد پس از اصلاح برگشت اول – صورت‌حساب اصلاحی مربوط به برگشت اول، مرجع برگشت دوم:

    • صورت‌حساب اصلی – فاکتور فروش – مرجع
      • صورت‌حساب برگشت از فروش اول – مانده‌ی فاکتور فروش پس از برگشت اول – ارجاعی – مرجع
        • صورت‌حساب اصلاحی – مانده‌ی فاکتور فروش پس از برگشت اول اصلاح شده – ارجاعی (با مرجع سطر قبل) – مرجع
          • صورت‌حساب برگشت از فروش دوم – مانده‌ی فاکتور فروش پس از برگشت اول اصلاح شده و برگشت دوم – ارجاعی (با مرجع سطر قبل)

     

    همانطور که مشاهده می‌شود مرجع برگشت حالت‌های متنوعی دارد: صورت‌حساب اصلی (که البته در مثال‌ها نیامده ولی طبیعی‌ترین حالت است) / صورت‌حساب اصلاحی مربوط به یک صورت‌حساب اصلی / صورت‌حساب برگشت / صورت‌حساب اصلاحی مربوط به یک صورت‌حساب برگشت. این زنجیره اهمیت بسیار زیادی دارد و به خصوص در فصل مربوط به صورت‌حساب ابطالی، دوباره به آن بازخواهیم گشت. گفتیم که محاسبه‌ی وضعیت جدید فاکتور فروش (با تاثیر برگشت‌های قبلی و جاری) و همچنین تشخیص شناسه‌ی یکتای صورت‌حسابی که باید به عنوان مرجع لحاظ شود، بدون دخالت کاربر توسط سیستم انجام می‌شود.

     

    اما سامانه‌ی مودیان در پردازش صورت‌حساب‌های ارجاعی از انواع برگشت (و همانطور که در فصل بعد خواهیم دید، اصلاحی) قواعد عجیبی را مد نظر قرار می‌دهد؛ اگر صورت‌حساب مرجع، یک صورت‌حساب اصلی نباشد، مرجع باید در کارپوشه‌ی خریدار در سامانه‌ی مودیان تایید شود یا با مرور زمان در وضعیت تایید سیستمی قرار بگیرد. اگر در API سامانه‌ی مودیان روشی وجود داشت که سیستم نوسا از وضعیت تایید صورت‌حساب‌ها توسط خریدار (یا سیستم) اطلاع حاصل کند، همانند رویه‌های پیش‌گفته، در اینجا نیز عملیات بدون دخالت کاربر قابل اجرا می‌بودند. اما همانطور که در بند قبل، در توضیح شرایط ارسال مبتنی بر محتویات برگه‌ی برگشت از فروش نوسا گفتیم، وضعیت تایید صورت‌حساب‌های مرجع از نوع برگشت یا اصلاحی باید حسب مورد توسط کاربر بررسی شود و با فرمان‌های مناسب به سیستم اطلاع داده شود.

     

    از طرف دیگر، هر صورت‌حساب فقط می‌تواند یکبار به عنوان مرجع برای صورت‌حساب‌های برگشتی (و اصلاحی و ابطالی) بکار رود. به این معنی که اگر مثلا بخواهیم صورت‌حساب مرجع برگشت را اصلاح کنیم باید قبلا صورت‌حساب برگشتی (ارجاعی) را ابطال نماییم. این ابطال ممکن است نیاز به تایید خریدار نیز داشته باشد – تلاش برای بازکردن این کلاف سردرگم را در فصل مربوط به صورت‌حساب ابطالی ادامه خواهیم داد.

     

    پیش از این اشاره کردیم که اگر تمام اقلام یک فاکتور فروش، به تدریج یا در یک برگه، برگشت شده باشند، سامانه امکان ارسال صورت‌حساب برگشتی را نمی‌دهد. در مستندات سامانه، در کمال آسودگی خیال، دستور داده شده که در این شرایط به جای برگشت از فروش، از ابطال استفاده شود. این محدودیت (و شرط ارسال) را در بند بعدی به تفصیل بررسی خواهیم کرد.

     

    برگشت کامل (ابطال)

    جهت سهولت در این ویدیو به ثبت فاکتور فروش برگشت کل / ابطال در سامانه مودیان، شرایط و نحوه دریافت استعلام آن جهت ثبت داده فروش در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

    برگشت کامل یک فروش انجام شده، یک وضعیت بسیار متداول و معقول است که مجبور شده‌ایم، با توجه به مشخصات کنونی سامانه‌ی مودیان، آنرا یک حالت خاص فرض کنیم و تا حد امکان با پیچیدگی کمتر برای کاربر پیاده‌سازی نماییم. مسیر کلی چنین است سیستم در ارسال یک برگه‌ی برگشت از فروش، حالت برگشت کامل را تشخیص می‌دهد و پیغام تایید اختصاصی زیر را نمایش می‌دهد:

    با ثبت اين صورت‌حساب برگشت از فروش، تمامي اقلام فاکتور فروش مرجع برگشت داده شده است. سامانه‌ي موديان، برگشت کل فروش با ثبت صورت‌حساب برگشت از فروش را پشتيباني نمي‌کند. تنها روش براي برگشت کل در سامانه، ابطال صورت‌حساب است. طبيعي است که برگشت با ابطال تفاوت دارد! (اطلاعات کامل فاکتور فروش و برگشت مربوط به آن حتما بايد در سيستم اطلاعاتي حفظ شوند).

    با توجه به اين نکات، ما عملا يک صورت‌حساب ابطالي براي سامانه موديان ارسال مي‌کنيم اما صورت‌حساب برگشت از فروش جاري را پس از استعلام در وضعيت اختصاصي "اعلام صحت برگشت کل / ابطال" قرار خواهيم داد. توجه کنيد که با اين کار فاکتور فروش مرجع عملا در سامانه‌ي موديان ابطال خواهد شد. به جاي صورت‌حساب برگشت از فروش جاري نيز يک صورت‌حساب ابطالي به سامانه ارسال خواهد شد. از اين پس هيچ عملياتي با فاکتور فروش و هيچيک از صورت‌حساب‌هاي برگشت از فروش مرتبط با آن قابل انجام نخواهد بود (اصلاح، ابطال، برگشت...).

    ادامه‌ي عمليات مستلزم توجه ويژه‌ي کاربر و عکس‌العمل مناسب است.

    آيا مايل هستيد که پيش از ادامه‌ي عمليات مجددا محتويات فاکتور فروش، صورت‌حساب برگشت از فروش و احيانا وضعيت کارپوشه در سامانه‌ي موديان را بررسي نماييد؟

     

    تمام نکات در همین پیغام توضیح داده شده‌اند. مهم‌تر از همه، اینکه صورت‌حساب برگشت از فروش، پس از استعلام به وضعیت خاص "اعلام صحت برگشت کل / ابطال" خواهد رفت – به این معنی که کار ما با این صورت‌حساب برگشت از فروش به پایان رسیده است اما این اعلام صحت با موارد قبلی متفاوت است و به معنی برگشت کل است و در سامانه هم ابطال شده است. با این روش می‌توانیم تاثیر برگشت را در سامانه‌ی مودیان به صورت مناسب اعمال کنیم و در سیستم نوسا نیز کماکان فاکتور فروش ابتدایی و همه‌ی برگه‌های برگشت از فروش مربوط به آنرا حفظ کنیم.

     

    ارسال ابطال به جای برگشت در سامانه کار بسیار خطرناکی است – چون خریدار این صورت‌حساب را در کارپوشه‌ی خود به عنوان ابطالی مشاهده می‌کند و بسیار احتمال دارد که آنرا رد کند. اما در سیستم نوسا با ابطال مواجه نیستیم و صرفا یک برگشت از فروش داریم. به همین دلیل رد شدن این ابطال را نمی‌توانیم به نوسا اعلام کنیم. از طرف دیگر برای برگه‌ای که به این صورت به سامانه ارسال شده است دیگر هیچیک از عملیات و رویه‌های مربوط به سامانه‌ی مودیان قابل اجرا نخواهد بود (اصلاح، ابطال، برگشت...).

     

    با توجه به این نکات بوده که پیغام به صورتی تنظیم شده که اگر به اشتباه تایید شود مشکلی ایجاد نکند (ادامه‌ی عملیات و ارسال برگشت کل مستلزم پاسخ منفی – با تکمه‌ی خیر – به این پرسش خواهد بود). آخرین نکته مربوط است به اصلاح یک صورت‌حساب برگشت از فروش، به صورتی که با این اصلاح برگشت کل فروش رخ داده باشد. این وضعیت قابل قبول نیست و با پیغام خطای زیر مواجه خواهد شد:

     

    با اصلاح اين صورت‌حساب برگشت از فروش، تمامي اقلام فاکتور فروش مرجع برگشت داده شده است. سامانه‌ي موديان، برگشت کل فروش با ثبت صورت‌حساب اصلاحي براي يک صورت‌حساب برگشت از فروش را پشتيباني نمي‌کند. لازم است تا صورت‌حساب جاري را به صورتي اصلاح نماييد تا ديگر برگشت کل نباشد و آنگاه اقدام به ارسال صورت‌حساب اصلاحي

    نماييد. سپس مي‌توانيد مقدار باقيمانده از برگشت کل را در يک صورت‌حساب برگشت از فروش جديد ثبت و به سامانه ارسال کنيد.

     

     

    ارسال و استعلام

    همانطور که پیش از این اشاره کردیم، ارسال صورت‌حساب‌های برگشت از فروش، در فهرست برگه‌های فروش، با قرار دادن مکان‌نما برروی "یک برگه‌ی برگشت از فروش" و انتخاب گزینه‌ی مربوط از منوی عملیات با سامانه انجام می‌شود. با توجه به درگیری‌ها و پردازش‌های ویژه‌ای که در برگشت مکرر مطرح هستند، برای تفکیک برگه‌های برگشت مربوط به یک فاکتور فروش به جاری، قبلی‌ها و بعدی‌ها، مجبوریم در این ارسال، هر بار فقط یک برگه‌ی فروش را برای اجرای عملیات لحاظ کنیم.

     

    ارسال صورت‌حساب برگشت از فروش برروی برگه‌ی برگشتی که در وضعیت‌های "ارسال نشده" یا "اعلام خطا در استعلام اصلی" باشند قابل اجرا است. اگر ارسال با خطا مواجه نشود، برگه به وضعیت "در انتظار استعلام اصلی" خواهد رفت (وضعیت‌ها مشابه فاکتور فروش هستند). استعلام همه‌ی صورت‌حساب‌های ارسالی به سامانه (در انواع وضعیت‌های در انتظار استعلام) به همراه هم میسر است. در مورد استعلام، البته، نکات مربوط به تاریخ ارسال و محدودیت یک هفته‌ای (که قبلا در ارسال صورت‌حساب‌‌های اصلی دیده بودیم) در اینجا هم برقرار است. 

     

     

     

    ممنوعیت‌های برگشت کامل (ابطال)

    • اصلاح یک فاکتور فروش یا برگه‌ی برگشت از فروش که به عنوان مرجع در یک صورت‌حساب برگشت از فروش بکار رفته باشد ممنوع است.
    • به صورت مشابه، ارسال صورت‌حساب ابطالی برای همان موارد فوق نیز میسر نیست.
    • برگه‌‎ی برگشت از فروش با وضعیت "اعلام صحت برگشت کل / ابطال" قابل اصلاح نخواهد بود.
    • به صورت مشابه ابطال چنین برگه‌ای نیز میسر نیست.
    • همچنین برگه‌ی برگشت کل شده نمی‌تواند به عنوان مرجع صورت‌حساب دیگری قرار بگیرد.

     

     

     

    ارسال و استعلام صورت‌حساب اصلاحی

     

    جهت سهولت در این ویدیو به ثبت فاکتور فروش اصلاحی در سامانه مودیان، شرایط و نحوه دریافت استعلام آن جهت ثبت داده فروش در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

     

    گفتیم که اصلاح برگه‌های فروشی که وضعیت ارسال به سامانه در آنها "اعلام صحت" باشد با تشریفاتی همراه است. این برگه‌ها اگر شرایط لازم را داشته باشند، به صورت کامل قابل اصلاح خواهند بود و پس از اصلاح در وضعیت "نیازمند ارسال اصلاحی" قرار خواهند گرفت. اما اگر شرایط مزبور برقرار نباشد اصلاح برگه با محدودیت‌هایی همراه خواهد بود – کاربر تا آنجا اجازه‌ی اصلاح را خواهد داشت که JSON ارسالی به سامانه‌ی مودیان تغییر نکند. موارد زیر منجر به محدودیت در اصلاح برگه خواهند شد.

    • کاربر اختيار "اصلاح اطلاعات اصلي صورت‌حساب‌هاي نهايي (اعلام صحت)" را ندارد.
    • صورت‌حساب برگشت از فروش به عنوان اعلام برگشت کل به سامانه ارسال شده است.
    • به پيغام تاييد اختصاصي اصلاح چنين برگه‌هاي فروشي، پاسخ "خير" داده نشده است.
    • اين برگه‌ي فروش به عنوان مرجع يک صورت‌حساب برگشت از فروش به سامانه موديان ارسال شده است.
    • اصلاح صورت‌حساب برگشت از فروش ارسال شده به سامانه فقط در صورتي ميسر است که صورت‌حساب برگشت از فروش در سامانه موديان توسط خريدار (يا سيستم) تاييد شده باشد و اين تاييد با فرمان "تعيين وضعيت تاييد صورت‌حساب در سامانه" در فهرست برگه‌هاي فروش به نرم‌افزار اطلاع داده شود.
    • براي اين برگه‌ي فروش صورت‌حساب اصلاحي به سامانه ارسال شده است. اصلاح مجدد فقط در شرايط زير ميسر است: 
      • اصلاح قبلي ابطال شود (با ارسال صورت‌حساب ابطالي برروي همين برگه‌ي فروش).
      • صورت‌حساب اصلاحي مربوط در سامانه موديان توسط خريدار (يا سيستم) تاييد شود و اين تاييد با فرمان "تعيين وضعيت تاييد صورت‌حساب اصلاحي در سامانه" در فهرست برگه‌هاي فروش به نرم‌افزار اطلاع داده شود.

     

    برخی از این محدودیت‌ها واضح هستند و پیش از این هم به آنها اشاره کرده‌ایم. در مورد دو آیتم آخر در ادامه‌ی همین فصل توضیح خواهیم داد:

     

    ارسال صورت‌حساب‌های اصلاحی به تفکیک برای فاکتورهای فروش و برگه‌های برگشت از فروش انجام می‌شود. در فهرست برگه‌های فروش، در منوی عملیات با سامانه، گزینه‌ی "ارسال صورت‌حساب‌های اصلاحی" برای فاکتورهای فروش اصلاح شده و "ارسال صورت‌حساب اصلاحی برگشت از فروش" برای یک برگه‌ی برگشت از فروش اصلاح شده بکار می‌روند (ارسال اصلاحی برای برگشت از فروش نیز، همانند ارسال اولیه، هر بار فقط برای یک برگه قابل انجام است). برگه‌های فروشی که در وضعیت‌های "نیازمند ارسال اصلاحی" یا "اعلام خطا در استعلام اصلاحی" قرار داشته باشند قابل ارسال خواهند بود. چنین است که اگر پس از ارسال، در استعلام از سامانه خطا بگیریم قاعدتا باید بتوانیم پس از اصلاحات لازم دوباره همان صورت‌حساب را ارسال کنیم و به همین دلیل است که وضعیت‌های "اعلام خطا در استعلام" نیز برای ارسال قابل قبول هستند.

     

    • روال ارسال بسیار شبیه به ارسال صورت‌حساب‌های اصلی یا برگشت از فروش است که پیش از این بررسی کردیم: برگه‌های فروش در فهرست انتخاب می‌شوند (همه باید مربوط به یک حافظه‌ی مالیاتی و در وضعیت‌های مجاز باشند) + فرمان ارسال صادر می‌شود + روش ارسال انتخاب می‌شود (از بین روش‌هایی که از قبل تعریف شده است – یا پیش‌فرض نوسا). در ادامه محاوره‌ی ارسال مشابه آنچه پیش از این دیدیم بازنمایی می‌شود (این محاوره در انواع عملیات ارسال مشاهده می‌شود).

     

    اگر در ارسال یک صورت‌حساب خطایی پیش نیاید اولا آخرین سریال صادر شده از حافظه مالیاتی در پایگاه داده‌ها اصلاح می‌شود و ثانیا صورت‌حساب در وضعیت "در انتظار استعلام اصلاحی" قرار خواهد گرفت. همزمان، شناسه‌ی منحصر به فرد صورت‌حساب، uid و شماره‌ی ارجاع بازگشته از سامانه نیز در برگه‌ی فروش ذخیره خواهند شد. از ویرایش 1210 به بعد، تاریخ ارسال صورت‌حساب نیز در برگه‌ی فروش حفظ می‌شود. این تاریخ برای استعلام با نسخه‌ی V2 سامانه مورد نیاز است.

     

    • در سامانه‌ی مودیان، صورت‌حساب اصلاحی به صورت یک صورت‌حساب جداگانه (نسبت به صورت‌حساب ابتدایی) دیده شده است و این یعنی شناسه‌ی منحصر به فرد و uid جدیدی برای صورت‌حساب اصلاحی انتظار دارد! عملا چنین است که صورت‌حساب مرجع (فاکتور فروش یا صورت‌حساب برگشت از فروش) ابطال می‌شود و صورت‌حساب اصلاحی جایگزین آن می‌گردد. اما طبیعی است که این رویه در سیستم‌های فروش قابل قبول نیست و اصلاح، قاعدتا با ترکیب ابطال و درج برگه‌ی جدید متفاوت است. ضمن اینکه بحث اصلاح مکرر را نیز داریم که در یک بند جداگانه در ادامه به آن خواهیم پرداخت.

     

    پیاده‌سازی صورت‌حساب اصلاحی در سیستم نوسا، به این صورت است که مشخصات سیستمی صورت‌حساب اصلاحی (شناسه‌ی منحصر به فرد، uid، شماره‌ی ارجاع دریافتی از سامانه و حتی تاریخ ارسال)، پس از ارسال، جایگزین مقادیر اصلی برگه‌ی فروش می‌شوند و در مقابل مقادیری که از قبل در برگه‌ی فروش وجود داشته‌اند به صورت فیلدهای مربوط به "مرجع اصلاح" در برگه‌ی فروش حفظ می‌شوند. به این ترتیب با مراجعه به هر برگه‌ی فروشی که صورت‌حساب اصلاحی برای آن ارسال شده باشد می‌توانیم علاوه بر آخرین مقادیر مشخصات سیستمی، از مشخصات ابتدایی برگه‌ی فروش (پیش از اصلاح) نیز مطلع شویم. در بندهای بعدی خواهیم دید که با این روش می‌توانیم اصلاح مکرر را نیز پشتیبانی کنیم. در مبحث "انصراف از ارسال صورت‌حساب اصلاحی به سامانه" (یکی از مباحث فصل سایر نکات و امکانات) نیز به همین فیلدهای حاوی مشخصات سیستمی مرجع اصلاح خواهیم پرداخت.

     

     

    وضعیت تایید مرجع

    صورت‌حساب اصلاحی، یک صورت‌حساب ارجاعی است – یعنی شناسه‌ی منحصر به فرد یک صورت‌حساب دیگر که قبلا به سامانه ارسال شده است باید به عنوان شناسه‌ی مرجع در آن مشخص شود. اگر مرجع یک فاکتور فروش (صورت‌حساب اصلی) باشد محدودیتی در وضعیت تایید آن (توسط خریدار در کارپوشه‌ی خود) وجود ندارد اما اگر جز این باشد، مرجع مزبور باید حتما توسط خریدار (یا سیستم) تایید شده باشد یا "عدم نیاز به واکنش" باشد. این نکته در اصلاح مکرر فاکتور فروش، اصلاح برگه‌ی برگشت از فروش و اصلاح مکرر برگه‌ی برگشت از فروش قابل توجه است. به جز این، یک صورت‌حساب در هر لحظه می‌تواند فقط مرجع یک صورت‌حساب ارجاعی باشد – یعنی اگر قبلا اصلاح شده باشد یا برگشت داده شده باشد دیگر قابل اصلاح مجدد یا برگشت نخواهد بود. این همان نکته‌ای است که منجر به طرح "زنجیره‌ی برگشت" در فصل قبل شد. در اینجا نیز به صورت مشابه "زنجیره‌ی اصلاح" پیش می‌آید (و حتی از آن فراتر زنجیره‌ی ترکیبی اصلاح – برگشت – اصلاح – برگشت)؛ در ادامه‌ی عملیات با صورت‌حساب‌های ارجاعی، آخرین صورت‌حساب ارجاعی باید به عنوان مرجع برای صورت‌حساب‌های ارجاعی بعدی لحاظ شود.

     

    با توجه به این نکات چنین برداشت می‌شود که اگر یک فاکتور فروش قبلا اصلاح شده باشد، برای اصلاح مجدد، باید صورت‌حساب اصلاحی ارسال شده قبلی را به عنوان مرجع لحاظ کنیم و به همین دلیل بوده که با ارسال اصلاح، مشخصات سیستمی صورت‌حساب اصلاحی (شناسه، uid، شماره ارجاع دریافتی از سامانه و تاریخ ارسال) جایگزین مشخصات سیستمی فاکتور فروش می‌شود تا به صورت خودکار در اصلاحات بعدی، صورت‌حساب اصلاحی به عنوان مرجع لحاظ شود. اما داستان نیاز به تایید مرجع (وقتی مرجع فاکتور فروش – صورت‌حساب اصلی – نیست) باقی می‌ماند. مرجع (در اینجا صورت‌حساب اصلاحی) باید توسط خریدار در کارپوشه‌ی سامانه‌ی مودیان تایید شود. در بخش‌های قبلی دیدیم که چون روشی برای اطلاع از این تایید در API سامانه تعبیه نشده است، این تایید باید توسط کاربر در فهرست برگه‌های فروش با گزینه‌ی "تعیین وضعیت تایید صورت‌حساب اصلاحی در سامانه" به سیستم اطلاع داده شود.

     

    اما چه می‌شود اگر صورت‌حساب اصلاحی تایید نشده باشد یا توسط کاربر "رد" شده باشد. در این وضعیت برای اصلاح مجدد فاکتور فروش لازم است تا صورت‌حساب اصلاحی مزبور باطل شود – یعنی یک صورت‌حساب ابطالی با مرجع صورت‌حساب اصلاحی پیش‌گفته به سامانه ارسال شود. در فصل بعدی (که مربوط به صورت‌حساب‌های ابطالی است) بیشتر در این مورد توضیح خواهیم داد. نکاتی که در مورد اصلاح فاکتور فروش ذکر کردیم، با اندکی اختلاف، در اصلاح برگه‌ی برگشت از فروش نیز صادق هستند. تفاوت در اینجا است که چون خود برگه‌ی برگشت نیز به صورت یک صورت‌حساب ارجاعی (با موضوع برگشت از فروش) به سامانه ارسال می‌شود، اصلاح آن مستلزم تایید صورت‌حساب برگشت توسط خریدار در کارپوشه‌ی سامانه‌ی مودیان است. این تایید باید در فهرست برگه‌های فروش با گزینه‌ی "تعیین وضعیت تایید صورت‌حساب در سامانه" به سیستم اطلاع داده شود. همانطور که در ابتدای این فصل ذکر کردیم، اگر شرایط اصلاح (تایید مرجع + تعقیب زنجیره‌ی اصلاح) برقرار نباشد، سیستم اجازه‌ی اصلاح برگه‌ی فروش به صورتی که "نیازمند ارسال اصلاحی" شود را نمی‌دهد. آخرین نکته، یادآوری وضعیت برگشت کامل است (که در فصل قبلی توضیح دادیم). اصلاح یک برگه‌ی برگشت از فروش به صورتی که منجر به برگشت کلیه اقلام فاکتور فروش مرجع شود ممنوع است و منجر به پیغام خطای زیر می‌شود (تکرار از فصل قبل):

    با اصلاح اين صورت‌حساب برگشت از فروش، تمامي اقلام فاکتور فروش مرجع برگشت داده شده است. سامانه‌ي موديان، برگشت کل فروش با ثبت صورت‌حساب اصلاحي براي يک صورت‌حساب برگشت از فروش را پشتيباني نمي‌کند. لازم است تا صورت‌حساب جاري را به صورتي اصلاح نماييد تا ديگر برگشت کل نباشد و آنگاه اقدام به ارسال صورت‌حساب اصلاحي

    نماييد. سپس مي‌توانيد مقدار باقيمانده از برگشت کل را در يک صورت‌حساب برگشت از فروش جديد ثبت و به سامانه ارسال کنيد.

     

     

    ارسال و استعلام صورت‌حساب ابطالی

     

    جهت سهولت در این ویدیو به ثبت فاکتور فروش ابطالی در سامانه مودیان، شرایط و نحوه دریافت استعلام آن جهت ثبت داده فروش در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

     

    برگه‌های فروشی که به سامانه‌ی مودیان ارسال شده‌اند، قابل حذف یا ابطال در سیستم نوسا نیستند – مگر اینکه قبلا صورت‌حساب ابطالی مناسب به سامانه ارسال و استعلام شود و اعلام صحت ابطال از سامانه دریافت شود. در غیراینصورت، در حذف یا ابطال با پیغام خطای زیر مواجه خواهیم شد:

     

    حذف يا ابطال برگه فروش فقط در صورتي ميسر است که وضعيت ارسال صورت‌حساب به سامانه موديان، "ارسال نشده" يا "اعلام صحت ابطال" باشد. وضعيت اعلام صحت ابطال با استعلام صورت‌حساب ابطالي در فهرست برگه‌هاي فروش حاصل مي‌شود.

     

    ارسال صورت‌حساب ابطالی با صدور فرمان مناسب (از منوی عملیات با سامانه‌ی مودیان) در فهرست برگه‌های فروش انجام می‌شود. یادآوری می‌کنیم که این منو به صورت زیر (متصل به تکمه‌ی مربوط) احضار می‌شود:

     

     

    ارسال صورت‌حساب ابطالی به صورت گروهی برای برگه‌های فروش میسر نیست و هر بار باید برای یک برگه (سطر تحت مکان‌نمای فهرست برگه‌های فروش) انجام شود. برگه‌ی انتخاب شده باید تعیین تکلیف شده باشد (در وضعیت اعلام صحت قرار داشته باشد). به صورت استثنایی، اگر برگه‌ای اصلاح شده باشد (و در وضعیت نیازمند ارسال اصلاحی قرار داشته باشد) برای آن برگه نیز می‌توانیم صورت‌حساب ابطالی ارسال کنیم – به این معنی که از ارسال صورت‌حساب اصلاحی برای آن برگه منصرف شده‌ایم و به جای آن می‌خواهیم کل برگه را ابطال کنیم. صورت‌حساب‌های ابطالی ارسال شده در وضعیت "در انتظار استعلام ابطالی" قرار می‌گیرند و باید از سامانه استعلام شوند – یعنی پردازش ابطال نیز بلافاصله پس از ارسال انجام نمی‌شود و به همین دلیل نیاز به استعلام داریم. استعلام صورت‌حساب‌های ابطالی، به همراه سایر صورت‌حساب‌هایی که در وضعیت‌های مختلف در انتظار استعلام قرار داشته باشند، با گزینه‌ی "استعلام صورت‌حساب‌ها" (شکل فوق) انجام می‌شود. طبق معمول، حاصل استعلام ممکن است "اعلام خطا در استعلام ابطالی" باشد. همانند اعلام خطاهای مشابه قبلی، اینها نیز باید (پس از رفع خطا) دوباره به عنوان ابطالی ارسال شوند. پس، ارسال صورت‌حساب ابطالی در برگه‌هایی که در وضعیت "اعلام خطا در استعلام ابطالی" قرار داشته باشند، همانند وضعیت‌های "اعلام صحت" و "نیازمند ارسال اصلاحی" میسر است.

     

    صورت‌حساب ابطالی نیز، همانند موارد مشابه قبلی، به صورت یک JSON به سامانه‌ی مودیان ارسال می‌شود. این JSON البته فاقد سطر (بردار body) است ولی محتویات header آن با همان روش ارسال اطلاعات به سامانه (که برای ارسال صورت‌حساب‌های اصلی، اصلاحی و برگشتی نیز بکار می‌رود) تشکیل می‌شود. به یاد داریم که در سطرهای یک روش ارسال، می‌توانستیم "ارسال در موضوعات" را کنترل کنیم و به این ترتیب مشخص کنیم که در صورت‌حساب‌های ابطالی چه فیلدهایی باید ارسال شوند. در ارسال صورت‌حساب ابطالی، پس از انتخاب روش صدور، محاوره‌ی زیر را خواهیم دید:

     

     

    وضعیت برگه‌ی فروش به همراه توضیحات متعارف بازنمایی شده‌اند. طبق معمول یک دریچه برای انتخاب نسخه‌ی سامانه نیز تعبیه شده است. در اینجا با یک مفهوم جدید، "تاریخ صورت‌حساب ابطالی" مواجه هستیم. چنین است که سامانه‌ی مودیان در مورد تاریخ صورت‌حساب‌ها محدودیت دارد و اجازه‌ی ارسال صورت‌حساب به تاریخ‌های قدیم (مثلا از یک ماه پیش به قبل) را نمی‌دهد. مطابق این محدودیت، قاعدتا نباید امکان ابطال صورت‌حساب‌های قدیمی را داشته باشیم. اما از آنجا که صورت‌حساب ابطالی به صورت یک موجودیت مستقل از صورت‌حساب اصلی به سامانه ارسال می‌شود، مشاهده شده که اگر تاریخ این صورت‌حساب ابطالی در محدوده‌ی مجاز قرار داشته باشد، سامانه نسبت به تاریخ صورت‌حساب مرجع حساسیتی از خود نشان نمی‌دهد – یعنی مثلا صورت‌حسابی که در فصل بهار ارسال شده (و قاعدتا در گزارش فصلی مربوط نیز منعکس شده است) را می‌توان با تغییر تاریخ در فصل زمستان ابطال کرد(!!!) و کل نظام گزارش‌دهی (و تجزیه و تحلیل‌هایی که حتما انجام نمی‌شوند) را مخدوش نمود.

     

    واضح است که این رفتار یک اشکال در سامانه است و احتمال می‌دهیم در آینده برطرف شود. اما متاسفانه فشار همه‌جانبه‌ای وجود داشت مبنی بر اینکه از این اشکال سامانه در سیستم بهره‌گیری کنیم و با تغییر تاریخ صورت‌حساب ابطالی امکان ابطال را فراهم کنیم. متعاقب تسلیم ما در برابر این فشارها، فیلد تاریخ صورت‌حساب ابطالی را به برگه‌های فروش اضافه کردیم که کارکرد مشخصی دارد. این تاریخ در همین محاوره تعیین می‌شود و در برگه‌ی فروش نیز ذخیره می‌گردد. اگر این تاریخ تعیین نشده باشد، صورت‌حساب ابطالی به تاریخ برگه‌ی فروش ارسال خواهد شد.

     

    اگر در ارسال صورت‌حساب ابطالی خطایی پیش نیاید اولا آخرین سریال صادر شده از حافظه مالیاتی در پایگاه داده‌ها اصلاح می‌شود و ثانیا صورت‌حساب در وضعیت "در انتظار استعلام ابطالی" قرار خواهد گرفت. همزمان، شناسه‌ی منحصر به فرد صورت‌حساب، uid و شماره‌ی ارجاع بازگشته از سامانه نیز در برگه‌ی فروش ذخیره خواهند شد. از ویرایش 1210 به بعد، تاریخ ارسال صورت‌حساب نیز در برگه‌ی فروش حفظ می‌شود. این تاریخ برای استعلام با نسخه‌ی V2 سامانه مورد نیاز است.

     

    پیاده‌سازی صورت‌حساب ابطالی در سیستم نوسا، به این صورت است که مشخصات سیستمی صورت‌حساب ابطالی (شناسه‌ی منحصر به فرد، uid، شماره‌ی ارجاع دریافتی از سامانه و حتی تاریخ ارسال)، پس از ارسال، جایگزین مقادیر اصلی برگه‌ی فروش می‌شوند و در مقابل مقادیری که از قبل در برگه‌ی فروش وجود داشته‌اند به صورت فیلدهای مربوط به "مرجع ابطال" در برگه‌ی فروش حفظ می‌شوند. به این ترتیب با مراجعه به هر برگه‌ی فروشی که صورت‌حساب ابطالی برای آن ارسال شده باشد می‌توانیم علاوه بر آخرین مقادیر مشخصات سیستمی، از مشخصات ابتدایی برگه‌ی فروش (پیش از ابطال) نیز مطلع شویم. در مباحث "اعلام رد شدن صورت‌حساب ابطالی در سامانه" و "انصراف از ارسال صورت‌حساب ابطالی به سامانه" (فصل سایر نکات و امکانات) نیز به همین فیلدهای حاوی مشخصات سیستمی مرجع ابطال خواهیم پرداخت.

     

    صورت‌حساب‌هایی که در وضعیت "در انتظار استعلام ابطالی" قرار داشته باشند، همزمان با سایر صورت‌حساب‌هایی که در وضعیت‌های در انتظار استعلام هستند، باید با انتخاب گزینه‌ی "استعلام صورت‌حساب‌ها" در فهرست برگه‌های فروش استعلام شوند. همان نکات مربوط به تاریخ ارسال و محدوده‌ی یک هفته‌ای که پیش از این گفتیم در اینجا نیز صادق است (اصولا فقط یک روش استعلام برای همه‌ی کاربردها داریم):

     

     

    اگر خطایی در استعلام گزارش شود، صورت‌حساب به وضعیت "اعلام خطا در استعلام ابطالی" برده می‌شود. گفتیم که این صورت‌حساب‌ها باید پس از رفع خطا دوباره به سامانه ارسال شوند. در هر صورت خطاها و اخطارهای گزارش شده از سامانه در فیلدهای متناظر در صورت‌حساب درج خواهند شد. اما اگر خطایی وجود نداشته باشد، صورت‌حساب به وضعیت "اعلام صحت ابطال" برده می‌شود. این همان وضعیتی است که حذف یا ابطال برگه‌ی فروش در سیستم نوسا را مجاز می‌کند.

     

    در حذف یا ابطال این برگه‌های فروش، هنوز یک خطر مهم وجود دارد که طبق معمول به رفتار سامانه‌ی مودیان در ارتباط با رفتار خریدار در تایید یا رد صورت‌حساب‌ها (در کارپوشه‌ی خریدار در سامانه‌ی مودیان) باز می‌گردد: اگر صورت‌حساب مرجع ابطال در وضعیت‌های در انتظار واکنش یا عدم نیاز به واکنش باشد یا اگر خریدار صورت‌حساب مرجع را رد کرده باشد، صورت‌حساب ابطالی بلافاصله در سامانه اعمال می‌شود. در نتیجه خود صورت‌حساب ابطالی در وضعیت "عدم نیاز به واکنش" قرار می‌گیرد و صورت‌حساب مرجع بلافاصله به وضعیت "باطل شده" می‌رود. اما اگر صورت‌حساب مرجع ابطال توسط خریدار (یا سیستم – به مرور زمان) تایید شده باشد، صورت‌حساب ابطالی در وضعیت "در انتظار واکنش" خواهد بود و نیاز به تایید دارد – یعنی تا وقتی خریدار (یا سیستم) آنرا تایید نکرده باشد تاثیری در صورت‌حساب مرجع ایجاد نخواهد کرد. این وضعیت خطرناکی است که در سیستم نوسا، با صدور فرمان‌های حذف یا ابطال برگه‌ی فروش، در پیغامی به صورت زیر به کاربر اطلاع داده می‌شود:

    »» توجه: صورت‌حساب ابطالي به سامانه موديان ارسال و اعلام صحت دريافت شده است. با اين وجود ممکن است صورت‌حساب ابطالي در سامانه نياز به تاييد داشته باشد و درانتظار واکنش (يا حتي رد شده باشد). اگر چنين باشد صورت‌حساب مرجع در سامانه‌ي موديان باقي مانده است (ابطال نشده است). متاسفانه هيچ روشي براي تشخيص خودکار اين شرايط در سامانه‌ي موديان تعبيه نشده است و تنها راه اين است که به کارپوشه مراجع کرده و وضعيت صورت‌حساب ابطالي و مرجع را بررسي نماييد. اگر صورت‌حساب ابطالي هنوز تاييد نشده يا رد شده باشد، حذف يا ابطال صورت‌حساب از سيستم نوسا کار نادرستي خواهد بود؛ چرا که صورت‌حساب در سامانه موجود ولي از نوسا حذف خواهد شد.

    لطفا فقط در صورتي اين پيغام را تاييد فرماييد که از وضعيت ابطال صورت‌حساب در سامانه‌ي موديان اطمينان داشته باشيد.

    آيا ادامه‌ي عمليات را تاييد مي‌کنيد؟

     

    برخی از موارد خاص و خطرناک در سلامت داده فروش سامانه مودیان

     

    جهت سهولت در این ویدیو موارد خاص و خطرناک در فرآیندهای صورتحساب‌ها در نرم افزار نوسا مانند اصلاح در اصلاح، اصلاح برگشت، برگشت اصلاح، ابطال اصلاح و ... در کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

     

    ابطال برگه‌ی فروش اصلاح شده

    یکی از عجیب‌ترین رفتارهای سامانه در ابطال صورت‌حساب‌هایی است که قبلا برای آنها صورت‌حساب اصلاحی به سامانه ارسال شده است. برحسب اینکه خریدار (یا سیستم) صورت‌حساب اصلاحی را تایید یا رد کرده باشد (یا در وضعیت در انتظار واکنش باقی گذاشته باشد) رفتار سامانه متفاوت خواهد بود. اولا با توجه به زنجیره‌ی ارجاع و مرجع در صورت‌حساب‌ها، اگر صورت‌حساب اصلاحی برای یک برگه‌ی فروش ارسال شده باشد، مرجع آن صورت‌حساب اصلاحی خود برگه‌‎ی فروش خواهد بود و هر صورت‌حساب اصلاحی مرجع صورت‌حساب‌های ارجاعی بعدی (من جمله صورت‌حساب ابطالی). پس، ارسال ابطالی برای برگه‌ی فروش در این وضعیت به معنی ارسال ابطالی برای صورت‌حساب اصلاحی خواهد بود.

     

    قاعدتا انتظار داریم که این عمل منجر به ابطال صورت‌حساب اصلاحی در سامانه بشود – تا متعاقب آن بتوانیم از صورت‌حساب اصلی (فاکتور فروش یا برگه‌ی برگشت از فروش) به عنوان مرجع برای اصلاح، برگشت یا حتی ابطال استفاده کنیم. یعنی مثلا اگر بخواهیم یک فاکتور فروش که قبلا اصلاح شده را ابطال کنیم باید ابتدا برای صورت‌حساب اصلاحی ارسال شده به سامانه ابطالی ارسال کنیم و سپس همین کار را برای صورت‌حساب اصلی (خود فاکتور فروش) انجام دهیم.

     

    در اصلاح مکرر نیز می‌توانیم همین توقع را داشته باشیم: چون ارسال صورت‌حساب اصلاحی دوم (همانطور که در فصل قبل دیدیم) مستلزم تایید صورت‌حساب اصلاحی اول توسط خریدار (یا سیستم) است، تا زمانی که این تایید انجام نشده یا خریدار حاضر یا قادر به تایید نیست، می‌توانیم با ارسال صورت‌حساب ابطالی، آن صورت‌حساب اصلاحی اول را باطل کنیم و سپس نسبت به اصلاح برگه‌ی فروش و ارسال صورت‌حساب اصلاحی جدید اقدام کنیم. پس، ارسال صورت‌حساب ابطالی در این موارد به معنی ابطال صورت‌حساب اصلاحی خواهد بود و تا زمانی که صورت‌حساب اصلاحی تایید نشده باشد یا اگر احیانا توسط خریدار رد شده باشد یک رویه‌ی متعارف و کاربردی در سیستم خواهد بود. پس از تعیین تکلیف این ابطال (با استعلام) صورت‌‎حساب اصلی (برگه‌ی فروشی که قبلا اصلاح شده بوده است) به وضعیت "نیازمند ارسال اصلاحی" خواهد رفت – چرا که اصلاحاتی که قبلا روی این صورت‌‎حساب انجام شده و به صورت اصلاحی به سامانه ارسال شده بوده است کماکان در داده‌های برگه اعمال شده و باقی مانده‌اند.

    اما اشکال اینجاست که اگر صورت‌حساب اصلاحی توسط خریدار (یا سیستم) تایید شده باشد، همانطور که پیش از این گفته‌ایم، صورت‌حساب مرجع اصلاح در سامانه‌ی مودیان، خود به خود، در وضعیت باطل شده قرار می‌گیرد. در این شرایط اگر اقدام به ارسال صورت‌حساب ابطالی برای آن برگه‌ی فروش نماییم، عملا با ابطال صورت‌حساب اصلاحی تایید شده، کل فروش را باطل کرده‌ایم (چون صورت‌حساب اصلی قبلا توسط خود سامانه باطل شده است). با توجه به این نکات در ارسال صورت‌حساب ابطالی برای برگه‌های فروشی که قبلا در سامانه اصلاح شده‌اند یک پیغام ترسناک به صورت زیر در همان محاوره‌ی ارسال بازنمایی می‌شود (که دو نکته فوق را اطلاع می‌دهد و توجه کاربر را می‌طلبد):

    »» توجه: اين صورت‌حساب قبلا اصلاح شده است (صورت‌حساب اصلاحي به سامانه موديان ارسال و اعلام صحت شده است). در اين شرايط، "ابطال" به معني ابطال صورت‌حساب اصلاحي مزبور خواهد بود (نه ابطال صورت‌حساب مرجع).

    با پايان عمليات ابطال (پس از استعلام) اين صورت‌حساب به وضعيت "نيازمند ارسال اصلاحي" خواهد رفت (نه وضعيت اعلام صحت ابطال). از آن پس، اصلاح مجدد صورت‌حساب مرجع يا ابطال آن ميسر خواهد بود.

    »» توجه (بسيار مهم): اگر صورت‌حساب اصلاحي در سامانه موديان تاييد شده باشد، صورت‌حساب مرجع خود به خود در وضعيت ابطال شده قرار خواهد داشت. متاسفانه هيچ روشي براي اينکه سيستم ما بتواند اين شرايط را تشخيص دهد در سامانه موديان تعبيه نشده است. در اين وضعيت ابطال صورت‌حساب اصلاحي عملا به معني ابطال صورت‌حساب مرجع نيز خواهد بود!!!

    لازم است تا با مراجعه به کارپوشه‌ي سامانه‌ي موديان، وضعيت صورت‌حساب اصلاحي و مرجع (اصلي يا برگشت) را بررسي نماييد. اگر صورت‌حساب اصلاحي تاييد شده (و در نتيجه صورت‌حساب مرجع ابطال شده) باشد لازم است تا پيش از ابطال صورت‌حساب، در فهرست برگه‌هاي فروش فرمان "تعيين وضعيت تاييد صورت‌حساب اصلاحي در سامانه" را صادر کنيد و "تاييد شده" بودن صورت‌حساب اصلاحي را اعلام نماييد. با اينکار ابطال صورت‌حساب به معني ابطال صورت‌حساب مرجع خواهد بود - وگرنه يک صورت‌حساب مرجع (اصلي يا برگشت) در سيستم خواهيم داشت که در سامانه‌ي موديان ابطال شده است. ابطال صورت‌حساب ابطال شده در سامانه با خطا مواجه خواهد شد.

     

    همانطور که در متن فوق آمده است، تایید صورت‌حساب اصلاحی توسط خریدار به این معنی است که آن صورت‌حساب عملا جایگزین صورت‌حساب اصلی شده است و به همین دلیل در این وضعیت، ارسال صورت‌حساب اصلاحی به معنی ابطال برگه‌ی فروش تلقی می‌شود و آن برگه‌ی فروش پس از استعلام، در همان وضعیت "اعلام صحت ابطال" که پیش از این دیده بودیم قرار می‌گیرد. پیش از این، در مورد تایید صورت‌حساب اصلاحی و اعلام آن به سیستم (در فهرست برگه‌های فروش) توضیحات کاملی ارائه کرده‌ایم.

     

     

     

    ابطال برگه‌ی برگشت از فروش

    در فصل "ارسال و استعلام صورت‌حساب برگشت از فروش" در مورد مرجع برگشت، برگشت‌های متعدد روی یک فاکتور فروش و زنجیره‌ی برگشت‌ها توضیح دادیم. ابطال یک برگه‌ی فروش که به عنوان مرجع برای یک صورت‌حساب برگشت از فروش لحاظ شده باشد (طبیعتا) میسر نیست و با خطای زیر مواجه خواهد شد:

    برگه‌ي فروش به عنوان مرجع يک برگه‌ي برگشت به سامانه موديان معرفي شده است. ابطال اين برگه‌ي فروش، بدون ابطال صورت‌حساب برگشت از فروش مذکور ميسر نيست.

     

    همانند آنچه در مورد فاکتور فروش گفتیم، حذف یک برگه‌ی برگشت از فروش که در وضعیت‌هایی بجز "ارسال نشده" یا "اعلام صحت ابطال" قرار داشته باشد میسر نیست. ارسال صورت‌حساب ابطالی برای یک برگه‌ی برگشت از فروش نیز شبیه فاکتور فروش انجام می‌شود. همچنین تمام مطالبی که در مورد ابطال صورت‌حساب اصلاحی (در بند قبل) گفتیم در مورد برگه‌ی برگشت از فروش نیز صدق می‌کنند. تفاوت اصلی در زمانی است که برگه‌ی مرجع ابطال (در اینجا صورت‌حساب برگشت از فروش) توسط خریدار (یا سیستم) در سامانه تایید شده باشد. در مورد صورت‌حساب اصلی، دیدیم که تایید مرجع صرفا باعث می‌شد که صورت‌حساب ابطالی بلافاصله در سامانه عمل نکند و نیاز به تایید داشته باشد (در سامانه، در وضعیت "در انتظار واکنش" قرار بگیرد). اما در ابطال صورت‌حساب برگشت از فروش تایید شده با فراز دیگری از این حماسه مواجه هستیم.

     

    ماجرا از آنجا آغاز می‌شود که صورت‌حساب برگشت از فروش خود یک صورت‌حساب ارجاعی است. گفتیم که تایید یک صورت‌حساب ارجاعی توسط خریدار (یا سیستم) در سامانه، خود به خود باعث می‌شود که صورت‌حساب مرجع بلافاصله در وضعیت "باطل شده" قرار بگیرد. این نکته به خصوص در مورد صورت‌حسابهایی که بیش از یک ماه از ارسال آنها به سامانه گذشته باشد اهمیت زیادی دارد؛ چرا که با گذشت زمان در وضعیت "تایید سیستمی" قرار می‌گیرند. حال چه می‌شود اگر ما اقدام به ارسال ابطالی برای یک برگشت از فروش تایید شده نماییم؟ همانند آنچه در مورد اصلاح گفتیم، در اینجا هم این ابطال اخیر، نه به معنی ابطال برگشت، بلکه به معنی ابطال کل فروش خواهد بود (چون صورت‌حساب اصلی، قبلا، با تایید صورت‌حساب برگشت، خود به خود باطل شده است). توجه کنید که این وضعیت در زنجیره‌ی برگشت‌ها هم پیش می‌آید؛ اگر بیش از یک صورت‌حساب برگشت برای یک فاکتور فروش ارسال شده باشد، یا فاکتور فروش قبلا اصلاح شده باشد، مرجع برگشت بعدی، صورت‌حساب برگشتی یا اصلاحی قبلی خواهد بود. در فصل برگشت گفتیم که یک صورت‌حساب اصلاحی یا برگشتی فقط در صورتی می‌تواند به عنوان مرجع در یک صورت‌حساب برگشت جدید بکار رود که توسط خریدار (یا سیستم) در کارپوشه‌ی سامانه‌ی مودیان تایید شده باشد و این یعنی وقتی با زنجیره‌ی برگشت مواجه باشیم، کلیه‌ی صورت‌حساب‌های قبلی در این زنجیره «حتما» به ترتیب تایید شده‌اند و با هر تاییدی صورت‌حساب مرجع قبلی باطل شده است. واقعا با یک کلاف سردرگم مواجه هستیم – ناشی از تعاریف، معماری، روش‌ها و نتایج تجزیه و تحلیل و پیاده‌سازی بی‌نهایت نادرست و پراشکال. البته مستندات سیستم هم پراشکال هستند که البته به این بحث مربوط نمی‌شود.

     

    در ارسال صورت‌حساب ابطالی برای یک برگه‌ی برگشت از فروش که قبلا صورت‌حساب اصلاحی برای آن ارسال نشده یا صورت‌حساب اصلاحی مزبور توسط خریدار (یا سیستم) در کارپوشه‌ی سامانه‌ی مودیان تایید شده و این تایید به صورت مناسب به سیستم نوسا اطلاع داده شده است، اگر تایید صورت‌حساب برگشت از فروش در سامانه به اطلاع سیستم نوسا نرسیده باشد پیغام زیر در محاوره‌ی ارسال بازنمایی می‌شود (که بسیار مهم است):

    »» توجه (بسيار مهم): اگر اين صورت‌حساب برگشت از فروش در سامانه موديان توسط خريدار (يا سيستم) تاييد شده باشد، ابطال آن به معني ابطال صورت‌حساب فروش اصلي (فاکتور فروش) و تمام برگشت‌هاي قبلي آن فاکتور فروش که به سامانه ارسال شده‌اند خواهد بود – چرا که اگر يک صورت‌حساب ارجاعي (در اينجا برگشت از فروش) در سامانه موديان تاييد شده باشد، صورت‌حساب مرجع (در اينجا فاکتور فروش يا برگشت قبلي همان فاکتورفروش) خود به خود در وضعيت ابطال شده قرار خواهد داشت. متاسفانه هيچ روشي براي اينکه سيستم ما بتواند اين شرايط را تشخيص دهد در سامانه موديان تعبيه نشده است. در اين وضعيت ابطال صورت‌حساب برگشت از فروش عملا به معني ابطال صورت‌حساب‌هاي مرجع نيز خواهد بود!!!

    لازم است تا با مراجعه به کارپوشه‌ي سامانه‌ي موديان، وضعيت صورت‌حساب برگشت را بررسي نماييد. اگر صورت‌حساب برگشت تاييد شده (و در نتيجه صورت‌حساب مرجع ابطال شده) باشد لازم است تا پيش از ابطال صورت‌حساب، در فهرست برگه‌هاي فروش فرمان "تعيين وضعيت تاييد صورت‌حساب در سامانه" را صادر کنيد و "تاييد شده" بودن صورت‌حساب برگشت را اعلام نماييد. با اينکار ابطال صورت‌حساب برگشت به معني ابطال زنجيره‌ي صورت‌حساب‌هاي مرجع (فاکتور فروش و برگشت‌هاي قبلي آن) خواهد بود - وگرنه تعدادي صورت‌حساب مرجع (فاکتور فروش يا برگشت) در سيستم خواهيم داشت که در سامانه‌ي موديان ابطال شده‌اند. ابطال صورت‌حساب ابطال شده در سامانه با خطا مواجه خواهد شد.

     

    ذکر مصیبت، تقریبا به صورت کامل در پیغام فوق انجام شده است. در مقابل، اگر صورت‌حساب برگشت از فروش در سامانه تایید شده و این تایید به اطلاع سیستم نیز رسیده باشد پیغام زیر در محاوره‌ی ارسال بازنمایی می‌شود (که این نیز بسیار مهم است):

    »» توجه (بسيار مهم): قبلا به نرم‌افزار اعلام شده است که اين صورت‌حساب برگشت از فروش در سامانه‌ي موديان توسط خريدار (يا سيستم) تاييد شده است. از آنجا که اگر يک صورت‌حساب ارجاعي (در اينجا برگشت از فروش) در سامانه موديان تاييد شده باشد، صورت‌حساب مرجع (در اينجا فاکتور فروش يا برگشت قبلي همان فاکتورفروش) خود به خود در وضعيت ابطال شده قرار خواهد داشت، ابطال اين صورت‌حساب برگشت به معني ابطال زنجيره‌ي صورت‌حساب‌هاي مرجع (فاکتور فروش و برگشت‌هاي قبلي آن) خواهد بود.

    شماره سند فاکتور فروشي که با اينکار ابطال خواهد شد: --- (در کل ---)

    شماره/سري ساير صورت‌حساب(هاي) برگشت از فروشي که ابطال خواهند شد:

    --/--

    --/--

     

    نکته‌ی قابل توجه در پیغام فوق این است که علاوه بر آنچه قبلا گفتیم، مشخص می‌کند که این ابطال (یک برگشت تایید شده) همزمان با ابطال صورت‌حساب برگشت از فروش جاری، برخی از برگه‌های فروشی که قبلا به سامانه ارسال شده‌اند را نیز پس از استعلام در وضعیت "اعلام صحت ابطال" قرار می‌دهد. چنین است که برگه‌های ذکر شده از قبل در سامانه باطل شده‌اند و صرفا وضعیت نهایی آنها در آخرین برگشتی که ابطال کردیم منعکس شده بوده است. حال با ابطال این برگشت اخیر عملا تمام فروش را باطل کرده‌ایم. هیچیک از برگه‌هایی که در این زنجیره تشخیص داده شده و اعلام شدند، عملا در سامانه وجود ندارند و قاعدتا در نوسا هم باید حذف یا ابطال شوند.

     

     

     

    ابطال و وضعیت برگه‌ها در سیستم نوسا (پیش‌نویس، عملیاتی...)

    قابل پیش‌بینی است که سیستم فقط برای برگه‌های فروش پیش‌نویس اجازه‌ی ارسال صورت‌حساب ابطالی را بدهد – همانطور که حذف یا ابطال برگه‌های فروش عملیاتی یا تایید شده ممنوع هستند:

     

     

    در مقابل، برگه‌هایی که در فرآیند ارسال صورت‌حساب ابطالی قرار داشته باشند (در یکی از وضعیت‌های "در انتظار استعلام ابطالی"، "اعلام خطا در استعلام ابطالی" و "اعلام صحت ابطال" ) را نمی‌توانیم عملیاتی کنیم.

     

     

    تنها نکته‌ای که ارزش توضیح بیشتر دارد، مربوط است به ارسال صورت‌حساب ابطالی برای یک صورت‌حساب برگشت از فروش تایید شده (توسط خریدار یا سیستم). همانطور که در بند قبل گفتیم، ابطال این صورت‌حساب به معنی ابطال کل فروش و همه‌ی برگه‌های زنجیره‌ی برگشت (فاکتور فروش و برگه‌های برگشت از فروش قبلی) است. به همین دلیل هیچیک از آن برگه‌ها نیز نباید عملیاتی یا تایید شده باشند:

    قبلا به نرم‌افزار اعلام شده است که اين صورت‌حساب برگشت از فروش در سامانه‌ي موديان توسط خريدار (يا سيستم) تاييد شده است. از آنجا که اگر يک صورت‌حساب ارجاعي (در اينجا برگشت از فروش) در سامانه موديان تاييد شده باشد، صورت‌حساب مرجع (در اينجا فاکتور فروش يا برگشت قبلي همان فاکتورفروش) خود به خود در وضعيت ابطال شده قرار خواهد داشت، ابطال اين صورت‌حساب برگشت به معني ابطال زنجيره‌ي صورت‌حساب‌هاي مرجع (فاکتور فروش و برگشت‌هاي قبلي آن) خواهد بود. همه‌ي برگه‌هاي اين زنجيره بايد "پيش‌نويس" باشند.

    فاکتور فروش با شماره سند -- (در کل --) "پيش‌نويس" نيست.

    يکي يا برخي از صورت‌حساب‌هاي برگشت از فروش زير (برگه‌هاي قبلي در زنجيره‌ي برگشت) "پيش‌نويس" نيست:

    --/--

    --/--

    روزبه
    کاربر با تجربه
    کاربر با تجربه

    --
    30 بهمن 1402 11:42 ق.ظ

    بازنویسی اساسی ابزار اتصال نرم‌افزار فروش به سامانه مودیان - بخش پنجم: سایر نکات و اطلاعات در رابطه با کارکرد ابزار سامانه مودیان

     

    مجموعه‌ای از رویه‌های قابل اجرا و امکاناتی که در تکمیل رویه‌های اصلی توسعه داده شده‌اند را در این فصل توضیح می‌دهیم. برخی از این نکات  در خلال مطالب فصل‌های قبل معرفی شده‌اند و در اینجا توضیحات تکمیلی مربوط به آنها ارائه شده‌اند. برخی از امکانات (مثل استعلام آزاد یا دریافت JSON) ابزارهایی هستند که ممکن است در مواردی مفید باشند.  در یک بند، به معرفی ابزاری که برای تشکیل زوج کلید نامتقارن (RSA) و فایل درخواست گواهی امضای الکترونیکی تولید کرده‌ایم نیز می‌پردازیم.

     

    دیدیم که کلیه عملیات مربوط به سامانه‌ی مودیان که برروی برگه‌های فروش قابل اجرا هستند، در فهرست برگه‌های فروش، در یک منوی متصل به تکمه‌ی "عملیات مربوط به سامانه‌ی مودیان" جمع شده‌اند. گزینه‌هایی از این منو که در فصل‌های اصلی توضیح داده نشده‌اند در همین فصل بررسی خواهند شد. شکل زیر این منو را بازنمایی می‌کند:

     

     

     

    جهت سهولت در این ویدیو موارد به برخی از امکانات خاص نرم‌افزار نوسا در رابطه با کارپوشه سامانه مودیان بصورت آنلاین طی زیرساخت موجود سازمان مالیات در سایت tax.gov.ir و قانون پایانه های فروشگاهی و سامانه مودیان در بهمن ماه سال 1402 می‌پردازیم:

     

     

     

    تعیین وضعیت تایید صورت‌حساب‌های اصلی و اصلاحی در سامانه

     

    آنچه در عنوان این بند آمده است نام دو فرمان قابل صدور در فهرست برگه‌های فروش هستند که با کمترین تشریفات و بدون ارتباط با API سامانه‌ی مودیان انجام می‌شوند. اما ذکر مجدد نکات مهمی که باعث شده‌اند به این دو فرمان (غیرسیستماتیک) نیاز داشته باشیم (و در فصل‌های قبل، همه‌ی آنها را دیده‌ایم) را مفید می‌دانیم.

     

    هر صورت‌حسابی که به سامانه‌ی مودیان ارسال می‌شود، در کارپوشه‌ی فروشنده (کاربر نوسا) و با مقداری تاخیر در کارپوشه‌ی خریدار (مشتری کاربر نوسا) قرار می‌گیرد. صورت‌حساب‌ها دارای یک مشخصه با نام "وضعیت" هستند که در ابتدا توسط سامانه (سیستم) تعیین می‌شود و در ادامه، تحت تاثیر فرمان‌هایی که خریدار در کارپوشه‌ی خود صادر می‌کند یا با مرور زمان یا با ارسال صورت‌حساب‌های ابطالی توسط فروشنده تغییر می‌کند. در فصل "نوع و وضعیت برگه‌های فروش..." در بند "تفکیک صورت‌حساب‌ها در سامانه‌ی مودیان برحسب واکنش خریدار" به صورت مفصل در مورد این وضعیت و حالت‌های مختلف آن صحبت کرده‌ایم. به صورت خلاصه:

     

    • هر صورت‌حساب اصلی، اصلاحی و برگشتی جدید که به سامانه ارسال می‌شود حسب مورد در یکی از وضعیت‌های زیر قرار می‌گیرد:
      • در انتظار واکنش: خریدار در سامانه‌ی مودیان کارپوشه دارد و تمام مراحل برپاسازی کارپوشه را به صورت کامل انجام داده است.
      • عدم نیاز به واکنش: خریدار در سامانه‌ کارپوشه ندارد – مثلا مصرف‌کننده‌ی نهایی است. در بیشتر کاربردها مثل این است که صورت‌حساب از ابتدا "تایید شده" باشد.
      • عدم امکان واکنش: خریدار در سامانه کارپوشه دارد اما گام نهایی را تکمیل نکرده است.
    • خریدار می‌تواند در کارپوشه‌ی خود نسبت به صورت‌حساب‌های در انتظار واکنش، واکنش نشان دهد: آنها را تایید یا رد کند.
    • با مرور زمان (گویا پس از 30 روز) سیستم قرار است به صورت خودکار، همه‌ی صورت‌حساب‌های در انتظار واکنش را تایید نماید. وضعیت "تایید سیستمی" در کارپوشه، این موارد را بازنمایی می‌کند.
    • هر صورت‌حساب ابطالی که به سامانه ارسال می‌شود در یکی از وضعیت‌های زیر قرار می‌گیرد:
      • عدم نیاز به واکنش: اگر مرجع ابطال توسط خریدار (یا سیستم) در سامانه تایید نشده باشد. در این حالت، صورت‌حساب مرجع بلافاصله در وضعیت "باطل شده" قرار می‌گیرد.
      • در انتظار واکنش: اگر مرجع ابطال قبلا توسط خریدار (یا سیستم) تایید شده باشد. خود صورت‌حساب ابطالی در این حالت توسط خریدار قابل تایید یا رد است. صورت‌حساب مرجع، تا پیش از تایید مزبور در وضعیت "باطل شده" قرار نمی‌گیرد.

     

    اما چند رفتار عجیب در سامانه وجود دارند که وضعیت صورت‌حساب در کارپوشه را به یک فراسنج بسیار مهم در عملیاتی که در سیستم نوسا با برگه‌های فروش قابل انجام است تبدیل می‌کنند:

     

    • تایید یک صورت‌حساب ارجاعی (اصلاحی یا برگشتی) توسط خریدار یا سیستم، بلافاصله باعث می‌شود که صورت‌حساب مرجع در وضعیت "باطل شده" قرار بگیرد.
    • مرجع یک صورت‌حساب ارجاعی حتما باید توسط خریدار یا سیستم تایید شده باشد – مگر آنکه این مرجع یک صورت‌حساب اصلی (فاکتور فروش) باشد.
    • دیدیم که رفتار سامانه با صورت‌حساب ابطالی برحسب اینکه مرجع ابطال تایید شده باشد یا خیر، متفاوت است.

     

    این رفتارها برخی از عملیات در سیستم نوسا را تحت تاثیر قرار می‌دهند:

    • ابطال یک صورت‌حساب اصلاحی تایید نشده به معنی ابطال اصلاح است.
    • ابطال یک صورت‌حساب اصلاحی تایید شده به معنی ابطال کل فروش است.
    • اصلاح مجدد یک برگه‌ی فروش فقط پس از تایید صورت‌حساب اصلاحی قبلی میسر است.
    • برگشت مجدد یک فاکتور فروش فقط پس از تایید برگشت قبلی میسر است.
    • برگشت یک برگه‌ی فروش که قبلا اصلاح شده است فقط پس از تایید صورت‌حساب اصلاحی قبلی میسر است.
    • ابطال یک صورت‌حساب برگشت از فروش تایید نشده به معنی ابطال برگشت است.
    • ابطال یک صورت‌حساب برگشت از فروش تایید شده به معنی ابطال کل فروش (فاکتور فروش و برگشت‌های قبلی) است.
    • دیدیم که حذف یا ابطال یک برگه‌ی فروش در سیستم نوسا، فقط در صورتی میسر است که آن برگه‌ی فروش "ارسال نشده" یا "اعلام صحت ابطال" باشد – یعنی صورت‌حساب ابطالی برای سامانه ارسال و استعلام شده باشد. با این همه اگر آن صورت‌حساب ابطالی در سامانه توسط خریدار رد شود، ابطال در سامانه انجام نشده و حذف یا ابطال برگه‌ی فروش در سیستم نوسا کار نادرستی خواهد بود (به این مورد در بند اعلام رد شدن صورت‌حساب ابطالی در سامانه خواهیم پرداخت).

     

    علی‌رغم اهمیت فوق‌العاده‌ی "وضعیت تایید صورت‌حساب در سامانه" در رویه‌های مختلف، متاسفانه در API سامانه هیچ روشی برای اینکه سیستم ما بتواند از این وضعیت آگاه شود تعبیه نشده است. در همه‌ی رویه‌های پیش‌گفته پیغام‌های اخطار یا خطای مفصلی به کاربر نمایش داده می‌شود و روش رفع خطا و ادامه‌ی عملیات نیز ذکر می‌شود. لطفا نهایت دقت را در برخورد با پیغام‌های پیش‌گفته (که عموما طولانی و ترسناک هستند) به عمل آورید. استفاده از فرمان‌های موضوع این بند در مواجهه با پیغام‌های پیش‌گفته لازم می‌شوند – در رویه‌های ساده‌تر که وضعیت تایید در آنها بی‌تاثیر است نیازی به تعیین وضعیت تایید در سیستم نوسا نیست. ضمنا یادآوری می‌کنیم که صورت‌حساب‌هایی که در کاپوشه‌ی سامانه‌ی مودیان در وضعیت‌های "تایید شده"، "تایید سیستمی" و "عدم نیاز به واکنش" قرار دارند، از دید سیستم نوسا تایید شده محسوب می‌شوند.

     

    برای تعیین وضعیت تایید صورت‌حساب یا صورت‌حساب اصلاحی در سامانه، در فهرست برگه‌های فروش سطرهای مورد نظر را انتخاب کنید و از منوی عملیات با سامانه، گزینه‌ی مورد نظر را انتخاب نمایید. با محاوره‌ی ساده‌ای به صورت زیر مواجه خواهید شد:

     

     

    همانطور که دیده می‌شود از همین امکان می‌توانیم برای برگشت از وضعیت تایید شده نیز استفاده کنیم. توجه کنید که فقط صورت‌حساب‌هایی که "اعلام صحت" یا "اعلام صحت برگشت کل / ابطال" باشند قابل انتخاب هستند.

     

     

     

    اعلام رد شدن صورت‌حساب ابطالی در سامانه

    پیش از این گفتیم که اگر مرجع ابطال در کارپوشه‌ی سامانه‌ی مودیان در وضعیت‌های تایید شده یا تایید سیستمی قرار داشته باشد، صورت‌حساب ابطالی بلافاصله عمل نمی‌کند و در وضعیت "در انتظار واکنش" خواهد بود. حال چه می‌شود اگر خریدار این ابطال را در کارپوشه‌ی خود "رد" کند؟ در این شرایط ما یک برگه‌ی فروش "اعلام صحت ابطال" خواهیم داشت که در سامانه‌ی مودیان باطل نشده است. برای اصلاح داده‌های سیستم نوسا در این شرایط این فرمان را پیاده‌سازی کرده‌ایم. با انتخاب برگه‌های مورد نظر در فهرست برگه‌های فروش و صدور این فرمان از منوی عملیات با سامانه، سیستم به بررسی سطرهای انتخاب شده می‌پردازد و پیغام تایید زیر را بازنمایی می‌کند:

    عمليات "اعلام رد شدن صورت‌حساب ابطالي در سامانه" برروي برگه‌هايي که وضعيت آنها در سامانه موديان "اعلام صحت ابطال" باشد قابل اجرا است.

    اگر صورت‌حساب ابطالي توسط خريدار در کارپوشه‌ي مربوط (در سامانه‌ي موديان) "رد" شده باشد، صورت‌حساب مرجع ابطال در سامانه‌ي موديان باقي خواهد ماند. اين در حالي است که صورت‌حساب مرجع در فهرست برگه‌هاي فروش در وضعيت "اعلام صحت ابطال" نمايش داده مي‌شود و حتي امکان حذف يا ابطال آن در سيستم نيز وجود خواهد داشت!

    متاسفانه هيچ روشي براي اينکه سيستم ما بتواند اين شرايط را تشخيص دهد در سامانه‌ي موديان تعبيه نشده است.

    اجراي عمليات "اعلام رد شدن صورت‌حساب ابطالي در سامانه"، برگه‌ي فروش مرجع را از وضعيت فوق حسب مورد به يکي از وضعيت‌هاي "اعلام صحت" يا "نيازمند ارسال اصلاحي" خواهد برد (ارسال صورت‌حساب ابطالي ملغي خواهد شد).

    1 برگه از برگه‌هاي انتخاب شده در وضعيت فوق قرار دارند.

    آيا اجراي عمليات را تاييد مي‌کنيد؟

     

     

    انصراف از ارسال صورت‌حساب ابطالی به سامانه

    با انتخاب سطرهای مورد نظر از فهرست برگه‌های فروش و انتخاب گزینه‌ی مورد بحث از منوی عملیات با سامانه، پیغام زیر بازنمایی می‌شود (که کلیه‌ی توضیحات لازم در آن ارائه شده است):

    عمليات "انصراف از ارسال صورت‌حساب ابطالي به سامانه" برروي برگه‌هايي که وضعيت آنها در سامانه موديان "اعلام خطا در استعلام ابطالي" باشد قابل اجرا است.

    اگر ارسال صورت‌حساب ابطالي با خطا مواجه شده باشد، چنين است که اين صورت‌حساب عملا هيچ تاثيري در سامانه‌ي موديان نداشته است. ممکن است ماهيت اين خطا چنان باشد که امکان رفع آن وجود نداشته باشد (مثل خطاي وضعيت مرجع - که البته به عنوان خطا در شناسه‌ي مالياتي مرجع گزارش مي‌شود).

    با توجه به نکات فوق اجراي عمليات "انصراف از ارسال صورت‌حساب ابطالي به سامانه" منجر به ملغي شدن ارسال صورت‌حساب ابطالي شده و برگه‌ي فروش مرجع را از وضعيت "اعلام خطا در استعلام ابطالي" به يکي از وضعيت‌هاي "اعلام صحت" يا "نيازمند ارسال اصلاحي" خواهد برد. البته سريالي که به صورت‌حساب ابطالي تخصيص داده شده است عملا مصرف شده و از اين پس در نرم‌افزار و نيز در کارپوشه‌ي سامانه‌ي موديان مشاهده نخواهد شد.

    1 برگه از برگه‌هاي انتخاب شده در وضعيت فوق قرار دارند.

    آيا اجراي عمليات را تاييد مي‌کنيد؟

     

    انصراف از ارسال صورت‌حساب اصلاحی به سامانه

    با انتخاب سطرهای مورد نظر از فهرست برگه‌های فروش و انتخاب گزینه‌ی مورد بحث از منوی عملیات با سامانه، پیغام زیر بازنمایی می‌شود (که کلیه‌ی توضیحات لازم در آن ارائه شده است):

    عمليات "انصراف از ارسال صورت‌حساب اصلاحي به سامانه" برروي برگه‌هايي که وضعيت آنها در سامانه موديان "اعلام خطا در استعلام اصلاحي" باشد قابل اجرا است.

    اگر ارسال صورت‌حساب اصلاحي با خطا مواجه شده باشد، چنين است که اين صورت‌حساب عملا هيچ تاثيري در سامانه‌ي موديان نداشته است. ممکن است ماهيت اين خطا چنان باشد که امکان رفع آن وجود نداشته باشد (مثل خطاي وضعيت مرجع - که البته به عنوان خطا در شناسه‌ي مالياتي مرجع گزارش مي‌شود).

    با توجه به نکات فوق اجراي عمليات "انصراف از ارسال صورت‌حساب اصلاحي به سامانه" منجر به ملغي شدن ارسال صورت‌حساب اصلاحي شده و برگه‌ي فروش مرجع را از وضعيت "اعلام خطا در استعلام اصلاحي" به وضعيت "نيازمند ارسال اصلاحي" خواهد برد. البته سريالي که به صورت‌حساب اصلاحي تخصيص داده شده است عملا مصرف شده و از اين پس در نرم‌افزار و نيز در کارپوشه‌ي سامانه‌ي موديان مشاهده نخواهد شد.

    1 برگه از برگه‌هاي انتخاب شده در وضعيت فوق قرار دارند.

    آيا اجراي عمليات را تاييد مي‌کنيد؟

     

    تاخیر مصنوعی پیش از ارسال درخواست‌های استعلام

    دیدیم که استعلام صورت‌حساب‌ها با ارسال درخواست استعلام به API سامانه‌ی مودیان انجام می‌شود. در محاوره‌ی ارسال، پیش از استعلام، پیغام زیر بازنمایی می‌شود (که معنی مشخصی دارد):

    در سامانه‌ي موديان، اگر فاصله‌ي بين ارسال و استعلام صورت‌حساب‌ها کمتر از 10 ثانيه باشد، به احتمال بسيار زياد صورت‌حساب به يکي از صورت‌هاي زير گزارش مي‌شود:

    PENDING, NOT FOUND

    طبق تجارب قبلي در اکثر موارد اين دو وضعيت به مدت بسيار طولاني باقي مي‌مانند و حتي گاهي هرگز رفع نمي‌شوند. براي ممانعت از اين وضعيت نامطلوب، هميشه پيش از ارسال درخواست استعلام 10 ثانيه مکث مي‌کنيم.

     

     

    استعلام در وضعیت‌های اعلام خطا

    در فصل "نوع و وضعیت برگه‌های فروش و سیرعملیات در سیستم نوسا"، در بند "رویه‌های قابل اجرا بر روی برگه‌های فروش" در این مورد توضیح داده‌ایم. در اینجا صرفا یادآوری می‌کنیم: با ارسال انواع صورت‌حساب به سامانه (اصلی، اصلاحی، برگشتی، ابطالی)، برگه‌ی فروش به یکی از وضعیت‌های "در انتظار استعلام" می‌رود و طبیعتا باید بعدا استعلام شود. اگر خطایی در استعلام پیش نیاید، به یکی از وضعیت‌های "اعلام صحت" خواهد رفت و کار تمام است. اما اگر خطایی وجود داشته باشد، برگه‌ی فروش به یکی از وضعیت‌های "اعلام خطا در استعلام" خواهد رفت. در این وضعیت قاعدتا باید خطای برگه اصلاح شود و دوباره ارسال گردد. همچنین گفتیم که برخی از خطاهای اعلامی از سامانه، خطای برگه‌ی فروش نیستند و از اشکالات سامانه ناشی شده‌اند. این موارد از بررسی پیغام‌های خطا و همچنین بررسی بازنمایی شدن صورت‌حساب در کارپوشه‌ی سامانه‌ی مودیان قابل تشخیص هستند. در این موارد، اگر دوباره صورت‌حساب را ارسال کنیم با خطای تکراری بودن شناسه‌ی یکتای صورت‌حساب مواجه خواهیم شد. برای ممانعت از این وضعیت امکان استعلام (مجدد) برگه‌های فروش "اعلام خطا در استعلام" را ایجاد کرده‌ایم.

     

    این برگه‌ها درست همانند برگه‌های "در انتظار استعلام" قابل استعلام (مجدد) هستند. البته اگر واقعا خطایی در آنها وجود داشته باشد با هر بار استعلام دوباره با همان خطا مواجه خواهیم شد. تا زمانی که برگه‌ی "اعلام خطا در استعلام" را اصلاح نکنیم و دوباره به سامانه ارسال نکنیم، خطا(ها)ی مزبور رفع نخواهند شد.

     

     

    استعلام آزاد صورت‌حساب‌ها – بدون تغییر وضعیت

    به تجربه، نیاز به گونه‌ای از استعلام بدون اینکه حتما لازم باشد وضعیت ابتدایی برگه‌ی فروش یکی از انواع "در انتظار استعلام" یا "اعلام خطا در استعلام" باشد احساس می‌شد. یعنی صرف اینکه برگه یکبار به سامانه ارسال شده باشد (و uid و شماره‌ی ارجاع دریافتی از سامانه داشته باشد) برای این استعلام جدید کافی باشد. از طرف دیگر این استعلام آزاد صرفا جهت اطلاع است و نباید تغییری در وضعیت برگه‌های فروش ایجاد کند – یعنی وضعیت را تغییر ندهد و خطاها و اخطارهای احتمالی را در برگه درج نکند.

    مکانیزم استعلام آزاد بسیار شبیه استعلام (عادی) است. کافی است سطرهای مورد نظر از فهرست برگه‌های فروش انتخاب شوند و همان گزینه‌ی "استعلام صورت‌حساب‌ها" از منوی عملیات با سامانه انتخاب شود – با این تفاوت که همزمان با انتخاب گزینه‌ی مزبور، کلید Ctrl فشار داده شده باشد.


     

     

    ملاحظات مربوط به فعالیت همزمان کاربران

    نمی‌دانیم سامانه‌ی مودیان تا چه میزان قادر است اجرای همزمان API خود از یک رایانه (سرور نوسا) را تحمل کند. مستقل از این نکته، در سیستم نوسا، محدودیت‌هایی در استفاده‌ی همزمان کاربران از امکانات ارسال و استعلام وجود دارند. این محدودیت‌ها از دو نکته ناشی می‌شوند: یکی اینکه آخرین سریال صادر شده از یک حافظه مالیاتی نباید در هر لحظه در دو عملیات موازی تغییر داده شود. و دیگر اینکه ارسال و استعلام صورت‌حساب‌ها منجر به اصلاح برگه‌های فروش می‌شود (و از قضا از مهم‌ترین انواع اصلاح این برگه‌ها به شمار می‌آید) و به همین دلیل مانند این است که کاربر مشغول اصلاح همزمان برگه‌هایی است که برای ارسال یا استعلام انتخاب کرده است.

    به این ترتیب اولا ارسال و استعلام صورت‌حساب‌های یک حافظه مالیاتی به صورت همزمان توسط دو کاربر (ایستگاه کاری – کلاینت) میسر نیست. کاربر دوم با خطای زیر مواجه خواهد شد:

     

     

    و ثانیا همه‌ی برگه‌های فروش انتخاب شده عملا برای اصلاح علامت‌گذاری می‌شوند. به این ترتیب اگر کاربر دیگری مشغول اصلاح یکی از آنها باشد عملیات ارسال یا استعلام با خطا مواجه می‌شود و در مقابل تا زمانی که ارسال به سامانه انجام نشده باشد سایر کاربران نمی‌توانند اقدام به اصلاح برگه یا سند فروش نمایند. خطایی که در این شرایط ارائه می‌شود مشابه رویه‌ی عادی سیستم فروش است:

     

     

     

     

    بازنمایی آزاد محتوای JSON قابل ارسال به سامانه (بدون نیاز به ارسال)

    در ارسال صورت‌حساب‌ها به سامانه‌ی مودیان، داده‌ها در قالب JSON فرمت می‌شوند و به سامانه ارسال می‌گردند. در بعضی مواقع اطلاع از JSON ارسال شده به سامانه یا آنچه قرار است به سامانه ارسال شود می‌تواند بسیار مفید باشد. در فهرست برگه‌های فروش، با قرار دادن مکان‌نما برروی یکی از برگه‌های فروش و فشار تکمه‌ی "عملیات با سامانه‌ی مودیان" همزمان با فشار کلیدهای Ctrl+Shift و پس از انتخاب روش ارسال، JSON مزبور در صفحه‌ای به شکل زیر بازنمایی می‌شود:

     

     

     

    ابزار نوسا برای تشکیل زوج کلید RSA و درخواست صدور گواهی

    این ابزار به صورت یک نرم‌افزار جداگانه و به عنوان بخشی از فایل نصب سیستم مالی نوسا ارائه شده است و کاربرد آن، همان عنوان آن است. عملیات با توضیحات مکفی و به صورت مرحله به مرحله انجام می‌شوند. شکل زیر صفحه‌ی ابتدایی این نرم‌افزار را نشان می‌دهد:

     

     

     

    کنترل تکراری نبودن برگه‌ی فروش در فراخوانی فایل صادره

    در ایجاد فایل صادره از برگه‌های فروش (یا سندهای فروش)، همه‌ی فیلدهای اطلاعاتی جدید صورت‌حساب، مربوط به سامانه مودیان و حافظه‌ی مالیاتی نیز صادر می‌شوند و در فراخوانی نیز خوانده شده و در برگه‌ی فروش جدید حاصل از فراخوانی درج می‌شوند. اینها شامل شناسه‌ی منحصر به فرد صورت‌حساب در سامانه مودیان (و شناسه‌ی مرجع در صورت‌حساب‌های اصلاح شده)، وضعیت ارسال، uid و شماره‌ی ارجاع نیز هستند. با این رویه می‌توانیم حافظه‌ی مالیاتی و صورت‌حساب‌های صادر شده‌ی وابسته به آنرا به سادگی در بین پایگاه‌های اطلاعاتی جابجا کنیم و مثلا ادامه‌ی عملیات با سامانه‌ی مودیان را از یک پایگاه اطلاعاتی دیگر پیگیری نماییم. مثلا یک فاکتور در وضعیت اعلام خطا در استعلام اصلی را صادر کنیم و در پایگاه دیگری فراخوانی نماییم و در همانجا آنرا اصلاح، بازارسال و استعلام کنیم و به وضعیت نهایی ببریم.

     

    یک نکته‌ی مهم در اینجا وجود دارد: شناسه‌ی منحصر به فرد صورت‌حساب نباید تکراری شود. یعنی در فراخوانی هر صورت‌حساب از فایل صادره باید کنترل کنیم که شناسه‌ی منحصر به فرد آن (و همچنین شناسه‌ی منحصر به فرد صورت‌حساب مرجع آن) در بین شناسه‌های اصلی و ارجاعی برگه‌های فروش در پایگاه اطلاعاتی مقصد وجود نداشته باشد. این کنترل باعث می‌شود که مثلا نتوانیم یک صورت‌حساب ارسال شده به سامانه مودیان را در یک فایل صادر کنیم و سپس همان صورت‌حساب را در همان پایگاه اطلاعاتی به عنوان یک صورت‌حساب جدید فراخوانی نماییم.

    روزبه
    کاربر با تجربه
    کاربر با تجربه

    --
    30 بهمن 1402 11:43 ق.ظ

    برخی از امکانات پایه و عمومی پیاده‌سازی شده یا بروز شده در زیرساخت کلی نرم‌افزار یکپارچه مالی نوسا نسخه 12.10:

     

    • ارائه‌ی اطلاعات تاثیر فعالیت کاربران در سرور SQL در فهرست کاربران

    فهرست کاربران در Admin و Client ارائه می‌شوند: در Admin، در منوی سیستم، با گزینه‌ی "فهرست کاربران سرور" و در Client در منوی سیستم / مدیریت (Admin)، با گزینه‌ی "فهرست کاربران سیستم اطلاعاتی". در مواردی، فعالیت کاربران در تدوین داده‌ها یا اخذ گزارش منجر به قفل شدن برخی از داده‌ها در سرور SQL می‌شود و همین قفل شدن منجر به توقف فعالیت سایر کاربران می‌شود. از ویرایش 12.10 ترتیبی داده‌ایم که این وضعیت در فهرست کاربران قابل مشاهده باشد.

     

    کاربران سیستم، در بیشتر مواقع، مشغول ویرایش داده‌ها یا مشاهده‌ی اطلاعاتی هستند که قبلا از سرور دریافت کرده‌اند – یعنی فقط با Client کار می‌کنند و هیچ فعالیتی در رابطه با سرور SQL (و حتی سرور نوسا) ندارند. اما برخی از کاربران در همان لحظات مشغول ذخیره داده‌ها یا خواندن داده‌ها از سرور هستند؛ این کاربران، به اصلاح یک Process فعال در سرور SQL دارند. این Processها با یک شماره که در سرور SQL به هر کاربر فعال نسبت داده می‌شود شناسایی می‌شوند به شماره‌ی شناسایی مزبور، SPID گفته می‌شود. در فهرست کاربران، از این پس SPID هر کاربر نمایش داده می‌شود که طبیعتا اگر وجود داشته باشد به این معنی است که کاربر دارای یک Process در سرور SQL است.

     

    از طرف دیگر، عملیات کاربرانی که SPID دارند ممکن است در سرور SQL تحت تاثیر فعالیت سایر کاربران متوقف (Block) شده باشد. اگر چنین باشد، SPID کاربری که منجر به Block شده است در ستونی به نام Blocked By نمایش داده می‌شود. با وجود این دو ستون در فهرست کاربران می‌توانیم کشف کنیم که فعالیت چه کاربری منجر به Block شدن سایر کاربران شده است. به عنوان اطلاعات بیشتر، دستور (Command)ای که سرور SQL برای آن کاربر اجرا کرده (و منجر به Block) شده است نیز نمایش داده می‌شود. البته این Command صرفا برای افراد فنی مطلع (و همکاران نوسا) کاربرد دارد. بالاخره، در ستون CPU Time، زمان صرف شده توسط کاربر (برای Command در حال اجرا) برحسب میلی‌ثانیه نمایش داده می‌شود.

     

     

     

    • سرویس‌های مبتنی بر Web تحت تاثیر داده‌های مربوط به نظام پایانه‌های فروشگاهی و سامانه مودیان توسعه داده شده‌اند، مستند کامل این تغییرات بصورت جداگانه قابل ارائه می‌باشد. 
    • در حین کار با مولفه‌های فهرست فیلد و شاخص عملکرد (جدول) با قرار گرفتن مکان‌نما برروی یکی از سطرهای مولفه و فشار کلیدهای Ctrl+C محتویات فهرست یا جدول به صورتی در Clipboard کپی می‌شود که بعدا در نرم‌افزار Excel قابل الصاق (Paste) باشد. این امکان با توجه به اینکه در صدور اطلاعات گزارش‌ها به Excel فقط به محتویات مولفه‌های جدول (عادی و پیشرفته) و جدول محوری توجه شده است می‌تواند در مواردی مفید باشد.
    • در تعریف فرم گزارش‌ها، در حین تدوین مولفه‌ی جدول محوری، در صفحه‌ی "جدول محوری" یک دریچه با عنوان «در تجمیع به فیلدهای خالی توجه نشود» تعبیه شده است. این دریچه در انواع سرجمع تعداد و میانگین (که برای هر یک از فیلدهای سرجمع تعریف می‌شود) در رفتار سیستم موثر است. اگر علامت‌گذاری شده باشد، "تعداد"، بازنمایی کننده‌ی فیلدهای غیرخالی خواهد بود و به همین ترتیب در میانگین هم تاثیر خواهد گذاشت. در گزارش‌های جامع محوری (از آنجا که نوع سرجمع در آنها همیشه "جمع" است) بدون تاثیر خواهد بود.
    • در امکانات ویرایش تصویر، ویرایش قالب گرافیکی PNG میسر شده است. همچنین تغییر DPI برای قالب‌های JPEG و PNG از این پس میسر خواهد بود.
    • در "تمام" مواردی که اطلاعات تلفن و نشانی برای یک تفصیلی یا مرکز در یک فرم گزارش یا برگه در اختیار قرار داشتند از این پس فیلدهای نوع شرکت (سازمان)، تاریخ‌های محدوده‌ی ارتباط و تاریخ آخرین تماس نیز در اختیار قرار خواهد داشت.
    • در دفتر تلفن و نشانی، از این پس کنترل می‌شود که کد پستی 10 رقمی باشد (اخطار داده می‌شود).

     

     

     

    برخی از امکانات پیاده‌سازی شده یا بروز شده در نرم‌افزار‌های انبار و کنترل موجودی و فروش کالا و خدمات نوسا نسخه 12.10:

     

    • فیلدهای جدید و امکان استفاده از مقدار فرعی به صورت فیلدهای استاندارد افزایش یا کاهش در مقدار موجودی برحسب واحد فرعی در گزارش محوری جامع انبار و فهرست رخدادهای انبار​.

    در گزارش‌های انبار، از این پس، فیلدهایی برای بازنمایی مقدار فرعی به صورت افزایش / کاهش در اختیار قرار خواهند داشت. این فیلدها، به خصوص برای استفاده در گزارش‌های محوری، اعم از محوری جامع یا فرم‌های محوری گزارش‌های حاوی رخدادهای انبار، پیاده‌سازی شده‌اند و در ادامه به شرح آنها می‌پردازیم.

     

    مقدار فرعی رخدادهای انبار، پیش از این فقط به صورت قدرمطلق در گزارش‌ها ارائه می‌شد – یعنی همان مقداری که در رخداد انبار درج شده است، بدون پردازش اضافی. تنها روش برای دریافت اطلاعات پردازش شده (افزایش / کاهش) از مقدار فرعی استفاده از "واحد خاص" بود. این رفتار از این واقعیت ناشی شده بود که در کل گزارش یا حتی در بین رخدادهای یک کالا، مقدارهای فرعی در حالت کلی برحسب واحدهای فرعی متفاوتی بکار رفته‌اند و به همین دلیل نمی‌توان آنها را با هم جمع کرد. در مقابل، مقادیر هر کالا و مقدار برحسب واحد خاص را می‌توانیم با هم جمع کنیم و در گزارش منعکس نماییم. در فهرست رخدادهای انبار، فقط یک فیلد به نام "مقدار فرعی" داریم و در مقابل، فیلدهای متنوعی برای بازنمایی مقدار یا مقدار برحسب واحد خاص در اختیار قرار دارند: افزایش مقدار موجودی (و افزایش مقدار موجودی برحسب واحد خاص و مشابه برای سایر فیلدها)، کاهش مقدار موجودی، تغییر در مقدار موجودی (افزایش مثبت)، تغییر در مقدار موجودی (کاهش مثبت).

     

    در گزارش‌های محوری، اگر یکی از سطوح سرجمع را "واحد فرعی" تعریف کنیم می‌توانیم مقادیر فرعی را برحسب واحدهای فرعی تفکیک کنیم و به این ترتیب جمع آنها یا حتی تصور موجودی برحسب آنها میسر خواهد بود. برای اینکه این قابلیت در گزارش‌های محوری (اعم از جامع یا عادی) در اختیار باشد فیلدهای زیر را در فهرست رخدادهای انبار تعریف کرده‌ایم.

     

    افزایش مقدار موجودی برحسب واحد فرعی                                     ITDebMUAmount

    کاهش مقدار موجودی برحسب واحد فرعی                                      ITCreMUAmount

    تغییر در مقدار موجودی برحسب واحد فرعی (افزایش مثبت)             ITDebPosMUAmount

    تغییر در مقدار موجودی برحسب واحد فرعی (کاهش مثبت)              ITCrePosMUAmount

     

    همانند موارد مشابه، فیلدهای فوق در همه‌ی گزارش‌هایی که مبتنی بر اطلاعات رخدادهای انبار ارائه می‌شوند نیز قابل استفاده خواهند بود – شامل انواع ریزعملیات‌های انبار (که می‌توانند فرم محوری داشته باشند) و همچنین گزارش محوری جامع انبار. این فیلدها در سیستم متمرکز صدور اطلاعات به Excel هم قابل استفاده هستند و عبارت لاتینی که در مقابل هر یک از آنها آمده است نام ستون حاوی این فیلدها در جدول مقصد (در Excel) است.

     

    • فیلدهای جدید امکان استفاده از بهای نرمال و مقادیر بحرانی کالاها در گزارش محوری جامع انبار، گزارش محوری درخواست‌های انبار، فهرست رخدادهای انبار (و گزارش‌های ریزعملیات مرتبط با آن) و فهرست رخدادهای درخواست کالا در فرم‌های گزارش‌های عادی و محوری.

    در گزارش‌های انبار، از این پس، فیلدهای بهای نرمال و حدهای بحرانی کالاها نیز در بسیاری از گزارش‌ها قابل استفاده خواهند بود. همچنین در فهرست رخدادهای انبار و درخواست، از این پس فیلدهای زیر (از مشخصات کالاها) ارائه می‌شوند. همانند سایر مشخصات کالا، این فیلدها نیز در گونه‌های محوری گزارش‌های عادی یا جامع نیز به عنوان سطوح سرجمع قابل استفاده خواهند بود. عبارت‌های لاتینی که در مقابل هر فیلد آمده است، نام ستون حاوی این فیلدها در جدول‌های مقصد در سیستم متمرکز صدور اطلاعات به Excel (برای رخدادهای انبار و درخواست) هستند.

     

    بهای نرمال کالا                                                       ITMatNormalUnitPrice                  iptr_MatNormalUnitPrice

    حداقل موجودی کالا                                                 ITMatMinAmount                         iptr_MatMinAmount

    حداقل موجودی قابل فروش کالا                               ITMatMinSAmount                           iptr_MatMinSAmount

    نقطه سفارش کالا                                                   ITMatCritAmount                              iptr_MatCritAmount

    مقدار بهینه سفارش کالا                                          ITMatOptAmount                              iptr_MatOptAmount

    حداکثر موجودی کالا                                                 ITMatMaxAmount                            iptr_MatMaxAmount

     

     

    • ارائه‌ی اطلاعات درخواست و رزرو در گزارش گردش بچ‌های کالا

    پیش از این فیلدهای حاوی اطلاعات درخواست و رزرو در گزارش‌های گردش و موجودی کالاها و گردش و موجودی کالاهای یک مجموعه ارائه می‌شدند. از این پس این فیلدها (به شرح زیر) در گزارش گردش بچ‌های کالا نیز در اختیار خواهند بود:

    • مقدار درخواست‌های ورود
    • مقدار درخواست‌های خروج
    • مقدار درخواست‌های رزرو
    • مقدار موجودی با احتساب درخواست‌ها
    • مقدار موجودی با احتساب رزرو

    در محاوره‌ی ابتدایی این گزارش، دو دریچه‌ی زیر به پارامترها اضافه شده‌اند که عملکرد آنها کاملا شبیه موارد مشابه در گزارش‌های پیش‌گفته است:

    مقدار پیش‌فرض این پارامترها، طبق معمول، در تنظیمات سیستم (برای کاربر فعلی) / پیش‌فرض پارامترهای گزارش‌ها / تراز / گردش بچ‌های کالا، در کنار پیش‌فرض‌های قبلی به صورتی که در شکل زیر مشاهده می‌شود قابل تنظیم است:

     

    • در فرم‌های گزارش فهرست رخدادهای درخواست کالا (و سایر گزارش‌های مبتنی بر آن) فیلدهای اطلاعات تلفن و نشانی مرکز از این پس قابل استفاده‌اند.
    • تغییر رفتار: با صدور فرمان اصلاح برای یک فاکتور فروش که به سامانه‌ی مودیان ارسال شده است، کاربر ابتدا با یک پیغام تایید برای تعیین رفتار سیستم مواجه می‌شود (آیا اصلاح فاکتور منجر به نیاز به ارسال صورت‌حساب اصلاحی بشود یا خیر). تا پیش از این پاسخ مثبت به این تایید (مثلا با کلید Enter) منجر به "نیاز به ارسال اصلاحی" می‌شد. از آنجا که گاها کاربران قبل از خواندن پیغام صرفا روی گزینه کلیک کرده و فاکتور را بدون نیاز به حالت نیاز به ارسال اصلاحی وارد می‌کردند، از این پس متن پیغام تایید تغییر کرده و فقط با پاسخ منفی به آن تایید، اصلاح کامل صورت‌حساب و نیاز به ارسال اصلاحی را خواهیم داشت.
    • در سطرهای پیش‌فاکتور و قرارداد (همانند سایر برگه‌های فروش) الزام درج مقدار همزمان با تنظیم سطرهای برگه کنترل نمی‌شود و پس از این، در زمان ذخیره‌ی برگه کنترل می‌شود.
    • از این پس در اصلاح یکباره‌ی سطرهای برگه‌های فروش، مقدار می‌تواند با 4 رقم اعشار وارد شود.

     

     

     

    برخی از امکانات پیاده‌سازی شده یا بروز شده در نرم‌افزار‌‌های حقوق و دستمزد و رخدادهای پرسنلی نوسا نسخه 12.10:

     

    • استفاده از ماه‌های خاص در گزارش‌های دستمزد – امکانات جدیدی شبیه به تاریخ‌های خاص که به صورت اختصاصی برای گزارش‌های دستمزد پیاده‌سازی شده‌اند.

    پیش از این (در ویرایش 12.02) با مفهوم «تاریخ‌های خاص» در گزارش‌های سیستم آشنا شدیم. دیدیم که کاربرد اصلی استفاده از این تاریخ‌ها (مثلا "اول هفته قبل)، به عنوان تاریخ ابتدا یا انتهای محدوده‌ی یک گزارش، این است که اگر پارامترهای گزارش را در این وضعیت به صورت پیش‌تنظیم در سیستم ذخیره کنیم، در آینده و در هر بار استفاده از آن پیش‌تنظیم، تاریخ نهایی برحسب تاریخ روز پردازش شده و به عنوان تاریخ ابتدا یا انتهای محدوده‌ی گزارش در نظر گرفته می‌شود.

     

    در گزارش‌های دستمزد، محدوده‌ی تاریخ فقط در موارد اندکی (مثلا در رخدادها) مطرح است و پیش و بیش از آن با "ماه" یا "محدوده‌ی ماه" سرکار داریم. تا پیش از این ویرایش، ترتیبی داده بودیم که "ماه"ها به عنوان پیش‌تنظیم در سیستم ذخیره نشوند – اگر جز این بود، در هر بار استفاده از پیش‌تنظیم، گزارش عملا از همان ماهی که در زمان پیش‌تنظیم در پارامترهای گزارش تعیین شده بود اخذ می‌شد که جالب نبود. در ویرایش 12.10، مفهومی مشابه، تحت عنوان "ماه‌های خاص" را به صورت اختصاصی برای گزارش‌های دستمزد توسعه داده‌ایم. این ماه‌های خاص به صورت گزینه‌های جدیدی در دریچه‌های انتخاب ماه ظاهر می‌شوند:

     

     

    هدف معلوم است: بتوانیم پیش‌تنظیم‌های معنی‌دار حاوی اطلاعات ماه یا محدوده‌ی ماه را برای گزارش‌های دستمزد تعریف و استفاده کنیم – به این صورت که اگر مثلا گزینه‌ی "اول 3 ماهه جاری" انتخاب شود و پارامترها به عنوان پیش‌تنظیم ذخیره شوند، در آینده با هر بار استفاده از آن پیش‌تنظیم، ماه ابتدای سه‌ماهه جاری به عنوان ماه شروع یا خاتمه‌ی محدوده‌ی گزارش لحاظ شود. طبیعتا استفاده از این امکانات جدید اختیاری است و اگر در محاوره‌های ابتدایی گزارش‌های دستمزد از گزینه‌های مربوط به ماه‌های خاص استفاده نشده باشد، کماکان، ماه عادی انتخاب شده در دریچه‌ی مربوط، در پیش‌تنظیم ذخیره نخواهد شد.

     

    از آنجا که این امکانات با توجه و تاکید بر پیش‌تنظیم آماده شده‌اند، فقط در مواردی قابل استفاده خواهند بود که امکان ذخیره‌ی پیش‌تنظیم وجود داشته باشد. از این رو در برخی از کاربردها، در حین انتخاب ماه، گزینه‌های مربوط به ماه‌های خاص مشاهده نخواهند شد – مثل همه‌ی محاوره‌های ابتدایی گزارش‌های چاپی.

     

    اطلاعات اصلی دستمزد (و سوابق و کاربرگ‌های معوقه) همگی به تفکیک ماه در سیستم مدیریت می‌شوند. به همین دلیل در اینجا کوچکترین محدوده‌ی تاریخ برای ما یک "ماه" است. بسیاری از داستان‌هایی که پیش از این در تاریخ‌های خاص داشتیم در اینجا دیگر مطرح نیستند (مثل هفته و تعداد روز). طبق تعریف، در گزارش‌های دستمزد حداکثر دو ماه شروع و خاتمه تعیین می‌شوند. طبیعتا گزارش همیشه حاوی داده‌ها، از ابتدای ماه "شروع" تا انتهای ماه "خاتمه"، خواهد بود. به این ترتیب مفاهیم "ابتدا" و "انتها"، از دریچه‌ای که ماه خاص را در آن تعیین می‌کنیم معلوم می‌شود و دیگر نیازی به گزینه‌هایی مثل "اول ماه" یا "آخر ماه" نخواهیم داشت. البته در مورد سه‌ماهه و سال کماکان به تفکیک اول و آخر نیاز داریم.

     

    به یاد داریم که تفسیر تاریخ‌های خاص همیشه با توجه به "تاریخ روز" انجام می‌شد. این وضعیت در گزارش‌های دستمزد متفاوت است – به جای تاریخ روز باید به آخرین حقوق ثبت شده توجه کنیم، که به آن "ماه جاری" خواهیم گفت. منطق این نام‌گذاری چنین بوده که به صورت معمول گزارش‌های دستمزد از آخرین حقوق ثبت شده اخذ می‌شوند و به این ترتیب ماه جاری در دستمزد همان آخرین حقوق ثبت شده است. به صورت استثنایی در گزارش کنترلی قبل از ثبت، ماه جاری، ماه بعدی حقوق است.

    در تاریخ‌های خاص، تاریخ‌های آینده هم مطرح بودند – که مثلا در سررسیدها کاربرد داشتند. در دستمزد چنین نیست و ماه‌های آتی اصولا مطرح نیستند (به جز کنترلی قبل از ثبت که در آن ماه بعدی حقوق به عنوان ماه جاری لحاظ می‌شود). به همین دلیل گزینه‌هایی مثل «ماه بعد» یا «آخر سه ماهه جاری» در بین ماه‌های خاص دیده نمی‌شود.

     

    همانطور که می‌دانیم، در سیستم مالی یکپارچه نوسا، مفهوم "سال دستمزد" متفاوت از "سال مالی" است. مفهوم سال مالی با توجه به این واقعیت پیاده‌سازی شده است که سال مالی برخی از کاربران در هماهنگی با سازمان امور مالیاتی یا بدلیل اینکه شعبه‌ای از یک تجارت بین‌المللی هستند لزوما از ابتدای فرودین آغاز نمی‌شود – می‌توانند هر تاریخ دلخواهی را به عنوان شروع سال مالی در سیستم تعیین کنند یا اصلا سال مالی آنها "میلادی" باشد. اما ممکن است همان کاربران ملاحظات دیگری را در پرداخت دستمزد درنظر داشته باشند. مثلا شعبه مالیات حقوق آنها متفاوت از شعبه مالیات بر درآمد باشد و به این ترتیب محدوده‌ی سال در ترازنامه (به صورت کلی) با محدوده‌ی سال دستمزد متفاوت باشد. یا همان کاربرانی که شعبه‌ای از یک تجارت بین‌المللی هستند مجبور باشند با ملاحظات مالیات حقوق و تامین اجتماعی، علی‌رغم داشتن سال مالی میلادی، دستمزد را در ماه‌های شمسی محاسبه و پرداخت کنند. با توجه به نکات فوق، در تعیین مشخصات یک سیستم اطلاعاتی نوسا، مستقل از تاریخ شروع سیستم اطلاعاتی (سال مالی) پارامترهای زیر برای دستمزد تعیین می‌شوند:

     

     

    تاثیر این مفاهیم در تفکیک برخی از گزینه‌های ماه‌های خاص مشاهده می‌شود: گزینه‌های سه ماهه دستمزد و سال دستمزد (مثلا به جای سال مالی). در ادامه به توضیح گزینه‌ها می‌پردازیم:

    • ماه قبل
    • ماه جاری
    • اول 3ماهه قبل
    • آخر 3ماهه قبل
    • اول 3ماهه جاری
    • اول 3ماهه "دستمزد" قبل
    • آخر 3ماهه "دستمزد" قبل
    • اول 3ماهه "دستمزد" جاری
    • اول سال قبل
    • اول سال بعد
    • اول سال جاری
    • اول سال "دستمزد" قبل
    • آخر سال "دستمزد" قبل
    • اول سال "دستمزد" جاری

    ماه جاری و قبل با توضیحاتی که قبلا دادیم مشخص هستند. نیز همانطور که اشاره کردیم، هیچ گزینه‌ای مربوط به "آینده" مشاهده نمی‌شود (ماه بعد یا آخر 3ماهه یا سال جاری). گزینه‌های متفاوتی برای 3ماهه و 3ماهه "دستمزد" و همچنین سال و سال "دستمزد" مشاهده می‌شوند که نیاز به توضیح دارند: گزینه‌های 3ماهه و سال همیشه مربوط به تفکیک سال شمسی یا میلادی هستند (کل سال 1402 یا 2023، فروردین تا خرداد، تیر تا شهریور... یا ژانویه تا مارس، آوریل تا ژوئن...). 3ماهه و سال "دستمزد" به دوره‌ی پرداخت دستمزد در سیستم توجه دارند. مثلا در سیستمی که در آن، طبق مثال فوق، دوره‌ی پرداخت دستمزد، شهریور تا مرداد باشد، 3ماهه‌های دستمزد به صورت شهریور تا آبان، آذر تا بهمن، اسفند تا اردیبهشت و خرداد تا مرداد شناسایی می‌شوند – یعنی هر 3 ماه پرداخت دستمزد با شروع از اولین ماه سیستم دستمزد. سال دستمزد نیز در این سیستم شهریور 1402 تا مرداد 1403 خواهد بود.

     

    در تاریخ‌های خاص، گزینه‌های "فصل" هم داشتیم. به یاد داریم که این گزینه‌ها در سیستم‌هایی که سال مالی شمسی داشته باشند هیچ تفاوتی با گزینه‌های 3ماهه ندارند. اما در سیستم‌های میلادی همیشه محدوده‌های فصل با توجه به معادل شمسی تاریخ‌ها محاسبه می‌شوند. در اینجا هم اگر فصل داشتیم، در سیستم‌های دستمزدی که براساس ماه‌های شمسی باشند، تفاوتی بین فصل و 3ماهه وجود نداشت. در سیستم‌هایی که دستمزد آنها بر اساس ماه‌های میلادی پرداخت می‌شوند اصولا نمی‌توانیم فصل را پیاده‌سازی کنیم – چرا که در آن‌صورت، تاریخی در میانه‌ی ماه میلادی می‌داشتیم که طبیعتا در سیستم دستمزد به عنوان شروع یا خاتمه‌ی محدوده قابل قبول نیست.

     

    آخرین نکته اینکه هر یک از این گزینه‌ها فقط به شرطی بازنمایی و پردازش می‌شوند که ماه متناظر با آنها در سیستم دستمزد موجود باشد. مثلا اگر در اولین سال پرداخت دستمزد باشیم، طبیعتا گزینه‌های مربوط به سال قبل دیگر قابل استفاده نخواهند بود.

     

    • در جستجوی فیلدهای مشخصات پایه پرسنلی در کاربرگ رخدادهای دستمزد، از این پس، فیلدهای قابل تعریف نیز در محاوره‌ی انتخاب فیلد بازنمایی خواهند شد.

     

     

     

    برخی  تغییرات و اشکالات رفع شده در نسخه 12.02 نرم‌افزار مالی یکپارچه نوسا به تفکیک نرم‌افزار زیر مجموعه:

     

    • عمومی: استفاده از فیلدهای تصویر در گزارش‌های محوری با خطا مواجه می‌شد. این خطا رفع گردید.
    • عمومی: تعریف یادداشت سند در فرم گزارش "تفکیک اسناد به اجزاء" منجر به خطا می‌شد، این رفتار اصلاح گردید.
    • عمومی: یکی از روش‌های ساده برای افزودن رخدادهای مالی به سندها، Drag & Drop است. استفاده از این روش به خصوص برای تنظیم طرف‌حساب‌های رخدادهایی که مثلا از سیستم هزینه ناشی شده باشند سودمند است. در برخی از شرایط استفاده از این ابزار در سند حسابداری یا دریافت و پرداختی که از برگه(های) هزینه ناشی شده باشد با خطا مواجه می‌شد.
    • عمومی: در ویرایش تصویر (ابزاری که در فیلدهای حاوی تصویر، با Right Click برروی فیلد قابل استفاده است)، همیشه یکی از دغدغه‌ها، کاهش اندازه‌ی تصویر (برحسب KB) است. یکی از روش‌هایی که برای کاهش اندازه‌ی تصویر در اختیار قرار دارد تغییر (کاهش) کیفیت فایل JPEG است. با اینکار، اندازه‌ی تصویر گزارش‌شده در محیط ویرایش تصویر کم می‌شد اما این کاهش در خود فیلد منعکس نمی‌شد. در محیط ویرایش تصویر، ذخیره‌ی تصویر ویرایش شده در فایل نیز امکان‌پذیر است. کاهش اندازه‌ی تصویر منجر به کاهش اندازه‌ی فایل مزبور نیز نمی‌شد.
    • عمومی: در محاوره‌ی چاپ برگه‌ها و گزارش‌ها، در صفحه‌ی تنظیمات، امکان دسترسی به ویژگی‌های اختصاصی چاپگر با تکمه‌ای به همین نام فراهم شده است. یکی از ویژگی‌هایی که بسیاری از چاپگرها در اختیار قرار می‌دهند امکان چاپ در دوسمت کاغذ است که معمولا با دریچه‌ای با عنوان "Print on both sides" قابل تنظیم است. این دریچه شامل گزینه‌هایی مثلا با نام‌های «No / Yes, flip over / Yes, flip up» است. شکل‌های زیر تفاوت دو روش flip را نشان می‌دهند:

    در برخی از چاپگرها حالت Flip Over توسط سیستم به درستی پردازش نمی‌شد (همیشه Flip Up بود)، این رفتار اصلاح گردید. 

    • عمومی: سناریوی یچیده وجود داشت که در آن یک کاربر از گروه administrators در سیستم تعریف شده و برای وی تعدادی تکمه‌ی میان‌بر تعریف می‌گردید. به دلیلی، این کاربر از فهرست کاربران سرور (یا domain) حذف می‌شد. از آنجا که این کاربر همچنان عضو گروه administrators است کماکان می‌تواند به سیستم وارد شود ولی امکان درج سند و برگه را نخواهد داشت – چون به عنوان کاربر مستقل در سیستم تعریف نشده است. طبیعتا در این شرایط تکمه‌های میان‌بر خود را نیز در سیستم نخواهد دید. برای رفع مشکل اقدام می‌کند: فهرست کاربران سیستم را احضار می‌کند و دوباره کاربر Windows مناسب را به سطر مربوط به خود نسبت می‌دهد و از این به بعد به عنوان یک کاربر مستقل در سیستم شناسایی می‌شود. اشکال اینجا است که اگر در این شرایط اقدام به ویرایش تکمه‌های میان‌بر نماید و از برنامه خارج شود، هرگز نمی‌تواند تکمه‌های میان‌بر قبلی خود را در سیستم مشاهده نماید – چون وضعیت جدید تکمه‌های میان‌بر جایگزین تکمه‌های قبلی می‌گردد. برای رفع این مشکل ترتیبی دادیم که به محض اصلاح کاربر، تکمه‌های میان‌بر ابتدایی کاربر قبلی (که الآن از Windows حذف شده است) به عنوان تکمه‌های میان‌بر این کاربر Windows جدید لحاظ شوند. به این ترتیب با اصلاح تکمه‌های میان‌بر مشکلی پیش نخواهد آمد.
    • دریافت و پرداخت: در کلاینت‌هایی که از روش SOAP برای اتصال به سرور استفاده می‌کنند، در آزمایش صحت یک فایل صادره‌ی حاوی مدارک دریافت و پرداخت بدون دسته چک با خطایی به صورت "1234.56 به عنوان عدد اعشاری قابل قبول نیست" مواجه می‌شدیم.
    • انبار: در گزارش گردش و موجودی کالاها (و کالاهای یک مجموعه)، در محاسبات مربوط به مقادیر درخواست و رزرو، پارامترهای مربوط به "بچ" لحاظ نشده بودند (پارامترهای مزبور در محاوره ابتدایی، در صفحه رخدادها به صورت «دارای بچ / فاقد بچ / محدوده‌ی کد بچ» تنظیم می‌شوند).
    • انبار: در گزارش فهرست رخدادهای انبار (و گزارش‌های مشابه)، نام فیلد "نقل شده از: شناسه‌ی کالا" به اشتباه (و تکراری با یک فیلد موجود از قبل) به صورت "نقل شده: از شماره فنی" تعریف شده بود.
    • فروش: در روش‌های پرداخت، مقدار پیش‌فرض فیلد "درصد نسیه در پرداخت" قابل تعیین است. از طرف دیگر در تنظیمات سیستم (تمام کاربران یا کاربر فعلی) می‌توان روش (نحوه‌ی) پرداخت پیش‌فرض در فاکتورهای فروش را تعیین کرد. مقدار پیش‌فرض "درصد نسیه"ای که در روش پرداخت پیش‌فرض تعیین شده باشد، در فاکتورهای جدید، در فیلد "درصد نسیه در پرداخت" درج نمی‌شد.
    • دستمزد: در گزارش کنترلی قبل از ثبت، وضعیت خاصی برای گزارش‌های فرعی فیش حقوق، رکورد کامل اطلاعات اصلی حقوق و رکورد کامل مشخصات پایه وجود دارد: اگر در گزارش کنترلی قبل از ثبت دو نسخه از گزارش‌های فرعی پیش‌گفته برای دو پرسنل متفاوت احضار شده باشد و در ادامه گزارش فرعی اول فعال شود و فرمان چاپ صادر گردد، فیلدهای اصلی حقوق و اطلاعات تجمعی مشخصات پایه‌ی گزارش فرعی دوم به اشتباه چاپ می‌شد.

     

     

     

    -- پایان

    گروه توسعه سیستم‌های مالی نوسا

    شما مجاز به پاسخ به اين پست نمي باشيد.