cancel
Showing results for 
Search instead for 
Did you mean: 

Ventas y Notas de crédito, cómo integrarlas?

marco_ramirez
Active Contributor
0 Kudos

Buenos días a todos/as en el foro

He estado haciendo algunas pruebas para integrar las facturas y notas de crédito mediante el código que dejo al final, sin embago, se ven algunas diferencias que no comprendo el porqué de ellas.

Cada código lo he ejecutado de manera independiente y luego lo he enlazado con Union all para que me de los resultados tal como los veo en Análisis de ventas -- artículos -- total por grupos pero veo diferencias en los totales

Está imagen es la de la tabla INV1

SELECT T4.[ItmsGrpNam], sum(T2.[LineTotal])

FROM OSLP  T0

INNER JOIN OINV  T1 ON T0.SlpCode = T1.SlpCode

INNER JOIN INV1  T2 ON T1.DocEntry = T2.DocEntry

INNER JOIN OITM T3 ON T2.ItemCode = T3.ItemCode

INNER JOIN OITB T4 ON T3.ItmsGrpCod = T4.ItmsGrpCod

WHERE T1.[DocDate] Between [%0] and [%1] GROUP BY T4.[ItmsGrpNam]

Imagen de la tabla RIN1

SELECT

T4.[ItmsGrpNam]

,SUM(-(T2.[LineTotal]))

FROM OSLP T0 

INNER JOIN ORIN T1 ON T0.SlpCode = T1.SlpCode

INNER JOIN RIN1 T2 ON T1.DocEntry = T2.DocEntry

INNER JOIN OITM T3 ON T2.ItemCode = T3.ItemCode

INNER JOIN OITB T4 ON T3.ItmsGrpCod = T4.ItmsGrpCod

WHERE T1.[DocDate] Between [%0] and [%1] GROUP BY T4.[ItmsGrpNam]

Finalmente la imagen del Union all de los dos códigos anteriores pero con resultados diferentes a los esperados. Lo que se pretende es que la sumatoria de ambas tablas, siendo negativo el valor de RIN1 me de el valor neto de la venta por grupo.

Agradezco su ayuda para corregir o ampliar la solución

El indicador rojo es porque el grupo se repite, los indicadores azules es donde hubo una nota de crédito que no está siendo aplicada correctamente, en esta sumatoria.

Gracias por la ayuda

Saludos

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Prueba esto:

SELECT T0.Grupo, SUM(T0.Venta)

FROM (

SELECT

T4.[ItmsGrpNam] AS Grupo

,SUM(T2.[LineTotal]) AS Venta

FROM OSLP  T0  

INNER JOIN OINV  T1 ON T0.SlpCode = T1.SlpCode  

INNER JOIN INV1  T2 ON T1.DocEntry = T2.DocEntry  

INNER JOIN OITM T3 ON T2.ItemCode = T3.ItemCode  

INNER JOIN OITB T4 ON T3.ItmsGrpCod = T4.ItmsGrpCod 

WHERE T1.[DocDate] Between '[%0]' and '[%1]' GROUP BY T4.[ItmsGrpNam]

UNION ALL

SELECT 

T4.[ItmsGrpNam] AS Grupo

,SUM(-(T2.[LineTotal])) AS Venta

FROM OSLP T0  

INNER JOIN ORIN T1 ON T0.SlpCode = T1.SlpCode  

INNER JOIN RIN1 T2 ON T1.DocEntry = T2.DocEntry  

INNER JOIN OITM T3 ON T2.ItemCode = T3.ItemCode  

INNER JOIN OITB T4 ON T3.ItmsGrpCod = T4.ItmsGrpCod 

WHERE T1.[DocDate] Between '[%0]' and '[%1]' GROUP BY T4.[ItmsGrpNam]

) T0

GROUP BY T0.Grupo

Saludos

Felipe

marco_ramirez
Active Contributor
0 Kudos

Quedo muy bien Felipe

Gracias

Answers (1)

Answers (1)

Former Member
0 Kudos

Hola Marco, supongo que este código te puede servir, lo hice un poco de afán pero creo que la lógica es correcta para que la pruebes en el Query manager:

/* Select From [DBO].[OINV] T0 */

Declare @FechaIni as DateTime

Declare @FechaFin as DateTime

/* Where */

Set Dateformat DMY

Set @FechaIni = /* T0.DocDate */ '[%0]'

Set @FechaFin = /* T0.DocDate */ '[%1]'

Select T0.ItmsGrpNam,

Sum(T1.LineTotal) 'Factura',

Sum(T2.LineTotal) 'Nota_Credito',

Sum(T1.LineTotal) - Sum(T2.LineTotal) 'Total'

From OITB T0

Inner Join

(

          Select T3.ItmsGrpNam, T1.LineTotal

          From OINV T0

          Inner Join INV1 T1 On T0.DocEntry = T1.DocEntry

          Inner Join OITM T2 On T1.ItemCode = T2.ItemCode

          Inner Join OITB T3 On T2.ItmsGrpCod = T3.ItmsGrpCod

          Where T0.DocDate Between @FechaIni And @FechaFin

)T1 On T0.ItmsGrpNam = T1.ItmsGrpNam

Inner Join

(

          Select T3.ItmsGrpNam, T1.LineTotal

          From ORIN T0

          Inner Join RIN1 T1 On T0.DocEntry = T1.DocEntry

          Inner Join OITM T2 On T1.ItemCode = T2.ItemCode

          Inner Join OITB T3 On T2.ItmsGrpCod = T3.ItmsGrpCod

          Where T0.DocDate Between @FechaIni And @FechaFin

)T2 On T0.ItmsGrpNam = T2.ItmsGrpNam

Group By T0.ItmsGrpNam

Order By T0.ItmsGrpNam

Saludos,

Andrés

marco_ramirez
Active Contributor
0 Kudos

Andrés gracias por el aporte

Corre bien la consulta, sin embargo, el resultado parece ser el de un año y no el del rango que ingreso.

En otra prueba me ha dado mayor dato en las notas de crédito sin ser lo real.

Hice las primeras pruebas, estaré viendo que puede afectar.

Saludos