CREATE TABLE IF NOT EXISTS vtas.almacenes_cajas
(
    cia_codigo character varying(4) NOT NULL,
    alma_codigo character varying(2) NOT NULL,
    caja_cod character(2) NOT NULL,
    sincronizado boolean NOT NULL DEFAULT false,
    borrado boolean NOT NULL DEFAULT false
);



DROP FUNCTION IF EXISTS vtas.tg_almacenes_cajas();

CREATE OR REPLACE FUNCTION vtas.tg_almacenes_cajas()
    RETURNS trigger
    LANGUAGE 'plpgsql'
    --COST 100
    --VOLATILE NOT LEAKPROOF
AS $BODY$
DECLARE
 tmpCajas record;
 sCompania varchar(4);
 sAlmacen varchar(2);
 bBorrado boolean default false; 
BEGIN
   IF TG_OP IN ('INSERT','UPDATE') THEN
        sCompania   := new.cia_codigo;
        sAlmacen     := new.alma_codigo;
    ELSE
        sCompania   := OLD.cia_codigo;
        sAlmacen     := OLD.alma_codigo;
        bBorrado    := true;
    END IF;
   
     FOR tmpCajas IN 
      Select caja_cod from inv_cajas where cia_codigo = sCompania and caja_ip <> ''
       LOOP
         PERFORM fn_editar('vtas.almacenes_cajas','sincronizado = false,borrado='||bBorrado,
               '','','cia_codigo = '''||sCompania||''' AND caja_cod = '''||
               tmpCajas.caja_cod||''' AND alma_codigo = '''||sAlmacen||''' ',
               'cia_codigo,alma_codigo,caja_cod',
               ''''||sCompania||''','''||sAlmacen||''',
               '''||tmpCajas.caja_cod||'''','','');  
             
       END LOOP;

   IF TG_OP IN ('INSERT','UPDATE') THEN
        RETURN NEW;
    ELSE
        RETURN OLD;
    END IF;
END;
$BODY$;

ALTER FUNCTION vtas.tg_almacenes_cajas()
    OWNER TO postgres;


DROP TRIGGER IF EXISTS inv_almacenes_tr_sincronizar ON public.inv_cajas;

CREATE OR REPLACE TRIGGER inv_almacenes_tr_sincronizar
    AFTER INSERT OR DELETE OR UPDATE 
    ON public.inv_almacenes
    FOR EACH ROW
    EXECUTE FUNCTION vtas.tg_almacenes_cajas();