سلام
یکی از امکاناتی که عموما در برگههای سیستم پیاده میکنیم، اصلاح یکباره
سطرها است. در این فرآیند کاربر ابتدا سطرهای مورد نظر خود را با انتخاب
همزمان تعدادی سطر مشخص میکند و سپس فرمان اصلاح یکباره را صادر میکند.
عموما یک فیلد یا تعدادی از فیلدها که بستگی زیادی به یکدیگر دارند در این
عملیات اصلاح میشوند. با صدور فرمان مربوط، یک محاوره بازنمایی میشود.
این محاوره از یک دریچه (گزینههای کرکرهای) برای تعیین اینکه چه فیلد (یا
فیلدهایی) باید اصلاح شوند و مقدار و تنظیمات جدید آنها تشکیل میشود.
مقدمه
برگههای
سیستم فروش در دو گروه کلی قرار میگیرند: یک سری برگههایی که آغاز کننده
فرآیند فروشاند ولی تاثیری در موجودی کالاها و گردش عملیات حسابها و
تفصیلیها ندارند. اینها شامل پیشفاکتورها، قراردادها و قراردادهای
الحااقیاند. پیشفاکتور و قرارداد کاملا شبیه به هماند. قرارداد الحاقی
یک قرارداد است که به صورت مستقل مطرح نیست و به یک قرارداد که از قبل وجود
داشته است الحاق میشود (مقادیر و مبالغ سطرهای قرارداد اولیه را تغییر
میدهد یا سطرهایی به آن اضافه میکند).
در مقابل، برگههای فروش
شامل فاکتور فروش و صورتحساب برگشت از فروش را داریم. هر یک از این
برگهها یک "سند" فروش هم دارند. کالاها و خدماتی که در این برگهها درج
میشوند، عملا به رخدادهای انبار و رخدادهای انجام خدمات مربوط میشوند.
چنین است که کالایی از انبار خارج شده (در یک رخداد انبار) یا خدمتی انجام
شده (در یک رخداد انجام خدمات) و در برگههای فروش ما با درآمدی که قرار
است از آن کسب کنیم کار داریم. به این ترتیب بر خلاف گروه اول که صرفا
پیشنهاد یا قرارداد اند و اتفاق فیزیکی در آنها مستند نشده است، در
برگههای فروش هم با خروج فیزیکی کالا یا انجام خدمت سروکار داریم و هم
باید حساب و کتاب مربوط به میزان درآمد کسب شده و بدهی مشتری بابت فروش را
پیگیری نماییم.
برگههای سیستم فروش دارای انواع مختلفی از
سطرهااند. ساختار تقریبا مشابهی در بین انواع برگهها وجود دارد. همه
برگهها دارای سطرهای اصلی و جنبیاند. فاکتور و صورتحساب برگشت، دارای
سطرهای کسور و اضافات، سطرهای پورسانت و سطرهای مربوط به طرف حسابها اند.
پیشفاکتور و قرارداد دارای سطرهای کسور و اضافات اند. قراردادهای الحاقی،
علاوه بر آن سطرهای تعدیل نیز دارند. در سطرهای تعدیل، یک سطر اصلی یا جنبی
از قرارداد مرجع اختیار میشود و تغییراتی در مقدار و بهای آن داده
میشود.
در اینجا ما فقط با سطرهای اصلی و جنبی سروکار داریم. اینها
سطرهایی از برگهاند که کالاها و خدمات به همراه مقدار در آنها درج
میشود. سطرهای اصلی، بها هم دارند – یعنی موارد کسب درآمد را مشخص
میکنند. سطرهای جنبی بها ندارند. کالاها و خدماتی که بدون درآمد در یک
فرآیند فروش مصرف شده یا به عنوان هدیه، گارانتی و مانند آنها لحاظ شدهاند
در سطرهای جنبی درج میشوند.
انواع فیلدهای قابل اصلاح یکباره
به طور کلی فیلدهای زیر را میتوانیم به صورت یکباره اصلاح کنیم. در هر مورد نکاتی وجود دارد که ذکر میکنیم:
کالا یا خدمت: سطرهای
اصلی و جنبی پیشفاکتورها (و برگههای مشابه) دارای کالا یا خدمت (و
مقدار) مستقلاند – در مقابل سطرهای اصلی و جنبی برگههای فروش (فاکتور و
برگشت) از خودشان کالا و خدمت ندارند، بلکه هر سطر دارای یک مرجع (رخداد
خروج انبار یا رخداد انجام خدمات) است که کالا یا خدمت (و مقدار) در آن
رخداد تعیین شده است. البته یک سری امکانات تنظیم خودکار رخدادهای مرجع در
فاکتور پیاده شده است. با این امکانات کاربر میتواند به صورت مستقیم کالا و
مقدار را به عنوان اطلاعات سطر وارد کند و سیستم همزمان با ذخیره فاکتور،
برگهها و رخدادهای انبار یا انجام خدمت لازم را در سیستم ثبت میکند. به
عبارت دیگر در فاکتور فروش میتوانیم سطرهای اصلی یا جنبی داشته باشیم که
فاقد رخدادهای مرجع باشند. طبیعی است که برای آن سطرها کالا یا خدمت (و
مقدار) به عنوان بخشی از اطلاعات وارد شده توسط کاربر قابل تصور است و به
همین دلیل قابل اصلاح یکباره نیز خواهند بود.
سطرهای اصلی و جنبی،
به جز مرجع تحویل، دو مرجع دیگر هم دارند: پیشفاکتور و درخواست. واضح است
که اگر مرجع پیشفاکتور یا درخواست هم در سطر وجود داشته باشد، دیگر
نخواهیم توانست کالا را اصلاح کنیم. یعنی اصلاح یکباره میسر نخواهد بود.
اگر سطرهای اصلی . جنبی کالا و انبار داشته باشند لازم است تا ارتباط کالا
با انبار هم بررسی شود.
مشخصات کالا: این فیلد به صورت یک متن ساده قابل اصلاح است.
مقدار: شبیه
کالا یا خدمت در صورتی که مرجع تحویل داشته باشیم قابل اصلاح نخواهد بود.
البته وجود مرجع پیشفاکتور و درخواست از اصلاح مقدار ممانعت نخواهد کرد
(ممکن است مقدار ما با پیشفاکتور و درخواست متفاوت باشد).
کالای مرکب: یکی
از کالاهای مرکب درج شده در سطرهای برگه در محاوره انتخاب میشود و به
سطرهای انتخاب شده نسبت داده میشود. هر کالای مرکب دارای یک کالای اصلی
است. اصلاح سطرهای مربوط به کالای اصلی یک کالای مرکب و نسبت دادن آنها به
یک کالای مرکب دیگر میسر نخواهد بود (یعنی سطرهای حاوی کالای اصلی یک کالای
مرکب با این شیوه قابل اصلاح نخواهند بود).
بها: سطرهای
جنبی بها ندارند اما بها مهمترین فیلد در سطرهای اصلی است. به همین دلیل
تنظیمات بسیار مفصل و تفریبا پیچیدهای هم دارد. مهمترین کاربردی که
کاربران از اصلاح یکباره سطرها انتظار دارند، اصلاح بهای موجود در سطرها
است. یکی از بخشهای آتی را کاملا به این فیلد اختصاصی دادهایم.
روش پرداخت: یک فیلد بسیار ساده و سرراست در سطرهای اصلی است. به سادگی اصلاح میشود و نکته خاصی هم ندارد.
انبار: در
پیشفاکتور و قرارداد وجود ندارد (در آنها مهم نیست که کالا از چه انباری
تامین گردد). در سطرهای اصلی و جنبی برگههای فروش (فاکتور و برگشت) برای
سطرهایی که مرجع تحویل نداشته باشند و حاوی کالا باشند (حاوی خدمت نباشند)
قابل اصلاح خواهد بود. ارتباط کالا و انبار شبیه قبل باید در اجرا بررسی
شود.
بچ: در سطرهای اصلی و جنبی فاکتور که مرجع تحویل نداشته
باشد و حاوی کالا باشد (حاوی خدمت نباشد) قابل اصلاح است. نکته مهم در
اینجا بچپذیر بودن کالا است. بچ فقط در کالاهایی که بچپذیر باشند اصلاح
خواهد شد.
انجامدهنده خدمت: در پیشفاکتور و قرارداد مطرح
نیست، در سطرهای اصلی و جنبی فاکتور که مرجع تحویل نداشته باشد قابل اصلاح
است (یادآوری میکنم که اگر مرجع تحویل داشته باشیم، این مرجع یک رخداد
انجام خدمات است که انجام دهنده در آن از قبل تعیین شده است). واضح است که
فقط برای سطرهای حاوی خدمت قابل انجام است.
ملاحظات و ملاحظات دیگر (لاتین): اینها فیلدهای ساده متنی اند که با گرفتن متن جدید در محاوره اصلاح میشوند.
شرح عملیات: این
فیلد در واقع مربوط به سطر سند مالی فروش است. به همین دلیل برخلاف
ملاحظات که همیشه وجود دارد، شرح عملیات فقط در سطرهای اصلی فاکتور و برگشت
مطرح است. دو روش برای اصلاح یکباره شرح عملیات خواهیم داشت: یکی اینکه
کاربر یک عبارت ثابت را به صورت مستقیم برای درج در شرح عملیات سطرهای
انتخاب شده تعیین نماید و دیگر اینکه فرمان استفاده از قوانین شرح را صادر
کند. قوانین شرح برای رخدادهای اصلی فروش به صورت مستقل تعریف میشوند.
وضعیت: سطرهای
پیشفاکتور و قرارداد دارای وضعیتاند. حالتهای جاری، خاتمه یافته و لغو
شده را داریم. سطرها عموما حالت جاری دارند. مقادیری که در سطرها درج شده
است به یکباره یا به صورت تدریجی درخواست میشوند. سطرهایی که مقدار
ابتدایی آنها از جمع مقادیر درخواستهایی که با آن مرجع تنظیم شدهاند
بیشتر باشد نیاز به پیگیری دارند. مثلا 100 واحد پیشفاکتور شده است و به
تدریج 80 واحد از آن درخواست شده است. 20 واحد دیگر از این سطر پیشفاکتور
نیاز به پیگیری دارد.
حال وضعیتی را تصور نمایید که مشتری اعلام
نماید که همین 80 واحد برای وی کافی است و دیگر نمیخواهد 20 واحد مانده را
خریداری کند. در این شرایط میتوانیم وضعیت سطر را خاتمهیافته کنیم –
یعنی اگرچه سطر، مانده درخواست نشده دارد اما دیگر نیاز به پیگیری ندارد.
وضعیت لغو شده هم که واضح است – مربوط به سطرهایی از پیشفاکتور یا قرارداد
است که اصلا درخواست نشدهاند و نمیخواهیم در آینده هم درخواست شوند.
تایید شده: سطرهای
پیشفاکتور و قرارداد نیاز به تایید دارند. هر سطر دارای یک فیلد به همین
نام است. اگر کاربری که مشغول تنظیم پیشفاکتور یا قرارداد است، خودش
اختیار تایید را هم داشته باشد، میتواند یکباره سطر را به صورت تایید شده
تنظیم نماید. وگرنه شخص دیگری باید در آینده سطر را تایید کند. یک امکان
برای تایید یکباره سطرها (یا خارج کردن آنها از وضعیت تایید) پیاده شده
است.
اصلاح یکباره بها
بها در سیستم فروش تا حدی
مفصل است: مطابق استانداردی که وزارت امور اقتصادی و دارایی تعریف کرده
است، بهای سطر از اجزایی تشکیل شده است. بهای کالا یا خدمت فروخته شده؛
تخفیف؛ عوارض قانونی؛ مالیات بر ارزش افزوده. دلیل این تقسیمبندی این است
که میخواستهاند عوارض و مالیات هر سطر را جداگانه محاسبه نمایند (برخی از
کالاها و خدمات مشمول عوارض و مالیات نیستند، برخی مثل دخانیات عوارض و
مالیات بیشتری دارند). به همین دلیل مجبور کردهاند که تخفیف هر قلم از
کالاها جداگانه لحاظ شود (ما به آن تخفیف مستقیم میگوییم) و عوارض و
مالیات با نرخهایی که در هر سال تعیین میشوند روی بهای پس از کسر تخفیف
محاسبه شود (ما به آنها مالیات بر ارزش افزودن و عوارض قانونی میگوییم).
3
مبداء برای تعیین بهای یک سطر و اجزاء آن داریم: 1/ تعرفه (و قوانین تغییر
تعرفه) 2/ تعیین به صورت دستی (یعنی کاربر بها و اجزاء آنرا به دلخواه و
بدون استناد به تعرفه وارد میکند) 3/ همبها با مرجع (اگر سطر دارای مرجع
پیشفاکتور یا قرارداد باشد بها و جزییات آن از مرجع میآید).
تعرفهها
و قوانین تغییر آنها ابزارهای اصلی محاسبه بهای فروشاند. در سادهترین
حالت تعدادی فهرست بها با شرایط مختلف داریم که سطر ما در یک یا چندتا از
آنها صدق میکند. به هر یک از این فهرستهای بها به همراه شرایط آنها یک
تعرفه میگوییم. به پارامترهای تشکیل دهنده شرایط تعرفه امتیاز میدهیم و
به این ترتیب تعرفههای منطبق با سطر ما در یک فهرست مرتب شده قرار
میگیرند، به صورتی که سطرهای ابتدایی امتیاز بیشتری دارند و یعنی برای
انتخاب مناسبتراند. در تعیین تعرفه به صورت دستی (با محاوره تعرفه) همین
فهرست مرتب شده را به کاربر نشان میدهیم و یکی از آنها انتخاب میشود. در
مواردی که خودمان به صورت خودکار تعرفه را تعیین میکنیم، همیشه اولین
تعرفه (که دارای بیشتری امتیاز است) اختیار خواهد شد.
قوانین تغییر
تعرفه هم فرمولهاییاند که روی حاصل بدست آمده از تعرفه، با شرایط خاصی
تغییراتی ایجاد میکنند. این تغییرات 5 حالت دارند: منجر به افزایش بها
میشوند / منجر به کاهش بها میشوند / تخفیف مستقیم را تعیین میکنند /
عوارض قانونی را تعیین میکنند / مالیات بر ارزش افزوده را تعیین میکنند.
عموما حداقل دو قانون تغییر تعرفه ساده خواهیم داشت که یکی از آنها درصدی
از بها را به عنوان عوارض محاسبه میکند و دیگری درصدی از بها را به عنوان
مالیات درج میکند.
در حالت دستی، کاربر به دلخواه میتواند بهای
سطر، تخفیف، عوارض و مالیات را تعیین کند. در حالت همبها با مرجع، این 4
فیلد با ضرب و تقسیم مبالغ درج شده در مرجع به نسبت مقدار سطر و مقدار مرجع
بدست خواهند آمد.
در هر 3 مبداء تعیین بها، ممکن است بهای واحد یا
بهای کل بدست آید. در بسیاری از کاربردها محاسبه بهای سطر با یک بهای واحد
میسر نیست. مثلا هزینه چاپ تا 1000 نسخه مبلغ مشخصی است (مستقل از اینکه
100 نسخه یا 500 یا 1000 نسخه چاپ شود). این وضعیت ممکن است در تعرفه یا
قوانین تغییر تعرفه تعریف شده باشد. به جز این در حالت دستی هم ممکن است که
درخواست کاربر تعیین بهای کل (به جای بهای واحد) باشد. در همبها با مرجع
هم هر روشی که در مرجع مشخص شده باشد در سطر ما هم بکار خواهد رفت. پس در
حالت تعیین دستی یک روش تعیین بها داریم: بهای واحد یا بهای کل.
اگر
بها به صورت کل تعیین شده باشد، میتوانیم کماکان یک بهای واحد فرضی را
برای سطر محاسبه نماییم. البته بهای واحدی که به این صورت بدست آمده باشد
دقیق نیست و ممکن است حاصلضرب بهای واحد در مقدار، بهای کل ابتدایی را
نتیجه ننماید.
مستقل از اینکه بهای سطر با بهای واحد یا بهای کل محاسبه
شده باشد، میتوانیم از سیستم بخواهیم که بهای واحد را در فرم نهایی برگه
بازنمایی کند یا آنرا مخفی نماید. این هم یک فیلد صریح در هر سطر اصلی
برگههای سیستم فروش است. در مجموع، برای کار با بهای سطرهای اصلی با
فیلدهای زیر کار خواهیم داشت:
• مبداء (تعرفه، دستی، همبها)
• روش (واحد، کل)
• مخفی کردن بهای واحد
• بهای واحد (اگر وارد شده باشد)
• بهای سطر
• تخفیف مستقیم
• عوارض قانونی
• مالیات بر ارزش افزوده
اگر
مبداء تعیین بها دستی باشد، همه سایر فیلدها را کاربر میتواند به دلخواه
تعیین کند. اما در سایر مبداءها عمده فیلدها را سیستم تعیین میکند و در
اختیار کاربر نیست. در این شرایط کاربر فقط میتواند "مخفی کردن بهای واحد"
را تعیین کند.
بیشترین درخواست در مورد اصلاح یکباره سطرها این است
که در سطرهایی که از قبل درج شدهاند، به یکباره مبداء آنها تغییر کند یا
اگر به صورت دستی تعیین شدهاند به یکباره عوارض و مالیات آنها محاسبه
گردد.
در حالت کلی ما باید فرض کنیم که برخی یا تمامی فیلدهای
پیشگفته توسط کاربر به صورت یکباره اصلاح میشوند. برای اینکه بتوانیم فقط
برخی از موارد را اصلاح کنیم، لازم است تا در مورد هر فیلد، یک گزینه
"بدون تغییر" داشته باشیم – مثلا بگوییم بهای سطر بدون تغییر باشد ولی
مالیات و عوارض آن به صورتی که تعیین میکنیم اصلاح شوند. محاوره اصلاح
یکباره سطرها برای بها دارای اجزاء زیر است:
o مبداء: بدون تغییر، دستی، تعرفه، همبها
o روش تعیین بها: بدون تغییر، بهای واحد، بهای کل
o بازنمایی بهای واحد: بدون تغییر، انجام شود، انجام نشود
o بها: بدون تغییر، بهای واحد ثابت، درصد افزایش، درصد کاهش
o تخفیف مستقیم: بدون تغییر، درصدی از بهای سطر، مقدار ثابت
o عوارض قانونی (شبیه تخفیف مستقیم)
o مالیات بر ارزش افزوده (شبیه تخفیف مستقیم)
o محاسبه تخفیف، عوارض و مالیات با قوانین تغییر تعرفه – به صورت یک گزینه صریح و مستقل
همانطور
که دیده میشود اصلاح یکباره بها مفصل است! مبداء، روش و بازنمایی بهای
واحد دقیقا همانند فیلدهایی که پیش از این توضیح دادیم اند با این تفاوت
که هر یک، یک حالت بدون تغییر هم دارند. در صورتی که مبداء بها تعرفه یا هم
بها باشد، هیچیک از سایر موارد (به جز بازنمایی بهای واحد) مطرح نیستند –
یعنی در محاوره غیرفعال خواهند شد. همانطور که گفتیم سایر فیلدها یا از
تعرفه یا از مرجع بدست خواهند آمد.
اگر مبداء بها دستی یا بدون
تغییر باشد سایر موارد را مورد توجه قرار خواهیم داد. البته در مورد مبداء
بدون تغییر، همه دریچهها در محاوره فعال خواهند بود ، اما در اجرا توجه
میکنیم به اینکه این "بدون تغییر ماندن" در نهایت به چه مبداء بهایی ختم
میشود. اگر سطری که مبداء آن قرار است بدون تغییر بماند، دستی نباشد
کماکان به سایر تنظیمات توجهی نخواهیم کرد (البته به جز بازنمایی بهای
واحد).
در صورتی که بنا باشد بها به صورت صریح (دستی) تعیین شود،
همیشه از بهای واحد ثابت استفاده خواهیم کرد (حتی اگر روش تعیین بها، کل
باشد). چرا که وقتی تعدادی سطر را با هم انتخاب کردهایم، قاعدتا نخواهیم
توانست یک بهای کل ثابت را به همه آنها نسبت دهیم. درصدهای افزایش و کاهش
هم که مشخصاند.
تعیین تخفیف، عوارض و مالیات به دو صورت قابل انجام
است: درصدی از بهای سطر و مقدار ثابت. توجه کنید که کارکرد درصد در اینجا
متفاوت از درصدهای افزایش و کاهش در بهای سطر است.
یک دریچه قابل
انتخاب صریح در انتهای محاوره برای محاسبه تخفیف، عوارض و مالیات با قوانین
تغییر تعرفه داریم. در صورت استفاده از این امکان، دریچههای مربوط به
اصلاح این 3 فیلد غیرفعال خواهند شد. در صورتی که سطرهای انتخاب شده دارای
بهای "دستی" باشند، قوانین تغییر تعرفهی پیشفرض بر آنها اعمال میشود و
فیلدهای تخفیف، عوارض و مالیات با استفاده از آنها محاسبه خواهند شد. یعنی
میتوانیم بهای سطر را به صورت دستی تعیین کنیم (از قبل یا در همین محاوره)
و سپس مبالغ مالیات بر ارزش افزوده و عوارض را با همان قوانین تغییر تعرفه
محاسبه کنیم. این گزینه، احتمالا پرکاربردترین گزینه در اصلاح یکباره
سطرهای سیستم فروش خواهد بود.