Task 7721 | Доработки бота отправки заказов

master
parent ffca487440
commit f6d97e7c80
  1. 92
      wp-content/themes/cosmopet/modules/forms/module-ajax-controller.php

@ -281,16 +281,34 @@ function send_order_data($order_id) {
$utm = get_utm_data()['utm_source']; $utm = get_utm_data()['utm_source'];
$url = ''; $url = '';
$fName = 2; $fName = 2;
// 2. Формируем список товаров
// 2. Формируем список товаров с полной ценой (включая НДС)
foreach ($order->get_items() as $item) { foreach ($order->get_items() as $item) {
$product = $item->get_product(); $product = $item->get_product();
// Используем get_total_tax() + get_total() для получения полной цены с НДС
$item_total_without_tax = $item->get_total();
$item_tax = $item->get_total_tax();
$item_total_with_tax = round($item_total_without_tax + $item_tax);
$order_comment .= sprintf( $order_comment .= sprintf(
"%s x %s = %s\n", "%s x %s = %s\n",
$product->get_name(), $product->get_name(),
$item->get_quantity(), $item->get_quantity(),
wc_price($item->get_total()) strip_tags(wc_price($item_total_with_tax))
); );
} }
// 3. Добавляем информацию о промокодах, если они использовались
$coupons = $order->get_coupon_codes();
if (!empty($coupons)) {
$order_comment .= "\n=== ПРОМОКОДЫ ===\n";
foreach ($coupons as $coupon_code) {
$coupon = new WC_Coupon($coupon_code);
$discount_amount = round($order->get_discount_total());
$order_comment .= "Промокод: {$coupon_code}\n";
$order_comment .= "Скидка: " . strip_tags(wc_price($discount_amount)) . "\n";
}
}
$order_comment .= "\n=== ДАННЫЕ ДОСТАВКИ ===\n"; $order_comment .= "\n=== ДАННЫЕ ДОСТАВКИ ===\n";
$order_comment .= "Город: " . $order->get_billing_city() . "\n"; $order_comment .= "Город: " . $order->get_billing_city() . "\n";
$order_comment .= "Адрес: " . $order->get_billing_address_1() . "\n"; $order_comment .= "Адрес: " . $order->get_billing_address_1() . "\n";
@ -302,11 +320,8 @@ function send_order_data($order_id) {
if (is_user_logged_in()) { if (is_user_logged_in()) {
$user_id = get_current_user_id(); $user_id = get_current_user_id();
} else {
}
else{
$user_id = ''; $user_id = '';
} }
$form_title = 'Покупка на сайте'; $form_title = 'Покупка на сайте';
$formData = [ $formData = [
@ -319,7 +334,7 @@ function send_order_data($order_id) {
'ORDER_ID' => $order_id, 'ORDER_ID' => $order_id,
'ORDER_TOTAL' => $order_total, 'ORDER_TOTAL' => $order_total,
'PAYMENT_METHOD' => $order->get_payment_method_title(), 'PAYMENT_METHOD' => $order->get_payment_method_title(),
'COMMENTS' => $order_comment, 'COMMENTS' => $clean_order_comment,
// Адрес (префикс ADDR_) // Адрес (префикс ADDR_)
'ADDR_CITY' => $order->get_billing_city(), 'ADDR_CITY' => $order->get_billing_city(),
@ -341,40 +356,75 @@ function send_order_data($order_id) {
$product_summary = "🛒 Состав заказа:\n\n"; $product_summary = "🛒 Состав заказа:\n\n";
foreach ($order->get_items() as $item) { foreach ($order->get_items() as $item) {
$product = $item->get_product(); $product = $item->get_product();
$formData["PRODUCT_{$product_index}_NAME"] = $product->get_name(); $product_name = $product->get_name();
$formData["PRODUCT_{$product_index}_QTY"] = $item->get_quantity(); $product_qty = $item->get_quantity();
$formData["PRODUCT_{$product_index}_PRICE"] = $item->get_total(); $product_total_without_tax = $item->get_total();
$formData["PRODUCT_{$product_index}_SKU"] = $product->get_sku(); $product_tax = $item->get_total_tax();
$product_total_with_tax = round($product_total_without_tax + $product_tax);
// Добавляем в текстовую сводку $product_sku = $product->get_sku();
$product_summary .= "{$product_index}) {$name}\n";
$product_summary .= " Кол-во: {$qty}\n"; $formData["PRODUCT_{$product_index}_NAME"] = $product_name;
$product_summary .= " Сумма: {$total}\n"; $formData["PRODUCT_{$product_index}_QTY"] = $product_qty;
if ($sku) { $formData["PRODUCT_{$product_index}_PRICE"] = $product_total_with_tax;
$product_summary .= " Артикул: {$sku}\n"; $formData["PRODUCT_{$product_index}_SKU"] = $product_sku;
// Добавляем в текстовую сводку с полной ценой
$product_summary .= "{$product_index}) {$product_name}\n";
$product_summary .= " Кол-во: {$product_qty}\n";
$product_summary .= " Сумма: " . strip_tags(wc_price($product_total_with_tax)) . "\n";
if ($product_sku) {
$product_summary .= " Артикул: {$product_sku}\n";
} }
$product_summary .= "\n"; $product_summary .= "\n";
$product_index++; $product_index++;
} }
// Добавляем информацию о промокодах в сводку товаров
$coupons = $order->get_coupon_codes();
if (!empty($coupons)) {
$product_summary .= "=== ПРОМОКОДЫ ===\n";
foreach ($coupons as $coupon_code) {
$coupon = new WC_Coupon($coupon_code);
$discount_amount = round($order->get_discount_total());
$product_summary .= "Промокод: {$coupon_code}\n";
$product_summary .= "Скидка: " . strip_tags(wc_price($discount_amount)) . "\n";
}
$product_summary .= "\n";
}
// Функция для очистки текста от HTML-сущностей
function clean_text_for_telegram($text) {
// Удаляем HTML-теги
$text = strip_tags($text);
// Заменяем HTML-сущности на обычные символы
$text = html_entity_decode($text, ENT_QUOTES | ENT_HTML5, 'UTF-8');
// Убираем лишние пробелы
$text = preg_replace('/\s+/', ' ', $text);
return trim($text);
}
$message = "📋 Данные формы:\n\n"; $message = "📋 Данные формы:\n\n";
foreach ($formData as $key => $value) { foreach ($formData as $key => $value) {
if (is_array($value)) { if (is_array($value)) {
$value = implode(', ', $value); // на случай, если в значении массив $value = implode(', ', $value); // на случай, если в значении массив
} }
$message .= sprintf("%s: %s\n", $key, $value); $message .= sprintf("%s: %s\n", $key, clean_text_for_telegram($value));
} }
// Очищаем тексты от HTML-сущностей для Telegram
$clean_product_summary = clean_text_for_telegram($product_summary);
$clean_order_comment = clean_text_for_telegram($order_comment);
$crmData = array( $crmData = array(
'phone' => $customer_phone, 'phone' => $customer_phone,
'name' => $customer_name, 'name' => $customer_name,
'email' => $customer_email, 'email' => $customer_email,
'msg' => $product_summary, 'msg' => $clean_product_summary,
'url' => null, 'url' => null,
'stage' => 'C2:UC_ZMY1QV', 'stage' => 'C2:UC_ZMY1QV',
'fName' => 2, 'fName' => 2,
'order_total' => $order_total, 'order_total' => $order_total,
'user_id' => $user_data['user_id'], 'user_id' => $user_id,
'method' => 'crm.deal.add', 'method' => 'crm.deal.add',
'form_title' => 'Заказ на сайте', 'form_title' => 'Заказ на сайте',
'is_subscribe' => false, 'is_subscribe' => false,

Loading…
Cancel
Save