| | | 1 | | namespace OzonOrdersWeb.WebServices.Transactions.Grid.Commit; |
| | | 2 | | |
| | | 3 | | /// <summary> |
| | | 4 | | /// Ключи шагов проведения. Порядок задаёт <c>TransactionDefinition.Steps</c>; сам порядок повторяет |
| | | 5 | | /// <c>BaseTransactionController.CreateTransactionPostBase</c>, чтобы поведение не отличалось от классических страниц. |
| | | 6 | | /// </summary> |
| | | 7 | | public static class TransactionCommitStepKeys |
| | | 8 | | { |
| | | 9 | | /// <summary>Загрузка заказов из БД с учётом RLS/скоупа, исключение вычеркнутых строк.</summary> |
| | | 10 | | public const string ScopeAndLoad = "scope-and-load"; |
| | | 11 | | |
| | | 12 | | /// <summary>Проверка исходных статусов и маркетплейс-статусов, prior-GUID 1С.</summary> |
| | | 13 | | public const string ValidateSourceStatus = "validate-source-status"; |
| | | 14 | | |
| | | 15 | | /// <summary>Отмена отправлений в Ozon до смены статусов; ошибка API останавливает проведение.</summary> |
| | | 16 | | public const string OzonCancel = "ozon-cancel"; |
| | | 17 | | |
| | | 18 | | /// <summary>Проверка остатков 1С (дефицит → черновик / пропуск 1С), остатки WS.</summary> |
| | | 19 | | public const string OneCStockCheck = "onec-stock-check"; |
| | | 20 | | |
| | | 21 | | /// <summary>Прямое оформление в корзинах API-поставщиков до смены статусов.</summary> |
| | | 22 | | public const string SupplierCartsPre = "supplier-carts-pre"; |
| | | 23 | | |
| | | 24 | | /// <summary>Применение правок формы к заказам (TransactOrder, разбиение по количеству).</summary> |
| | | 25 | | public const string ApplyEdits = "apply-edits"; |
| | | 26 | | |
| | | 27 | | /// <summary>Остаток разбитого заказа (/1) и qty = 0 → «К отмене».</summary> |
| | | 28 | | public const string QuantitySplitCancellation = "quantity-split-cancellation"; |
| | | 29 | | |
| | | 30 | | /// <summary>Заказы с qty = 0 → «Утерян поставщиком» / транзит «Утерян реализатором».</summary> |
| | | 31 | | public const string ZeroQuantityPolicy = "zero-quantity-policy"; |
| | | 32 | | |
| | | 33 | | /// <summary>Целевой статус из StatusTransition или дефолта определения.</summary> |
| | | 34 | | public const string ResolveTargetStatus = "resolve-target-status"; |
| | | 35 | | |
| | | 36 | | /// <summary>Документ 1С по <c>OneCDocument</c> определения.</summary> |
| | | 37 | | public const string OneCDocument = "onec-document"; |
| | | 38 | | |
| | | 39 | | /// <summary>Запись Transaction и привязка заказов.</summary> |
| | | 40 | | public const string CreateTransaction = "create-transaction"; |
| | | 41 | | |
| | | 42 | | /// <summary>История проводок 1С и переходов статусов.</summary> |
| | | 43 | | public const string History = "history"; |
| | | 44 | | |
| | | 45 | | /// <summary>Кэши заказов/транзакций, SignalR-уведомление всем.</summary> |
| | | 46 | | public const string CachesAndNotify = "caches-and-notify"; |
| | | 47 | | |
| | | 48 | | /// <summary>Засыл, доп. расходы, снимок расчётов.</summary> |
| | | 49 | | public const string ZasylExpensesSnapshot = "zasyl-expenses-snapshot"; |
| | | 50 | | |
| | | 51 | | /// <summary>Корзины в режиме «basket» и сборка отправления в Ozon.</summary> |
| | | 52 | | public const string SupplierCartsPost = "supplier-carts-post"; |
| | | 53 | | |
| | | 54 | | /// <summary>Независимая проверка у API-поставщиков, что заказы реально созданы; сводка + системная запись в историю |
| | | 55 | | public const string SupplierVerification = "supplier-verification"; |
| | | 56 | | |
| | | 57 | | /// <summary>Завершение сессии учёта времени.</summary> |
| | | 58 | | public const string TimeTracking = "time-tracking"; |
| | | 59 | | |
| | | 60 | | /// <summary>Постановка AI-комментария в очередь.</summary> |
| | | 61 | | public const string AiComment = "ai-comment"; |
| | | 62 | | |
| | | 63 | | /// <summary>Стандартный порядок для транзакций без внешних интеграций.</summary> |
| | 1 | 64 | | public static readonly IReadOnlyList<string> StatusOnly = new[] |
| | 1 | 65 | | { |
| | 1 | 66 | | ScopeAndLoad, ValidateSourceStatus, ApplyEdits, ResolveTargetStatus, CreateTransaction, History, |
| | 1 | 67 | | CachesAndNotify, ZasylExpensesSnapshot, TimeTracking, AiComment |
| | 1 | 68 | | }; |
| | | 69 | | |
| | | 70 | | /// <summary>Порядок с документом 1С (проверка остатков → документ → запись).</summary> |
| | 1 | 71 | | public static readonly IReadOnlyList<string> WithOneC = new[] |
| | 1 | 72 | | { |
| | 1 | 73 | | ScopeAndLoad, ValidateSourceStatus, OneCStockCheck, ApplyEdits, ZeroQuantityPolicy, ResolveTargetStatus, |
| | 1 | 74 | | OneCDocument, CreateTransaction, History, CachesAndNotify, ZasylExpensesSnapshot, TimeTracking, AiComment |
| | 1 | 75 | | }; |
| | | 76 | | |
| | | 77 | | /// <summary>Заказ поставщику: отмена в Ozon, корзины, разбиение, сборка отправления.</summary> |
| | 1 | 78 | | public static readonly IReadOnlyList<string> OrderToSupplier = new[] |
| | 1 | 79 | | { |
| | 1 | 80 | | ScopeAndLoad, ValidateSourceStatus, OzonCancel, SupplierCartsPre, ApplyEdits, QuantitySplitCancellation, |
| | 1 | 81 | | ResolveTargetStatus, CreateTransaction, History, CachesAndNotify, ZasylExpensesSnapshot, SupplierCartsPost, |
| | 1 | 82 | | SupplierVerification, TimeTracking, AiComment |
| | 1 | 83 | | }; |
| | | 84 | | |
| | | 85 | | /// <summary>Статус-only с панелью отмены Ozon.</summary> |
| | 1 | 86 | | public static readonly IReadOnlyList<string> StatusOnlyWithOzonCancel = new[] |
| | 1 | 87 | | { |
| | 1 | 88 | | ScopeAndLoad, ValidateSourceStatus, OzonCancel, ApplyEdits, ResolveTargetStatus, CreateTransaction, History, |
| | 1 | 89 | | CachesAndNotify, ZasylExpensesSnapshot, TimeTracking, AiComment |
| | 1 | 90 | | }; |
| | | 91 | | |
| | | 92 | | /// <summary>Проценка: только цены, без статусов и истории переходов.</summary> |
| | 1 | 93 | | public static readonly IReadOnlyList<string> Percentage = new[] |
| | 1 | 94 | | { |
| | 1 | 95 | | ScopeAndLoad, ApplyEdits, CreateTransaction, CachesAndNotify, ZasylExpensesSnapshot, TimeTracking, AiComment |
| | 1 | 96 | | }; |
| | | 97 | | } |