Busqueda de cobranzas en lotes de pago, por fecha
Version SQL por las dudas
-- Busqueda de cobranzas dentro de un lote
-----Delaro propiedad variable ---------------------------------------------------
set dateformat ymd
declare @facnrofact varchar(11), @importe money, @fechaini date , @fechafin date , @importe_det money , @ente int
-- creo un cursores para totales y saldos
declare @Totales table (abonumero varchar(11), saldo money default 0, desenrec varchar(30), ente int, facnrofact varchar(11), LOTIMPORTE money, ctanrocomp varchar(11), fecha datetime )
declare @Tsaldos table (abonumero varchar(11), saldo money)
----Declaro la variable con el dato-----------------------------------------------
--set @facnrofact = {{facnrofact}}
set @facnrofact = '16963627'
set @facnrofact = ''
--set @importe = {{importe}}*-1
set @importe = 1626
set @importe = @importe *-1
--set @ente = {{ente}}
set @ente = 5
--set @fechaini = {{fecha_inicio}}
--set @fechafin = {{fecha_fin}}
set @fechaini = '2021-07-01'
set @fechafin = '2021-07-23'
--------fin de declaraciones ------------------------------------------------------
-- si no elige facnrofact trae todas las cobranzas por lote dentro de un ente seleccionado entre las fechas filtradas
-- en caso contrario busca por facnrofact (nro interno de factura)
if @facnrofact =''
begin
insert into @Totales (desenrec , ente , facnrofact , abonumero , LOTIMPORTE , ctanrocomp , fecha )
select entesrec.desenrec, lotescab.ente, lotesdet.facnrofact,lotesdet.abonumero,LOTIMPORTE,lotesdet.CTANROCOMP , ctacte.ctafemis
from ctacte,lotesdet, lotescab
left join entesrec on codtar = lotescab.ENTE
where ctacte.ctanrocomp = lotesdet.ctanrocomp
and lotescab.lotnrolote = lotesdet.lotnrolote
and lotescab.ente = @ente
and lotesdet.lotimporte = @importe *-1
and convert(varchar,ctafemis,23) < convert(varchar,@fechafin ,23)
end
else
begin
insert into @Totales (desenrec , ente , facnrofact , abonumero , LOTIMPORTE , ctanrocomp , fecha )
select entesrec.desenrec, lotescab.ente, lotesdet.facnrofact,lotesdet.abonumero,LOTIMPORTE,lotesdet.CTANROCOMP , ctacte.ctafemis
from ctacte,lotesdet, lotescab
left join entesrec on codtar = lotescab.ENTE
where ctacte.ctanrocomp = lotesdet.ctanrocomp
and lotescab.lotnrolote = lotesdet.lotnrolote
and lotesdet.facnrofact = @facnrofact
and lotescab.ente = @ente
end
-- Traigo saldos segun clientes seleccionados en la consulta anterior
insert into @Tsaldos (abonumero, saldo)
select ctacte.abonumero,sum(ctaimpgrab) as saldo
from ctacte, @Totales as tl
where ctacte.abonumero = tl.abonumero
and ctacte.abonumero in (
select ctacte.abonumero from ctacte with (nolock)
where CTAIMPGRAB = @importe and ctafemis between @fechaini and @fechafin
) ----CcARGAR ENTIDAD
and convert(varchar,ctafemis,23) < convert(varchar,@fechafin ,23)
group by ctacte.abonumero
HAVING sum(ctaimpgrab) < 0
order by abonumero
-- Actualizo saldos
update tl set saldo = ts.saldo from @Tsaldos as ts , @Totales as tl where ts.abonumero = tl.abonumero
delete @Totales where saldo >= 0
select * from @Totales order by saldo