Me gustaría mucho y me serviría como guía para que otros puedan realizarlo. Además, me obligaría a aprender Crystal Report, ya que nunca lo he utilizado... ¡Gracias!
Avalados por :
Tengo una consulta en la que obtengo todas las facturas de proveedores pendientes de pago con la información del proveedor, total de la factura, importe aplicado y monto pendiente por pagar, además de mostrar la cantidad de días que la factura lleva vencida si es el caso, etc. Sin embargo, ahora es necesario mostrar en la misma consulta subtotales del total del documento y subtotales del monto pendiente por pagar por proveedor, es decir, que en la misma consulta se sume el total del documento y el total pendiente por pagar pero agrupado por proveedor. Aún no he logrado mostrar los subtotales de esa forma. Hasta ahora tengo la siguiente consulta sin subtotales:
/ SELECT FROM [dbo].[OPCH] T4 /
Declare @Fecha1 as nvarchar(100)
/* WHERE */
set @Fecha1 = /* T4.CreateDate */ '[%0]'
SELECT T0.[CardCode] AS 'Código Proveedor', T0.[CardName] AS 'Nombre Proveedor', T0.[DocNum] AS 'Nro de Documento', T0.[DocDueDate] AS 'Fecha de Vencimiento', T0.[DocTotal] AS 'Total Documento', T0.[PaidToDate] as 'Importe', (T0.[DocTotal] - T0.[PaidToDate]) as 'Pendiente por Pagar', DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1 AS 'Dias', CASE WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1<0 THEN 'Vencido' WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1>=0 AND DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1<=30 THEN '30 Días' WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1>30 AND DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1<=60 THEN '60 Días' WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1>60 AND DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1<=90 THEN '90 Días' WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10))*-1>90 THEN 'Más de 90 Días' END AS 'Plazo de Vencimiento','Factura' as 'Tipo Docum'
FROM OPCH T0 WHERE T0.[CreateDate]<=@Fecha1 AND T0.[DocStatus]<>'C'
union all
SELECT T0.[CardCode] AS 'Código Proveedor', T0.[CardName] AS 'Nombre Proveedor', T0.[DocNum] AS 'Nro de Documento', T0.[DocDueDate] AS 'Fecha de Vencimiento', - T0.[DocTotal] AS 'Total Documento', T0.[PaidToDate] as 'Importe', (-T0.[DocTotal] - T0.[PaidToDate]) as 'Pendiente por Pagar', DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1 AS 'Dias', CASE WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1<0 THEN 'Vencido' WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1>=0 AND DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1<=30 THEN '30 Días' WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1>30 AND DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1<=60 THEN '60 Días' WHEN DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1>60 AND DATEDIFF(DAY, LEFT(CONVERT(VARCHAR, T0.[DocDueDate], 102), 10), LEFT(CONVERT(VARCHAR, GETDATE() , 102), 10)) -1<=90 THEN '90 Días' WHEN DATED
Me gustaría mucho y me serviría como guía para que otros puedan realizarlo. Además, me obligaría a aprender Crystal Report, ya que nunca lo he utilizado... ¡Gracias!
Si quieres, te puedo enviar un informe en Crystal que haga lo que necesitas.
Hola David,
¿Por qué no lo llevas a un informe de Crystal Report? Allí puedes hacer subtotales y lo que necesites.
Saludos,
Tere
Hola David,
¿Por qué no utilizas la consulta de "Antigüedad de proveedor" del estándar indicando en el intervalo "Días" y "30"?
Un saludo,
Tere
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute