Size: a a a

Software Design/Architecture/Zen

2021 May 05

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Motivation
Most of e-commerce platforms need to deal with the order management: creating invoices, cancelations, refunds. In every sales document we need the right amounts: shipping, total, price for each item.

Many implementations have rounding issues on calculations and do not give flexibility to cancel promotions.

By introducing the Order model this library covers business cases with promotions cancelation in sales documents.

https://community.shopify.com/c/Shopify-Design/Problem-with-rounding-prices/td-p/416162
https://magento.stackexchange.com/questions/225168/magento1-9-paypal-rounding-amount-issue
https://github.com/woocommerce/woocommerce/issues/14458
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
ага, поддержкой занимаются те, кто пишут код с багами)))
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну вот есть сейчас системы на фортранах и кобалах которые так же были реализованы на основе неких моделей которые были понятны авторам и которые с 70-х нет трогают потому что "это работает и дороже будет переделать"
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
так выглядит профессионализм.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
а человек радуется ибо модуль стабильный, там нечему меняться. Соответственно можно продолжать носиться и тыкать в чатах ссылку на эту штуку. Круто что человек делится тем что делает, но в целом на ошибках округления бизнес может деньги делать)
источник

N

Nikita in Software Design/Architecture/Zen
поскольку скобочки в конце нет, задам вопрос: это сарказм или реально так выглядит "профессионализм"?
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
эй, там не только ошибка округления, но и поддержка отмены промоушена! Всё-таки есть разница: раскидывать промо-скидку равномерно по продуктам, или иметь возможность отменить, если условия промо больше не соблюдены
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть это просто rules engine, так?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ты еще тесты не смотрел
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
Ну не совсем - рулзы извне задаются (инджектятся). На бизнес-кейсы посмотри:
Bad calculation balance: 3.71€
Spreading discount calculation balance: 9.71€ (+6 €)
Promotional calculation balance: 12.71€ (+ 9 €)
9 € - это уже не округление 😂
источник

SP

Sergey Protko in Software Design/Architecture/Zen
в этом и смысл rules engine - в том что бы рулы извне инджектились
источник

SP

Sergey Protko in Software Design/Architecture/Zen
просто это не обсуждают видимо в ФП чатах
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
окей. Если ты тот пдф файл до 3й страницы досмотрел - то там вводится понятие Cart - вот на основании этого (injectable) Cart (rules engine, или как хочешь его называй) - расчитываются инвойсы/рефанды/отмены
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in Software Design/Architecture/Zen
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
сарказм канеш. это райтонли код. профессионалы пишут поддерживаемый и easy to change код.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
позволь вопрос. Сколько людей работают над системой с которой ты работаешь? Вот для которой эта штука придумывалась. Включая продуктов и вот всех этих шарлатанов
источник

SP

Sergey Protko in Software Design/Architecture/Zen
просто порядок величин интересует
источник

SP

Sergey Protko in Software Design/Architecture/Zen
я бы сказал цель должна быть easy to throw away code
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
ну да, тут скорее про замену компонентов чем про изменение их. изменение системы в целом больше имеется ввиду
источник

АГ

Алексей Гевондян... in Software Design/Architecture/Zen
все на лямбдах там, нафига городить лямбды, если можно определить четкие функции, где понятно что на входе, что на выходе, и тестировать легко... словно искуственно так написано, чтобы сложно максимально было
источник