//TODO: Move this to Sale business logic
        /// <summary>
        /// Completes a Bottle Return Sale
        /// </summary>
        /// <param name="sale">Bottle Return Sale</param>
        /// <returns>True when sale is completed and False if not</returns>
        public async Task <BottleReturn> CompleteBottleReturnSale(BottleReturnSale sale)
        {
            var response = await _serializeManager.AddBottleReturnSale(sale);

            await _reportBussinessLogic.SaveReport(response.Receipt);

            return(response);
        }
 /// <summary>
 /// contructor for AddBottleReturnSaleSerializeAction
 /// </summary>
 /// <param name="stockRestClient">Stock Rest Client</param>
 /// <param name="cacheManager">Cache manager</param>
 /// <param name="sale">Bottle Return Sale</param>
 public AddBottleReturnSaleSerializeAction(
     IStockRestClient stockRestClient,
     ICacheManager cacheManager,
     BottleReturnSale sale)
     : base("AddBottleReturnSale")
 {
     _stockRestClient = stockRestClient;
     _cacheManager    = cacheManager;
     _sale            = sale;
 }
        /// <summary>
        /// Completes a Bottle Return sale
        /// </summary>
        /// <param name="sale">Bottle Return Sale</param>
        /// <returns>True or False</returns>
        public async Task <BottleReturn> AddBottleReturnSale(BottleReturnSale sale)
        {
            var action = new AddBottleReturnSaleSerializeAction(_stockRestClient,
                                                                _cacheManager, sale);

            await PerformTask(action);

            var bottleReturnContract = (BottleReturnContract)action.ResponseValue;

            return(new Mapper().MapBottleReturn(bottleReturnContract));
        }