//PURCHASE_ADD //Submit the Product Entries in ADD_PURCHASE public ActionResult Purchase_Submit() { //Get data from Purchase table directly via form submit. string[] Prod_Name = Request.Form["txtProd_Name"].Split(','); string[] Qty = Request.Form["txtQty"].Split(','); string[] Free = Request.Form["txtFree"].Split(','); string[] Discount = Request.Form["txtDiscount"].Split(','); string[] Rate = Request.Form["txtRate"].Split(','); string[] VAT = Request.Form["txtVAT"].Split(','); string[] Amount = Request.Form["txtAmount"].Split(','); string[] Total_Amount = Request.Form["txtTotal_Amount"].Split(','); string[] cid = Request.Form["txtcid"].Split(','); //Update the corresponding rows appending quatity in Product_Log. //DB_Product_Log for(int i = 0; i < Prod_Name.Length; i++){ int ID = Convert.ToInt32(Prod_Name[i]); var query = (from a in database.DB_Product_Log where a.Prod_Id == ID select a).First(); //If MRP of product changes then the required changes to change product. query.Stock_Total_Incoming += Convert.ToInt32(Qty[i]); query.Stock_Live = query.Stock_Total_Incoming - query.Stock_Total_Outgoing; try{ database.SaveChanges(); } catch(Exception e) { Console.WriteLine(e); } } //Create a random No for Invoice ID. DateTime indianTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, "India Standard Time"); string date = Convert.ToString(indianTime); Random rnd = new Random(); int crn = rnd.Next(100000, 999999); // creates a number between 1 and 12 string crn1 = Convert.ToString(crn); string crn_final = "INVOICE_" + crn1; //DB_Invoice. DB_Invoice Invoice = new DB_Invoice(); Invoice.Invoice_Id = crn_final; Invoice.cid = Convert.ToInt32(cid[0]); Invoice.DateOfPurchase = DateTime.Now; Invoice.Grand_Total = Convert.ToDouble(Total_Amount[Total_Amount.Length - 1]); Invoice.Vat = Convert.ToDouble(VAT[0]); database.DB_Invoice.Add(Invoice); //DB_Invoice_Product Insertion for (int i = 0; i < Prod_Name.Length; i++) { DB_Invoice_Product Invoice_Product = new DB_Invoice_Product(); Invoice_Product.Invoice_Id = crn_final; Invoice_Product.Prod_Id = Convert.ToInt32(Prod_Name[i]); Invoice_Product.Quantity = Convert.ToInt32(Qty[i]); Invoice_Product.Rate = Convert.ToDouble(Rate[i]); Invoice_Product.Amount = Convert.ToDouble(Amount[i]); database.DB_Invoice_Product.Add(Invoice_Product); try { database.SaveChanges(); } catch (Exception e) { Console.WriteLine(e); } } return RedirectToAction("Add_Purchase", "Purchase"); }
//After submit of Modified Purchased Data - Purchase/Modify_Purchase -> Submit. public ActionResult Purchase_Modify_Submit() { //Get data from Modify Table. string[] Prod_Id = Request.Form["txtProd_Id"].Split(','); string[] Invoice_Id = Request.Form["txtInvoice_Id"].Split(','); string[] Qty = Request.Form["txtQty"].Split(','); string[] Free = Request.Form["txtFree"].Split(','); string[] Discount = Request.Form["txtDiscount"].Split(','); string[] Rate = Request.Form["txtRate"].Split(','); string[] Amount = Request.Form["txtAmount"].Split(','); string[] Total_Amount = Request.Form["txtTotal_Amount"].Split(','); //string[] cid = Request.Form["txtcid"].Split(','); //Update the Invoice Table first. //DB_Invoice var Invoice = Invoice_Id[0]; var query = (from a in database.DB_Invoice where a.Invoice_Id == Invoice select a).FirstOrDefault(); var length = Total_Amount.Length; query.Grand_Total = Convert.ToDouble(Total_Amount[length - 1]); //TODO: Also Change here Date of Modification. - Last Modified. try { database.SaveChanges(); } catch (Exception e) { Console.WriteLine(e); } //DB_Invoice_Product //Now Update Invoice_Product. for (int i = 0; i < Prod_Id.Length; i++) { var Prod_ID = Convert.ToInt32(Prod_Id[i]); var query1 = (from a in database.DB_Invoice_Product where a.Prod_Id == Prod_ID && a.Invoice_Id == Invoice select a).FirstOrDefault(); if (query1 == null) { // ADD this product. //DB_Product_Log var query2 = (from a in database.DB_Product_Log where a.Prod_Id == Prod_ID select a).FirstOrDefault(); //Add a condition if the product does not exist in DB_Product_log //If MRP of product changes then the required changes to change product. query2.Stock_Total_Incoming += Convert.ToInt32(Qty[i]); query2.Stock_Live = query2.Stock_Total_Incoming - query2.Stock_Total_Outgoing; //Add in DB_Invoice_Product DB_Invoice_Product Invoice_Product = new DB_Invoice_Product(); Invoice_Product.Invoice_Id = Invoice_Id[0]; Invoice_Product.Prod_Id = Convert.ToInt32(Prod_Id[i]); Invoice_Product.Quantity = Convert.ToInt32(Qty[i]); Invoice_Product.Rate = Convert.ToDouble(Rate[i]); Invoice_Product.Amount = Convert.ToDouble(Amount[i]); database.DB_Invoice_Product.Add(Invoice_Product); try { database.SaveChanges(); } catch (Exception e) { Console.WriteLine(e); } } else { //Now change the corresponding entry in Product_Log Table. //DB_Product_Log var query2 = (from a in database.DB_Product_Log where a.Prod_Id == Prod_ID select a).First(); query2.Stock_Live += (query1.Quantity - Convert.ToInt32(Qty[i])); query2.Stock_Total_Incoming += (query1.Quantity - Convert.ToInt32(Qty[i])); //DB_Invoice_Product //Update this product. query1.Quantity = Convert.ToInt32(Qty[i]); //TODO: Add Free //TODO: Add Discount query1.Rate = Convert.ToDouble(Rate[i]); query1.Amount = Convert.ToDouble(Amount[i]); try { database.SaveChanges(); } catch (Exception e) { Console.WriteLine(e); } } } //Product_Log return RedirectToAction("Modify_Purchase", "Purchase"); }