Closed Class365 closed 10 years ago
Не подскажете, тикет закрыт по причине исправления или по причине ненужности?
Вот так - http://i.imgur.com/Cb9UHsc.png
Проблема решена своими силами. в admin/model/tool/exchange1c.php http://prntscr.com/5upb7p
//Статус $order_status = $this->model_sale_order->getOrderStatus($orders_data['order_id']);
$document['Документ' . $document_counter]['ЗначенияРеквизитов'] = array(
'ЗначениеРеквизита' => array(
'Наименование' => 'Статус заказа',
'Значение'=> $order_status,
)
);
и добавление в vqmod/xml/exchange1c.xml в конце
<file name="admin/model/sale/order.php">
<operation>
<search position="replace"><![CDATA[public function getTotalOrdersByStoreId($store_id) {]]></search>
<add><![CDATA[ public function getOrderStatus($order_id) {
$order_status_id = $this->db->query("SELECT order_status_id FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'");
// var_dump($order_status_id);
$order_status = $this->db->query("SELECT name FROM `" . DB_PREFIX . "order_status` WHERE order_status_id = " . $order_status_id->row['order_status_id'] . " AND language_id = '" . (int)$this->config->get('config_language_id') . "'");
return $order_status->row['name'];
}
public function getOrderPay($order_id) {
$pay_status = $this->db->query("SELECT payment_method FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'");
return $pay_status->row['payment_method'];
}
public function getOrderShipping($order_id) {
$pay_status = $this->db->query("SELECT shipping_method FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'");
return $pay_status->row['shipping_method'];
}
public function getTotalOrdersByStoreId($store_id) {]]></add>
</operation>
</file>
@Class365 Спасибо! Но "ЗначениеРеквизита" c наименованием "Статус заказа" никак не влияет на статус заказа в 1С (даже с заданием соответствий статусов в настройках обмена).
Много погуглил на этот счет. Пишут, что этот реквизит вообще игнорируется, а статус 1С выставляет на основе некоторых эвристик, которые экспериментально люди вывели. Но у меня воспроизвести их пока не получилось: http://dev.1c-bitrix.ru/community/forums/messages/forum26/topic54418/message290625/#message290625 http://1c.1c-bitrix.ru/support/forum/messages/forum26/topic45098/message330122/#message330122
Странно. Этот тег присутствует в стандартной документации CommerceML http://v8.1c.ru/edi/edi_stnd/131/to.xml
Поэтому мы его обрабатываем. CRM, с которыми интегрирован Класс365, также передают этот параметр. http://class365.ru/internet-magaziny#imlist
При интеграции с OpenCart и формировании файла orders.xml не передаются статусы заказа. Возможно ли реализовать передачу статуса согласно протокола CommerceML? Результат xml файла следующий
<ЗначенияРеквизитов> <ЗначениеРеквизита> <Наименование>Статус заказа</Наименование> <Значение>В обработке</Значение> </ЗначениеРеквизита> </ЗначенияРеквизитов>