| | | 1 | | using System.ComponentModel.DataAnnotations; |
| | | 2 | | using System.ComponentModel.DataAnnotations.Schema; |
| | | 3 | | |
| | | 4 | | namespace OzonDomains.Models.ArmtekEtp; |
| | | 5 | | |
| | | 6 | | /// <summary> |
| | | 7 | | /// Запуск загрузки из кабинета Armtek (плановый или с кнопки). По последнему успешному запуску страница показывает |
| | | 8 | | /// «Обновлено», по последнему неудачному — ошибку; без журнала время зависело бы от того, были ли новые документы. |
| | | 9 | | /// </summary> |
| | | 10 | | [Table("ArmtekEtpSyncRuns")] |
| | | 11 | | public class ArmtekEtpSyncRun |
| | | 12 | | { |
| | 8 | 13 | | public long Id { get; set; } |
| | | 14 | | |
| | 8 | 15 | | public DateTime StartedAtUtc { get; set; } |
| | 8 | 16 | | public DateTime? FinishedAtUtc { get; set; } |
| | | 17 | | |
| | 11 | 18 | | public DateTime PeriodFrom { get; set; } |
| | 10 | 19 | | public DateTime PeriodTo { get; set; } |
| | | 20 | | |
| | | 21 | | /// <summary>Кто запустил: «Расписание» или имя пользователя.</summary> |
| | 32 | 22 | | [MaxLength(256)] public string Trigger { get; set; } = string.Empty; |
| | | 23 | | |
| | | 24 | | /// <summary>null — ещё идёт (или процесс упал, не дописав результат).</summary> |
| | 13 | 25 | | public bool? Success { get; set; } |
| | | 26 | | |
| | 9 | 27 | | [MaxLength(2000)] public string? Message { get; set; } |
| | | 28 | | |
| | | 29 | | /// <summary> |
| | | 30 | | /// Ошибка загрузки взаиморасчётов из кабинета. Фактуры идут через API и от кабинета не зависят: запуск успешен, |
| | | 31 | | /// а взаиморасчёты остаются от прошлой загрузки — страница показывает это предупреждением. |
| | | 32 | | /// </summary> |
| | 10 | 33 | | [MaxLength(2000)] public string? SettlementsError { get; set; } |
| | | 34 | | |
| | 10 | 35 | | public int Settlements { get; set; } |
| | 9 | 36 | | public int NewSettlements { get; set; } |
| | 8 | 37 | | public int Invoices { get; set; } |
| | 7 | 38 | | public int InvoiceErrors { get; set; } |
| | | 39 | | } |