ووکامرس و سیستم حسابداری/چگونه ووکامرس را به نرم افزار حسابداری متصل کنیم؟

اتصال ووکامرس به سیستم حسابداری

همانطور که میدانید وردپرس یک سیستم مدیریت محتوای حرفه ای است که هر روز در حال پیشرفت است و توسعه دهنده های زیای در حال طراحی انواع افزونه و قالب برای این cms هستند.

همواره یکی از نیازهایی که هنوز بطور کامل مرتفع نشده اتصال ووکامرس به نرم افزارهای حسابداری مانند هلو و … است.

 

اتصال ووکامرس به سیستم حسابداری چه مزیت هایی دارد؟

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

اتصال ووکامرس به هولو

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

شما در واقع فقط با نرم افزار حسابداری طرف هستید و سایت طبق نرم افزار حسابداری همواره اپدیت میشود و تغییرات در سایت هم در نرم افزار حسابداری اپدیت میشود.

 

 

اموزش اتصال ووکامرس به سیستم حسابداری

اتصال ووکامرس به سیستم حسابداری
آموزش اتصال ووکامرس به سیستم حسابداری

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

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

 

 

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

اتصال سیستم حسابداری به ووکامرس

  1. اصولا نرم افزار حسابداری در شرکت ها بر روی یک سیستم نصب هست . نیاز اولیه ما قابلیت اتصال این کامپیوتر به اینترنت هست. زیرا سایت های وردپرس در بستر وب قرار دارند و حتما برای برقراری ارتباط با نرم افزار حسابداری نیازمند آن هستند که آن سیستم ها نیز در بستر اینترنت وجود داشته باشند.

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

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

 

اگر الگو های بالا کاملا رعایت شده باشد حال زمان آن می رسد که کار توسعه افزونه اتصال نرم افزار حسابداری به ووکامرس را آغاز کنیم.

 

برای شروع یک افزونه در وردپرس به نام wp-woocommerce-accounting ، با نوشتن دستور زیر در خط فرمان وردپرس (WP-CLI) ایجاد می کنیم :

wp scaffold plugin wp-woocommerce-accounting

 

نقطه ی مشترک بروز رسانی محصول از طریق اتصال نرم افزار حسابداری به ووکامرس چیست ؟

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

 

اتصال سیستم حسابداری به ووکامرس

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

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

$sku = 68952;
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id >0) {

    // Get Product By ID in WooCommerce
    $product = wc_get_product( $product_id );
    echo $product->get_price();
}

در کد بالا ابتدا شناسه محصول را در سیستم ووکامرس جستجو کردیم و اگر کالایی وجود داشت ، توسط تابع wc_get_product اطلاعات آن را دریافت می کنیم.

ویرایش قیمت و موجودی کالا در ووکامرس

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

موجودی کالا در ووکامرس

موجودی کالا در بانک اطلاعاتی ووکامرس دارای 3 شناسه اصلی می باشد:

  1. شناسه پست متا stock_ که عدد موجودی کالا را در بانک اطلاعاتی قرار می دهد.

  2. شناسه پست متا stock_status_ که وضعیت موجودی را مشخص می کند دارای دو مقدار ثابت instock یعنی در حال فروش و وجود داشتن موجودی و مقدار دیگر outofstock که به معنای اتمام موجودی و غیر قابل فروش بودن هست. البته خوده سیستم ووکامرس آن قدر هوشمند هست ، وقتی شما موجودی را برابر با صفر کنید خود به خود آن را غیر قابل فروش کند.

  3. اگر محصولات شما قابلیت پیش فروش در وب سایت را ندارند پس حتما می بایست امکان پیش فروش برای آن ها غیر فعال شود. برای این کار ووکامرس از شناسه پست متا backorders_ استفاده کرده که دو مقدار yes و no را به خود میگیرد.

قیمت کالا در ووکامرس

در هنگام اتصال نرم افزار حسابداری به ووکامرس می بایست به قیمت ها بسیار دقت کرد. در حالت عادی در ووکامرس دو نوع قیمت گذاری وجود دارد:

  1. حالت اول زمانی هست که قیمت کالا مقطوع بوده و تک نرخی می باشد در این حالت قیمت محصول را عموما regular_price نام گذاری می کنند.
  2. حالت دوم زمانی هست که قیمت با تخفیف وجود دارد و به اصطلاح دو قیمتی می باشد ، که در این مواقع قیمت با تخفیف با شناسه sale_price و قیمت اصلی محصول با شناسه regular_price نام گذاری شده است در جدول PostMeta سیستم وردپرس.

حال که با تئوری قیمت و موجودی کالا در ووکامرس آشنا شدید ، برای تغییر قیمت و موجودی کالا با شناسه 68952 در ووکامرس خواهیم داشت:

// Product Information
$sku = 68952;
$regular_price = 22000;
$sale_price = 15000;
$quantity = 0;

// Search Product By SKU
$product_id = wc_get_product_id_by_sku($sku);
if ($product_id > 0) {

    // Get Product By ID in WooCommerce
    $product = new WC_Product($product_id);

    // Set product stock quantity
    $product->set_stock_quantity($quantity);
    if ($quantity == 0) {
        $product->set_stock_status('outofstock');
    } else {
        $product->set_stock_status('instock');
    }
    
    // Set Product Price
    if ($regular_price == $sale_price) {
        $product->set_price($regular_price);
    } else {
        $product->set_regular_price($regular_price);
        $product->set_sale_price($sale_price);
    }

    // Save Product
    $product->save();
}

 

 

فرض کنید در نرم افزار حسابداری شما یک کالا با شناسه 68952  وجود داشت که نرخ اصلی آن 22000 و نرخ با تخفیف آن 15000 تومان و موجودی کالا در نرم افزار حسابداری صفر می باشد. برای بروز رسانی این مقدار در افزونه ووکامرس توسط کلاس WC_Product این کار را انجام می دهیم.

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

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

در هسته ی وردپرس مجموع توابعی وجود دارد به نام HTTP API که امکان برقراری ارتباط با وب سرویس ها و API های دیگر را فراهم می کند. اگر بخواهیم دو مورد از معروف ترین این تابع ها را نام ببریم:

  1. تابع wp_remote_get برای ارسال درخواست ها از نوع GET در وردپرس.
  2. تابع wp_remote_post برای ارسال درخواست ها از نوع POST در هسته ی وردپرس.

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

من در مثال زیر یک نمونه کد دریافت اطلاعات یک محصول با شناسه 3569 از نرم افزار حسابداری هلو را در وردپرس بیان می کنم :

// Get Product Data From Accounting Software API
$sku = '3569';
$url = 'http://{server-ip}:8080/TncHoloo/api/Product?code='.$sku;
$token = 'xxxxx';

// Send Request To API
$request = wp_remote_get($url, array(
    'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
    'timeout' => 120,
    'body' => array(),
    'method' => 'GET',
    'headers' => array(
        'Authorization' => $token,
    )
));

// Check Connect Error
if (is_wp_error($request)) {
    return false;
}

// Get Body Of Request
$body = wp_remote_retrieve_body($request);
$array = json_decode($body, true);

// Return Data
return $array;

 

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

نقطه ی جدب یا تغییر اطلاعات محصول در ووکامرس

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

حال سوال اینجاست در چه زمانی می بایست دستورات ما شروع به اجرا کردن کنند تا روند کاملا اتوماتیک باشد ؟ این کار را هم می توان توسط سیستم Cron و زمان بندی وردپرس انجام داد و هم می توان توسط هوک های وردپرس در زمان نقطه ی جذب شروع به اجرا شدن کرد.

 

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

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

من در زیر 4 نمونه از هوک های ووکامرس را بیان می کنم. البته هوک های بسیار زیادی در ووکامرس وجود دارد که محدود به چهار مورد زیر تنها نیست.

هوک در زمان بروز رسانی محصول ووکامرس

add_action('woocommerce_update_product', 'sync_on_product_save', 10, 1);
function sync_on_product_save($product_id)
{
    // Check Product has _SKU
    $sku = get_post_meta($product_id, '_sku', true);
    if (!empty($sku)) {
        // Connect To API
        // Update in WooCommerce
    }
}

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

add_filter('woocommerce_product_type_query', 'before_get_product_type', 10, 2);
function before_get_product_type($override, $product_id)
{
    // Check Product has _SKU
    $sku = get_post_meta($product_id, '_sku', true);
    if (!empty($sku)) {
        // Connect To API
        // Update in WooCommerce
    }

    return false;
}

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

add_filter('woocommerce_add_to_cart_validation', 'item_add_to_cart', 99, 3);
function item_add_to_cart($passed, $product_id, $quantity)
{
    // Check Product has _SKU
    $sku = get_post_meta($product_id, '_sku', true);
    if (!empty($sku)) {
        // Connect To API
        // Update in WooCommerce
    }

    return false;
}

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

add_action('wp', 'show_product_page');
function show_product_page()
{
    global $post;
    if (function_exists('is_product')) {
        if (is_product()) {
            // Get Product ID
            $product_id = $post->ID;

            // Check Product has _SKU
            $sku = get_post_meta($product_id, '_sku', true);
            if (!empty($sku)) {
                // Connect To API
                // Update in WooCommerce
            }
        }
    }
}

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

4 دیدگاه دربارهٔ «ووکامرس و سیستم حسابداری/چگونه ووکامرس را به نرم افزار حسابداری متصل کنیم؟»

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین می توانید از طریق تلگرام، واتس اپ و تماس تلفنی با ما در تماس باشید.
شماره تماس: 09388683852