< Summary

Information
Class: AspNetCoreGeneratedDocument.Areas_OneCFresh_Views_Document_Transfers
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/OneCFresh/Views/Document/Transfers.cshtml
Line coverage
0%
Covered lines: 0
Uncovered lines: 50
Coverable lines: 50
Total lines: 196
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 68
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExecuteAsync()0%3192560%
GetStatusBadge()0%2040%
FormatDateTime1C()0%4260%
GetWarehouseName()0%2040%
<ExecuteAsync()100%210%
<ExecuteAsync()100%210%
<ExecuteAsync()100%210%
<ExecuteAsync()100%210%
<ExecuteAsync()100%210%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/OneCFresh/Views/Document/Transfers.cshtml

#LineLine coverage
 1@model OzonOrdersWeb.Areas.OneCFresh.ViewModels.TransfersViewModel
 2@{
 03    ViewData["Title"] = "Перемещения запасов";
 04    var totalPages = Model.TotalCount == 0 ? 1 : (int)Math.Ceiling(Model.TotalCount / (double)Model.PageSize);
 05    var currentUrl = Context.Request.Path + Context.Request.QueryString;
 6
 7    string GetStatusBadge(bool posted, bool deleted)
 8    {
 09        if (deleted) return "<span class=\"badge badge-deleted\"><i class=\"bi bi-trash me-1\"></i>Удалён</span>";
 010        if (posted) return "<span class=\"badge badge-posted\"><i class=\"bi bi-check2-circle me-1\"></i>Проведён</span>
 011        return "<span class=\"badge badge-draft\"><i class=\"bi bi-pencil me-1\"></i>Черновик</span>";
 12    }
 13
 14    string FormatDateTime1C(string? dateStr)
 15    {
 016        if (string.IsNullOrWhiteSpace(dateStr)) return "—";
 017        if (!DateTime.TryParse(dateStr, out var dt)) return dateStr;
 018        bool isToday = dt.Date == DateTime.Today;
 019        if (isToday) return $"<span title='{dt:dd.MM.yyyy HH:mm}'>{dt:HH:mm}</span>";
 020        return $"<span title='{dt:dd.MM.yyyy HH:mm}'>{dt:dd.MM.yyyy}</span>";
 21    }
 22
 23    string GetWarehouseName(System.Collections.Generic.Dictionary<Guid, string?> dict, Guid key)
 024        => dict.TryGetValue(key, out var n) ? (n ?? key.ToString().ToUpper()) : key.ToString().ToUpper();
 25}
 26
 27<div class="d-flex align-items-center gap-2 mb-3">
 28    <h5 class="mb-0 fw-semibold">
 029        <i class="bi bi-arrows-move me-2 text-success"></i>@ViewData["Title"]
 30    </h5>
 031    <span class="badge bg-secondary">@Model.TotalCount</span>
 32</div>
 33
 034@if (TempData["Error"] is string err)
 35{
 036    <div class="alert alert-danger py-2 small">@err</div>
 37}
 038@if (TempData["Success"] is string ok)
 39{
 040    <div class="alert alert-success py-2 small">@ok</div>
 41}
 42
 43<form method="get" asp-area="OneCFresh" asp-controller="Document" asp-action="Transfers" class="row g-2 align-items-end 
 44    <div class="col-6 col-md-2">
 45        <label class="form-label small mb-1">Период с</label>
 46        <input class="form-control form-control-sm" type="date" name="dateFrom" value="@Model.DateFrom?.ToString("yyyy-M
 47    </div>
 48    <div class="col-6 col-md-2">
 49        <label class="form-label small mb-1">по</label>
 50        <input class="form-control form-control-sm" type="date" name="dateTo" value="@Model.DateTo?.ToString("yyyy-MM-dd
 51    </div>
 52    <div class="col-12 col-md-4">
 53        <label class="form-label small mb-1">Поиск (номер, комментарий)</label>
 54        <input class="form-control form-control-sm" name="search" value="@Model.Search" placeholder="Номер документа или
 55    </div>
 56    <div class="col-auto d-flex gap-1">
 57        <button type="submit" class="btn btn-primary btn-sm"><i class="bi bi-search me-1"></i>Найти</button>
 58        <a asp-area="OneCFresh" asp-controller="Document" asp-action="Transfers" class="btn btn-outline-secondary btn-sm
 59    </div>
 60</form>
 61
 62<div class="table-responsive">
 63    <table class="table table-sm table-hover onec-table border">
 64        <thead class="table-light">
 65            <tr>
 66                <th>№</th>
 67                <th>Дата</th>
 68                <th>Откуда (склад)</th>
 69                <th>Куда (склад)</th>
 70                <th>Комментарий</th>
 71                <th>Статус</th>
 72                <th>Транзакция</th>
 73                <th>Заказ</th>
 074                @if (User.IsInRole("Admin"))
 75                {
 76                    <th></th>
 77                }
 78            </tr>
 79        </thead>
 80        <tbody>
 081            @foreach (var row in Model.Items)
 82            {
 083                var d = row.Doc;
 084                var detailUrl = $"/OneCFresh/Document/Detail?docType=transfer&refKey={d.RefKey}";
 085                <tr class="@(d.DeletionMark ? "text-muted" : "") doc-row-clickable" data-detail-url="@detailUrl">
 086                    <td class="doc-number">@d.Number</td>
 087                    <td>@Html.Raw(FormatDateTime1C(d.Date))</td>
 88                    <td>
 89                        <span class="badge bg-light text-dark border">
 090                            <i class="bi bi-box-arrow-up me-1 text-danger"></i>@GetWarehouseName(Model.WarehouseNames, d
 91                        </span>
 92                    </td>
 93                    <td>
 94                        <span class="badge bg-light text-dark border">
 095                            <i class="bi bi-box-arrow-in-down me-1 text-success"></i>@GetWarehouseName(Model.WarehouseNa
 96                        </span>
 97                    </td>
 98                    <td class="text-muted small">
 099                        @if (User.IsInRole("Admin"))
 100                        {
 101                            <form method="post" asp-area="OneCFresh" asp-controller="Document" asp-action="UpdateComment
 0102                                @Html.AntiForgeryToken()
 103                                <input type="hidden" name="refKey" value="@d.RefKey" />
 104                                <input type="hidden" name="returnUrl" value="@currentUrl" />
 105                                <input type="text" name="comment" value="@d.Comment" class="form-control form-control-sm
 106                                <button type="submit" class="btn btn-outline-secondary btn-sm py-0 px-1" title="Сохранит
 107                                    <i class="bi bi-floppy"></i>
 108                                </button>
 109                            </form>
 110                        }
 111                        else
 112                        {
 0113                            @d.Comment
 114                        }
 115                    </td>
 0116                    <td>@Html.Raw(GetStatusBadge(d.Posted, d.DeletionMark))</td>
 117                    <td>
 0118                        @if (row.LinkedTransactionId.HasValue)
 119                        {
 120                            <a asp-area="Studio2" asp-controller="Transaction" asp-action="GetTransaction"
 0121                               asp-route-transactionId="@row.LinkedTransactionId" target="_blank"
 122                               class="btn btn-outline-success btn-sm py-0 px-1" title="Транзакция #@row.LinkedTransactio
 0123                                <i class="bi bi-link-45deg"></i>&nbsp;#@row.LinkedTransactionId
 124                            </a>
 125                        }
 126                    </td>
 127                    <td>
 0128                        @if (row.LinkedOrderId.HasValue)
 129                        {
 130                            <a href="/Studio2/JobLogs?tab=onec" target="_blank"
 131                               class="btn @(row.LinkedOrderSuccess ? "btn-outline-primary" : "btn-outline-warning") btn-
 132                               title="Заказ #@row.LinkedOrderId">
 0133                                <i class="bi bi-link-45deg"></i>&nbsp;#@row.LinkedOrderId
 134                            </a>
 135                        }
 136                    </td>
 0137                    @if (User.IsInRole("Admin"))
 138                    {
 139                        <td class="text-nowrap">
 0140                            @if (!d.DeletionMark && !d.Posted)
 141                            {
 142                                <form method="post" asp-area="OneCFresh" asp-controller="Document" asp-action="PostDocum
 0143                                    @Html.AntiForgeryToken()
 144                                    <input type="hidden" name="docType" value="transfer" />
 145                                    <input type="hidden" name="refKey" value="@d.RefKey" />
 146                                    <input type="hidden" name="returnUrl" value="@currentUrl" />
 147                                    <button type="submit" class="btn btn-success btn-sm py-0 px-1" title="Провести">
 148                                        <i class="bi bi-check2-circle"></i>
 149                                    </button>
 150                                </form>
 151                            }
 0152                            @if (d.Posted)
 153                            {
 154                                <form method="post" asp-area="OneCFresh" asp-controller="Document" asp-action="UnpostDoc
 0155                                    @Html.AntiForgeryToken()
 156                                    <input type="hidden" name="docType" value="transfer" />
 157                                    <input type="hidden" name="refKey" value="@d.RefKey" />
 158                                    <input type="hidden" name="returnUrl" value="@currentUrl" />
 159                                    <button type="submit" class="btn btn-warning btn-sm py-0 px-1" title="Отменить прове
 160                                        <i class="bi bi-x-circle"></i>
 161                                    </button>
 162                                </form>
 163                            }
 164                        </td>
 165                    }
 166                </tr>
 0167            }
 0168            @if (!Model.Items.Any())
 169            {
 170                <tr><td colspan="9" class="text-center text-muted py-3">Документы не найдены в указанном периоде</td></t
 171            }
 172        </tbody>
 173    </table>
 174</div>
 175
 0176@if (totalPages > 1)
 177{
 178    <nav>
 179        <ul class="pagination pagination-sm">
 0180            @for (var i = 1; i <= Math.Min(totalPages, 20); i++)
 181            {
 182                <li class="page-item @(i == Model.Page ? "active" : "")">
 183                    <a class="page-link" asp-area="OneCFresh" asp-controller="Document" asp-action="Transfers"
 0184                       asp-route-search="@Model.Search"
 0185                       asp-route-dateFrom="@Model.DateFrom?.ToString("yyyy-MM-dd")"
 0186                       asp-route-dateTo="@Model.DateTo?.ToString("yyyy-MM-dd")"
 0187                       asp-route-page="@i" asp-route-pageSize="@Model.PageSize">@i</a>
 188                </li>
 189            }
 190        </ul>
 191    </nav>
 192}
 193
 194<div class="text-muted small mt-1">
 0195    Показано: @Model.Items.Count из @Model.TotalCount документов. Страница @Model.Page из @totalPages.
 196</div>