private string CreateIdCadena(CriteriosagrupacionModel model, AlbaranesLinModel linea) { var formato = ""; formato += string.Format("{0};{1};{2}", linea.Fkarticulos, linea.Precio, linea.Porcentajedescuento); var properties = linea.GetType(); foreach (var item in model.Lineas.OrderBy(f => f.Orden)) { formato += string.Format(";{0}", properties.GetProperty(item.Campoenum.ToString()).GetValue(linea)); } return(formato); }
private void EditarLineaImportar(ILineaImportar item, AlbaranesLinModel linea, CriteriosagrupacionModel agrupacion) { item.Cantidad += linea.Cantidad ?? 0; item.Metros += linea.Metros ?? 0; item.Importe += linea.Importe ?? 0; item.Importedescuento += linea.Importedescuento ?? 0; item.Cuotaiva += linea.Cuotaiva ?? 0; item.Cuotarecargoequivalencia += linea.Cuotarecargoequivalencia ?? 0; if (!agrupacion.Lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Largo)) { item.Largo = item.Largo == linea.Largo ? item.Largo : 0; } if (!agrupacion.Lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Ancho)) { item.Ancho = item.Ancho == linea.Ancho ? item.Ancho : 0; } if (!agrupacion.Lineas.Any(f => f.Campoenum == CamposAgrupacionAlbaran.Grueso)) { item.Grueso = item.Grueso == linea.Grueso ? item.Grueso : 0; } }
private ILineaImportar CreateLineaImportar(int id, AlbaranesModel albaran, AlbaranesLinModel linea) { return(new LineaImportarModel() { Id = id, Canal = linea.Canal, Cantidad = linea.Cantidad ?? 0, Cuotaiva = linea.Cuotaiva ?? 0, Cuotarecargoequivalencia = linea.Cuotarecargoequivalencia ?? 0, Decimalesmedidas = linea.Decimalesmedidas ?? 0, Decimalesmonedas = linea.Decimalesmonedas ?? 0, Descripcion = linea.Descripcion, Fkregimeniva = linea.Fkregimeniva, Fkunidades = linea.Fkunidades, Metros = linea.Metros ?? 0, Precio = linea.Precio ?? 0, Fkarticulos = linea.Fkarticulos, Fktiposiva = linea.Fktiposiva, Ancho = linea.Ancho, Grueso = linea.Grueso, Largo = linea.Largo, Importe = linea.Importe ?? 0, Importedescuento = linea.Importedescuento ?? 0, Porcentajedescuento = linea.Porcentajedescuento ?? 0, Porcentajeiva = linea.Porcentajeiva ?? 0, Porcentajerecargoequivalencia = linea.Porcentajerecargoequivalencia ?? 0, Lote = linea.Lote, Notas = string.Empty,//Funciones.Qnull(row["Notas"]), Precioanterior = 0, Revision = "", Tabla = null, Fkdocumento = albaran.Id.ToString(), Fkdocumentoid = "", Fkdocumentoreferencia = "" }); }
public ActionResult AlbaranesLinUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] AlbaranesLinModel item) { var model = Session[session] as List <AlbaranesLinModel>; try { if (ModelState.IsValid) { var configuracionAplicacion = appService.GetConfiguracion(); if (configuracionAplicacion.VentasUsarCanal && configuracionAplicacion.VentasCanalObligatorio && string.IsNullOrEmpty(item.Canal)) { ModelState.AddModelError("Canal", string.Format(General.ErrorCampoObligatorio, Albaranes.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, (editItem.Decimalesmonedas ?? 0)); 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(); 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("_Albaraneslin", 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(AlbaranesModel), ContextService) as AlbaranesService; Session[sessiontotales] = service.Recalculartotales(model, descuentopp, descuentocomercial, portes, monedaObj.Decimales); } } } catch (Exception) { throw; } return(PartialView("_Albaraneslin", model)); }
public ActionResult AlbaranesLinAddNew([ModelBinder(typeof(DevExpressEditorsBinder))] AlbaranesLinModel item) { var model = Session[session] as List <AlbaranesLinModel>; 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.VentasUsarCanal && configuracionAplicacion.VentasCanalObligatorio && string.IsNullOrEmpty(item.Canal)) { ModelState.AddModelError("Canal", string.Format(General.ErrorCampoObligatorio, Albaranes.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); var cantidadRestante = linea.Cantidad - item.Cantidad; if (cantidadRestante <= 0) { ModelState.AddModelError("Fkarticulos", RAlbaranes.ErrorDividirLineaCantidadCero); return(PartialView("_Albaraneslin", model)); } linea.Cantidad = cantidadRestante; using (var albaranesService = FService.Instance.GetService(typeof(AlbaranesModel), ContextService) as AlbaranesService) { var nuevalinea = albaranesService.ImportarLineas(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.Fkpedidos = linea.Fkpedidos; item.Fkpedidosid = linea.Fkpedidosid; item.Fkpedidosreferencia = linea.Fkpedidosreferencia; item.Orden = linea.Id * ApplicationHelper.EspacioOrdenLineas; } } item.Decimalesmonedas = monedaObj.Decimales; item.Importe = Math.Round(item.Importe ?? 0, (item.Decimalesmonedas ?? 0)); 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("_Albaraneslin", model)); } model.Add(item); Session[session] = model; var service = FService.Instance.GetService(typeof(AlbaranesModel), ContextService) as AlbaranesService; Session[sessiontotales] = service.Recalculartotales(model, descuentopp, descuentocomercial, portes, monedaObj.Decimales); } } else { ModelState.AddModelError("Fkarticulos", Articulos.ErrorArticuloInexistente); } } } catch (Exception) { model.Remove(item); throw; } return(PartialView("_Albaraneslin", model)); }