public SaleServiceTest()
 {
     _saleService         = new SaleService(_saleRepo.Object, _saleDetailRepo.Object, _itemRepo.Object, _trasactionService.Object, _customerRepo.Object);
     _saleCreateDto       = new SaleCreateDTO();
     _saleDetailCreateDto = new SaleDetailCreateDTO();
     _sale       = new Sale();
     _saleDetail = new SaleDetails();
 }
Ejemplo n.º 2
0
        public async Task <IActionResult> Create(SaleCreateViewModel allSales)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var sale = new SaleCreateDTO()
                    {
                        CusId        = allSales.CusId,
                        discount     = allSales.discount,
                        total        = allSales.netTotal,
                        netTotal     = allSales.netTotal,
                        paidAmount   = allSales.paidAmount,
                        returnAmount = allSales.returnAmount
                    };

                    var saleDetails = new List <InventoryLibrary.Source.Dto.SaleDetail.SaleDetailCreateDTO>();
                    foreach (var data in allSales.SalesDetails)
                    {
                        var dto = new SaleDetailCreateDTO
                        {
                            ItemName = data.ItemName,
                            Qty      = data.Qty,
                            Total    = data.Total,
                            Price    = data.Price,
                            ItemId   = data.ItemId
                        };


                        saleDetails.Add(dto);
                    }

                    sale.SaleDetails = saleDetails;
                    var Sales = await _saleService.Create(sale).ConfigureAwait(true);

                    _toastNotification.AddSuccessToastMessage("Successfully Created Sale!");
                    return(Json(Sales.SaleId));
                }
            }
            catch (Exception ex)
            {
                _toastNotification.AddErrorToastMessage(ex.Message);
            }

            var saleView = new SaleIndexViewModel
            {
                customers = await _customerRepo.GetAllAsync().ConfigureAwait(true),
                items     = (await _itemRepo.GetAllAsync().ConfigureAwait(true)).Where(a => a.IsActive()).ToList()
            };

            return(View(saleView));
        }
Ejemplo n.º 3
0
        public async Task <Sale> Create(SaleCreateDTO dto)
        {
            using var tx = TransactionScopeHelper.GetInstance();
            var Customer = await _customerRepo.GetById(dto.CusId).ConfigureAwait(false);

            var sale = new Sale
            {
                customer     = Customer,
                total        = dto.total,
                CusId        = dto.CusId,
                netTotal     = dto.netTotal,
                discount     = dto.discount,
                SalesDate    = DateTime.Now,
                paidAmount   = dto.paidAmount,
                returnAmount = dto.returnAmount,
                dueAmount    = Math.Abs(dto.paidAmount - (dto.netTotal + dto.returnAmount))
            };


            await _saleRepo.InsertAsync(sale).ConfigureAwait(false);



            foreach (var SaleData in dto.SaleDetails)
            {
                var SaleDetail = new SaleDetails
                {
                    Qty      = SaleData.Qty,
                    Total    = SaleData.Total,
                    Price    = SaleData.Price,
                    SaleId   = sale.SaleId,
                    ItemName = SaleData.ItemName
                };
                var item = await _itemRepo.GetById(SaleData.ItemId);

                item.DecreaseQty(SaleData.Qty);
                await _itemRepo.UpdateAsync(item);

                await _saleDetailRepo.InsertAsync(SaleDetail).ConfigureAwait(false);
            }
            //Type Sales
            await _transactionService.Create(new CustomerTransactionCreateDto()
            {
                CustomerId = sale.CusId,
                Amount     = sale.netTotal,
                ExtraId    = sale.SaleId,
                Type       = CustomerTransaction.TypeSales
            }).ConfigureAwait(false);

            // Type payment
            if (sale.paidAmount - sale.returnAmount > 0)
            {
                await _transactionService.Create(new CustomerTransactionCreateDto()
                {
                    CustomerId = sale.CusId,
                    Amount     = sale.paidAmount - sale.returnAmount,
                    ExtraId    = sale.SaleId,
                    Type       = CustomerTransaction.TypePayment
                }).ConfigureAwait(false);
            }

            tx.Complete();
            return(sale);
        }