コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
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 = ""
     });
 }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }