· 8 years ago · Apr 27, 2018, 12:26 PM
1if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CONSU_CTACTE_RESUMEN]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
2drop procedure [dbo].[CONSU_CTACTE_RESUMEN]
3GO
4
5SET QUOTED_IDENTIFIER OFF
6GO
7SET ANSI_NULLS ON
8GO
9
10CREATE PROCEDURE [CONSU_CTACTE_RESUMEN] @pcod_cons CHAR(10)
11 , @pcod_Desde CHAR(13)
12 , @pcod_Hasta CHAR(13)
13 , @pFecha_Desde DATETIME = '1900-01-01'
14 , @pfecha_hasta DATETIME
15 , @cCod_comp CHAR(6) = ''
16 , @cVendedor SMALLINT
17 , @cFiltro CHAR(1) = 'T'
18
19
20AS
21
22--EXEC [CONSU_CTACTE_RESUMEN] '', '', '', '', '', '', 'T', 1
23
24
25/*
26 Descripcion:
27 Consulta Resúmen de la cta cte, para consultar e imprimir los resumenes a los clientes.
28 El codigo desde hasta del cliente, se utiliza para listar varios clientes o uno.
29 Se listarán sólo los que tengan en su clasificacion "Imprime Resumen de Cuenta = Si"
30 Ultimas Modificaciones :
31 Cecilia: 29/07/05 para que si no es mandataria (Coop. Eléctrica por ejemplo), se impriman todas las cuentas corrientes sin excepción, ya que esta opción
32 por ahora es usada por los Salde unicamente.
33 Claudio: 01/08/05 Se aplica lo agregado por cecilia en las consultas.
34 Cecilia: 06/08/2005 se agregan nuevos datos para la impresión
35 Gabriel: 17/07/07 Se agregó el filtro por servicio de Agua.
36 Gabriel: 06/09/07 Se agrego el filtro de tipo de comprobante.
37 Gabriel: 24/04/08 Se modificó el filtro a Multifiltro (T-Todos , S-Sin servicio
38 C-Sólo Cloacas,A-Agua
39*/
40
41IF ISNULL(@pcod_hasta,STR(0,13)) = STR(0,13)
42 SET @pcod_hasta = STR(9999999999999,13)
43
44IF ISNULL(@pcod_desde,STR(0,13)) = STR(0,13)
45 SET @pcod_desde = STR(1,13)
46
47IF ISNULL(@pcod_desde,0) > ISNULL(@pCod_hasta,0)
48 SET @pcod_hasta=@pCod_desde
49
50
51IF @pfecha_hasta = '1900-01-01'
52 SET @pfecha_hasta = GETDATE()
53IF @pfecha_desde > @pfecha_hasta
54 SET @pfecha_hasta = @pfecha_desde
55
56
57--1)
58DECLARE @Cod_Impr CHAR(1)
59SET @Cod_Impr = ''
60SELECT @Cod_Impr = RTRIM(cont) FROM PARSIS WHERE CODI ='SOCIOMANDA'
61IF @Cod_Impr not in ('T','F')
62 SET @Cod_Impr = 'F'
63
64-- En todos lados Activar la clasificacion de imprimir resumen
65-- en la posicion que esté la clasificación de si imprime o no
66
67CREATE TABLE #curConsoli (comprob CHAR(29), fecha CHAR(12) , saldo CHAR(20), original CHAR(20), Codigo CHAR(13)
68 , razo CHAR(50) , num_tel CHAR(20), Vendedor char (35), Mes_anter numeric(20,3), orden CHAR(1) ,vencim CHAR(5) , cod_oper CHAR(10) , descri CHAR(50), observa CHAR(200)
69 , dire CHAR(50), pcia CHAR(50), localidad CHAR(30), post INT, cCteCtrl CHAR(30))
70
71CREATE TABLE #codigosaMostrar (codigo CHAR(13), nNroBajSo INT)
72
73-- Si estamos utilizando la consulta para machagai, tomamos el parametro de si tiene o no
74-- servicio de Agua.
75IF @pcod_cons = 'RESUMACHAG'
76BEGIN
77 -- Todos
78 IF @cFiltro = 'T'
79 INSERT INTO #codigosaMostrar SELECT DISTINCT cSocio AS codigo,cx.nNroBajSo
80 FROM SER_CONEXIONES_SP CX
81 LEFT JOIN agenda ag ON cx.cSocio = ag.codigo
82 WHERE ag.codigo BETWEEN @pcod_desde AND @pcod_hasta and left(tipoper,1)='1'
83 -- Conexion deshabilitada
84 IF @cFiltro = 'S'
85 INSERT INTO #codigosaMostrar SELECT DISTINCT cSocio AS codigo,cx.nNroBajSo
86 FROM ser_conexiones_sp cx LEFT JOIN agenda ag ON cx.cSocio = ag.codigo
87 WHERE nEstado =0 AND ag.codigo BETWEEN @pcod_desde AND @pcod_hasta and left(tipoper,1)='1'
88 -- Solo cloacas
89 IF @cFiltro = 'C'
90 INSERT INTO #codigosaMostrar SELECT DISTINCT cSocio AS codigo,cx.nNroBajSo
91 FROM SER_CONEXIONES_SP CX
92 LEFT JOIN agenda ag ON cx.cSocio = ag.codigo
93 LEFT JOIN SER_COMPO_CONEXIONES_SP coAg
94 ON cx.nCod_Serv = coAg.nCod_Serv AND cx.nID_Conex = coAg.nID_Conex
95 AND coAg.nId_compo = 1
96 LEFT JOIN SER_COMPO_CONEXIONES_SP coCl
97 ON cx.nCod_Serv = coCl.nCod_Serv AND cx.nID_Conex = coCl.nID_Conex
98 AND coCl.nId_compo = 2
99 WHERE cx.nEstado = 1 AND
100 coAg.lHabilitado = 0 AND coCl.lHabilitado = 1
101 AND ag.codigo BETWEEN @pcod_desde AND @pcod_hasta and left(tipoper,1)='1'
102
103 -- Agua y cloacas
104 IF @cFiltro = 'A'
105 INSERT INTO #codigosaMostrar SELECT DISTINCT cSocio AS codigo,cx.nNroBajSo
106 FROM SER_CONEXIONES_SP CX
107 LEFT JOIN agenda ag ON cx.cSocio = ag.codigo
108 LEFT JOIN SER_COMPO_CONEXIONES_SP coAg
109 ON cx.nCod_Serv = coAg.nCod_Serv AND cx.nID_Conex = coAg.nID_Conex
110 AND coAg.nId_compo = 1
111 WHERE cx.nestado = 1 AND coAg.lHabilitado = 1
112 AND ag.codigo BETWEEN @pcod_desde AND @pcod_hasta and left(tipoper,1)='1'
113
114END
115ELSE
116 INSERT INTO #codigosaMostrar SELECT codigo , 0 AS nNroBajSo
117 FROM agenda ag WHERE ag.codigo BETWEEN @pcod_desde AND @pcod_hasta and ( left(tipoper,1)='1' OR SUBSTRING(tipoper,8,1)='1' )
118
119
120INSERT INTO #curConsoli SELECT DISTINCT CASE WHEN LTRIM(ISNULL(co.des_iva,'')) = '' THEN fa.cod_comp+SPACE(9)
121 ELSE co.des_iva END +' '+fa.ptovta+' '+fa.numero AS comprob , CONVERT(CHAR(12), cs.fech_vcto,103) AS fecha
122 , STR(cs.safa,20,3) , STR(cs.importe,20,3),fa.codigo,ag.razo, (SELECT TOP 1 te.num_tel FROM telefono te WHERE fa.codigo = te.codigo) AS num_tel
123 , ven.nomven_ven as Vendedor
124 , CONVERT(Numeric(20,3),'0.00') AS mes_anter
125 , '2' AS orden , '-1' AS vencim, fa.cod_oper , LEFT(cs.descri,50) AS descri
126 , .DBO.FUNCION_COMENTARIOS(fa.Cod_oper,200)
127 --ISNULL(tx.descri,'') as observa
128 , ag.dire, pv.descri AS pcia, po.localidad, po.post
129 , SPACE(30) AS cCteCtrl
130FROM compprim fa LEFT JOIN #codigosaMostrar cam ON fa.codigo = cam.codigo
131 LEFT JOIN ctassald cs ON fa.cod_oper = cs.cod_oper
132 LEFT JOIN detaconc tx ON tx.cod_oper = fa.cod_oper and tx.item=1 AND tx.item_det=1
133 LEFT JOIN agenda ag ON fa.codigo = ag.codigo
134 LEFT JOIN comproba co ON fa.cod_comp = co.cod_comp
135 LEFT JOIN provcias pv ON pv.nacion = ag.nacion AND pv.pcia = ag.pcia
136 LEFT JOIN postales po ON po.nacion = ag.nacion AND po.pcia = ag.pcia AND po.post = ag.post AND po.subpost = ag.subpost
137 LEFT JOIN t_vendedor ven ON ven.codven_ven=fa.vendedor
138WHERE cam.codigo IS NOT NULL
139 AND fa.fecha BETWEEN @pFecha_Desde AND @pfecha_hasta
140 --AND fa.cod_comp NOT IN ('RET_IB','RET_GA')
141 AND LEFT(fa.cod_comp,4) <> 'RET_'
142 AND fa.cod_comp = CASE WHEN ISNULL(LTRIM(@cCod_comp),'') = '' THEN fa.cod_comp ELSE @cCod_comp END
143 AND ( ( @Cod_Impr = 'T' AND SUBSTRING(ag.clasif,4,1)='S' ) OR @Cod_Impr = 'F' )
144 AND ISNULL(cs.safa,0) <> 0
145 AND fa.vendedor = CASE WHEN @cVendedor=0 THEN fa.VENDEDOR ELSE @cVendedor END
146 /*AND ven.codven_ven=
147 CASE WHEN @cVendedor=0 THEN ven.codven_ven
148 WHEN @cVendedor<>0 THEN @cVendedor
149 END*/
150
151UPDATE cc SET mes_anter = sa.saldo FROM #curConsoli cc LEFT JOIN (
152 SELECT fa.codigo,SUM(cs.safa) AS saldo
153 FROM compprim fa
154 LEFT JOIN ctassald cs ON fa.cod_oper = cs.cod_oper
155 LEFT JOIN agenda ag ON fa.codigo = ag.codigo
156 LEFT JOIN comproba co ON fa.cod_comp = co.cod_comp
157 WHERE fa.codigo BETWEEN @pcod_desde AND @pcod_hasta
158 AND fa.fecha < @pFecha_Desde
159 --AND fa.cod_comp NOT IN ('RET_IB','RET_GA')
160 AND LEFT(fa.cod_comp,4) <> 'RET_'
161 AND ISNULL(cs.safa,0) <> 0
162 AND ( ( @Cod_Impr = 'T' AND SUBSTRING(ag.clasif,4,1)='S' ) OR @Cod_Impr = 'F' )
163 GROUP BY fa.codigo ) sa ON cc.codigo = sa.codigo
164
165
166-- Si hay Servicios públicos
167IF EXISTS(SELECT * FROM SER_TIPOSERV WHERE cod_serv='S' AND activo=1)
168BEGIN
169 -- actualiza la columna cCteCtrl para hacer corte de control en el reporte
170 UPDATE cco SET cCteCtrl = LEFT('-Cx:'+ISNULL(sf.desBajada,SPACE(20))+' ID:'+LTRIM(STR(sf.idBajada)),30) ,
171 dire = cx.cDire
172 FROM #curConsoli cco LEFT JOIN ser_facturas sf ON cco.cod_oper = Oper_fact
173 LEFT JOIN ser_conexiones_sp cx ON
174 sf.Cod_serv = cx.ncod_serv AND sf.idBajada = cx.nId_conex
175
176
177 -- Si es Servicios publicos
178 IF @pcod_cons = 'RESUMACHAG' AND @cFiltro IN ('A','C')
179 DELETE cc FROM #curConsoli cc LEFT JOIN #codigosaMostrar cam ON cc.codigo = cam.codigo
180 AND CONVERT(NUMERIC(5),SUBSTRING(isnull(cc.cCteCtrl,space(36)),5,2)) = cam.nNroBajSo
181 WHERE cam.codigo IS NULL
182
183END
184
185IF EXISTS(SELECT codi FROM parsis where codi='CCPEGDEPOS' AND cont='T')
186BEGIN
187 UPDATE cco SET cCteCtrl = (SELECT TOP 1 LEFT(STR(nTarjeta,13)+' '+cComentario,30)
188 FROM socioclubtj WHERE cCodigo = STR(cco.codigo,13) ORDER BY nTarjeta)
189 FROM #curConsoli cco WHERE cco.descri not LIKE '%- Tj%'
190
191 UPDATE cco SET cCteCtrl = SUBSTRING(cco.descri,14,30)
192 FROM #curConsoli cco WHERE cco.descri LIKE '%- Tj%'
193END
194
195-- Si es notebook, no muestra los vencimientos a futuro
196IF (SELECT DB_NAME()) = 'Almacor_Notebook'
197BEGIN
198 DELETE #curConsoli
199 WHERE fecha > DATEADD(dd,5,GETDATE())
200
201 DELETE #curConsoli WHERE codigo=str(20999,13)
202END
203
204-- (1) Datos
205SELECT * FROM #curConsoli
206ORDER BY razo,cCteCtrl,orden,CONVERT(DATETIME,fecha,103)
207
208
209-- (2) Titulos
210SELECT 'Comprobante@MWIDTH=220 @MALIGNMENT=1', 'Fec.Vcto.@MALIGNMENT=1 @MWIDTH=90'
211 , 'Saldo@MALIGNMENT=1 @MWIDTH=120','Importe Original@MALIGNMENT=1 @MWIDTH=120'
212 , 'Cod.Cliente','Apellido y Nombre del Cliente','Teléfono', 'Vendedor@MWIDTH=180', 'x'
213
214-- (3) Ordenamientos
215SELECT 'Vencimiento ## razo+cCteCtrl+orden+DTOS(CTOD(fecha))', 'Vendedor ## vendedor'
216
217-- (4) Relaciones
218SELECT * FROM consutip, consurel WHERE actual = @pCod_Cons AND codigo = proximo --@pcodigo
219
220-- (5) Columnas y formatos del listado
221CREATE TABLE #listasal (cod_lis CHAR(10), colu INT, Expr CHAR(50), titulo CHAR(50), totpie BIT, pictpie CHAR(30), totres BIT, pictres CHAR(30), tot_g1 BIT, pict_g1 CHAR(30),
222 tot_g2 BIT, pict_g2 BIT, tot_g3 BIT, pict_g3 CHAR(30), tot_g4 BIT, pict_g4 CHAR(30), tot_g5 BIT, pict_g5 CHAR(50), parcond INT )
223
224INSERT INTO #listasal SELECT '',1,'comprob+'' ''','Comprobante',0,'',0,'',0,'',0,'',0,'',0,'',0,'',0
225INSERT INTO #listasal SELECT '',2,'','Fecha' ,0,'',0,'',0,'',0,'',0,'',0,'',0,'',0
226INSERT INTO #listasal SELECT '',2,'','Fecha' ,0,'',0,'',0,'',0,'',0,'',0,'',0,'',0
227
228SELECT * FROM #listasal
229
230-- (6) Grupos para el listado
231CREATE TABLE #listagpo (cod_lis CHAR(10), gpo INT, condgpo CHAR(50), cabecera VARCHAR(200), total VARCHAR(200) )
232SELECT *FROM #listagpo
233
234-- (7) Cabecera
235CREATE TABLE #cabecera (renglon CHAR(200))
236IF @pcod_cons = 'RESUMACHAG'
237 INSERT INTO #cabecera SELECT 'Socios: ' +
238 CASE WHEN @cFiltro = 'S' THEN 'Sin Servicio.' ELSE
239 CASE WHEN @cFiltro = 'C' THEN 'Sólo Cloacas.' ELSE
240 CASE WHEN @cFiltro = 'A' THEN 'Con servicio de Agua.' ELSE 'Todos.'
241 END END END
242
243SELECT * FROM #cabecera
244
245-- (8) Pie
246CREATE TABLE #pie (renglon CHAR(200), macros CHAR(200))
247INSERT INTO #pie SELECT SPACE(30)+'Total Resúmen....... ' + STR((SELECT SUM(CONVERT(NUMERIC(20,3),saldo)) FROM #curConsoli),20,3), 'FONTSIZE=12' AS macro
248SELECT * FROM #pie
249
250-- (9) boton
251CREATE TABLE #botones (caption CHAR(15), prog CHAR(50), tipo CHAR(1), par1 CHAR(10), par2 CHAR(10) )
252SELECT *FROM #botones
253
254-- (10) titulos
255CREATE TABLE #titulos (renglon varchar(250))
256INSERT INTO #titulos SELECT '(Resúmen de Cuenta Corriente) PerÃodo: '
257 +ISNULL(CONVERT(CHAR(10), @pFecha_Desde,103),'')
258 + ' al '+ISNULL(CONVERT(CHAR(10), @pfecha_hasta,103),'')
259IF @pcod_cons = 'RESUMACHAG'
260 INSERT INTO #titulos SELECT 'Socios: ' +
261 CASE WHEN @cFiltro = 'S' THEN 'Sin Servicio.' ELSE
262 CASE WHEN @cFiltro = 'C' THEN 'Sólo Cloacas.' ELSE
263 CASE WHEN @cFiltro = 'A' THEN 'Con servicio de Agua.' ELSE 'Todos.'
264 END END END
265
266SELECT * FROM #titulos
267GO
268SET QUOTED_IDENTIFIER OFF
269GO
270SET ANSI_NULLS ON
271GO
272
273
274/*
275Sacado de select principal
276FROM compprim fa LEFT JOIN ctasctes cc ON fa.cod_oper = cc.cod_oper
277 LEFT JOIN ctassald cs ON cc.cod_oper = cs.cod_oper AND cc.vencim = cs.vencim
278 LEFT JOIN detaconc tx ON tx.cod_oper = fa.cod_oper and tx.item=1 AND tx.item_det=1
279 LEFT JOIN agenda ag ON fa.codigo = ag.codigo
280 LEFT JOIN comproba co ON fa.cod_comp = co.cod_comp
281 LEFT JOIN provcias pv ON pv.nacion = ag.nacion AND pv.pcia = ag.pcia
282 LEFT JOIN postales po ON po.nacion = ag.nacion AND po.pcia = ag.pcia AND po.post = ag.post AND po.subpost = ag.subpost
283 LEFT JOIN #codigosaMostrar cam ON fa.codigo = cam.codigo
284
285 FROM compprim fa LEFT JOIN ctasctes cc ON fa.cod_oper = cc.cod_oper
286 LEFT JOIN ctassald cs ON cc.cod_oper = cs.cod_oper AND cc.vencim = cs.vencim
287 LEFT JOIN agenda ag ON fa.codigo = ag.codigo
288 LEFT JOIN comproba co ON fa.cod_comp = co.cod_comp
289
290*/