Contabilidad

Navigation:  KnowledgeBase Programación > Consultas >

Contabilidad

Previous pageReturn to chapter overviewNext page

IVA DIOT

 

FUNCIÓN

3000

PERMISO

ERP.Fiscal.Diot.Ver

ARGUMENTOS

'arg(0) = Mes

'arg(1) = Año

'arg(2) = IDEmpresa

CONSULTA

SELECT ISNULL(dbo.Clientes.TipoTercero, '04') AS TipoTercero, Resumen.TipoOperacion, dbo.Clientes.RFC, dbo.Clientes.IDFiscal, CASE WHEN TipoTercero = '05' THEN NombreCliente ELSE '' END AS NombreExtranjero, dbo.Clientes.Residencia, dbo.Clientes.Nacionalidad, ROUND(SUM(Resumen.Actos16),0) AS Actos16, 0 AS Actos15, 0 AS IVANoAcreditable16, ROUND(SUM(Resumen.Actos11),0) AS Actos11, 0 AS Actos10, 0 AS IVANoAcreditable10, 0 AS ActosImportacion16, 0 AS IVANoAcreditableImportacion16, 0 AS ActosImportacion11, 0 AS IVANoAcreditableImportacion11, 0 AS ImportacionExento, ROUND(SUM(Resumen.ImporteCeroIVA),0) AS ActosCero, ROUND(SUM(Resumen.ImporteExentoIVA),0) AS ActosExento, ROUND(SUM(Resumen.RetencionIVA),0) AS IVARetenido, 0 AS DevolucionesCompras, ROUND(SUM(Resumen.TotalFactura),0) AS TotalFactura, ROUND(SUM(Resumen.ImportePagado),0) AS ImportePagado, ROUND(SUM(Resumen.SubTotal),0) AS SubTotal, ROUND(SUM(Resumen.IVA),0) AS TotalIVA, ROUND(SUM(Resumen.IVAPagado),0) AS IVAPagado, dbo.Clientes.NombreCliente, dbo.Clientes.IDCliente FROM (SELECT AdeudadoT.IDCliente, PagadoT.IDDocumento, CASE WHEN ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)  > 1 THEN 1 ELSE ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1) END * ISNULL(AdeudadoT.TotalFactura, 0) AS ImportePagado, AdeudadoT.SubTotal, AdeudadoT.IVA, AdeudadoT.TotalFactura,  (CASE WHEN (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) > 1 THEN 1 ELSE (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) END) AS Factor,  (CASE WHEN (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) > 1 THEN 1 ELSE (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) END) * ISNULL(AdeudadoT.IVA, 0) AS IVAPagado, AdeudadoT.TipoOperacion,  (CASE WHEN (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) > 1 THEN 1 ELSE (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) END) * ISNULL(AdeudadoT.Actos16, 0) AS Actos16,  (CASE WHEN (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) > 1 THEN 1 ELSE (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) END) * ISNULL(AdeudadoT.Actos11, 0) AS Actos11, (CASE WHEN (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) > 1 THEN 1 ELSE (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) END) * ISNULL(AdeudadoT.RetencionIVA, 0) AS RetencionIVA, (CASE WHEN (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) > 1 THEN 1 ELSE (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) END) * ISNULL(AdeudadoT.ImporteExentoIVA, 0) AS ImporteExentoIVA,  (CASE WHEN (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) > 1 THEN 1 ELSE (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) END) * ISNULL(AdeudadoT.ImporteCeroIVA, 0) AS ImporteCeroIVA FROM (SELECT dbo.Relaciones.IDDocumento, SUM(dbo.CHEQUES.Importe) AS ImportePagado FROM dbo.Relaciones INNER JOIN dbo.CHEQUES ON dbo.Relaciones.IDCheque = dbo.CHEQUES.IDCheque WHERE (dbo.CHEQUES.Estado = 1) AND (MONTH(dbo.CHEQUES.FechaCobrado) = @A) AND (YEAR(dbo.CHEQUES.FechaCobrado) = @B) GROUP BY dbo.Relaciones.IDDocumento) AS PagadoT INNER JOIN (SELECT dbo.Documentos.IDDocumento, CASE WHEN ClassIETU LIKE '%Arrendamiento%' THEN '06' WHEN ClassIETU LIKE '%Honorarios%' THEN '03' ELSE '85' END AS TipoOperacion, SUM(dbo.DocumentosDetalle.SubTotal) AS SubTotal, SUM(dbo.DocumentosDetalle.IVA) AS IVA, SUM(dbo.DocumentosDetalle.TotalFactura) AS TotalFactura, dbo.Documentos.IDCliente, SUM(CASE WHEN TasaIVA = .16 THEN SubTotal ELSE 0 END) AS Actos16, SUM(CASE WHEN TasaIVA = .11 THEN SubTotal ELSE 0 END) AS Actos11, SUM(dbo.DocumentosDetalle.RetencionIVA) AS RetencionIVA, SUM(dbo.DocumentosDetalle.ImporteExentoIVA) AS ImporteExentoIVA, SUM(dbo.DocumentosDetalle.ImporteCeroIVA) AS ImporteCeroIVA FROM dbo.Documentos INNER JOIN dbo.DocumentosDetalle ON dbo.Documentos.IDDocumento = dbo.DocumentosDetalle.IDDocumento WHERE (dbo.DocumentosDetalle.ClassIETU < '2000') AND (dbo.DocumentosDetalle.TipoComprobante = 100) GROUP BY dbo.Documentos.IDDocumento, dbo.Documentos.IDCliente, CASE WHEN ClassIETU LIKE '%Arrendamiento%' THEN '06' WHEN ClassIETU LIKE '%Honorarios%' THEN '03' ELSE '85' END) AS AdeudadoT ON PagadoT.IDDocumento = AdeudadoT.IDDocumento) AS Resumen INNER JOIN dbo.Clientes ON Resumen.IDCliente = dbo.Clientes.IDCliente GROUP BY ISNULL(dbo.Clientes.TipoTercero, '04'), Resumen.TipoOperacion, dbo.Clientes.RFC, dbo.Clientes.IDFiscal, CASE WHEN TipoTercero = '05' THEN NombreCliente ELSE '' END, dbo.Clientes.Residencia, dbo.Clientes.Nacionalidad, dbo.Clientes.NombreCliente, dbo.Clientes.IDCliente

