< Summary

Information
Class: AspNetCoreGeneratedDocument.Areas_OneCFresh_Views_Document__DetailModal
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/OneCFresh/Views/Document/_DetailModal.cshtml
Line coverage
0%
Covered lines: 0
Uncovered lines: 43
Coverable lines: 43
Total lines: 160
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 74
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%5256720%
FormatDate()0%620%
FormatDecimal()100%210%

File(s)

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

#LineLine coverage
 1@using OzonOrdersWeb.Areas.OneCFresh.ViewModels
 2@model object
 3@{
 04    var isReceipt = Model is ReceiptDetailViewModel;
 05    var receipt = Model as ReceiptDetailViewModel;
 06    var transfer = Model as TransferDetailViewModel;
 07    var error = receipt?.Error ?? transfer?.Error;
 08    var number = receipt?.Number ?? transfer?.Number ?? "";
 09    var date = receipt?.Date ?? transfer?.Date ?? "";
 010    var posted = receipt?.Posted ?? transfer?.Posted ?? false;
 011    var deleted = receipt?.DeletionMark ?? transfer?.DeletionMark ?? false;
 012    var comment = receipt?.Comment ?? transfer?.Comment ?? "";
 013    var lines = receipt?.Lines ?? transfer?.Lines ?? new List<DocumentLineItem>();
 14
 15    string FormatDate(string d)
 16    {
 017        if (!DateTime.TryParse(d, out var dt)) return d;
 018        return dt.ToString("dd.MM.yyyy HH:mm");
 19    }
 20
 021    string FormatDecimal(decimal v) => v.ToString("N2", System.Globalization.CultureInfo.GetCultureInfo("ru-RU"));
 22}
 23
 024@if (error != null)
 25{
 026    <div class="alert alert-danger py-2 small">@error</div>
 27}
 28else
 29{
 30    <div class="modal-header">
 31        <h5 class="modal-title">
 032            @if (isReceipt)
 33            {
 34                <i class="bi bi-box-arrow-in-down me-2 text-success"></i>
 035                <text>Приходная накладная №@number</text>
 36            }
 37            else
 38            {
 39                <i class="bi bi-arrows-move me-2 text-success"></i>
 040                <text>Перемещение запасов №@number</text>
 41            }
 42        </h5>
 43        <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
 44    </div>
 45    <div class="modal-body">
 46        <div class="row g-2 mb-3 small">
 47            <div class="col-sm-4">
 48                <span class="text-muted">Дата:</span>
 049                <strong class="ms-1">@FormatDate(date)</strong>
 50            </div>
 51            <div class="col-sm-4">
 52                <span class="text-muted">Статус:</span>
 053                @if (deleted)
 54                {
 55                    <span class="badge badge-deleted ms-1"><i class="bi bi-trash me-1"></i>Удалён</span>
 56                }
 057                else if (posted)
 58                {
 59                    <span class="badge badge-posted ms-1"><i class="bi bi-check2-circle me-1"></i>Проведён</span>
 60                }
 61                else
 62                {
 63                    <span class="badge badge-draft ms-1"><i class="bi bi-pencil me-1"></i>Черновик</span>
 64                }
 65            </div>
 066            @if (isReceipt && receipt != null)
 67            {
 68                <div class="col-sm-4">
 69                    <span class="text-muted">Контрагент:</span>
 070                    <strong class="ms-1">@receipt.CounterpartyName</strong>
 71                </div>
 72                <div class="col-sm-4">
 73                    <span class="text-muted">Склад:</span>
 074                    <strong class="ms-1">@receipt.WarehouseName</strong>
 75                </div>
 076                @if (!string.IsNullOrEmpty(receipt.IncomingDocNumber))
 77                {
 78                    <div class="col-sm-4">
 79                        <span class="text-muted">Вх. документ:</span>
 080                        <strong class="ms-1">@receipt.IncomingDocNumber</strong>
 81                    </div>
 82                }
 083                @if (!string.IsNullOrEmpty(receipt.IncomingDocDate))
 84                {
 85                    <div class="col-sm-4">
 86                        <span class="text-muted">Дата вх. документа:</span>
 087                        <strong class="ms-1">@FormatDate(receipt.IncomingDocDate)</strong>
 88                    </div>
 89                }
 90            }
 091            @if (!isReceipt && transfer != null)
 92            {
 93                <div class="col-sm-4">
 94                    <span class="text-muted">Откуда:</span>
 95                    <span class="badge bg-light text-dark border ms-1">
 096                        <i class="bi bi-box-arrow-up me-1 text-danger"></i>@transfer.WarehouseSenderName
 97                    </span>
 98                </div>
 99                <div class="col-sm-4">
 100                    <span class="text-muted">Куда:</span>
 101                    <span class="badge bg-light text-dark border ms-1">
 0102                        <i class="bi bi-box-arrow-in-down me-1 text-success"></i>@transfer.WarehouseRecipientName
 103                    </span>
 104                </div>
 105            }
 0106            @if (!string.IsNullOrEmpty(comment))
 107            {
 108                <div class="col-12">
 109                    <span class="text-muted">Комментарий:</span>
 0110                    <span class="ms-1">@comment</span>
 111                </div>
 112            }
 113        </div>
 114
 0115        @if (lines.Count > 0)
 116        {
 117            <div class="table-responsive">
 118                <table class="table table-sm table-hover onec-table border mb-0">
 119                    <thead class="table-light">
 120                        <tr>
 121                            <th>#</th>
 122                            <th>Артикул</th>
 123                            <th>Номенклатура</th>
 124                            <th class="text-end">Кол-во</th>
 125                            <th class="text-end">Цена</th>
 126                            <th class="text-end">Сумма</th>
 127                        </tr>
 128                    </thead>
 129                    <tbody>
 0130                        @for (int i = 0; i < lines.Count; i++)
 131                        {
 0132                            var line = lines[i];
 133                            <tr>
 0134                                <td class="text-muted">@(i + 1)</td>
 0135                                <td class="font-monospace">@line.Article</td>
 0136                                <td>@line.NomenclatureName</td>
 0137                                <td class="text-end">@FormatDecimal(line.Quantity)</td>
 0138                                <td class="text-end">@FormatDecimal(line.Price)</td>
 0139                                <td class="text-end fw-semibold">@FormatDecimal(line.Amount)</td>
 140                            </tr>
 141                        }
 142                    </tbody>
 143                    <tfoot>
 144                        <tr class="table-light">
 145                            <td colspan="5" class="text-end fw-semibold small">Итого:</td>
 0146                            <td class="text-end fw-bold">@FormatDecimal(lines.Sum(l => l.Amount))</td>
 147                        </tr>
 148                    </tfoot>
 149                </table>
 150            </div>
 151        }
 152        else
 153        {
 154            <p class="text-muted small text-center py-2">Табличная часть пуста</p>
 155        }
 156    </div>
 157    <div class="modal-footer">
 158        <button type="button" class="btn btn-secondary btn-sm" data-bs-dismiss="modal">Закрыть</button>
 159    </div>
 160}