Через админку вводится заказ на Компанию. В таблице БД wa_contact_data для контакта проставляется contact_type = company. Соответственно печатается бланк заказа как для компании (от персон там у меня есть отличия).
Затем заказ редактируется. В принципе можно просто открыть и сохранить заказ вообще без изменений. После сохранения contact_type = person, что неприятно, потому что нет инструментов, кроме как залезть в БД, чтобы исправить обратно. Ни из заказа, ни из Контактов, ни из CRM это не правится никак совсем.
Самое забавное в том, что форма редактора заказа открывается как для компании, потому что в таблице wa_contact в колонке is_company стоит 1. Иконки у контакта по-умолчанию в приложениях Контакты и/или CRM у юзера и компании тоже отличаются и это проверяется тоже видимо по is_company = 1, т.е. визуально выглядит как будто все ОК, клиент продолжает оставаться компанией, но проверка по $order->getContactField('contact_type') уже не работает по вышеописанным причинам.
Конечно временно выкрутился из ситуации, но прошу проверить и подтвердить баг это или нет.
В идеале было бы хорошо добавить возможность смены типа клиента где-то в админке наряду с редактором контакта.
4 комментария
Использовать для проверки типа покупателя код $order->getContactField('contact_type') неправильно. Значение contact_type в таблице wa_contact_data, возможно, сохраняется по ошибке, и полагаться на него — ненадёжно. Для проверки типа покупателя используйте свойство is_company.
Михаил, я иногда просто поражаюсь с ваших ответов. Хотите вы это признавать или нет, но факт остается фактом: разработчик (или постановщик ТЗ) от WA накосячил, когда данный функционал создавался. Сам не раз сталкивался с ситуацией, когда покупатель оформлял заказ как физ лицо, но при подтверждении заказа просил переоформить его на компанию. Сделать это на текущей версии Shop Script без плясок с бубном невозможно.
Менеджер магазина должен иметь возможность в любой момент редактировать тип покупателя, и как это можно сделать - должно быть интуитивно понятно.
----
"Ошибку допускаем, но не принимаем". Просто гениально. Аплодисменты.
Собственно проверку на is_company и переделал. Остальное мне уже не важно, кроме желания иметь в админке возможность переключения типа контакта, которой сейчас нет.
Но там будет не всё гладко, т.к. наборы полей и типов контактов отличаются и должен быть какой-то warning при смене типа о том, что возможно инфа из таких-то полей будет затерта или что-то в таком ключе. Однако об этом думать пока не хочется тоже.
Кстати, этот is_company штука новая, т.к. её даже в доках https://developers.webasyst.ru/docs/contacts-app-integration/ не отразили и contact_type наряду с phone, url и др. там тоже нет (смайл).
В принципе на доки можно и забить, если известна структура БД, то запросить поле дело пары сек, но всё же. Отразите там что-нибудь про это поле.
И ещё вопрос. Какой из вариантов более правильный?