EXPLICACION Y CONSIDERACIONES

SE OBTIENE UN FACTOR = ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)

 

ESTE FACTOR INDICA QUE PROPORCION SE HA PAGADO DE IVA, O DE RETENCIONES O DE LA FACTURA EN SI

 

SI EL FACTOR ES MAYOR A 1 ENTONCES TOMA SIEMPRE EL MAXICO FACTOR = 1

(CASE WHEN (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) > 1 THEN 1 ELSE (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) END) AS Factor

 

SE PONE MAXIMO UNO PUES SI EXISTE PAGOS AGRUPADOS ES DECIR UN CHEQUE QUE PAGUE VARIOS DOCUMENTOS ENTONCES EN OBIVIEDAD EL DOCUMENTO SERA MENOR AL IMPORTE DEL CHEQUE, POR LO TANTO SE TENDRA UN ESQUEMA COMO EL QUE SIGUE

 

 

CUENTA POR PAGAR

CHEQUE

SALDO

SALDADA

100

500

-400

SI

400

500

-100

SI

Aquí son dos cuentas por pagar que se pagaron con un mismo cheque, ambas estan saldadas, sin embargo en las consultas se debe tener cuidado de hacer el facto de pago para que sean compatibles ambos esquemas, el de pago parcial al documento y pago de varios documentos con un solo cheque.

 

 

 

 

IVA ACREDITABLE (DETALLE)

 

FUNCIÓN

5000

PERMISO

ERP.Fiscal.IVAAcreditable.Ver

ARGUMENTOS

'arg(0) = Mes

'arg(1) = Año

'arg(2) = IDEmpresa

CONSULTA

SELECT REPLACE((SELECT isnull(Factura,'') AS [data()] FROM DocumentosDetalle as FacturasX WHERE FacturasX.IDDocumento = Resumen.IDDocumento FOR XML PATH('')), ' ', ',') AS Facturas, REPLACE((SELECT isnull(NumeroCheque,'') AS [data()] FROM dbo.Relaciones INNER JOIN dbo.CHEQUES ON dbo.Relaciones.IDCheque = dbo.CHEQUES.IDCheque WHERE (dbo.Relaciones.IDDocumento = Resumen.IDDocumento) AND (dbo.CHEQUES.Estado = 1) FOR XML PATH('')), ' ', ',') as Cheques, REPLACE((SELECT isnull(Cheques.PolNum,'') AS [data()] FROM dbo.Relaciones INNER JOIN dbo.CHEQUES ON dbo.Relaciones.IDCheque = dbo.CHEQUES.IDCheque WHERE (dbo.Relaciones.IDDocumento = Resumen.IDDocumento) AND (dbo.CHEQUES.Estado = 1) FOR XML PATH('')), ' ', ',') as Pólizas, ISNULL(dbo.Clientes.TipoTercero, '04') AS TipoTercero, Resumen.TipoOperacion, dbo.Clientes.RFC, dbo.Clientes.IDFiscal, CASE WHEN TipoTercero = '05' THEN NombreCliente ELSE '' END AS NombreExtranjero, dbo.Clientes.Residencia, dbo.Clientes.Nacionalidad, SUM(Resumen.Actos16) AS Actos16, 0 AS Actos15, 0 AS IVANoAcreditable16, SUM(Resumen.Actos11) AS Actos11, 0 AS Actos10, 0 AS IVANoAcreditable10, 0 AS ActosImportacion16, 0 AS IVANoAcreditableImportacion16, 0 AS ActosImportacion11, 0 AS IVANoAcreditableImportacion11, 0 AS ImportacionExento, SUM(Resumen.ImporteCeroIVA) AS ActosCero, SUM(Resumen.ImporteExentoIVA) AS ActosExento, SUM(Resumen.RetencionIVA) AS IVARetenido, 0 AS DevolucionesCompras, SUM(Resumen.TotalFactura) AS TotalFactura, SUM(Resumen.ImportePagado) AS ImportePagado, SUM(Resumen.SubTotal) AS SubTotal, SUM(Resumen.IVA) AS TotalIVA, SUM(Resumen.IVAPagado) AS IVAPagado, dbo.Clientes.NombreCliente, dbo.Clientes.IDCliente, Resumen.IDDocumento FROM (SELECT AdeudadoT.IDCliente, PagadoT.IDDocumento, PagadoT.ImportePagado, AdeudadoT.SubTotal, AdeudadoT.IVA, AdeudadoT.TotalFactura, (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) AS Factor, (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) * ISNULL(AdeudadoT.IVA, 0) AS IVAPagado, AdeudadoT.TipoOperacion, (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) * ISNULL(AdeudadoT.Actos16, 0) AS Actos16, (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) * ISNULL(AdeudadoT.Actos11, 0) AS Actos11, (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) * ISNULL(AdeudadoT.RetencionIVA, 0) AS RetencionIVA, (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) * ISNULL(AdeudadoT.ImporteExentoIVA, 0) AS ImporteExentoIVA, (ISNULL(PagadoT.ImportePagado, 0) / ISNULL(AdeudadoT.TotalFactura, 1)) * ISNULL(AdeudadoT.ImporteCeroIVA, 0) AS ImporteCeroIVA FROM (SELECT dbo.Relaciones.IDDocumento, SUM(dbo.CHEQUES.Importe) AS ImportePagado FROM dbo.Relaciones INNER JOIN dbo.CHEQUES ON dbo.Relaciones.IDCheque = dbo.CHEQUES.IDCheque WHERE (dbo.CHEQUES.Estado = 1) AND (MONTH(dbo.CHEQUES.FechaCobrado) = @A) AND (YEAR(dbo.CHEQUES.FechaCobrado) = @B) GROUP BY dbo.Relaciones.IDDocumento) AS PagadoT INNER JOIN (SELECT dbo.Documentos.IDDocumento, CASE WHEN ClassIETU LIKE '%Arrendamiento%' THEN '06' WHEN ClassIETU LIKE '%Honorarios%' THEN '03' ELSE '85' END AS TipoOperacion, SUM(dbo.DocumentosDetalle.SubTotal) AS SubTotal, SUM(dbo.DocumentosDetalle.IVA) AS IVA, SUM(dbo.DocumentosDetalle.TotalFactura) AS TotalFactura, dbo.Documentos.IDCliente, SUM(CASE WHEN TasaIVA = .16 THEN SubTotal ELSE 0 END) AS Actos16, SUM(CASE WHEN TasaIVA = .11 THEN SubTotal ELSE 0 END) AS Actos11, SUM(dbo.DocumentosDetalle.RetencionIVA) AS RetencionIVA, SUM(dbo.DocumentosDetalle.ImporteExentoIVA) AS ImporteExentoIVA, SUM(dbo.DocumentosDetalle.ImporteCeroIVA) AS ImporteCeroIVA FROM dbo.Documentos INNER JOIN dbo.DocumentosDetalle ON dbo.Documentos.IDDocumento = dbo.DocumentosDetalle.IDDocumento WHERE (dbo.DocumentosDetalle.ClassIETU < '2000') AND (dbo.DocumentosDetalle.TipoComprobante = 100) GROUP BY dbo.Documentos.IDDocumento, dbo.Documentos.IDCliente, CASE WHEN ClassIETU LIKE '%Arrendamiento%' THEN '06' WHEN ClassIETU LIKE '%Honorarios%' THEN '03' ELSE '85' END) AS AdeudadoT ON PagadoT.IDDocumento = AdeudadoT.IDDocumento) AS Resumen INNER JOIN dbo.Clientes ON Resumen.IDCliente = dbo.Clientes.IDCliente GROUP BY ISNULL(dbo.Clientes.TipoTercero, '04'), Resumen.TipoOperacion, dbo.Clientes.RFC, dbo.Clientes.IDFiscal, CASE WHEN TipoTercero = '05' THEN NombreCliente ELSE '' END, dbo.Clientes.Residencia, dbo.Clientes.Nacionalidad, dbo.Clientes.NombreCliente, dbo.Clientes.IDCliente, Resumen.IDDocumento