public bool Update(SaleDetails saleDetails)
        {
            bool isUpdated = false;
            //Connection
            string        connectionString = @"Server=LAPTOP-JECDIQLU; Database=Project1DB; Integrated Security=True";
            SqlConnection sqlConnection    = new SqlConnection(connectionString);

            //Command

            string     commandString = @"Update  SalesDetails set Quantity='" + saleDetails.Quantity + "' where AvailableQuantity='" + saleDetails.AvailableQuantity + "'";
            SqlCommand sqlCommand    = new SqlCommand(commandString, sqlConnection);

            //Open
            sqlConnection.Open();

            int isExecuted = sqlCommand.ExecuteNonQuery();

            if (isExecuted > 0)
            {
                isUpdated = true;
            }
            //Close
            sqlConnection.Close();
            return(isUpdated);
        }
Exemple #2
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            SaleORM saleOrm = new SaleORM();
            Sale    s       = new Sale();

            s.CustomerID = Convert.ToInt32(cmbCustomer.SelectedValue);
            s.RoomID     = Convert.ToInt32(cmbRoom.SelectedValue);
            s.StaffID    = StaffORM.ActiveUser.Id;
            s.RoomPrice  = numProdPrice.Value;
            s.SaleDate   = DateTime.Now;
            int sId = Convert.ToInt32(saleOrm.InsertScalar(s));

            if (sId > 0)
            {
                SaleDetailsORM sdOrm = new SaleDetailsORM();
                foreach (ListViewItem lvi in listView1.Items)
                {
                    SaleDetails sd = new SaleDetails();
                    sd.SaleID    = sId;
                    sd.ProductID = (int)lvi.Tag;
                    sd.Price     = Convert.ToDecimal(lvi.SubItems[3].Text);
                    sd.Quantity  = Convert.ToDouble(lvi.SubItems[2].Text);
                    sd.Discount  = Convert.ToDouble(lvi.SubItems[4].Text);
                    sdOrm.Insert(sd);
                }
            }
        }
        protected void AddButton_Click(object sender, EventArgs e)
        {
            try
            {
                SaleDetails _SaleDetails = new SaleDetails();

                _SaleDetails.Product  = ProductDropDownList.SelectedItem.ToString();
                _SaleDetails.Qty      = Convert.ToDecimal(txtQty.Text);
                _SaleDetails.Mrp      = Convert.ToDecimal(txtMrp.Text);
                _SaleDetails.TotalMrp = Convert.ToDecimal(txtTotalMrp.Text);
                _SaleDetails.Invoice  = txtInvoice.Text;

                decimal CurrentQty = Convert.ToDecimal(txtAvailableQty.Text);

                if (CurrentQty > 0)
                {
                    int Addsuccess = _SalesRepository.Add(_SaleDetails);
                    if (Addsuccess > 0)
                    {
                        LoadSaleDetails();
                        GrandTotal();
                    }
                }
                else
                {
                }
            }
            catch
            {
            }
        }
Exemple #4
0
        public virtual IDictionary BooksAndQuantitys()
        {
            var booksAndQuantitys = new Dictionary <string, int>();

            SaleDetails.ForEach(aSaleDetail => booksAndQuantitys.Add(aSaleDetail.Book, aSaleDetail.Quantity));
            return(booksAndQuantitys);
        }
Exemple #5
0
        public async Task Get_Get_Sale_By_Transaction_Id()
        {
            // ARRANGE
            // Service provider/scope
            using IServiceScope scope = this.Fixture.Services.CreateScope();
            IServiceProvider services = scope.ServiceProvider;

            // Services
            ISaleService saleService = services.GetRequiredService <ISaleService>();

            // Data
            string saleTransactionId = Guid.NewGuid().ToString("N", null);

            // ACT
            // Add sale
            SaleDetails addedSale = await saleService.AddSaleAsync(
                saleTransactionId,
                DateTime.UtcNow.Date,
                new Random().NextDouble() * 100,
                "Test sale").ConfigureAwait(false);

            // Lookup sale
            SaleDetails foundSale = await saleService.GetSaleAsync(saleTransactionId).ConfigureAwait(false);

            // ASSERT
            Assert.NotNull(foundSale);
            Assert.Equal(saleTransactionId, foundSale.TransactionId);
            Assert.Equal(addedSale.TransactionId, foundSale.TransactionId);
            Assert.Equal(addedSale.Date, foundSale.Date);
            Assert.Equal(addedSale.Amount, foundSale.Amount);
            Assert.Equal(addedSale.Notes, foundSale.Notes);
        }
Exemple #6
0
        public async Task Can_Add_Sale()
        {
            // ARRANGE
            // Service provider/scope
            using IServiceScope scope = this.Fixture.Services.CreateScope();
            IServiceProvider services = scope.ServiceProvider;

            // Services
            ISaleService saleService = services.GetRequiredService <ISaleService>();

            // Data
            string   saleTransactionId = Guid.NewGuid().ToString("N", null);
            DateTime saleDate          = DateTime.UtcNow.Date;
            double   saleAmount        = new Random().NextDouble() * 100;
            string   saleNotes         = "Test sale";

            // ACT
            // Add sale
            SaleDetails sale = await saleService.AddSaleAsync(
                saleTransactionId,
                saleDate,
                saleAmount,
                saleNotes).ConfigureAwait(false);

            // ASSERT
            Assert.NotNull(sale);
            Assert.Equal(saleTransactionId, sale.TransactionId);
            Assert.Equal(saleDate, sale.Date);
            Assert.Equal(saleAmount, sale.Amount);
            Assert.Equal(saleNotes, sale.Notes);
        }
Exemple #7
0
        public async Task Cannot_Add_Duplicate_Sale_Transaction_Id()
        {
            // ARRANGE
            // Service provider/scope
            using IServiceScope scope = this.Fixture.Services.CreateScope();
            IServiceProvider services = scope.ServiceProvider;

            // Services
            ISaleService saleService = services.GetRequiredService <ISaleService>();

            // Data
            string saleTransactionId = Guid.NewGuid().ToString("N", null);

            // ACT
            // First sale
            SaleDetails sale1 = await saleService.AddSaleAsync(
                saleTransactionId,
                DateTime.UtcNow.Date,
                new Random().NextDouble() * 100,
                "Test duplicate sale 1").ConfigureAwait(false);

            // Duplicate sale
            Func <Task> task = async() => await saleService.AddSaleAsync(
                saleTransactionId,
                DateTime.UtcNow.Date,
                new Random().NextDouble() * 100,
                "Test duplicate sale 2").ConfigureAwait(false);

            // ASSERT
            await Assert.ThrowsAsync <SaleExceptions.AlreadyExists>(task);
        }
        public bool SubmitButton(SaleDetails saleDetails)
        {
            bool isSubmitted = false;
            //Connection
            string        connectionString = @"Server=LAPTOP-JECDIQLU; Database=Project1DB; Integrated Security=True";
            SqlConnection sqlConnection    = new SqlConnection(connectionString);

            //Command

            string     commandString = @"INSERT INTO SalesDetails(Category,ProductCode,AvailableQuantity,Quantity,MrpTk,TotalMrpTk) VALUES('" + saleDetails.Category + "','" + saleDetails.ProductCode + "','" + saleDetails.AvailableQuantity + "','" + saleDetails.Quantity + "','" + saleDetails.MrpTk + "','" + saleDetails.TotalMrpTk + "')";
            SqlCommand sqlCommand    = new SqlCommand(commandString, sqlConnection);

            //Open
            sqlConnection.Open();

            int isExecuted = sqlCommand.ExecuteNonQuery();

            if (isExecuted > 0)
            {
                isSubmitted = true;
            }
            //Close
            sqlConnection.Close();
            return(isSubmitted);
        }
Exemple #9
0
        public IHttpActionResult PutSaleDetails(int id, SaleDetails saleDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != saleDetails.SDetailID)
            {
                return(BadRequest());
            }

            db.Entry(saleDetails).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!SaleDetailsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public List <SaleDetails> DisplaySalesItem()
        {
            List <SaleDetails> salesDetails = new List <SaleDetails>();

            string        connectionString = @"Server=LAPTOP-JECDIQLU; Database=Project1DB; Integrated Security=True";
            SqlConnection sqlConnection    = new SqlConnection(connectionString);

            sqlConnection.Open();
            string     query      = "SELECT * FROM SalesDetails";
            SqlCommand sqlCommand = new SqlCommand(query, sqlConnection);

            SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();

            while (sqlDataReader.Read())
            {
                SaleDetails saleDetail = new SaleDetails();

                saleDetail.ProductCode = sqlDataReader["ProductCode"].ToString();
                saleDetail.Quantity    = (sqlDataReader["Quantity"]).ToString();
                saleDetail.MrpTk       = Convert.ToDouble(sqlDataReader["MrpTk"]);
                saleDetail.TotalMrpTk  = Convert.ToDouble(sqlDataReader["TotalMrpTk"]);


                salesDetails.Add(saleDetail);
            }
            sqlConnection.Close();

            return(salesDetails);
        }
