امکانات جدید ارائه شده در نسخه 14.02 ابزار سامانه مودیان: استعلام و بروزرسانی خودکار آخرین وضعیت صورتحسابها بر مبنای داده موجود در کارپوشه سامانه
این امکان به تازگی در نسخهی دوم API سامانهی مودیان (V2) توسط سازمان امور مالیاتی در اختیار قرار گرفته است و ما نیز امکان استفاده از آن را برای کاربرانی که از نسخه V2 ساختار API (توکن) استفاده میکنند، فراهم کردهایم. البته هنوز چند نکته وجود دارد که نحوه استفادهی ما از این امکانات را به صورت وسیعی تحت تاثیر قرار میدهد: نکتهی اول اینکه این امکان برای نسخهی اول سامانه (V1) توسط سازمان فراهم نشده است. بیشتر کاربران نوسا هنوز از نسخهی اول API استفاده میکنند. این همان نسخهای است که بدون نیاز به تشریفات دردسرساز و پرهزینه و زمانبر گواهی امضا امکان ارسال صورتحسابها به سامانه را فراهم میکند و کاملا منطقی است که تا زمانی که V1 عملیاتی باشد کماکان مورد استفادهی کاربران قرار بگیرد.
نکتهی دوم این است که معمولا تغییر وضعیتها در سامانهی مودیان با تاخیر قابل ملاحظه (حتی در حد چند دقیقه) همراه است. پیش از این در استعلام صورتحسابهای ارسالی با این پدیده مواجه بودهایم؛ صورتحسابی که ارسال و ثبت شده و حتی در کارپوشه نمایش داده میشود در پاسخ به استعلام IN_PROGRESS اعلام میشود. همچنین به کرات دیده شده که صورتحسابهای ارسالی، با اینکه در کارپوشهی فروشنده بازنمایی میشوند اما با تاخیر در کارپوشهی خریدار منعکس میگردند.
قابل انتظار است که همین پدیده در استعلام وضعیت در کارپوشه هم مشاهده شود. یعنی وضعیت جدید صورتحساب با تاخیر به ما اطلاع داده شود. در طول مدت این تاخیر (که زمان آن برای ما ناشناخته است) وضعیت قبلی صورتحساب گزارش خواهد شد. حال تصور بفرمایید که مثلا در حال ابطال یک صورتحساب اصلاحی باشیم. میدانیم که اگر این صورتحساب اصلاحی توسط خریدار یا سیستم تایید شده باشد (یا اگر "عدم نیاز به واکنش" باشد)، ابطال صورتحساب اصلاحی به معنی ابطال کل فروش خواهد بود – چون تایید صورتحساب اصلاحی منجر به ابطال صورتحساب مرجع (فاکتور فروش اصلی) خواهد شد. حال چه میشود اگر خریدار صورتحساب اصلاحی را تایید کرده باشد و این تایید با تاخیر به ما گزارش شود – یعنی در پاسخ استعلام وضعیت صورتحساب اصلاحی در کارپوشه، "در انتظار واکنش" به ما گزارش خواهد شد و ما هم فرض میکنیم که مشغول ابطال صورتحساب اصلاحی هستیم در صورتی که در واقعیت، صورتحساب اصلاحی تایید شده است و ما مشغول ابطال کل فروش هستیم!
توجه به این نکات باعث شدهاند که ما در اکثر کاربردها نتوانیم مستقیما روی آنچه از سامانه گزارش میشود به صورت سیستماتیک اتکا کنیم؛ ممکن است اصلا امکان استعلام برای کاربر وجود نداشته باشد یا اینکه استعلام، وضعیت چند دقیقه پیش را گزارش نماید. در نتیجه کماکان با پیغامهای مفصل و ترسناک در عملیاتی که ما آنها را خطرناک تشخیص دادهایم مواجه خواهیم بود و کماکان از کاربران میخواهیم که به این پیغامها توجه کنند. این موارد شامل ابطال صورتحسابهای اصلاحی و برگشتی و نیز ابطال یا حذف فیزیکی فاکتورهای فروش ابطال شده در سامانه هستند.
در نسخهی 1302 نوسا، با توجه به اهمیت وضعیت تایید صورتحساب و صورتحساب اصلاحی در عملیات پیشگفته دو فیلد با عنوانهای وضعیت تایید صورتحساب و وضعیت تایید صورتحساب اصلاحی در برگههای فروش (فاکتور فروش و صورتحساب برگشت از فروش) تعبیه کرده بودیم که باید توسط کاربر مقداردهی میشدند. همان فیلدها در ویرایش 1402 به فیلدهای "وضعیت صورتحساب در کارپوشه سامانه" و "وضعیت صورتحساب اصلاحی در کارپوشهی سامانه" تغییر نام داده شدند و محتویات آنها مطابق مستندات جدید سامانه بروزرسانی شدند. تعیین دستی وضعیت برای کاربرانی که از V2 استفاده نمیکنند کماکان در سیستم باقی گذاشته شده است. وضعیتهای بروزرسانی شده در محاورهی زیر ملاحظه میشوند:

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

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

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

توجه کنید که:
1) این محاوره صرفا برای استعلام وضعیت صورتحساب «ابطالی» در کارپوشه بازنمایی میشود. این عمل به صورت اختصاصی برای این کاربرد طراحی شده است و برخلاف موارد مشابه قبلی از منوی عملیات با سامانه قابل انجام نیست.
2) اگر خطایی در استعلام پیش نیاید محاوره بسته خواهد شد. در واقع این گونهای از عملیات با سامانه است که کاربر آن خود سیستم است.
3) عملیات فقط در صورتی ادامه مییابد که وضعیت صورتحساب ابطالی در سامانه از انواع شبه تایید شده و وضعیت صورتحساب مرجع، باطل شده باشد.
در صورتی که از نسخهی V2 استفاده نمیکنید یا اگر به هر دلیل دیگری به پرسش ابتدایی پاسخ منفی داده باشید، با پیغام دیگری (برای یادآوری خطر و مسئولیت کاری که قصد ادامهی آن را دارید) مواجه خواهید شد:

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

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

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