| | | 1 | | @model OzonDomains.Models.WarehouseMapping |
| | | 2 | | @{ |
| | 0 | 3 | | ViewData["Title"] = "Редактирование связи складов"; |
| | 0 | 4 | | Layout = "~/Views/Shared/_Layout.cshtml"; |
| | | 5 | | } |
| | | 6 | | |
| | | 7 | | <style> |
| | | 8 | | .card { border: none; box-shadow: 0 0.125rem 0.25rem rgba(var(--og-shadow-rgb), 0.075); border-radius: 0.5rem; } |
| | | 9 | | .card-header { background-color: var(--og-surface-2); border-bottom: 1px solid var(--og-surface-3); padding: 1.25rem |
| | | 10 | | .card-body { padding: 1.5rem; } |
| | | 11 | | .form-label { font-weight: 600; color: var(--og-text-2); margin-bottom: 0.25rem; } |
| | | 12 | | .text-muted-small { font-size: 0.8rem; color: var(--og-text-3); } |
| | | 13 | | |
| | | 14 | | .wm-intro { |
| | | 15 | | display: flex; |
| | | 16 | | gap: 0.75rem; |
| | | 17 | | padding: 0.9rem 1.1rem; |
| | | 18 | | background: var(--og-accent-bg); |
| | | 19 | | border: 1px solid var(--og-accent-border); |
| | | 20 | | border-radius: 0.5rem; |
| | | 21 | | margin-bottom: 1.5rem; |
| | | 22 | | } |
| | | 23 | | |
| | | 24 | | .wm-intro i.fa-circle-info { |
| | | 25 | | color: var(--og-accent); |
| | | 26 | | font-size: 1.1rem; |
| | | 27 | | margin-top: 0.1rem; |
| | | 28 | | flex-shrink: 0; |
| | | 29 | | } |
| | | 30 | | |
| | | 31 | | .wm-intro-text { |
| | | 32 | | font-size: 13px; |
| | | 33 | | color: var(--og-text); |
| | | 34 | | line-height: 1.5; |
| | | 35 | | } |
| | | 36 | | </style> |
| | | 37 | | |
| | 0 | 38 | | @await Html.PartialAsync("_BsxGridShell") |
| | | 39 | | |
| | | 40 | | <div class="container bsx-surface"> |
| | | 41 | | <div class="row"> |
| | | 42 | | <div class="col-12"> |
| | | 43 | | <div class="card shadow-sm"> |
| | | 44 | | <div class="card-header bg-light"> |
| | | 45 | | <h2 class="mb-0 fs-4">Редактирование связи складов</h2> |
| | | 46 | | </div> |
| | | 47 | | <div class="card-body"> |
| | | 48 | | <div class="wm-intro"> |
| | | 49 | | <i class="fas fa-circle-info"></i> |
| | | 50 | | <div class="wm-intro-text"> |
| | | 51 | | Название склада в Ozon и в 1С обычно не совпадает — эта связь говорит системе |
| | | 52 | | «отгрузка с этого склада Ozon — это физически вот этот склад 1С» для конкретного клиента. |
| | | 53 | | Она используется при создании документов в 1С и при синхронизации остатков Ozon ↔ Bitrix24. |
| | | 54 | | </div> |
| | | 55 | | </div> |
| | | 56 | | |
| | | 57 | | <div asp-validation-summary="ModelOnly" class="alert alert-danger"></div> |
| | | 58 | | |
| | | 59 | | <form asp-area="Studio2" asp-controller="WarehouseMapping" asp-action="Edit" method="post"> |
| | 0 | 60 | | @Html.AntiForgeryToken() |
| | | 61 | | <input asp-for="Id" type="hidden" /> |
| | | 62 | | |
| | | 63 | | <div class="row g-3"> |
| | | 64 | | <div class="col-md-6"> |
| | | 65 | | <label asp-for="OzonClientId" class="form-label">Клиент</label> |
| | | 66 | | <select asp-for="OzonClientId" asp-items="ViewBag.Clients" class="form-select" required> |
| | | 67 | | <option value="">-- Выберите клиента --</option> |
| | | 68 | | </select> |
| | | 69 | | <span asp-validation-for="OzonClientId" class="text-danger small"></span> |
| | | 70 | | </div> |
| | | 71 | | <div class="col-md-6"> |
| | | 72 | | <label asp-for="DeliveryType" class="form-label">Тип доставки <span class="text-muted">( |
| | | 73 | | <input asp-for="DeliveryType" class="form-control" placeholder="Например: KBID, KBIA" /> |
| | | 74 | | <div class="text-muted-small mt-1"> |
| | | 75 | | <i class="fas fa-info-circle me-1"></i>Код типа доставки из имени файла при автомати |
| | | 76 | | загрузке заказов — используется как запасной способ определить склад Ozon. |
| | | 77 | | </div> |
| | | 78 | | <span asp-validation-for="DeliveryType" class="text-danger small"></span> |
| | | 79 | | </div> |
| | | 80 | | <div class="col-md-6"> |
| | | 81 | | <label asp-for="SupplierId" class="form-label">Поставщик <span class="text-muted">(необя |
| | | 82 | | <select asp-for="SupplierId" asp-items="ViewBag.Suppliers" class="form-select"> |
| | | 83 | | <option value="">-- Не указан (универсальная связь) --</option> |
| | | 84 | | </select> |
| | | 85 | | <div class="text-muted-small mt-1"> |
| | | 86 | | Связь без поставщика применяется как универсальная запись. |
| | | 87 | | </div> |
| | | 88 | | <span asp-validation-for="SupplierId" class="text-danger small"></span> |
| | | 89 | | </div> |
| | | 90 | | |
| | | 91 | | <div class="col-md-6"> |
| | | 92 | | <label asp-for="BitrixWarehouseName" class="form-label">Склад Bitrix (1С)</label> |
| | | 93 | | <select asp-for="BitrixWarehouseName" asp-items="ViewBag.BitrixWarehouses" class="form-s |
| | | 94 | | <option value="">-- Выберите склад Bitrix --</option> |
| | | 95 | | </select> |
| | | 96 | | <span asp-validation-for="BitrixWarehouseName" class="text-danger small"></span> |
| | | 97 | | </div> |
| | | 98 | | <div class="col-md-6"> |
| | | 99 | | <label asp-for="ReturnBitrixWarehouseName" class="form-label">Склад возврата (1С)</label |
| | | 100 | | <select asp-for="ReturnBitrixWarehouseName" asp-items="ViewBag.BitrixWarehouses" class=" |
| | | 101 | | <option value="">-- Не указан --</option> |
| | | 102 | | </select> |
| | | 103 | | <div class="text-muted-small mt-1">Склад 1С, на который оформляется возврат по этой связ |
| | | 104 | | <span asp-validation-for="ReturnBitrixWarehouseName" class="text-danger small"></span> |
| | | 105 | | </div> |
| | | 106 | | <div class="col-md-6"> |
| | | 107 | | <label asp-for="TransitBitrixWarehouseName" class="form-label">Транзитный склад (1С)</la |
| | | 108 | | <select asp-for="TransitBitrixWarehouseName" asp-items="ViewBag.BitrixWarehouses" class= |
| | | 109 | | <option value="">-- Не указан --</option> |
| | | 110 | | </select> |
| | | 111 | | <div class="text-muted-small mt-1">Для «Утерян реализатором»: товар перемещается на этот |
| | | 112 | | <span asp-validation-for="TransitBitrixWarehouseName" class="text-danger small"></span> |
| | | 113 | | </div> |
| | | 114 | | <div class="col-md-6"> |
| | | 115 | | <label asp-for="OzonWarehouseName" class="form-label">Склад Ozon</label> |
| | | 116 | | <select asp-for="OzonWarehouseName" asp-items="ViewBag.Warehouses" class="form-select" r |
| | | 117 | | <option value="">-- Выберите склад Ozon --</option> |
| | | 118 | | </select> |
| | | 119 | | <span asp-validation-for="OzonWarehouseName" class="text-danger small"></span> |
| | | 120 | | </div> |
| | | 121 | | |
| | | 122 | | <div class="col-md-6"> |
| | | 123 | | <label asp-for="OzonWarehouseId" class="form-label">ID склада Ozon</label> |
| | | 124 | | <input asp-for="OzonWarehouseId" class="form-control" placeholder="Необязательно" /> |
| | | 125 | | <div class="text-muted-small mt-1"> |
| | | 126 | | <i class="fas fa-info-circle me-1"></i>Числовой ID склада из Ozon Seller API — нужен |
| | | 127 | | обратной синхронизации остатков (Bitrix → Ozon). |
| | | 128 | | </div> |
| | | 129 | | <span asp-validation-for="OzonWarehouseId" class="text-danger small"></span> |
| | | 130 | | </div> |
| | | 131 | | |
| | | 132 | | <div class="col-md-3"> |
| | | 133 | | <label asp-for="Priority" class="form-label">Приоритет</label> |
| | | 134 | | <input asp-for="Priority" type="number" min="0" class="form-control" /> |
| | | 135 | | <div class="text-muted-small mt-1"> |
| | | 136 | | 0 — наивысший приоритет. Важно, только если у клиента заведено несколько связей |
| | | 137 | | на один и тот же склад Ozon с разными складами 1С. |
| | | 138 | | </div> |
| | | 139 | | <span asp-validation-for="Priority" class="text-danger small"></span> |
| | | 140 | | </div> |
| | | 141 | | </div> |
| | | 142 | | |
| | | 143 | | <div class="d-flex gap-2 mt-4"> |
| | | 144 | | <button type="submit" class="btn btn-primary"> |
| | | 145 | | <i class="fas fa-save me-1"></i>Сохранить |
| | | 146 | | </button> |
| | | 147 | | <a asp-area="Studio2" asp-controller="WarehouseMapping" asp-action="Index" class="btn btn-se |
| | | 148 | | <i class="fas fa-arrow-left me-1"></i>Назад |
| | | 149 | | </a> |
| | | 150 | | </div> |
| | | 151 | | </form> |
| | | 152 | | </div> |
| | | 153 | | </div> |
| | | 154 | | </div> |
| | | 155 | | </div> |
| | | 156 | | </div> |
| | | 157 | | |
| | | 158 | | @section Scripts { |
| | 0 | 159 | | @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } |
| | | 160 | | } |