Example #1
0
        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);
            }
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }