public class ContractDto
{
/// <summary>
/// Код договора
/// </summary>
public long ID { get; set; }
/// <summary>
/// Время начала аренды
/// </summary>
public DateTime DateFrom { get; set; }
/// <summary>
/// Время окончания аренды
/// </summary>
public DateTime DateTo { get; set; }
/// <summary>
/// Строковое наименование автомобиля
/// </summary>
public string Vehicle { get; set; }
/// <summary>
/// Код автомобиля
/// </summary>
public long VehicleId { get; set; }
/// <summary>
/// Территория эксплуатации
/// </summary>
public string AllowedLocation { get; set; }
/// <summary>
/// Адрес доставки
/// </summary>
public AddressDto DeliveryAddress { get; set; }
/// <summary>
/// Адрес возврата
/// </summary>
public AddressDto ReturnAddress { get; set; }
/// <summary>
/// Строковый номер договора
/// </summary>
public string ContractNumber { get; set; }
/// <summary>
/// Статус договора
/// </summary>
public DogovorState ContractState { get; set; }
/// <summary>
/// Уточнение статуса договора
/// </summary>
public long CustomContractState { get; set; }
/// <summary>
/// Тип договора
/// </summary>
public long ContractType { get; set; }
/// <summary>
/// Детальная информация об условиях открытия договора
/// </summary>
public OpenedInfoDto OpenedInfo { get; set; }
/// <summary>
/// Детальная информация об условиях открытия договора или последнем продлении (если оно было), если продлений НЕ было, то совпадает с OpenedInfo
/// </summary>
public OpenedInfoDto LastOpenedInfo { get; set; }
/// <summary>
/// Объект автомобиль
/// </summary>
public AutoDto Auto { get; set; }
/// <summary>
/// Баланс
/// </summary>
public decimal TotalBalanceSum { get; set; }
/// <summary>
/// Баланс штрафов
/// </summary>
public decimal FinesGBDDBalance { get; set; }
/// <summary>
/// Баланс депозита
/// </summary>
public decimal DepositBalance { get; set; }
/// <summary>
/// Баланс аренды
/// </summary>
public decimal RentBalance { get; set; }
/// <summary>
/// Баланс дополнительных услуг
/// </summary>
public decimal AddServicesBalance { get; set; }
/// <summary>
/// Баланс прочих услуг
/// </summary>
public decimal OtherBalance { get; set; }
/// <summary>
/// Дата до которой оплачен договор
/// </summary>
public DateTime PaymentBeforeDate { get; set; }
/// <summary>
/// Дата до которой удерживается депозит
/// </summary>
public DateTime ReturnDepositDateTime { get; set; }
/// <summary>
/// Е-Подписи
/// </summary>
public List<ESignOutputDto> ESigns { get; set; }
}
public class ESignOutputDto
{
/// <summary>
/// Дата подписания
/// </summary>
public string SignDate { get; set; }
/// <summary>
/// Версия подписанного документа
/// </summary>
public string ContractVersion { get; set; }
/// <summary>
/// Адреса документов, которые были подписаны
/// </summary>
public string[] Documents { get; set; }
/// <summary>
/// Сервис с помощью которого было отправлено сообщение для подписи
/// </summary>
public string KeyTransport { get; set; }
/// <summary>
/// Ключ для подписи договора
/// </summary>
public string UserSignKey { get; set; }
/// <summary>
/// Хэш ключа для подписи
/// </summary>
public string UserSignHash { get; set; }
}
Допустимые значения поля ContractState см. в Перечисление DogovorState
Допустимые значения поля CustomContractState см. в Перечисление XPContractStates
Описание поля Auto см. Объект Автомобиль (AutoDto)
Описание поля LastOpenedInfo см. ниже
public class OpenedInfoDto
{
//----------------стоимость открытия или продления--------------
/// <summary>
/// Базовая цена при заключении
/// </summary>
public double BasePrice { get; set; } = 0;
/// <summary>
/// Признак того, что базовая цена была установлена вручную а не расчитана по тарифу
/// </summary>
public bool IsCustomBasePrice { get; set; } = false;
/// <summary>
/// Признак того, что текущая цена была установлена вручную а не расчитана по тарифу
/// </summary>
public bool IsCustomCurrentPrice { get; set; } = false;
/// <summary>
/// Текущая цена по тарифу
/// </summary>
public double CurrentPrice { get; set; } = 0;
/// <summary>
/// Сумма депозита
/// </summary>
public double DepositSum { get; set; } = 0;
/// <summary>
/// Сумма начисленная за услуги (аренда + доп. услуги)
/// </summary>
public double ServicesSum { get; set; } = 0;
/// <summary>
/// Сумма дополнительных услуг
/// </summary>
public double AddServices { get; set; } = 0;
/// <summary>
/// Сумма дополнительной скидки
/// </summary>
public double ExternalDiscountSum { get; set; } = 0;
/// <summary>
/// Итоговая сумма (DepositSum + ServicesSum)
/// </summary>
public double TotalSum { get; set; } = 0;
/// <summary>
/// Сумма за услуги без дополнительных услуг
/// </summary>
public double ServicesSumWithotAddServices { get; set; } = 0;
/// <summary>
/// Стоимость договора без скидок, базовая цена * кол-во дней, т.е. сколько бы клиент заплатил без скидок на авто, скидок клиента и скидок по тарифу
/// </summary>
public double BasePriceSum { get; set; } = 0;
//-------------------скидки действующие при открытии или продлении---
/// <summary>
/// Процент скидка на автомобиль
/// </summary>
public double AutoDiscountPercent { get; set; } = 0;
/// <summary>
/// Верхняя дата действия скидки по договору
/// </summary>
public DateTime AutoDiscountBeforeDate { get; set; } = A2.Libs.DateTime2.MinSystemDate;
/// <summary>
/// Процент скидки клиента
/// </summary>
public double ClientDiscountPercent { get; set; } = 0;
/// <summary>
/// Процент скидки по тарифу
/// </summary>
public double TarifDiscountPercent { get; set; } = 0;
/// <summary>
/// Результирующий процент скидки
/// </summary>
public double ResultDiscountPercent { get; set; } = 0;
/// <summary>
/// Скидка в процентах текущей цены относительно базовой (100 - GetPercent(BasePrice, CurrentPrice))
/// </summary>
public double BasePriceDiscountPercent { get; set; } = 0;
/// <summary>
/// Итоговая скидка в процентах без учета скидки клиента (BasePriceDiscountPercent + AutoDiscountPercent)
/// </summary>
public double TotalDiscountPercent { get; set; } = 0;
/// <summary>
/// Итоговая сумма скидки
/// </summary>
public double Discount { get; set; } = 0;
//------------------период действия открытия или продления
/// <summary>
/// Начало действия договора
/// </summary>
public DateTime DateTimeFrom { get; set; } = A2.Libs.DateTime2.MinSystemDate;
/// <summary>
/// Окончание дейтсвия договора
/// </summary>
public DateTime DateTimeTo { get; set; } = A2.Libs.DateTime2.MinSystemDate;
/// <summary>
/// Целое кол-во дней договора
/// </summary>
public int CountDays { get; set; } = 0;
/// <summary>
/// Количество часов по договору
/// </summary>
public int CountHours { get; set; } = 0;
/// <summary>
/// Кол-во дней с часами в десятичном представлении
/// </summary>
public double CountDaysWithHours { get; set; } = 0;
/// <summary>
/// Период действия договора
/// </summary>
public TimeSpan ContractInterval { get; set; } = TimeSpan.Zero;
/// <summary>
/// Период действия договора в строковом выражени (например, 5 дней 17 часов)
/// </summary>
public string ContractIntervalString { get; set; } = "";
/// <summary>
/// Расчетное количество суток, дробная часть соответствует параметру DayHoursePart
/// </summary>
public decimal EstimatedDaysCount { get; set; } = 0;
/// <summary>
/// Часть суток, выраженная в десятичной форме, которая соответсвует кол-ву часов, превышающих сутки.
/// Например, 1 сутки и три часа. Три часа тарифицируются как 60% суток, поэтому в DayHoursePart == 0.6.
/// </summary>
public decimal DayHoursePart { get; set; } = 0;
//-----------------------тариф--------------------------
/// <summary>
/// Наименование тарифа
/// </summary>
public string TarifTitle { get; set; } = "";
/// <summary>
/// Код тарифа
/// </summary>
public long TarifId { get; set; } = 0;
/// <summary>
/// Полностью сериализованый тариф, который использовался при операции
/// </summary>
public string TarifString { get; set; } = "";
/// <summary>
/// Значение тарифа для открытия или продления договора
/// </summary>
public Tarifs.TarifValue TarifValue { get; set; } = new Tarifs.TarifValue();
//---------------------ограничения тарифа---------------
/// <summary>
/// Стоимость километра перепробега
/// </summary>
public long MilleageCost { get; set; } = 0;
/// <summary>
/// Флаг того, что используется увеличенный лимит по пробегу
/// </summary>
public bool IsUpperMilleageLimit { get; set; } = false;
/// <summary>
/// Кол-во километров, включенных в лимитный тариф
/// </summary>
public long MillegaeLimit { get; set; } = 0;
/// <summary>
/// Лимит отвественности
/// </summary>
public long LiabilityLimit { get; set; } = 0;
/// <summary>
/// Кол-во дней переноса договора (при смене автмобиля)
/// </summary>
public int TransferCountDays { get; set; } = 0;
//--------------------доп. услуги---------------------
/// <summary>
/// Список дополнительных услуг
/// </summary>
public List<XL.Base.AddServices.ServicePriceItem> AddServicesList { get; set; } = null;
}
Описание класса AddressDto см. ниже
public class AddressDto
{
/// <summary>
/// Отображаемый адрес
/// </summary>
public string DisplayAddress { get; set; } = "";
/// <summary>
/// Широта (могут пыть пустыми если адрес не нормализован)
/// </summary>
public string Lat { get; set; } = "";
/// <summary>
/// Долгота (могут пыть пустыми если адрес не нормализован)
/// </summary>
public string Lon { get; set; } = "";
}
{
DateFrom: “11.12.2017 21:10:10”,
DateTo: “12.12.2017 23:10:10”,
Vehicle: “Mercedes Benz G-Класс 2018, черный”,
AllowedLocation: “Москва и МО”,
ContractNumber: “170031”,
ContractState: 0,
CustomContractState: 0
}