Exemple #11
0
        public async Task <IActionResult> GetAsync(
            [FromRoute] string transactionId)
        {
            try
            {
                // Lookup sale
                SaleDetails sale = await this.SaleService.GetSaleAsync(transactionId).ConfigureAwait(false);

                // Map to DTO model
                return(this.Ok(sale.ToDto()));
            }
            catch (SaleExceptions.NotFound)
            {
                return(this.NotFound());
            }
            catch (SaleExceptions.SaleException ex) when(
                ex is SaleExceptions.TransactionIdRequired ||
                ex is SaleExceptions.TransactionIdInvalid)
            {
                return(this.BadRequest(new ErrorDto()
                {
                    Code = ex.GetType().Name,
                }));
            }
        }
Exemple #12
0
        public async Task <IActionResult> AddAsync(
            [FromBody] SaleDto dto)
        {
            try
            {
                // Parse DTO
                if (string.IsNullOrWhiteSpace(dto?.Date))
                {
                    throw new SaleExceptions.DateRequired();
                }

                if (!DateTime.TryParseExact(dto?.Date, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime date))
                {
                    throw new SaleExceptions.DateInvalid();
                }

                // Add sale
                SaleDetails sale = await this.SaleService.AddSaleAsync(
                    dto?.TransactionId,
                    date,
                    dto?.Amount ?? throw new SaleExceptions.AmountRequired(),
                    dto?.Notes).ConfigureAwait(false);

                // Map to DTO model
                string actionName = nameof(this.GetAsync);
                if (actionName.EndsWith("Async"))
                {
                    actionName = actionName[0..^ 5];
 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();
 }
Exemple #14
0
        public int createSale_details(SaleDetails SD)
        {
            dbCon.openCon();
            cmd = new SqlCommand("insert into Sales_details (sd_id,sale_id,sd_Product,Item_id,DesignId,PSizeId,fabricId,brandId,sd_qty,sd_Product_price) values('" + SD.sd_id + "','" + SD.sale_id + "','" + SD.sd_Product + "','" + SD.Item_id + "','" + SD.DesignId + "','" + SD.PSizeId + "','" + SD.fabricId + "','" + SD.brandId + "','" + SD.sd_qty + "','" + SD.sd_Product_price + "')", dbCon.con);
            int status = cmd.ExecuteNonQuery();

            dbCon.closeCon();
            return(status);
        }
Exemple #15
0
        public IHttpActionResult GetSaleDetails(int id)
        {
            SaleDetails saleDetails = db.SaleDetails.Find(id);

            if (saleDetails == null)
            {
                return(NotFound());
            }

            return(Ok(saleDetails));
        }
Exemple #16
0
        public IHttpActionResult PostSaleDetails(SaleDetails saleDetails)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.SaleDetails.Add(saleDetails);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = saleDetails.SDetailID }, saleDetails));
        }
        private void FormatDiscounts(SaleDetails saleDetails, StringBuilder messageBuilder)
        {
            foreach (var discount in saleDetails.Discounts)
            {
                messageBuilder.Append(FormatMessage(discount.Description, discount.DiscountAmount) + Environment.NewLine);
            }

            if (saleDetails.Discounts.Any() == false)
            {
                messageBuilder.Append(SalesDisplayTemplates.NoDeductions + Environment.NewLine);
            }
        }
