Support » Plugin: WooCommerce and 1C:Enterprise/1С:Предприятие Data Exchange » _sale_price не проходит проверку is_on_sale

  • Resolved prohapro

    (@prohapro)


    Кусок кода из /exchange/offers.php

      if (!is_null($price)) {
        $sale_price = @$current_post_meta['_sale_price'];
        $sale_price_from = @$current_post_meta['_sale_price_dates_from'];
        $sale_price_to = @$current_post_meta['_sale_price_dates_to'];
        if (empty($current_post_meta['_sale_price'])) {
          $post_meta['_price'] = $price;
        }
        else {
          if (empty($sale_price_from) && empty($sale_price_to)) {
            $post_meta['_price'] = $current_post_meta['_sale_price'];
          }
          else {
            $now = strtotime('now', current_time('timestamp'));
            if (!empty($sale_price_from) && strtotime($sale_price_from) < $now) {
              $post_meta['_price'] = $current_post_meta['_sale_price'];
            }
            if (!empty($sale_price_to) && strtotime($sale_price_to) < $now) {
              $post_meta['_price'] = $price;
              $post_meta['_sale_price_dates_from'] = '';
              $post_meta['_sale_price_dates_to'] = '';
            }
          }
        }
      }

    1. Если код оставить нетронутым, то “_price” принимает значение “_regular_price”, в независимости от наличия “_sale_price” (товар перестает быть акционным после обмена данных, при этом акционная цена у него не затирается, но он каким то образом не проходит проверку is_on_sale)

    2. Если код закомментировать, то “_price” не принимает значение “_regular_price” (цена перестает обновляться на сайте, либо отображаться на новых товарах, после обмена данных)

    В обоих случаях, если изменить _sale_price, либо _regular_price в карточке товара, то товар снова становиться акционным, либо обновляет цену.

    Использую WP 5.2.2, WC 3.6.5, PHP 7.3.8.

    Помогите понять, почему _sale_price не проходит проверку is_on_sale.

    • This topic was modified 3 months ago by prohapro.
    • This topic was modified 3 months ago by prohapro.
Viewing 2 replies - 1 through 2 (of 2 total)
  • Добавил:

    $current_post_meta = get_post_meta($post_id);
    foreach ($current_post_meta as $meta_key => $meta_value) {
    $current_post_meta[$meta_key] = $meta_value[0];
    }

    после
    if (!is_null($price)) {

    и все получилось.

    • This reply was modified 2 months, 1 week ago by prohapro.
    xcoderu

    (@xcoderu)

    Здравствуйте. Подскажите пожалуйста @prohapro. Как Вы отправляете стоимость товара со скидкой из 1С? Заранее спасибо

Viewing 2 replies - 1 through 2 (of 2 total)
  • You must be logged in to reply to this topic.