< Summary

Information
Class: Services.BitrixStockServices.OzonWarehouseStockQuery
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/BitrixStockServices/OzonWarehouseStockQuery.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 24
Coverable lines: 24
Total lines: 43
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 8
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
LoadAsync()0%7280%

File(s)

/home/runner/work/Studio2Prod/Studio2Prod/AppRepository/BitrixStockServices/OzonWarehouseStockQuery.cs

#LineLine coverage
 1using System.Data.Common;
 2using Services.ApiServices.TelegramBotApi;
 3
 4namespace Services.BitrixStockServices;
 5
 6/// <summary>
 7/// Реальные остатки по складам Ozon из строк отчёта наката. Остаток в строке — это ответ Ozon API на момент
 8/// построения отчёта, а после применения — подтверждённый остаток (<c>OzonQtyAfter</c>), поэтому отдельных
 9/// запросов к Ozon не нужно.
 10/// </summary>
 11public static class OzonWarehouseStockQuery
 12{
 13    public static async Task<List<TelegramOzonStockRow>> LoadAsync(DbConnection conn, string reportId, CancellationToken
 14    {
 015        await using var cmd = conn.CreateCommand();
 016        cmd.CommandText = @"SELECT OzonClientName, OzonWarehouseName,
 017       COUNT(DISTINCT CASE WHEN q > 0 THEN Article END) AS positions,
 018       COALESCE(SUM(CASE WHEN q > 0 THEN q ELSE 0 END), 0) AS units
 019FROM (
 020  SELECT OzonClientName, OzonWarehouseName, Article, COALESCE(OzonQtyAfter, OzonQty) AS q
 021  FROM BitrixStockSyncReportLines
 022  WHERE ReportId = @rid AND OzonWarehouseId > 0
 023    AND OzonWarehouseName IS NOT NULL AND OzonWarehouseName <> '' AND OzonWarehouseName <> '—'
 024) x
 025GROUP BY OzonClientName, OzonWarehouseName
 026ORDER BY OzonClientName, OzonWarehouseName";
 027        var p = cmd.CreateParameter();
 028        p.ParameterName = "@rid";
 029        p.Value = reportId;
 030        cmd.Parameters.Add(p);
 31
 032        var rows = new List<TelegramOzonStockRow>();
 033        await using var reader = await cmd.ExecuteReaderAsync(ct);
 034        while (await reader.ReadAsync(ct))
 35        {
 036            rows.Add(new TelegramOzonStockRow(
 037                reader.GetString(1), Convert.ToInt32(reader.GetValue(2)), Convert.ToDecimal(reader.GetValue(3)),
 038                reader.IsDBNull(0) ? null : reader.GetString(0)));
 39        }
 40
 041        return rows;
 042    }
 43}

Methods/Properties

LoadAsync()