Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add phpmoney as default money type #237

Open
1 of 6 tasks
mesilov opened this issue Nov 28, 2021 · 3 comments
Open
1 of 6 tasks

add phpmoney as default money type #237

mesilov opened this issue Nov 28, 2021 · 3 comments
Assignees
Labels
2.x issue related with 2.x sdk version hacktoberfest-accepted Hacktoberfest improve DX developer experience improvement scope CRM application scope CRM ⏳ WIP work in progress
Milestone

Comments

@mesilov
Copy link
Owner

mesilov commented Nov 28, 2021

Проблема
деньги в ответах API не являются деньгами, из-за этого в клиентском коде разработчики обращаются с ними достаточно вольно и это является источником ошибок.

Предлагаемое решение
Занести как зависимость https://github.com/moneyphp/money

  • отлаженное решение
  • нет зависимостей на расширения PHP как с decimal
  • есть готовые рецепты для хранения в БД → конвертация в decimal

Ожидания по интеграции в SDK

К обсуждению
если в запросе на изменение переданы объекты PHPMoney (валюта \ деньги), то производить автоматическую сериализацию в структуры данных которые ожидает Б24

Проблемы для пользовательского типа данных

Текущая реализация:

var_dump($сontact->getUserfieldByFieldName('BALANCE'));
// string(6) "134.43"

Ожидание:
метод $сontact->getUserfieldByFieldName('BALANCE') вернёт объект Money\Money

Предлагаемое решение для пользовательских типов данных - чтение

Вариант 1 - использовать Serializer Component

При необходимости для поля может быть зарегистрирован денормалайзер имплементирующий интерфейс DenormalizerInterface компонента Serializer Component

Вариант 2 - обычная callback-функция
при получении поля проверяем наличие каллбек-функции зарегистрированной по имени поля, если она есть, то вызываем её.

в обоих случаях ответственность за приведение типа к Битрикс24-совместимому лежит на коде внутри callback-функции

Вопрос с записью оставляем открытым, но скорее всего придётся делать работу в обе стороны
нормализация\денормализация

@mesilov mesilov added 2.x issue related with 2.x sdk version improvement improve DX developer experience scope CRM application scope CRM labels Nov 28, 2021
@mesilov mesilov added this to the CRM scope milestone Nov 28, 2021
@mesilov mesilov self-assigned this Nov 28, 2021
@KarlsonComplete
Copy link
Contributor

KarlsonComplete commented Jul 22, 2022

покапать:

@KarlsonComplete
Copy link
Contributor

KarlsonComplete commented Jul 27, 2022

Изучить вопрос:

  1. Когда получать базовую валюту (в момент создания сервиса которые отвечают за работу с сущностями CRM)
  2. Можно ли создать сделку с товарами если у них выставлена другая валюта.
  3. Можно ли сделать сделку если в табличной части 2 товара с разной валютой.
  4. Решить вопрос куда смотреть при получении табличной сделки или лида . Откуда получать значения валюты из сделки или из лида?
  5. Обдумать вариант передачи аргумента в методе при создании лида или сделки.(Вся ответственность будет лежать внутри клиентского кода.)

@mesilov mesilov added the ⏳ WIP work in progress label Jul 27, 2022
@KarlsonComplete
Copy link
Contributor

KarlsonComplete commented Aug 3, 2022

Изучить вопрос:

  1. Когда получать базовую валюту (в момент создания сервиса которые отвечают за работу с сущностями CRM)

Возможно нам не очень и важна базовая валюта которая установлена в нашем битриксе так как мы можем взять нашу валюту из сделки.

  1. Можно ли создать сделку с товарами если у них выставлена другая валюта.

Можно, будет взята валюта которая выставлена в сделке. (Нужно указывать цену товара в самой сделке.)

  1. Можно ли сделать сделку если в табличной части 2 товара с разной валютой.

Можно, будет взята валюта которая выставлена в сделке. (Нужно указывать цену товара в самой сделке.)

  1. Решить вопрос куда смотреть при получении табличной сделки или лида . Откуда получать значения валюты из сделки или из лида?

Если работаем с лидом , то берем валюту из лида, если со сделкой , то берем валюту из сделки.

  1. Обдумать вариант передачи аргумента в методе при создании лида или сделки.(Вся ответственность будет лежать внутри клиентского кода.)

@mesilov mesilov added the hacktoberfest-accepted Hacktoberfest label Oct 29, 2022
@mesilov mesilov changed the title Добавить поддержку phpmoney как базового типа для денег add phpmoney as default money type Mar 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.x issue related with 2.x sdk version hacktoberfest-accepted Hacktoberfest improve DX developer experience improvement scope CRM application scope CRM ⏳ WIP work in progress
Projects
None yet
Development

No branches or pull requests

2 participants