پردازش سفارش
ارسال یک سفارش ووکامرس به تهحساب، یک فرایند چندمرحلهای است که تضمین میکند تمام اسناد مالی به درستی ثبت شوند.
مرحله ۱: فعالسازی
- زمان: هنگامی که وضعیت یک سفارش ووکامرس تغییر میکند (مثلاً از «در حال انجام» به «تکمیلشده»).
- شرط: افزونه بررسی میکند که آیا وضعیت جدید سفارش با وضعیتی که شما در تنظیمات ← ارسال ← وضعیت سفارش برای ارسال انتخاب کردهاید، مطابقت دارد یا خیر.
- اقدام: در صورت تطابق، افزونه سفارش را به فرایند شماره ۲ ارسال میکند.
مرحله ۲: گروهبندی و افزودن به صف
در این مرحله سفارش بلافاصله ارسال نمیشود، بلکه به «سرویس صف» تحویل داده میشود. این سرویس اقدامات زیر را انجام میدهد:
- بررسی ارز: ابتدا بررسی میکند که ارز سفارش یکی از موارد مجاز (IRR, IRT, IRHR, IRHT) باشد. در غیر این صورت، فرایند متوقف میشود.
- ایجاد کد فاکتور: یک «شناسه فاکتور» یکتای ۲۰ رقمی برای کل سفارش ایجاد کرده و آن را در سفارش ذخیره میکند.
- ایجاد سند پرداخت: اگر سفارش مبلغ کل داشته باشد، یک ردیف جداگانه در «صف ارسال» برای «سند پرداخت» ایجاد میکند.
- ایجاد سند تخفیف: اگر سفارش دارای تخفیف باشد، یک ردیف جداگانه در «صف ارسال» برای «سند تخفیف» ایجاد میکند.
- گروهبندی محصولات:
- سرویس، تمام محصولات سفارش را بر اساس
جنس فلز،نوع محصول(کارساخته، سکه، اتیکت) وزیرنوع(مانند نام سکه یا کد اتیکت) گروهبندی میکند. - مثال: اگر یک سفارش شامل ۲ سکه بهار آزادی (طلا) و ۳ انگشتر نقره (کارساخته) باشد، دو گروه محصول ایجاد میشود:
0_coin_Bahar-Azadi2_manufactured_Silver-Ring
- برای هر یک از این گروهها، یک ردیف جداگانه در «صف ارسال» ایجاد میشود.
- سرویس، تمام محصولات سفارش را بر اساس
مرحله ۳: ارسال
پس از اینکه تمام اسناد (پرداخت، تخفیف، گروههای محصول) در «صف ارسال» با وضعیت pending قرار گرفتند، فرایند ارسال آغاز
میشود که به «روش ارسال» انتخابی شما بستگی دارد:
الف) روش فوری
- افزونه بلافاصله ردیفهای ایجاد شده در صف (یکی پس از دیگری) بصورت تکتک به مرحله چهار ارسال می کند. این کار ممکن است باعث کندی در زمان ذخیره سفارش شود.
ب) روش صف
- ردیفها در صف باقی میمانند.
- یک وظیفه زمانبندی شده (Cron Job) که هر ۵ دقیقه یکبار اجرا میشود، ردیفهای
pendingرا پیدا کرده و آنها را برای مرحله چهار ارسال میکند.
مرحله ۴: اجرای ارسال
این تابع، قلب فرایند ارسال است:
- ردیف صف را روی وضعیت
processingقرار میدهد. - «کد مشتری» تهحساب را طبق فرایندی که در راهنمای «همگامسازی مشتری» توضیح داده شد، دریافت (یا ایجاد) میکند.
- بر اساس
group_keyردیف (مثلاًpaymentیا0_coin_...)، «سازنده پیلود» مناسب را فراخوانی میکند. - «سازنده پیلود» تمام اطلاعات لازم (قیمتها، وزنها، عیار، کدهای مشتری، شناسههای فاکتور و...) را جمعآوری و به فرمت آرایه مورد قبول وبسرویس تهحساب تبدیل میکند. (در این مرحله، مبالغ به ریال تبدیل میشوند).
- دادههای نهایی به تابع مربوطه در «کلاینت وبسرویس» ارسال میشود.
- در صورت موفقیت: وضعیت ردیف در صف به
successتغییر کرده و «شناسه سند تهحساب» در آن ذخیره میشود. همچنین شماره فاکتور و شمارنده ردیف در سفارش ووکامرس بهروز میشوند. - در صورت شکست: وضعیت به
failedتغییر یافته، متن خطا ذخیره شده و «تعداد تلاش» یکی اضافه میشود.