on 2012 Sep 27 5:38 PM
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
Request clarification before answering.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
103 | |
39 | |
6 | |
5 | |
4 | |
3 | |
3 | |
2 | |
2 | |
2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.