Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

/*========tur===================================================*/
/* DBMS name:     PostgreSQL 8                                  */
/* Criado em:     13/06/2016                                        */
/* Autor: Bruno Lopes Peixoto                                       */
/*==============================================================*/

SET search_path = sc_sec;

CREATE SEQUENCE sq_contaformapag
INCREMENT 1
minvalue 1
maxvalue 99999999
START 1;

ALTER TABLE sq_contaformapag owner TO sc_sec;

CREATE SEQUENCE sq_conta
INCREMENT 1
minvalue 1
maxvalue 99999999
START 1;

ALTER TABLE sq_conta owner TO sc_sec;

/*==============================================================*/
/* Table: sec_conta_forma_pagamento                             */
/*==============================================================*/
CREATE TABLE sec_conta_forma_pagamento (
   seq_conta_forma_pagamento INT8                 NOT NULL DEFAULT NEXTVAL('sc_sec.sq_contaformapag'::regclass),
   cod_formapagament    INT8                 NOT NULL,
   cod_bandeira_cartao  INT8                 NOT NULL,
   val_pagamento        NUMERIC(10,2)        NOT NULL,
   CONSTRAINT pk_contaformapag PRIMARY KEY (seq_conta_forma_pagamento)
);

-- set table ownership
ALTER TABLE sec_conta_forma_pagamento owner TO sc_sec
;
/*==============================================================*/
/* Index: ix_contaformapag                                      */
/*==============================================================*/
CREATE UNIQUE INDEX ix_contaformapag ON sec_conta_forma_pagamento (
seq_conta_forma_pagamento
);

/*==============================================================*/
/* Index: ix_contaformapag_bandeiracartao                       */
/*==============================================================*/
CREATE  INDEX ix_contaformapag_bandeiracartao ON sec_conta_forma_pagamento (
cod_bandeira_cartao
);

/*==============================================================*/
/* Index: ix_contaformapag_formapagament                        */
/*==============================================================*/
CREATE  INDEX ix_contaformapag_formapagament ON sec_conta_forma_pagamento (
cod_formapagament
);

ALTER TABLE sec_conta_forma_pagamento
   ADD CONSTRAINT fk_contaformapag_bandeiracartao FOREIGN KEY (cod_bandeira_cartao)
      REFERENCES sec_bandeira_cartao (cod_bandeira_cartao)
      ON DELETE RESTRICT ON UPDATE RESTRICT;

ALTER TABLE sec_conta_forma_pagamento
   ADD CONSTRAINT fk_contaformapag_formapagment FOREIGN KEY (cod_formapagament)
      REFERENCES sec_forma_pagamento (cod_formapagament)
      ON DELETE RESTRICT ON UPDATE RESTRICT;

         
/*==============================================================*/
/* Table: sec_conta                                             */
/*==============================================================*/
CREATE TABLE sec_conta (
   seq_conta            INT8                 NOT NULL DEFAULT NEXTVAL('sc_sec.sq_conta'::regclass),
   seq_categoria        INT8                 NULL,
   seq_venda            INT8                 NULL,
   seq_pessoa           INT8                 NULL,
   seq_loja             INT8                 NULL,
   seq_conta_forma_pagamento INT8            NULL,
   dsc_observacao       VARCHAR(400)         NULL,
   tip_frequencia       CHAR(1)              NULL,
   tip_conta            CHAR(1)              NOT NULL
      CONSTRAINT ck_conta_tipo CHECK (tip_conta IN ('P','R')),
   ind_ativo            BOOL                 NOT NULL,
   CONSTRAINT pk_conta PRIMARY KEY (seq_conta)
);

comment ON COLUMN sec_conta.tip_conta IS
'Valores possíveis:
P - Conta à Pagar
R - Conta à Receber'
;

-- set table ownership
ALTER TABLE sec_conta owner TO sc_sec
;
/*==============================================================*/
/* Index: ix_conta_categoia                                     */
/*==============================================================*/
CREATE  INDEX ix_conta_categoia ON sec_conta (
seq_categoria
);

/*==============================================================*/
/* Index: ix_conta_pessoa                                       */
/*==============================================================*/
CREATE  INDEX ix_conta_pessoa ON sec_conta (
seq_pessoa
);

/*==============================================================*/
/* Index: ix_conta_venda                                        */
/*==============================================================*/
CREATE  INDEX ix_conta_venda ON sec_conta (
seq_venda
);

/*==============================================================*/
/* Index: ix_conta_loja                                         */
/*==============================================================*/
CREATE  INDEX ix_conta_loja ON sec_conta (
seq_loja
);

/*==============================================================*/
/* Index: ix_conta_contaformapag                                */
/*==============================================================*/
CREATE  INDEX ix_conta_contaformapag ON sec_conta (
seq_conta_forma_pagamento
);

ALTER TABLE sec_conta
   ADD CONSTRAINT fk_conta_categoria FOREIGN KEY (seq_categoria)
      REFERENCES sec_categoria (seq_categoria)
      ON DELETE RESTRICT ON UPDATE RESTRICT;
         
ALTER TABLE sec_conta
   ADD CONSTRAINT fk_conta_contaformapag FOREIGN KEY (seq_conta_forma_pagamento)
      REFERENCES sec_conta_forma_pagamento (seq_conta_forma_pagamento)
      ON DELETE RESTRICT ON UPDATE RESTRICT;

ALTER TABLE sec_conta
   ADD CONSTRAINT fk_conta_loja FOREIGN KEY (seq_loja)
      REFERENCES sec_loja (seq_loja)
      ON DELETE RESTRICT ON UPDATE RESTRICT;

ALTER TABLE sec_conta
   ADD CONSTRAINT fk_conta_pessoa FOREIGN KEY (seq_pessoa)
      REFERENCES sec_pessoa (seq_pessoa)
      ON DELETE RESTRICT ON UPDATE RESTRICT;

ALTER TABLE sec_conta
   ADD CONSTRAINT fk_conta_venda FOREIGN KEY (seq_venda)
      REFERENCES sec_venda (seq_venda)
      ON DELETE RESTRICT ON UPDATE RESTRICT;


         
         
ALTER TABLE sec_parcela ADD COLUMN seq_conta int8;
         
/*==============================================================*/
/* Index: ix_parcela_conta                                      */
/*==============================================================*/
CREATE  INDEX ix_parcela_conta ON sec_parcela (
seq_conta
);

ALTER TABLE sec_parcela
   ADD CONSTRAINT fk_parcela_conta FOREIGN KEY (seq_conta)
      REFERENCES sec_conta (seq_conta)
      ON DELETE RESTRICT ON UPDATE RESTRICT;



-------------Migração-------------------------------
ALTER TABLE sc_sec.sec_conta ADD COLUMN seq_conta_a_receber int8;
ALTER TABLE sc_sec.sec_conta ADD COLUMN seq_conta_a_pagar int8;

-- ADICIONANDO CONTAS A PAGAR
INSERT INTO sc_sec.sec_conta(seq_conta_a_pagar, seq_categoria,  
seq_pessoa, dsc_observacao, tip_frequencia, tip_conta, ind_ativo)
SELECT DISTINCT(p.seq_conta_a_pagar), pa.seq_categoria, pa.seq_pessoa,
pa.dsc_observacao, pa.tip_frequencia, 'P', pa.ind_ativo
FROM sc_sec.sec_conta_a_pagar pa
LEFT JOIN sc_sec.sec_parcela p ON pa.seq_conta_a_pagar = p.seq_conta_a_pagar
ORDER BY p.seq_conta_a_pagar;

-- ADICIONANDO CONTAS A RECEBER
INSERT INTO sc_sec.sec_conta(seq_conta_a_receber, seq_categoria, seq_venda,
seq_pessoa, dsc_observacao, tip_frequencia, tip_conta, ind_ativo)
SELECT DISTINCT(p.seq_conta_a_receber), pr.seq_categoria, pr.seq_venda, pr.seq_pessoa,
pr.dsc_observacao, pr.tip_frequencia, 'R', pr.ind_ativo
FROM sc_sec.sec_conta_a_receber pr
LEFT JOIN sc_sec.sec_parcela p ON pr.seq_conta_a_receber = p.seq_conta_a_receber
ORDER BY p.seq_conta_a_receber;

-- VINCULAR PARCELAS COM A CONTA, BASEANDO-SE NA CONTA A PAGAR OU A RECEBER
UPDATE sc_sec.sec_conta SET tip_frequencia = 'U' WHERE tip_frequencia IS NULL;
ALTER TABLE sc_sec.sec_conta ALTER COLUMN tip_frequencia SET NOT NULL;

UPDATE sc_sec.sec_parcela p SET seq_conta = (SELECT seq_conta FROM sc_sec.sec_conta WHERE seq_conta_a_pagar = p.seq_conta_a_pagar OR seq_conta_a_receber = p.seq_conta_a_receber);

-- EXCLUIR TABELAS CONTA A RECEBER E A PAGAR E SEUS VÍNCULOS
ALTER TABLE sc_sec.sec_parcela DROP COLUMN seq_conta_a_pagar;
ALTER TABLE sc_sec.sec_parcela DROP COLUMN seq_conta_a_receber;

ALTER TABLE sc_sec.sec_conta DROP COLUMN seq_conta_a_pagar;
ALTER TABLE sc_sec.sec_conta DROP COLUMN seq_conta_a_receber;

DROP TABLE sc_sec.sec_conta_a_pagar;
DROP TABLE sc_sec.sec_conta_a_receber;

DROP SEQUENCE sc_sec.sq_contaapagar;
DROP SEQUENCE sc_sec.sq_contaareceber;

ALTER TABLE sc_sec.sec_parcela ALTER COLUMN seq_conta SET NOT NULL;

UPDATE sc_sec.sec_conta c SET seq_loja = (SELECT seq_loja FROM sc_sec.sec_venda v WHERE v.seq_venda = c.seq_venda);


INSERT INTO sc_sec.sec_bandeira_cartao(cod_bandeira_cartao, dsc_bandeira, tip_cartao, ind_ativo) VALUES (12, 'HIPER', 'D', TRUE);

SET search_path = public;