Доработка CommerceML

Требуется доработка модуля CommerceML. Нужно добавить в выгрузку для заказов информацию о доставке и пунктах самовывоза из модуля Edost (официальный).

я так понимаю в документ заказ покупатетеля в 1с правильно ?
в поле коментарий или вам 1с ник будет допиливать реквизиты и надо в каком то отдельном виде это все грузить?

не в 1с а в МОЙ Склад. Там достаточно передать эти значения в стандартных полях а не в комментах.

ну или на крайний случай можно в комментах, но хотелось бы все же передать как обычное текстовое поле.
Работали через битрикс но там кучу заморочек, по идее в заказе все это есть https://yadi.sk/i/WXahwo72eqEpNA

ИнтернетМагазин/exim_1c?type=sale&mode=query

посмотрите что сюда грузиться
по идее тут должно быть все что вы писали
может склад просто не хочет все кушать или проверяли уже этот файл?

не, нету . только в целом какой тип, а нужен именно терминал и тд

ну или на крайний случай можно в комментах

app/addons/rus_exim_1c/Tygh/Commerceml/RusEximCommerceml.php
заменить
$notes = $order_data['notes'];
на
//$notes = $order_data['notes'];
$shipping = (!empty($order_data['shipping'][0]['shipping'])) ? $order_data['shipping'][0]['shipping'] : "-";
$zipcode = $this->getContactInfoFromAddress($order_data, 'zipcode');
$country = $this->getContactInfoFromAddress($order_data, 'country_descr');
$city = $this->getContactInfoFromAddress($order_data, 'city');
$address1 = $this->getContactInfoFromAddress($order_data, 'address');
$notes = "\n" . "№" . $order_data['order_id'] . " - " . $shipping . "\n" . $order_data['lastname'] . " " . $order_data['firstname'] . "\n" . $order_data['phone'] . "\n" . $zipcode . ", " . $country . ", " . $city . ", " . $address1 . "\n\n" . $order_data['notes'];

выдал ошибку

Кто и где выдал?
У меня работает. Контроллер вроде не правил

ошибка после вставки кода. Ошибку выдает тут ИнтернетМагазин/exim_1c?type=sale&mode=query

Можете прислать свой код для сравнения?

RusEximCommerceml.php (171,8 КБ)

попробовал с вашим файлом. Ошибка таже

вот эта строка приводит к ошибке
`

    $notes = "\n" . "№" . $order_data['order_id'] . " - " . $shipping . "\n" . $order_data['lastname'] . " " . $order_data['firstname'] . "\n" . $order_data['phone'] . "\n" . $zipcode . ", " . $country . ", " . $city . ", " . $address1 . "\n\n" . $order_data['notes'];       /*klm*/

`

Попробуйте переменные по одной убирать. Может быть я всё же что-то добавил в стандартные массивы.

да . “№”. ПОсле этого стало все нормально. Подскажите как вывести значение поля
image
и

{$fields.41}

У второго не видно название массива, и я сомневаюсь, что он будет доступен в выводе КоммерсМЛ

второе поле из доставки модуля едост
[shipping] => Array
(
[0] => Array
(
[shipping_id] => 31
[shipping] => ПЭК (до терминала со страховкой)
[delivery_time] => 2-4 дня
[description] =>
[rate_calculation] => R
[service_params] => Array
(
[0] => 0
)

                [destination] => I
                [min_weight] => 0.000
                [max_weight] => 0.000
                [service_id] => 632
                [free_shipping] => 
                [module] => edost2
                [service_code] => 32
                [is_address_required] => N
                [disable_payment_ids] => Array
                    (
                        [0] => 18
                        [1] => 20
                        [2] => 1
                        [3] => 13
                        [4] => 14
                        [5] => 15
                        [6] => 16
                    )

                [rate_info] => Array
                    (
                    )

                [image] => Array
                    (
                        [icon] => Array
                            (
                                [image_path] => images/edost/company/19.gif
                                [alt] => 
                                [image_x] => 45
                                [image_y] => 45
                                [http_image_path] => images/edost/company/19.gif
                                [https_image_path] => images/edost/company/19.gif
                                [absolute_path] => images/edost/company/19.gif
                                [relative_path] => images/edost/company/19.gif
                                [is_high_res] => 0
                            )

                    )

                [group_key] => 0
                [rate] => 1370
                [service_delivery_time] => 2-4 дня
                [edost] => Array
                    (
                        [id] => 31
                        [price] => 1370
                        [priceinfo] => 0
                        [priceoffice] => Array
                            (
                                [3] => Array
                                    (
                                        [type] => 3
                                        [price] => 1370
                                        [priceinfo] => 0
                                    )

                            )

                        [transfer] => 0
                        [day] => 2-4 дня
                        [insurance] => со страховкой
                        [company] => ПЭК
                        [name] => до терминала
                        [format] => terminal
                        [company_id] => 19
                        [profile] => 32
                        [sort] => 1004
                        [shop_id] => 0
                        [automatic] => edost
                        [title] => ПЭК (до терминала)
                        [description] => 
                        [shop_price] => 1230
                        [format_original] => terminal
                        [tariff_id] => 16
                        [ico] => 16
                        [name_original] => до терминала со страховкой
                        [company_ico] => 19
                        [price_formatted] => 1&nbsp;370.00&nbsp;<span class="ty-rub">Р</span>
                        [pricetotal] => 1370
                        [pricetotal_formatted] => 1&nbsp;370.00&nbsp;<span class="ty-rub">Р</span>
                        [to_office] => 3
                        [cod_tariff] => 
                        [office_id] => 24084
                        [office_type] => 3
                        [office_options] => 0
                        [office_address] => 2-й Муринский проспект, д. 49 (м. Площадь Мужества)
                        [office_address_full] => Терминал ТК ПЭК: 2-й Муринский проспект, д. 49 (м. Площадь Мужества), телефон: (812) 494-88-88, (812) 458-09-02, часы работы: пн.-пт. с 11:00 до 20:00, сб.-вс. с 11:00 до 18:00, обед с 15:00 до 15:30, код филиала: 1aaf/24084/3/32
                        [office_detailed] => https://edost.ru/office.php?c=24084
                        [office_link_head] => Пункт выдачи
                        [office] => Array
                            (
                                [id] => 24084
                                [code] => 1aaf
                                [name] => 
                                [address] => 2-й Муринский проспект, д. 49
                                [address2] => 
                                [tel] => (812) 494-88-88, (812) 458-09-02
                                [schedule] => пн.-пт. с 11:00 до 20:00, сб.-вс. с 11:00 до 18:00, обед с 15:00 до 15:30
                                [gps] => 30.358510,59.998560
                                [type] => 3
                                [metro] => Площадь Мужества
                                [options] => 0
                                [address_full] => 2-й Муринский проспект, д. 49
                                [cod_disable] => 
                            )

                        [office_map] => change
                        [compact_link] => другой пункт выдачи...
                        [office_link] => другой пункт выдачи...
                        [checked] => 1
                        [html_id] => edost_32
                        [html_value] => edost:32_31:24084:
                        [compact] => 1
                    )

                [need_shipment] => 1
            )

    )

[shipment_ids] => Array
    (
    )

[secondary_currency] => RUB
[display_subtotal] => 24860
[payment_info] => Array
    (
    )

{$edost.format.data.office.tariff.0.office_address}

Обращаться можно по названию переменной в массиве или по её порядковому номеру, начиная с ноля

а как их вывести просто вставив в эту строку?

$notes = "\n"  . $order_data['order_id'] . " - " . $shipping . "\n" . $order_data['lastname'] . " " . $order_data['firstname'] . "\n" . $order_data['phone'] . "\n" . $zipcode . ", " . $country . ", " . $city . ", " . $address1 . "\n\n" . $order_data['notes'];       /*klm*/