Bug fix for php5.3, catalog options (#27)
* Bug fix for php5.3, catalog options * Product price in order from cart
This commit is contained in:
parent
59841e21e4
commit
9851b29f04
@ -295,9 +295,9 @@
|
|||||||
*
|
*
|
||||||
* @return WC_Retailcrm_Response
|
* @return WC_Retailcrm_Response
|
||||||
*/
|
*/
|
||||||
public function customDictionariesList(array $filter = [], $limit = null, $page = null)
|
public function customDictionariesList(array $filter = array(), $limit = null, $page = null)
|
||||||
{
|
{
|
||||||
$parameters = [];
|
$parameters = array();
|
||||||
|
|
||||||
if (count($filter)) {
|
if (count($filter)) {
|
||||||
$parameters['filter'] = $filter;
|
$parameters['filter'] = $filter;
|
||||||
|
@ -67,22 +67,40 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) :
|
|||||||
$api_version_list = array('v4' => 'v4','v5' => 'v5');
|
$api_version_list = array('v4' => 'v4','v5' => 'v5');
|
||||||
|
|
||||||
$this->form_fields[] = array(
|
$this->form_fields[] = array(
|
||||||
'title' => __( 'Настройки API', 'woocommerce' ),
|
'title' => __( 'Настройки API', 'woocommerce' ),
|
||||||
'type' => 'title',
|
'type' => 'title',
|
||||||
'description' => '',
|
'description' => '',
|
||||||
'id' => 'api_options'
|
'id' => 'api_options'
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->form_fields['api_version'] = array(
|
$this->form_fields['api_version'] = array(
|
||||||
'title' => __( 'API версия', 'textdomain' ),
|
'title' => __( 'API версия', 'textdomain' ),
|
||||||
'description' => __( 'Выберите версию API, которую Вы хотите использовать', 'textdomain' ),
|
'description' => __( 'Выберите версию API, которую Вы хотите использовать', 'textdomain' ),
|
||||||
'css' => 'min-width:50px;',
|
'css' => 'min-width:50px;',
|
||||||
'class' => 'select',
|
'class' => 'select',
|
||||||
'type' => 'select',
|
'type' => 'select',
|
||||||
'options' => $api_version_list,
|
'options' => $api_version_list,
|
||||||
'desc_tip' => true,
|
'desc_tip' => true,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$this->form_fields[] = array(
|
||||||
|
'title' => __( 'Настройки каталога', 'woocommerce' ),
|
||||||
|
'type' => 'title',
|
||||||
|
'description' => '',
|
||||||
|
'id' => 'catalog_options'
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach (get_post_statuses() as $status_key => $status_value) {
|
||||||
|
$this->form_fields['p_' . $status_key] = array(
|
||||||
|
'title' => __( $status_value, 'textdomain' ),
|
||||||
|
'label' => __( ' ', 'textdomain' ),
|
||||||
|
'description' => '',
|
||||||
|
'class' => 'checkbox',
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'desc_tip' => true,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->get_option( 'api_url' ) != '' && $this->get_option( 'api_key' ) != '') {
|
if ($this->get_option( 'api_url' ) != '' && $this->get_option( 'api_key' ) != '') {
|
||||||
if (isset($_GET['page']) && $_GET['page'] == 'wc-settings' && isset($_GET['tab']) && $_GET['tab'] == 'integration') {
|
if (isset($_GET['page']) && $_GET['page'] == 'wc-settings' && isset($_GET['tab']) && $_GET['tab'] == 'integration') {
|
||||||
$retailcrm = new WC_Retailcrm_Proxy(
|
$retailcrm = new WC_Retailcrm_Proxy(
|
||||||
@ -180,21 +198,21 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) :
|
|||||||
$wc_statuses = wc_get_order_statuses();
|
$wc_statuses = wc_get_order_statuses();
|
||||||
|
|
||||||
$this->form_fields[] = array(
|
$this->form_fields[] = array(
|
||||||
'title' => __( 'Статусы', 'woocommerce' ),
|
'title' => __( 'Статусы', 'woocommerce' ),
|
||||||
'type' => 'title',
|
'type' => 'title',
|
||||||
'description' => '',
|
'description' => '',
|
||||||
'id' => 'statuses_options'
|
'id' => 'statuses_options'
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach ( $wc_statuses as $idx => $name ) {
|
foreach ( $wc_statuses as $idx => $name ) {
|
||||||
$uid = str_replace('wc-', '', $idx);
|
$uid = str_replace('wc-', '', $idx);
|
||||||
$this->form_fields[$uid] = array(
|
$this->form_fields[$uid] = array(
|
||||||
'title' => __( $name, 'textdomain' ),
|
'title' => __( $name, 'textdomain' ),
|
||||||
'css' => 'min-width:350px;',
|
'css' => 'min-width:350px;',
|
||||||
'class' => 'select',
|
'class' => 'select',
|
||||||
'type' => 'select',
|
'type' => 'select',
|
||||||
'options' => $statuses_option_list,
|
'options' => $statuses_option_list,
|
||||||
'desc_tip' => true,
|
'desc_tip' => true,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -203,17 +221,17 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) :
|
|||||||
* Inventories options
|
* Inventories options
|
||||||
*/
|
*/
|
||||||
$this->form_fields[] = array(
|
$this->form_fields[] = array(
|
||||||
'title' => __( 'Настройки остатков', 'woocommerce' ),
|
'title' => __( 'Настройки остатков', 'woocommerce' ),
|
||||||
'type' => 'title',
|
'type' => 'title',
|
||||||
'description' => '',
|
'description' => '',
|
||||||
'id' => 'invent_options'
|
'id' => 'invent_options'
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->form_fields['sync'] = array(
|
$this->form_fields['sync'] = array(
|
||||||
'label' => __( 'Выгружать остатки из CRM', 'textdomain' ),
|
'label' => __( 'Выгружать остатки из CRM', 'textdomain' ),
|
||||||
'title' => 'Inventories',
|
'title' => 'Inventories',
|
||||||
'class' => 'checkbox',
|
'class' => 'checkbox',
|
||||||
'type' => 'checkbox',
|
'type' => 'checkbox',
|
||||||
'description' => 'Отметьте данный пункт, если хотите выгружать остатки товаров из CRM в магазин.'
|
'description' => 'Отметьте данный пункт, если хотите выгружать остатки товаров из CRM в магазин.'
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -224,10 +242,10 @@ if ( ! class_exists( 'WC_Retailcrm_Base' ) ) :
|
|||||||
|
|
||||||
if (!isset($options['uploads'])) {
|
if (!isset($options['uploads'])) {
|
||||||
$this->form_fields[] = array(
|
$this->form_fields[] = array(
|
||||||
'title' => __( 'Выгрузка клиентов и заказов', 'woocommerce' ),
|
'title' => __( 'Выгрузка клиентов и заказов', 'woocommerce' ),
|
||||||
'type' => 'title',
|
'type' => 'title',
|
||||||
'description' => '',
|
'description' => '',
|
||||||
'id' => 'upload_options'
|
'id' => 'upload_options'
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->form_fields['upload-button'] = array(
|
$this->form_fields['upload-button'] = array(
|
||||||
|
@ -73,8 +73,9 @@ if ( ! class_exists( 'WC_Retailcrm_Icml' ) ) :
|
|||||||
$this->writeCategories($categories);
|
$this->writeCategories($categories);
|
||||||
unset($categories);
|
unset($categories);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->get_wc_products_taxonomies();
|
$status_args = $this->checkPostStatuses();
|
||||||
|
$this->get_wc_products_taxonomies($status_args);
|
||||||
$dom = dom_import_simplexml(simplexml_load_file($this->tmpFile))->ownerDocument;
|
$dom = dom_import_simplexml(simplexml_load_file($this->tmpFile))->ownerDocument;
|
||||||
$dom->formatOutput = true;
|
$dom->formatOutput = true;
|
||||||
$formatted = $dom->saveXML();
|
$formatted = $dom->saveXML();
|
||||||
@ -310,13 +311,24 @@ if ( ! class_exists( 'WC_Retailcrm_Icml' ) ) :
|
|||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function get_wc_products_taxonomies() {
|
private function get_wc_products_taxonomies($status_args) {
|
||||||
|
if (!$status_args) {
|
||||||
|
$status_args = array('publish');
|
||||||
|
}
|
||||||
|
|
||||||
$full_product_list = array();
|
$full_product_list = array();
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
$limit = 100;
|
$limit = 100;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
$loop = new WP_Query(array('post_type' => array('product', 'product_variation'), 'posts_per_page' => $limit, 'offset' => $offset));
|
$loop = new WP_Query(
|
||||||
|
array(
|
||||||
|
'post_type' => array('product', 'product_variation'),
|
||||||
|
'post_status' => $status_args,
|
||||||
|
'posts_per_page' => $limit,
|
||||||
|
'offset' => $offset
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
while ($loop->have_posts()) : $loop->the_post();
|
while ($loop->have_posts()) : $loop->the_post();
|
||||||
$theid = get_the_ID();
|
$theid = get_the_ID();
|
||||||
@ -484,6 +496,19 @@ if ( ! class_exists( 'WC_Retailcrm_Icml' ) ) :
|
|||||||
return wc_get_price_including_tax($product);
|
return wc_get_price_including_tax($product);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function checkPostStatuses() {
|
||||||
|
$options = get_option( 'woocommerce_integration-retailcrm_settings' );
|
||||||
|
$status_args = array();
|
||||||
|
|
||||||
|
foreach (get_post_statuses() as $key => $value) {
|
||||||
|
if (isset($options['p_' . $key]) && $options['p_' . $key] == 'yes') {
|
||||||
|
$status_args[] = $key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $status_args;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
endif;
|
endif;
|
||||||
|
@ -247,7 +247,7 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) :
|
|||||||
*/
|
*/
|
||||||
public function getOrderData($order_id) {
|
public function getOrderData($order_id) {
|
||||||
$order = new WC_Order( $order_id );
|
$order = new WC_Order( $order_id );
|
||||||
$order_data_arr = [];
|
$order_data_arr = array();
|
||||||
|
|
||||||
if (version_compare(get_option('woocommerce_db_version'), '3.0', '<' )) {
|
if (version_compare(get_option('woocommerce_db_version'), '3.0', '<' )) {
|
||||||
$order_data_arr['id'] = $order->id;
|
$order_data_arr['id'] = $order->id;
|
||||||
@ -306,7 +306,7 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) :
|
|||||||
$order_data['paymentType'] = $this->retailcrm_settings[$order_data_info['payment_method']];
|
$order_data['paymentType'] = $this->retailcrm_settings[$order_data_info['payment_method']];
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!empty($order->get_items( 'shipping' )) && $order->get_items( 'shipping' ) != '') {
|
if ($order->get_items( 'shipping' )) {
|
||||||
$shipping = end($order->get_items( 'shipping' ));
|
$shipping = end($order->get_items( 'shipping' ));
|
||||||
$shipping_code = explode(':', $shipping['method_id']);
|
$shipping_code = explode(':', $shipping['method_id']);
|
||||||
$shipping_method = $shipping_code[0];
|
$shipping_method = $shipping_code[0];
|
||||||
@ -372,18 +372,22 @@ if ( ! class_exists( 'WC_Retailcrm_Orders' ) ) :
|
|||||||
$_product = wc_get_product($uid);
|
$_product = wc_get_product($uid);
|
||||||
|
|
||||||
if ($_product) {
|
if ($_product) {
|
||||||
|
$product_price = $item->get_total() ? $item->get_total() / $item->get_quantity() : 0;
|
||||||
|
$product_tax = $item->get_total_tax() ? $item->get_total_tax() / $item->get_quantity() : 0;
|
||||||
|
$price_item = $product_price + $product_tax;
|
||||||
|
|
||||||
if ($this->retailcrm_settings['api_version'] != 'v3') {
|
if ($this->retailcrm_settings['api_version'] != 'v3') {
|
||||||
$order_item = array(
|
$order_item = array(
|
||||||
'offer' => array('externalId' => $uid),
|
'offer' => array('externalId' => $uid),
|
||||||
'productName' => $item['name'],
|
'productName' => $item['name'],
|
||||||
'initialPrice' => (float)$_product->get_price(),
|
'initialPrice' => (float)$price_item,
|
||||||
'quantity' => $item['qty'],
|
'quantity' => $item['qty'],
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$order_item = array(
|
$order_item = array(
|
||||||
'productId' => $uid,
|
'productId' => $uid,
|
||||||
'productName' => $item['name'],
|
'productName' => $item['name'],
|
||||||
'initialPrice' => (float)$_product->get_price(),
|
'initialPrice' => (float)$price_item,
|
||||||
'quantity' => $item['qty'],
|
'quantity' => $item['qty'],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Version: 1.2.1
|
* Version: 1.2.3
|
||||||
* Plugin Name: WooCommerce RetailCRM
|
* Plugin Name: WooCommerce RetailCRM
|
||||||
* Plugin URI: https://wordpress.org/plugins/woo-retailcrm/
|
* Plugin URI: https://wordpress.org/plugins/woo-retailcrm/
|
||||||
* Description: Integration plugin for WooCommerce & RetailCRM
|
* Description: Integration plugin for WooCommerce & RetailCRM
|
||||||
|
@ -14,8 +14,8 @@
|
|||||||
* - Repeat things for multisite. Once for a single site in the network, once sitewide.
|
* - Repeat things for multisite. Once for a single site in the network, once sitewide.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* @link https://wordpress.org/plugins/retailcrm/
|
* @link https://wordpress.org/plugins/woo-retailcrm/
|
||||||
* @since 1.1
|
* @since 1.2.1
|
||||||
*
|
*
|
||||||
* @package RetailCRM
|
* @package RetailCRM
|
||||||
*/
|
*/
|
||||||
@ -39,4 +39,4 @@ wp_clear_scheduled_hook( 'retailcrm_inventories' );
|
|||||||
$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name = 'woocommerce_integration-retailcrm_settings';" );
|
$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name = 'woocommerce_integration-retailcrm_settings';" );
|
||||||
|
|
||||||
// Clear any cached data that has been removed
|
// Clear any cached data that has been removed
|
||||||
wp_cache_flush();
|
wp_cache_flush();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user