Exemple #1
0
 public static double ToBaseUnit(MeasureUnitEnum from, decimal quantity, MeasureUnitTypeEnum type)
 {
     if (type == MeasureUnitTypeEnum.Mass)
     {
         return from switch
                {
                    MeasureUnitEnum.Grama => UnitsNet.Mass.FromGrams(quantity).Grams,
                    MeasureUnitEnum.Kilo => UnitsNet.Mass.FromKilograms(quantity).Grams,
                    MeasureUnitEnum.Libra => UnitsNet.Mass.FromPounds(quantity).Grams,
                    MeasureUnitEnum.Miligrama => UnitsNet.Mass.FromMilligrams(quantity).Grams,
                    MeasureUnitEnum.Onca => UnitsNet.Mass.FromOunces(quantity).Grams,
                    _ => 0,
                }
     }
     ;
     if (type == MeasureUnitTypeEnum.Volume)
     {
         return from switch
                {
                    MeasureUnitEnum.Litro => UnitsNet.Volume.FromLiters(quantity).Milliliters,
                    MeasureUnitEnum.Mililitro => UnitsNet.Volume.FromMilliliters(quantity).Milliliters,
                    _ => 0,
                }
     }
     ;
     return(0);
 }
Exemple #2
0
        public decimal CalculatePricePerUnit(PriceRequest model, MeasureUnitTypeEnum pType, MeasureUnitTypeEnum qType)
        {
            if (model.ResultPrecision == 0)
            {
                model.ResultPrecision = 2;
            }
            var weightInGrams = Convert.ToDecimal(UnitConverter.ToBaseUnit(model.ProductMeasureUnit, model.Quantity, pType));
            var pricePerUnit  = model.ProductPrice / weightInGrams;
            var orderedWeight = Convert.ToDecimal(UnitConverter.ToBaseUnit(model.QuantityMeasureUnit, 1, qType));
            var totalPrice    = orderedWeight * pricePerUnit;

            return(Math.Round(totalPrice, model.ResultPrecision));
        }
Exemple #3
0
        private async Task CalculateItem(NewOrderItem item, MeasureUnitEnum prodMeasureUnit, MeasureUnitTypeEnum pType, MeasureUnitTypeEnum qType, int corpClientId)
        {
            item.OriginalPrice = pricingApp.CalculatePricePerTotalWeight(new PriceRequest
            {
                ProductMeasureUnit  = prodMeasureUnit,
                ProductPrice        = item.ProductPrice,
                Quantity            = item.Quantity,
                QuantityMeasureUnit = item.MeasureUnitId
            }, pType, qType);
            var prodSummary = await dataSheetService.CalculateProduction(item.ProductId, item.MeasureUnitId, item.Quantity, corpClientId);

            item.Cost   = prodSummary.ProductionItems.Any() ? prodSummary.ProductionCost : new decimal?();
            item.Profit = prodSummary.ProductionItems.Any() ? (item.PriceAfterDiscount - prodSummary.ProductionCost) : new decimal?();
        }