< Summary

Information
Class: Services.BitrixStockServices.OzonProductCatalogPriceJsonBuilder
Assembly: Services
File(s): /home/runner/work/Studio2Prod/Studio2Prod/AppRepository/BitrixStockServices/OzonProductCatalogPriceJsonBuilder.cs
Line coverage
95%
Covered lines: 40
Uncovered lines: 2
Coverable lines: 42
Total lines: 63
Line coverage: 95.2%
Branch coverage
90%
Covered branches: 18
Total branches: 20
Branch coverage: 90%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Build(...)90%202095.23%

File(s)

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

#LineLine coverage
 1using Newtonsoft.Json.Linq;
 2
 3namespace Services.BitrixStockServices;
 4
 5/// <summary>Собирает JObject цены Ozon из строки ozon_products для PriceOptimizationManager.</summary>
 6public static class OzonProductCatalogPriceJsonBuilder
 7{
 8  /// <summary>
 9  /// Формат совместим с Ozon <c>/v5/product/info/prices</c> (commissions — объект, не массив).
 10  /// </summary>
 11  public static JObject Build(OzonProductCatalogRow row)
 12  {
 313    var priceObj = new JObject
 314    {
 315      ["price"] = row.Price,
 316      ["old_price"] = row.OldPrice,
 317      ["marketing_price"] = row.MarketingPrice,
 318      ["min_price"] = row.MinOzonPrice,
 319      ["marketing_seller_price"] = row.MarketingPrice ?? row.Price,
 320      ["vat"] = "0"
 321    };
 22
 323    var commissions = new JObject();
 324    if (row.CommFbs.HasValue)
 225      commissions["sales_percent_fbs"] = row.CommFbs.Value;
 326    if (row.CommFbo.HasValue)
 127      commissions["sales_percent_fbo"] = row.CommFbo.Value;
 328    if (row.FbsMileMin.HasValue)
 029      commissions["fbs_first_mile_min_amount"] = row.FbsMileMin.Value;
 330    if (row.FbsMileMax.HasValue)
 231      commissions["fbs_first_mile_max_amount"] = row.FbsMileMax.Value;
 332    if (row.FbsDirectMin.HasValue)
 033      commissions["fbs_direct_flow_trans_min_amount"] = row.FbsDirectMin.Value;
 334    if (row.FbsDirectMax.HasValue)
 235      commissions["fbs_direct_flow_trans_max_amount"] = row.FbsDirectMax.Value;
 336    if (row.FbsDeliv.HasValue)
 237      commissions["fbs_deliv_to_customer_amount"] = row.FbsDeliv.Value;
 38
 339    var item = new JObject
 340    {
 341      ["offer_id"] = row.OfferId,
 342      ["product_id"] = row.ProductId,
 343      ["price"] = priceObj,
 344      ["commissions"] = commissions
 345    };
 46
 347    if (row.Acquiring.HasValue)
 248      item["acquiring"] = row.Acquiring.Value;
 49
 350    if (row.MinOzonPrice.HasValue)
 51    {
 152      item["price_indexes"] = new JObject
 153      {
 154        ["ozon_index_data"] = new JObject
 155        {
 156          ["min_price"] = row.MinOzonPrice.Value
 157        }
 158      };
 59    }
 60
 361    return item;
 62  }
 63}