Exemplo n.º 1
0
        private void ValidarAjuste(EncabAjuste obj, string empresaDB)
        {
            using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB));

            #region Verificar sucursal
            new Utilitarios().GetSucursal(obj.CoSucu, empresaDB);
            #endregion

            #region Verficar renglones
            foreach (var iRengAju in obj.DetaAjuste)
            {
                #region Verificar articulo
                Art articulo = new ArticulosRepositorio().Find(iRengAju.CoArt, empresaDB);
                if (articulo == null)
                {
                    throw new ArgumentException($"El artículo {iRengAju.CoArt.Trim()} indicado en el renglón {iRengAju.RengNum} del ajuste no existe.");
                }
                #endregion

                #region Verificar cantidad
                if (iRengAju.TotalArt <= 0)
                {
                    throw new ArgumentException($"Cantidad indicada en el renglón {iRengAju.RengNum} es inválida. (Valor indicado: {iRengAju.TotalArt}).");
                }
                #endregion

                #region Verificar unidad primaria
                Unidades unidadPpal = db.Unidades.FirstOrDefault(u => u.CoUni.Trim() == iRengAju.UniVenta.Trim());
                if (unidadPpal == null)
                {
                    throw new ArgumentException($"La unidad primaria indicada en el renglón {iRengAju.RengNum} no existe.");
                }
                #endregion

                #region Verificar unidad secundaria
                Unidades unidadSecd = db.Unidades.FirstOrDefault(u => u.CoUni.Trim() == iRengAju.SuniCompr.Trim());
                if (unidadSecd == null)
                {
                    throw new ArgumentException($"La unidad secundaria indicada en el renglón {iRengAju.RengNum} no existe.");
                }
                #endregion

                #region Verificar almacen
                SubAlma almacen = db.SubAlma.FirstOrDefault(a => a.CoSub == iRengAju.CoAlma);
                if (almacen == null)
                {
                    throw new ArgumentException($"El almacén {iRengAju.CoAlma.Trim()} suministrado en el renglón {iRengAju.RengNum} no existe.");
                }
                else
                {
                    if (almacen.CoAlma.Trim() != obj.CoSucu.Trim())
                    {
                        throw new ArgumentException($"El almacén {iRengAju.CoAlma.Trim()} suministrado en el renglón {iRengAju.RengNum} no está permitido utilizarlo en la sucursal suministrada {obj.CoSucu.Trim()}.");
                    }
                }
                #endregion
            }
            #endregion
        }
        private void ValidarDevolucion(EncabDevolucionVenta obj, string empresaDB)
        {
            using var db = new ProfitAdmin2K8(conn.GetDbContextOptions(empresaDB));
            Utilitarios utilitarios = new Utilitarios();

            #region Verificar caja ppal para el cobro
            caja = db.Cajas.FirstOrDefault(c => c.Cajapri == true);
            if (caja == null)
            {
                throw new ArgumentException("No existe una caja principal para la cancelación del cobro. Llame a su consultor profit.");
            }
            #endregion

            #region Verificar cliente
            cliente = new ClientesRepositorio().GetCliente(obj.CoCli, empresaDB);
            if (cliente == null)
            {
                throw new ArgumentException($"El cliente {obj.CoCli.Trim()} indicado para la devolución no existe.");
            }
            else
            {
                if (cliente.Inactivo)
                {
                    throw new ArgumentException($"El cliente {obj.CoCli.Trim()} indicado para la devolución se encuentra inactivo.");
                }
            }
            #endregion

            #region Verificar vendedor
            Vendedor vendor = new VendedoresRepositorio().Find(obj.CoVen, empresaDB);
            if (vendor != null)
            {
                if (!vendor.FunVen)
                {
                    throw new ArgumentException($"Vendedor {obj.CoVen} indicado no tiene función de 'vendedor'.");
                }
                if (!vendor.FunCob)
                {
                    throw new ArgumentException($"Vendedor {obj.CoVen} indicado no tiene función de 'cobrador'.");
                }
            }
            else
            {
                throw new ArgumentException($"El vendedor {obj.CoVen} suministrado no existe.");
            }
            #endregion

            #region Verificar transporte
            Transpor transporte = db.Transpor.FirstOrDefault(t => t.CoTran == obj.CoTran);
            if (transporte == null)
            {
                throw new ArgumentException($"El transporte {obj.CoTran} suministrado no existe.");
            }
            #endregion

            #region Verificar condicion de pago
            Condicio condicion = db.Condicio.FirstOrDefault(c => c.CoCond == obj.FormaPag);
            if (condicion == null)
            {
                throw new ArgumentException($"La condición de pago {obj.FormaPag} suministrado no existe.");
            }
            #endregion

            #region Verificar moneda
            utilitarios.GetMoneda(obj.Moneda, empresaDB);
            #endregion

            #region Verificar sucursal
            utilitarios.GetSucursal(obj.CoSucu, empresaDB);
            #endregion

            #region Verificar datos en renglones de factura
            foreach (var iRengFac in obj.DetaDevolucionVenta)
            {
                #region Verificar factura
                factura = new FacturasVentasRepositorio().Find(iRengFac.NumDoc, empresaDB);
                if (factura == null)
                {
                    throw new ArgumentException($"La factura {iRengFac.NumDoc} indicada en el renglón {iRengFac.RengNum} en la devolución de cliente no existe.");
                }
                if (factura.Anulada)
                {
                    throw new ArgumentException($"La factura {iRengFac.NumDoc} indicada en el renglón {iRengFac.RengNum} en la devolución de cliente se encuentra anulada.");
                }
                if (factura.Saldo == 0)
                {
                    throw new ArgumentException($"La factura {iRengFac.NumDoc} indicada en el renglón {iRengFac.RengNum} se encuentra procesada [Saldo=0.00].");
                }
                if (factura.Saldo < iRengFac.RengNeto)
                {
                    throw new ArgumentException($"La factura {iRengFac.NumDoc} tiene un saldo menor al monto indicado en el renglón {iRengFac.RengNum}.");
                }
                if (factura.DetaFacturaVenta.FirstOrDefault(ra => ra.CoArt.Trim() == iRengFac.CoArt.Trim()) == null)
                {
                    throw new ArgumentException($"El artículo {iRengFac.CoArt.Trim()} indicado en el renglón {iRengFac.RengNum} no se encontró en la factura.");
                }
                #endregion

                #region Verificar articulo
                Art articulo = new ArticulosRepositorio().Find(iRengFac.CoArt, empresaDB);
                if (articulo == null)
                {
                    throw new ArgumentException($"El artículo {iRengFac.CoArt.Trim()} suministrado en el renglón {iRengFac.RengNum} no existe.");
                }
                #endregion

                #region Verificar almacen
                SubAlma almacen = db.SubAlma.FirstOrDefault(a => a.CoSub == iRengFac.CoAlma);
                if (almacen == null)
                {
                    throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no existe.");
                }
                else
                {
                    if (almacen.CoAlma.Trim() != obj.CoSucu.Trim())
                    {
                        throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no está permitido utilizarlo en la sucursal suministrada {obj.CoSucu.Trim()}.");
                    }
                    if (almacen.Noventa)
                    {
                        throw new ArgumentException($"El almacén {iRengFac.CoAlma.Trim()} suministrado en el renglón {iRengFac.RengNum} no está permitido utilizarlo en el módulo de facturas.");
                    }
                }
                #endregion

                #region Verificar unidad primaria
                Unidades unidad = db.Unidades.FirstOrDefault(u => u.CoUni == iRengFac.UniVenta);
                if (unidad == null)
                {
                    throw new ArgumentException($"La unidad de venta {iRengFac.UniVenta.Trim()} suministrada en el renglón {iRengFac.RengNum} no existe.");
                }
                #endregion
            }
            #endregion
        }