public ActionResult FacturasComprasLinUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] FacturasComprasLinModel item) { var model = Session[session] as List <FacturasComprasLinModel>; try { if (ModelState.IsValid) { var configuracionAplicacion = appService.GetConfiguracion(); if (configuracionAplicacion.ComprasUsarCanal && configuracionAplicacion.ComprasCanalObligatorio && string.IsNullOrEmpty(item.Canal)) { ModelState.AddModelError("Canal", string.Format(General.ErrorCampoObligatorio, Marfil.Inf.ResourcesGlobalization.Textos.Entidades.FacturasCompras.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.Caja = item.Caja; editItem.Bundle = item.Bundle?.ToUpper(); // 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("_FacturasCompraslin", 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(FacturasComprasModel), ContextService) as FacturasComprasService; Session[sessiontotales] = service.Recalculartotales(model, descuentopp, descuentocomercial, portes, monedaObj.Decimales); } } } catch (ValidationException) { throw; } return(PartialView("_FacturasCompraslin", model)); }
public ActionResult FacturasComprasLinAddNew([ModelBinder(typeof(DevExpressEditorsBinder))] FacturasComprasLinModel item) { var model = Session[session] as List <FacturasComprasLinModel>; 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, Marfil.Inf.ResourcesGlobalization.Textos.Entidades.FacturasCompras.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; if (item.Lineaasociada.HasValue) { var linea = model.SingleOrDefault(f => f.Id == item.Lineaasociada.Value); linea.Cantidad = linea.Cantidad - item.Cantidad; using (var FacturasComprasService = FService.Instance.GetService(typeof(FacturasComprasModel), ContextService) as FacturasComprasService) { var nuevalinea = FacturasComprasService.ImportarLineas(1, 0, new[] { new LineaImportarModel() { Fkarticulos = linea.Fkarticulos, Fkunidades = linea.Fkunidades, Ancho = linea.Ancho.Value, Cantidad = linea.Cantidad.Value, Largo = linea.Largo.Value, Grueso = linea.Grueso.Value, Metros = linea.Metros.Value, Precio = linea.Precio.Value, Porcentajedescuento = linea.Porcentajedescuento.Value } }).First(); linea.Metros = nuevalinea.Metros; linea.Importe = nuevalinea.Importe; linea.Importedescuento = nuevalinea.Importedescuento; item.Fkalbaranes = linea.Fkalbaranes; item.Fkalbaranesreferencia = linea.Fkalbaranesreferencia; item.Orden = linea.Id * ApplicationHelper.EspacioOrdenLineas; } } 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.Bundle = item.Bundle?.ToUpper(); // 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("_FacturasCompraslin", model)); } model.Add(item); Session[session] = model; var service = FService.Instance.GetService(typeof(FacturasComprasModel), ContextService) as FacturasComprasService; Session[sessiontotales] = service.Recalculartotales(model, descuentopp, descuentocomercial, portes, monedaObj.Decimales); } } else { ModelState.AddModelError("Fkarticulos", Marfil.Inf.ResourcesGlobalization.Textos.Entidades.Articulos.ErrorArticuloInexistente); } } } catch (ValidationException) { model.Remove(item); throw; } return(PartialView("_FacturasCompraslin", model)); }