# Маржинальность

# /api/lite/products/prices/margin/history - История изменения средней цены закупки.

### <span style="color: #000000;">Подсказка полного адреса </span>(/api/prompter/address)

**/api/lite/products/prices/margin/history?id=1040.**

 Получения истории изменения Средней ценой закупки по кокнкретному товару. Входной параметр - id товара

```JSON
{
    "history": [
        {
            "date": "2023-09-18 12:53:08",
            "price": 125.00,
            "success": true
        },
        {
            "date": "2023-09-18 12:52:51",
            "price": 135.00,
            "success": true
        },
        {
            "date": "2023-09-12 09:01:30",
            "price": 125.00,
            "success": true
        },
        {
            "date": "2023-09-12 05:25:44",
            "price": 120.00,
            "success": true
        }
    ],
    "success": true
}
```

<div id="bkmrk-"></div><div id="bkmrk--0"></div><div id="bkmrk-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%BB%D0%BE%D1%81%D1%8C-%D0%BF%D0%BE-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87">выполнялось по задаче: [12072](https://openproject.notasoft.ru/projects/root/work_packages/12072/activity)</div><div id="bkmrk--1"></div>

# /api/lite/report/margin - пересчёт отчета по маржинальности.

**/api/lite/report/margin**

Метод принудительного пересчёта отчета по маржинальности и сохранения его в общие отчёты аккаунта

Отчёт состоит из: даты, массива предупреждений и массива каналов продаж. У предупреждений есть три типа (см. ссылку на задачу внизу). Каналы продаж состоят из названия канала и трёх массивов: годовой информации, месячной и недельной (см. JSON). Внутри каналов продаж есть ***totalSales,*** это суммарные значения всех каналов

входные параметры:

**isDelivered** - флаг указания, какой отчет вывести. Если надо вывести отгруженные, то не указывается или false. Если необходимо вывести отчет по доставленным товарам, то true. *<span style="text-decoration: underline;">Внимание</span>: независимо от флага, пересчёт будет совершен на оба отчёта. От флага зависит только вывод.*

```JSON
{
    "channelSales": [        
        {
            "annuallyData": [
                {
                    "margin": 0,
                    "point": "Сен",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
                {
                    "margin": 0,
                    "point": "Окт",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
              
                // ...
                // вырезал 9 месяцев, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": "Авг",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ],
            "channel": "ONLINE",
            "monthlyData": [
                {
                    "margin": 0,
                    "point": 20,
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
               
                // ...
                // вырезал 28 дней, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": 19,
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ],
            "weeklyData": [
                {
                    "margin": 0,
                    "point": "Ср",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 3350.00,
                    "totalSales": 4475.00
                },
                
                // ...
                // вырезал 5 дней, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": "Вт",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ]
        },
        {
            "annuallyData": [ ], // вырезал содержимое, чтобы не растягивать статью в вики
            "channel": "totalSales",
            "monthlyData": [ ], // вырезал содержимое, чтобы не растягивать статью в вики
            "weeklyData": [ ] // вырезал содержимое, чтобы не растягивать статью в вики
        }
    ],
    "date": "2023-09-20",
    "warning": [
        {
            "additionalInfo": "Список товаров: [1029, 1028, 1026, 1025, 1024, 1040]",
            "priority": 1,
            "title": "Нет данных. Для расчета укажите средние цены закупки."
        },
        {
            "additionalInfo": "Если в расчете фиксируются аномальные показатели маржинальности – меньше 1% или больше 50%.",
            "priority": 3,
            "title": "Аномальные показатели. Возможно необходимо актуализировать данные по ценам закупки и затрат."
        }
    ]
}
```

<div id="bkmrk-%D1%82%D0%B0%D0%BA%D0%B6%D0%B5-%D0%B5%D1%81%D1%82%D1%8C-%D0%BE%D1%82%D1%87%D0%B5%D1%82-%D0%BF%D0%BE%D1%82">также есть отчет потоварный, см. соседнюю статью.</div><div id="bkmrk-"></div><div id="bkmrk-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%BB%D0%BE%D1%81%D1%8C-%D0%BF%D0%BE-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87">выполнялось по задаче: [12073](https://openproject.notasoft.ru/projects/root/work_packages/12073/activity)</div>

# /api/lite/products/margin - расчёт отчёта по маржинальности для товара.

**/api/lite/products/margin?id=1040**

Метод расчёта отчета по маржинальности конкретного товара по его humanId. Используется метод GET, потому что никакие расчитанные данные не сохраняются в БД.

Отчёт состоит из: даты, массива предупреждений и массива каналов продаж. У предупреждений есть три типа (см. ссылку на задачу внизу). Каналы продаж состоят из названия канала и трёх массивов: годовой информации, месячной и недельной (см. JSON).

входные параметры:

**isDelivered** - флаг указания, какой отчет вывести. Если надо вывести отгруженные, то не указывается или false. Если необходимо вывести отчет по доставленным товарам, то true.

**skuHumanId** - id товара, на который требуется отчёт.

```JSON
{
    "channelSales": [        
        {
            "annuallyData": [
                {
                    "margin": 0,
                    "point": "Сен",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
                {
                    "margin": 0,
                    "point": "Окт",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
              
                // ...
                // вырезал 9 месяцев, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": "Авг",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ],
            "channel": "ONLINE",
            "monthlyData": [
                {
                    "margin": 0,
                    "point": 20,
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                },
               
                // ...
                // вырезал 28 дней, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": 19,
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ],
            "weeklyData": [
                {
                    "margin": 0,
                    "point": "Ср",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 3350.00,
                    "totalSales": 4475.00
                },
                
                // ...
                // вырезал 5 дней, чтобы не растягивать статью в вики
                // ...
              
                {
                    "margin": 0,
                    "point": "Вт",
                    "totalCosts": 0,
                    "totalIncome": 0,
                    "totalPurchases": 0.00,
                    "totalSales": 0.00
                }
            ]
        },
        {
            "annuallyData": [ ], // вырезал содержимое, чтобы не растягивать статью в вики
            "channel": "totalSales",
            "monthlyData": [ ], // вырезал содержимое, чтобы не растягивать статью в вики
            "weeklyData": [ ] // вырезал содержимое, чтобы не растягивать статью в вики
        }
    ],
    "date": "2023-09-20",
    "warning": [
        {
            "additionalInfo": "Список товаров: [1029, 1028, 1026, 1025, 1024, 1040]",
            "priority": 1,
            "title": "Нет данных. Для расчета укажите средние цены закупки."
        },
        {
            "additionalInfo": "Если в расчете фиксируются аномальные показатели маржинальности – меньше 1% или больше 50%.",
            "priority": 3,
            "title": "Аномальные показатели. Возможно необходимо актуализировать данные по ценам закупки и затрат."
        }
    ]
}
```

<div id="bkmrk-%D1%82%D0%B0%D0%BA%D0%B6%D0%B5-%D0%B5%D1%81%D1%82%D1%8C-%D0%BE%D1%82%D1%87%D0%B5%D1%82-%D0%BE%D0%B1%D1%89">также есть отчет общий на аккаунт, см. соседнюю статью.</div><div id="bkmrk-"></div><div id="bkmrk-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D1%8F%D0%BB%D0%BE%D1%81%D1%8C-%D0%BF%D0%BE-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87">выполнялось по задаче: [12073](https://openproject.notasoft.ru/projects/root/work_packages/12073/activity)</div>