پرش به مطلب اصلی
نسخه: 1.0.2

پردازش سفارش

ارسال یک سفارش ووکامرس به ته‌حساب، یک فرایند چندمرحله‌ای است که تضمین می‌کند تمام اسناد مالی به درستی ثبت شوند.

مرحله ۱: فعال‌سازی

  • زمان: هنگامی که وضعیت یک سفارش ووکامرس تغییر می‌کند (مثلاً از «در حال انجام» به «تکمیل‌شده»).
  • شرط: افزونه بررسی می‌کند که آیا وضعیت جدید سفارش با وضعیتی که شما در تنظیمات ← ارسال ← وضعیت سفارش برای ارسال انتخاب کرده‌اید، مطابقت دارد یا خیر.
  • اقدام: در صورت تطابق، افزونه سفارش را به فرایند شماره ۲ ارسال می‌کند.

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

در این مرحله سفارش بلافاصله ارسال نمی‌شود، بلکه به «سرویس صف» تحویل داده می‌شود. این سرویس اقدامات زیر را انجام می‌دهد:

  1. بررسی ارز: ابتدا بررسی می‌کند که ارز سفارش یکی از موارد مجاز (IRR, IRT, IRHR, IRHT) باشد. در غیر این صورت، فرایند متوقف می‌شود.
  2. ایجاد کد فاکتور: یک «شناسه فاکتور» یکتای ۲۰ رقمی برای کل سفارش ایجاد کرده و آن را در سفارش ذخیره می‌کند.
  3. ایجاد سند پرداخت: اگر سفارش مبلغ کل داشته باشد، یک ردیف جداگانه در «صف ارسال» برای «سند پرداخت» ایجاد می‌کند.
  4. ایجاد سند تخفیف: اگر سفارش دارای تخفیف باشد، یک ردیف جداگانه در «صف ارسال» برای «سند تخفیف» ایجاد می‌کند.
  5. گروه‌بندی محصولات:
    • سرویس، تمام محصولات سفارش را بر اساس جنس فلز، نوع محصول (کارساخته، سکه، اتیکت) و زیرنوع (مانند نام سکه یا کد اتیکت) گروه‌بندی می‌کند.
    • مثال: اگر یک سفارش شامل ۲ سکه بهار آزادی (طلا) و ۳ انگشتر نقره (کارساخته) باشد، دو گروه محصول ایجاد می‌شود:
      1. 0_coin_Bahar-Azadi
      2. 2_manufactured_Silver-Ring
    • برای هر یک از این گروه‌ها، یک ردیف جداگانه در «صف ارسال» ایجاد می‌شود.

مرحله ۳: ارسال

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

الف) روش فوری

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

ب) روش صف

  • ردیف‌ها در صف باقی می‌مانند.
  • یک وظیفه زمان‌بندی شده (Cron Job) که هر ۵ دقیقه یکبار اجرا می‌شود، ردیف‌های pending را پیدا کرده و آن‌ها را برای مرحله چهار ارسال می‌کند.

مرحله ۴: اجرای ارسال

این تابع، قلب فرایند ارسال است:

  1. ردیف صف را روی وضعیت processing قرار می‌دهد.
  2. «کد مشتری» ته‌حساب را طبق فرایندی که در راهنمای «همگام‌سازی مشتری» توضیح داده شد، دریافت (یا ایجاد) می‌کند.
  3. بر اساس group_key ردیف (مثلاً payment یا 0_coin_...)، «سازنده پیلود» مناسب را فراخوانی می‌کند.
  4. «سازنده پیلود» تمام اطلاعات لازم (قیمت‌ها، وزن‌ها، عیار، کدهای مشتری، شناسه‌های فاکتور و...) را جمع‌آوری و به فرمت آرایه مورد قبول وب‌سرویس ته‌حساب تبدیل می‌کند. (در این مرحله، مبالغ به ریال تبدیل می‌شوند).
  5. داده‌های نهایی به تابع مربوطه در «کلاینت وب‌سرویس» ارسال می‌شود.
  6. در صورت موفقیت: وضعیت ردیف در صف به success تغییر کرده و «شناسه سند ته‌حساب» در آن ذخیره می‌شود. همچنین شماره فاکتور و شمارنده ردیف در سفارش ووکامرس به‌روز می‌شوند.
  7. در صورت شکست: وضعیت به failed تغییر یافته، متن خطا ذخیره شده و «تعداد تلاش» یکی اضافه می‌شود.