< Summary

Class:WinSolutions.Sveta.Server.Data.DataModel.Extensions.GoodExtensions
Assembly:WinSolutions.Sveta.Server
File(s):/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Data/DataModel/Extensions/GoodExtensions.cs
Covered lines:16
Uncovered lines:11
Coverable lines:27
Total lines:69
Line coverage:59.2% (16 of 27)
Covered branches:7
Total branches:12
Branch coverage:58.3% (7 of 12)

Metrics

MethodLine coverage Branch coverage
UpdateUniqueCode(...)100%100%
CurrentPrice(...)100%50%
OldPrice(...)0%100%
GetActualVendorCode(...)100%100%
GetActualBarCode(...)33.33%50%

File(s)

/opt/dev/sveta_api_build/WinSolutions.Sveta.Server/Data/DataModel/Extensions/GoodExtensions.cs

#LineLine coverage
 1using Clave.Expressionify;
 2using System;
 3using System.Collections.Generic;
 4using System.Linq;
 5using System.Text;
 6using WinSolutions.Sveta.Server.Data.DataModel.Entities;
 7
 8namespace WinSolutions.Sveta.Server.Data.DataModel.Extensions
 9{
 10    public static class GoodExtensions
 11    {
 12        public static void UpdateUniqueCode(this Good good)
 37813        {
 37814            good.UniqueCode = "DD" + good.Id.ToString("00000000");
 37815        }
 16
 17        /// <summary>
 18        /// Возвращает текущую цену товара (округляет до целого)
 19        /// </summary>
 20        /// <param name="warehouseId">Id склада-владельца</param>
 21        [Expressionify]
 22        public static decimal CurrentPrice(this Good good, Cluster cluster, decimal contractRatio) =>
 14523            Math.Ceiling(
 14524                // текущую цену товара
 14525                (good.Prices.Actual(cluster.WarehouseId).PriceNew > 0
 14526                    ? good.Prices.Actual(cluster.WarehouseId).PriceNew
 14527                    : good.Prices.Actual(cluster.WarehouseId).PriceOld.GetValueOrDefault(0))
 14528                // умножаем на коэффициент контракта
 14529                * contractRatio
 14530                // умножаем на коэффициент склада для категории
 14531                * (good.Category.DepartmentCategoryRatios.ActualRatioForCalculations(cluster.WarehouseId))
 14532                // умножаем на коэффициент кластера
 14533                * cluster.TradeRatio / 100);
 34
 35        /// <summary>
 36        /// Возвращает старую цену товара (округляет до целого)
 37        /// </summary>
 38        /// <param name="warehouseId">Id склада-владельца</param>
 39        [Expressionify]
 40        public static decimal OldPrice(this Good good, Cluster cluster, decimal contractRatio) =>
 041            Math.Ceiling(
 042                // текущую цену товара
 043                good.Prices.Actual(cluster.WarehouseId).PriceOld.GetValueOrDefault(0)
 044                // умножаем на коэффициент контракта
 045                * contractRatio
 046                // умножаем на коэффициент склада для категории
 047                * (good.Category.DepartmentCategoryRatios.ActualRatioForCalculations(cluster.WarehouseId))
 048                // умножаем на коэффициент кластера
 049                * cluster.TradeRatio / 100);
 50
 51        /// <summary>
 52        /// Возвращает актуальный код товара
 53        /// </summary>
 54        /// <param name="departmentId">Id склада</param>
 55        [Expressionify]
 56        public static string GetActualVendorCode(this Good good, long departmentId) =>
 7957            good.DepartmentGoodSettings.GetActualVendorCodeByDep(departmentId) ?? good.UniqueCode;
 58
 59        /// <summary>
 60        /// Возвращает актуальный баркод товара. Если никакой баркод не найден, то пустую строку
 61        /// </summary>
 62        /// <returns>Строка с баркодом</returns>
 63        [Expressionify]
 64        public static string GetActualBarCode(this Good good) =>
 065            good.GoodBarcodes.FirstOrDefault(g => g.IsPrimary) != null ?
 066            good.GoodBarcodes.FirstOrDefault(s => s.IsPrimary).BarCode.Code :
 7867            (good.DefaultBarCode == null ? "" : good.DefaultBarCode.Code);
 68    }
 69}