Ejemplo n.º 1
0
        private bool validar(fa_notaCreDeb_Info i_validar, ref string msg)
        {
            i_validar.lst_det   = List_det.get_list(i_validar.IdTransaccionSession);
            i_validar.lst_cruce = List_cruce.get_list(i_validar.IdTransaccionSession).Where(q => q.seleccionado == true).ToList();

            if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.no_fecha, cl_enumeradores.eModulo.FAC, i_validar.IdSucursal, ref msg))
            {
                return(false);
            }

            if (i_validar.lst_det.Count == 0)
            {
                msg = "No ha ingresado registros en el detalle";
                return(false);
            }
            if (i_validar.lst_det.Where(q => q.sc_cantidad == 0).Count() > 0)
            {
                msg = "Existen registros con cantidad 0 en el detalle";
                return(false);
            }
            if (i_validar.lst_det.Where(q => q.IdProducto == 0).Count() > 0)
            {
                msg = "Existen registros sin producto en el detalle";
                return(false);
            }

            if (i_validar.lst_cruce.Count > 0 && (Math.Round(Convert.ToDecimal(i_validar.lst_det.Sum(q => q.sc_total)) - Convert.ToDecimal(i_validar.lst_cruce.Sum(q => q.Valor_Aplicado)), 2, MidpointRounding.AwayFromZero) != 0))
            {
                msg = "El valor aplicado en facturas es mayor al valor total de la nota de crédito";
                return(false);
            }

            i_validar.IdBodega        = (int)bus_punto_venta.get_info(i_validar.IdEmpresa, i_validar.IdSucursal, Convert.ToInt32(i_validar.IdPuntoVta)).IdBodega;
            i_validar.IdUsuario       = SessionFixed.IdUsuario;
            i_validar.IdUsuarioUltMod = SessionFixed.IdUsuario;
            var tipo_nota = bus_tipo_nota.get_info(i_validar.IdEmpresa, i_validar.IdTipoNota);

            if (tipo_nota != null)
            {
                i_validar.IdCtaCble_TipoNota = tipo_nota.IdCtaCble;
            }

            if (i_validar.IdNota == 0 && i_validar.NaturalezaNota == "SRI")
            {
                var pto_vta = bus_punto_venta.get_info(i_validar.IdEmpresa, i_validar.IdSucursal, Convert.ToInt32(i_validar.IdPuntoVta));
                if (pto_vta.EsElectronico == false)
                {
                    var talonario = bus_talonario.get_info(i_validar.IdEmpresa, i_validar.CodDocumentoTipo, i_validar.Serie1, i_validar.Serie2, i_validar.NumNota_Impresa);
                    if (talonario == null)
                    {
                        msg = "No existe un talonario creado con la numeración: " + i_validar.Serie1 + "-" + i_validar.Serie2 + "-" + i_validar.NumNota_Impresa;
                        return(false);
                    }
                    if (talonario.Usado == true)
                    {
                        msg = "El talonario: " + i_validar.Serie1 + "-" + i_validar.Serie2 + "-" + i_validar.NumNota_Impresa + " se encuentra utilizado.";
                        return(false);
                    }
                    if (bus_nota.DocumentoExiste(i_validar.IdEmpresa, i_validar.CodDocumentoTipo, i_validar.Serie1, i_validar.Serie2, i_validar.NumNota_Impresa))
                    {
                        msg = "Existe una nota de crédito con el talonario: " + i_validar.Serie1 + "-" + i_validar.Serie2 + "-" + i_validar.NumNota_Impresa + " utilizado.";
                        return(false);
                    }
                    if (talonario.es_Documento_Electronico == false)
                    {
                        i_validar.NumAutorizacion = talonario.NumAutorizacion;
                    }
                }
            }

            if (i_validar.NaturalezaNota != "SRI")
            {
                i_validar.Serie1          = null;
                i_validar.Serie2          = null;
                i_validar.NumNota_Impresa = null;
            }

            foreach (var item in i_validar.lst_det)
            {
                if (item.sc_cantidad > item.sc_cantidad_factura)
                {
                    msg = "No puede devolver una cantidad mayor a la facturado, Facturado[" + item.sc_cantidad_factura + "]:  intenta devolver [" + item.sc_cantidad + "]  produdcto [" + item.pr_descripcion + "]";
                    return(false);
                }
            }

            #region ValidarCentroCosto
            int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa);
            ct_parametro_Bus bus_parametro = new ct_parametro_Bus();
            var info_ct_parametro          = bus_parametro.get_info(IdEmpresa);

            if (i_validar.lst_det.Count > 0)
            {
                if (info_ct_parametro.EsCentroCostoObligatorio == true)
                {
                    foreach (var item in i_validar.lst_det)
                    {
                        if (item.IdCentroCosto == "" || item.IdCentroCosto == null)
                        {
                            mensaje = "Debe seleccionar el centro de costo para los items del detalle";
                            return(false);
                        }
                    }
                }
            }
            #endregion

            return(true);
        }
