Skip to content

Instantly share code, notes, and snippets.

@SidVal
Created October 1, 2019 00:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SidVal/b9d42d9e2c98d2b15f5386cd9ffcb1d5 to your computer and use it in GitHub Desktop.
Save SidVal/b9d42d9e2c98d2b15f5386cd9ffcb1d5 to your computer and use it in GitHub Desktop.
DECLARE @INI VARCHAR(10)=‘2019-08-01’, @FIN VARCHAR(10)=‘2019-08-31’,@CTA VARCHAR(30)=‘2150.0011.0001.0004’,@Subtotal NUMERIC(19,4),@Iva NUMERIC(19,4),@Total NUMERIC(19,4),@CDML NUMERIC(19,4),@Divi NUMERIC(19,4)
CREATE TABLE #General
(No int IDENTITY(1,1),Fecha DATE,TransId int,BaseRef int,
ContraAct varchar(50),LineMemo varchar(80),Segment_0 varchar(80),ML numeric(12,2),
CardCode VARCHAR(20),RFC varchar(20),Name VARCHAR(80),Divi numeric(19,2),CardCode2 VARCHAR(20),RFC2 varchar(20),Name2 VARCHAR(80))
INSERT INTO #General
SELECT T0.RefDate,T0.TransId,T0.BaseRef,T0.ContraAct,T0.LineMemo,T1.Segment_0,CAST((T0.Debit+(- T0.Credit)) AS NUMERIC(11,2)) AS ‘C/D (ML)’,
(SELECT TX.ShortName
FROM JDT1 TX
FULL OUTER JOIN OACT T1 ON T1.AcctCode=TX.Account
FULL OUTER JOIN OCRD T2 ON TX.ContraAct=T2.CardCode
INNER JOIN OJDT T3 ON T3.TransId=TX.TransId
WHERE TX.RefDate between @INI and @FIN AND TX.TransId=T0.TransId AND TX.ShortName LIKE ‘[PC]%’
)CardCode,
(SELECT T2.LicTradNum
FROM JDT1 TX
FULL OUTER JOIN OACT T1 ON T1.AcctCode=TX.Account
FULL OUTER JOIN OCRD T2 ON TX.ShortName=T2.CardCode
INNER JOIN OJDT T3 ON T3.TransId=TX.TransId
WHERE TX.RefDate between @INI and @FIN AND TX.TransId=T0.TransId AND TX.ShortName LIKE ‘[PC]%’
)RFC,
(SELECT T2.CardName
FROM JDT1 TX
FULL OUTER JOIN OACT T1 ON T1.AcctCode=TX.Account
FULL OUTER JOIN OCRD T2 ON TX.ShortName=T2.CardCode
INNER JOIN OJDT T3 ON T3.TransId=TX.TransId
WHERE TX.RefDate between @INI and @FIN AND TX.TransId=T0.TransId AND TX.ShortName LIKE ‘[PC]%’
)Name,
CAST(((T0.Debit+(- T0.Credit))/.16) AS NUMERIC(11,2)) AS Divi
,
---------------------------Clave proveedor------------------------------------------
(SELECT TOP 1
COALESCE((
SELECT DISTINCT TX.ShortName
–,TX.TransId
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
WHERE TX.TransId=TX1.TransId AND TX.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
),(
SELECT DISTINCT T0.ShortName
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
WHERE TX.TransId=TX1.TransId AND T0.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
))
FROM ITR1 T0X
INNER JOIN OITR TB ON T0X.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX1 ON T0X.ReconNum=TX1.BaseRef
WHERE TX1.TransId=T0.TransId)CardCode2,
--------------------RFC-------------------------
(SELECT TOP 1
COALESCE((
SELECT DISTINCT TT.LicTradNum
–,TX.TransId
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
INNER JOIN OCRD TT ON TX.ShortName=TT.CardCode
WHERE TX.TransId=TX1.TransId AND TX.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
),(
SELECT DISTINCT TT.LicTradNum
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
INNER JOIN OCRD TT ON T0.ShortName=TT.CardCode
WHERE TX.TransId=TX1.TransId AND T0.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
))
FROM ITR1 T0X
INNER JOIN OITR TB ON T0X.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX1 ON T0X.ReconNum=TX1.BaseRef
WHERE TX1.TransId=T0.TransId)RFC2
,
----------------Nombre Proveedor------------------------
(SELECT TOP 1
COALESCE((
SELECT DISTINCT TT.CardName
–,TX.TransId
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
INNER JOIN OCRD TT ON TX.ShortName=TT.CardCode
WHERE TX.TransId=TX1.TransId AND TX.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
),(
SELECT DISTINCT TT.CardName
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
INNER JOIN OCRD TT ON T0.ShortName=TT.CardCode
WHERE TX.TransId=TX1.TransId AND T0.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
))
FROM ITR1 T0X
INNER JOIN OITR TB ON T0X.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX1 ON T0X.ReconNum=TX1.BaseRef
WHERE TX1.TransId=T0.TransId)CardName2
------------------------------Termino de seleccion e inicio de condicion------------------------------------------
FROM JDT1 T0
FULL OUTER JOIN OACT T1 ON T1.AcctCode=T0.Account
FULL OUTER JOIN OCRD T2 ON T0.ShortName=T2.CardCode
INNER JOIN OJDT T3 ON T3.TransId=T0.TransId
WHERE T0.RefDate between @INI and @FIN
AND T1.Segment_0=@CTA
----------Condicion de clave de proveedor no vacias-----------------------------
AND (SELECT TOP 1
COALESCE((
SELECT DISTINCT TX.ShortName
–,TX.TransId
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
WHERE TX.TransId=TX1.TransId AND TX.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
),(
SELECT DISTINCT T0.ShortName
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
WHERE TX.TransId=TX1.TransId AND T0.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
))
FROM ITR1 T0X
INNER JOIN OITR TB ON T0X.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX1 ON T0X.ReconNum=TX1.BaseRef
WHERE TX1.TransId=T0.TransId)IS NOT NULL
ORDER BY T0.RefDate asc,T0.TransId
CREATE TABLE #General2
(No int IDENTITY(1,1),Fecha DATE,TransId int,BaseRef int,
ContraAct varchar(50),LineMemo varchar(80),Segment_0 varchar(80),ML numeric(12,2),
CardCode VARCHAR(20),RFC varchar(20),Name VARCHAR(80),Divi numeric(19,2),CardCode2 VARCHAR(20),RFC2 varchar(20),Name2 VARCHAR(80))
INSERT INTO #General2
SELECT T0.RefDate,T0.TransId,T0.BaseRef,T0.ContraAct,T0.LineMemo,T1.Segment_0,CAST((T0.Debit+(- T0.Credit)) AS NUMERIC(11,2)) AS ‘C/D (ML)’,
(SELECT TX.ShortName
FROM JDT1 TX
FULL OUTER JOIN OACT T1 ON T1.AcctCode=TX.Account
FULL OUTER JOIN OCRD T2 ON TX.ContraAct=T2.CardCode
INNER JOIN OJDT T3 ON T3.TransId=TX.TransId
WHERE TX.RefDate between @INI and @FIN AND TX.TransId=T0.TransId AND TX.ShortName LIKE ‘[PC]%’
)CardCode,
(SELECT T2.LicTradNum
FROM JDT1 TX
FULL OUTER JOIN OACT T1 ON T1.AcctCode=TX.Account
FULL OUTER JOIN OCRD T2 ON TX.ShortName=T2.CardCode
INNER JOIN OJDT T3 ON T3.TransId=TX.TransId
WHERE TX.RefDate between @INI and @FIN AND TX.TransId=T0.TransId AND TX.ShortName LIKE ‘[PC]%’
)RFC,
(SELECT T2.CardName
FROM JDT1 TX
FULL OUTER JOIN OACT T1 ON T1.AcctCode=TX.Account
FULL OUTER JOIN OCRD T2 ON TX.ShortName=T2.CardCode
INNER JOIN OJDT T3 ON T3.TransId=TX.TransId
WHERE TX.RefDate between @INI and @FIN AND TX.TransId=T0.TransId AND TX.ShortName LIKE ‘[PC]%’
)Name,
CAST(((T0.Debit+(- T0.Credit))/.16) AS NUMERIC(11,2)) AS Divi
,
---------------------------Clave proveedor------------------------------------------
(SELECT TOP 1
COALESCE((
SELECT DISTINCT TX.ShortName
–,TX.TransId
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
WHERE TX.TransId=TX1.TransId AND TX.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
),(
SELECT DISTINCT T0.ShortName
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
WHERE TX.TransId=TX1.TransId AND T0.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
))
FROM ITR1 T0X
INNER JOIN OITR TB ON T0X.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX1 ON T0X.ReconNum=TX1.BaseRef
WHERE TX1.TransId=T0.TransId)CardCode2,
--------------------RFC-------------------------
(SELECT TOP 1
COALESCE((
SELECT DISTINCT TT.LicTradNum
–,TX.TransId
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
INNER JOIN OCRD TT ON TX.ShortName=TT.CardCode
WHERE TX.TransId=TX1.TransId AND TX.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
),(
SELECT DISTINCT TT.LicTradNum
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
INNER JOIN OCRD TT ON T0.ShortName=TT.CardCode
WHERE TX.TransId=TX1.TransId AND T0.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
))
FROM ITR1 T0X
INNER JOIN OITR TB ON T0X.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX1 ON T0X.ReconNum=TX1.BaseRef
WHERE TX1.TransId=T0.TransId)RFC2
,
----------------Nombre Proveedor------------------------
(SELECT TOP 1
COALESCE((
SELECT DISTINCT TT.CardName
–,TX.TransId
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
INNER JOIN OCRD TT ON TX.ShortName=TT.CardCode
WHERE TX.TransId=TX1.TransId AND TX.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
),(
SELECT DISTINCT TT.CardName
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
INNER JOIN OCRD TT ON T0.ShortName=TT.CardCode
WHERE TX.TransId=TX1.TransId AND T0.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
))
FROM ITR1 T0X
INNER JOIN OITR TB ON T0X.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX1 ON T0X.ReconNum=TX1.BaseRef
WHERE TX1.TransId=T0.TransId)CardName2
------------------------------Termino de seleccion e inicio de condicion------------------------------------------
FROM JDT1 T0
FULL OUTER JOIN OACT T1 ON T1.AcctCode=T0.Account
FULL OUTER JOIN OCRD T2 ON T0.ShortName=T2.CardCode
INNER JOIN OJDT T3 ON T3.TransId=T0.TransId
WHERE T0.RefDate between @INI and @FIN
AND T1.Segment_0=@CTA
----------Condicion de clace de proveedor vacias-----------------------------
AND (SELECT TOP 1
COALESCE((
SELECT DISTINCT TX.ShortName
–,TX.TransId
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
WHERE TX.TransId=TX1.TransId AND TX.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
),(
SELECT DISTINCT T0.ShortName
FROM ITR1 T0
INNER JOIN OITR TB ON T0.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX ON T0.ReconNum=TX.BaseRef
WHERE TX.TransId=TX1.TransId AND T0.ShortName LIKE ‘[P]%’ AND TX.RefDate BETWEEN @INI and @FIN
))
FROM ITR1 T0X
INNER JOIN OITR TB ON T0X.ReconNum=TB.ReconNum
INNER JOIN JDT1 TX1 ON T0X.ReconNum=TX1.BaseRef
WHERE TX1.TransId=T0.TransId)IS NULL
ORDER BY T0.RefDate asc,T0.TransId
-------------Tabla de union de las dos consultas-----------------------------------------------------------------------------------------------
CREATE TABLE #General3 (No int IDENTITY(1,1),RFC varchar(50),Clave VARCHAR(20),Nombre varchar(80),CDML numeric(12,2),
Divi numeric(12,2),Subtotal numeric(12,4),Iva numeric(12,4),Total numeric(12,4))
INSERT INTO #General3
SELECT DISTINCT RFC2,CardCode2,Name2,NULL ‘C/D (ML)’,NULL Divi,
CAST(SUM(ML/.16)OVER (PARTITION BY RFC2) AS NUMERIC(12,4))Subtotal,
CAST((SUM(ML/.16) OVER (PARTITION BY RFC2).16)AS NUMERIC(12,4))Iva,
CAST((SUM(ML/.16)OVER (PARTITION BY RFC2)+(SUM(ML/.16) OVER (PARTITION BY RFC2).16))AS NUMERIC(12,4))Total
FROM #General
UNION
SELECT RFC2,CardCode2,LineMemo,ML,Divi,NULL,NULL,NULL FROM #General2
ORDER BY RFC2 ASC
----------Para totales-----------
SET @Subtotal=(SELECT SUM(Subtotal) FROM #General3)
SET @Iva=(SELECT SUM(Iva) FROM #General3)
SET @Total=(SELECT SUM(Total) FROM #General3)
SET @CDML=(SELECT SUM(ML) FROM #General2)
SET @Divi=(SELECT SUM(Divi) FROM #General2)
-----------Muestra consulta----------------
SELECT * FROM #General3
UNION
SELECT 0,‘Total’,’////////’,’//////////////////////////////////’,@CDML,@Divi,@Subtotal,@Iva,@Total
DROP TABLE #General
DROP TABLE #General2
DROP TABLE #General3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment