cancel
Showing results for 
Search instead for 
Did you mean: 

Query Pagos Efectuados Por Semana

former_member203638
Active Contributor
0 Kudos

Hola a todos, alguien tiene algun query para pagos efectuados que tenga el estilo siguiente,

Proveedor

Lunes

06/08/2012

Martes

07/08/2012

Miercoles

08/08/2012

Jueves

09/08/2012

Viernes

10/08/2012

Sabado

11/08/12

Proveedor 14000




Proveedor 2
500600
800
Proveedor 3
250


1000
Proveedor 4


7502500

Alguna idea?

Saludos.

Alessandro.

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Modifique el query debido a que se me olvido agregar unos filtros básicos en los pagos.

Aquí va.

SET LANGUAGE Spanish 

DECLARE @TOP INT, @F_INI DATETIME, @F_FIN DATETIME, @COND_1 CHAR(1), @COND_2 CHAR(1)

SET @TOP=(SELECT TOP 1 A.TransId FROM [dbo].[JDT1] A WHERE A.RefDate>='[%0]' AND A.RefDate<='[%1]') 

SET @F_INI='[%0]' 

SET @F_FIN='[%1]'

SET @COND_1='N'

SET @COND_2='S'

SELECT DISTINCT B.DocDate AS DocDate, CONVERT(NVARCHAR, B.DocDate, 103) AS Fecha

INTO #FECHAS

FROM OVPM B

WHERE B.DocDate BETWEEN @F_INI AND @F_FIN 

ORDER BY 1

DECLARE @pvt_table NVARCHAR(MAX) 

SELECT @pvt_table = COALESCE(@pvt_table + ',[' + C.Fecha + ']', '[' + C.Fecha + ']') 

FROM #FECHAS C

ORDER BY C.DocDate

DECLARE @Pvt NVARCHAR(MAX) 

SET @Pvt =  

          N' 

          SELECT * 

          FROM (

                                        SELECT DISTINCT T0.CardCode AS CardCode, T0.CardName AS CardName, CONVERT(NVARCHAR, T0.DocDate, 103) AS Fecha, SUM(T0.DocTotal) AS Pagos

                                        FROM OVPM T0

                                        WHERE T0.DocDate BETWEEN (@INI) AND (@FIN) AND T0.Canceled=(@C_1) AND T0.DocType=(@C_2)

                                        GROUP BY T0.CardCode, T0.CardName, T0.DocDate

          ) AS A 

          PIVOT ( 

                    SUM(Pagos) 

                    FOR Fecha IN ('+ @pvt_table +') 

          ) AS Pvt 

          ORDER BY 1,3

          ' 

EXEC sp_executesql @pvt, N'@pvt_table NVARCHAR(MAX), @INI DATETIME, @FIN DATETIME, @C_1 CHAR(1), @C_2 CHAR(1)',@pvt_table, @F_INI, @F_FIN, @COND_1, @COND_2

DROP TABLE #FECHAS

Saludos

former_member203638
Active Contributor
0 Kudos

Quedo Exelente Felipe!

Me dio una idea para un reporte de Facturas de Proveedor, lo voy a moldear a ver si me queda, si no, posteo otro tema con tu query.

Muchas Gracias de Nuevo.

Saludos

Alessandro.

PD. Esposible que salgan los dias (lunes, martes, Miercoles..Etc..), ademas de las Fechas?

former_member203638
Active Contributor
0 Kudos

Y que si en un dia, no hubo pago, que no se lo brinque? oseas que salga el dia aunque este vacio??

Se puede??

felipe_loyolarodriguez
Active Contributor
0 Kudos

Al principio lo traté de hacer en formato "Lunes  06/08/2012" pero el pivot no me pasó, por eso solo lo hize por fecha. Si deseas puedes intentar hacerlo.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Si tienes una tabla donde estén todos los días del año, si se puede.

former_member203638
Active Contributor
0 Kudos

Perfecto Felipe, muchas gracias!

Saludos

Alessandro.

former_member211460
Participant
0 Kudos

Buenas tardes Alessandro

he estado analizando su query , es muy bueno solo que como lo haria para lo que viene por pagar y no por lo que ya esta pagado

Saludos

former_member203638
Active Contributor
0 Kudos

Tendrias que discriminar por el docstatus, osea los documentos abiertos, o que tengan diferencia entre el total del documento y lo pagado.

Si necesitas mas ayuda, aqui estamos.

Saludos.

Alessandro

former_member211460
Participant
0 Kudos

Buenos dias Alessandro, en base a tus comentarios modifique el query para que apuntara a la tabla de facturas de proveedores, con los docuemtos abiertos y en base a la fecha de vencimiento , pero me arroja la fecha de contabilizacion? que estara mal del query? tambien es posible que no aparezcan las fechas cuando no haya ningun dato? en este caso algun pago pendiente

gracias por el apoyo

SET LANGUAGE Spanish   

DECLARE @TOP INT, @F_INI DATETIME, @F_FIN DATETIME, @COND_1 CHAR(1), @COND_2 CHAR(1) 

SET @TOP=(SELECT TOP 1 A.TransId FROM [dbo].[JDT1] A WHERE A.RefDate>='[%0]' AND A.RefDate<='[%1]')   

SET @F_INI='[%0]'   

SET @F_FIN='[%1]' 

SET @COND_1='N' 

SET @COND_2='S' 

 

SELECT DISTINCT B.DocDueDate AS DocDueDate, CONVERT(NVARCHAR, B.DocDueDate, 103) AS Fecha 

INTO #FECHAS 

FROM OPCH B 

WHERE B.DocDueDate BETWEEN @F_INI AND @F_FIN AND DocStatus = 'O'  

ORDER BY 1 

 

DECLARE @pvt_table NVARCHAR(MAX)   

SELECT @pvt_table = COALESCE(@pvt_table + ',[' + C.Fecha + ']', '[' + C.Fecha + ']')   

FROM #FECHAS C 

ORDER BY C.DocDueDate 

 

DECLARE @Pvt NVARCHAR(MAX)   

SET @Pvt =    

          N'   

          SELECT *   

          FROM ( 

                                        SELECT DISTINCT T0.CardCode AS CardCode, T0.CardName AS CardName, CONVERT(NVARCHAR, T0.DocDueDate, 103) AS Fecha, SUM(T0.DocTotal) AS Pagos 

                                        FROM OVPM T0 

                                        WHERE T0.DocDueDate BETWEEN (@INI) AND (@FIN) AND T0.Canceled=(@C_1) AND T0.DocType=(@C_2) 

                                        GROUP BY T0.CardCode, T0.CardName, T0.DocDueDate 

 

          ) AS A   

          PIVOT (   

                    SUM(Pagos)   

                    FOR Fecha IN ('+ @pvt_table +')   

          ) AS Pvt   

          ORDER BY 1,3 

          '   

 

EXEC sp_executesql @pvt, N'@pvt_table NVARCHAR(MAX), @INI DATETIME, @FIN DATETIME, @C_1 CHAR(1), @C_2 CHAR(1)',@pvt_table, @F_INI, @F_FIN, @COND_1, @COND_2 

 

 

DROP TABLE #FECHAS

former_member203638
Active Contributor
0 Kudos

Victor, Por orden, abre otro tema, este ya esta contestado.

Saludos.

Alessandro.

former_member203638
Active Contributor
0 Kudos

Por cierto el query lo desarrollo , no es mio.

Saludos.

Alessandro.

Answers (1)

Answers (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Para eso necesitas un PIVOT

-- Modificado

Saludos