Exemple #18
0
        public async Task <bool> SaveSale(long product_id, SaleDetails saleDetails)
        {
            try
            {
                bool isNew = false;
                if (saleDetails.sale_id == 0)
                {
                    isNew = true;
                    // get next sale id
                    var seqCollection = _db.GetCollection <BsonDocument>("sequences");
                    var sequences     = await seqCollection.FindOneAndUpdateAsync(Builders <BsonDocument> .Filter.Empty, Builders <BsonDocument> .Update.Inc(new StringFieldDefinition <BsonDocument, long>("sale_id"), 1), new FindOneAndUpdateOptions <BsonDocument> {
                        IsUpsert = false, ReturnDocument = ReturnDocument.After
                    });

                    saleDetails.sale_id  = sequences.GetValue("sale_id").AsInt64;
                    saleDetails.snaps    = new Snap[0];
                    saleDetails.progress = 0;
                }

                var collection = _db.GetCollection <Product>(Product.CollectionName);
                var filter     = Builders <Product> .Filter;
                var update     = Builders <Product> .Update;
                var projection = Builders <Product> .Projection;

                if (isNew)
                {
                    await collection.UpdateOneAsync(filter.Eq(p => p.id, product_id), update.Push(p => p.future_sales, saleDetails));
                }
                else
                {
                    var product = await(await collection.FindAsync(filter.Eq(p => p.id, product_id), new FindOptions <Product> {
                        Limit = 1
                    })).FirstOrDefaultAsync();
                    var sale = product.future_sales.FirstOrDefault(s => s.sale_id == saleDetails.sale_id);
                    sale.starts_on      = saleDetails.starts_on;
                    sale.ends_on        = saleDetails.ends_on;
                    sale.sale_type      = saleDetails.sale_type;
                    sale.stock          = saleDetails.stock;
                    sale.required_snaps = saleDetails.required_snaps;
                    sale.target         = saleDetails.target;

                    await collection.UpdateOneAsync(filter.Eq(p => p.id, product_id), update.Set(p => p.future_sales, product.future_sales));
                }

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Exemple #19
0
        public IHttpActionResult DeleteSaleDetails(int id)
        {
            SaleDetails saleDetails = db.SaleDetails.Find(id);

            if (saleDetails == null)
            {
                return(NotFound());
            }

            db.SaleDetails.Remove(saleDetails);
            db.SaveChanges();

            return(Ok(saleDetails));
        }
Exemple #20
0
 public SaleToken(SaleDetails sale, bool allSnaps)
 {
     sale_id        = sale.sale_id;
     target         = sale.target;
     current_price  = sale.current_price;
     progress       = sale.progress;
     snaps          = sale.snaps.OrderByDescending(s => s.snapped_at).Take(allSnaps ? sale.snaps_count : 20).Select(s => new SnapToken(s)).ToArray();
     snaps_count    = sale.snaps_count;
     state          = sale.state;
     sale_type      = sale.sale_type;
     required_snaps = sale.required_snaps;
     stock          = sale.stock;
     starts_on      = sale.starts_on;
     ends_on        = sale.ends_on;
 }
        /// <summary>
        /// Convert business model to DTO.
        /// </summary>
        /// <param name="model">The business model.</param>
        /// <returns>The DTO.</returns>
        public static SaleDto ToDto(this SaleDetails model)
        {
            if (model == null)
            {
                return(null);
            }

            return(new SaleDto()
            {
                TransactionId = model.TransactionId,
                Date = model.Date.ToString("yyyy-MM-dd"),
                Amount = model.Amount,
                Notes = model.Notes,
            });
        }
Exemple #22
0
        private void CreateSaleInfo(int sessionId, CashMovement cashMovementCreated,
                                    ISaleDocumentType saleDocumentType, string customerName, List <SaleLineDto> saleLineDtos,
                                    string ruc, IEnumerable <ProductMovement> productMovements)
        {
            var saleAmount = GetSaleAmount(saleLineDtos);

            var sale = new Sale
            {
                Date         = DateTime.Now,
                Status       = Constants.SaleStatus.Created,
                SessionId    = sessionId,
                CashMovement = cashMovementCreated
            };

            uow.SaleRepository.Insert(sale);

            var saleDocument = new SaleDocument
            {
                DocumentType = saleDocumentType.Name,
                Number       = saleDocumentType.GetNextDocumentNumber(uow.GeneralConfigValuesRepository),
                Date         = DateTime.Now,
                CustomerName = customerName,
                RUC          = ruc,
                SubTotal     = saleDocumentType.GetSubTotalForDocument(saleAmount),
                IGV          = saleDocumentType.GetIgvForDocument(saleAmount),
                Total        = saleAmount,
                Status       = Constants.SaleDocumentStatus.Created,
                Sale         = sale
            };

            uow.SaleDocumentRepository.Insert(saleDocument);

            var zippedCollection = saleLineDtos.Zip(productMovements, (x, y) => new { SaleLineDto = x, ProductMovement = y });

            foreach (var zippedItem in zippedCollection)
            {
                var saleDetail = new SaleDetails()
                {
                    //TODO: Ingresar correlativo en linea del documento ([SaleDetailNumber])
                    ProductMovement = zippedItem.ProductMovement,
                    Quantity        = zippedItem.SaleLineDto.Quantity,
                    SaleDocument    = saleDocument,
                    SinglePrice     = zippedItem.SaleLineDto.UnitPrice,
                    TotalPrice      = zippedItem.SaleLineDto.LinePrice
                };
                uow.SaleDetailsRepository.Insert(saleDetail);
            }
        }
Exemple #23
0
        public IActionResult saveChanges(Guid id)
        {
            _propertyInfos.ChangeState(id);

            var saleDetails = new SaleDetails
            {
                Id       = Guid.NewGuid(),
                Property = _propertyInfos.get(id),
                Buyer    = User.Identity.Name,
                Saler    = "Admin"
            };

            _propertySale.Add(saleDetails);

            return(RedirectToAction("Index"));
        }
Exemple #24
0
        private SaleDetails DetailsRow(IVehicleVendorRepository repo, OleDbDataReader reader, Sale sale)
        {
            var detailQty = reader["Quantity"];

            if (detailQty != DBNull.Value)
            {
                var detailQtyInt = (int)(double)detailQty;
                var vehiceId     = (int)(double)reader["VehicleId"];
                var details      = new SaleDetails()
                {
                    Quantity = (int)(double)detailQtyInt, VehicleId = vehiceId, Sale = sale
                };
                return(details);
            }
            return(null);
        }
        /// <summary>
        /// Format the sales detail in a string format used to display to the UI
        /// </summary>
        /// <param name="saleDetails">The sale details produced from the price basket products</param>
        /// <returns>A string representation of the sale</returns>
        public string Format(SaleDetails saleDetails)
        {
            if (saleDetails == null)
            {
                throw new ArgumentNullException(nameof(saleDetails));
            }

            var messageBuilder = new StringBuilder();

            messageBuilder.Append(FormatSubTotal(saleDetails.SubTotal) + Environment.NewLine);

            FormatDiscounts(saleDetails, messageBuilder);

            messageBuilder.Append(FormatTotal(saleDetails.Total) + Environment.NewLine);

            return(messageBuilder.ToString());
        }
Exemple #26
0
        protected void AddButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtCustomerContact.Text != null && CategoriesDropDownList.SelectedIndex > 0 && ItemsDropDownList.SelectedIndex > 0 && txtQty.Text != null)
                {
                    if (Convert.ToDecimal(lblStock.Text) >= Convert.ToDecimal(txtQty.Text))
                    {
                        SaleDetails _SaleDetails = new SaleDetails();
                        _SaleDetails.CustomerContact = txtCustomerContact.Text;
                        _SaleDetails.Item            = ItemsDropDownList.SelectedItem.ToString();
                        _SaleDetails.Unit            = Convert.ToDecimal(lblSellingPrice.Text);
                        _SaleDetails.Qty             = Convert.ToDecimal(txtQty.Text);
                        _SaleDetails.Total           = Convert.ToDecimal(lblSellingPrice.Text) * Convert.ToDecimal(txtQty.Text);
                        _SaleDetails.SalesId         = txtSalesId.Text;

                        int success = _SalesRepository.Add(_SaleDetails);
                        if (success > 0)
                        {
                            LoadSalesOrder();
                            GridviewRowSum();
                            ItemsDropDownList.ClearSelection();
                            lblSellingPrice.Text = "";
                            lblStock.Text        = "";
                            txtQty.Text          = "";
                        }
                        else
                        {
                            ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Failed Added');", true);
                        }
                    }
                    else
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Please Check Your Stock');", true);
                    }
                }
                else
                {
                    ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Please Check All formality');", true);
                }
            }
            catch { }
        }
        private void AddSaleDetailInfo(SaleDetails detail, List <PaymentInfoDto> list)
        {
            List <SaleDetailInfo> infoList = new List <SaleDetailInfo>();

            foreach (var item in list)
            {
                var entity = new SaleDetailInfo
                {
                    PaymentInfoID = item.PaymentInfoID,
                    SaleDetailID  = detail.ID,
                    AddDate       = DateTime.Now,
                    Quantity      = item.Quantity,
                    IMEI          = item.IMEI
                };
                infoList.Add(entity);
            }
            rpsaledetailinfo.AddRange(infoList);
            rpimei.SaveChanges();
            rppaymentinfo.SaveChanges();
        }
Exemple #28
0
        private void SubmitButton_Click(object sender, EventArgs e)
        {
            if (totalMrpTextBox.Text == "")
            {
                MessageBox.Show("totalMrpText field is required");
                return;
            }

            if (mrpTextBox.Text == "")
            {
                MessageBox.Show("MrpText field is required");
                return;
            }

            if (availableQuantityTextBox.Text == "")
            {
                MessageBox.Show("AvailableText field is required");
                return;
            }


            SaleDetails saleDetails = new SaleDetails();


            salesDataGridView.Visible  = false;
            submitDataGridView.Visible = true;
            MessageBox.Show("Added successfully in the GridView..!!");


            saleDetails.Category          = (categoryComboBox.Text).ToString();
            saleDetails.ProductCode       = (productComboBox.Text).ToString();
            saleDetails.Quantity          = (quantityTextBox.Text);
            saleDetails.TotalMrpTk        = Convert.ToDouble(totalMrpTextBox.Text);
            saleDetails.MrpTk             = Convert.ToDouble(mrpTextBox.Text);
            saleDetails.AvailableQuantity = availableQuantityTextBox.Text;

            _saleDetailsBLL.SubmitButton(saleDetails);


            submitDataGridView.DataSource = _saleDetailsBLL.ClickSubmit(saleDetails);
        }
        public ActionResult Create(SaleViewModel salesViewModel)
        {
            try
            {
                using (P_MarketContext db = new P_MarketContext())
                {
                    Sale sale = new Sale
                    {
                        ClientKey = salesViewModel.ClientKey,
                        SaleDate  = DateTime.Now
                    };

                    db.Sales.Add(sale);
                    db.SaveChanges();

                    foreach (var item in salesViewModel.SaleDetails)
                    {
                        var         product     = db.Products.Find(item.ProductId);
                        SaleDetails saleDetails = new SaleDetails
                        {
                            ProductId           = item.ProductId,
                            SaleDetailsQuantity = item.ProductQuantity,
                            SaleDetailsSubTotal = product.ProductPrice * item.ProductQuantity,
                            SaleKey             = sale.SaleKey
                        };

                        db.SaleDetails.Add(saleDetails);
                        db.SaveChanges();
                    }
                }

                return(RedirectToAction("Index"));
            }
            catch (Exception)
            {
                return(View(salesViewModel));
            }

            //return View();
        }
        public async Task UpdateSale(SaleModelView model)
        {
            Sale oldDetailSale = await GetById(model.Id);

            List <SaleDetails> saleDetailList = _context.SaleDetailses.Where(x => x.SaleId == model.Id).ToList();

            foreach (SaleDetails item in saleDetailList)
            {
                _context.Set <SaleDetails>().Remove(item);
            }
            _context.SaveChangesAsync();

            oldDetailSale.Modify      = DateTime.Now;
            oldDetailSale.NoOfItem    = model.NoOfProduct;
            oldDetailSale.TotalAmount = model.TotalAmount;

            await Update(oldDetailSale);

            if (model.Id != null)
            {
                foreach (SaleDetailsViewModel item in model.SaleDetails)
                {
                    SaleDetails product = new SaleDetails();
                    product.SaleId      = model.Id;
                    product.Quantity    = item.Quantity;
                    product.ProductId   = item.ProductId;
                    product.Price       = item.Price;
                    product.MeasureType = item.Unit.ToString();
                    product.Create      = DateTime.Now;
                    product.CreateBy    = Guid.NewGuid();
                    product.Modify      = DateTime.Now;
                    product.ModifyBy    = Guid.NewGuid();

                    _context.Set <SaleDetails>().AddAsync(product);
                }
            }
            await _context.SaveChangesAsync();
        }