//VENTA
        public OOB.Resultado.ResultadoLista <OOB.Reportes.CtaxCobrar.Ventas.LibroVenta.Ficha> Reportes_CtxCobrar_Venta_LibroVenta(OOB.Reportes.CtaxCobrar.Vendedores.Filtro filtros)
        {
            var result = new OOB.Resultado.ResultadoLista <OOB.Reportes.CtaxCobrar.Ventas.LibroVenta.Ficha>();

            try
            {
                var filtrosDTO = new DTO.Reportes.CtaxCobrar.Ventas.Filtro();
                filtrosDTO.Desde = filtros.Desde;
                filtrosDTO.Hasta = filtros.Hasta;

                var resultDTO = _servicio.Reporte_CtaxCobrar_Ventas_LibroVenta(filtrosDTO);
                if (resultDTO.Result == DTO.EnumResult.isError)
                {
                    throw new Exception(resultDTO.Mensaje);
                }

                if (resultDTO.Lista != null)
                {
                    result.cntRegistro = resultDTO.cntRegistro;
                    result.Lista       = resultDTO.Lista.Select(it =>
                    {
                        return(new OOB.Reportes.CtaxCobrar.Ventas.LibroVenta.Ficha()
                        {
                            IdAuto = it.IdAuto,
                            CiRif = it.CiRif,
                            ComprobanteRetencionNro = it.ComprobanteRetencionNro,
                            ControlNro = it.ControlNro,
                            DocumentoAfectaNro = it.DocumentoAfectaNro,
                            FacturaNro = it.FacturaNro,
                            FechaEmision = it.FechaEmision,
                            FechaRetencion = it.FechaRetencion,
                            IsRetencion = it.IsRetencion,
                            IsAnulado = it.IsAnulado,
                            NCreditoNro = it.NCreditoNro,
                            NDebitoNro = it.NDebitoNro,
                            RazonSocial = it.RazonSocial,
                            Signo = it.Signo,
                            TasaAlicuota = it.TasaAlicuota,
                            TipoDocumento = (OOB.Venta.Enumerados.TipoDocumento)it.TipoDocumento,
                            TotalBase = it.TotalBase,
                            TotalExcento = it.TotalExcento,
                            TotalImpuesto = it.TotalImpuesto,
                            TotalIvaRetenido = it.TotalIvaRetenido,
                            TotalVenta = it.TotalVenta,
                        });
                    }).ToList();
                }
                else
                {
                    result.Lista = new List <OOB.Reportes.CtaxCobrar.Ventas.LibroVenta.Ficha>();
                }
            }
            catch (Exception e)
            {
                result.Mensaje = e.Message;
                result.Result  = OOB.Resultado.EnumResult.isError;
            }
            return(result);
        }
 //VENTA
 public DTO.ResultadoLista <DTO.Reportes.CtaxCobrar.Ventas.LibroVenta> Reporte_CtaxCobrar_Ventas_LibroVenta(DTO.Reportes.CtaxCobrar.Ventas.Filtro filtros)
 {
     return(provider.Reporte_CtaxCobrar_Ventas_LibroVenta(filtros));
 }
        //VENTAS
        public DTO.ResultadoLista <DTO.Reportes.CtaxCobrar.Ventas.LibroVenta> Reporte_CtaxCobrar_Ventas_LibroVenta(DTO.Reportes.CtaxCobrar.Ventas.Filtro filtros)
        {
            var result = new DTO.ResultadoLista <DTO.Reportes.CtaxCobrar.Ventas.LibroVenta>();

            try
            {
                using (var ctx = new dBEntities(_cn.ConnectionString))
                {
                    //DOCUMENTOS QUE APLICAN EN EL PERIODO
                    var q = ctx.ventas.
                            Where(d => d.tipo == "01" || d.tipo == "02" || d.tipo == "03").
                            ToList();

                    if (filtros.Desde.HasValue)
                    {
                        q = q.Where(f => f.fecha >= filtros.Desde.Value).ToList();
                    }
                    if (filtros.Hasta.HasValue)
                    {
                        q = q.Where(f => f.fecha <= filtros.Hasta.Value).ToList();
                    }

                    var list = new List <DTO.Reportes.CtaxCobrar.Ventas.LibroVenta>();
                    if (q.Count > 0)
                    {
                        list = q.Select(d =>
                        {
                            var fct  = "";
                            var ndb  = "";
                            var ncr  = "";
                            var tipo = DTO.Venta.Enumerados.TipoDocumento.SinDefinir;
                            switch (d.tipo)
                            {
                            case "01":    //FACTURA
                                fct  = d.documento;
                                tipo = DTO.Venta.Enumerados.TipoDocumento.Factura;
                                break;

                            case "02":    //NDEBITO
                                ndb  = d.documento;
                                tipo = DTO.Venta.Enumerados.TipoDocumento.NDebito;
                                break;

                            case "03":    //NCREDITO
                                ncr  = d.documento;
                                tipo = DTO.Venta.Enumerados.TipoDocumento.NCredito;
                                break;
                            }
                            return(new DTO.Reportes.CtaxCobrar.Ventas.LibroVenta()
                            {
                                IdAuto = d.auto,
                                FechaEmision = d.fecha,
                                CiRif = d.ci_rif,
                                RazonSocial = d.razon_social,
                                ComprobanteRetencionNro = d.comprobante_retencion,
                                FacturaNro = fct,
                                NDebitoNro = ndb,
                                NCreditoNro = ncr,
                                ControlNro = d.control,
                                TipoDocumento = tipo,
                                DocumentoAfectaNro = d.aplica,
                                TotalVenta = d.total,
                                TotalExcento = d.exento,
                                TotalBase = d.mbase,
                                TotalImpuesto = d.impuesto,
                                TasaAlicuota = d.tasa1,
                                TotalIvaRetenido = d.retencion_iva,
                                FechaRetencion = d.fecha_retencion,
                                Signo = d.signo,
                                IsRetencion = false,
                                IsAnulado = d.estatus_anulado == "1"?true:false,
                            });
                        }).ToList();


                        //RETENCIONES QUE APLICAN EN EL PERIODO
                        var q1 = ctx.ventas_retenciones.
                                 ToList();

                        if (filtros.Desde.HasValue)
                        {
                            q1 = q1.Where(f => f.fecha >= filtros.Desde.Value).ToList();
                        }
                        if (filtros.Hasta.HasValue)
                        {
                            q1 = q1.Where(f => f.fecha <= filtros.Hasta.Value).ToList();
                        }

                        foreach (var ret in q1)
                        {
                            var ldet = ctx.ventas_retenciones_detalle.Where(r => r.auto == ret.auto).ToList();
                            if (ldet != null)
                            {
                                if (ldet.Count > 0)
                                {
                                    foreach (var d in ldet)
                                    {
                                        var fct  = "";
                                        var ndb  = "";
                                        var ncr  = "";
                                        var tipo = DTO.Venta.Enumerados.TipoDocumento.SinDefinir;
                                        switch (d.tipo)
                                        {
                                        case "01":    //FACTURA
                                            fct  = d.documento;
                                            tipo = DTO.Venta.Enumerados.TipoDocumento.Factura;
                                            break;

                                        case "02":    //NDEBITO
                                            ndb  = d.documento;
                                            tipo = DTO.Venta.Enumerados.TipoDocumento.NDebito;
                                            break;

                                        case "03":    //NCREDITO
                                            ncr  = d.documento;
                                            tipo = DTO.Venta.Enumerados.TipoDocumento.NCredito;
                                            break;
                                        }

                                        var reg = new DTO.Reportes.CtaxCobrar.Ventas.LibroVenta()
                                        {
                                            IdAuto                  = d.auto_documento,
                                            FechaEmision            = d.fecha,
                                            CiRif                   = d.ci_rif,
                                            RazonSocial             = ret.razon_social,
                                            ComprobanteRetencionNro = d.comprobante,
                                            FacturaNro              = fct,
                                            NDebitoNro              = ndb,
                                            NCreditoNro             = ncr,
                                            ControlNro              = d.control,
                                            TipoDocumento           = tipo,
                                            DocumentoAfectaNro      = d.aplica,
                                            TotalVenta              = d.total,
                                            TotalExcento            = d.exento,
                                            TotalBase               = d.@base,
                                            TotalImpuesto           = d.impuesto,
                                            TasaAlicuota            = d.tasa,
                                            TotalIvaRetenido        = d.retencion,
                                            FechaRetencion          = d.fecha_retencion,
                                            Signo                   = d.signo,
                                            IsRetencion             = true,
                                            IsAnulado               = false,
                                        };
                                        list.Add(reg);
                                    }
                                }
                            }
                        }

                        result.cntRegistro = list.Count();
                        result.Lista       = list;
                    }
                }
            }
            catch (Exception e)
            {
                result.Mensaje = e.Message;
                result.Result  = DTO.EnumResult.isError;
            }

            return(result);
        }