Ejemplo n.º 2
0
        private bool validar(in_Ing_Egr_Inven_Info i_validar, ref string msg)
        {
            if (i_validar.lst_in_Ing_Egr_Inven_det.Count == 0)
            {
                mensaje = "Debe ingresar al menos un producto";
                return(false);
            }
            if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.cm_fecha, cl_enumeradores.eModulo.INV, i_validar.IdSucursal, ref msg))
            {
                return(false);
            }

            #region ValidarExisteProductoxBodega
            var param = bus_in_param.get_info(i_validar.IdEmpresa);
            mensaje = bus_producto_x_bodega.ValidarProductoPorBodega(new List <in_producto_x_tb_bodega_Info>(i_validar.lst_in_Ing_Egr_Inven_det.Select(q => new in_producto_x_tb_bodega_Info
            {
                IdEmpresa      = i_validar.IdEmpresa,
                IdSucursal     = i_validar.IdSucursal,
                IdBodega       = i_validar.IdBodega ?? 0,
                IdProducto     = q.IdProducto,
                pr_descripcion = q.pr_descripcion
            }).ToList()), (param.ValidarCtaCbleTransacciones ?? false));
            if (!string.IsNullOrEmpty(mensaje))
            {
                return(false);
            }
            #endregion

            #region ValidarStock
            var lst_validar = i_validar.lst_in_Ing_Egr_Inven_det.GroupBy(q => new { q.IdProducto, q.pr_descripcion, q.tp_ManejaInven, q.se_distribuye }).Select(q => new in_Producto_Stock_Info
            {
                IdEmpresa      = i_validar.IdEmpresa,
                IdSucursal     = i_validar.IdSucursal,
                IdBodega       = i_validar.IdBodega ?? 0,
                IdProducto     = q.Key.IdProducto,
                pr_descripcion = q.Key.pr_descripcion,
                tp_manejaInven = q.Key.tp_ManejaInven,
                SeDestribuye   = q.Key.se_distribuye,

                Cantidad         = q.Sum(v => v.dm_cantidad_sinConversion),
                CantidadAnterior = q.Sum(v => v.CantidadAnterior),
            }).ToList();

            if (!bus_producto.validar_stock(lst_validar, ref msg))
            {
                return(false);
            }
            #endregion

            #region ValidarCentroCosto
            int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa);
            ct_parametro_Bus bus_parametro = new ct_parametro_Bus();
            var info_ct_parametro          = bus_parametro.get_info(IdEmpresa);

            if (i_validar.lst_in_Ing_Egr_Inven_det.Count > 0)
            {
                if (info_ct_parametro.EsCentroCostoObligatorio == true)
                {
                    foreach (var item in i_validar.lst_in_Ing_Egr_Inven_det)
                    {
                        if (item.IdCentroCosto == "" || item.IdCentroCosto == null)
                        {
                            mensaje = "Debe seleccionar el centro de costo para los items del detalle";
                            return(false);
                        }
                    }
                }
            }
            #endregion

            return(true);
        }
