Архив метки: woocommerce

WooCommerce

В состав конфигурации “Простой учет” добавлена обработка для поддержки обмена данными с интернет-магазином, использующим плагин WooCommerce для WordPress. Как и с остальными магазинами, есть возможность обновлять цены товаров на сайте по данным из 1С и загружать оставленные покупателями заказы сразу в документ “Расходная накладная”.

В процессе написания обработки пришлось разложить по полочкам схему данных магазина, при этом сначала меня удивила концепция: все основные сведения хранить в таблице posts. Т.е. там лежат и данные о товарах, и данные о заказах, сам WordPress там хранит данные постов. На деле оказалось, что для целей обмена данными к этой таблице обращаться практически не приходится – нужные параметры разбросаны по множеству дополнительных таблиц.

WooCommerce shema

схема связи данных в таблицах WordPress и WooCommerce

Так например, чтобы узнать, есть-ли заказы ожидающие обработки, нужно прочитать из таблицы term_relationships записи со значением поля term_taxonomy_id равным коду статуса “ожидание”. Поле записи object_id будет содержать код заказа, а по сути это id записи в таблице posts соответствующей искомому заказу. Содержимое заказа лежит в таблице woocommerce_itemmeta, здесь надо сделать выборку по полю order_item_id (id заказа) и перечитать содержимое в полях meta_key и meta_value. Это еще одна “фишка” этого плагина: значения записаны не в отдельных полях таблицы, а вписаны в две колонки таблицы по принципу: одна колонка содержит ключ, вторая – значение. Т.е перебирая строки нужно анализировать значения ключа, к примеру в строке с ключом “_qty” получим количество, “_line_total” – сумма товара по строке и т.д. По такому-же принципу “спрятаны” данные и заголовка заказа с именем покупателя, телефоном и прочим, только уже в таблице postmeta.