При редактировании заказа слетает тип контакта в wa_contact_data Не принято

1

Через админку вводится заказ на Компанию. В таблице БД wa_contact_data для контакта проставляется contact_type = company. Соответственно печатается бланк заказа как для компании (от персон там у меня есть отличия).

Затем заказ редактируется. В принципе можно просто открыть и сохранить заказ вообще без изменений. После сохранения contact_type = person, что неприятно, потому что нет инструментов, кроме как залезть в БД, чтобы исправить обратно. Ни из заказа, ни из Контактов, ни из CRM это не правится никак совсем.

Самое забавное в том, что форма редактора заказа открывается как для компании, потому что в таблице wa_contact в колонке is_company стоит 1. Иконки у контакта по-умолчанию в приложениях Контакты и/или CRM у юзера и компании тоже отличаются и это проверяется тоже видимо по is_company = 1, т.е. визуально выглядит как будто все ОК, клиент продолжает оставаться компанией, но проверка по $order->getContactField('contact_type') уже не работает по вышеописанным причинам.

Конечно временно выкрутился из ситуации, но прошу проверить и подтвердить баг это или нет.

В идеале было бы хорошо добавить возможность смены типа клиента где-то в админке наряду с редактором контакта.

4 комментария

  • +1
    Михаил Ушенин Михаил Ушенин Webasyst 26 марта 2021 15:08 #

    Использовать для проверки типа покупателя код $order->getContactField('contact_type') неправильно. Значение contact_type в таблице wa_contact_data, возможно, сохраняется по ошибке, и полагаться на него — ненадёжно. Для проверки типа покупателя используйте свойство is_company.

    • +1

      Михаил, я иногда просто поражаюсь с ваших ответов. Хотите вы это признавать или нет, но факт остается фактом: разработчик (или постановщик ТЗ) от WA накосячил, когда данный функционал создавался. Сам не раз сталкивался с ситуацией, когда покупатель оформлял заказ как физ лицо, но при подтверждении заказа просил переоформить его на компанию. Сделать это на текущей версии Shop Script без плясок с бубном невозможно.

      Менеджер магазина должен иметь возможность в любой момент редактировать тип покупателя, и как это можно сделать - должно быть интуитивно понятно.

       

       

      ----

      Значение contact_type в таблице wa_contact_data, возможно, сохраняется по ошибке

      Сообщение об ошибке: Не принято.

      "Ошибку допускаем, но не принимаем". Просто гениально. Аплодисменты.

    • +1
      replicant replicant 26 марта 2021 15:51 #

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

      Но там будет не всё гладко, т.к. наборы полей и типов контактов отличаются и должен быть какой-то warning при смене типа о том, что возможно инфа из таких-то полей будет затерта или что-то в таком ключе. Однако об этом думать пока не хочется тоже.

    • +1
      replicant replicant 26 марта 2021 16:41 #

      Кстати, этот is_company штука новая, т.к. её даже в доках https://developers.webasyst.ru/docs/contacts-app-integration/ не отразили и contact_type наряду с phone, url и др. там тоже нет (смайл).

      В принципе на доки можно и забить, если известна структура БД, то запросить поле дело пары сек, но всё же. Отразите там что-нибудь про это поле.

      И ещё вопрос. Какой из вариантов более правильный?

      1. {$order->getContactField('is_company')}
      2. {$wa->contact($order.contact_id)->get('is_company')}

      Добавить комментарий

      Чтобы добавить комментарий, зарегистрируйтесь или войдите