public ActionResult AlbaranesComprasLinUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] AlbaranesComprasLinModel item) { var model = Session[session] as List <AlbaranesComprasLinModel>; try { if (ModelState.IsValid) { var configuracionAplicacion = appService.GetConfiguracion(); if (configuracionAplicacion.ComprasUsarCanal && configuracionAplicacion.ComprasCanalObligatorio && string.IsNullOrEmpty(item.Canal)) { ModelState.AddModelError("Canal", string.Format(General.ErrorCampoObligatorio, AlbaranesCompras.Canal)); } else { var editItem = model.Single(f => f.Id == item.Id); var moneda = Funciones.Qnull(Request.Params["fkmonedas"]); var decimalesunidades = Funciones.Qint(Request.Params["decimalesunidades"]); var decimalesmonedas = Funciones.Qint(Request.Params["decimalesmonedas"]); var serviceEmpresa = FService.Instance.GetService(typeof(EmpresaModel), ContextService); var empresa = serviceEmpresa.get(ContextService.Empresa) as EmpresaModel; var serviceMonedas = FService.Instance.GetService(typeof(MonedasModel), ContextService); var monedaObj = serviceMonedas.get(moneda) as MonedasModel; editItem.Decimalesmedidas = decimalesunidades ?? 0; editItem.Decimalesmonedas = decimalesmonedas ?? 0; editItem.Ancho = item.Ancho; editItem.Largo = item.Largo; editItem.Grueso = item.Grueso; editItem.Canal = item.Canal; editItem.Cantidad = item.Cantidad; editItem.Cantidadpedida = item.Cantidadpedida; editItem.Fkarticulos = item.Fkarticulos; editItem.Descripcion = item.Descripcion; editItem.Metros = item.Metros; editItem.Cuotaiva = item.Cuotaiva; editItem.Cuotarecargoequivalencia = item.Cuotarecargoequivalencia; editItem.Fktiposiva = item.Fktiposiva; editItem.Porcentajeiva = item.Porcentajeiva; editItem.Porcentajerecargoequivalencia = item.Porcentajerecargoequivalencia; editItem.Fkunidades = item.Fkunidades; editItem.Importe = Math.Round(item.Importe ?? 0, monedaObj.Decimales); editItem.Importedescuento = item.Importedescuento; editItem.Lote = item.Lote; editItem.Precio = Math.Round(item.Precio ?? 0, empresa.Decimalesprecios ?? 2); editItem.Precioanterior = item.Precioanterior; editItem.Porcentajedescuento = item.Porcentajedescuento; editItem.Tabla = item.Tabla; editItem.Revision = item.Revision?.ToUpper(); editItem.Orden = item.Orden; // Validar dimensiones artículo try { var familiasProductosService = FService.Instance.GetService(typeof(FamiliasproductosModel), ContextService) as FamiliasproductosService; familiasProductosService.ValidarDimensiones(item.Fkarticulos, item.Largo, item.Ancho, item.Grueso); } catch (ValidationException ex) { Regex rgx = new Regex(@"\{.*\}"); if (Regex.IsMatch(ex.Message, rgx.Replace(RFamilias.ErrorLargo, ".*") + ".*")) { ModelState.AddModelError("SLargo", Regex.Match(ex.Message, rgx.Replace(RFamilias.ErrorLargo, ".*")).Value); } if (Regex.IsMatch(ex.Message, ".*" + rgx.Replace(RFamilias.ErrorAncho, ".*") + ".*")) { ModelState.AddModelError("SAncho", Regex.Match(ex.Message, rgx.Replace(RFamilias.ErrorAncho, ".*")).Value); } if (Regex.IsMatch(ex.Message, ".*" + rgx.Replace(RFamilias.ErrorGrueso, ".*") + ".")) { ModelState.AddModelError("SGrueso", Regex.Match(ex.Message, rgx.Replace(RFamilias.ErrorGrueso, ".*")).Value); } return(PartialView("_Albaranescompraslin", model)); } Session[session] = model; var descuentopp = Funciones.Qdouble(Request.Params["descuentopp"]) ?? 0; var descuentocomercial = Funciones.Qdouble(Request.Params["descuentocomercial"]) ?? 0; var portes = 0; var service = FService.Instance.GetService(typeof(AlbaranesComprasModel), ContextService) as AlbaranesComprasService; Session[sessiontotales] = service.Recalculartotales(model, descuentopp, descuentocomercial, portes, monedaObj.Decimales); } } } catch (ValidationException) { throw; } return(PartialView("_AlbaranesCompraslin", model)); }
public ActionResult AlbaranesComprasLinAddNew([ModelBinder(typeof(DevExpressEditorsBinder))] AlbaranesComprasLinModel item) { var model = Session[session] as List <AlbaranesComprasLinModel>; try { if (ModelState.IsValid) { var max = model.Any() ? model.Max(f => f.Id) : 0; item.Id = max + 1; var moneda = Funciones.Qnull(Request.Params["fkmonedas"]); var serviceMonedas = FService.Instance.GetService(typeof(MonedasModel), ContextService); var serviceArticulos = FService.Instance.GetService(typeof(ArticulosModel), ContextService); var serviceEmpresa = FService.Instance.GetService(typeof(EmpresaModel), ContextService); var empresa = serviceEmpresa.get(ContextService.Empresa) as EmpresaModel; if (serviceArticulos.exists(item.Fkarticulos)) { var configuracionAplicacion = appService.GetConfiguracion(); if (configuracionAplicacion.ComprasUsarCanal && configuracionAplicacion.ComprasCanalObligatorio && string.IsNullOrEmpty(item.Canal)) { ModelState.AddModelError("Canal", string.Format(General.ErrorCampoObligatorio, AlbaranesCompras.Canal)); } else { var monedaObj = serviceMonedas.get(moneda) as MonedasModel; var descuentopp = Funciones.Qdouble(Request.Params["descuentopp"]) ?? 0; var descuentocomercial = Funciones.Qdouble(Request.Params["descuentocomercial"]) ?? 0; var decimalesunidades = Funciones.Qint(Request.Params["decimalesunidades"]); var portes = 0; item.Decimalesmonedas = monedaObj.Decimales; item.Importe = Math.Round(item.Importe ?? 0, monedaObj.Decimales); item.Precio = Math.Round(item.Precio ?? 0, empresa.Decimalesprecios ?? 2); item.Decimalesmedidas = decimalesunidades ?? 0; item.Revision = item.Revision?.ToUpper(); item.EnFactura = false; // Validar dimensiones artículo try { var familiasProductosService = FService.Instance.GetService(typeof(FamiliasproductosModel), ContextService) as FamiliasproductosService; familiasProductosService.ValidarDimensiones(item.Fkarticulos, item.Largo, item.Ancho, item.Grueso); } catch (ValidationException ex) { Regex rgx = new Regex(@"\{.*\}"); if (Regex.IsMatch(ex.Message, rgx.Replace(RFamilias.ErrorLargo, ".*") + ".*")) { ModelState.AddModelError("SLargo", Regex.Match(ex.Message, rgx.Replace(RFamilias.ErrorLargo, ".*")).Value); } if (Regex.IsMatch(ex.Message, ".*" + rgx.Replace(RFamilias.ErrorAncho, ".*") + ".*")) { ModelState.AddModelError("SAncho", Regex.Match(ex.Message, rgx.Replace(RFamilias.ErrorAncho, ".*")).Value); } if (Regex.IsMatch(ex.Message, ".*" + rgx.Replace(RFamilias.ErrorGrueso, ".*") + ".")) { ModelState.AddModelError("SGrueso", Regex.Match(ex.Message, rgx.Replace(RFamilias.ErrorGrueso, ".*")).Value); } return(PartialView("_Albaranescompraslin", model)); } model.Add(item); Session[session] = model; var service = FService.Instance.GetService(typeof(AlbaranesComprasModel), ContextService) as AlbaranesComprasService; Session[sessiontotales] = service.Recalculartotales(model, descuentopp, descuentocomercial, portes, monedaObj.Decimales); } } else { ModelState.AddModelError("Fkarticulos", Articulos.ErrorArticuloInexistente); } } } catch (ValidationException) { model.Remove(item); throw; } return(PartialView("_Albaranescompraslin", model)); }