Перейти к содержанию

Типы транзакций

OperationType — тип операции

Значение Описание Обратная операция
Покупка Заправка топлива Возврат
Возврат Возврат топлива Покупка
Неопределен Неопределённый тип

TransactionType — источник транзакции

Значение Описание
ApiVink От внешнего ВИНКа
FuelProcessing Внутренняя операция
Manual Вручную

FinanceTransaction — структура

Основные поля

Поле Тип Описание
Id int Уникальный идентификатор
CreateTime DateTime Дата/время транзакции
CreateTimeUtc DateTime Дата/время в UTC
LitersSum decimal Количество литров
PriceBase decimal Базовая цена за литр
FullSum decimal Итоговая сумма
TransactionNumber string Номер транзакции
UniqVINKCode string Уникальный код ВИНКа
OperationType OperationType Тип операции
From TransactionType Источник транзакции

Связанные сущности

Поле Тип Описание
CardId int? Карта
GasStationId int? АЗС
FuelTypeId int? Тип топлива
CompanyId int? Компания
CompanyUserId int? Пользователь компании
UserId int? Пользователь

Флаги расчёта

Поле Тип Описание
NeedCalculate bool Требует расчёта
ReceiveWithNegativeBalance bool Принята с отрицательным балансом

Части транзакции (FinanceTransactionPart)

Транзакция может быть разделена на несколько частей:

FinancePartType

Тип Описание Поток
ВинкДистрибьютор VINK → Дистрибьютор Fuel Vendor → Distributor
ДистрибьюторПокупатель Дистрибьютор → Покупатель Distributor → Customer
ПокупательПокупатель Покупатель → Покупатель Resale → Another Company

Структура части

Поле Тип Описание
FinanceTransactionId int Родительская транзакция
CompanyId int? Компания для этой части
DirectContractId int? Контракт
DirectContractWithVendorId int? Контракт с ВИНКом
FinancePartType FinancePartType Тип части
Price decimal? Цена за литр
Sum decimal? Сумма
Commission decimal? Комиссия

Жизненный цикл транзакции

stateDiagram-v2
    [*] --> Получена: От ВИНКа или вручную
    Получена --> ОжидаетРасчёта: NeedCalculate = true
    ОжидаетРасчёта --> Валидация: FinanceTransactionCalculateJob
    Валидация --> Распределение: Карта и контракт валидны
    Валидация --> Ошибка: Нет контракта
    Распределение --> Ценообразование: Создание частей
    Ценообразование --> ПроверкаБаланса: Получение условий
    ПроверкаБаланса --> ОтрицательныйБаланс: Баланс < threshold
    ПроверкаБаланса --> НормальноеЦенообразование: Баланс OK
    ОтрицательныйБаланс --> Готово: Special pricing
    НормальноеЦенообразование --> Готово: Normal pricing
    Ошибка --> [*]
    Готово --> [*]: NeedCalculate = false

Отрицательный баланс

При транзакции с недостаточным балансом:

Поле в MinusBalanceTransaction Описание
PercentDiscountForNegativeBalance Процент снижения скидки
RublesDiscountForNegativeBalance Рубль надбавки
PriceByStellaForNegativeBalance Цена без скидки (Stella)

Связанная документация