## Integration: Competera <> OMS <> CRM <> View Варто врахувати, що зараз ціно утворення відбувається на стороні старої системи CRM. Ціноутворення включає в себе - первинний імпорт цін, при заведенні товарів; - додовання промо ціни (акційна); - параметри формуваеея ціни: ціна специфікації з пдв, ціна специфікації з пдв з урахуванням беків, РРЦ, МРЦ, ціна закупівлі, мінімальна маржа, цільова маржа; - ціна для опта; Зараз на рівні CRM є логіка котра розраховує ціну і передає на вітрину (сайт). При переході на PMS (Competera) ми переносимо більшу частину ціноутворення з CRM туди. Окрім створення акційних цін, цін на бандли (продажа групи товарів) і оптової ціни. #### Ідея реалізації Ціноутворення для звичайних товарів котрі не продаються як оптові і як бандли ми переносимо на сторону Competera. Competera на своїй стороні розраховує актуальну ціну і відправляє через Kafka топік (competera.product_price_updated) нам в OMS. Ми на стороні OMS як джерело правди по цінам сприймаємо Competera. Отримані ціни записуємо в БД як актуальна ціна і передаємо в RMQ на CRM як оновлення по товару. Далі CRM записує собі цю інформацію і передає на вітрину. Якщо на рівні CRM ціну буде установленно вручну то це перезапише ціну котру прислали ми і ця ціна полетить на вітрину. Нова ціна, котра була встановленна на рівні CRM буде врахована Competera і при наступній відправці ми її отримаємо в OMS і далі прокинемо в CRM. Тобто всі ціни котрі приходять з Competera завжди перезаписують все інше. На рівні CRM залишаємо формування ціни для бандлів і опта. В першій ітерації Competera не працює з цим. #### Squence diagram зміни та передачі ціни на вітрину. ```sequence Competera->OMS: Sent actual price Note right of OMS: OMS save actual price for products OMS->CRM: Send actual price Note right of CRM: CRM save actual price CRM->View: Send actual price Note right of CRM: In CRM add new price to products CRM->View: Sent actual price Note left of Competera: The new iteration Competera->OMS: Sent actual price Note right of OMS: OMS save actual price for products OMS->CRM: Send actual price Note right of CRM: CRM save actual price CRM->View: Send actual price ``` #### Flowchart зміни ціни ```flow st=>start: OMS:Get actual price e=>end: Send price to Store View op=>operation: OMS:save price in op2=>operation: OMS:send price to CRM op3=>operation: CRM:save as actual price cond=>condition: CRM:Is price manually change? st->op->op2->op3->cond cond(yes, right)->op3 cond(no)->e ``` Потік даних налаштований в одному напрямку, де джерелом правди по ціни завжди буде Competera. З Competera ціна приходить в OMS і далі прокидується на вітрину як актуальна ціна через CRM. Якщо ціна буде зміненна на рівні CRM то до наступного оновлення ця ціна з БД буде затягнута в Competera і врахована при наступній пероцінці. ### Додатково нам потрібно У нас уже для компетара уже створенна view з назвою competera_products і нам до цієї view потрібно додати поле in_stok в котрому показувати залишки по товарам в кількості шт. на складі.