public async Task <bool> Add(SalesMaster entity)
        {
            try
            {
                var invenoty_bus = new List <InventoryBusModel>();

                var Date = DateTime.Today.ToString("yyyyMM");
                var all  = salesMasterRepository.GetAll(_ => _.VoucherNo.StartsWith(Date)).AsEnumerable().Max(x => x.VoucherNo);
                entity.VoucherNo = GenerateVoucher.Generate(Date, all, 5);
                entity.CreatedAt = DateTime.Now;
                entity.Id        = Guid.NewGuid();
                foreach (var item in entity.SalesDetails)
                {
                    item.SalesMasterId = entity.Id;
                    item.CreatedAt     = entity.CreatedAt;
                    item.CreatedBy     = entity.CreatedBy;
                    item.Amount        = item.UnitPrice * item.Qty;

                    invenoty_bus.Add(new InventoryBusModel()
                    {
                        ProductId = item.ProductId,
                        in_qty    = 0,
                        out_qty   = item.Qty,
                        remarks   = "From Sales. Voucher No: " + entity.VoucherNo,
                        createdBy = entity.CreatedBy
                    });
                }

                var s = await salesMasterRepository.Add(entity);

                if (s)
                {
                    var msg = new InventoryBusMessage()
                    {
                        Name = JsonConvert.SerializeObject(invenoty_bus)
                    };
                    await publishEndpoint.Publish <InventoryBusMessage>(msg);
                }
                return(s);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public async Task <IActionResult> UploadSalesMaster([FromBody] List <SalesMasterRequest> items)
        {
            try
            {
                var rt = new List <SalesMasterResponse>();
                foreach (var item in items)
                {
                    var obj = _mapper.Map <SalesMaster>(item);
                    _salesMaster.Add(obj);
                    rt.Add(_mapper.Map <SalesMasterResponse>(obj));
                }

                await _salesMaster.Save(User.Identity.Name, _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString());

                return(Ok(rt));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }