< Summary

Information
Class: AspNetCoreGeneratedDocument.Areas_Studio2_Views_Shared__StandartCartOrderRow
Assembly: OzonOrdersWeb
File(s): /home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Views/Shared/_StandartCartOrderRow.cshtml
Line coverage
0%
Covered lines: 0
Uncovered lines: 105
Coverable lines: 105
Total lines: 554
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 232
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%540562320%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/OzonOrdersWeb/Areas/Studio2/Views/Shared/_StandartCartOrderRow.cshtml

#LineLine coverage
 1@using OzonDomains.Models
 2@model OzonOrdersWeb.Areas.Studio2.ViewModels.CartViewModels.CartViewModel
 3
 4
 5<style>
 6
 7    th {
 8        white-space: nowrap;
 9    }
 10
 11    .container .row .col-md-4 {
 12        flex: 0 0 auto;
 13        max-width: 33.3333%;
 14    }
 15
 16    .container .custom-width-large {
 17        width: 265px;
 18    }
 19
 20    .product-cell {
 21        font-size: 11px;
 22    }
 23
 24        .product-cell:hover .product-popup {
 25            display: block;
 26        }
 27
 28    #processingDateFilter,
 29    #shippingDateFilter {
 30        width: 70px;
 31    }
 32
 33    #deliveryPeriodInput,
 34    #timeLeftDayInput {
 35        width: 50px;
 36    }
 37
 38    #statusFilter,
 39    #appStatusFilterInput,
 40    #supplierFilter
 41    {
 42        width: 103px;
 43    }
 44
 45    #ozonClientFilterInput,
 46    #deliveryCityFilter{
 47        width: 125px;
 48    }
 49
 50    #currentPriceWithDiscountFilter,
 51    #quantityFilter,
 52    #priceFilter,
 53    #shipmentAmountFilter,
 54    #purchasePriceFilter,
 55    #costPriceFilter,
 56    #ozonCommissionFilter,
 57    #profitFilter,
 58    #discountFilter {
 59        width: 70px;
 60        max-width: 70px;
 61    }
 62
 63    a {
 64        text-decoration: none;
 65    }
 66
 67    .horizontal-line {
 68        border-top: 1px solid #ccc;
 69        margin: 20px 0;
 70    }
 71
 72    #infoWindow {
 73        position: fixed;
 74        display: none;
 75        border: 1px solid #ccc;
 76        background-color: #fff;
 77        padding: 10px;
 78        z-index: 9999;
 79    }
 80
 81    th.active {
 82        background-color: #f4f4f4; /* Цвет подсветки */
 83    }
 84
 85    .button-container {
 86        display: flex;
 87        gap: 10px; /* Расстояние между кнопками */
 88    }
 89
 90    .horizontal-inputs {
 91        display: flex;
 92        align-items: center;
 93    }
 94
 95        .horizontal-inputs > div {
 96            margin-right: 10px; /* Отступ между элементами */
 97        }
 98
 99    .vertical-align {
 100        display: flex;
 101        flex-direction: column;
 102        align-items: center;
 103        justify-content: space-between;
 104        height: 100%;
 105    }
 106
 107        .vertical-align > * {
 108            margin: 2px 0; /* Минимальный отступ между элементами */
 109        }
 110
 111    .checkbox-column {
 112        display: flex;
 113        justify-content: center;
 114        align-items: center;
 115        width: 10px;
 116    }
 117
 118    .nowrap {
 119        white-space: nowrap;
 120    }
 121
 122    .product-cell {
 123        /* Убедитесь, что ширина элемента установлена */
 124        width: 100%; /* Или установите конкретную ширину, если нужно */
 125        /* Обрезка текста и добавление многоточия */
 126        white-space: nowrap;
 127        overflow: hidden;
 128        text-overflow: ellipsis;
 129    }
 130
 131    /* Изначально скрываем кнопку */
 132    .clear-btn {
 133        display: none;
 134        position: absolute;
 135        left: 100%;
 136        transform: translateX(0) translateY(-50%); /* Прижимаем к основной кнопке и центрируем по вертикали */
 137        z-index: 10; /* Поверх других элементов */
 138        top: 50%; /* Центрируем по вертикали относительно главной кнопки */
 139        opacity: 0; /* Прозрачность кнопки */
 140        border: solid 1px;
 141    }
 142
 143        /* Показываем кнопку при наведении на основную или на саму кнопку очистки */
 144        .btn-container:hover .clear-btn,
 145        .clear-btn:hover {
 146            display: block;
 147            opacity: 1; /* Увеличиваем непрозрачность при наведении */
 148            border: solid 1px;
 149        }
 150
 151    /* Обёртка для кнопок */
 152    .btn-container {
 153        position: relative;
 154        display: inline-block;
 155    }
 156
 157    .bg-green-300 {
 158        background-color: #73c487 !important; /* Bootstrap's 'bg-success' color */
 159    }
 160
 161    .placeholder {
 162        min-height: 1em; /* Вы можете настроить минимальную высоту по вашему усмотрению */
 163    }
 164
 165    button:focus {
 166        outline: none !important;
 167        box-shadow: none !important;
 168    }
 169
 170</style>
 171@{
 0172    Order item = Model.Order;
 173    {
 0174        string rowClass = "custom-white";
 175
 0176        if (item.AppStatus?.Name == "Заказан поставщику")
 177        {
 0178            rowClass = "table-success";
 179        }
 180
 0181        if (item.IsReturnable == true)
 182        {
 0183            rowClass = "custom-red";
 184        }
 185
 0186        if (
 0187            (item.AppStatus?.Name == "Отменен" && (item.Status == "Отменён" || string.IsNullOrEmpty(item.Status))) ||
 0188            item.Status == "Отменен" ||
 0189            item.Status == "Отменён"
 0190        )
 191        {
 0192            rowClass = "table-danger";
 193        }
 194
 0195        if (item.AppStatus?.Name == "Отгружен постащиком")
 196        {
 0197            rowClass = "table-info";
 198        }
 199
 200
 201
 202        <tr class=@rowClass oncontextmenu="showInfoAtCursor('@item.Id', event); return false;">
 203            <td class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ShipmentNumber") ? "bg-warning" : 
 204                <div class="d-flex align-items-center">
 0205                    @if (item.ExcelFileData != null)
 206                    {
 207                        <a href="@Url.Action("ViewFile", new { filePath = item.ExcelFileData.FolderName, fileName = item
 208                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi
 209                                <path fill-rule="evenodd" d="M14 4.5V11h-1V4.5h-2A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v
 210                            </svg>
 211                        </a>
 212                    }
 213
 214                    <div class="ml-2">
 0215                        @Html.DisplayFor(modelItem => item.ShipmentNumber)
 216                    </div>
 217                </div>
 218                <div class="text-muted d-flex" style="white-space: nowrap;">
 219                    @{
 0220                        string? delivery = item.Delivery?.Provider?.Name ?? "";
 221
 0222                        if (!string.IsNullOrEmpty(delivery) && delivery.Length > 20)
 223                        {
 0224                            delivery = delivery.Substring(0, 20) + "...";
 225                        }
 0226                        <p title="@item.Delivery?.Name">@delivery</p>
 227                    }
 228                </div>
 229                <div class="text-muted" title="@Model.Id">
 0230                    Id: @Model.Id
 231                </div>
 232                <div class="text-muted" title="@Model.ItemId">
 233                    @{
 0234                        string? itemId = Model.ItemId ?? "";
 0235                        if (itemId?.Length > 14)
 236                        {
 0237                            itemId = itemId.Substring(0, 14) + "...";
 238                        }
 239                    }
 0240                    @itemId
 241                </div>
 242            </td>
 243
 244            <td>
 245                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("OzonClient") ? "bg-warning" :
 0246                    @if (item.OzonClient != null)
 247                    {
 0248                        string ozonClient = item.OzonClient.Name;
 0249                        if (ozonClient.Length > 18)
 250                        {
 0251                            ozonClient = ozonClient.Substring(0, 18) + "...";
 252                        }
 253
 0254                        @ozonClient
 255                    }
 256                </div>
 257
 0258                @if (item.DeliveryCity != null && item.DeliveryCity != "")
 259                {
 260                    <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("DeliveryCity") ? "bg-warn
 261                        @{
 0262                            string deliveryCity = item.DeliveryCity;
 0263                            if (deliveryCity.Length > 11)
 264                            {
 0265                                deliveryCity = deliveryCity.Substring(0, 11) + "...";
 266                            }
 267
 0268                            @deliveryCity
 269                        }
 270                    </div>
 271                }
 0272                @if (!string.IsNullOrEmpty(item.TrackingNumber))
 273                {
 274                    <div class="text-muted" style="white-space: nowrap;" title="@item.TrackingNumber">
 0275                        <small>@item.TrackingNumber</small>
 276                    </div>
 277                }
 278            </td>
 279
 280            <td>
 281                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ProcessingDate") ? "bg-warnin
 0282                    @Html.DisplayFor(modelItem => item.FormattedProcessingDate)
 283                </div>
 284
 285                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ShippingDate") ? "bg-warning"
 0286                    @Html.DisplayFor(modelItem => item.FormattedShippingDate)
 287                </div>
 288
 289                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("AppStatusId") ? "bg-warning" 
 0290                    @Html.DisplayFor(modelItem => item.FormattedLastStatusChangeDate)
 291                </div>
 292            </td>
 293
 294            <td>
 295                <div style="white-space: nowrap; text-align: right;">
 0296                    <div title="@Html.DisplayFor(modelItem => item.FormattedDeliveryDay) @Html.DisplayFor(modelItem => i
 297                </div>
 298
 299                <div style="white-space: nowrap; text-align: right;" class="text-muted">
 0300                    @Html.DisplayFor(modelItem => item.FormattedTimeLeftDay)
 301                </div>
 302            </td>
 303
 304            <td>
 305                <div class="container">
 306                    <div class="row mb-0 justify-content-between">
 307                        <div id="thArticle" title="@item.ProductKey" class="col-md-4 d-flex align-items-center mb-1 @(it
 308                            @{
 0309                                string? productKey = item.ProductKey;
 0310                                if (productKey != null && productKey.Length > 17)
 311                                {
 0312                                    productKey = productKey.Substring(0, 17) + "...";
 313                                }
 314                            }
 0315                            @productKey
 316                        </div>
 317
 318                        <div id="thManufacturer" class="col-md-4 d-flex flex-column mb-1 nowrap text-center">
 0319                            @if (item.EtProducer != null && item.EtProducer.Name == null)
 320                            {
 321                                <form asp-area="Studio2" asp-action="Index" asp-controller="Producers" method="post">
 322                                    <input type="hidden" name="MarketPrefix" value="@item.EtProducer.MarketPrefix"/>
 323                                    <button type="submit" class="btn btn-link">Указать</button>
 324                                </form>
 325                            }
 326                            else
 327                            {
 0328                                @(item.EtProducer?.Name ?? "")
 329                            }
 330                        </div>
 331
 332                        <div id="thArticle2" class="col-md-4 d-flex flex-column mb-1 nowrap text-end">
 0333                            @if (item.Article != null)
 334                            {
 0335                                @Html.DisplayFor(modelItem => item.Article)
 336                            }
 337                        </div>
 338                    </div>
 339                    <div class="row mt-0">
 340                        <div id="thProductName" class="custom-width-large d-flex flex-column text-muted">
 341                            <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ProductName") ? "
 342                                <div class="product-cell" title="@Html.DisplayFor(modelItem => item.ProductName)">
 0343                                    @Html.DisplayFor(modelItem => item.ProductName)
 344                                </div>
 345                                <div class="product-cell" title="@Model.OrderItemCode">
 0346                                    Id позиции: @(Model.OrderItemCode ?? "")
 347                                </div>
 348                            </div>
 349                        </div>
 350                    </div>
 351                </div>
 352            </td>
 353
 354            <td>
 355                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("Status") ? "bg-warning" : "")
 0356                    @if (item.Status != null)
 357                    {
 0358                        string status = item.Status;
 0359                        if (status.Length > 14)
 360                        {
 0361                            status = status.Substring(0, 14) + "...";
 362                        }
 363
 0364                        @status
 365                    }
 366                    else
 367                    {
 368                        <br/>
 369                    }
 370
 371                </div>
 372
 373                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("AppStatusId") ? "bg-warning" 
 374                    @{
 0375                        string? appStatus = item.AppStatus?.Name ?? "";
 0376                        if (appStatus?.Length > 14)
 377                        {
 0378                            appStatus = appStatus.Substring(0, 14) + "...";
 379                        }
 380                    }
 0381                    @appStatus
 382                </div>
 383                <div class="text-muted nowrap" title="@Model.ItemStatus">
 384                    @{
 0385                        string itemStatus = @Model.ItemStatus;
 0386                        if (itemStatus?.Length > 14)
 387                        {
 0388                            itemStatus = itemStatus.Substring(0, 14) + "...";
 389                        }
 390                    }
 0391                    @itemStatus
 392                </div>
 393            </td>
 394
 395            <td>
 396                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ShipmentWarehouseId") ? "bg-w
 0397                    @(item.ShipmentWarehouse?.Name ?? "")
 398                </div>
 399            </td>
 400            <td>
 401                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("SupplierId") ? "bg-warning" :
 0402                    @(item.Supplier?.Name ?? "")
 403                </div>
 404
 405                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("OrderNumberToSupplier") ? "bg
 0406                    @Html.DisplayFor(modelItem => item.OrderNumberToSupplier)
 407                </div>
 408            </td>
 409
 410            <td>
 411                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ProductInfoId") ? "bg-warning
 0412                    @if (item.ProductInfo?.CommercialCategory != null)
 413                    {
 0414                        string сommercialCategory = item.ProductInfo.CommercialCategory;
 0415                        if (сommercialCategory.Length > 10)
 416                        {
 0417                            сommercialCategory = сommercialCategory.Substring(0, 10) + "...";
 418                        }
 419
 0420                        @сommercialCategory
 421                    }
 422
 423                </div>
 424
 425                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ProductInfoId") ? "bg-warning
 0426                    @(item.ProductInfo?.VolumetricWeight)
 0427                    @if (item.ProductInfo?.Weight != 0)
 428                    {
 429                        <div style="white-space: nowrap; margin: 0; font-size: 10px; text-align: right">
 0430                            @(item.ProductInfo?.Weight)
 431                        </div>
 432                    }
 433                </div>
 434            </td>
 435
 436            <td>
 437                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ProductInfoId") ? "bg-warning
 0438                    @Html.Raw(string.Format("{0:N0}", item.ProductInfo?.CurrentPriceWithDiscount ?? 0).Replace(",", " ")
 439                </div>
 440
 441                <div class="@(item.Quantity > 1 ? "bg-green-300" : "") text-muted" style="text-align: right;">
 442                    @{
 0443                        if (item.Quantity > 1)
 444                        {
 445                            <b>
 0446                                @Html.DisplayFor(modelItem => item.Quantity)
 447                            </b>
 448                        }
 449                        else
 450                        {
 0451                            @Html.DisplayFor(modelItem => item.Quantity)
 452                        }
 453                    }
 454                </div>
 455                <div class="@(Model.Quantity > 1 ? "bg-green-300" : "") text-muted" style="text-align: right;">
 456                    @{
 0457                        if (Model.Quantity > 1)
 458                        {
 459                            <b>
 0460                                @Model.Quantity
 461                            </b>
 462                        }
 463                        else
 464                        {
 0465                            <p>@Model.Quantity</p>
 466                        }
 467                    }
 468                </div>
 469            </td>
 470
 471            <td>
 472
 473                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("Price") ? "bg-warning" : "")"
 0474                    @Html.Raw(string.Format("{0:N0}", item.Price).Replace(",", " "))
 475                </div>
 476
 477                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("ShipmentAmount") ? "bg-warnin
 0478                    @Html.Raw(string.Format("{0:N0}", item.ShipmentAmount).Replace(",", " "))
 479                </div>
 480            </td>
 481
 482
 483
 484            <td>
 485                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("PurchasePrice") ? "bg-warning
 0486                    @if (item.OriginalPurchasePrice != null)
 487                    {
 488                        <div style="white-space: nowrap; margin: 0; font-size: 10px;">
 489                            <div style="display: inline;">
 0490                                @Html.Raw(string.Format("{0:N2}", item.OriginalPurchasePrice))
 491                            </div>
 492                            <div style="display: inline; margin-left: 5px;">
 0493                                @(item.Supplier?.CurrencyCode.ToString() ?? "")
 494                            </div>
 495                        </div>
 496                    }
 497                    <p style="display: inline; white-space: nowrap; margin: 0;">
 0498                        @Html.Raw(string.Format("{0:N0}", item.PurchasePrice).Replace(",", " "))
 499                    </p>
 500                </div>
 501
 502                <div class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("CostPrice") ? "bg-warning" : 
 0503                    @Html.Raw(string.Format("{0:N0}", item.CostPrice).Replace(",", " "))
 504                </div>
 505
 506            </td>
 507
 508            <td class="@(item.UpdatedColumns != null && (item.UpdatedColumns.Contains("MinOzonCommission") || item.Updat
 0509                @Html.Raw(string.Format("{0:N0}", item.MinOzonCommission).Replace(",", " ")) <br/>
 0510                @Html.Raw(string.Format("{0:N0}", item.MaxOzonCommission).Replace(",", " "))
 511            </td>
 512
 513            <td class="@(item.UpdatedColumns != null && (item.UpdatedColumns.Contains("MinProfit") || item.UpdatedColumn
 0514                @if (item.MaxProfit < 0)
 515                {
 0516                    <span style="color:red">@Html.Raw(string.Format("{0:N0}", item.MaxProfit).Replace(",", " "))</span>
 517                }
 518                else
 519                {
 0520                    @Html.Raw(string.Format("{0:N0}", item.MaxProfit).Replace(",", " "))
 521                }
 522                <br>
 0523                @if (item.MinProfit < 0)
 524                {
 0525                    <span style="color:red">@Html.Raw(string.Format("{0:N0}", item.MinProfit).Replace(",", " "))</span>
 526                }
 527                else
 528                {
 0529                    @Html.Raw(string.Format("{0:N0}", item.MinProfit).Replace(",", " "))
 530                }
 531            </td>
 532
 533            <td class="@(item.UpdatedColumns != null && item.UpdatedColumns.Contains("MinDiscount") ? "bg-warning" : "")
 0534                @if (item.MaxDiscount < 0)
 535                {
 0536                    <span style="color:red">@Html.Raw(string.Format("{0:N0}", item.MaxDiscount).Replace(",", " "))</span
 537                }
 538                else
 539                {
 0540                    @Html.Raw(string.Format("{0:N0}", item.MaxDiscount).Replace(",", " "))
 541                }
 542                <br>
 0543                @if (item.MinDiscount < 0)
 544                {
 0545                    <span style="color:red">@Html.Raw(string.Format("{0:N0}", item.MinDiscount).Replace(",", " "))</span
 546                }
 547                else
 548                {
 0549                    @Html.Raw(string.Format("{0:N0}", item.MinDiscount).Replace(",", " "))
 550                }
 551            </td>
 552        </tr>
 0553    }
 554}

Methods/Properties

ExecuteAsync()