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;