public decimal?CalculateTotal()
        {
            var calculateResult = _simpleCalculator.TakeSuitableProducts(_pricing,
                                                                         _packsCalculator.TakeSuitableProducts(_pricing,
                                                                                                               new CalculateState(0m, _products))
                                                                         );

            ResetInitialState();

            // Calculators cannot check all products using current price list
            if (calculateResult.LeftProducts.Any())
            {
                return(null);
            }


            return(calculateResult.Money);
        }