viernes, 31 de octubre de 2014

Get accounting movements in ADempiere

1) Creamos la tabla que guardará los movimientos contables finales, es decir, debito total y credito total para cada cuenta y para cada período.

Crear la tabla como se muestra en este post.

2) Copiamos y ejecutamos la siguiente función PostgreSQL

-- Function: sp_obtener_movimientos_contables()

-- DROP FUNCTION sp_obtener_movimientos_contables();

CREATE OR REPLACE FUNCTION sp_obtener_movimientos_contables()
  RETURNS boolean AS
$BODY$
begin
    truncate table nic_saldos_finales;

    -- Insertar los movimientos totales
   
    drop table if exists tmp_movimientos_totales;

    create temporary table tmp_movimientos_totales as
    select
                f.ad_org_id,
        f.c_period_id as id_periodo,
        p.periodtype as tipo_periodo,
        p.periodno as num_periodo,
        p.es_cierre_contable,
        f.account_id as id_cuenta,
        f.dateacct as fecha_cuenta,
        sum(f.amtacctdr)::numeric(20,2) as debito_final,
        sum(f.amtacctcr)::numeric(20,2) as credito_final
    from fact_acct f
        join c_period p
        on f.c_period_id = p.c_period_id
    where f.ad_client_id = 1000001
        and f.ad_table_id = 224
        and f.line_id > 0
    group by
                f.ad_org_id,
        f.c_period_id,
        p.periodtype,
        p.periodno,
        p.es_cierre_contable,
        f.account_id,
        f.dateacct;
   
    insert into nic_saldos_finales
    select
        coalesce((select max(s.nic_saldos_finales_id) from nic_saldos_finales s), 999999) +
        row_number() over(order by mf.id_periodo, mf.id_cuenta),
        ev.ad_client_id,
        mf.ad_org_id,
        ev.isactive,
        ev.created,
        ev.createdby,
        ev.updated,
        ev.updatedby,
        mf.id_periodo,
        mf.tipo_periodo,
        mf.num_periodo,
        mf.es_cierre_contable,
        mf.id_cuenta,
        mf.fecha_cuenta,
        ev.accounttype,
        ev.accountsign,
        mf.debito_final,
        mf.credito_final
    from c_elementvalue ev
        join tmp_movimientos_totales mf
        on ev.c_elementvalue_id = mf.id_cuenta
    where ev.ad_client_id = 1000001
        and ev.isactive = 'Y';

    return true;
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION sp_obtener_movimientos_contables()
  OWNER TO adempiere;


3) Lo integramos como un proceso siguiendo los pasos de este post.



















Post relacionados:

- iDempiere Official Website Chat

- Ocultar tu ID o Numero Movistar

- The best antivirus for PC

- The best operating system

- Multiplica tu dinero

Blogs relacionados:

- All Christian Musics

- Marimba Cristiana 2014

- Best Violin Music

- All Names Babies

- Nombres para bebes

- FIFA World Cup 2014

No hay comentarios:

Publicar un comentario