Ejemplo n.º 3
0
        private bool validar_factura(fa_factura_Info i_validar, ref string msg)
        {
            string MsgValidaciones = string.Empty;

            i_validar.lst_det = List_det.get_list(i_validar.IdTransaccionSession);
            if (i_validar.lst_det.Count == 0)
            {
                msg = "No ha ingresado registros en el detalle de la factura";
                return(false);
            }
            if (i_validar.lst_det.Where(q => q.vt_cantidad == 0).Count() > 0)
            {
                msg = "Existen registros con cantidad 0 en el detalle de la factura";
                return(false);
            }
            if (i_validar.lst_det.Where(q => q.IdProducto == 0).Count() > 0)
            {
                msg = "Existen registros sin producto en el detalle de la factura";
                return(false);
            }
            if (i_validar.lst_det.Sum(q => q.vt_total) == 0)
            {
                msg = "La factura no tiene valor, por favor revise";
                return(false);
            }

            #region Talonario
            var pto_vta = bus_punto_venta.get_info(i_validar.IdEmpresa, i_validar.IdSucursal, Convert.ToInt32(i_validar.IdPuntoVta));
            if (pto_vta != null && pto_vta.EsElectronico)
            {
                var info_documento = bus_talonario.GetUltimoNoUsado(i_validar.IdEmpresa, cl_enumeradores.eTipoDocumento.FACT.ToString(), pto_vta.Su_CodigoEstablecimiento, pto_vta.cod_PuntoVta, pto_vta.EsElectronico, false);
                i_validar.vt_NumFactura = info_documento.NumDocumento;
            }
            i_validar.IdBodega  = pto_vta.IdBodega;
            i_validar.vt_serie1 = pto_vta.Su_CodigoEstablecimiento;
            i_validar.vt_serie2 = pto_vta.cod_PuntoVta;
            i_validar.IdCaja    = pto_vta.IdCaja;
            #endregion

            #region Validar cliente final
            var param = bus_param.get_info(i_validar.IdEmpresa);
            if (param != null && param.IdClienteConsumidorFinal != null && param.MontoMaximoConsumidorFinal > 0 && i_validar.IdCliente == param.IdClienteConsumidorFinal)
            {
                if (i_validar.info_resumen.Total > Convert.ToDecimal(param.MontoMaximoConsumidorFinal ?? 0))
                {
                    msg = "El límite de venta para consumidor final es de $ " + param.MontoMaximoConsumidorFinal.ToString() + ", por favor revise.";
                    return(false);
                }
            }
            #endregion

            #region Resumen
            i_validar.info_resumen = new fa_factura_resumen_Info
            {
                SubtotalIVASinDscto    = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero),
                SubtotalSinIVASinDscto = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_cantidad * q.vt_Precio), 2, MidpointRounding.AwayFromZero),

                Descuento = (decimal)Math.Round(i_validar.lst_det.Sum(q => q.vt_DescUnitario * q.vt_cantidad), 2, MidpointRounding.AwayFromZero),

                SubtotalIVAConDscto    = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva != 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero),
                SubtotalSinIVAConDscto = (decimal)Math.Round(i_validar.lst_det.Where(q => q.vt_por_iva == 0).Sum(q => q.vt_Subtotal), 2, MidpointRounding.AwayFromZero),

                ValorIVA = (decimal)Math.Round(i_validar.lst_det.Sum(q => q.vt_iva), 2, MidpointRounding.AwayFromZero)
            };
            i_validar.info_resumen.SubtotalSinDscto = i_validar.info_resumen.SubtotalIVASinDscto + i_validar.info_resumen.SubtotalSinIVASinDscto;
            i_validar.info_resumen.SubtotalConDscto = i_validar.info_resumen.SubtotalIVAConDscto + i_validar.info_resumen.SubtotalSinIVAConDscto;
            i_validar.info_resumen.Total            = i_validar.info_resumen.SubtotalConDscto + i_validar.info_resumen.ValorIVA;
            #endregion


            i_validar.IdUsuario        = SessionFixed.IdUsuario;
            i_validar.IdUsuarioUltModi = SessionFixed.IdUsuario;

            #region ValidacionDeTalonario
            if (i_validar.IdCbteVta == 0 && !pto_vta.EsElectronico)
            {
                var talonario = bus_talonario.get_info(i_validar.IdEmpresa, i_validar.vt_tipoDoc, i_validar.vt_serie1, i_validar.vt_serie2, i_validar.vt_NumFactura);
                if (talonario == null)
                {
                    msg = "No existe un talonario creado con la numeración: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura;
                    return(false);
                }
                if (talonario.Usado == true)
                {
                    msg = "El talonario: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura + " se encuentra utilizado.";
                    return(false);
                }
                if (bus_factura.factura_existe(i_validar.IdEmpresa, i_validar.vt_serie1, i_validar.vt_serie2, i_validar.vt_NumFactura))
                {
                    msg = "Existe una factura registrada con el número: " + i_validar.vt_serie1 + "-" + i_validar.vt_serie2 + "-" + i_validar.vt_NumFactura + ".";
                    return(false);
                }
            }

            #endregion

            #region ValidarStock
            if (i_validar.lst_det.Where(q => q.tp_manejaInven == "S").Count() > 0)
            {
                if (!bus_periodo.ValidarFechaTransaccion(i_validar.IdEmpresa, i_validar.vt_fecha, cl_enumeradores.eModulo.INV, i_validar.IdSucursal, ref msg))
                {
                    return(false);
                }
                var lst_validar = i_validar.lst_det.GroupBy(q => new { q.IdProducto, q.pr_descripcion, q.tp_manejaInven, q.se_distribuye }).Select(q => new in_Producto_Stock_Info
                {
                    IdEmpresa      = i_validar.IdEmpresa,
                    IdSucursal     = i_validar.IdSucursal,
                    IdBodega       = i_validar.IdBodega,
                    IdProducto     = q.Key.IdProducto,
                    pr_descripcion = q.Key.pr_descripcion,
                    tp_manejaInven = q.Key.tp_manejaInven,
                    SeDestribuye   = q.Key.se_distribuye ?? false,

                    Cantidad         = q.Sum(v => v.vt_cantidad),
                    CantidadAnterior = q.Sum(v => v.CantidadAnterior),
                }).ToList();

                if (!bus_producto.validar_stock(lst_validar, ref msg))
                {
                    return(false);
                }
            }
            #endregion

            #region ValidarCentroCosto
            int IdEmpresa = Convert.ToInt32(SessionFixed.IdEmpresa);
            ct_parametro_Bus bus_parametro = new ct_parametro_Bus();
            var info_ct_parametro          = bus_parametro.get_info(IdEmpresa);

            if (i_validar.lst_det.Count > 0)
            {
                if (info_ct_parametro.EsCentroCostoObligatorio == true)
                {
                    foreach (var item in i_validar.lst_det)
                    {
                        if (item.IdCentroCosto == "" || item.IdCentroCosto == null)
                        {
                            mensaje = "Debe seleccionar el centro de costo para los items del detalle";
                            return(false);
                        }
                    }
                }
            }
            #endregion

            return(true);
        }