< Summary

Information
Class: AspNetCoreGeneratedDocument.Areas_OneCFresh_Views_Document_Payments
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/OneCFresh/Views/Document/Payments.cshtml
Line coverage
0%
Covered lines: 0
Uncovered lines: 36
Coverable lines: 36
Total lines: 127
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 48
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%1640400%
GetStatusBadge()0%2040%
FormatDateTime1C()0%4260%
FormatAmount()100%210%
<ExecuteAsync()100%210%
<ExecuteAsync()100%210%

File(s)

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

#LineLine coverage
 1@model OzonOrdersWeb.Areas.OneCFresh.ViewModels.PaymentsViewModel
 2@{
 03    ViewData["Title"] = "Платёжные поручения";
 04    var totalPages = Model.TotalCount == 0 ? 1 : (int)Math.Ceiling(Model.TotalCount / (double)Model.PageSize);
 5
 6    string GetStatusBadge(bool posted, bool deleted)
 7    {
 08        if (deleted) return "<span class=\"badge badge-deleted\"><i class=\"bi bi-trash me-1\"></i>Удалён</span>";
 09        if (posted) return "<span class=\"badge badge-posted\"><i class=\"bi bi-check2-circle me-1\"></i>Проведён</span>
 010        return "<span class=\"badge badge-draft\"><i class=\"bi bi-pencil me-1\"></i>Черновик</span>";
 11    }
 12
 13    string FormatDateTime1C(string? dateStr)
 14    {
 015        if (string.IsNullOrWhiteSpace(dateStr)) return "—";
 016        if (!DateTime.TryParse(dateStr, out var dt)) return dateStr;
 017        bool isToday = dt.Date == DateTime.Today;
 018        if (isToday) return $"<span title='{dt:dd.MM.yyyy HH:mm}'>{dt:HH:mm}</span>";
 019        return $"<span title='{dt:dd.MM.yyyy HH:mm}'>{dt:dd.MM.yyyy}</span>";
 20    }
 21
 22    string FormatAmount(decimal amount)
 023        => amount.ToString("N2", System.Globalization.CultureInfo.GetCultureInfo("ru-RU")) + " ₽";
 24}
 25
 26<div class="d-flex align-items-center gap-2 mb-3">
 27    <h5 class="mb-0 fw-semibold">
 028        <i class="bi bi-credit-card me-2 text-success"></i>@ViewData["Title"]
 29    </h5>
 030    <span class="badge bg-secondary">@Model.TotalCount</span>
 31</div>
 32
 033@if (TempData["Error"] is string err)
 34{
 035    <div class="alert alert-danger py-2 small">@err</div>
 36}
 37
 38<form method="get" asp-area="OneCFresh" asp-controller="Document" asp-action="Payments" class="row g-2 align-items-end m
 39    <div class="col-6 col-md-2">
 40        <label class="form-label small mb-1">Период с</label>
 41        <input class="form-control form-control-sm" type="date" name="dateFrom" value="@Model.DateFrom?.ToString("yyyy-M
 42    </div>
 43    <div class="col-6 col-md-2">
 44        <label class="form-label small mb-1">по</label>
 45        <input class="form-control form-control-sm" type="date" name="dateTo" value="@Model.DateTo?.ToString("yyyy-MM-dd
 46    </div>
 47    <div class="col-12 col-md-4">
 48        <label class="form-label small mb-1">Поиск (номер, назначение)</label>
 49        <input class="form-control form-control-sm" name="search" value="@Model.Search" placeholder="Номер или назначени
 50    </div>
 51    <div class="col-auto d-flex gap-1">
 52        <button type="submit" class="btn btn-primary btn-sm"><i class="bi bi-search me-1"></i>Найти</button>
 53        <a asp-area="OneCFresh" asp-controller="Document" asp-action="Payments" class="btn btn-outline-secondary btn-sm"
 54    </div>
 55</form>
 56
 57<div class="table-responsive">
 58    <table class="table table-sm table-hover onec-table border">
 59        <thead class="table-light">
 60            <tr>
 61                <th>№</th>
 62                <th>Дата</th>
 63                <th>Контрагент</th>
 64                <th class="text-end">Сумма</th>
 65                <th>Вид операции</th>
 66                <th>Назначение платежа</th>
 67                <th>Статус</th>
 68            </tr>
 69        </thead>
 70        <tbody>
 071            @foreach (var d in Model.Items)
 72            {
 73                <tr class="@(d.DeletionMark ? "text-muted" : "")">
 074                    <td class="doc-number">@d.Number</td>
 075                    <td>@Html.Raw(FormatDateTime1C(d.Date))</td>
 76                    <td>
 077                        @if (Model.CounterpartyNames.TryGetValue(d.CounterpartyKey, out var ctName))
 78                        {
 079                            <a asp-area="OneCFresh" asp-controller="Catalog" asp-action="Counterparties" asp-route-searc
 080                                @ctName
 81                            </a>
 82                        }
 083                        else if (d.CounterpartyKey != Guid.Empty)
 84                        {
 085                            <span class="font-monospace text-muted" style="font-size:.73rem">@d.CounterpartyKey</span>
 86                        }
 87                    </td>
 088                    <td class="text-end font-monospace fw-semibold">@FormatAmount(d.Amount)</td>
 89                    <td>
 090                        @if (!string.IsNullOrWhiteSpace(d.OperationType))
 91                        {
 092                            <span class="badge bg-light text-dark border">@d.OperationType</span>
 93                        }
 94                    </td>
 95                    <td class="text-muted small" style="max-width:300px">
 96                        <span title="@d.Purpose">
 097                            @(d.Purpose != null && d.Purpose.Length > 60 ? d.Purpose[..60] + "…" : d.Purpose)
 98                        </span>
 99                    </td>
 0100                    <td>@Html.Raw(GetStatusBadge(d.Posted, d.DeletionMark))</td>
 101                </tr>
 0102            }
 0103            @if (!Model.Items.Any())
 104            {
 105                <tr><td colspan="7" class="text-center text-muted py-3">Документы не найдены в указанном периоде</td></t
 106            }
 107        </tbody>
 108    </table>
 109</div>
 110
 0111@if (totalPages > 1)
 112{
 113    <nav>
 114        <ul class="pagination pagination-sm">
 0115            @for (var i = 1; i <= Math.Min(totalPages, 20); i++)
 116            {
 117                <li class="page-item @(i == Model.Page ? "active" : "")">
 118                    <a class="page-link" asp-area="OneCFresh" asp-controller="Document" asp-action="Payments"
 0119                       asp-route-search="@Model.Search"
 0120                       asp-route-dateFrom="@Model.DateFrom?.ToString("yyyy-MM-dd")"
 0121                       asp-route-dateTo="@Model.DateTo?.ToString("yyyy-MM-dd")"
 0122                       asp-route-page="@i" asp-route-pageSize="@Model.PageSize">@i</a>
 123                </li>
 124            }
 125        </ul>
 126    </nav>
 127}