miércoles, 7 de agosto de 2013
Notas descuadradas en Adempiere
-- Type: notas_descuadradas
-- DROP TYPE notas_descuadradas;
CREATE TYPE notas_descuadradas AS
(id_lote numeric(10),
num_lote character varying,
id_nota numeric(10),
num_nota character varying,
debito numeric(10,2),
credito numeric(10,2),
diferencia numeric(10,2));
-- Function: rep_notas_descuadradas(numeric, numeric)
-- DROP FUNCTION rep_notas_descuadradas(numeric, numeric);
CREATE OR REPLACE FUNCTION rep_notas_descuadradas(id_periodo numeric, id_comprobante numeric)
RETURNS SETOF notas_descuadradas AS
$BODY$
declare
resultado notas_descuadradas%rowtype;
begin
drop table if exists tmp_notas_descuadradas;
create table tmp_notas_descuadradas as
select
k.id_lote,
k.num_lote,
k.id_nota,
k.num_nota,
k.debito,
k.credito,
(k.debito - k.credito) diferencia
from
(
select
gb.gl_journalbatch_id id_lote,
gb.documentno num_lote,
g.gl_journal_id id_nota,
g.documentno num_nota,
sum(gl.amtacctdr) debito,
sum(gl.amtacctcr) credito
from gl_journalbatch gb
join gl_journal g
on gb.gl_journalbatch_id = g.gl_journalbatch_id
join gl_journalline gl
on g.gl_journal_id = gl.gl_journal_id
where gb.ad_client_id = 1000001
--and gb.docstatus = 'CO'
and gb.c_period_id = case when id_periodo = 0 then gb.c_period_id else id_periodo end
and gb.gl_journalbatch_id = case when id_comprobante = 0 then gb.gl_journalbatch_id else id_comprobante end
group by
gb.gl_journalbatch_id,
gb.documentno,
g.gl_journal_id,
g.documentno
) k
where k.debito <> k.credito;
for resultado in execute
'select
t.id_lote,
t.num_lote,
t.id_nota,
t.num_nota,
t.debito,
t.credito,
t.diferencia
from tmp_notas_descuadradas t;'
loop
return next resultado;
end loop;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario