Пример #1
0
        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
                });
            }
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }