public ActionResult SaveProduct(CotizacionViewModel Model) { DbContextTransaction Transaction = null; try { if (Model != null) { if (!Model.IsSaved) { Transaction = db.Database.BeginTransaction(); Cotizacion NewModel = new Cotizacion(); NewModel.Fecha = Helpers.DateHelper.GetColombiaDateTime(); NewModel.ClienteID = Model.CliID; NewModel.EmpresaID = Model.EmpID; NewModel.VendedorID = Model.VenID; if (Model.OpoID > 0) { NewModel.OportunidadID = Model.OpoID; } var Consecutivo = db.CotizacionConsecutivo.Where(cc => cc.EmpresaID == Model.EmpID).FirstOrDefault(); if (Consecutivo == null) { Consecutivo = new CotizacionConsecutivo() { EmpresaID = Model.EmpID, ValorConsecutivo = 0 }; db.CotizacionConsecutivo.Add(Consecutivo); db.SaveChanges(); } NewModel.NumberID = (Consecutivo.ValorConsecutivo + 1).ToString("0000"); NewModel.Valor = (Model.Can * Model.ValUn); NewModel.IsSaved = true; Consecutivo.ValorConsecutivo = Consecutivo.ValorConsecutivo + 1; db.SaveChanges(); db.Cotizacion.Add(NewModel); db.SaveChanges(); CotizacionDetalle NewItemModel = new CotizacionDetalle() { CotizacionID = NewModel.CotizacionID, Cotizacion = NewModel, ProductoID = Model.ProID, Cantidad = Model.Can, ValUnitario = Model.ValUn, ValTotal = Model.Can * Model.ValUn, }; db.CotizacionDetalle.Add(NewItemModel); db.SaveChanges(); AddActivityTo(NewModel); Transaction.Commit(); return(new JsonResult { Data = new { CotID = NewModel.CotizacionID, Success = true }, ContentEncoding = System.Text.Encoding.UTF8, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } else { var ProductExist = db.CotizacionDetalle.Where(cd => cd.ProductoID == Model.ProID).Any(); if (ProductExist) { return(new JsonResult { Data = new { Message = "Este producto ya fue agregado al detalle de la cotización. Seleccione otro producto.", Success = false }, ContentEncoding = System.Text.Encoding.UTF8, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } var CotizacionSaved = db.Cotizacion.Where(c => c.CotizacionID == Model.CotID).FirstOrDefault(); var Producto = db.Productos.Where(p => p.ProductoID == Model.ProID).FirstOrDefault(); if (CotizacionSaved != null && Producto != null) { CotizacionDetalle NewItemModel = new CotizacionDetalle() { CotizacionID = Model.CotID, Cotizacion = CotizacionSaved, ProductoID = Model.ProID, Cantidad = Model.Can, ValUnitario = Model.ValUn, ValTotal = Model.Can * Model.ValUn, }; CotizacionSaved.Valor = CotizacionSaved.Valor + NewItemModel.ValTotal; db.Entry(CotizacionSaved).State = EntityState.Modified; db.CotizacionDetalle.Add(NewItemModel); db.SaveChanges(); string Actions = $"<td><a class=\"fa fa-pencil-square-o\" href=\"#\" title=\"Editar\" onclick=\"EditRecord({NewItemModel.ItemID}); return false;\" ></a> | <a class=\"fa fa-trash-o\" href=\"#\" data-backdrop=\"static\" data-href=\"Petición [email protected]\" data-pkid=\"@item.ItemID\" data-toggle=\"modal\" data-target=\"#confirm-delete\" title=\"Eliminar\"></a></td>"; string MessageVal = $"<tr id=\"(del{NewItemModel.ItemID})\"><td>{Producto.ProductoID}</td><td>{Producto.Codigo}</td><td>{Producto.NombreProducto}</td><td>{Producto.Especificaciones}</td><td align=\"right\">{Model.Can.ToString("C2")}</td><td align=\"right\">{Model.ValUn.ToString("C2")}</td><td align=\"right\">{NewItemModel.ValTotal.ToString("C2")}</td>{Actions}</tr>"; return(new JsonResult { Data = new { Message = MessageVal, Success = true }, ContentEncoding = System.Text.Encoding.UTF8, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } } } return(new JsonResult { Data = new { Message = "Los datos no se reconocen correctamente. Por favor inténtelo de nuevo.", Success = false }, ContentEncoding = System.Text.Encoding.UTF8, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } catch (Exception eX) { if (Transaction != null) { Transaction.Rollback(); } // // Log Exception eX // return(new JsonResult { Data = new { Message = "Error ejecutando la acción. Por favor inténtelo de nuevo.", Success = false }, ContentEncoding = System.Text.Encoding.UTF8, JsonRequestBehavior = JsonRequestBehavior.AllowGet }); } }
public ActionResult Create([Bind(Exclude = "EmpresaPhoto", Include = "EmpresaID,Codigo,Nombre,RazonSocial,Nit,CiudadID,Direccion,Telefono,Celular,Email,SitioWeb,LineaBase")] Empresa empresa) { if (ModelState.IsValid) { bool hasErrors = false; try { #region System User Validations var CountCode = db.Empresas.Where(e => e.Codigo.Equals(empresa.Codigo)).Count(); if (CountCode > 0) { throw new Exception("El Código ingresado ya se encuentra asociado a otra empresa. Debe ser un valor único."); } if (empresa.Nit.ToString().Length < 5) { throw new Exception("El Nit debe tener al menos 5 caracteres."); } var CountNit = db.Empresas.Where(e => e.Nit.Equals(empresa.Nit)).Count(); if (CountNit > 0) { throw new Exception("El Nit ingresado ya se encuentra asociado a otra empresa. Debe ser un valor único."); } #endregion if (string.IsNullOrEmpty(empresa.Email)) { throw new Exception("El email es un valor requerido."); } //var CountEmails = db.Empresas.Where(e => e.Email.ToLower().Trim().Equals(empresa.Email.ToLower().Trim())).Count(); //if (CountEmails > 0) // throw new Exception("El Email ingresado ya se encuentra asociado a otra empresa. Debe ser un valor único."); string LogoUrl = GetEmpresaLogoUrl(empresa.LogoUrl); if (!string.IsNullOrEmpty(LogoUrl)) { empresa.LogoUrl = LogoUrl; } db.Empresas.Add(empresa); db.SaveChanges(); var Consecutivo = db.CotizacionConsecutivo.Where(cc => cc.EmpresaID == empresa.EmpresaID).FirstOrDefault(); if (Consecutivo == null) { Consecutivo = new CotizacionConsecutivo() { EmpresaID = empresa.EmpresaID, ValorConsecutivo = 0 }; db.CotizacionConsecutivo.Add(Consecutivo); } //Create System User var ResultUsr = Models.Security.ApplicationUser.AddUser(empresa.Codigo.ToString(), Startup.InitialFinalUserPwd, empresa.Nombre, empresa.Nit.ToString(), empresa.Email, empresa.EmpresaID); if (!ResultUsr.Succeeded) { ModelState.AddModelError("", String.Join(", ", ResultUsr.Errors.Select(u => u.ToString()))); hasErrors = true; } } catch (Exception eX) { ModelState.AddModelError("", eX.Message); hasErrors = true; } if (!hasErrors) { return(RedirectToAction("Index")); } } ViewBag.CiudadID = new SelectList(db.Ciudades, "CiudadID", "Ciudad", empresa.CiudadID); return(View(empresa)); }
public ActionResult Save([Bind(Include = "CotizacionID,IsSaved,EmpresaID,ClienteID,VendedorID,OportunidadID,ActividadID,Valor,NumberID,Fecha")] Cotizacion cotizacion) { if (ModelState.IsValid) { DbContextTransaction Transaction = null; try { if (!cotizacion.IsSaved) { Transaction = db.Database.BeginTransaction(); var Consecutivo = db.CotizacionConsecutivo.Where(cc => cc.EmpresaID == cotizacion.EmpresaID).FirstOrDefault(); if (Consecutivo == null) { Consecutivo = new CotizacionConsecutivo() { EmpresaID = cotizacion.EmpresaID, ValorConsecutivo = 0 }; db.CotizacionConsecutivo.Add(Consecutivo); db.SaveChanges(); } cotizacion.NumberID = (Consecutivo.ValorConsecutivo + 1).ToString("0000"); cotizacion.Valor = 0; Consecutivo.ValorConsecutivo = Consecutivo.ValorConsecutivo + 1; db.Cotizacion.Add(cotizacion); db.SaveChanges(); AddActivityTo(cotizacion); Transaction.Commit(); } else { db.Entry(cotizacion).State = EntityState.Modified; db.SaveChanges(); } decimal totalC = 0; cotizacion = db.Cotizacion.Include(c => c.Items).Where(c => c.CotizacionID == cotizacion.CotizacionID).FirstOrDefault(); if (cotizacion != null) { foreach (var item in cotizacion.Items) { totalC += item.ValTotal; } cotizacion.Valor = totalC; db.Entry(cotizacion).State = EntityState.Modified; db.SaveChanges(); } } catch (Exception eX) { if (Transaction != null) { Transaction.Rollback(); } ModelState.AddModelError("", eX.Message); } } SetViewBagData(cotizacion.VendedorID, cotizacion.ClienteID, cotizacion.OportunidadID); return(View("Manage", cotizacion)); }