< Summary

Information
Class: AspNetCoreGeneratedDocument.Areas_OneCFresh_Views_Document_Receipts
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/OneCFresh/Views/Document/Receipts.cshtml
Line coverage
0%
Covered lines: 0
Uncovered lines: 53
Coverable lines: 53
Total lines: 186
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 70
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%3906620%
GetStatusBadge()0%2040%
FormatDateTime1C()0%4260%
<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/Receipts.cshtml

#LineLine coverage
 1@model OzonOrdersWeb.Areas.OneCFresh.ViewModels.ReceiptsViewModel
 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
 24<div class="d-flex align-items-center gap-2 mb-3">
 25    <h5 class="mb-0 fw-semibold">
 026        <i class="bi bi-box-arrow-in-down me-2 text-success"></i>@ViewData["Title"]
 27    </h5>
 028    <span class="badge bg-secondary">@Model.TotalCount</span>
 29</div>
 30
 031@if (TempData["Error"] is string err)
 32{
 033    <div class="alert alert-danger py-2 small">@err</div>
 34}
 035@if (TempData["Success"] is string ok)
 36{
 037    <div class="alert alert-success py-2 small">@ok</div>
 38}
 39
 40<form method="get" asp-area="OneCFresh" asp-controller="Document" asp-action="Receipts" class="row g-2 align-items-end m
 41    <div class="col-6 col-md-2">
 42        <label class="form-label small mb-1">Период с</label>
 43        <input class="form-control form-control-sm" type="date" name="dateFrom" value="@Model.DateFrom?.ToString("yyyy-M
 44    </div>
 45    <div class="col-6 col-md-2">
 46        <label class="form-label small mb-1">по</label>
 47        <input class="form-control form-control-sm" type="date" name="dateTo" value="@Model.DateTo?.ToString("yyyy-MM-dd
 48    </div>
 49    <div class="col-12 col-md-4">
 50        <label class="form-label small mb-1">Поиск (номер, вх. документ)</label>
 51        <input class="form-control form-control-sm" name="search" value="@Model.Search" placeholder="Номер документа или
 52    </div>
 53    <div class="col-auto d-flex gap-1">
 54        <button type="submit" class="btn btn-primary btn-sm"><i class="bi bi-search me-1"></i>Найти</button>
 55        <a asp-area="OneCFresh" asp-controller="Document" asp-action="Receipts" class="btn btn-outline-secondary btn-sm"
 56    </div>
 57</form>
 58
 59<div class="table-responsive">
 60    <table class="table table-sm table-hover onec-table border">
 61        <thead class="table-light">
 62            <tr>
 63                <th>№</th>
 64                <th>Дата</th>
 65                <th>Контрагент</th>
 66                <th>Вх. документ</th>
 67                <th>Дата вх. документа</th>
 68                <th>Склад</th>
 69                <th>Статус</th>
 70                <th>Транзакция</th>
 71                <th>Заказ</th>
 072                @if (User.IsInRole("Admin"))
 73                {
 74                    <th></th>
 75                }
 76            </tr>
 77        </thead>
 78        <tbody>
 079            @foreach (var row in Model.Items)
 80            {
 081                var d = row.Doc;
 082                var detailUrl = $"/OneCFresh/Document/Detail?docType=receipt&refKey={d.RefKey}";
 083                <tr class="@(d.DeletionMark ? "text-muted" : "") doc-row-clickable" data-detail-url="@detailUrl">
 084                    <td class="doc-number"><span>@d.Number</span></td>
 085                    <td>@Html.Raw(FormatDateTime1C(d.Date))</td>
 86                    <td>
 087                        @if (Model.CounterpartyNames.TryGetValue(d.CounterpartyKey, out var ctName))
 88                        {
 089                            <a asp-area="OneCFresh" asp-controller="Catalog" asp-action="Counterparties" asp-route-searc
 090                                @ctName
 91                            </a>
 92                        }
 093                        else if (d.CounterpartyKey != Guid.Empty)
 94                        {
 095                            <span class="font-monospace text-muted" style="font-size:.73rem">@d.CounterpartyKey.ToString
 96                        }
 97                    </td>
 098                    <td class="font-monospace">@d.IncomingDocNumber</td>
 099                    <td>@Html.Raw(FormatDateTime1C(d.IncomingDocDate))</td>
 100                    <td>
 0101                        @if (Model.WarehouseNames.TryGetValue(d.WarehouseKey, out var whName))
 102                        {
 0103                            @whName
 104                        }
 105                    </td>
 0106                    <td>@Html.Raw(GetStatusBadge(d.Posted, d.DeletionMark))</td>
 107                    <td>
 0108                        @if (row.LinkedTransactionId.HasValue)
 109                        {
 110                            <a asp-area="Studio2" asp-controller="Transaction" asp-action="GetTransaction"
 0111                               asp-route-transactionId="@row.LinkedTransactionId" target="_blank"
 112                               class="btn btn-outline-success btn-sm py-0 px-1" title="Транзакция #@row.LinkedTransactio
 0113                                <i class="bi bi-link-45deg"></i>&nbsp;#@row.LinkedTransactionId
 114                            </a>
 115                        }
 116                    </td>
 117                    <td>
 0118                        @if (row.LinkedOrderId.HasValue)
 119                        {
 120                            <a href="/Studio2/JobLogs?tab=onec" target="_blank"
 121                               class="btn @(row.LinkedOrderSuccess ? "btn-outline-primary" : "btn-outline-warning") btn-
 122                               title="Заказ #@row.LinkedOrderId">
 0123                                <i class="bi bi-link-45deg"></i>&nbsp;#@row.LinkedOrderId
 124                            </a>
 125                        }
 126                    </td>
 0127                    @if (User.IsInRole("Admin"))
 128                    {
 129                        <td class="text-nowrap">
 0130                            @if (!d.DeletionMark && !d.Posted)
 131                            {
 132                                <form method="post" asp-area="OneCFresh" asp-controller="Document" asp-action="PostDocum
 0133                                    @Html.AntiForgeryToken()
 134                                    <input type="hidden" name="docType" value="receipt" />
 135                                    <input type="hidden" name="refKey" value="@d.RefKey" />
 136                                    <input type="hidden" name="returnUrl" value="@currentUrl" />
 137                                    <button type="submit" class="btn btn-success btn-sm py-0 px-1" title="Провести">
 138                                        <i class="bi bi-check2-circle"></i>
 139                                    </button>
 140                                </form>
 141                            }
 0142                            @if (d.Posted)
 143                            {
 144                                <form method="post" asp-area="OneCFresh" asp-controller="Document" asp-action="UnpostDoc
 0145                                    @Html.AntiForgeryToken()
 146                                    <input type="hidden" name="docType" value="receipt" />
 147                                    <input type="hidden" name="refKey" value="@d.RefKey" />
 148                                    <input type="hidden" name="returnUrl" value="@currentUrl" />
 149                                    <button type="submit" class="btn btn-warning btn-sm py-0 px-1" title="Отменить прове
 150                                        <i class="bi bi-x-circle"></i>
 151                                    </button>
 152                                </form>
 153                            }
 154                        </td>
 155                    }
 156                </tr>
 0157            }
 0158            @if (!Model.Items.Any())
 159            {
 160                <tr><td colspan="10" class="text-center text-muted py-3">Документы не найдены в указанном периоде</td></
 161            }
 162        </tbody>
 163    </table>
 164</div>
 165
 0166@if (totalPages > 1)
 167{
 168    <nav>
 169        <ul class="pagination pagination-sm">
 0170            @for (var i = 1; i <= Math.Min(totalPages, 20); i++)
 171            {
 172                <li class="page-item @(i == Model.Page ? "active" : "")">
 173                    <a class="page-link" asp-area="OneCFresh" asp-controller="Document" asp-action="Receipts"
 0174                       asp-route-search="@Model.Search"
 0175                       asp-route-dateFrom="@Model.DateFrom?.ToString("yyyy-MM-dd")"
 0176                       asp-route-dateTo="@Model.DateTo?.ToString("yyyy-MM-dd")"
 0177                       asp-route-page="@i" asp-route-pageSize="@Model.PageSize">@i</a>
 178                </li>
 179            }
 180        </ul>
 181    </nav>
 182}
 183
 184<div class="text-muted small mt-1">
 0185    Показано: @Model.Items.Count из @Model.TotalCount документов. Страница @Model.Page из @totalPages.
 186</div>