Типы транзакций
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) |
Связанная документация