private void GenerarLineas(PedidosService service, PedidosComprasModel pedidocompra, List <PedidosComprasLinModel> lineas, IEnumerable <StLineasAsistentePedidos> nuevasLineas) { var dictionaryPedidosVentas = new Dictionary <string, PedidosModel>(); var dictionaryArticulos = new Dictionary <string, ArticulosDocumentosModel>(); var serviceArticulos = FService.Instance.GetService(typeof(ArticulosModel), _context, _db) as ArticulosService; var i = 1; foreach (var item in nuevasLineas) { var pedidoObj = dictionaryPedidosVentas.ContainsKey(item.ReferenciaPedidoVenta) ? dictionaryPedidosVentas[item.ReferenciaPedidoVenta] : service.get(service.GetByReferencia(item.ReferenciaPedidoVenta).Id.ToString()) as PedidosModel; if (!dictionaryPedidosVentas.ContainsKey(item.ReferenciaPedidoVenta)) { dictionaryPedidosVentas.Add(item.ReferenciaPedidoVenta, pedidoObj); } var lineaPedidoVenta = pedidoObj.Lineas.Single(f => f.Id == int.Parse(item.IdLinea)); var lineaPedidoCompra = new PedidosComprasLinModel(); var articulosObj = dictionaryArticulos.ContainsKey(lineaPedidoVenta.Fkarticulos) ? dictionaryArticulos[lineaPedidoVenta.Fkarticulos] : serviceArticulos.GetArticulo(lineaPedidoVenta.Fkarticulos, pedidocompra.Fkproveedores, (pedidocompra.Fkmonedas ?? 978).ToString(), pedidocompra.Fkregimeniva, TipoFlujo.Compra) as ArticulosDocumentosModel; if (!dictionaryArticulos.ContainsKey(lineaPedidoVenta.Fkarticulos)) { dictionaryArticulos.Add(lineaPedidoVenta.Fkarticulos, articulosObj); } var properties = lineaPedidoCompra.GetType().GetProperties(); foreach (var p in properties) { if (lineaPedidoVenta.GetType().GetProperty(p.Name) != null) { p.SetValue(lineaPedidoCompra, lineaPedidoVenta.GetType().GetProperty(p.Name).GetValue(lineaPedidoVenta)); } } lineaPedidoCompra.Fkpresupuestos = null; lineaPedidoCompra.Fkpresupuestosid = null; lineaPedidoCompra.Fkpresupuestosreferencia = ""; lineaPedidoCompra.Largo = lineaPedidoVenta.Largo; lineaPedidoCompra.Ancho = lineaPedidoVenta.Ancho; lineaPedidoCompra.Grueso = lineaPedidoVenta.Grueso; lineaPedidoCompra.Metros = lineaPedidoVenta.Metros; lineaPedidoCompra.Id = i++; lineaPedidoCompra.Precio = articulosObj.Precio; var elem = _importarService.ImportarLinea(lineaPedidoCompra); lineaPedidoCompra.Metros = elem.Metros; lineaPedidoCompra.Importe = elem.Importe; lineaPedidoCompra.Fkpedidosventas = pedidoObj.Id; lineaPedidoCompra.Fkpedidosventasreferencia = pedidoObj.Referencia; lineas.Add(lineaPedidoCompra); } }
public ActionResult PedidosComprasLinUpdate([ModelBinder(typeof(DevExpressEditorsBinder))] PedidosComprasLinModel item) { var model = Session[session] as List <PedidosComprasLinModel>; try { if (ModelState.IsValid) { var configuracionAplicacion = appService.GetConfiguracion(); if (configuracionAplicacion.ComprasUsarCanal && configuracionAplicacion.ComprasCanalObligatorio && string.IsNullOrEmpty(item.Canal)) { ModelState.AddModelError("Canal", string.Format(General.ErrorCampoObligatorio, PedidosCompras.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("_pedidoscompraslin", 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(PedidosComprasModel), ContextService) as PedidosComprasService; Session[sessiontotales] = service.Recalculartotales(model, descuentopp, descuentocomercial, portes, monedaObj.Decimales); } } } catch (ValidationException) { throw; } return(PartialView("_PedidosCompraslin", model)); }
public ActionResult PedidosComprasLinAddNew([ModelBinder(typeof(DevExpressEditorsBinder))] PedidosComprasLinModel item) { var model = Session[session] as List <PedidosComprasLinModel>; 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, PedidosCompras.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(); // 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("_pedidoscompraslin", model)); } model.Add(item); Session[session] = model; var service = FService.Instance.GetService(typeof(PedidosComprasModel), ContextService) as PedidosComprasService; Session[sessiontotales] = service.Recalculartotales(model, descuentopp, descuentocomercial, portes, monedaObj.Decimales); } } else { ModelState.AddModelError("Fkarticulos", Articulos.ErrorArticuloInexistente); } } } catch (ValidationException) { model.Remove(item); throw; } return(PartialView("_pedidoscompraslin", model)); }