--SEQ 0001--
ALTER TABLE gerente.cfg ADD COLUMN seqatual int4;
ALTER TABLE gerente.cfg ADD COLUMN dataatual1 TIMESTAMP;
ALTER TABLE gerente.cfg ADD COLUMN dataatual2 TIMESTAMP;
--RUN--
--SEQ 0002--
CREATE TABLE gerente.acessorio (
  id_acessorio SERIAL NOT NULL ,
  id_subgrupo INT NOT NULL ,
  id_produto INT NOT NULL ,
  qtdade DECIMAL(15,3) NOT NULL ,
  descricao CHAR(40) NOT NULL ,
  preco DECIMAL(12,2) NOT NULL,
  CONSTRAINT pk_acessorio PRIMARY KEY (id_acessorio)
);
--RUN--
--SEQ 0003--
ALTER TABLE gerente.pedacessorio RENAME id_produto TO id_acessorio;
ALTER TABLE gerente.pedacessorio ADD CONSTRAINT fk_pedacessorio_id_acessorio FOREIGN KEY (id_acessorio) REFERENCES gerente.acessorio (id_acessorio);
--RUN--
--SEQ 0004--
ALTER TABLE gerente.pedidos ADD COLUMN acessorio_requisitado char(1);
UPDATE gerente.pedidos SET acessorio_requisitado='N';
ALTER TABLE gerente.pedidos ALTER COLUMN acessorio_requisitado SET NOT NULL;
ALTER TABLE gerente.pedidos ADD CONSTRAINT chk_pedidos_acessorio_requisitado CHECK (acessorio_requisitado IN ('S','N'));
--RUN--
--SEQ 0005--
ALTER TABLE gerente.pedidos ALTER COLUMN acessorio_requisitado SET DEFAULT 'N';
--RUN--
--SEQ 0006--
UPDATE gerente.pedidos SET v_fin=(select sum(valor) from gerente.ctr where id_pedido=gerente.pedidos.id_pedido) where v_fin=0 and NOT v_fin=(select sum(valor) from gerente.ctr where id_pedido=gerente.pedidos.id_pedido);
UPDATE gerente.pedidos SET v_ent=vl_ctr-v_fin where situa=3 and tipo='N' and vl_ctr>0 and v_ent=0 and v_fin=0;
--RUN--
--SEQ 0007--
ALTER TABLE gerente.empresas ADD COLUMN dt_bloq_estoque date;
UPDATE gerente.empresas SET dt_bloq_estoque='1990-01-01';
ALTER TABLE gerente.empresas ALTER COLUMN dt_bloq_estoque SET NOT NULL;

--RUN--
--SEQ 0008--

CREATE TABLE gerente.estlocal (
  id_estlocal SERIAL NOT NULL ,
  nome CHAR(40) NOT NULL,
  sit_estoque INT2 NOT NULL,
  CONSTRAINT pk_estlocal PRIMARY KEY (id_estlocal),
  CONSTRAINT chk_estlocal_sit_estoque CHECK (sit_estoque IN (1,2,3))
);

--RUN--
--SEQ 0009--

CREATE TABLE gerente.estsaldo (
  id_estsaldo SERIAL NOT NULL ,
  id_empresa INT NOT NULL ,
  id_estlocal INT NOT NULL ,
  id_produto INT NOT NULL ,
  qtdade DECIMAL(17,3) NOT NULL ,
  valor DECIMAL(17,2) NOT NULL ,
  custo_medio DECIMAL(17,4) NOT NULL ,
  qtd_empenhada DECIMAL(17,3) NOT NULL ,
  qtd_pedidos DECIMAL(17,3) NOT NULL ,
  CONSTRAINT pk_estsaldo PRIMARY KEY (id_estsaldo),
  CONSTRAINT fk_estsaldo_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT fk_estsaldo_estlocal FOREIGN KEY (id_estlocal) REFERENCES gerente.estlocal (id_estlocal),
  CONSTRAINT key_estsaldo_empresa UNIQUE (id_empresa,id_estlocal,id_produto),
  CONSTRAINT chk_estsaldo_custo_medio CHECK (custo_medio>=0)
);

--RUN--
--SEQ 0010--

CREATE TABLE gerente.estmovto (
  id_estmovto SERIAL NOT NULL ,
  id_empresa INT NOT NULL ,
  id_estlocal INT NOT NULL ,
  id_produto INT NOT NULL ,
  docto_natureza CHAR(1) NOT NULL ,
  docto_tipo CHAR(3) NOT NULL ,
  docto_serie CHAR(5) NOT NULL ,
  docto_numero CHAR(12) NOT NULL ,
  data DATE NOT NULL ,
  historico CHAR(50) NOT NULL ,
  tipo CHAR(1) NOT NULL ,
  qtdade DECIMAL(17,3) NOT NULL ,
  valor DECIMAL(15,2) NOT NULL ,
  vl_ajuste DECIMAL(15,2) NOT NULL ,
  custo_medio DECIMAL(17,4) NOT NULL ,
  operador CHAR(12) NOT NULL ,
  status SMALLINT NOT NULL ,
  origem_prefixo CHAR(3) NOT NULL ,
  origem_id INT NOT NULL ,
  origem_ordem INT NOT NULL,
  origem_seq INT NOT NULL,
  data_inc TIMESTAMP NOT NULL DEFAULT NOW(),
  CONSTRAINT pk_estmovto PRIMARY KEY (id_estmovto),
  CONSTRAINT fk_estmovto_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT fk_estmovto_estlocal FOREIGN KEY (id_estlocal) REFERENCES gerente.estlocal (id_estlocal),
  CONSTRAINT fk_estmovto_estsaldo FOREIGN KEY (id_empresa,id_estlocal,id_produto) REFERENCES gerente.estsaldo (id_empresa,id_estlocal,id_produto),
  CONSTRAINT key_estmovto_origem UNIQUE (id_empresa,origem_prefixo,origem_id,origem_ordem,origem_seq),
  CONSTRAINT chk_estmovto_docto_natureza CHECK (docto_natureza IN ('F','I')),
  CONSTRAINT chk_estmovto_qtdade CHECK (qtdade>0),
  CONSTRAINT chk_estmovto_tipo CHECK (tipo IN ('E','S','M','P')),
  CONSTRAINT chk_estmovto_status CHECK (status IN (1,2,3))
);

--RUN--
--SEQ 0011--

CREATE INDEX key_estmovto_data ON gerente.estmovto (data);
CREATE INDEX key_estmovto_produto ON gerente.estmovto (id_produto);

--RUN--
--SEQ 0012--

ALTER TABLE gerente.ctr DROP CONSTRAINT chk_ctr_saldo;

--RUN--IGNORE ERRO
--SEQ 0013--

UPDATE ONLY gerente.ctr SET saldo=(valor-recbt-desco+juros+despcart), 
                            situacao=CASE WHEN (valor-recbt-desco+juros+despcart)=0 THEN 'Q' ELSE 'A' END
                            WHERE NOT ((valor-recbt-desco+juros+despcart)=saldo);
--RUN--
--SEQ 0014--

ALTER TABLE gerente.ctr ADD CONSTRAINT chk_ctr_saldo CHECK ((valor-recbt-desco+juros+despcart)=saldo);
ALTER TABLE gerente.ctr ALTER COLUMN recbt SET DEFAULT 0;
ALTER TABLE gerente.ctr ALTER COLUMN situacao SET DEFAULT 'A';

--RUN--
--SEQ 0015--

ALTER TABLE gerente.ctr ALTER COLUMN saldo DROP DEFAULT;

--RUN--IGNORE ERRO
--SEQ 0016--

ALTER TABLE gerente.ctr ALTER COLUMN saldo DROP NOT NULL;

--RUN--IGNORE ERRO

--SEQ 0017--
ALTER TABLE gerente.pedidos ADD COLUMN id_estlocal int4;
ALTER TABLE gerente.pedidos ADD CONSTRAINT fk_pedidos_estlocal FOREIGN KEY (id_estlocal) REFERENCES gerente.estlocal (id_estlocal);
--RUN--

--SEQ 0018--
ALTER TABLE gerente.peditens ADD COLUMN num_serie varchar(30);
--RUN--

--SEQ 0019--
ALTER TABLE gerente.pedidos ADD COLUMN usuario_inc varchar(12);
--RUN--

--SEQ 0020--
CREATE INDEX key_peditens_num_serie ON gerente.peditens (num_serie);
--RUN--

--SEQ 0021--
-- CORRIGE QTDADE DE PEDIDOS PENDENTES
UPDATE gerente.estsaldo SET qtd_pedidos = COALESCE((select sum(qtdade) FROM gerente.estmovto WHERE id_empresa=gerente.estsaldo.id_empresa AND id_estlocal=gerente.estsaldo.id_estlocal AND id_produto=gerente.estsaldo.id_produto AND tipo='P'),0)
       WHERE qtd_pedidos>0;
--RUN--

--SEQ 0022--
CREATE TABLE gerente.codbarra
(
   id_codbarra serial, 
   codigo character(13) NOT NULL, 
   id_produto integer NOT NULL, 
   CONSTRAINT pk_codbarra PRIMARY KEY (id_codbarra), 
   CONSTRAINT key_codbarra_codigo UNIQUE (codigo)
) ;
--RUN--

--SEQ 0023--
CREATE INDEX key_codbarra_produto ON gerente.codbarra (id_produto);
--RUN--

--SEQ 0024--
ALTER TABLE gerente.pedidos  ADD COLUMN venctos varchar(100);
--RUN--

--SEQ 0025--
CREATE TABLE gerente.estinventario
(
  id_estinventario SERIAL,
  id_empresa integer NOT NULL,
  data date NOT NULL,
  id_estlocal integer NOT NULL,
  id_produto integer NOT NULL,
  qtdade numeric(15,3) NOT NULL,
  valor numeric(15,2) NOT NULL,
  CONSTRAINT pk_estiestinventario PRIMARY KEY (id_estinventario),
  CONSTRAINT fk_estoque_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT fk_estoque_estlocal FOREIGN KEY (id_estlocal) REFERENCES gerente.estlocal (id_estlocal),
  CONSTRAINT key_estoque_data UNIQUE (id_empresa, id_estlocal, id_produto, data)
); 
--RUN--

--SEQ 0026--
ALTER TABLE gerente.empresas ADD COLUMN taxa_juros numeric(7, 2);
ALTER TABLE gerente.empresas ADD COLUMN fc_juros character(1);
ALTER TABLE gerente.empresas ALTER COLUMN fc_juros SET DEFAULT 'C';
--RUN--

--SEQ 0027--
UPDATE gerente.empresas SET fc_juros='C';
ALTER TABLE gerente.empresas ALTER COLUMN fc_juros SET NOT NULL;
ALTER TABLE gerente.empresas ADD CONSTRAINT chk_empresas_fc_juros CHECK (fc_juros IN ('S','C'));
--RUN--

--SEQ 0028--
ALTER TABLE gerente.peditens ADD COLUMN ambiente char(30);
--RUN--

--SEQ 0029--
ALTER TABLE gerente.pedidos ADD COLUMN status int2;
--RUN--

--SEQ 0030--
CREATE TABLE gerente.log
(
  id_log SERIAL,
  data timestamp NOT NULL DEFAULT now(),
  nome_cpd varchar(20) NOT NULL,
  nome_usuario varchar(20) NOT NULL,
  operacao varchar(3) NOT NULL,
  tabela varchar(20) NOT NULL,
  id varchar(30) NOT NULL,
  descricao varchar(100) NOT NULL,
  CONSTRAINT pk_log PRIMARY KEY (id_log)
);

CREATE INDEX key_log_data ON gerente.log (data);

CREATE INDEX key_log_tabela ON gerente.log (tabela, id);
--RUN--
--SEQ 0031--
CREATE SCHEMA pegasus;

CREATE TABLE pegasus.estoque
(
  id_estoque SERIAL,
  codigo int4 NOT NULL,
  quantidade numeric(15,3) NOT NULL,
  descricao varchar(40) NOT NULL,
  filial int4 NOT NULL,
  lote varchar(20) NOT NULL,
  CONSTRAINT pk_estoque PRIMARY KEY (id_estoque)
);

CREATE TABLE pegasus.movto
(
  id_movto SERIAL,
  tipo char(1) NOT NULL,
  filial int4 NOT NULL,
  cfop int4 NOT NULL,
  quantidade numeric(15,3) NOT NULL,
  codigo int4 NOT NULL,
  data date NOT NULL,
  lote varchar(20) NOT NULL,
  numero_nf int4 NOT NULL,
  cidade varchar(30) NOT NULL,
  uf char(2) NOT NULL,
  preco NUMERIC(15,2) NOT NULL,
  cpf_cnpj varchar(20) NOT NULL,
  CONSTRAINT pk_movto PRIMARY KEY (id_movto)
);
--RUN--

--SEQ 0032--
CREATE ROLE pegasus 
  LOGIN ENCRYPTED 
  PASSWORD 'md5ce15740d61272d56d64177ce51ecc091'
  NOINHERIT
  VALID UNTIL 'infinity';
--RUN--IGNORE ERRO

--SEQ 0033--
GRANT USAGE ON SCHEMA pegasus TO pegasus;
GRANT SELECT ON TABLE pegasus.movto TO pegasus;
GRANT SELECT ON TABLE pegasus.estoque TO pegasus;
--RUN--
--SEQ 0034--
ALTER TABLE gerente.pedidos DROP CONSTRAINT chk_pedidos_situa;
ALTER TABLE gerente.pedidos ADD CONSTRAINT chk_pedidos_situa CHECK (situa >= 1 AND situa <= 5);
--RUN--
--SEQ 0035-
ALTER TABLE gerente.ctr ALTER COLUMN recbt SET NOT NULL;
UPDATE gerente.ctr SET saldo=0 WHERE saldo IS NULL;
ALTER TABLE gerente.ctr ALTER COLUMN saldo SET NOT NULL;
--RUN--
--SEQ 0036-
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_forma;
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbto_forma CHECK (forma in (1,2,3,4,5,6,8,9));
--RUN--

--SEQ 0037-
CREATE TABLE gerente.entrares (
  id_entrares SERIAL NOT NULL ,
  id_empresa INT NOT NULL ,
  numero INT NOT NULL ,
  data DATE NOT NULL ,
  id_fornecedor INT NOT NULL ,
  id_produto INT NOT NULL ,
  qtdade DECIMAL(12,3) NOT NULL ,
  vl_unitario DECIMAL(12,4) NOT NULL ,
  vl_total DECIMAL(12,2) NOT NULL,
  CONSTRAINT pk_entrares PRIMARY KEY (id_entrares),
  CONSTRAINT fk_entrares_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT key_entrares_numero UNIQUE (id_empresa,numero)
);
--RUN--

--SEQ 0038-
ALTER TABLE gerente.pedidos ADD COLUMN vl_desp_acessorias numeric(12,2);
--RUN--

--SEQ 0039-
ALTER TABLE gerente.recbtos DISABLE TRIGGER atual_vlrecebido_ctr;

ALTER TABLE gerente.recbtos ADD COLUMN id_empresa integer;
ALTER TABLE gerente.recbtos ADD COLUMN id_cliente integer;

UPDATE gerente.recbtos SET id_empresa=(SELECT id_empresa FROM gerente.ctr WHERE id_ctr=gerente.recbtos.id_ctr) WHERE origem='C';
UPDATE gerente.recbtos SET id_empresa=(SELECT id_empresa FROM gerente.pedidos WHERE id_pedido=gerente.recbtos.id_pedido) WHERE origem='P';

UPDATE gerente.recbtos SET id_cliente=(SELECT deved FROM gerente.ctr WHERE id_ctr=gerente.recbtos.id_ctr) WHERE origem='C';
UPDATE gerente.recbtos SET id_cliente=(SELECT clien FROM gerente.pedidos WHERE id_pedido=gerente.recbtos.id_pedido) WHERE origem='P';

ALTER TABLE gerente.recbtos ALTER COLUMN id_empresa SET NOT NULL;
ALTER TABLE gerente.recbtos ALTER COLUMN id_cliente SET NOT NULL;

ALTER TABLE gerente.recbtos ENABLE TRIGGER atual_vlrecebido_ctr;

ALTER TABLE gerente.recbtos
  ADD CONSTRAINT fk_recbtos_empresa FOREIGN KEY (id_empresa)
  REFERENCES gerente.empresas (id_empresa);
ALTER TABLE gerente.recbtos
  ADD CONSTRAINT fk_recbtos_cliente FOREIGN KEY (id_cliente)
  REFERENCES gerente.clientes (id_cliente);

VACUUM FULL gerente.recbtos;
CREATE INDEX key_recbtos_empresa
   ON gerente.recbtos (id_empresa, id_cliente, data);
--RUN--

--SEQ 0040--
ALTER TABLE pegasus.movto RENAME preco  TO precoold;
ALTER TABLE pegasus.movto RENAME cpf_cnpj  TO cpf_cnpjold;

ALTER TABLE pegasus.movto ADD COLUMN nome varchar(50);
ALTER TABLE pegasus.movto ADD COLUMN preco numeric(15,2);
ALTER TABLE pegasus.movto ADD COLUMN cpf_cnpj varchar(20);

UPDATE pegasus.movto SET preco=precoold, cpf_cnpj=cpf_cnpjold;
ALTER TABLE pegasus.movto DROP COLUMN precoold;
ALTER TABLE pegasus.movto DROP COLUMN cpf_cnpjold;
--RUN--


--SEQ 0041--
CREATE TABLE gerente.osmo
(
  id_osmo serial NOT NULL,
  id_empresa integer NOT NULL,
  id_os integer NOT NULL,
  ordem integer NOT NULL,
  id_tecnico integer NOT NULL,
  hr_ini integer NOT NULL,
  hr_fim integer NOT NULL,
  qtdade numeric(12,3) NOT NULL,
  vl_custo numeric(12,3) NOT NULL,
  vl_preco numeric(12,2) NOT NULL,
  CONSTRAINT pk_osmo PRIMARY KEY (id_osmo),
  CONSTRAINT fk_osmo_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT key_osmo_ordem UNIQUE (id_empresa,id_os,ordem)
);
--RUN--

--SEQ 0042--
CREATE TABLE gerente.ovorec
(
  id_ovorec serial NOT NULL,
  id_empresa integer NOT NULL,
  numero integer NOT NULL,
  id_cliente integer NOT NULL,
  data date NOT NULL,
  hora integer NOT NULL,
  situacao character(1) NOT NULL,
  obs character(50) NOT NULL,
  operador character(12) NOT NULL,
  total numeric(12,2) NOT NULL,
  id_ovoexp integer NULL,
  CONSTRAINT pk_ovorec PRIMARY KEY (id_ovorec),
  CONSTRAINT fk_ovorec_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT fk_ovorec_cliente FOREIGN KEY (id_cliente) REFERENCES gerente.clientes (id_cliente),
  CONSTRAINT key_ovorec_numero UNIQUE (id_empresa,numero)
);

CREATE TABLE gerente.ovorecd
(
  id_ovorecd serial NOT NULL,
  id_ovorec integer NOT NULL,
  ordem integer NOT NULL,
  id_produto integer NOT NULL,
  qtdade numeric(12,3) NOT NULL,
  unidade character(3) NOT NULL,
  vl_unitario numeric(12,2) NOT NULL,
  CONSTRAINT pk_ovorecd PRIMARY KEY (id_ovorecd),
  CONSTRAINT fk_ovorecd_ovorec FOREIGN KEY (id_ovorec)  REFERENCES gerente.ovorec (id_ovorec), 
  CONSTRAINT key_ovorecd_ordem UNIQUE (id_ovorec,ordem)
);

CREATE TABLE gerente.ovocla (
  id_ovocla SERIAL NOT NULL ,
  id_empresa INT NOT NULL ,
  numero INT NOT NULL ,
  data DATE NOT NULL ,
  hora INT NOT NULL ,
  situacao character(1) NOT NULL,
  numero_recepcao INT NOT NULL ,
  id_produto INT NOT NULL ,
  versao CHAR(10) NOT NULL ,
  qtdade DECIMAL(12,3) NOT NULL ,
  id_servico1 INT NULL ,
  id_servico2 INT NULL ,
  id_servico3 INT NULL ,
  prc_servico1 DECIMAL(12,3) NULL ,
  prc_servico2 DECIMAL(12,3) NULL ,
  prc_servico3 DECIMAL(12,3) NULL ,
  id_insumo1 INT NULL ,
  id_insumo2 INT NULL ,
  id_insumo3 INT NULL ,
  id_insumo4 INT NULL ,
  id_insumo5 INT NULL ,
  qtd_insumo1 DECIMAL(12,3) NULL ,
  qtd_insumo2 DECIMAL(12,3) NULL ,
  qtd_insumo3 DECIMAL(12,3) NULL ,
  qtd_insumo4 DECIMAL(12,3) NULL ,
  qtd_insumo5 DECIMAL(12,3) NULL ,
  prc_insumo1 DECIMAL(12,3) NULL ,
  prc_insumo2 DECIMAL(12,3) NULL ,
  prc_insumo3 DECIMAL(12,3) NULL ,
  prc_insumo4 DECIMAL(12,3) NULL ,
  prc_insumo5 DECIMAL(12,3) NULL ,
  operador CHAR(12) NOT NULL ,
  total DECIMAL(12,2) NOT NULL ,
  id_ovoexp integer NULL,
  CONSTRAINT pk_ovocla PRIMARY KEY (id_ovocla),
  CONSTRAINT fk_ovocla_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT fk_ovocla_ovorec FOREIGN KEY (id_empresa,numero_recepcao)  REFERENCES gerente.ovorec (id_empresa,numero), 
  CONSTRAINT key_ovocla_numero UNIQUE (id_empresa,numero)
);

CREATE TABLE gerente.ovoexp (
  id_ovoexp SERIAL NOT NULL ,
  id_empresa INT NOT NULL ,
  numero INT NOT NULL ,
  id_cliente INT NOT NULL ,
  id_destino INT NULL ,
  data DATE NOT NULL ,
  hora INT NOT NULL ,
  situacao CHAR(1) NOT NULL ,
  obs CHAR(50) NOT NULL ,
  operador CHAR(12) NOT NULL ,
  total DECIMAL(12,2) NOT NULL ,
  vencto DATE NOT NULL,
  CONSTRAINT pk_ovoexp PRIMARY KEY (id_ovoexp),
  CONSTRAINT fk_ovoexp_cliente FOREIGN KEY (id_cliente) REFERENCES gerente.clientes (id_cliente),
  CONSTRAINT fk_ovoexp_cliente2 FOREIGN KEY (id_destino) REFERENCES gerente.clientes (id_cliente),
  CONSTRAINT fk_ovoexp_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT key_ovoexp_numero UNIQUE (id_empresa,numero)
);

CREATE TABLE gerente.ovoexpd (
  id_ovoexpd SERIAL NOT NULL ,
  id_empresa INT NOT NULL ,
  id_ovoexp INT NOT NULL ,
  ordem INT NOT NULL ,
  id_produto INT NOT NULL ,
  num_ovocla INT NOT NULL ,
  qtdade DECIMAL(12,2) NOT NULL ,
  unidade CHAR(3) NOT NULL,
  CONSTRAINT pk_ovoexpd PRIMARY KEY (id_ovoexpd),
  CONSTRAINT fk_ovoexpd_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT fk_ovoexpd_ovoexp FOREIGN KEY (id_ovoexp) REFERENCES gerente.ovoexp (id_ovoexp),
  CONSTRAINT fk_ovoexpd_ovocla FOREIGN KEY (id_empresa,num_ovocla) REFERENCES gerente.ovocla (id_empresa,numero),
  CONSTRAINT key_ovoexpd_ordem UNIQUE (id_ovoexp,ordem)
);


ALTER TABLE gerente.ovorec
  ADD CONSTRAINT fk_ovorec_ovoexp FOREIGN KEY (id_ovoexp)
      REFERENCES gerente.ovoexp (id_ovoexp);


ALTER TABLE gerente.ovocla
  ADD CONSTRAINT fk_ovocla_ovoexp FOREIGN KEY (id_ovoexp)
      REFERENCES gerente.ovoexp (id_ovoexp);

--RUN--

--SEQ 0043--
CREATE TRIGGER at_situacao_ovocla
  BEFORE INSERT OR UPDATE OR DELETE
  ON gerente.ovoexpd
  FOR EACH ROW
  EXECUTE PROCEDURE gerente.at_situacao_ovocla();
--RUN--


--SEQ 0044--
CREATE TABLE gerente.classfiscal (
  id_classfiscal SERIAL NOT NULL ,
  codigo INT NOT NULL ,
  descricao CHAR(80) NOT NULL,
  CONSTRAINT pk_classfiscal PRIMARY KEY (id_classfiscal),
  CONSTRAINT key_classfiscal_codigo UNIQUE (codigo)
);

CREATE TABLE gerente.cfgcadastro (
  id_empresa INT NOT NULL ,
  exigir_inscricao_cliente SMALLINT NULL ,
  exigir_inscricao_fornecedor SMALLINT NULL ,
  exigir_cfiscal_produto SMALLINT NULL ,
  intervalo1_codean CHAR(12) NULL ,
  intervalo2_codean CHAR(12) NULL,
  CONSTRAINT pk_cfgcadastro PRIMARY KEY (id_empresa),
  CONSTRAINT fk_cfgcadastro_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa)
);
--RUN--

--SEQ 0045--
ALTER TABLE gerente.ovoexpd ALTER COLUMN num_ovocla DROP NOT NULL;
ALTER TABLE gerente.ovoexpd ADD   COLUMN origem character(1);
ALTER TABLE gerente.ovoexpd ADD   COLUMN preco numeric(12, 2);
UPDATE gerente.ovoexpd SET origem='C',preco=0;
ALTER TABLE gerente.ovoexpd ALTER COLUMN origem SET NOT NULL;
ALTER TABLE gerente.ovoexpd ALTER COLUMN preco SET NOT NULL;
ALTER TABLE gerente.ovoexpd ADD CONSTRAINT chk_ovoexpd_origem 
  CHECK ((origem='C' and num_ovocla IS NOT NULL) OR (origem='E' and num_ovocla IS NULL));
--RUN--

--SEQ 0046--
ALTER TABLE gerente.ctr ADD COLUMN num_parcela int4;
--RUN--

--SEQ 0047--
CREATE OR REPLACE VIEW gerente.vconsumo_ovoexp AS
SELECT b.num_ovocla,b.id_ovoexp,'S' as tipo,a.id_servico1 as id ,b.qtdade,a.prc_servico1 as preco,round(b.qtdade*a.prc_servico1,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'S' as tipo,a.id_servico2 as id ,b.qtdade,a.prc_servico2 as preco,round(b.qtdade*a.prc_servico2,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'S' as tipo,a.id_servico3 as id ,b.qtdade,a.prc_servico3 as preco,round(b.qtdade*a.prc_servico3,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo1 as id ,round(a.qtd_insumo1*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo1 as preco,round(a.qtd_insumo1*b.qtdade/a.qtdade*a.prc_insumo1,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo2 as id ,round(a.qtd_insumo2*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo2 as preco,round(a.qtd_insumo2*b.qtdade/a.qtdade*a.prc_insumo2,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo3 as id ,round(a.qtd_insumo3*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo3 as preco,round(a.qtd_insumo3*b.qtdade/a.qtdade*a.prc_insumo3,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo4 as id ,round(a.qtd_insumo4*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo4 as preco,round(a.qtd_insumo4*b.qtdade/a.qtdade*a.prc_insumo4,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo5 as id ,round(a.qtd_insumo5*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo5 as preco,round(a.qtd_insumo5*b.qtdade/a.qtdade*a.prc_insumo5,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp);
--RUN--

--SEQ 0048--
ALTER TABLE gerente.ovoexp ADD   COLUMN outros_creditos numeric(12,2);
UPDATE gerente.ovoexp SET outros_creditos=0;
ALTER TABLE gerente.ovoexp ALTER COLUMN outros_creditos SET NOT NULL;
--RUN--

--SEQ 0049--
ALTER TABLE gerente.acessorio ADD COLUMN id_empresa integer;
UPDATE gerente.acessorio SET id_empresa=1;
ALTER TABLE gerente.acessorio ALTER COLUMN id_empresa SET NOT NULL;
ALTER TABLE gerente.acessorio
  ADD CONSTRAINT fk_acessorio_empresa FOREIGN KEY (id_empresa)
  REFERENCES gerente.empresas (id_empresa) ;
--RUN--

--SEQ 0050--
ALTER TABLE gerente.ovorecd ALTER vl_unitario TYPE numeric(12, 3);
--RUN--

--SEQ 0051--
CREATE TABLE gerente.auxiliar (
  id_auxiliar serial NOT NULL,
  id_empresa integer NOT NULL,
  tipo character(3) NOT NULL,
  codigo integer NOT NULL,
  descricao character(40) NOT NULL,
  sigla character(20) NOT NULL,
  grupo character(5) NOT NULL,
  valor numeric(15,2) NOT NULL,
  ativo smallint NOT NULL,
  agrupar smallint NOT NULL,
  CONSTRAINT pk_auxiliar PRIMARY KEY (id_auxiliar),
  CONSTRAINT fk_auxiliar_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT key_auxiliar_codigo UNIQUE (id_empresa, codigo, tipo)
); 
--RUN--

--SEQ 0052--
--ALTER TABLE gerente.estmovto DISABLE TRIGGER atual_estmovto_valor;
--ALTER TABLE gerente.estmovto DISABLE TRIGGER atual_estsaldo;

ALTER TABLE gerente.estinventario ADD COLUMN operador character(12);
UPDATE gerente.estinventario SET operador='admin_bd';
ALTER TABLE gerente.estinventario ALTER COLUMN operador SET NOT NULL;

ALTER TABLE gerente.estmovto ADD COLUMN ordem_proc int;
ALTER TABLE gerente.estmovto ALTER COLUMN ordem_proc SET DEFAULT 0;

UPDATE gerente.estmovto SET ordem_proc=0;

ALTER TABLE gerente.estmovto ALTER COLUMN ordem_proc SET NOT NULL;

ALTER TABLE gerente.estmovto ALTER COLUMN custo_medio SET DEFAULT 0;

--ALTER TABLE gerente.estmovto ENABLE TRIGGER atual_estsaldo;
--ALTER TABLE gerente.estmovto ENABLE TRIGGER atual_estmovto_valor;
--RUN--

--SEQ 0053--
--CREATE TRIGGER gera_estmovto
--  BEFORE INSERT OR UPDATE OR DELETE
--  ON gerente.estinventario
--  FOR EACH ROW
--  EXECUTE PROCEDURE gerente.gera_estmovto_inventario();
select now()
--RUN--

--SEQ 0054--
ALTER TABLE gerente.municipio RENAME cod_rais  TO codigo_ibge;
ALTER TABLE gerente.municipio RENAME codigo    TO codigo_estadual;
ALTER TABLE gerente.municipio ADD COLUMN codigo_federal integer;

ALTER TABLE gerente.municipio DROP CONSTRAINT key_municipio_cod_rais;
ALTER TABLE gerente.municipio ADD CONSTRAINT key_municipio_codigo_ibge UNIQUE(codigo_ibge);
ALTER TABLE gerente.municipio ADD CONSTRAINT key_municipio_codigo_federal UNIQUE(codigo_federal);
--RUN--

--SEQ 0055--
ALTER TABLE gerente.ovoexpd ADD COLUMN vl_unit_cobranca numeric(15, 2);
ALTER TABLE gerente.ovoexp  ADD COLUMN controla_cobranca character(1);
ALTER TABLE gerente.ovoexp  ADD COLUMN vl_cobranca numeric(15, 2);
ALTER TABLE gerente.ovoexp  ADD COLUMN dt_pag1 date;
ALTER TABLE gerente.ovoexp  ADD COLUMN dt_pag2 date;
ALTER TABLE gerente.ovoexp  ADD COLUMN dt_pag3 date;
ALTER TABLE gerente.ovoexp  ADD COLUMN vl_pag1 numeric(15, 2);
ALTER TABLE gerente.ovoexp  ADD COLUMN vl_pag2 numeric(15, 2);
ALTER TABLE gerente.ovoexp  ADD COLUMN vl_pag3 numeric(15, 2);
ALTER TABLE gerente.ovoexp  ADD COLUMN vl_desc_juros numeric(15, 2);
ALTER TABLE gerente.ovoexp  ADD COLUMN sit_cobranca character(1);

ALTER TABLE gerente.ovoexp ADD CONSTRAINT chk_ovoexp_sit_cobranca 
  CHECK ((sit_cobranca='Q' and vl_cobranca-vl_pag1-vl_pag2-vl_pag3+vl_desc_juros=0) or (sit_cobranca='A' and vl_cobranca-vl_pag1-vl_pag2-vl_pag3+vl_desc_juros<>0));

ALTER TABLE gerente.ovoexp ADD CONSTRAINT chk_ovoexp_vl_cobranca
  CHECK ((controla_cobranca='S' and vl_cobranca>0) or (controla_cobranca='N' and vl_cobranca=0));

ALTER TABLE gerente.ovoexp ADD CONSTRAINT chk_ovoexp_vl_pago
  CHECK ((vl_pag1+vl_pag2+vl_pag3)<=(vl_cobranca+vl_desc_juros));
--RUN--

--SEQ 0056--
ALTER TABLE gerente.cfiscal ADD COLUMN comissao numeric(12, 2);
ALTER TABLE gerente.cfiscal ADD COLUMN forma_pag_com character(1);
ALTER TABLE gerente.cfiscal ADD COLUMN id_vendedor integer;
ALTER TABLE gerente.cfiscald ADD COLUMN comissao numeric(12,2);
update gerente.cfiscal set comissao=0;
update gerente.cfiscal set forma_pag_com=0;
update gerente.cfiscal set id_vendedor=0;
update gerente.cfiscald set comissao=0;
ALTER TABLE gerente.cfiscal ALTER COLUMN comissao SET NOT NULL;
ALTER TABLE gerente.cfiscal ALTER COLUMN forma_pag_com SET NOT NULL;
ALTER TABLE gerente.cfiscal ALTER COLUMN id_vendedor SET NOT NULL;
ALTER TABLE gerente.cfiscald ALTER COLUMN comissao SET NOT NULL;
--RUN--

--SEQ 0057--
ALTER TABLE gerente.maqecf ADD COLUMN gera_est_gerencial smallint;
update gerente.maqecf set gera_est_gerencial=0;
ALTER TABLE gerente.maqecf ALTER COLUMN gera_est_gerencial SET NOT NULL;
--RUN--

--SEQ 0058--
ALTER TABLE gerente.osmo ADD COLUMN id_servico integer;
--RUN--

--SEQ 0059--
--CORRIGE LANÇAMENTOS DUPLICADOS NO SISTEMA GERENCIAL
ALTER TABLE gerente.recbtos DISABLE TRIGGER atual_vlrecebido_ctr;

UPDATE gerente.recbtos 
  SET id_empresa=(SELECT id_empresa FROM gerente.ctr WHERE id_ctr=gerente.recbtos.id_ctr) 
  WHERE id_recbto IN (SELECT A.id_recbto FROM gerente.recbtos A
                        LEFT OUTER JOIN gerente.ctr B on (A.id_ctr=B.id_ctr)
                        WHERE origem='C' AND NOT a.id_empresa=b.id_empresa);

UPDATE gerente.recbtos 
  SET id_empresa=(SELECT id_empresa FROM gerente.pedidos WHERE id_pedido=gerente.recbtos.id_pedido) 
  WHERE id_recbto IN (SELECT A.id_recbto FROM gerente.recbtos A
                        LEFT OUTER JOIN gerente.pedidos B on (A.id_pedido=B.id_pedido)
                        WHERE origem='P' AND NOT a.id_empresa=b.id_empresa);

ALTER TABLE gerente.recbtos ENABLE TRIGGER atual_vlrecebido_ctr;
--RUN--

--SEQ 0060--
DROP VIEW gerente.vconsumo_ovoexp;

CREATE OR REPLACE VIEW gerente.vconsumo_ovoexp AS
SELECT b.num_ovocla,b.id_ovoexp,'S' as tipo,a.id_servico1 as id ,b.qtdade,a.prc_servico1 as preco,round(b.qtdade*a.prc_servico1,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'S' as tipo,a.id_servico2 as id ,b.qtdade,a.prc_servico2 as preco,round(b.qtdade*a.prc_servico2,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'S' as tipo,a.id_servico3 as id ,b.qtdade,a.prc_servico3 as preco,round(b.qtdade*a.prc_servico3,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo1 as id ,round(a.qtd_insumo1*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo1 as preco,round(a.qtd_insumo1*b.qtdade/a.qtdade*a.prc_insumo1,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo2 as id ,round(a.qtd_insumo2*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo2 as preco,round(a.qtd_insumo2*b.qtdade/a.qtdade*a.prc_insumo2,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo3 as id ,round(a.qtd_insumo3*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo3 as preco,round(a.qtd_insumo3*b.qtdade/a.qtdade*a.prc_insumo3,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo4 as id ,round(a.qtd_insumo4*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo4 as preco,round(a.qtd_insumo4*b.qtdade/a.qtdade*a.prc_insumo4,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp)
UNION ALL
SELECT b.num_ovocla,b.id_ovoexp,'I' as tipo,a.id_insumo5 as id ,round(a.qtd_insumo5*b.qtdade/a.qtdade,3) as qtdade,a.prc_insumo5 as preco,round(a.qtd_insumo5*b.qtdade/a.qtdade*a.prc_insumo5,2) as total,c.id_cliente,c.data AS dt_expedicao,a.id_empresa FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovoexpd B on (a.numero=b.num_ovocla AND a.id_empresa=b.id_empresa)
  LEFT OUTER JOIN gerente.ovoexp C on (b.id_ovoexp=c.id_ovoexp);
--RUN--

--SEQ 0061--
CREATE TEMP TABLE tmp_estoque AS
SELECT id_empresa,id_estlocal,id_produto,
  sum(CASE WHEN tipo='E' THEN (valor+vl_ajuste) ELSE -(valor+vl_ajuste) END) as valor
  FROM gerente.estmovto
  GROUP BY id_empresa,id_estlocal,id_produto;

UPDATE gerente.estsaldo 
  SET valor=(SELECT valor FROM tmp_estoque WHERE id_empresa =gerente.estsaldo.id_empresa 
                                             AND id_estlocal=gerente.estsaldo.id_estlocal
                                             AND id_produto =gerente.estsaldo.id_produto)
  WHERE NOT valor=0;

DROP TABLE tmp_estoque;
--RUN--

--SEQ 0062--
ALTER TABLE gerente.clientes ADD CONSTRAINT chk_clientes_id CHECK (id_cliente>0 and id_cliente<999999);
--RUN--

--SEQ 0063--
ALTER TABLE gerente.cfiscal ADD COLUMN cond_pagamento character(2);
ALTER TABLE gerente.cfiscal ADD COLUMN forma_pagamento character(2);
ALTER TABLE gerente.cfiscal ADD COLUMN vl_recebido numeric(12, 2);
--RUN--

--SEQ 0064--
ALTER TABLE gerente.ctr ADD COLUMN dt_baixa date;
ALTER TABLE gerente.pedidos ADD COLUMN dt_baixa_ctr date;
--RUN--

--SEQ 0065--
CREATE TABLE gerente.colaborador
(
  id_colaborador serial NOT NULL,
  id_empresa integer NOT NULL,
  codigo integer NOT NULL,
  nome character(60) NOT NULL,
  endereco character(60),
  bairro character(40),
  cep character(9),
  id_municipio integer,
  telefone_ddd character(3),
  telefone character(25),
  cpf character(14),
  numero_rg character(20),
  orgex_rg character(5),
  uf_rg character(2),
  dtemi_rg date,
  salario numeric(12,2) NOT NULL,
  encargos numeric(12,2) NOT NULL,
  outros numeric(12,2) NOT NULL,
  id_setor integer,
  numero_ctps integer,
  serie_ctps integer,
  uf_ctps character(2),
  dt_cadastro date NOT NULL,
  dt_baixa date,
  login character(12),
  CONSTRAINT pk_colaborador PRIMARY KEY (id_colaborador),
  CONSTRAINT fk_colaborador_empresa FOREIGN KEY (id_empresa) REFERENCES gerente.empresas (id_empresa),
  CONSTRAINT fk_colaborador_municipio FOREIGN KEY (id_municipio) REFERENCES gerente.municipio (id_municipio),
  CONSTRAINT key_colaborador_codigo UNIQUE (id_empresa,codigo),
  CONSTRAINT key_colaborador_login UNIQUE (id_empresa,login),
  CONSTRAINT key_colaborador_cpf UNIQUE (cpf)
); 
--RUN--

--SEQ 0066--
INSERT INTO gerente.colaborador(id_colaborador, id_empresa,codigo,nome,salario,encargos,outros,dt_cadastro)
            (select id_auxiliar,id_empresa,codigo,descricao,0,0,0,now() from gerente.auxiliar where tipo='COL');

select setval('gerente.colaborador_id_colaborador_seq',(select max(id_colaborador)+1 from gerente.colaborador))
--RUN--

--SEQ 0067--
ALTER TABLE gerente.peditens ADD COLUMN variante character(20);
--RUN--

--SEQ 0068--
CREATE OR REPLACE VIEW gerente.vmovto_estoque_ovos AS
SELECT id_empresa,id_cliente, id_produto, data, 'R'::char as origem, numero,'E'::char as tipo , qtdade, unidade
  FROM gerente.ovorec A
  LEFT OUTER JOIN gerente.ovorecd B ON (a.id_ovorec=b.id_ovorec)
UNION ALL
SELECT a.id_empresa,b.id_cliente, a.id_produto, a.data, 'C'::char as origem, a.numero, 'E'::char as tipo, a.qtdade, '***'::char(3) as unidade 
  FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovorec B on (A.id_empresa=B.id_empresa AND a.numero_recepcao=b.numero)
UNION ALL
SELECT a.id_empresa,b.id_cliente, a.id_insumo1 as id_produto, a.data, 'C'::char as origem, a.numero, 'S'::char as tipo, a.qtd_insumo1 as qtdade, '***'::char(3) as unidade 
  FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovorec B on (A.id_empresa=B.id_empresa AND a.numero_recepcao=b.numero)
  WHERE a.qtd_insumo1>0
UNION ALL
SELECT a.id_empresa,b.id_cliente, a.id_insumo2 as id_produto, a.data, 'C'::char as origem, a.numero, 'S'::char as tipo, a.qtd_insumo2 as qtdade, '***'::char(3) as unidade 
  FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovorec B on (A.id_empresa=B.id_empresa AND a.numero_recepcao=b.numero)
  WHERE a.qtd_insumo2>0
UNION ALL
SELECT a.id_empresa,b.id_cliente, a.id_insumo3 as id_produto, a.data, 'C'::char as origem, a.numero, 'S'::char as tipo, a.qtd_insumo3 as qtdade, '***'::char(3) as unidade 
  FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovorec B on (A.id_empresa=B.id_empresa AND a.numero_recepcao=b.numero)
  WHERE a.qtd_insumo3>0
UNION ALL
SELECT a.id_empresa,b.id_cliente, a.id_insumo4 as id_produto, a.data, 'C'::char as origem, a.numero, 'S'::char as tipo, a.qtd_insumo4 as qtdade, '***'::char(3) as unidade 
  FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovorec B on (A.id_empresa=B.id_empresa AND a.numero_recepcao=b.numero)
  WHERE a.qtd_insumo4>0
UNION ALL
SELECT a.id_empresa,b.id_cliente, a.id_insumo5 as id_produto, a.data, 'C'::char as origem, a.numero, 'S'::char as tipo, a.qtd_insumo5 as qtdade, '***'::char(3) as unidade 
  FROM gerente.ovocla A
  LEFT OUTER JOIN gerente.ovorec B on (A.id_empresa=B.id_empresa AND a.numero_recepcao=b.numero)
  WHERE a.qtd_insumo5>0
UNION ALL
SELECT A.id_empresa,id_cliente, id_produto, data, 'E'::char as origem, numero, 'S'::char as tipo, qtdade, unidade
  FROM gerente.ovoexp A
  LEFT OUTER JOIN gerente.ovoexpd B ON (a.id_ovoexp=b.id_ovoexp)
  WHERE b.origem='C';
--RUN--

--SEQ 0069--
CREATE OR REPLACE VIEW gerente.vlucro_class_ovos AS
SELECT a.id_empresa, b.id_cliente, a.id_insumo1 AS id_produto, a.data, a.numero, a.qtd_insumo1 AS qtdade,a.qtd_insumo1*a.prc_insumo1 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gerente.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=1) 
  WHERE a.qtd_insumo1 >0
UNION ALL
SELECT a.id_empresa, b.id_cliente, a.id_insumo2 AS id_produto, a.data, a.numero, a.qtd_insumo2 AS qtdade,a.qtd_insumo2*a.prc_insumo2 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gerente.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=2) 
  WHERE a.qtd_insumo2 >0
UNION ALL
SELECT a.id_empresa, b.id_cliente, a.id_insumo3 AS id_produto, a.data, a.numero, a.qtd_insumo3 AS qtdade,a.qtd_insumo3*a.prc_insumo3 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gerente.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=3) 
  WHERE a.qtd_insumo3 >0
UNION ALL
SELECT a.id_empresa, b.id_cliente, a.id_insumo4 AS id_produto, a.data, a.numero, a.qtd_insumo4 AS qtdade,a.qtd_insumo4*a.prc_insumo4 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gerente.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=4) 
  WHERE a.qtd_insumo4 >0
UNION ALL
SELECT a.id_empresa, b.id_cliente, a.id_insumo5 AS id_produto, a.data, a.numero, a.qtd_insumo5 AS qtdade,a.qtd_insumo5*a.prc_insumo5 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gerente.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=5) 
  WHERE a.qtd_insumo5 >0;
--RUN--

--SEQ 0070--
ALTER TABLE gerente.producao ADD COLUMN qtd_nao_conforme numeric(12,4);
update gerente.producao set qtd_nao_conforme=0;
ALTER TABLE gerente.producao ALTER COLUMN qtd_nao_conforme SET NOT NULL;
--RUN--

--SEQ 0071--
/*
      EM CASO DE ERRO:  tipo "tsvector" não existe  
      TEM QUE INSTALAR O TSEARCH2
      NO LINUX  : psql -U postgres *BANCO* < /usr/share/pgsql/contrib/tsearch2.sql
      NO WINDOWS: abrir e executar do pgadmin: $PATH POSTGESQL$\8.2\share\contrib\tsearch2.sql
*/
ALTER TABLE gerente.clientes ADD COLUMN idxFTI tsvector;
UPDATE pg_ts_cfg SET LOCALE=(SELECT setting FROM pg_settings WHERE name='lc_ctype') WHERE ts_name='default';
UPDATE gerente.clientes SET idxFTI=to_tsvector(razao);
CREATE INDEX key_clientes_idxFTI ON gerente.clientes USING gist(idxFTI);
CREATE TRIGGER tsvectorupdate BEFORE UPDATE OR INSERT ON gerente.clientes
            FOR EACH ROW EXECUTE PROCEDURE tsearch2(idxFTI, razao);
--RUN--

--SEQ 0072--
CREATE TABLE gerente.consproduto
(
   id_empresa integer NOT NULL, 
   id_produto integer NOT NULL, 
   codigo_barras character(13) NOT NULL, 
   referencia character(20) NOT NULL, 
   nome character(40) NOT NULL, 
   utilizacao character varying(255) NOT NULL, 
   id_grupo integer NOT NULL, 
   id_subgrupo integer NOT NULL, 
   categoria integer NOT NULL, 
   ativo integer NOT NULL,
   CONSTRAINT pk_consproduto PRIMARY KEY (id_empresa,id_produto)
); 

ALTER TABLE gerente.consproduto ADD COLUMN idxFTI tsvector;
UPDATE gerente.consproduto SET idxFTI=to_tsvector('default',nome || ' ' || utilizacao || ' ' || referencia);
CREATE INDEX key_consproduto_idxFTI ON gerente.consproduto USING gist(idxFTI);
CREATE TRIGGER tsvectorupdate BEFORE UPDATE OR INSERT ON gerente.consproduto
            FOR EACH ROW EXECUTE PROCEDURE tsearch2(idxFTI, nome, utilizacao,referencia);

--RUN--

--SEQ 0073--
INSERT INTO gestao.empresa  (id_empresa, nome, razao_social, endereco, numero, bairro, id_municipio, 
       cnpj, inscr_estadual, inscr_municipal, telefone, fax, dt_bloq_estoque, 
       taxa_juros, fc_juros,estado,serie_nf,numero_nf,arq_mod_nf,integrado_siscon) 
SELECT id_empresa, nome, razao_social, endereco, numero, bairro, id_municipio, 
       cnpj, inscr_estadual, inscr_municipal, telefone, fax, dt_bloq_estoque, 
       taxa_juros, fc_juros,'SC','',0,'','' FROM gerente.empresas;
--RUN--

--SEQ 0074--
ALTER TABLE gerente.classfiscal ALTER descricao TYPE character(450);
--RUN--

--SEQ 0075--
ALTER TABLE gerente.consproduto ADD COLUMN vl_preco1 numeric(12, 3);
--RUN--

--SEQ 0076--
-- COPIA O CONTEÚDO DE gerente.empresas PARA gestao.empresa;
INSERT INTO gestao.empresa (id_empresa,nome,razao_social,endereco,numero,bairro,id_municipio,estado,cnpj,inscr_estadual,inscr_municipal,telefone,fax,email,nome_contato,
dt_bloq_estoque,taxa_juros, fc_juros,serie_nf,numero_nf,arq_mod_nf,serie_gta,id_portador_padrao,integrado_siscon)
(select id_empresa, nome, razao_social, endereco, numero, bairro, id_municipio, '  ', cnpj, inscr_estadual, 
 inscr_municipal, telefone, fax, '', '', dt_bloq_estoque, taxa_juros, fc_juros, 1, 1, '', NULL, NULL, 0
 from gerente.empresas as a where a.id_empresa not in(select id_empresa from gestao.empresa));
--RUN--

--SEQ 0077--
-- APAGA FK RELACIONADAS COM A TABELA gerente.empresas;
ALTER TABLE gerente.acessorio DROP CONSTRAINT fk_acessorio_empresa;
ALTER TABLE gerente.atualped DROP CONSTRAINT fk_atualped_empresa;
ALTER TABLE gerente.auxiliar DROP CONSTRAINT fk_auxiliar_empresa;
ALTER TABLE gerente.cfgcadastro DROP CONSTRAINT fk_cfgcadastro_empresa;
ALTER TABLE gerente.cfiscal DROP CONSTRAINT fk_cfiscal_empresa;
ALTER TABLE gerente.cheques DROP CONSTRAINT fk_cheques_empresa;
ALTER TABLE gerente.colaborador DROP CONSTRAINT fk_colaborador_empresa;
ALTER TABLE gerente.contratoad DROP CONSTRAINT fk_contratoad_empresa;
ALTER TABLE gerente.ctr DROP CONSTRAINT fk_ctr_empresa;
ALTER TABLE gerente.entrares DROP CONSTRAINT fk_entrares_empresa;
ALTER TABLE gerente.estinventario DROP CONSTRAINT fk_estoque_empresa;
ALTER TABLE gerente.estmovto DROP CONSTRAINT fk_estmovto_empresa;
ALTER TABLE gerente.estsaldo DROP CONSTRAINT fk_estsaldo_empresa;
ALTER TABLE gerente.imobilizado DROP CONSTRAINT fk_imobilizado_empresa;
ALTER TABLE gerente.maqecf DROP CONSTRAINT fk_maqecf_empresa;
ALTER TABLE gerente.nfimp DROP CONSTRAINT fk_nfimp_empresa;
ALTER TABLE gerente.osmo DROP CONSTRAINT fk_osmo_empresa;
ALTER TABLE gerente.osreq DROP CONSTRAINT fk_osreq_empresa;
ALTER TABLE gerente.ovocla DROP CONSTRAINT fk_ovocla_empresa;
ALTER TABLE gerente.ovoexp DROP CONSTRAINT fk_ovoexp_empresa;
ALTER TABLE gerente.ovoexpd DROP CONSTRAINT fk_ovoexpd_empresa;
ALTER TABLE gerente.ovorec DROP CONSTRAINT fk_ovorec_empresa;
ALTER TABLE gerente.pcpcargas DROP CONSTRAINT fk_pcpcargas_empresa;
ALTER TABLE gerente.pcphorario DROP CONSTRAINT fk_horario_empresa;
ALTER TABLE gerente.pcpinsoc DROP CONSTRAINT fk_pcpinsoc_empresa;
ALTER TABLE gerente.pcpinsprod DROP CONSTRAINT fk_pcpinsprod_empresa;
ALTER TABLE gerente.pcprecursos DROP CONSTRAINT fk_recurso_empresa;
ALTER TABLE gerente.pedidos DROP CONSTRAINT fk_pedidos_empresa;
ALTER TABLE gerente.producao DROP CONSTRAINT fk_producao_empresa;
ALTER TABLE gerente.recbtos DROP CONSTRAINT fk_recbtos_empresa;
ALTER TABLE gerente.reg60m DROP CONSTRAINT fk_reg60m_empresa;

-- CRIA FK RELACIONADAS COM A TABELA gestao.empresa;
ALTER TABLE gerente.acessorio
  ADD CONSTRAINT fk_acessorio_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa (id_empresa);
      
ALTER TABLE gerente.atualped
  ADD CONSTRAINT fk_atualped_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.auxiliar
  ADD CONSTRAINT fk_auxiliar_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.cfgcadastro
  ADD CONSTRAINT fk_cfgcadastro_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.cfiscal
  ADD CONSTRAINT fk_cfiscal_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.cheques
  ADD CONSTRAINT fk_cheques_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.colaborador
  ADD CONSTRAINT fk_colaborador_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.contratoad
  ADD CONSTRAINT fk_contratoad_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.ctr
  ADD CONSTRAINT fk_ctr_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.entrares
  ADD CONSTRAINT fk_entrares_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.estinventario
  ADD CONSTRAINT fk_estoque_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.estmovto
  ADD CONSTRAINT fk_estmovto_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.estsaldo
  ADD CONSTRAINT fk_estsaldo_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.imobilizado
  ADD CONSTRAINT fk_imobilizado_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.maqecf
  ADD CONSTRAINT fk_maqecf_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.nfimp
  ADD CONSTRAINT fk_nfimp_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.osmo
  ADD CONSTRAINT fk_osmo_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.osreq
  ADD CONSTRAINT fk_osreq_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.ovocla
  ADD CONSTRAINT fk_ovocla_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.ovoexp
  ADD CONSTRAINT fk_ovoexp_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.ovoexpd
  ADD CONSTRAINT fk_ovoexpd_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.ovorec
  ADD CONSTRAINT fk_ovorec_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.pcpcargas
  ADD CONSTRAINT fk_pcpcargas_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.pcphorario
  ADD CONSTRAINT fk_horario_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);
      
ALTER TABLE gerente.pcpinsoc
  ADD CONSTRAINT fk_pcpinsoc_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.pcpinsprod
  ADD CONSTRAINT fk_pcpinsprod_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.pcprecursos
  ADD CONSTRAINT fk_recurso_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.pedidos
  ADD CONSTRAINT fk_pedidos_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.producao
  ADD CONSTRAINT fk_producao_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.recbtos
  ADD CONSTRAINT fk_recbtos_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);

ALTER TABLE gerente.reg60m
  ADD CONSTRAINT fk_reg60m_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa(id_empresa);
      
ALTER TABLE gerente.empresas RENAME TO ZZempresas;
--RUN--

--SEQ 0078--
ALTER TABLE gerente.colaborador ADD COLUMN venda_lib int2;
--RUN--

--SEQ 0080--
ALTER TABLE gerente.consproduto ADD COLUMN id_st integer;
--RUN--

--SEQ 0081--
ALTER TABLE gerente.pedidos ADD COLUMN vl_icmsst numeric(12, 2);

ALTER TABLE gerente.peditens ADD COLUMN bc_icms numeric(12, 2);
ALTER TABLE gerente.peditens ADD COLUMN aliq_icms numeric(5, 2);
ALTER TABLE gerente.peditens ADD COLUMN vl_icms numeric(12, 2);

ALTER TABLE gerente.peditens ADD COLUMN bc_icmsst numeric(12, 2);
ALTER TABLE gerente.peditens ADD COLUMN aliq_icmsst numeric(5, 2);
ALTER TABLE gerente.peditens ADD COLUMN vl_icmsst numeric(12, 2);
--RUN--

--SEQ 0082--
ALTER TABLE gestao.estruturad DROP CONSTRAINT key_estruturad_produto;
ALTER TABLE gestao.estruturad
  ADD CONSTRAINT key_estruturad_produto UNIQUE (id_estrutura, id_produto, med_compr, med_larg, med_espe, grupo)
--RUN--

--SEQ 0083--
CREATE INDEX key_ctr_situacao ON gerente.ctr (situacao,id_empresa,deved);
CREATE INDEX key_pedidos_data ON gerente.pedidos (data,id_empresa,clien);
--RUN--

--SEQ 0084--
ALTER TABLE gerente.pedidos ADD COLUMN id_st_frete int;

ALTER TABLE gerente.pedidos ADD COLUMN bc_icms_frete numeric(12, 2);
ALTER TABLE gerente.pedidos ADD COLUMN aliq_icms_frete numeric(5, 2);
ALTER TABLE gerente.pedidos ADD COLUMN vl_icms_frete numeric(12, 2);

ALTER TABLE gerente.pedidos ADD COLUMN bc_icmsst_frete numeric(12, 2);
ALTER TABLE gerente.pedidos ADD COLUMN aliq_icmsst_frete numeric(5, 2);
ALTER TABLE gerente.pedidos ADD COLUMN vl_icmsst_frete numeric(12, 2);
--RUN--

--SEQ 0085--
ALTER TABLE gestao.op
  ADD CONSTRAINT fk_op_cliente FOREIGN KEY (id_cliente)
      REFERENCES gerente.clientes (id_cliente);
--RUN--

--SEQ 0086--
ALTER TABLE gestao.empresa ADD COLUMN gs1_prefixo_empresa character(9);
ALTER TABLE gestao.empresa ADD COLUMN gs1_unidade_fabril smallint;
ALTER TABLE gestao.empresa ADD COLUMN gs1_sequencial_sscc numeric(7);
--RUN--

--SEQ 0088--
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_forma;
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbto_forma CHECK (forma = 1 OR forma = 2 OR forma = 3 OR forma = 4 OR forma = 5 OR forma = 6 OR forma = 7 OR forma = 8 OR forma = 9);
--RUN--

--SEQ 0089--
ALTER TABLE gerente.recbtos ADD COLUMN vl_desconto numeric(12, 2);
ALTER TABLE gerente.recbtos DISABLE TRIGGER atual_vlrecebido_ctr;
UPDATE gerente.recbtos SET vl_desconto=0;
ALTER TABLE gerente.recbtos ENABLE TRIGGER atual_vlrecebido_ctr;
ALTER TABLE gerente.recbtos ALTER COLUMN vl_desconto SET NOT NULL;
ALTER TABLE gerente.peditens ADD COLUMN vl_desconto numeric(12, 2);
ALTER TABLE gerente.peditens ADD COLUMN vl_acrescimo numeric(12, 2);
--RUN--

--SEQ 0090--
ALTER TABLE gerente.recbtos DISABLE TRIGGER atual_vlrecebido_ctr;
INSERT INTO gerente.recbtos (id_ctr,data,vl_desconto,obs,forma,data_credito,valor,docto,tarifa,bom,origem,id_natureza,rec_emitido,id_empresa,id_cliente)
  SELECT a.id_ctr,(SELECT max(data) FROM gerente.recbtos c WHERE a.id_ctr=c.id_ctr),desco,'GERADO PELO SISTEMA EM '||TO_CHAR(NOW(),'DD/MM/YYYY'),
    1,(SELECT max(data) FROM gerente.recbtos c WHERE a.id_ctr=c.id_ctr),0,0,0,(SELECT max(data) FROM gerente.recbtos c WHERE a.id_ctr=c.id_ctr),
    'C',0,1,a.id_empresa,a.deved
    FROM gerente.ctr a
    WHERE desco>0 AND NOT desco = (SELECT sum(vl_desconto) FROM gerente.recbtos b WHERE a.id_ctr=b.id_ctr);

INSERT INTO gerente.recbtos (id_ctr,data,vl_desconto,obs,forma,data_credito,valor,docto,tarifa,bom,origem,id_natureza,rec_emitido,id_empresa,id_cliente)
  SELECT a.id_ctr,a.vecto,desco,'GERADO PELO SISTEMA EM '||TO_CHAR(NOW(),'DD/MM/YYYY'),
    1,a.vecto,0,0,0,a.vecto,'C',0,1,a.id_empresa,a.deved
    FROM gerente.ctr a
    WHERE desco>0 AND (SELECT sum(vl_desconto) FROM gerente.recbtos b WHERE a.id_ctr=b.id_ctr) IS NULL;
ALTER TABLE gerente.recbtos ENABLE TRIGGER atual_vlrecebido_ctr;
--RUN--

--SEQ 0091--
ALTER TABLE gerente.peditens ALTER total TYPE numeric(12, 2);
--RUN--

--SEQ 0092--
UPDATE pg_ts_cfg SET LOCALE=(SELECT setting FROM pg_settings WHERE name='lc_ctype') WHERE ts_name='default';
--RUN--

--SEQ 0093--
ALTER TABLE gerente.peditens DROP CONSTRAINT key_peditens_produto;
ALTER TABLE gerente.peditens
  ADD CONSTRAINT key_peditens_produto UNIQUE(produ, obs, id_pedido, num_pedido_vinc);
--RUN--

--SEQ 0094--
ALTER TABLE gerente.ctr DISABLE TRIGGER atual_dt_baixa_ctr_pedido1;
ALTER TABLE gerente.ctr DISABLE TRIGGER atual_saldo_ctr;
UPDATE gerente.ctr SET dt_baixa=(SELECT max(data) FROM gerente.recbtos WHERE id_ctr=gerente.ctr.id_ctr) WHERE situacao='Q' AND dt_baixa IS NULL;
ALTER TABLE gerente.ctr ADD CONSTRAINT chk_ctr_dt_baixa CHECK ((situacao='Q' AND dt_baixa IS NOT NULL) or (NOT situacao='Q' AND dt_baixa IS NULL));
ALTER TABLE gerente.ctr ENABLE TRIGGER atual_saldo_ctr;
ALTER TABLE gerente.ctr ENABLE TRIGGER atual_dt_baixa_ctr_pedido1;
--RUN--

--SEQ 0095--
ALTER TABLE gerente.producao ADD COLUMN numero_avelote integer;
ALTER TABLE gerente.producao ADD CONSTRAINT fk_producao_avelote FOREIGN KEY (id_empresa,numero_avelote)
      REFERENCES gestao.avelote (id_empresa,numero);
--RUN--

--SEQ 0096--
CREATE TABLE gerente.servico (
  id_servico SERIAL NOT NULL ,
  id_empresa INT NOT NULL ,
  origem CHAR(1) NOT NULL ,
  id_os INT NULL ,
  id_pedido INT NULL ,
  ordem INT NOT NULL ,
  cod_servico INT NULL ,
  descricao CHAR(120) NOT NULL ,
  qtdade DECIMAL(12,4) NOT NULL ,
  vl_unitario DECIMAL(16,4) NOT NULL ,
  vl_total DECIMAL(15,2) NOT NULL ,
  id_tes INT NULL ,
  id_st INT NULL ,
  bc_issqn DECIMAL(15,2) NOT NULL ,
  aliq_issqn DECIMAL(5,2) NOT NULL ,
  vl_issqn DECIMAL(15,2) NOT NULL ,
  id_munoco_issqn INT NULL ,
  cod_class_servico INT NULL ,
  id_colaborador INT NULL ,
  hr_inicial TIME NULL ,
  hr_final TIME NULL ,
  vl_custo DECIMAL(12,2) NOT NULL,
  tx_comissao DECIMAL(5,2) NOT NULL,
  CONSTRAINT pk_servico PRIMARY KEY (id_servico),
  CONSTRAINT fk_servico_empresa FOREIGN KEY (id_empresa) REFERENCES gestao.empresa (id_empresa),
  CONSTRAINT fk_servico_pedido FOREIGN KEY (id_pedido) REFERENCES gerente.pedidos (id_pedido),
  CONSTRAINT fk_servico_tes FOREIGN KEY (id_tes) REFERENCES gerente.tes (id_tes),
  CONSTRAINT fk_servico_municipio FOREIGN KEY (id_munoco_issqn) REFERENCES gerente.municipio (id_municipio),
  CONSTRAINT key_servico_os UNIQUE (id_os,ordem),
  CONSTRAINT key_servico_pedido UNIQUE (id_pedido,ordem),
  CONSTRAINT chk_servico_origem CHECK ((origem='O' AND id_os IS NOT NULL) OR (origem='P' AND id_pedido IS NOT NULL))
);
--RUN--

--SEQ 0097--
INSERT INTO gerente.servico (descricao,vl_total,aliq_issqn,id_tes,id_empresa,origem,ordem,qtdade,vl_unitario,bc_issqn,vl_issqn,vl_custo,tx_comissao,id_pedido )
  SELECT CASE WHEN serv_descr IS NULL THEN ' ' ELSE substring(serv_descr FROM 1 FOR 120) END,serv_valor,serv_taxa_iss,NULL,id_empresa,'P',1,1,serv_valor,serv_valor,serv_vl_iss,0,0,id_pedido FROM gerente.pedidos WHERE serv_valor>0;
--RUN--

--SEQ 0098--
ALTER TABLE gerente.pedidos RENAME serv_descr  TO det_servicos;
ALTER TABLE gerente.pedidos RENAME serv_valor  TO tot_servicos;
ALTER TABLE gerente.pedidos RENAME serv_vl_iss TO tot_issqn;
ALTER TABLE gerente.pedidos DROP COLUMN serv_taxa_iss;
--RUN--

--SEQ 0099--
CREATE OR REPLACE VIEW gerente.vlista_atividade AS 
SELECT ramo_ativ AS atividade FROM GERENTE.CLIENTES
  UNION
SELECT princ_produ1 FROM GERENTE.CLIENTES
  UNION
SELECT princ_produ2 FROM GERENTE.CLIENTES
  UNION
SELECT princ_produ3 FROM GERENTE.CLIENTES;
--RUN--

--SEQ 0100--
CREATE INDEX key_consproduto_subgrupo ON gerente.consproduto (id_empresa, id_subgrupo);
--RUN--

--SEQ 0101--
ALTER TABLE gerente.ctr ALTER numero TYPE character(15);
ALTER TABLE gerente.ctr ALTER docto  TYPE character(15);
--RUN--

--SEQ 0102--
ALTER TABLE gerente.pedidos ADD COLUMN quantidade_redespacho numeric(12,2);
ALTER TABLE gerente.pedidos ADD COLUMN valor_unitario_redespacho numeric(12,2);
ALTER TABLE gerente.pedidos ADD COLUMN valor_total_redespacho numeric(12,2);
--RUN--

--SEQ 0103--
ALTER TABLE gerente.clientes ADD COLUMN id_transportador integer;
ALTER TABLE gerente.clientes ADD COLUMN id_redespacho integer;
ALTER TABLE gerente.clientes ADD COLUMN redespacho_frete smallint;
--RUN--

--SEQ 0104--
ALTER TABLE gerente.pedidos ADD COLUMN tipo_calculo_redespacho char(1);
ALTER TABLE gerente.pedidos ADD CONSTRAINT chk_tipo_calculo_redespacho CHECK (tipo_calculo_redespacho = 'P' OR tipo_calculo_redespacho = 'V' OR tipo_calculo_redespacho = 'O');
--RUN--

--SEQ 0105--
CREATE INDEX key_clientes_ativ1 ON gerente.clientes (ramo_ativ);
CREATE INDEX key_clientes_ativ2 ON gerente.clientes (princ_produ1);
CREATE INDEX key_clientes_ativ3 ON gerente.clientes (princ_produ2);
CREATE INDEX key_clientes_ativ4 ON gerente.clientes (princ_produ3);

CREATE OR REPLACE VIEW gerente.vlista_atividade AS 
SELECT DISTINCT clientes.ramo_ativ AS atividade
   FROM gerente.clientes
UNION 
 SELECT DISTINCT clientes.princ_produ1 AS atividade
   FROM gerente.clientes
UNION 
 SELECT DISTINCT clientes.princ_produ2 AS atividade
   FROM gerente.clientes
UNION 
 SELECT DISTINCT clientes.princ_produ3 AS atividade
   FROM gerente.clientes;
--RUN--

--SEQ 0106--
ALTER TABLE gerente.pedidos ADD COLUMN id_supervisor integer;
ALTER TABLE gerente.pedidos ADD COLUMN taxa_com_super numeric(5,2);
ALTER TABLE gerente.pedidos ADD COLUMN forma_pag_com_super char(1);
ALTER TABLE gerente.pedidos
  ADD CONSTRAINT chk_pedidos_forma_pag_super
  CHECK ((forma_pag_com_super IS NOT NULL AND forma_pag_com_super IN ('F','R')) OR (taxa_com_super=0 OR taxa_com_super IS NULL) );
--RUN--

--SEQ 0107--
CREATE OR REPLACE VIEW gerente.vcomissao_supervisor AS
SELECT a.id_empresa,a.id_supervisor,a.vende as id_vendedor,'FAT'::char(3) as origem,a.numero::CHAR(15),a.tipo,a.dtemi as data,a.clien,b.razao,(a.totpr-a.descv) as base,a.taxa_com_super,((a.totpr-a.descv)/100*a.taxa_com_super)::numeric(12,2) as vl_comissao 
  FROM gerente.pedidos A
  LEFT OUTER JOIN gerente.clientes B on (a.CLIEN=b.id_cliente)
  WHERE forma_pag_com_super='F' AND a.situa=3 AND a.tipo IN ('N','D')
UNION ALL
SELECT a.id_empresa,b.id_supervisor,a.vende as id_vendedor,'REC'::char(3) as origem,a.numero,b.tipo,a.dt_baixa as data,a.deved,c.razao,
  CASE WHEN COALESCE((SELECT SUM(d.valor) FROM gerente.recbtos D WHERE d.id_ctr=A.id_ctr AND d.forma NOT IN (4,6,8,9)),0)<a.valor THEN
    (a.base_comissao/a.valor*(SELECT SUM(d.valor) FROM gerente.recbtos D WHERE d.id_ctr=A.id_ctr AND d.forma NOT IN (4,6,8,9)))::numeric(12,2)
  ELSE
    a.base_comissao
  END as base
  ,b.taxa_com_super,
  CASE WHEN COALESCE((SELECT SUM(d.valor) FROM gerente.recbtos D WHERE d.id_ctr=A.id_ctr AND d.forma NOT IN (4,6,8,9)),0)<a.valor THEN
    (a.base_comissao/a.valor*(SELECT SUM(d.valor) FROM gerente.recbtos D WHERE d.id_ctr=A.id_ctr AND d.forma NOT IN (4,6,8,9))/100*b.taxa_com_super)::numeric(12,2)
  ELSE
    (a.base_comissao/100*b.taxa_com_super)::numeric(12,2)
  END as vl_comissao
  FROM gerente.ctr A
  LEFT OUTER JOIN gerente.pedidos B on (a.id_pedido=b.id_pedido)
  LEFT OUTER JOIN gerente.clientes C on (a.deved=c.id_cliente)
  WHERE B.forma_pag_com_super='R' AND a.situacao='Q';
--RUN--

--SEQ 0108--
ALTER TABLE gerente.pedidos DROP CONSTRAINT chk_tipo_calculo_redespacho;

ALTER TABLE gerente.pedidos ADD CONSTRAINT chk_tipo_calculo_redespacho 
CHECK ((redesp IS NOT NULL AND tipo_calculo_redespacho IN ('P','V','O')) OR (redesp = 0 OR redesp IS NULL));
--RUN--

--SEQ 0109--
ALTER TABLE gerente.osreq ADD COLUMN situacao_os smallint;
--RUN--

--SEQ 0110--
ALTER TABLE gerente.servico ADD COLUMN tp_cobranca char(1);
ALTER TABLE gerente.servico ADD COLUMN qtd_horas NUMERIC(6,2);
UPDATE gerente.servico SET tp_cobranca='H',qtd_horas=0;
ALTER TABLE gerente.servico ALTER COLUMN tp_cobranca SET NOT NULL;
ALTER TABLE gerente.servico ALTER COLUMN qtd_horas SET NOT NULL;
--RUN--

--SEQ 0111--
CREATE OR REPLACE VIEW gerente.vcomissao_supervisor AS
SELECT a.id_empresa,a.id_supervisor,a.vende as id_vendedor,'FAT'::char(3) as origem,a.numero::CHAR(15),a.tipo,a.dtemi as data,a.clien,b.razao,(a.totpr-a.descv) as base,a.taxa_com_super,((a.totpr-a.descv)/100*a.taxa_com_super)::numeric(12,2) as vl_comissao 
  FROM gerente.pedidos A
  LEFT OUTER JOIN gerente.clientes B on (a.CLIEN=b.id_cliente)
  WHERE forma_pag_com_super='F' AND a.situa=3 AND a.tipo IN ('N','D')
UNION ALL
SELECT a.id_empresa,b.id_supervisor,a.vende as id_vendedor,'REC'::char(3) as origem,a.numero,b.tipo,a.dt_baixa as data,a.deved,c.razao,
  CASE WHEN COALESCE((SELECT SUM(d.valor) FROM gerente.recbtos D WHERE d.id_ctr=A.id_ctr AND d.forma NOT IN (4,6,8,9)),0)<a.valor THEN
    (a.base_comissao/a.valor*(SELECT SUM(d.valor) FROM gerente.recbtos D WHERE d.id_ctr=A.id_ctr AND d.forma NOT IN (4,6,8,9)))::numeric(12,2)
  ELSE
    a.base_comissao
  END as base
  ,b.taxa_com_super,
  CASE WHEN COALESCE((SELECT SUM(d.valor) FROM gerente.recbtos D WHERE d.id_ctr=A.id_ctr AND d.forma NOT IN (4,6,8,9)),0)<a.valor THEN
    (a.base_comissao/a.valor*(SELECT SUM(d.valor) FROM gerente.recbtos D WHERE d.id_ctr=A.id_ctr AND d.forma NOT IN (4,6,8,9))/100*b.taxa_com_super)::numeric(12,2)
  ELSE
    (a.base_comissao/100*b.taxa_com_super)::numeric(12,2)
  END as vl_comissao
  FROM gerente.ctr A
  LEFT OUTER JOIN gerente.pedidos B on (a.id_pedido=b.id_pedido)
  LEFT OUTER JOIN gerente.clientes C on (a.deved=c.id_cliente)
  WHERE B.forma_pag_com_super='R' AND a.situacao='Q';
--RUN--

--SEQ 0112--
ALTER TABLE gerente.ctr ADD COLUMN data_recompra date;
ALTER TABLE gerente.ctr ADD COLUMN sit_desconto character(1);
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_forma;
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbto_forma CHECK (forma in (1,2,3,4,5,6,7,8,9,10));
UPDATE gerente.ctr SET data_desconto=data_desconto WHERE data_desconto IS NOT NULL;
--RUN--

--SEQ 0113--
ALTER TABLE gerente.estmovto ADD COLUMN variante char(30);
ALTER TABLE gerente.estmovto ADD COLUMN validade char(10);

ALTER TABLE gerente.estsaldo ADD COLUMN variante char(30);
ALTER TABLE gerente.estsaldo ADD COLUMN validade char(10);

UPDATE gerente.estmovto SET variante='',validade='';
UPDATE gerente.estsaldo SET variante='',validade='';

ALTER TABLE gerente.estmovto ALTER COLUMN variante SET NOT NULL;
ALTER TABLE gerente.estmovto ALTER COLUMN validade SET NOT NULL;

ALTER TABLE gerente.estsaldo ALTER COLUMN variante SET NOT NULL;
ALTER TABLE gerente.estsaldo ALTER COLUMN validade SET NOT NULL;

ALTER TABLE gerente.estmovto DROP CONSTRAINT fk_estmovto_estsaldo;
ALTER TABLE gerente.estsaldo DROP CONSTRAINT key_estsaldo_empresa;

ALTER TABLE gerente.estsaldo
  ADD CONSTRAINT key_estsaldo_empresa UNIQUE(id_empresa, id_estlocal, id_produto, variante, validade);
ALTER TABLE gerente.estmovto
  ADD CONSTRAINT fk_estmovto_estsaldo FOREIGN KEY (id_empresa, id_estlocal, id_produto, variante, validade)
  REFERENCES gerente.estsaldo (id_empresa, id_estlocal, id_produto, variante, validade);
--RUN--

--SEQ 0114--
ALTER TABLE gerente.producao ADD COLUMN variante character(30);
ALTER TABLE gerente.producao ADD COLUMN validade DATE;

ALTER TABLE gerente.peditens RENAME variante  TO cpo_inutilizado;
ALTER TABLE gerente.peditens RENAME num_serie TO variante;
ALTER TABLE gerente.peditens ADD COLUMN validade DATE;

ALTER TABLE gerente.estinventario ADD COLUMN variante character(30);
ALTER TABLE gerente.estinventario ADD COLUMN validade DATE;
--RUN--

--SEQ 0115--
CREATE OR REPLACE VIEW gerente.vsaldo_estoque AS
select 0 as id_estsaldo,
      id_empresa,
      id_estlocal,
      id_produto,
      sum(qtdade) as qtdade,
      sum(valor) as valot,
      (CASE WHEN sum(qtdade)=0 THEN 0 ELSE sum(valor)/sum(qtdade) END)::numeric(17,4) as custo_medio,
      sum(qtd_empenhada) as qtd_empenhada,
      sum(qtd_pedidos) as qtd_pedidos
  from gerente.estsaldo 
  group by id_empresa,id_estlocal,id_produto;
--RUN--

--SEQ 0116--
ALTER TABLE gerente.pedidos ADD COLUMN custo_frete NUMERIC(12,2);
--RUN--

--SEQ 0117--
ALTER TABLE gerente.estinventario DROP CONSTRAINT key_estoque_data;
ALTER TABLE gerente.estinventario
  ADD CONSTRAINT key_estinventario_data UNIQUE(id_empresa, id_estlocal, id_produto, variante, validade, data);

ALTER TABLE gerente.estinventario DROP CONSTRAINT fk_estoque_estlocal;
ALTER TABLE gerente.estinventario
  ADD CONSTRAINT fk_estinventario_estlocal FOREIGN KEY (id_estlocal)
      REFERENCES gerente.estlocal (id_estlocal);

ALTER TABLE gerente.estinventario DROP CONSTRAINT fk_estoque_empresa;
ALTER TABLE gerente.estinventario
  ADD CONSTRAINT fk_estinventario_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa (id_empresa);
--RUN--

--SEQ 0118--
ALTER TABLE gerente.producao DROP CONSTRAINT chk_producao_tipo;
ALTER TABLE gerente.producao
  ADD CONSTRAINT chk_producao_tipo CHECK (tipo IN(1, 2, 3, 101, 102, 103));

/*
EXECUTAR AS 3 QUERYS ABAIXO NA AVE DE OURO E NA NUTRICOL

UPDATE gerente.producao SET tipo=101
  WHERE tipo=1 AND id_producao IN (
    SELECT id_producao FROM gerente.proddet);

UPDATE gerente.producao SET tipo=102
  WHERE tipo=2 AND id_producao IN (
    SELECT id_producao FROM gerente.proddet);

UPDATE gerente.producao SET tipo=103
  WHERE tipo=3 AND id_producao IN (
    SELECT id_producao FROM gerente.proddet);    
*/
--RUN--

--SEQ 0119--
CREATE OR REPLACE VIEW gerente.vpeditens
  AS
SELECT a.id_pedido,b.id_empresa,b.tipo,b.situa,a.id_st,a.id_tes,c.operacional,b.dtemi,b.clien as id_cliente,a.produ as id_produto,
  CASE WHEN b.tipo='D' THEN -a.qtd ELSE a.qtd END,
  ((CASE WHEN b.tipo='D' THEN -1 ELSE 1 END) * (a.total) * (b.totpr-b.descv+b.acrev) / b.totpr)::numeric(15,2) as total
  FROM gerente.peditens A
  LEFT OUTER JOIN gerente.pedidos B ON (a.id_pedido=b.id_pedido)
  LEFT OUTER JOIN gerente.tes C ON (a.id_tes=c.id_tes)
  WHERE b.tipo IN ('D','N');  
--RUN--

--SEQ 0120--
ALTER TABLE gerente.maqecf ALTER num_serie TYPE character(30);
--RUN--

--SEQ 0121--
ALTER TABLE gerente.peditens DROP CONSTRAINT key_peditens_produto;
CREATE UNIQUE INDEX key_peditens_produto ON gerente.peditens (produ, obs, id_pedido, num_pedido_vinc,COALESCE(variante,''),COALESCE(validade,'1900-01-01'));

ALTER TABLE gerente.estinventario DROP CONSTRAINT key_estinventario_data;
CREATE UNIQUE INDEX key_estinventario_data ON gerente.estinventario (id_empresa, id_estlocal, id_produto,COALESCE(variante,''),COALESCE(validade,'1900-01-01'), data);
--RUN--

--SEQ 0122--
ALTER TABLE gerente.consproduto
   ADD COLUMN bc_icmsst_cobrant numeric(12,2);
ALTER TABLE gerente.consproduto
   ADD COLUMN vl_icmsst_cobrant numeric(12,2);
ALTER TABLE gerente.consproduto
   ADD COLUMN data_icmsst_cobrant date;
ALTER TABLE gerente.consproduto
   ADD COLUMN docto_icmsst_cobrant int4;
--RUN--

--SEQ 0123--
ALTER TABLE gerente.estmovto DROP CONSTRAINT chk_estmovto_qtdade;
ALTER TABLE gerente.estmovto ADD CONSTRAINT chk_estmovto_qtdade CHECK (NOT qtdade=0);
ALTER TABLE gerente.estmovto ADD CONSTRAINT chk_estmovto_vl_ajuste 
  CHECK ((tipo='S' AND vl_ajuste=0) OR (NOT tipo='S'));
--RUN--

--SEQ 0124--
ALTER TABLE gerente.producao ADD COLUMN id_varprod integer;
ALTER TABLE gerente.producao ALTER COLUMN num_op DROP NOT NULL;
--RUN--

--SEQ 0125--
CREATE OR REPLACE VIEW gerente.vmovto_vef AS
SELECT 
    ped.id_pedido,
    ped.id_empresa,
    ped.dtemi as dt_emissao,
    ped.clien as id_cliente,
    ped.vende as id_vendedor,
    pedi.produ as id_produto,    
    CASE WHEN tes.est_poder_terceiro='F' THEN pedi.qtd ELSE -pedi.qtd END AS qtdade,
    pedi.total,    
    pedi.num_pedido_vinc,
    tes.est_poder_terceiro as tipo_movto
  FROM gerente.tes 
  LEFT OUTER JOIN gerente.peditens as pedi ON(pedi.id_tes=tes.id_tes) 
  LEFT OUTER JOIN gerente.pedidos  as ped  ON(ped.id_pedido=pedi.id_pedido) 
  WHERE tes.tce=2 and ped.situa = 3 ;
--RUN--

--SEQ 0126--
ALTER TABLE gerente.servico ADD COLUMN hora_extra smallint;
--RUN--

--SEQ 0127--
-- TRANSFERINDO A TABELA DE MUNICIPIOS PARA SCHEMA "GESTAO"
UPDATE gerente.municipio SET estado='EX' WHERE NOT estado IN (SELECT sigla FROM gestao.estado);
INSERT INTO gestao.municipio (id_municipio, codigo_ibge, codigo_estadual, nome, estado, id_regiao, cst_frete_m3, populacao, codigo_federal)
  SELECT * FROM gerente.municipio;
SELECT setval('gestao.municipio_id_municipio_seq', (SELECT MAX(id_municipio) FROM gestao.municipio), true);  

ALTER TABLE gestao.aveint DROP CONSTRAINT fk_aveint_municipio;
ALTER TABLE gerente.clientes DROP CONSTRAINT fk_clientes_municipio;
ALTER TABLE gerente.colaborador DROP CONSTRAINT fk_colaborador_municipio;
ALTER TABLE gerente.servico DROP CONSTRAINT fk_servico_municipio;

DROP TABLE gerente.municipio;

ALTER TABLE gerente.servico
  ADD CONSTRAINT fk_servico_municipio FOREIGN KEY (id_munoco_issqn)
      REFERENCES gestao.municipio (id_municipio);
ALTER TABLE gerente.colaborador
  ADD CONSTRAINT fk_colaborador_municipio FOREIGN KEY (id_municipio)
      REFERENCES gestao.municipio (id_municipio);
ALTER TABLE gerente.clientes
  ADD CONSTRAINT fk_clientes_municipio FOREIGN KEY (id_municipio)
      REFERENCES gestao.municipio (id_municipio);
--RUN--

--SEQ 0128--
ALTER TABLE gerente.clientes RENAME cod_ativ_ir  TO cnae_fiscal;
ALTER TABLE gerente.clientes ALTER perc_vendas1 TYPE numeric(6,2);
ALTER TABLE gerente.clientes ALTER perc_vendas2 TYPE numeric(6,2);
ALTER TABLE gerente.clientes ALTER perc_vendas3 TYPE numeric(6,2);

ALTER TABLE gerente.clientes ADD COLUMN pessoas_aut_comprar varchar(60);
ALTER TABLE gerente.clientes ADD COLUMN perc_ramo_ativ numeric(6,2);
ALTER TABLE gerente.clientes ADD COLUMN num_endereco varchar(60);
--RUN--

--SEQ 0129--
ALTER TABLE gerente.clientes ADD COLUMN tx_desc_pedido numeric(6,2);
ALTER TABLE gerente.clientes ADD COLUMN tx_desc_fatura numeric(6,2);

ALTER TABLE gerente.pedidos ADD COLUMN tx_desc_fatura numeric(6,2);
ALTER TABLE gerente.pedidos ADD COLUMN vl_desc_fatura numeric(12,2);

ALTER TABLE gerente.pedidos ADD COLUMN bc_ret_prev numeric(12,2);
ALTER TABLE gerente.pedidos ADD COLUMN aliq_ret_prev numeric(6,2);
ALTER TABLE gerente.pedidos ADD COLUMN vl_ret_prev numeric(12,2);
--RUN--

--SEQ 0131--
ALTER TABLE gerente.peditens ADD COLUMN dt_fabricacao date;
--RUN--

--SEQ 0132--
ALTER TABLE gerente.clientes ADD COLUMN e_cnpj VARCHAR(14);
ALTER TABLE gerente.clientes ADD COLUMN e_num_endereco VARCHAR(20);

ALTER TABLE gerente.pedidos ADD COLUMN e_cnpj VARCHAR(14);
ALTER TABLE gerente.pedidos ADD COLUMN e_num_endereco VARCHAR(20);
--RUN--

--SEQ 0133--
ALTER TABLE gestao.empresa RENAME gs1_prefixo_empresa  TO gs1_prefixo_empresaold;
ALTER TABLE gestao.empresa RENAME gs1_unidade_fabril   TO gs1_unidade_fabrilold;
ALTER TABLE gestao.empresa RENAME gs1_sequencial_sscc  TO gs1_sequencial_ssccold;
--RUN--

--SEQ 0134--
UPDATE gestao.empresa 
   SET gs1_prefixo_empresa = gs1_prefixo_empresaold,
       gs1_unidade_fabril  = gs1_unidade_fabrilold,
       gs1_sequencial_sscc = gs1_sequencial_ssccold;

ALTER TABLE gestao.empresa DROP COLUMN gs1_prefixo_empresaold;
ALTER TABLE gestao.empresa DROP COLUMN gs1_unidade_fabrilold;
ALTER TABLE gestao.empresa DROP COLUMN gs1_sequencial_ssccold;       
--RUN--

--SEQ 0135--
select now()
--RUN--

--SEQ 0136--
ALTER TABLE gerente.colaborador ADD COLUMN apelido CHAR(20);
ALTER TABLE gerente.colaborador ADD COLUMN id_prestadora integer;
ALTER TABLE gerente.colaborador ADD COLUMN taxa_desconto numeric(6,2);
ALTER TABLE gerente.colaborador ADD COLUMN taxa_com_prod numeric(5,2);
ALTER TABLE gerente.colaborador ADD COLUMN taxa_com_serv numeric(5,2);
--RUN--

--SEQ 0137--
ALTER TABLE gerente.servico ADD COLUMN data date;
--RUN--

--SEQ 0138--
---------------------------------------------
---- conversao estoque gerente -> gestao ----
---------------------------------------------

ALTER TABLE gestao.estinventario DISABLE TRIGGER gera_estmovto;
ALTER TABLE gestao.estmovto DISABLE TRIGGER atual_estmovto_valor;
ALTER TABLE gestao.estmovto DISABLE TRIGGER atual_estsaldo;
ALTER TABLE gestao.estsaldo DISABLE TRIGGER atual_custo_estoque;


INSERT INTO gestao.estlocal(
            id_estlocal,nome, sit_estoque)
SELECT  id_estlocal,nome, sit_estoque
 FROM gerente.estlocal;

SELECT setval('gestao.estlocal_id_estlocal_seq', (SELECT max(id_estlocal) FROM gestao.estlocal), true);

INSERT INTO gestao.estinventario(
            id_estinventario, id_empresa, data, id_estlocal, id_produto, 
            variante, validade, qtdade, valor, operador)
SELECT  id_estinventario, id_empresa, data, id_estlocal, id_produto, 
       variante, validade, qtdade, valor, operador
  FROM gerente.estinventario;

SELECT setval('gestao.estinventario_id_estinventario_seq', (SELECT MAX(id_estinventario) FROM gestao.estinventario), true);

INSERT INTO gestao.estsaldo(
             id_empresa, id_estlocal, id_produto, variante, validade, 
            qtdade, valor, custo_medio, qtd_empenhada, qtd_pedidos)
SELECT id_empresa, id_estlocal, id_produto, variante, validade, 
       qtdade, valor, custo_medio, qtd_empenhada, qtd_pedidos
  FROM gerente.estsaldo;

INSERT INTO gestao.estmovto(
            id_empresa, id_estlocal, id_produto, variante, validade, 
            docto_natureza, docto_tipo, docto_serie, docto_numero, data, 
            historico, tipo, qtdade, valor, vl_ajuste, custo_medio, operador, 
            status, origem_prefixo, origem_id, origem_ordem, origem_seq, 
            data_inc, ordem_proc)
SELECT id_empresa, id_estlocal, id_produto, variante, validade, 
       docto_natureza, docto_tipo, docto_serie, docto_numero, data, 
       historico, tipo, qtdade, valor, vl_ajuste, custo_medio, operador, 
       status, origem_prefixo, origem_id, origem_ordem, origem_seq, 
       data_inc, ordem_proc
  FROM gerente.estmovto;

ALTER TABLE gerente.estlocal RENAME TO old_estlocal;
ALTER TABLE gerente.estinventario RENAME TO old_estinventario;
ALTER TABLE gerente.estsaldo RENAME TO old_estsaldo;
ALTER TABLE gerente.estmovto RENAME TO old_estmovto;
DROP VIEW   gerente.vsaldo_estoque;

ALTER TABLE gestao.estinventario ENABLE TRIGGER gera_estmovto;
ALTER TABLE gestao.estmovto ENABLE TRIGGER atual_estmovto_valor;
ALTER TABLE gestao.estmovto ENABLE TRIGGER atual_estsaldo;
ALTER TABLE gestao.estsaldo ENABLE TRIGGER atual_custo_estoque;

---------------------------------------------
---- gerente.vlucro_class_ovos --------------
---------------------------------------------
CREATE OR REPLACE VIEW gerente.vlucro_class_ovos AS
SELECT a.id_empresa, b.id_cliente, a.id_insumo1 AS id_produto, a.data, a.numero, a.qtd_insumo1 AS qtdade,a.qtd_insumo1*a.prc_insumo1 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gestao.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=1) 
  WHERE a.qtd_insumo1 >0
UNION ALL
SELECT a.id_empresa, b.id_cliente, a.id_insumo2 AS id_produto, a.data, a.numero, a.qtd_insumo2 AS qtdade,a.qtd_insumo2*a.prc_insumo2 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gestao.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=2) 
  WHERE a.qtd_insumo2 >0
UNION ALL
SELECT a.id_empresa, b.id_cliente, a.id_insumo3 AS id_produto, a.data, a.numero, a.qtd_insumo3 AS qtdade,a.qtd_insumo3*a.prc_insumo3 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gestao.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=3) 
  WHERE a.qtd_insumo3 >0
UNION ALL
SELECT a.id_empresa, b.id_cliente, a.id_insumo4 AS id_produto, a.data, a.numero, a.qtd_insumo4 AS qtdade,a.qtd_insumo4*a.prc_insumo4 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gestao.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=4) 
  WHERE a.qtd_insumo4 >0
UNION ALL
SELECT a.id_empresa, b.id_cliente, a.id_insumo5 AS id_produto, a.data, a.numero, a.qtd_insumo5 AS qtdade,a.qtd_insumo5*a.prc_insumo5 AS total,c.valor
  FROM gerente.ovocla a
  LEFT JOIN gerente.ovorec b ON a.id_empresa = b.id_empresa AND a.numero_recepcao = b.numero
  LEFT JOIN gestao.estmovto C on (c.id_empresa = a.id_empresa AND c.origem_prefixo='OVC' AND c.origem_id=a.id_ovocla AND c.origem_ordem=5) 
  WHERE a.qtd_insumo5 >0;
--RUN--

--SEQ 0139--
DELETE FROM gestao.estmovto WHERE id_estmovto IN (
select id_estmovto 
  from gestao.estmovto A
  left outer join gerente.pedidos B on (a.origem_id=b.id_pedido)
  where a.tipo='M' AND (NOT b.situa=2 OR b.situa IS NULL) );
--RUN--

--SEQ 0140--
ALTER TABLE gerente.peditens ALTER serie_nff_vinculada TYPE character(3);
ALTER TABLE gerente.producao ADD COLUMN und character(3);
--RUN--

--SEQ 0141--
ALTER TABLE gerente.producao ADD COLUMN numero numeric(6);
ALTER TABLE gerente.producao DISABLE TRIGGER at_qtdade_produzida_op;
UPDATE gerente.producao SET numero = id_producao;
ALTER TABLE gerente.producao ENABLE TRIGGER at_qtdade_produzida_op;
ALTER TABLE gerente.producao ADD CONSTRAINT key_producao_numero UNIQUE (id_empresa,numero);
ALTER TABLE gerente.producao ADD COLUMN status smallint;
ALTER TABLE gerente.producao ADD CONSTRAINT chk_producao_status CHECK (status IN (0,1,2,3));
--RUN--

--SEQ 0142--
UPDATE gestao.estmovto 
  SET origem_seq   = (CASE WHEN origem_seq=0 THEN origem_ordem ELSE origem_seq END),
      origem_ordem = COALESCE((SELECT ordem FROM gerente.proddet WHERE id_proddet= substring(gestao.estmovto.historico,16,6)::integer),0)
  WHERE origem_prefixo='PR' AND historico LIKE 'Prod. det%';
--RUN--

--SEQ 0143--
ALTER TABLE gerente.classfiscal ADD COLUMN cod_nf character(1);
--RUN--

--SEQ 0144--
ALTER TABLE gerente.tes ADD COLUMN id_empresa integer;
ALTER TABLE gerente.tes ADD COLUMN cod_ctbconta integer;
ALTER TABLE gerente.tes ADD COLUMN cod_ctbhisto integer;

ALTER TABLE gerente.tes DROP CONSTRAINT key_tes_codigo;
ALTER TABLE gerente.tes ADD CONSTRAINT key_tes_codigo UNIQUE(codigo,id_empresa);
ALTER TABLE gerente.tes
  ADD CONSTRAINT fk_pedidos_empresa FOREIGN KEY (id_empresa)
      REFERENCES gestao.empresa (id_empresa);
--RUN--

--SEQ 0145--
UPDATE gerente.tes SET codigo=id_tes WHERE id_empresa IS NULL;
--RUN--

--SEQ 0146--
ALTER TABLE gerente.recbtos ADD COLUMN vl_juros numeric(12,2) NOT NULL DEFAULT 0;
ALTER TABLE gerente.recbtos ALTER COLUMN vl_desconto SET DEFAULT 0;
VACUUM ANALYSE gerente.recbtos;

ALTER TABLE gerente.recbtos DISABLE TRIGGER atual_vlrecebido_ctr;
INSERT INTO gerente.recbtos (id_ctr,data,vl_juros,obs,forma,data_credito,valor,docto,tarifa,bom,origem,id_natureza,rec_emitido,id_empresa,id_cliente)
  SELECT a.id_ctr,(SELECT max(data) FROM gerente.recbtos c WHERE a.id_ctr=c.id_ctr),juros,'GERADO PELO SISTEMA EM '||TO_CHAR(NOW(),'DD/MM/YYYY'),
    1,(SELECT max(data) FROM gerente.recbtos c WHERE a.id_ctr=c.id_ctr),0,0,0,(SELECT max(data) FROM gerente.recbtos c WHERE a.id_ctr=c.id_ctr),
    'C',0,1,a.id_empresa,a.deved
    FROM gerente.ctr a
    WHERE juros>0 AND NOT juros = (SELECT sum(vl_juros) FROM gerente.recbtos b WHERE a.id_ctr=b.id_ctr);

INSERT INTO gerente.recbtos (id_ctr,data,vl_juros,obs,forma,data_credito,valor,docto,tarifa,bom,origem,id_natureza,rec_emitido,id_empresa,id_cliente)
  SELECT a.id_ctr,a.vecto,juros,'GERADO PELO SISTEMA EM '||TO_CHAR(NOW(),'DD/MM/YYYY'),
    1,a.vecto,0,0,0,a.vecto,'C',0,1,a.id_empresa,a.deved
    FROM gerente.ctr a
    WHERE juros>0 AND (SELECT sum(vl_juros) FROM gerente.recbtos b WHERE a.id_ctr=b.id_ctr) IS NULL;
ALTER TABLE gerente.recbtos ENABLE TRIGGER atual_vlrecebido_ctr;
--RUN--

--SEQ 0147--
ALTER TABLE gerente.tes RENAME COLUMN descr_cfop_nf TO nat_op;
ALTER TABLE gerente.tes ALTER nat_op TYPE character(60);
--RUN--

--SEQ 0149--
ALTER TABLE gerente.clientes ALTER classe TYPE character(2);
ALTER TABLE gerente.clientes ADD COLUMN obs_redespacho character varying(80);

ALTER TABLE gerente.cheques ADD COLUMN id_remessa integer;

ALTER TABLE gerente.auxiliar ADD COLUMN dt1 date;
ALTER TABLE gerente.auxiliar ADD COLUMN dt2 date;

ALTER TABLE gerente.pedidos ADD COLUMN cod_promocao integer;
ALTER TABLE gerente.pedidos ADD COLUMN vl_desc_promocao numeric(12,2);
--RUN--

--SEQ 0150--
ALTER TABLE gerente.clientes RENAME pessoas_aut_comprar TO pessoa_aut1;
ALTER TABLE gerente.clientes ADD COLUMN pessoa_aut2 character varying(60);
ALTER TABLE gerente.clientes ADD COLUMN pessoa_aut3 character varying(60);

ALTER TABLE gerente.clientes ADD COLUMN cpf_aut1 character varying(11);
ALTER TABLE gerente.clientes ADD COLUMN cpf_aut2 character varying(11);
ALTER TABLE gerente.clientes ADD COLUMN cpf_aut3 character varying(11);

ALTER TABLE gerente.pedidos ADD COLUMN num_pedido_origem integer;
--RUN--

--SEQ 0151--
ALTER TABLE gerente.servico DROP CONSTRAINT key_servico_os;
ALTER TABLE gerente.servico ADD CONSTRAINT key_servico_os UNIQUE(id_os,ordem);
--RUN--

--SEQ 0152--
ALTER TABLE gerente.clientes ADD COLUMN email_nfe character(40);
--RUN--

--SEQ 0153--
ALTER TABLE gerente.clientes ADD COLUMN cod_pais integer;
ALTER TABLE gerente.reg60m ADD COLUMN dt_emissao date  null;
ALTER TABLE gerente.reg60m ADD COLUMN hr_emissao time null;
ALTER TABLE gerente.cfiscal ADD COLUMN num_ccf    integer null;
ALTER TABLE gerente.cfiscal ADD COLUMN num_coo    integer null;
ALTER TABLE gerente.cfiscald ADD COLUMN descricao char(100) null;
ALTER TABLE gerente.cfiscald ADD COLUMN und       char(3)   null;
ALTER TABLE gerente.cfiscald ADD COLUMN totalizador char(7) null;
--RUN--

--SEQ 0154--
ALTER TABLE gerente.clientes
  ADD CONSTRAINT fk_clientes_pais FOREIGN KEY (cod_pais)
      REFERENCES gestao.pais (cod_pais);

ALTER TABLE gerente.cfiscal DROP COLUMN num_coo;
ALTER TABLE gerente.cfiscal ADD COLUMN dt_emissao_final date null;
ALTER TABLE gerente.cfiscal ADD COLUMN hr_emissao_final time null;


CREATE TABLE gerente.docecf
(
  id_docecf serial NOT NULL,
  id_empresa integer NOT NULL,
  id_maqecf integer NOT NULL,
  data date NOT NULL,
  tipo character(2)  NOT NULL,
  num_cro integer NOT NULL,
  num_coo integer NOT NULL,  
  num_ccf integer NULL,
  num_gnf integer NULL,
  dt_emissao_final date NOT NULL,
  hr_emissao_final time NOT NULL,  
  CONSTRAINT pk_docecf PRIMARY KEY (id_docecf),
  CONSTRAINT fk_docecf_empresa FOREIGN KEY (id_empresa) REFERENCES gestao.empresa (id_empresa), 
  CONSTRAINT fk_docecf_maqecf  FOREIGN KEY (id_maqecf)   REFERENCES gerente.maqecf (id_maqecf), 
  CONSTRAINT key_docecf_num_coo UNIQUE (id_empresa, num_cro, num_coo),
  CONSTRAINT chk_docecf_num_cro CHECK (tipo = 'CN'::bpchar AND num_gnf IS NOT NULL)
);
--RUN--

--SEQ 0155--
ALTER TABLE gerente.producao ADD COLUMN lote character(10);
--RUN--

--SEQ 0156--
ALTER TABLE gerente.maqecf ADD COLUMN chavepublica varchar(256);
ALTER TABLE gerente.maqecf ADD COLUMN chaveprivada varchar(256);
ALTER TABLE gerente.maqecf ADD COLUMN expoentepublico varchar(256);
--RUN--

--SEQ 0157--
ALTER TABLE gerente.peditens ADD COLUMN id_munoco_issqn integer;
--RUN--

--SEQ 0158--
ALTER TABLE gerente.maqecf ADD COLUMN data_reducaoz date;
ALTER TABLE gerente.tes    ADD COLUMN natureza character(1);
--RUN--

--SEQ 0159--
ALTER TABLE gerente.reg60m ADD COLUMN num_coo integer NULL  
--RUN--

--SEQ 0160--
ALTER TABLE gerente.ctr
  DROP CONSTRAINT chk_ctr_saldo;
ALTER TABLE gerente.ctr
  ADD CONSTRAINT chk_ctr_saldo CHECK (((valor - recbt - desco + juros + despcart) = saldo) OR situacao='C');
--RUN--

--SEQ 0161--
ALTER TABLE gerente.pedidos DROP CONSTRAINT fk_pedidos_estlocal;
ALTER TABLE gerente.pedidos
  ADD CONSTRAINT fk_pedidos_estlocal FOREIGN KEY (id_estlocal)
      REFERENCES gestao.estlocal (id_estlocal) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION;
--RUN--

--SEQ 0162--
ALTER TABLE gerente.ctr ADD COLUMN num_fatura integer;
ALTER TABLE gerente.ctr DROP CONSTRAINT chk_ctr_situacao;
ALTER TABLE gerente.ctr ADD CONSTRAINT chk_ctr_situacao 
  CHECK ((situacao='A' and not saldo=0) OR (situacao='Q' and saldo=0) OR (situacao IN ('C','F') and recbt=0 and saldo=0));
ALTER TABLE gerente.ctr DROP CONSTRAINT chk_ctr_saldo;
ALTER TABLE gerente.ctr ADD CONSTRAINT chk_ctr_saldo 
  CHECK (((valor - recbt - desco + juros + despcart) = saldo) OR situacao IN ('C','F'));
--RUN--

--SEQ 0163--
ALTER TABLE gerente.docecf ADD COLUMN num_cdc integer;
ALTER TABLE gerente.docecf ADD COLUMN num_grg integer;
ALTER TABLE gerente.docecf ADD COLUMN nsu     integer;
ALTER TABLE gerente.docecf ADD COLUMN valor   numeric(12,2);
ALTER TABLE gerente.docecf ADD COLUMN nomerede char(20);
--RUN--

--SEQ 0164--
ALTER TABLE gerente.docecf ALTER COLUMN nsu type char(12);
ALTER TABLE gerente.docecf DROP CONSTRAINT chk_docecf_num_cro;
--RUN--

--SEQ 0165--
ALTER TABLE gerente.clientes ADD COLUMN cpf_conjuge VARCHAR(14);
--RUN--

--SEQ 0166--
ALTER TABLE gerente.maqecf ADD COLUMN num_subst_proprietario smallint;
--RUN--

--SEQ 0167--
ALTER TABLE gerente.acessorio ADD COLUMN ativo smallint not null DEFAULT 1;
--RUN--

--SEQ 0168--
ALTER TABLE gerente.consproduto ADD COLUMN codigo       char(10);
ALTER TABLE gerente.consproduto ADD COLUMN id_marca     integer;
ALTER TABLE gerente.consproduto ADD COLUMN controlar_estoque smallint;
ALTER TABLE gerente.consproduto ADD COLUMN est_minimo   numeric(12,2);
ALTER TABLE gerente.consproduto ADD COLUMN est_pedido   numeric(12,2);
ALTER TABLE gerente.consproduto ADD COLUMN est_maximo   numeric(12,2);
ALTER TABLE gerente.consproduto ADD COLUMN produto_grade integer;
ALTER TABLE gerente.consproduto ADD COLUMN id_gradev     integer;
ALTER TABLE gerente.consproduto ADD COLUMN id_gradeh     integer;
ALTER TABLE gerente.consproduto ADD COLUMN id_produto_grade integer;
ALTER TABLE gerente.consproduto ADD COLUMN id_gradedetv integer;
ALTER TABLE gerente.consproduto ADD COLUMN id_gradedeth integer;
ALTER TABLE gerente.consproduto ADD COLUMN nm_grupo     char(40);
ALTER TABLE gerente.consproduto ADD COLUMN nm_subgrupo  char(40);
--RUN--

--SEQ 0169--
INSERT into gestao.obsfiscal (id_pedido, id_empresa, tipo, descr_compl)
SELECT id_pedido, id_empresa, 'I', dad_adic FROM gerente.pedidos WHERE dad_adic IS NOT NULL AND dad_adic<>'';
--RUN--

--SEQ 0170--
ALTER TABLE gerente.consproduto ADD COLUMN und char(3);
ALTER TABLE gerente.consproduto ADD COLUMN preco_venda1 numeric(12,2);
--RUN--

--SEQ 0171-
ALTER TABLE gerente.tes RENAME dad_adic TO descr_compl;
ALTER TABLE gerente.tes ADD COLUMN cod_infcomp integer;
ALTER TABLE gerente.tes ADD COLUMN tipo_infcomp CHAR(1);
ALTER TABLE gerente.tes ADD CONSTRAINT fk_tes_tabobsfiscal FOREIGN KEY (id_empresa, tipo_infcomp, cod_infcomp)
      REFERENCES gestao.tabobsfiscal (id_empresa, tipo, codigo);
--RUN--

--SEQ 0172--
ALTER TABLE gerente.consproduto RENAME preco_venda1 TO cod_ncm;
ALTER TABLE gerente.consproduto ALTER cod_ncm TYPE integer;
--RUN--

--SEQ 0173--
ALTER TABLE gerente.cfiscal ADD COLUMN gera_est_gerencial smallint;
--RUN--

--SEQ 0174--
ALTER TABLE gerente.consproduto ADD COLUMN id_estlocal integer;
CREATE INDEX key_consproduto_grade ON gerente.consproduto (id_empresa, id_produto_grade);
--RUN--

--SEQ 0175--
ALTER TABLE gerente.clientes ALTER COLUMN email_nfe type character(60)
--RUN--

--SEQ 0176--
ALTER TABLE gerente.tes ADD COLUMN cod_ctbconta_cre integer;
ALTER TABLE gerente.tes ADD COLUMN cod_ctbhisto_cre integer;
--RUN--

--SEQ 0177--
ALTER TABLE gerente.maqecf drop chavepublica;
ALTER TABLE gerente.maqecf drop chaveprivada;
ALTER TABLE gerente.maqecf drop expoentepublico;
ALTER TABLE gerente.maqecf ADD COLUMN ip_terminal char(15);
--RUN--

--SEQ 0178--
ALTER TABLE gerente.maqecf RENAME marca_modelo_ecf TO marca;
ALTER TABLE gerente.maqecf ADD COLUMN modelo char(30);
--RUN--

--SEQ 0179--
ALTER TABLE gerente.tes ADD COLUMN classificacao character(30);
--RUN--

--SEQ 0180--
UPDATE gestao.estmovto 
  SET cod_tes=(select b.codigo from gerente.peditens A 
               LEFT OUTER JOIN gerente.tes B ON (a.id_tes=b.id_tes)
               where a.id_pedido=gestao.estmovto.origem_id AND a.ordem=gestao.estmovto.origem_ordem LIMIT 1) 
  WHERE origem_prefixo='PE' AND cod_tes IS NULL;
--RUN--

--SEQ 0181--
UPDATE gestao.estmovto 
  SET cod_tes=(select b.codigo from gestao.nfdet A 
               LEFT OUTER JOIN gerente.tes B ON (a.id_tes=b.id_tes)
               where a.id_nf=gestao.estmovto.origem_id AND a.num_item=gestao.estmovto.origem_ordem LIMIT 1) 
  WHERE origem_prefixo='NF' AND cod_tes IS NULL;
--RUN--

--SEQ 0182--
ALTER TABLE gerente.recbtos ADD COLUMN id_entrada integer;
--RUN--

--SEQ 0183--
ALTER TABLE gerente.cfiscal DROP CONSTRAINT key_cfiscal_numero;
ALTER TABLE gerente.cfiscal
  ADD CONSTRAINT key_cfiscal_numero UNIQUE(id_empresa, id_maqecf, num_cro, numero);
--RUN--

--SEQ 0184--
ALTER TABLE gerente.cfiscal ALTER COLUMN id_cliente DROP NOT NULL;
ALTER TABLE gerente.cfiscal ALTER COLUMN forma_pag_com DROP NOT NULL;
ALTER TABLE gerente.cfiscal ALTER COLUMN id_vendedor DROP NOT NULL;
ALTER TABLE gerente.cfiscal ALTER COLUMN comissao DROP NOT NULL;
--RUN--

--SEQ 0185-- 15/04/2010 10:41 POR JCS
ALTER TABLE gerente.clientes ADD COLUMN dias_multa integer;
ALTER TABLE gerente.clientes ADD COLUMN taxa_multa numeric(6,2);
--RUN--

--SEQ 0186-- 30/04/2010 11:38 POR JCS
ALTER TABLE gerente.clientes ADD COLUMN st_especifica character(20) DEFAULT ' ';
--RUN--

--SEQ 0187-- 05/05/2010 15:57 POR JCS
ALTER TABLE gerente.clientes ADD COLUMN dt_atual date;
ALTER TABLE gerente.maqecf   ADD COLUMN dt_atual date;
--RUN--

--SEQ 0188-- 07/05/2010 14:20 POR JCS
ALTER TABLE gerente.consproduto ALTER bc_icmsst_cobrant TYPE numeric(15,4);
ALTER TABLE gerente.consproduto ALTER vl_icmsst_cobrant TYPE numeric(15,4);
--RUN--

--SEQ 0189-- 10/05/2010 09:26 POR ALAN
ALTER TABLE gerente.clientes ADD COLUMN c_num_endereco VARCHAR(20);
--RUN--

--SEQ 0190-- 17/05/2010 18:08 POR JCS
ALTER TABLE gerente.peditens ADD COLUMN preco_com_ipi SMALLINT;
ALTER TABLE gerente.peditens ADD COLUMN bc_ipi numeric(12,2);
ALTER TABLE gerente.peditens ADD COLUMN aliq_ipi numeric(5,2);
--RUN--

--SEQ 0191-- 31/05/2010 08:12 POR JCS
ALTER TABLE gerente.peditens ADD COLUMN cfop integer;
--RUN--

--SEQ 0192-- 22/06/2010 21:20 JCS
ALTER TABLE gerente.peditens ADD COLUMN vl_totliq numeric(12,2); 
ALTER TABLE gerente.peditens ADD COLUMN vl_tributos numeric(12,2); 
ALTER TABLE gerente.peditens ADD COLUMN vl_cmv numeric(12,2); 
ALTER TABLE gerente.peditens ADD COLUMN vl_despvar numeric(12,2); 
ALTER TABLE gerente.peditens ADD COLUMN vl_mc numeric(12,2); 
ALTER TABLE gerente.peditens ADD COLUMN vl_despfixas numeric(12,2); 
ALTER TABLE gerente.peditens ADD COLUMN vl_lucro numeric(12,2); 
--RUN--

--SEQ 0193-- 05/07/2010 15:50 RH
ALTER TABLE pegasus.estoque ADD COLUMN qtd_fisica numeric(15,3);
ALTER TABLE pegasus.movto ADD COLUMN id_unico character varying(20);
ALTER TABLE pegasus.movto ADD COLUMN mov_cancelada character(1);
--RUN--

--SEQ 0194-- 11/08/2010 14:10 ALAN
ALTER TABLE gestao.contrato
  ADD CONSTRAINT fk_contrato_cliente FOREIGN KEY (id_cliente)
      REFERENCES gerente.clientes (id_cliente) 
--RUN--

--SEQ 0195-- 04/10/2010 18:17 ALAN
CREATE INDEX key_recbtos_entrada ON gerente.recbtos (id_entrada);
--RUN--

--SEQ 0196-- 08/12/2010 14:37 RH
ALTER TABLE gerente.pedidos ADD COLUMN uf_emb_exp character(2);
ALTER TABLE gerente.pedidos ADD COLUMN local_emb_exp character varying(60);
--RUN--

--SEQ 0197-- 10/01/2011 14:22 JCS
ALTER TABLE gerente.ctr ADD COLUMN id_ctc integer;
ALTER TABLE gerente.ctr ADD CONSTRAINT key_ctr_ctc UNIQUE(id_ctc, num_parcela);
ALTER TABLE gerente.ctr ADD CONSTRAINT fk_ctr_ctc FOREIGN KEY (id_ctc) REFERENCES gestao.ctc (id_ctc);
--RUN--

--SEQ 0198-- 17/01/2011 13:42 JCS
ALTER TABLE gerente.servico ADD COLUMN tx_desconto numeric(6, 2);
ALTER TABLE gerente.servico ADD COLUMN vl_desconto numeric(12, 2);
--RUN--

--SEQ 0199-- 14/02/2011 17:22 ALAN
select now();
--RUN--

--SEQ 0200-- 28/02/2011 14:50 JCS
ALTER TABLE gestao.socios ADD CONSTRAINT fk_socios_cliente FOREIGN KEY (id_cliente) REFERENCES gerente.clientes (id_cliente);
--RUN--

--SEQ 0201-- 03/03/2011 17:24 RH
ALTER TABLE gerente.pedvolumes DROP CONSTRAINT key_pedvolumes_id_pedido_numero;
ALTER TABLE gerente.pedvolumes ADD CONSTRAINT key_pedvolumes_id_pedido_numero UNIQUE(id_pedido, numero, id_produto);
--RUN--

--SEQ 0202-- 14/03/2011 11:10 JCS
ALTER TABLE gerente.codbarra ALTER codigo TYPE character(14);

ALTER TABLE gerente.tes ADD COLUMN emite_cf smallint NOT NULL DEFAULT 1;

ALTER TABLE gerente.pedidos   ADD COLUMN num_pv bigint;
ALTER TABLE gerente.pedidos   ADD COLUMN mod_docfiscal_vinc character(2);
ALTER TABLE gerente.pedidos   ADD COLUMN serie_docfiscal_vinc character(3);
ALTER TABLE gerente.pedidos   ADD COLUMN num_docfiscal_vinc integer;

ALTER TABLE gerente.pedidos   ADD CONSTRAINT key_pedidos_num_pv UNIQUE(id_empresa, num_pv);
--RUN--

--SEQ 0203-- 24/03/2011 17:30 ALAN
ALTER TABLE gerente.pedidos  RENAME formapag TO cod_formapag;
ALTER TABLE gerente.pedidos  RENAME vende TO cod_vendedor;
ALTER TABLE gerente.pedidos  RENAME id_supervisor TO cod_supervisor;
ALTER TABLE gerente.clientes RENAME forma_pag TO cod_formapag;
ALTER TABLE gerente.clientes RENAME vende TO cod_vendedor;
ALTER TABLE gerente.ctr      RENAME vende TO cod_vendedor;
ALTER TABLE gerente.cfiscal  RENAME id_vendedor TO cod_vendedor;
--RUN--

--SEQ 0204-- 24/03/2011 17:30 JCS
ALTER TABLE gerente.pedidos ALTER num_ped_sar TYPE character(20);
ALTER TABLE gerente.pedidos ALTER COLUMN ordem SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN vl_frete_ton SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN vl_icms SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN redesp_frete SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN num_assist_oc SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN estoq_vendedor SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN nao_calc_icms_ipi SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN inf_usuario SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN atual_estoque SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN id_medidor SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN id_calculo SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN id_carregador SET DEFAULT 0;
ALTER TABLE gerente.pedidos ALTER COLUMN id_natureza SET DEFAULT 0; 

CREATE INDEX key_pedidos_num_ped_sar ON gerente.pedidos (id_empresa, num_ped_sar);
--RUN--

--SEQ 0205-- 11/04/2011 11:00 ALAN
ALTER TABLE gerente.maqecf ADD COLUMN cod_marca smallint;
ALTER TABLE gerente.maqecf ADD COLUMN cod_modelo smallint;
ALTER TABLE gerente.maqecf ADD COLUMN cod_versao smallint;
--RUN--

--SEQ 0206-- 03/05/2011 11:17 JCS
ALTER TABLE gerente.pedidos ALTER COLUMN vl_ctr SET DEFAULT 0; 
ALTER TABLE gerente.pedidos ALTER COLUMN id_moeda SET DEFAULT 1; 
ALTER TABLE gerente.pedidos ALTER COLUMN vl_cotacao SET DEFAULT 0; 
ALTER TABLE gerente.pedidos ALTER COLUMN peso_liquido SET DEFAULT 0; 
ALTER TABLE gerente.pedidos ALTER COLUMN peso_bruto SET DEFAULT 0; 
ALTER TABLE gerente.pedidos ALTER COLUMN tot_servicos SET DEFAULT 0; 
ALTER TABLE gerente.pedidos ALTER COLUMN tot_issqn SET DEFAULT 0; 

ALTER TABLE gerente.peditens ALTER COLUMN preco_pauta SET DEFAULT 0;
ALTER TABLE gerente.peditens ALTER COLUMN estoq_vendedor SET DEFAULT 0;
ALTER TABLE gerente.peditens ALTER COLUMN num_pedido_vinc SET DEFAULT 0;
ALTER TABLE gerente.peditens ALTER COLUMN num_nff_vinc SET DEFAULT 0;
ALTER TABLE gerente.peditens ALTER COLUMN peso_bruto SET DEFAULT 0;
ALTER TABLE gerente.peditens ALTER COLUMN tara SET DEFAULT 0;
--RUN--

--SEQ 0207-- 24/05/2011 9:30 RH
ALTER TABLE gerente.reg60a ADD COLUMN totalizador character(7);
UPDATE gerente.reg60a SET totalizador='';
ALTER TABLE gerente.reg60a ALTER COLUMN totalizador SET NOT NULL;
ALTER TABLE gerente.reg60a ALTER COLUMN totalizador SET DEFAULT ''::bpchar;

ALTER TABLE gerente.reg60a ALTER COLUMN st_aliq type character(8);

ALTER TABLE gerente.cfiscald ADD COLUMN vl_pis numeric(15, 2);
ALTER TABLE gerente.cfiscald ADD COLUMN vl_cofins numeric(15, 2);
--RUN--

--SEQ 0208-- 26/05/2011 10:03 RH
CREATE OR REPLACE VIEW gerente.spedc425 AS 
 SELECT b.id_maqecf, b.data, a.totalizador, c.id_erp AS cod_item, sum(a.qtdade) AS qtd, c.unidade, sum((a.total - a.vl_desconto + a.vl_acrescimo) * (b.total / (b.total - b.vl_acrescimo + b.vl_desconto))) AS vl_item, sum(a.vl_pis) AS vl_pis, sum(a.vl_cofins) AS vl_cofins, c.id_empresa
   FROM gerente.cfiscald a
   LEFT JOIN gerente.cfiscal b ON a.id_cfiscal = b.id_cfiscal
   LEFT JOIN gestao.produto c ON a.id_produto = c.id_erp
  WHERE a.item_cancelado = 0 AND b.situacao = 'E'::bpchar
  GROUP BY b.id_maqecf, b.data, a.totalizador, c.id_erp, c.unidade, c.id_empresa;
--RUN--

--SEQ 0209-- 28/06/2011 13:11 RH
ALTER TABLE gerente.tes ADD COLUMN reajusta_custo_reposicao smallint NOT NULL DEFAULT 1;
--RUN--

--SEQ 0210-- 18/08/2011 11:30 ALAN
ALTER TABLE gestao.contitem ADD CONSTRAINT fk_contitem_colaborador    FOREIGN KEY (id_colaborador)    REFERENCES gerente.colaborador (id_colaborador);
ALTER TABLE gestao.contitem ADD CONSTRAINT fk_contitem_colaborador_bx FOREIGN KEY (id_colaborador_bx) REFERENCES gerente.colaborador (id_colaborador);
--RUN--

--SEQ 0211-- 22/08/2011 10:31 POR JCS
ALTER TABLE gerente.acessorio ADD COLUMN dt_atual date NOT NULL DEFAULT NOW();
--RUN--

--SEQ 0212-- 13/09/2011 10:38 POR JCS
ALTER TABLE gerente.log ADD COLUMN id_empresa integer;
--RUN--

--SEQ 0213-- 19/09/2011 15:30 POR RH
ALTER TABLE gerente.tes ADD COLUMN cod_base_cred character(2);
--RUN--

--SEQ 0214-- 30/09/2011 15:00 POR RH
ALTER TABLE gerente.tes ADD COLUMN cst_icms_ent	  character(3);
ALTER TABLE gerente.tes ADD COLUMN cst_ipi_ent 	  character(2);
ALTER TABLE gerente.tes ADD COLUMN cst_pis_ent 	  character(2);
ALTER TABLE gerente.tes ADD COLUMN cst_cofins_ent character(2);
--RUN--

--SEQ 0215-- 05/10/2011 10:00 POR RH
ALTER TABLE gerente.tes ADD COLUMN cod_base_cred_pis_cofins character(2);
--RUN--

--SEQ 0216-- 07/10/2011 16:30 POR RH
ALTER TABLE gerente.tes ADD COLUMN nat_rec_pis_cofins character(4);
--RUN--

--SEQ 0217-- 11/10/2011 10:51 POR JCS
CREATE INDEX key_pedidos_mod_docfiscal_vinc ON gerente.pedidos (id_empresa, mod_docfiscal_vinc, situa);
--RUN--

--SEQ 0218-- 13/10/2011 20:23 POR JCS
CREATE OR REPLACE VIEW gerente.vsaldo_vef AS
select id_empresa,id_cliente,id_produto,sum(qtdade) as qtdade
  from gerente.vmovto_vef
  group by id_empresa,id_cliente,id_produto;
--RUN--

--SEQ 0219-- 20/10/2011 16:28 POR RH
ALTER TABLE gerente.tes DROP COLUMN cod_base_cred_pis_cofins;
--RUN--

--SEQ 0220-- 31/10/2011 10:28 POR ALAN
update gestao.produto A set bc_icmsst_cobrant=(select B.bc_icmsst_cobrant from gerente.consproduto as B where A.id_empresa=B.id_empresa and A.id_erp=B.id_produto),
                            vl_icmsst_cobrant=(select B.vl_icmsst_cobrant from gerente.consproduto as B where A.id_empresa=B.id_empresa and A.id_erp=B.id_produto),
                            data_icmsst_cobrant=(select B.data_icmsst_cobrant from gerente.consproduto as B where A.id_empresa=B.id_empresa and A.id_erp=B.id_produto),
                            docto_icmsst_cobrant=(select B.docto_icmsst_cobrant from gerente.consproduto as B where A.id_empresa=B.id_empresa and A.id_erp=B.id_produto)
WHERE (A.bc_icmsst_cobrant=0 or A.bc_icmsst_cobrant is null) AND A.id_erp =(select B.id_produto from gerente.consproduto as B where A.id_empresa=B.id_empresa and A.id_erp=B.id_produto);
ALTER TABLE gerente.consproduto RENAME TO old_consproduto;
--RUN--

--SEQ 0221-- 22/11/2011 10:40 POR ALAN
INSERT INTO gestao.classfiscal(id_classfiscal, codigo, descricao, cod_nf)
SELECT id_classfiscal, codigo, descricao, cod_nf FROM gerente.classfiscal;
ALTER TABLE gerente.classfiscal RENAME TO old_classfiscal;
--RUN--

--SEQ 0222-- 29/11/2011 16:00 POR ALAN
SELECT setval('gestao.classfiscal_id_classfiscal_seq', (SELECT MAX(id_classfiscal) FROM gestao.classfiscal), true);
--RUN--

--SEQ 0223-- 06/12/2011 16:45 ALAN
ALTER TABLE gerente.producao ADD COLUMN cod_estrutura character(14);
--RUN--

--SEQ 0224-- 24/01/2012 18:00 ALAN
UPDATE gerente.ctr SET id_os=(select id_os from gestao.os where numero=gerente.ctr.id_os and id_empresa=gerente.ctr.id_empresa)
where id_os=(select numero from gestao.os where numero=gerente.ctr.id_os and id_empresa=gerente.ctr.id_empresa);
--RUN--

--SEQ 0225-- 01/02/2012 14:10 JCS 
INSERT INTO gestao.log (data, id_empresa, nome_cpd, nome_usuario, operacao, tabela, id, descricao)
SELECT data, id_empresa, nome_cpd, nome_usuario, operacao, tabela, id, descricao FROM gerente.log;
--RUN--

--SEQ 0226-- 29/02/2012 16:00 ALAN
DROP VIEW gerente.vcomissao_supervisor;
CREATE OR REPLACE VIEW gerente.vcomissao_supervisor AS
 SELECT a.id_empresa, a.cod_supervisor AS cod_supervisor, a.cod_vendedor AS cod_vendedor, 'FAT'::bpchar AS origem, a.numero::character(15) AS numero, a.tipo, a.dtemi AS data, a.clien, b.razao, a.totpr - a.descv AS base, a.taxa_com_super, ((a.totpr - a.descv) / 100::numeric * a.taxa_com_super)::numeric(12,2) AS vl_comissao
   FROM gerente.pedidos a
   LEFT JOIN gerente.clientes b ON a.clien = b.id_cliente
  WHERE a.forma_pag_com_super = 'F'::bpchar AND a.situa = 3 AND (a.tipo = 'N'::bpchar OR a.tipo = 'D'::bpchar)
UNION ALL 
 SELECT a.id_empresa, b.cod_supervisor AS cod_supervisor, a.cod_vendedor AS cod_vendedor, 'REC'::bpchar AS origem, a.numero, b.tipo, a.dt_baixa AS data, a.deved AS clien, c.razao, 
        CASE
            WHEN COALESCE(( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9), 0::numeric) < a.valor THEN (a.base_comissao / a.valor * (( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9)))::numeric(12,2)
            ELSE a.base_comissao
        END AS base, b.taxa_com_super, 
        CASE
            WHEN COALESCE(( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9), 0::numeric) < a.valor THEN (a.base_comissao / a.valor * (( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9)) / 100::numeric * b.taxa_com_super)::numeric(12,2)
            ELSE (a.base_comissao / 100::numeric * b.taxa_com_super)::numeric(12,2)
        END AS vl_comissao
   FROM gerente.ctr a
   LEFT JOIN gerente.pedidos b ON a.id_pedido = b.id_pedido
   LEFT JOIN gerente.clientes c ON a.deved = c.id_cliente
  WHERE b.forma_pag_com_super = 'R'::bpchar AND a.situacao = 'Q'::bpchar;
--RUN--

--SEQ 0227-- 02/03/2012 14:00 ALAN
ALTER TABLE gerente.clientes ALTER bairr TYPE character(40);
--RUN--

--SEQ 0228-- 03/04/2012 14:00 JCS
ALTER TABLE gerente.pedidos ADD COLUMN emitir_dav character(1);
CREATE INDEX key_pedidos_emitir_dav ON gerente.pedidos  (emitir_dav, id_empresa);
--RUN--

--SEQ 0229-- 19/04/2012 14:40 JCS
ALTER TABLE gerente.pedidos ALTER COLUMN obs TYPE character(255);
--RUN--

--SEQ 0230-- 31/05/2012 14:40 JCS
ALTER TABLE gerente.pedidos ALTER COLUMN carga SET DEFAULT 0; 
--RUN--

--SEQ 0231-- 06/06/2012 14:40 ALAN

CREATE TABLE gerente.stecf
(
  id_stecf serial NOT NULL,
  id_maqecf integer NOT NULL,
  id_st    integer NOT NULL,
  ecf_cod_st character(4) NOT NULL,
  ecf_st character(1) NOT NULL,
  ecf_aliquota numeric(5,2) NOT NULL,
  CONSTRAINT pk_stecf PRIMARY KEY (id_stecf),
  CONSTRAINT fk_stecf_maqecf FOREIGN KEY (id_maqecf) REFERENCES gerente.maqecf (id_maqecf) ,
  CONSTRAINT fk_stecf_st FOREIGN KEY (id_st) REFERENCES gestao.st (id_st) ,
  CONSTRAINT key_stecf_maqecf UNIQUE (id_maqecf, id_st)
);

INSERT INTO gerente.stecf(id_maqecf, id_st, ecf_cod_st, ecf_st, ecf_aliquota)
    (select C.id_maqecf,B.id_st,B.ecf_cod_st,B.ecf_st,B.ecf_aliquota from gestao.empresa as A
     left outer join gestao.st as B on(A.id_matriz=B.id_empresa)
     left outer join gerente.maqecf as C on(C.id_empresa=A.id_empresa)
     where B.ecf_cod_st<>'' and B.ecf_st<>'' and C.id_maqecf>0 order by C.id_maqecf,B.id_st);

--RUN--

--SEQ 0232-- 27/06/2012 17:00 ALAN
  ALTER TABLE gerente.clientes add COLUMN num_sif int; 
--RUN--

--SEQ 0232--
ALTER TABLE gerente.ovoexp ADD COLUMN tipo char(1) NOT NULL;
--RUN--

--SEQ 0233--
CREATE TABLE gerente.movtpcor
(
  id_movtpcor serial NOT NULL,
  id_cor   integer NOT NULL,
  data_inicial date NOT NULL,
  data_final date,
  id_tpcor integer NOT NULL,
  docto  character(10) NOT NULL,
  valor numeric(12,2) NOT NULL,
  obs character(40),
  CONSTRAINT pk_movtpcor PRIMARY KEY (id_movtpcor),
  CONSTRAINT fk_movtpcor_clientes FOREIGN KEY (id_cor) REFERENCES gerente.clientes (id_cliente)
);

INSERT INTO gerente.movtpcor(id_cor, data_inicial, id_tpcor,docto,valor) (select id_cliente, data_tipo,id_tipo,'',0 FROM gerente.clientes where id_tipo>0);
--RUN--

--SEQ 0234-- 17/08/2012 15:50 JCS
ALTER TABLE gerente.peditens ALTER obs TYPE character(100);
--RUN--

--SEQ 0235--
select now();
--RUN--

--SEQ 0236-- 22/08/2012 08:30 JCS
ALTER TABLE gerente.clientes ADD COLUMN cod_pauta integer;
--RUN--

--SEQ 0237-- 31/08/2012 14:30 JCS
ALTER TABLE gerente.peditens ADD COLUMN num_oc character(15);
ALTER TABLE gerente.peditens ADD COLUMN item_oc integer;
--RUN--

--SEQ 0238-- 19/09/2012 14:30 JCS
ALTER TABLE pegasus.movto ADD COLUMN id_cliente integer;
ALTER TABLE pegasus.movto ADD COLUMN inf_usuario smallint;
DELETE FROM pegasus.movto 
  WHERE id_unico IN (SELECT id_unico FROM pegasus.movto GROUP BY id_unico HAVING count(*)>1) AND 
        id_movto NOT IN (SELECT max(id_movto) FROM pegasus.movto GROUP BY id_unico HAVING count(*)>1);
ALTER TABLE pegasus.movto ADD CONSTRAINT key_movto_id_unico UNIQUE (id_unico);
--RUN--

--SEQ 0239-- 11/12/2012 16:00 JCS
UPDATE gerente.ctr SET num_parcela=NULL 
  WHERE id_pedido IN (	
     SELECT a.id_pedido
       FROM gerente.ctr A 
       WHERE id_pedido IS NOT NULL
       GROUP BY a.id_pedido,a.num_parcela HAVING count(*)>1)
  AND id_ctr NOT IN (
     SELECT min(a.id_ctr) 
       FROM gerente.ctr A 
       WHERE id_pedido IS NOT NULL
       GROUP BY a.id_pedido,a.num_parcela HAVING count(*)>1);
DROP INDEX gerente.key_ctr_pedido;
ALTER TABLE gerente.ctr ADD CONSTRAINT key_ctr_pedido UNIQUE(id_pedido, num_parcela);
--RUN--

--SEQ 0240-- 18/03/2013 17:30 ALAN
ALTER TABLE gerente.pedidos ADD COLUMN formapag_customizado smallint;
ALTER TABLE gerente.peditens ADD COLUMN vl_frete numeric(12,2);
--RUN--

--SEQ 0241-- 10/04/2013 16:00 ALAN
ALTER TABLE gerente.ctr ADD COLUMN dt_desc_cond date;
ALTER TABLE gerente.ctr ADD COLUMN vl_desc_cond numeric(15,2);
--RUN--

--SEQ 0242-- 29/04/2013 16:20 ALAN
ALTER TABLE gerente.tes ADD COLUMN est_vendedor character(1);
update gerente.tes set est_vendedor='N';
--RUN--

--SEQ 0243-- 06/05/2013 09:20 ALAN
CREATE OR REPLACE VIEW gerente.vestoque_vendedor AS 
 SELECT ped.id_pedido, ped.numero, ped.id_empresa, ped.dtemi AS dt_emissao, ped.clien AS id_cliente, 
        CASE
            WHEN tes.est_vendedor = 'R'::bpchar THEN pedi.qtd
            ELSE - pedi.qtd
        END AS qtdade, 
        CASE
            WHEN tes.est_vendedor = 'R'::bpchar THEN pedi.total
            ELSE - pedi.total
        END AS total, pedi.num_pedido_vinc, tes.est_vendedor, pedi.produ AS id_produto, ped.cod_vendedor
   FROM gerente.tes
   LEFT JOIN gerente.peditens pedi ON pedi.id_tes = tes.id_tes
   LEFT JOIN gerente.pedidos ped ON ped.id_pedido = pedi.id_pedido
  WHERE (tes.est_vendedor = ANY (ARRAY['R'::bpchar, 'V'::bpchar, 'T'::bpchar])) AND ped.situa = 3 AND (ped.tipo = ANY (ARRAY['N'::bpchar, 'D'::bpchar])) AND ped.dtemi >= '2013-04-29'::date;
--RUN--

--SEQ 0244-- 27/05/2013 18:00 JCS
ALTER TABLE gerente.pedidos ADD COLUMN ped_flex smallint;

ALTER TABLE gerente.peditens ADD COLUMN pr_pauta_liq numeric(15,4);
ALTER TABLE gerente.peditens ADD COLUMN vl_flex numeric(15,2);
--RUN--

--SEQ 0245-- 07/06/2013 10:00 ALAN
ALTER TABLE gerente.clientes DROP CONSTRAINT chk_clientes_id;
ALTER TABLE gerente.clientes ADD CONSTRAINT chk_clientes_id CHECK (id_cliente > 0 AND id_cliente < 950000);
--RUN--

--SEQ 0246-- 11/07/2012 09:57 WILLIAN
DROP VIEW gerente.vcomissao_supervisor;

CREATE OR REPLACE VIEW gerente.vcomissao_supervisor AS 
 SELECT a.id_empresa, a.cod_supervisor, a.cod_vendedor, 'FAT'::bpchar AS origem, a.numero::character(15) AS numero, a.tipo, a.dtemi AS data, a.clien, b.razao, a.totpr - a.descv AS base, a.taxa_com_super, ((a.totpr - a.descv) / 100::numeric * a.taxa_com_super)::numeric(12,2) AS vl_comissao
   FROM gerente.pedidos a
   LEFT JOIN gerente.clientes b ON a.clien = b.id_cliente
  WHERE a.forma_pag_com_super = 'F'::bpchar AND a.situa = 3 AND (a.tipo = 'N'::bpchar OR a.tipo = 'D'::bpchar)
UNION ALL 
 SELECT a.id_empresa, b.cod_supervisor, a.cod_vendedor, 'REC'::bpchar AS origem, a.numero, b.tipo, a.dt_baixa AS data, a.deved AS clien, c.razao, 
        CASE
            WHEN COALESCE(( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9), 0::numeric) < a.valor THEN (a.base_comissao / a.valor * (( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9)))::numeric(12,2)
            ELSE a.base_comissao
        END AS base, b.taxa_com_super, 
        CASE
            WHEN COALESCE(( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9), 0::numeric) < a.valor THEN (a.base_comissao / a.valor * (( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9)) / 100::numeric * b.taxa_com_super)::numeric(12,2)
            ELSE (a.base_comissao / 100::numeric * b.taxa_com_super)::numeric(12,2)
        END AS vl_comissao
   FROM gerente.ctr a
   LEFT JOIN gerente.pedidos b ON a.id_pedido = b.id_pedido
   LEFT JOIN gerente.clientes c ON a.deved = c.id_cliente
  WHERE b.forma_pag_com_super = 'R'::bpchar AND a.situacao = 'Q'::bpchar
UNION ALL
 SELECT a.id_empresa, b.cod_supervisor, b.cod_vendedor, 'REC'::bpchar AS origem, b.numero::character(15) AS numero, b.tipo, a.data AS data, b.clien, c.razao, a.valor AS base, b.taxa_com_super, ((a.valor) / 100::numeric * b.taxa_com_super)::numeric(12,2) AS vl_comissao
  FROM gerente.recbtos A
  LEFT JOIN gerente.pedidos b ON a.id_pedido = b.id_pedido
  LEFT JOIN gerente.clientes c ON a.id_cliente = c.id_cliente
 WHERE origem='P' AND forma <> 4 AND forma <> 6 AND forma <> 8 AND forma <> 9 AND b.forma_pag_com_super = 'R'::bpchar AND b.situa = 3 AND (b.tipo = 'N'::bpchar OR b.tipo = 'D'::bpchar);
--RUN--

--SEQ 0247-- 14/08/2013 11:51 WILLIAN
DROP VIEW gerente.vcomissao_supervisor;

CREATE OR REPLACE VIEW gerente.vcomissao_supervisor AS 
 SELECT a.id_empresa, a.cod_supervisor, a.cod_vendedor, 'FAT'::bpchar AS origem, a.numero::character(15) AS numero, a.tipo, a.dtemi AS data, a.clien, b.razao, a.totpr - a.descv AS base, a.taxa_com_super, ((a.totpr - a.descv) / 100::numeric * a.taxa_com_super)::numeric(12,2) AS vl_comissao
   FROM gerente.pedidos a
   LEFT JOIN gerente.clientes b ON a.clien = b.id_cliente
  WHERE a.forma_pag_com_super = 'F'::bpchar AND a.situa = 3 AND (a.tipo = 'N'::bpchar OR a.tipo = 'D'::bpchar)
UNION ALL 
 SELECT a.id_empresa, b.cod_supervisor, a.cod_vendedor, 'REC'::bpchar AS origem, a.numero, b.tipo, a.dt_baixa AS data, a.deved AS clien, c.razao, 
        CASE
            WHEN COALESCE(( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9), 0::numeric) < a.valor THEN (a.base_comissao / a.valor * (( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9)))::numeric(12,2)
            ELSE a.base_comissao
        END AS base, b.taxa_com_super, 
        CASE
            WHEN COALESCE(( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9), 0::numeric) < a.valor THEN (a.base_comissao / a.valor * (( SELECT sum(d.valor) AS sum
               FROM gerente.recbtos d
              WHERE d.id_ctr = a.id_ctr AND d.forma <> 4 AND d.forma <> 6 AND d.forma <> 8 AND d.forma <> 9)) / 100::numeric * b.taxa_com_super)::numeric(12,2)
            ELSE (a.base_comissao / 100::numeric * b.taxa_com_super)::numeric(12,2)
        END AS vl_comissao
   FROM gerente.ctr a
   LEFT JOIN gerente.pedidos b ON a.id_pedido = b.id_pedido
   LEFT JOIN gerente.clientes c ON a.deved = c.id_cliente
  WHERE b.forma_pag_com_super = 'R'::bpchar AND a.situacao = 'Q'::bpchar
UNION ALL
 SELECT a.id_empresa, b.cod_supervisor, b.cod_vendedor, 'REC'::bpchar AS origem, b.numero::character(15) AS numero, b.tipo, a.data AS data, b.clien, c.razao, a.valor AS base, b.taxa_com_super, ((a.valor) / 100::numeric * b.taxa_com_super)::numeric(12,2) AS vl_comissao
  FROM gerente.recbtos A
  LEFT JOIN gerente.pedidos b ON a.id_pedido = b.id_pedido
  LEFT JOIN gerente.clientes c ON a.id_cliente = c.id_cliente
 WHERE origem='P' AND forma <> 4 AND forma <> 6 AND forma <> 8 AND forma <> 9 AND b.forma_pag_com_super = 'R'::bpchar AND (b.tipo = 'N'::bpchar OR b.tipo = 'D'::bpchar);
--RUN--

--SEQ 0248-- 26/08/2013 16:33 HENRIQUE
CREATE OR REPLACE VIEW gerente.vcomissao_supervisor_bom AS 
( SELECT a.id_empresa, a.cod_supervisor, a.cod_vendedor, 'FAT'::bpchar AS origem, a.numero::character(15) AS numero, a.tipo, a.dtemi AS data, a.clien, b.razao, a.totpr - a.descv AS base, a.taxa_com_super, ((a.totpr - a.descv) / 100::numeric * a.taxa_com_super)::numeric(12,2) AS vl_comissao
   FROM gerente.pedidos a
   LEFT JOIN gerente.clientes b ON a.clien = b.id_cliente
  WHERE a.forma_pag_com_super = 'F'::bpchar AND a.situa = 3 AND (a.tipo = 'N'::bpchar OR a.tipo = 'D'::bpchar)
UNION ALL 
 SELECT a.id_empresa, c.cod_supervisor, b.cod_vendedor, 'REC'::bpchar AS origem, b.numero, c.tipo, a.bom AS data, c.clien, d.razao, 
        CASE
            WHEN COALESCE(sum(a.valor), 0::numeric) < b.valor THEN b.base_comissao / b.valor * COALESCE(sum(a.valor), 0::numeric)
            ELSE b.base_comissao
        END::numeric(12,2) AS base, c.taxa_com_super, (
        CASE
            WHEN COALESCE(sum(a.valor), 0::numeric) < b.valor THEN b.base_comissao / b.valor * COALESCE(sum(a.valor), 0::numeric)
            ELSE b.base_comissao
        END / 100::numeric * c.taxa_com_super)::numeric(12,2) AS vl_comissao
   FROM gerente.recbtos a
   LEFT JOIN gerente.ctr b ON b.id_ctr = a.id_ctr
   LEFT JOIN gerente.pedidos c ON c.id_pedido = b.id_pedido
   LEFT JOIN gerente.clientes d ON c.clien = d.id_cliente
  WHERE c.forma_pag_com_super = 'R'::bpchar AND (a.forma <> ALL (ARRAY[4, 6, 8, 9]))
  GROUP BY a.id_empresa, c.cod_supervisor, b.cod_vendedor, b.valor, a.bom, b.numero, c.tipo, d.razao, c.clien, b.base_comissao, c.taxa_com_super, c.id_pedido)
UNION ALL 
 SELECT a.id_empresa, b.cod_supervisor, b.cod_vendedor, 'REC'::bpchar AS origem, b.numero::character(15) AS numero, b.tipo, a.bom AS data, b.clien, c.razao, a.valor AS base, b.taxa_com_super, (a.valor / 100::numeric * b.taxa_com_super)::numeric(12,2) AS vl_comissao
   FROM gerente.recbtos a
   LEFT JOIN gerente.pedidos b ON a.id_pedido = b.id_pedido
   LEFT JOIN gerente.clientes c ON a.id_cliente = c.id_cliente
  WHERE a.origem = 'P'::bpchar AND a.forma <> 4 AND a.forma <> 6 AND a.forma <> 8 AND a.forma <> 9 AND b.forma_pag_com_super = 'R'::bpchar AND b.situa = 3 AND (b.tipo = 'N'::bpchar OR b.tipo = 'D'::bpchar);
--RUN--

--SEQ 0249-- 23/09/2013 15:15 Willian
ALTER TABLE gerente.movtpcor ADD COLUMN id_empresa integer;
--RUN--

--SEQ 0250-- 08/11/2013 17:55 Alan
ALTER TABLE gestao.ctp DROP CONSTRAINT fk_ctp_entradas;
ALTER TABLE gestao.ctp DROP CONSTRAINT fk_ctp_oc;
--RUN--IGNORE ERRO

--SEQ 0251-- 02/12/2013 12:00 Alan
ALTER TABLE gestao.ctpagrupado DROP CONSTRAINT fk_ctpagrupado_entrada;
--RUN--IGNORE ERRO

--SEQ 0252-- 03/02/2014 15:00 JCS
DROP VIEW gerente.vsaldo_vef;
DROP VIEW gerente.vmovto_vef;

CREATE OR REPLACE VIEW gerente.vmovto_vef AS
SELECT 
    ped.id_pedido,
    ped.id_empresa,
    ped.dtemi as dt_emissao,
    ped.clien as id_cliente,
    ped.cod_vendedor as cod_vendedor,
    pedi.produ as id_produto,    
    CASE WHEN tes.est_poder_terceiro='F' THEN pedi.qtd 
         WHEN tes.est_poder_terceiro='D' AND ped.tipo='D' THEN pedi.qtd 
         ELSE -pedi.qtd END AS qtdade,
    pedi.total,    
    pedi.num_pedido_vinc,
    tes.est_poder_terceiro as tipo_movto
  FROM gerente.tes 
  LEFT OUTER JOIN gerente.peditens as pedi ON(pedi.id_tes=tes.id_tes) 
  LEFT OUTER JOIN gerente.pedidos  as ped  ON(ped.id_pedido=pedi.id_pedido) 
  WHERE tes.tce=2 and ped.situa = 3 ;

CREATE OR REPLACE VIEW gerente.vsaldo_vef AS
select id_empresa,id_cliente,id_produto,sum(qtdade) as qtdade
  from gerente.vmovto_vef
  group by id_empresa,id_cliente,id_produto;
--RUN--

--SEQ 0253-- 26/02/2014 10:00 JCS
ALTER TABLE gerente.clientes ADD COLUMN indicador_ie smallint;
ALTER TABLE gerente.clientes ADD CONSTRAINT chk_corrent_indicador_ie CHECK (indicador_ie IN (1,2,9));
UPDATE gerente.clientes SET indicador_ie=1 WHERE pesso=1 AND NOT inscr='ISENTO';
--UPDATE gerente.clientes SET indicador_ie=2 WHERE pesso=1 AND inscr='ISENTO'; -- NÃO EXECUTAR (JCS) FAZER MANUALMENTE
UPDATE gerente.clientes SET indicador_ie=9 WHERE indicador_ie IS NULL;
--RUN--

--SEQ 0254-- 15/04/2014 13:55 ALAN
ALTER TABLE gerente.clientes ALTER COLUMN id_cliente DROP DEFAULT;
--RUN--

--SEQ 0255-- 17/04/2014 15:30 ALAN
ALTER TABLE gerente.maqecf DROP CONSTRAINT key_maqecf_cpd_ativo;
--RUN--IGNORE ERRO

--SEQ 0256-- 17/04/2014 15:30 ALAN
ALTER TABLE gerente.maqecf ADD CONSTRAINT key_maqecf_cpd_ativo UNIQUE(id_empresa,cpd_ativo);
--RUN--

--SEQ 0257-- 27/05/2014 10:30 ALAN
ALTER TABLE gerente.clientes ADD COLUMN desc_cliente_rede smallint;
ALTER TABLE gerente.pedidos  ADD COLUMN desc_cliente_rede smallint;
--RUN--

--SEQ 0258-- 12/06/2014 14:00 ALAN
ALTER TABLE gestao.entradas DROP CONSTRAINT fk_entradas_oc;
ALTER TABLE gestao.entradet DISABLE TRIGGER atual_qtd_recebida_ocd;
CREATE INDEX key_entradet_id_ent_vinc ON gestao.entradet (id_ent_vinc);
--RUN--

--SEQ 0259-- 17/06/2014 10:10 ALAN
/*
      ESTE ERRO DEVE ACONTECER NO ÍNICIO DA CONVERSÃO DA 1º BASE E
      NÃO PODERAR MAS ACONTECER APÓS A ÚLTIMA BASE CONVERTIDA.
*/
ALTER TABLE gestao.ctp ADD CONSTRAINT fk_ctp_entradas FOREIGN KEY (id_ent) REFERENCES gestao.entradas (id_entrada);
ALTER TABLE gestao.ctpagrupado ADD CONSTRAINT fk_ctpagrupado_entrada FOREIGN KEY (id_entrada) REFERENCES gestao.entradas (id_entrada);
--RUN--

--SEQ 0260-- 10/07/2014 21:30 JCS
ALTER TABLE gerente.tes ADD COLUMN cod_ccusto integer;
ALTER TABLE gerente.tes ADD COLUMN cst_ipi character(2);
ALTER TABLE gerente.tes ADD COLUMN cst_pis integer;
ALTER TABLE gerente.tes ADD COLUMN cst_cofins integer;
--RUN--

--SEQ 0261-- 15/07/2014 09:30 HENRIQUE
ALTER TABLE gerente.tes ADD COLUMN tipo_sar smallint;
ALTER TABLE gerente.tes ADD CONSTRAINT key_tes_tipo_sar UNIQUE (id_empresa, tes_valida_cons_final, tipo_sar)
--RUN--

--SEQ 0262-- 21/07/2014 15:20 JCS
ALTER TABLE gerente.pedidos ADD COLUMN cod_formapag2 integer;
--RUN--

--SEQ 0263-- 19/08/2014 15:00 Willian
ALTER TABLE gerente.ctr DROP CONSTRAINT chk_ctr_situacao;
ALTER TABLE gerente.ctr ADD CONSTRAINT chk_ctr_situacao 
  CHECK ((situacao='A' and not saldo=0) OR (situacao in ('Q','F') and saldo=0) OR (situacao ='C' and recbt=0 and saldo=0));
--RUN--

--SEQ 0264-- 02/09/2014 09:45 ALAN
select now();
--transferido para gestao
--RUN--

--SEQ 0265-- 22/09/2014 08:20 HENRIQUE
ALTER TABLE gerente.clientes ALTER COLUMN email_nfe TYPE character(256);
--RUN--

--SEQ 0266-- 24/09/2014 13:55 POR JCS
ALTER TABLE gerente.clientes ADD COLUMN perc_carga_trib numeric(7,2);
--RUN--

--SEQ 0267-- 30/09/2014 20:33 POR JCS
ALTER TABLE gerente.clientes ADD COLUMN validade_suframa date;
--RUN--

--SEQ 0268-- 30/09/2014 20:41 POR JCS
ALTER TABLE gerente.tes ADD COLUMN desc_cofins numeric(7,2);
ALTER TABLE gerente.tes ADD COLUMN cod_mot_deson smallint;
ALTER TABLE gerente.tes ADD COLUMN cod_ic_deson int;
--RUN--

--SEQ 0269-- 27/10/2014 11:30 POR ALAN
/*
      EM CASO DE ERRO FALAR COM ALAN.
*/
ALTER TABLE gestao.boleto ADD CONSTRAINT fk_boleto_ctr FOREIGN KEY (id_empresa,nosso_numero) REFERENCES gerente.ctr (id_empresa,nbanco);
--RUN--

--SEQ 0270-- 16/01/2015 16:00 POR Willian
ALTER TABLE gerente.clientes ADD COLUMN inscr_municipal character varying(15);
ALTER TABLE gerente.pedidos ADD COLUMN indic_presencial char(1);
--RUN--

--SEQ 0271-- 20/01/2015 17:00 POR Willian
ALTER TABLE gerente.servico ALTER COLUMN cod_class_servico TYPE character(5);
ALTER TABLE gerente.peditens ADD COLUMN vl_deducao_bc_issqn numeric(15,2);
ALTER TABLE gerente.peditens ADD COLUMN vl_outras_ret_issqn numeric(15,2);
ALTER TABLE gerente.peditens ADD COLUMN vl_desc_incond numeric(15,2);
ALTER TABLE gerente.peditens ADD COLUMN vl_desc_cond numeric(15,2);
ALTER TABLE gerente.peditens ADD COLUMN vl_ret_issqn numeric(15,2);
ALTER TABLE gerente.peditens ADD COLUMN id_mun_insid_issqn integer;
ALTER TABLE gerente.peditens ADD COLUMN cod_pais_issqn integer;
ALTER TABLE gerente.peditens ADD COLUMN num_processo_issqn character varying(30);
--RUN--

--SEQ 0272-- 25/01/2015 21:30 POR JCS
CREATE OR REPLACE VIEW gerente.vmeios_pagto_paf AS
SELECT c.id_empresa,
  CASE WHEN a.forma=1 THEN 'DI'
       WHEN a.forma=2 THEN 'CH'
       WHEN a.forma=3 THEN 'BA'
       ELSE 'OU'
  END AS tipo,
  sum(a.valor) as valor,
  a.data
  FROM gerente.recbtos A
  LEFT OUTER JOIN gerente.ctr B ON (a.id_ctr=b.id_ctr)
  LEFT OUTER JOIN gestao.nf C ON (b.id_nf=c.id_nf)
  GROUP BY c.id_empresa,a.forma,a.data;
--RUN--

--SEQ 0273-- 28/01/2015 15:00 POR Willian
ALTER TABLE gerente.pedidos ADD COLUMN data_servico date;
--RUN--

--SEQ 0274-- 07/03/2015 15:00
ALTER TABLE gerente.recbtos ADD COLUMN id_lancto integer;
--RUN--

--SEQ 0275-- 07/03/2015 15:00
alter table gerente.pedidos disable trigger all;
update gerente.pedidos set num_pauta=null,obs=CASE WHEN not num_pauta='' THEN (trim(obs)||' pauta:'||num_pauta) ELSE obs END where not num_pauta in(select num_pauta from gestao.pauta);
ALTER TABLE gerente.pedidos ADD CONSTRAINT fk_pedidos_pauta FOREIGN KEY (num_pauta) REFERENCES gestao.pauta (num_pauta);
alter table gerente.pedidos enable trigger all;

update gerente.clientes set cod_pauta=null where not cod_pauta in(select codigo from gestao.pauta);
ALTER TABLE gerente.clientes ADD CONSTRAINT fk_clientes_pauta FOREIGN KEY (cod_pauta) REFERENCES gestao.pauta (codigo);
--RUN--

--SEQ 0276-- 02/04/2015 17:21
ALTER TABLE gerente.maqecf DROP CONSTRAINT key_maqecf_cpd_ativo;
UPDATE gerente.maqecf SET cpd_ativo='1' WHERE cpd_ativo IS NOT NULL;
--RUN--

--SEQ 0277-- 07/03/2015 11:30 Willian
ALTER TABLE gerente.clientes ADD COLUMN cod_obs_nf integer;
ALTER TABLE gerente.clientes ADD COLUMN descr_obs_nf character(200);
ALTER TABLE gerente.clientes ADD COLUMN aliq_funrural numeric(6,2);
--RUN--

--SEQ 0278-- 30/04/2015 15:00 Alan
/*
      ESTE ERRO DEVE ACONTECER NO ÍNICIO DA CONVERSÃO DA 1º BASE E
      NÃO PODERAR MAS ACONTECER APÓS A ÚLTIMA BASE CONVERTIDA.
*/
ALTER TABLE gestao.entradas ADD CONSTRAINT fk_entradas_oc FOREIGN KEY (num_oc, id_empresa) REFERENCES gestao.oc (numero, id_empresa);
ALTER TABLE gestao.ctp ADD CONSTRAINT fk_ctp_oc FOREIGN KEY (id_oc) REFERENCES gestao.oc (id_oc);
--RUN--

--SEQ 0279-- 12/05/2015 07:20 POR JCS
ALTER TABLE gerente.peditens ADD COLUMN qtd_picking numeric(15,3);
ALTER TABLE gerente.peditens ADD COLUMN qtd_disp_pick numeric(15,3);
ALTER TABLE gerente.peditens ADD COLUMN sit_picking character(1);

ALTER TABLE gerente.pedidos ADD COLUMN sit_picking character(2);
--RUN--

--SEQ 0280-- 27/07/2015 11:30 POR ALAN
ALTER TABLE gerente.pedidos ALTER COLUMN num_pauta TYPE character(20);
--RUN--

--SEQ 0281-- 19/08/2015 06:10 POR JCS
ALTER TABLE gerente.ctr ADD COLUMN origem_lancto character(2);

CREATE OR REPLACE VIEW gerente.vcc_adcliente AS
SELECT a.id_empresa,a.deved,c.razao,b.data,'AD' as tipo,a.numero,a.docto,b.valor,1 as status
  FROM gerente.ctr A 
  LEFT OUTER JOIN gerente.recbtos B ON (a.id_ctr=b.id_ctr)
  LEFT OUTER JOIN gerente.clientes C ON (a.deved=c.id_cliente)
  WHERE origem_lancto='AD' AND a.id_pedido IS NULL
UNION ALL
SELECT a.id_empresa,a.deved,c.razao,b.data,'BX' as tipo,a.numero,a.docto,-b.valor,1 as status
  FROM gerente.ctr A 
  LEFT OUTER JOIN gerente.recbtos B ON (a.id_ctr=b.id_ctr)
  LEFT OUTER JOIN gerente.clientes C ON (a.deved=c.id_cliente)
  WHERE b.forma=21;
--RUN--

--SEQ 282-- 01/10/2015 15:53 CRISTIANO
ALTER TABLE gerente.clientes ADD COLUMN tp_desconto smallint NOT NULL DEFAULT 1;
--RUN--

--SEQ 283-- 05/10/2015 15:40 JCS
CREATE OR REPLACE VIEW gerente.vresumocarga1 AS
SELECT a.id_carga,a.id_empresa,a.data,a.prsaida,d.placa,c.produ,c.qtd,c.obs
  FROM gestao.carga A
  LEFT OUTER JOIN gerente.pedidos B ON (a.id_carga=b.carga)
  LEFT OUTER JOIN gerente.peditens C ON (b.id_pedido=c.id_pedido)
  LEFT OUTER JOIN gestao.veiculo D ON (d.codigo=a.cod_veiculo AND d.id_empresa=(SELECT id_matriz FROM gestao.empresa WHERE id_empresa=a.id_empresa));

CREATE OR REPLACE VIEW gerente.vresumocarga2 AS
SELECT a.id_carga,a.id_empresa,a.data,a.prsaida,d.placa,b.peso_liquido,a.desti
  FROM gestao.carga A
  LEFT OUTER JOIN gerente.pedidos B ON (a.id_carga=b.carga)
  LEFT OUTER JOIN gestao.veiculo D ON (d.codigo=a.cod_veiculo AND d.id_empresa=(SELECT id_matriz FROM gestao.empresa WHERE id_empresa=a.id_empresa));
--RUN--

--SEQ 284-- 09/11/2015 16:00 JCS
ALTER TABLE gerente.tes ADD COLUMN codigo_enq_ipi character(3);
--RUN--

--SEQ 285-- 14/01/2016 15:13 CRISTIANO
ALTER TABLE gerente.pedidos ADD COLUMN placa_veic character(7);
--RUN--

--SEQ 286-- 19/02/2016 11:11 CRISTIANO
ALTER TABLE gerente.clientes ADD COLUMN enquadramento character varying(3);
ALTER TABLE gerente.clientes ADD CONSTRAINT chk_enquadramento CHECK (enquadramento = ANY (ARRAY['LR', 'LP', 'EPP', 'ME', 'MEI']));
--RUN--

--SEQ 287-- 01/03/2016 09:34 CRISTIANO
ALTER TABLE gerente.ctr ADD COLUMN tx_desc_cond numeric(6,2) NOT NULL DEFAULT 0;
--RUN--

--SEQ 288-- 08/03/2016 09:34 CRISTIANO
ALTER TABLE gerente.clientes DROP CONSTRAINT chk_enquadramento;
ALTER TABLE gerente.clientes ADD CONSTRAINT chk_enquadramento CHECK (enquadramento = ANY (ARRAY['LR', 'LP', 'EPP', 'ME', 'MEI', 'NA']));
--RUN--

--SEQ 289-- 23/03/2016 17:10 CRISTIANO
ALTER TABLE gerente.clientes ADD COLUMN id_tes integer;
ALTER TABLE gerente.clientes ADD CONSTRAINT fk_cliente_tes FOREIGN KEY (id_tes) REFERENCES gerente.tes (id_tes);
--RUN--

--SEQ 290-- 24/03/2016 11:30 JCS
ALTER TABLE gerente.peditens ADD COLUMN vl_icms_partilha numeric(15,2);
--RUN--

--SEQ 291-- 18/04/2016 08:20 CRISTIANO
ALTER TABLE gerente.cfgcadastro ADD COLUMN exigir_referencia_produto smallint;
--RUN--

--SEQ 292-- 25/04/2016 14:44 CRISTIANO
ALTER TABLE gerente.ctr ALTER COLUMN obs TYPE character varying(120);
--RUN--

--SEQ 293-- 18/05/2016 11:04 Alan
ALTER TABLE gerente.clientes ALTER COLUMN e_mail TYPE character(80);
--RUN--

--SEQ 294-- 26/07/2016 11:10 JCS
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_origem;
ALTER TABLE gerente.recbtos  ADD CONSTRAINT chk_recbto_origem CHECK (origem IN ('C','P','A'));

ALTER TABLE gerente.recbtos ADD COLUMN num_adiant integer;
--RUN--

--SEQ 295-- 10/08/2016 18:54 JCS
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_forma;
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbto_forma CHECK (forma in (1,2,3,4,5,6,7,8,9,10,21));
CREATE INDEX key_recbtos_forma ON gerente.recbtos (id_cliente,origem,forma);

DROP VIEW gerente.vcc_adcliente;

CREATE OR REPLACE VIEW gerente.vcc_adiant_cliente AS
SELECT id_recbto,a.id_empresa,id_cliente,a.data,'AD'::text as prefixo,num_adiant::text as docto,forma,valor,a.obs FROM gerente.recbtos A 
   WHERE origem='A'
UNION ALL
SELECT id_recbto,a.id_empresa,id_cliente,a.data,prefixo,numero,forma,-a.valor,a.obs
  FROM gerente.recbtos A
  LEFT OUTER JOIN gerente.ctr B ON (a.id_ctr=b.id_ctr)
  WHERE forma=21 AND origem='C'
UNION ALL
SELECT id_recbto,a.id_empresa,id_cliente,a.data,'PED'::text,numero::text,forma,-a.valor,a.obs
  FROM gerente.recbtos A
  LEFT OUTER JOIN gerente.pedidos B ON (a.id_pedido=b.id_pedido) 
  WHERE forma=21 AND origem='P';
--RUN--

--SEQ 296-- 29/08/2016 17:00 JCS
ALTER TABLE gerente.pedidos DROP CONSTRAINT fk_pedidos_cliente;

ALTER TABLE gerente.pedidos
  ADD CONSTRAINT fk_pedidos_cliente FOREIGN KEY (clien)
      REFERENCES gerente.clientes (id_cliente) DEFERRABLE INITIALLY DEFERRED;
--RUN--

--SEQ 297-- 04/10/2016 09:18 JCS
ALTER TABLE gestao.socios DROP CONSTRAINT fk_socios_cliente;
ALTER TABLE gestao.socios 
      ADD CONSTRAINT fk_socios_cliente 
      FOREIGN KEY (id_cliente) REFERENCES gerente.clientes (id_cliente) DEFERRABLE INITIALLY DEFERRED;
--RUN--

--SEQ 298-- 16/03/2017 14:00 JCS
DELETE FROM gerente.registro WHERE chave='ConfigSIS' AND nome='Consulta Produtos';
--RUN--

--SEQ 299-- 16/03/2017 15:00 JCS
CREATE TABLE gerente.sitpedido
(
  id_sitpedido integer NOT NULL,
  descricao character(30) NOT NULL,
  sigla character(5) NOT NULL,
  padrao smallint NOT NULL,
  ativo smallint NOT NULL,
  operacional smallint NOT NULL,
  soma_ped_entregar smallint NOT NULL DEFAULT 0,
  CONSTRAINT pk_sitpedido PRIMARY KEY (id_sitpedido)
 );
 
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (01, 'Pendente                      ', 'P    ', 1, 1, 1, 1);
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (02, 'Liberado                      ', 'L    ', 1, 1, 1, 1);
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (03, 'Faturado/Emitido              ', 'FT   ', 1, 1, 1, 0);
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (04, 'Cancelado                     ', 'C    ', 1, 1, 1, 0);
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (05, 'SAR                           ', 'SAR  ', 1, 1, 1, 1);
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (91, 'Bloqueado Financeiro          ', 'BLF  ', 1, 1, 1, 1);
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (92, 'Bloqueado Comercial           ', 'BLC  ', 1, 1, 1, 1);
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (93, 'Expedição/Separação           ', 'EXP  ', 1, 1, 1, 1);
INSERT INTO gerente.sitpedido (id_sitpedido, descricao, sigla, padrao, ativo, operacional,soma_ped_entregar) VALUES (94, 'SAC                           ', 'SAC  ', 1, 1, 1, 1);

ALTER TABLE gerente.pedidos DROP CONSTRAINT chk_pedidos_situa;
ALTER TABLE gerente.pedidos ADD CONSTRAINT fk_pedidos_sitpedido FOREIGN KEY (situa)  REFERENCES gerente.sitpedido (id_sitpedido);

CREATE INDEX key_pedidos_situa ON gerente.pedidos (situa,id_empresa);
CREATE INDEX key_pedidos_previ ON gerente.pedidos (previ,id_empresa);
--RUN--

--SEQ 300-- 16/03/2017 15:00 Willian
DROP VIEW gerente.vcc_adiant_cliente;

CREATE OR REPLACE VIEW gerente.vcc_adiant_cliente AS
SELECT id_recbto,a.id_empresa,id_cliente,a.data,'AD'::text as prefixo,num_adiant::text as docto,forma,valor,a.obs FROM gerente.recbtos A 
   WHERE origem='A' and forma<>9
UNION ALL
SELECT id_recbto,a.id_empresa,id_cliente,a.data,prefixo,numero,forma,-a.valor,a.obs
  FROM gerente.recbtos A
  LEFT OUTER JOIN gerente.ctr B ON (a.id_ctr=b.id_ctr)
  WHERE forma=21 AND origem='C'
UNION ALL
SELECT id_recbto,a.id_empresa,id_cliente,a.data,'PED'::text,numero::text,forma,-a.valor,a.obs
  FROM gerente.recbtos A
  LEFT OUTER JOIN gerente.pedidos B ON (a.id_pedido=b.id_pedido) 
  WHERE forma=21 AND origem='P'
UNION ALL
SELECT id_recbto,a.id_empresa,id_cliente,a.data,'DEV'::text as prefixo,num_adiant::text as docto,forma,-valor,a.obs FROM gerente.recbtos A 
   WHERE origem='A' and forma=9  
--RUN--

--SEQ 301-- 07/04/2017 11:00 CAROL
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_pedido;

ALTER TABLE gerente.recbtos
ADD CONSTRAINT chk_recbto_pedido CHECK ((origem = 'P'::bpchar OR origem = 'C'::bpchar OR origem = 'A'::bpchar AND forma = 8) AND id_pedido IS NOT NULL OR NOT origem = 'P'::bpchar AND id_pedido IS NULL);
--RUN--

--SEQ 302-- 13/04/2017 17:20 ALAN
ALTER TABLE gerente.maqecf ADD COLUMN num_cred_ecf numeric(15,0);
--RUN--

--SEQ 303-- 17/04/2017 16:50 Willian
ALTER TABLE gerente.peditens ADD COLUMN bc_icms_antecipado numeric(12,2);
ALTER TABLE gerente.peditens ADD COLUMN vl_icms_antecipado numeric(12,2);
--RUN--

--SEQ 305-- 04/05/2017 17:40 Alan
ALTER TABLE gerente.maqecf ADD CONSTRAINT key_maqecf_num_serie UNIQUE(num_serie);
--RUN--

--SEQ 306-- 09/05/2017 17:10 JCS
CREATE OR REPLACE VIEW gerente.vlucratividade AS
SELECT 'PED'::char(3) as origem,a.id_empresa,a.numero,a.tipo,a.dtemi,a.dt_baixa_ctr,a.clien,a.cod_vendedor,
        a.estoq_vendedor,a.cod_formapag,b.produ,b.vl_totliq::numeric(15,2),b.vl_cmv,b.vl_mc,
        b.vl_icms,b.ipi as vl_ipi,0 as vl_pis,0 as vl_cofins
  FROM gerente.pedidos A
  LEFT OUTER JOIN gerente.peditens B ON (a.id_pedido=b.id_pedido)
  LEFT OUTER JOIN gerente.tes C ON (b.id_tes=c.id_tes) 
  WHERE a.tipo IN ('N','D') AND a.situa=3 AND c.operacional=1 AND (a.id_tipov=1 OR a.id_tipov=2 OR a.id_tipov=4 OR a.id_tipov=0)
UNION ALL
SELECT 'NF'::char(3) as origem,a.id_empresa,a.numero,c.natureza,a.dt_emissao,a.dt_emissao as dt_baixa_ctr,a.id_desrem,d.cod_vendedor,
        0 AS estoq_vendedor,0 AS cod_formapag,b.id_produto,(b.vl_total_bruto-b.vl_desconto+b.vl_frete+b.vl_seguro+b.vl_desp_acessorias)::numeric(15,2) as vl_totliq ,
       (COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where id_empresa=a.id_empresa),a.id_empresa) AND data<=a.dt_emissao ORDER BY data DESC LIMIT 1),
                (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where id_empresa=a.id_empresa),a.id_empresa) AND data>=a.dt_emissao ORDER BY data LIMIT 1)) * b.qtd_comercial)::numeric(15,2) as vl_cmv,
       (b.vl_total_bruto-b.vl_desconto+b.vl_frete+b.vl_seguro+b.vl_desp_acessorias)-b.vl_icms-b.vl_pis-b.vl_cofins-(COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data<=a.dt_emissao ORDER BY data DESC LIMIT 1),
                                                   (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data>=a.dt_emissao ORDER BY data LIMIT 1)) * b.qtd_comercial)::numeric(15,2) as vl_mc,b.vl_icms,b.vl_ipi,b.vl_pis,b.vl_cofins
  FROM gestao.nf A
  LEFT OUTER JOIN gestao.nfdet B ON (a.id_nf=b.id_nf)
  LEFT OUTER JOIN gerente.tes C ON (b.id_tes=c.id_tes) 
  LEFT OUTER JOIN gerente.pedidos D ON (a.num_pedido=d.numero AND a.id_empresa=d.id_empresa) 
  WHERE a.status='E' AND c.operacional=1 AND b.cfop NOT IN (5929,6929) AND ((a.tp_docto='S' AND c.natureza='N') OR (a.tp_docto='E' AND c.natureza='D'))
UNION ALL  
SELECT 'CF'::char(3) as origem,a.id_empresa,a.numero,'N',a.data,a.data as dt_baixa_ctr,a.id_cliente,a.cod_vendedor,0 AS estoq_vendedor,
        0 AS cod_formapag,b.id_produto,b.vl_base,
       (COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where id_empresa=a.id_empresa),a.id_empresa) AND data<=a.data ORDER BY data DESC LIMIT 1),
                (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where id_empresa=a.id_empresa),a.id_empresa) AND data>=a.data ORDER BY data LIMIT 1)) * b.qtdade)::numeric(15,2) as vl_cmv,
       (b.vl_base-b.vl_imposto-b.vl_pis-b.vl_cofins-(COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data<=a.data ORDER BY data DESC LIMIT 1),
                                                   (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data>=a.data ORDER BY data LIMIT 1)) * b.qtdade))::numeric(15,2) as vl_mc,
      b.vl_imposto as vl_icms,0 as vl_ipi,b.vl_pis,b.vl_cofins
  FROM gerente.cfiscal A
  LEFT OUTER JOIN gerente.cfiscald B ON (a.id_cfiscal=b.id_cfiscal)
  WHERE a.situacao='E' AND b.item_cancelado=0;
--RUN--

--SEQ 307-- 17/07/2017 08:58 CAROL
ALTER TABLE gerente.clientes ADD COLUMN exige_oc smallint;
ALTER TABLE gerente.ctr ADD COLUMN origem_transferencia integer;
ALTER TABLE gerente.ctr ADD COLUMN emp_transferencia integer;
--RUN--

--SEQ 308-- 20/07/2017 08:58 CAROL
update gerente.ctr set origem_transferencia = NULL, emp_transferencia= null where origem_transferencia=0 
--RUN--

--SEQ 309-- 12/09/2017 15:20 JCS
UPDATE gerente.ctr SET origem_lancto='CH' WHERE prefixo='CH' AND NOT origem_lancto='CH';
--RUN--

--SEQ 310-- 21/09/2017 08:23 CAROL
ALTER TABLE gerente.clientes ADD COLUMN exige_pallet smallint;;
--RUN--

--SEQ 311-- 13/11/2017 10:00 ALAN
ALTER TABLE gerente.ctr ADD COLUMN id_nfs integer;
ALTER TABLE gerente.ctr ADD CONSTRAINT fk_ctr_nfs FOREIGN KEY (id_nfs) REFERENCES gestao.nfs (id_nfs);
--RUN--

--SEQ 312-- 07/12/2017 11:20 ALAN
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='sistema' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='tp_preco' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='preco' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='pauta' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='bloq_estoque' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='tp_atual' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='usar_st_tps' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='localestoque' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='empsecundaria' and cpd_ativo='1';
INSERT INTO gerente.registro(chave, nome, valor) select a.chave, a.nome||'_'||b.num_serie, a.valor from gerente.registro as a,gerente.maqecf as b where a.chave='atpdvplus' and a.nome='aviso_ncm' and cpd_ativo='1';
--RUN--

--SEQ 313-- 21/02/2017 15:50 ALAN
ALTER TABLE gestao.ocorrencia ADD CONSTRAINT fk_ocorrencia_cheque FOREIGN KEY (id_cheque) REFERENCES gerente.cheques (id_cheque);
ALTER TABLE gestao.ocorrencia ADD CONSTRAINT fk_ocorrencia_ctr FOREIGN KEY (id_ctr) REFERENCES gerente.ctr (id_ctr);
--RUN--

--SEQ 314-- 08/03/2018 09:00 Willian
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_forma;
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbto_forma CHECK (forma = ANY (ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 21, 22, 23]));
--RUN--

--SEQ 315-- 22/03/2018 14:15 POR Willian
ALTER TABLE gerente.peditens ADD COLUMN qtd_empenhada numeric(15,3);
--RUN--

--SEQ 316-- 05/04/2018 17:00 CAROL
ALTER TABLE gestao.cargadet
ADD CONSTRAINT fk_cargadet_pedidos FOREIGN KEY (id_pedido)
REFERENCES gerente.pedidos (id_pedido) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION;
--RUN--

--SEQ 317-- 06/04/2018 14:30 POR Willian
ALTER TABLE gerente.peditens ADD COLUMN perc_fcpst numeric(6,2);
ALTER TABLE gerente.peditens ADD COLUMN bc_fcpst numeric(15,2);
ALTER TABLE gerente.peditens ADD COLUMN vl_fcpst numeric(15,2);
ALTER TABLE gerente.pedidos ADD COLUMN vl_fcpst numeric(15,2);
--RUN--

--SEQ 0318-- 02/05/2018 09:40 Alan
ALTER TABLE gerente.clientes ALTER COLUMN ender TYPE character(60);
ALTER TABLE gerente.clientes ALTER COLUMN compl TYPE character(60);
--RUN--

--SEQ 0319-- 30/07/2018 15:30 Willian
ALTER TABLE gerente.producao ALTER COLUMN numero TYPE numeric(8);
--RUN--

--SEQ 0320-- 14/08/2018 14:30 JCS
ALTER TABLE gerente.peditens ALTER COLUMN peso_bruto TYPE numeric(15,3);
ALTER TABLE gerente.peditens ADD COLUMN peso_liquido numeric(15,3) NOT NULL DEFAULT 0;
--RUN--

--SEQ 0321-- 31/08/2018 14:30 ALAN
ALTER TABLE gerente.clientes ADD COLUMN nome_prop_produtor character(60);
ALTER TABLE gerente.clientes ADD COLUMN local_leitura_gps smallint;
ALTER TABLE gerente.clientes ADD COLUMN altitude  numeric(11,6);
ALTER TABLE gerente.clientes ADD COLUMN latitude  numeric(11,6);
ALTER TABLE gerente.clientes ADD COLUMN longitude numeric(11,6);
--RUN--

--SEQ 0322-- 05/09/2018 10:00 ALAN
INSERT INTO gestao.colaborador(
            id_colaborador, id_empresa, codigo, nome, endereco, bairro, cep, 
            id_municipio, telefone_ddd, telefone, cpf, numero_rg, orgex_rg, 
            uf_rg, dtemi_rg, salario, encargos, outros, id_setor, numero_ctps, 
            serie_ctps, uf_ctps, dt_cadastro, dt_baixa, login, venda_lib, 
            apelido, id_prestadora, taxa_desconto, taxa_com_prod, taxa_com_serv)
SELECT id_colaborador, id_empresa, codigo, nome, endereco, bairro, cep, 
       id_municipio, telefone_ddd, telefone, cpf, numero_rg, orgex_rg, 
       uf_rg, dtemi_rg, salario, encargos, outros, id_setor, numero_ctps, 
       serie_ctps, uf_ctps, dt_cadastro, dt_baixa, login, venda_lib, 
       apelido, id_prestadora, taxa_desconto, taxa_com_prod, taxa_com_serv
  FROM gerente.colaborador;

SELECT setval('gestao.colaborador_id_colaborador_seq', (select max(id_colaborador) from gestao.colaborador), true);

ALTER TABLE gerente.colaborador RENAME TO old_colaborador;
--RUN--

--SEQ 0323-- 12/09/2018 09:00 ALAN
ALTER TABLE gestao.entradas ENABLE TRIGGER all;
UPDATE gestao.entradas SET id_banco=null WHERE id_banco=0;
UPDATE gestao.entradas SET id_banco_cred=null WHERE id_banco_cred=0;
ALTER TABLE gestao.entradas ENABLE TRIGGER all;

ALTER TABLE gestao.pagtos DISABLE TRIGGER all;
UPDATE gestao.pagtos SET id_banco_cred=null WHERE id_banco_cred=0;
UPDATE gestao.pagtos SET id_banco=null WHERE id_banco=0;
ALTER TABLE gestao.pagtos ENABLE TRIGGER all;

ALTER TABLE gestao.entradas ADD CONSTRAINT  fk_entradas_portador1 FOREIGN KEY (id_banco) REFERENCES gestao.portador (id_portador);
ALTER TABLE gestao.entradas ADD CONSTRAINT  fk_entradas_portador2 FOREIGN KEY (id_banco_cred) REFERENCES gestao.portador (id_portador);

ALTER TABLE gestao.ctp ADD CONSTRAINT  fk_ctp_portador FOREIGN KEY (porta)  REFERENCES gestao.portador (id_portador);

ALTER TABLE gestao.pagtos ADD  CONSTRAINT fk_pagdet_portador FOREIGN KEY (id_banco)   REFERENCES gestao.portador (id_portador);
ALTER TABLE gestao.pagtos ADD  CONSTRAINT fk_pagdet_banco_cred FOREIGN KEY (id_banco_cred)  REFERENCES gestao.portador (id_portador);
--RUN--

--SEQ 0324-- 04/10/2018 14:45 ALAN
CREATE TABLE gerente.recpraga
(
  id_recpraga serial NOT NULL,
  codigo integer NOT NULL,
  nome_cientifico character varying(50) NOT NULL,
  nome_comum character varying(50) NOT NULL,
  CONSTRAINT pk_recpraga PRIMARY KEY (id_recpraga),
  CONSTRAINT key_recpraga UNIQUE (codigo)
);

CREATE TABLE gerente.recproxcul
(
  id_recproxcul serial NOT NULL,
  cod_recprod integer NOT NULL,
  cod_reccult integer NOT NULL,
  dosagem numeric(12,2),
  cod_unidade_dosagem integer,
  inter_seg_dia integer,
  diagnostico character varying(120),
  CONSTRAINT pk_recproxcul PRIMARY KEY (id_recproxcul),
  CONSTRAINT key_recproxcul UNIQUE (cod_recprod,cod_reccult)
);
--RUN--

--SEQ 0325-- 09/10/2018 16:00 Willian
ALTER TABLE gerente.peditens ADD COLUMN vl_deson_icms numeric(15,2);
--RUN--

--SEQ 0326-- 11/10/2018 09:15 Alan
ALTER TABLE gerente.cfiscalfp ADD COLUMN nome_rede character(8);
ALTER TABLE gerente.cfiscalfp ADD COLUMN tipo_transacao smallint;
ALTER TABLE gerente.cfiscalfp ADD COLUMN nsu character(12);
--RUN--

--SEQ 0327-- 14/11/2018 11:15 Alan
CREATE OR REPLACE VIEW gerente.vmovto_consig AS 
         SELECT 'PED'::text AS tipo,
            ped.id_pedido AS id,
            ped.id_empresa,
            ped.dtemi AS dt_emi_ent,
            ped.clien AS id_cli_for,
            ped.cod_vendedor,
            pedi.produ AS id_produto,
            pedi.qtd AS qtdade,
            pedi.total,
            pedi.num_pedido_vinc,
            tes.est_poder_terceiro AS tipo_movto,
            ped.numero,
            ped.prz_con,
            0 AS id_empresa_doc_vinc
           FROM gerente.tes
      LEFT JOIN gerente.peditens pedi ON pedi.id_tes = tes.id_tes
   LEFT JOIN gerente.pedidos ped ON ped.id_pedido = pedi.id_pedido
  WHERE tes.tce = 1 AND ped.situa = 3
UNION ALL
         SELECT 'ENT'::text AS tipo,
            d.id_entrada AS id,
            d.id_empresa,
            d.entra AS dt_emi_ent,
            d.id_forne AS id_cli_for,
            NULL::integer AS cod_vendedor,
            c.produ AS id_produto,
            c.qtd AS qtdade,
            c.total,
            c.num_pedido_vinc,
            tes.est_poder_terceiro AS tipo_movto,
            d.numero,
            0 AS prz_con,
            c.id_empresa_doc_vinc
           FROM gestao.empresa b
      LEFT JOIN gerente.tes tes ON b.id_empresa = tes.id_empresa
   LEFT JOIN gestao.entradet c ON tes.codigo = c.cod_tes AND tes.id_empresa = b.id_matriz
   LEFT JOIN gestao.entradas d ON d.id_entrada = c.id_entrada
  WHERE tes.tce = 1 AND tes.est_poder_terceiro = 'D'::bpchar AND d.id_entrada > 0;
--RUN--

--SEQ 328-- 27/11/2018 15:15 Willian
CREATE OR REPLACE VIEW gerente.vlucratividade AS
SELECT 'PED'::char(3) as origem,a.id_empresa,a.numero,a.tipo,a.dtemi,a.dt_baixa_ctr,a.clien,a.cod_vendedor,
        a.estoq_vendedor,a.cod_formapag,b.produ,b.vl_totliq::numeric(15,2),b.vl_cmv,b.vl_mc,
        b.vl_icms,b.ipi as vl_ipi,0 as vl_pis,0 as vl_cofins
  FROM gerente.pedidos A
  LEFT OUTER JOIN gerente.peditens B ON (a.id_pedido=b.id_pedido)
  LEFT OUTER JOIN gerente.tes C ON (b.id_tes=c.id_tes) 
  WHERE a.tipo IN ('N','D') AND a.situa=3 AND c.operacional=1 AND (a.id_tipov=1 OR a.id_tipov=2 OR a.id_tipov=4 OR a.id_tipov=0)
UNION ALL
SELECT 'NF'::char(3) as origem,a.id_empresa,a.numero,c.natureza,a.dt_emissao,d.dt_baixa_ctr as dt_baixa_ctr,a.id_desrem,d.cod_vendedor,
        0 AS estoq_vendedor,0 AS cod_formapag,b.id_produto,(b.vl_total_bruto-b.vl_desconto+b.vl_frete+b.vl_seguro+b.vl_desp_acessorias)::numeric(15,2) as vl_totliq ,
       (COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data<=a.dt_emissao ORDER BY data DESC LIMIT 1),
                (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data>=a.dt_emissao ORDER BY data LIMIT 1)) * b.qtd_comercial)::numeric(15,2) as vl_cmv,
       (b.vl_total_bruto-b.vl_desconto+b.vl_frete+b.vl_seguro+b.vl_desp_acessorias)-b.vl_icms-b.vl_pis-b.vl_cofins-(COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data<=a.dt_emissao ORDER BY data DESC LIMIT 1),
                                                   (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data>=a.dt_emissao ORDER BY data LIMIT 1)) * b.qtd_comercial)::numeric(15,2) as vl_mc,b.vl_icms,b.vl_ipi,b.vl_pis,b.vl_cofins
  FROM gestao.nf A
  LEFT OUTER JOIN gestao.nfdet B ON (a.id_nf=b.id_nf)
  LEFT OUTER JOIN gerente.tes C ON (b.id_tes=c.id_tes) 
  LEFT OUTER JOIN gerente.pedidos D ON (a.num_pedido=d.numero AND a.id_empresa=d.id_empresa) 
  WHERE a.status='E' AND c.operacional=1 AND b.cfop NOT IN (5929,6929) AND ((a.tp_docto='S' AND c.natureza='N') OR (a.tp_docto='E' AND c.natureza='D'))
UNION ALL  
SELECT 'CF'::char(3) as origem,a.id_empresa,a.numero,'N',a.data,a.data as dt_baixa_ctr,a.id_cliente,a.cod_vendedor,0 AS estoq_vendedor,
        0 AS cod_formapag,b.id_produto,b.vl_base,
       (COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data<=a.data ORDER BY data DESC LIMIT 1),
                (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data>=a.data ORDER BY data LIMIT 1)) * b.qtdade)::numeric(15,2) as vl_cmv,
       (b.vl_base-b.vl_imposto-b.vl_pis-b.vl_cofins-(COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data<=a.data ORDER BY data DESC LIMIT 1),
                                                   (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data>=a.data ORDER BY data LIMIT 1)) * b.qtdade))::numeric(15,2) as vl_mc,
      b.vl_imposto as vl_icms,0 as vl_ipi,b.vl_pis,b.vl_cofins
  FROM gerente.cfiscal A
  LEFT OUTER JOIN gerente.cfiscald B ON (a.id_cfiscal=b.id_cfiscal)
  WHERE a.situacao='E' AND b.item_cancelado=0;
--RUN--

--SEQ 329-- 16/01/2019 17:56 JCS
ALTER TABLE gerente.peditens ADD COLUMN vl_deson_pis_cofins numeric(15,2);
--RUN--

--SEQ 330-- 25/02/2019 11:45 ALAN
ALTER TABLE gerente.recproxcul ADD COLUMN man_aplic character varying(400);
ALTER TABLE gerente.recproxcul ADD COLUMN mon_aplic character varying(400);
ALTER TABLE gerente.recproxcul ADD COLUMN precaucao_uso character varying(400);
ALTER TABLE gerente.recproxcul ADD COLUMN equip character varying(400);
ALTER TABLE gerente.recproxcul ADD COLUMN obs character varying(400);

CREATE OR REPLACE VIEW gerente.vrecmovagro AS 
         SELECT ent.id_empresa,
            entd.cfop,
            est.tipo,
            est.docto_serie AS serie,
            est.docto_numero AS numero,
            substr(ent.chave_nfe::text, 7, 14) AS cpfcnpj,
            est.data AS nf_emissao,
            ''::text AS obs,
            entd.produ AS id_produto,
            nfr.num_lote,
            nfr.qtd_prod_lote,
            nfr.id_nfrastro
           FROM gestao.estmovto est
      LEFT JOIN gestao.entradet entd ON entd.id_entrada = est.origem_id AND entd.ordem = est.origem_ordem
   LEFT JOIN gestao.entradas ent ON ent.id_entrada = entd.id_entrada and ent.id_empresa=est.id_empresa
   LEFT JOIN gestao.nfrastro nfr ON nfr.id_entradet = entd.id_entradet
  WHERE ent.modelo='55' and est.tipo = 'E'::bpchar AND est.origem_prefixo = 'EN'::bpchar AND nfr.id_nfrastro IS NOT NULL
UNION ALL
         SELECT nf.id_empresa,
            nfd.cfop,
            CASE WHEN nfd.cfop>=5000 THEN 'S'::char ELSE 'E'::char END AS tipo,
            est.docto_serie AS serie,
            est.docto_numero AS numero,
            nf.inscr_desrem AS cpfcnpj,
            est.data AS nf_emissao,
            ''::text AS obs,
            nfd.id_produto,
            nfr.num_lote,
            nfr.qtd_prod_lote,
            nfr.id_nfrastro
           FROM gestao.estmovto est
      LEFT JOIN gestao.nfdet nfd ON nfd.id_nf = est.origem_id AND nfd.num_item = est.origem_ordem
   LEFT JOIN gestao.nf nf ON nf.id_nf = nfd.id_nf and nf.id_empresa=est.id_empresa
   LEFT JOIN gestao.nfrastro nfr ON nfr.id_nfdet = nfd.id_nfdet
  WHERE (est.tipo = ANY (ARRAY['E'::bpchar, 'S'::bpchar])) AND est.origem_prefixo = 'NF'::bpchar AND nfr.id_nfrastro IS NOT NULL;
--RUN--

--SEQ 331-- 20/03/2019 16:10 Willian
DROP VIEW gerente.vrecmovagro; --View Criada no gestao
ALTER TABLE gestao.nfrastro ADD CONSTRAINT fk_nfrastro_pedido FOREIGN KEY (id_peditem) REFERENCES gerente.peditens (id_peditens);
--RUN--

--SEQ 332-- 26/03/2019 15:00 Willian
ALTER TABLE gerente.pedidos ADD COLUMN taxa_com_insta numeric(5,2);
ALTER TABLE gerente.pedidos ADD COLUMN forma_pag_com_insta char(1);

CREATE OR REPLACE VIEW gerente.vcomissao_instalador AS 
        (         SELECT a.id_empresa,
                    a.id_medidor,
                    'FAT'::bpchar AS origem,
                    a.numero::character(15) AS numero,
                    a.tipo,
                    a.dtemi AS data,
                    a.dtemi AS bom,
                    a.clien,
                    b.razao,
                    a.totpr - a.descv AS base,
                    a.taxa_com_insta,
                    ((a.totpr - a.descv) / 100::numeric * a.taxa_com_insta)::numeric(12,2) AS vl_comissao
                   FROM gerente.pedidos a
              LEFT JOIN gerente.clientes b ON a.clien = b.id_cliente
             WHERE a.forma_pag_com_insta = 'F'::bpchar AND a.situa = 3 AND (a.tipo = 'N'::bpchar OR a.tipo = 'D'::bpchar)
        UNION ALL
                 SELECT a.id_empresa,
                    c.id_medidor,
                    'REC'::bpchar AS origem,
                    b.numero,
                    c.tipo,
                    a.data,
                    a.bom,
                    c.clien,
                    d.razao,
                        CASE
                            WHEN COALESCE(sum(a.valor), 0::numeric) < b.valor THEN b.base_comissao / b.valor * COALESCE(sum(a.valor), 0::numeric)
                            ELSE b.base_comissao
                        END::numeric(12,2) AS base,
                    c.taxa_com_insta,
                    (
                        CASE
                            WHEN COALESCE(sum(a.valor), 0::numeric) < b.valor THEN b.base_comissao / b.valor * COALESCE(sum(a.valor), 0::numeric)
                            ELSE b.base_comissao
                        END / 100::numeric * c.taxa_com_insta)::numeric(12,2) AS vl_comissao
                   FROM gerente.recbtos a
              LEFT JOIN gerente.ctr b ON b.id_ctr = a.id_ctr
         LEFT JOIN gerente.pedidos c ON c.id_pedido = b.id_pedido
    LEFT JOIN gerente.clientes d ON c.clien = d.id_cliente
   WHERE c.forma_pag_com_insta = 'R'::bpchar AND (a.forma <> ALL (ARRAY[4, 6, 8, 9]))
   GROUP BY a.id_empresa, c.id_medidor, b.valor, a.data, a.bom, b.numero, c.tipo, d.razao, c.clien, b.base_comissao, c.taxa_com_insta, c.id_pedido)
UNION ALL
         SELECT a.id_empresa,
            b.id_medidor,
            'REC'::bpchar AS origem,
            b.numero::character(15) AS numero,
            b.tipo,
            a.data,
            a.bom,
            b.clien,
            c.razao,
            a.valor AS base,
            b.taxa_com_insta,
            (a.valor / 100::numeric * b.taxa_com_insta)::numeric(12,2) AS vl_comissao
           FROM gerente.recbtos a
      LEFT JOIN gerente.pedidos b ON a.id_pedido = b.id_pedido
   LEFT JOIN gerente.clientes c ON a.id_cliente = c.id_cliente
  WHERE a.origem = 'P'::bpchar AND a.forma <> 4 AND a.forma <> 6 AND a.forma <> 8 AND a.forma <> 9 AND b.forma_pag_com_insta = 'R'::bpchar AND b.situa = 3 AND (b.tipo = 'N'::bpchar OR b.tipo = 'D'::bpchar);
--RUN--

--SEQ 333-- 17/04/2019 14:00 Alan
ALTER TABLE gerente.ctr ADD CONSTRAINT chk_ctr_fatura CHECK
 ((prefixo ='FAT'::bpchar AND situacao<>'F'::bpchar AND num_fatura is not null) or 
  (prefixo ='FAT'::bpchar AND situacao ='F'::bpchar AND num_fatura is not null AND recbt>0::numeric) or
  (prefixo<>'FAT'::bpchar AND situacao ='F'::bpchar AND num_fatura is not null AND recbt=0::numeric) or 
  (situacao<>'F'::bpchar and num_fatura is null) or situacao ='C'::bpchar) NOT VALID;
--RUN--

--SEQ 334-- 29/04/2019 16:40 Alan
ALTER TABLE gerente.peditens ADD COLUMN nr_receita integer;
ALTER TABLE gerente.peditens ADD COLUMN nr_art character(10);
ALTER TABLE gerente.peditens ADD COLUMN rece_propia smallint;
--RUN--

--SEQ 335-- 04/07/2019 11:40 Alan
ALTER TABLE gerente.cfiscalfp ADD COLUMN vl_troco numeric(12,2);
--RUN--

--SEQ 0336-- 12/08/2019 17:00 Willian
ALTER TABLE gerente.pedidos ADD COLUMN garantia smallint NOT NULL DEFAULT 0;
--RUN--

--SEQ 0337-- 18/09/2019 16:30 Alan
ALTER TABLE gerente.peditens ADD COLUMN und character(6);
--RUN--

--SEQ 0338-- 18/12/2019 14:30 Alan
ALTER TABLE gerente.acessorio ADD COLUMN especifico smallint NOT NULL DEFAULT 0;
--RUN--

--SEQ 0339-- 23/01/2020 12:00 Alan
ALTER TABLE gestao.descpromo ADD CONSTRAINT fk_descpromo_cliente FOREIGN KEY (id_cliente)  REFERENCES gerente.clientes (id_cliente);
--RUN--

--SEQ 0340-- 13/04/2020 08:00 Alan
DROP VIEW gerente.vresumocarga1; --View Criada no gerente
ALTER TABLE gerente.peditens ALTER COLUMN obs TYPE character(200);
CREATE OR REPLACE VIEW gerente.vresumocarga1 AS
SELECT a.id_carga,a.id_empresa,a.data,a.prsaida,d.placa,c.produ,c.qtd,c.obs
  FROM gestao.carga A
  LEFT OUTER JOIN gerente.pedidos B ON (a.id_carga=b.carga)
  LEFT OUTER JOIN gerente.peditens C ON (b.id_pedido=c.id_pedido)
  LEFT OUTER JOIN gestao.veiculo D ON (d.codigo=a.cod_veiculo AND d.id_empresa=(SELECT id_matriz FROM gestao.empresa WHERE id_empresa=a.id_empresa));
--RUN--

--SEQ 0341-- 02/05/2020 17:00 Alan
ALTER TABLE gerente.tes ADD COLUMN gera_lancto_fiscal character(1);
update gerente.tes set gera_lancto_fiscal='S' where gera_lancto_fiscal is null;
ALTER TABLE gerente.tes ALTER COLUMN gera_lancto_fiscal SET NOT NULL;
ALTER TABLE gerente.tes ALTER COLUMN gera_lancto_fiscal SET DEFAULT 'S'::bpchar;
--RUN--

--SEQ 0342-- 17/06/2020 10:00 Damian
ALTER TABLE gerente.clientes ADD COLUMN vencto_cred date;
--RUN--

--SEQ 0343-- 02/09/2020 12:05 JCS
ALTER TABLE gerente.peditens  ADD COLUMN sit_comissao smallint;
--RUN--

--SEQ 0344-- 24/09/2020 09:33 JCS
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_forma;
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbto_forma CHECK (forma IN(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 21, 22, 23));
--RUN--

--SEQ 0345-- 30/09/2020 16:20 JCS
UPDATE gerente.peditens SET qtd_empenhada=qtd where qtd_empenhada>qtd;
ALTER TABLE gerente.peditens ADD CONSTRAINT chk_peditens_qtd_empenhada CHECK (qtd_empenhada<=qtd);
--RUN--

--SEQ 0346-- 03/03/2021 18:00 JCS
ALTER TABLE gerente.recbtos DISABLE TRIGGER ALL;
UPDATE gerente.recbtos SET id_entrada=NULL WHERE id_entrada=0;
ALTER TABLE gerente.recbtos ENABLE TRIGGER ALL;
ALTER TABLE gerente.recbtos  ADD CONSTRAINT fk_recbto_entrada FOREIGN KEY (id_entrada) REFERENCES gestao.entradas (id_entrada);
--RUN--

--SEQ 0347-- 01/04/2021 17:00 Alan
CREATE OR REPLACE VIEW gerente.vdemanda_venda AS 
SELECT a.id_empresa,a.data as dt_est,a.qtdade,a.id_produto,d.data as dt_req,c.id_natureza FROM gestao.estmovto A
LEFT OUTER JOIN gerente.tes B ON (a.cod_tes=b.codigo AND b.id_empresa in(SELECT id_matriz FROM gestao.empresa WHERE id_empresa=A.id_empresa)) 
LEFT OUTER JOIN gestao.reqd C ON (c.id_req=a.origem_id AND c.ordem=a.origem_ordem AND a.origem_prefixo='RQ')   
LEFT OUTER JOIN gestao.req D ON (d.id_req=c.id_req) 
WHERE NOT (COALESCE(b.natureza,'N')='D' AND a.qtdade>0) AND a.origem_prefixo IN ('PE','NF2','NF','PR','RQ','PDV','OS') AND a.tipo='S';
--RUN--

--SEQ 0348-- 07/04/2021 20:00 JCS
CREATE OR REPLACE VIEW gerente.vfaturamento AS
  SELECT a.id_empresa,a.id_pedido,b.id_peditens,dtemi,cod_vendedor,produ AS id_erp_produto,CASE WHEN a.tipo='N' THEN vl_totliq ELSE -vl_totliq END AS vl_totliq,CASE WHEN a.tipo='N' THEN b.ipi ELSE -b.ipi END as vl_ipi,CASE WHEN a.tipo='N' THEN b.vl_icmsst ELSE -b.vl_icmsst END as vl_icmsst
    FROM gerente.pedidos A
    LEFT OUTER JOIN gerente.peditens B ON (a.id_pedido=b.id_pedido)
    LEFT JOIN gerente.tes C ON b.id_tes = c.id_tes
    WHERE a.tipo IN ('N','D') AND operacional=1 AND situa=3;
--RUN--

--SEQ 0349-- 25/05/2021 14:15 Alan
DROP VIEW gerente.vmovto_consig;
ALTER TABLE gestao.entradet ALTER COLUMN qtd TYPE numeric(13,4);

CREATE OR REPLACE VIEW gerente.vmovto_consig AS 
         SELECT 'PED'::text AS tipo,
            ped.id_pedido AS id,
            ped.id_empresa,
            ped.dtemi AS dt_emi_ent,
            ped.clien AS id_cli_for,
            ped.cod_vendedor,
            pedi.produ AS id_produto,
            pedi.qtd AS qtdade,
            pedi.total,
            pedi.num_pedido_vinc,
            tes.est_poder_terceiro AS tipo_movto,
            ped.numero,
            ped.prz_con,
            0 AS id_empresa_doc_vinc
           FROM gerente.tes
      LEFT JOIN gerente.peditens pedi ON pedi.id_tes = tes.id_tes
   LEFT JOIN gerente.pedidos ped ON ped.id_pedido = pedi.id_pedido
  WHERE tes.tce = 1 AND ped.situa = 3
UNION ALL
         SELECT 'ENT'::text AS tipo,
            d.id_entrada AS id,
            d.id_empresa,
            d.entra AS dt_emi_ent,
            d.id_forne AS id_cli_for,
            NULL::integer AS cod_vendedor,
            c.produ AS id_produto,
            c.qtd AS qtdade,
            c.total,
            c.num_pedido_vinc,
            tes.est_poder_terceiro AS tipo_movto,
            d.numero,
            0 AS prz_con,
            c.id_empresa_doc_vinc
           FROM gestao.empresa b
      LEFT JOIN gerente.tes tes ON b.id_empresa = tes.id_empresa
   LEFT JOIN gestao.entradet c ON tes.codigo = c.cod_tes AND tes.id_empresa = b.id_matriz
   LEFT JOIN gestao.entradas d ON d.id_entrada = c.id_entrada
  WHERE tes.tce = 1 AND tes.est_poder_terceiro = 'D'::bpchar AND d.id_entrada > 0;
--RUN--


--SEQ 0350-- 07/06/2021 08:00 JCS 
ALTER TABLE gerente.pedidos  ADD COLUMN enviar_email smallint DEFAULT 0 NOT NULL;
--RUN--

--SEQ 0351-- 10/06/2021 09:50 JCS 
ALTER TABLE gerente.pedidos  ADD COLUMN volumes_packing smallint DEFAULT 0 NOT NULL;
ALTER TABLE gerente.pedidos  ADD COLUMN volumes_outros  smallint DEFAULT 0 NOT NULL;
--RUN--

--SEQ 0352-- 18/06/2021 11:00 Alan
ALTER TABLE gerente.ctr ADD CONSTRAINT fk_ctr_portador FOREIGN KEY (porta) REFERENCES gestao.portador (id_portador) INITIALLY DEFERRED;;
ALTER TABLE gestao.boleto ADD CONSTRAINT fk_boleto_portador FOREIGN KEY (id_portador) REFERENCES gestao.portador (id_portador) INITIALLY DEFERRED;
--RUN--

--SEQ 0353-- 24/06/2021 17:15 Alan
ALTER TABLE gerente.producao ADD COLUMN cod_maq character(10);
--RUN--

--SEQ 0354-- 28/07/2021 13:22 JCS
ALTER TABLE gerente.producao ADD COLUMN hora time without time zone;
ALTER TABLE gerente.producao ADD COLUMN data_final date;
ALTER TABLE gerente.producao ADD COLUMN hora_final time without time zone;
ALTER TABLE gerente.producao ADD COLUMN tempo_hr numeric(7,2);
ALTER TABLE gerente.producao ADD COLUMN cod_colaborador integer;
--RUN--

--SEQ 0355-- 30/07/2021 09:38 WILLIAN
ALTER TABLE gerente.pedidos ADD COLUMN tx_custo_frete numeric(6,2);
--RUN--

--SEQ 0356-- 18/08/2021 15:13 WILLIAN
ALTER TABLE gerente.pedidos ADD COLUMN id_intermediador integer;
ALTER TABLE gerente.clientes ADD COLUMN usuario_intermediador character(60);
--RUN--

--SEQ 0357-- 20/08/2021 12:00 JCS
CREATE OR REPLACE VIEW gerente.vfaturamento AS
  SELECT a.id_empresa,a.id_pedido,b.id_peditens,dtemi,cod_vendedor,produ AS id_erp_produto,
     COALESCE(CASE WHEN a.tipo='N' THEN vl_totliq ELSE -vl_totliq END,0) AS vl_totliq,
     COALESCE(CASE WHEN a.tipo='N' THEN b.ipi ELSE -b.ipi END,0) as vl_ipi,
     COALESCE(CASE WHEN a.tipo='N' THEN b.vl_icmsst ELSE -b.vl_icmsst END,0) as vl_icmsst
    FROM gerente.pedidos A
    LEFT OUTER JOIN gerente.peditens B ON (a.id_pedido=b.id_pedido)
    LEFT JOIN gerente.tes C ON b.id_tes = c.id_tes
    WHERE a.tipo IN ('N','D') AND operacional=1 AND situa=3;
--RUN--

--SEQ 0358-- 25/08/2021 16:30 ALAN
ALTER TABLE gerente.producao ADD COLUMN id_estlocal integer;
--RUN--

--SEQ 0359-- 03/09/2021 10:00 ALAN
ALTER TABLE gerente.recproxcul ADD COLUMN cod_praga integer;
--RUN--

--SEQ 0360- 06/09/2021 11:40 ALAN
ALTER TABLE gerente.peditens DROP CONSTRAINT chk_peditens_qtd_empenhada;
ALTER TABLE gerente.peditens   ADD CONSTRAINT chk_peditens_qtd_empenhada CHECK (qtd_empenhada <= round(qtd,3));
--RUN--

--SEQ 0361- 22/09/2021 11:40 JCS
DROP VIEW gerente.vfaturamento;

CREATE OR REPLACE VIEW gerente.vfaturamento AS
  SELECT a.id_empresa,a.id_pedido,b.id_peditens,clien,dtemi,cod_vendedor,produ AS id_erp_produto,
     COALESCE(CASE WHEN a.tipo='N' THEN qtd ELSE -qtd END,0) AS qtd,
     COALESCE(CASE WHEN a.tipo='N' THEN vl_totliq ELSE -vl_totliq END,0) AS vl_totliq,
     COALESCE(CASE WHEN a.tipo='N' THEN b.ipi ELSE -b.ipi END,0) as vl_ipi,
     COALESCE(CASE WHEN a.tipo='N' THEN b.vl_icmsst ELSE -b.vl_icmsst END,0) as vl_icmsst
    FROM gerente.pedidos A
    LEFT OUTER JOIN gerente.peditens B ON (a.id_pedido=b.id_pedido)
    LEFT JOIN gerente.tes C ON b.id_tes = c.id_tes
    WHERE a.tipo IN ('N','D') AND operacional=1 AND situa=3;
--RUN--

--SEQ 0362- 22/11/2021 14:00 WILLIAN
ALTER TABLE gerente.servico ADD COLUMN tp_servico character(1);
ALTER TABLE gerente.servico ADD COLUMN id_forne integer;
ALTER TABLE gerente.servico ADD COLUMN perc_ctp numeric(6,2);
ALTER TABLE gerente.servico ADD COLUMN vl_ctp numeric(15,2);
--RUN--

--SEQ 0363- 31/12/2022 10:15 Alan
ALTER TABLE gerente.cfiscalfp DROP CONSTRAINT chk_cfiscalfp_tipo;
ALTER TABLE gerente.cfiscalfp ADD CONSTRAINT chk_cfiscalfp_tipo CHECK (tipo = ANY (ARRAY['DI'::bpchar, 'CH'::bpchar, 'CA'::bpchar, 'CO'::bpchar, 'VA'::bpchar, 'CR'::bpchar, 'TR'::bpchar, 'CC'::bpchar, 'PI'::bpchar]));
--RUN--

--SEQ 0364- 01/04/2022 10:48 WILLIAN
ALTER TABLE gerente.clientes ADD COLUMN cnpj_inst_pag character varying(14);
ALTER TABLE gerente.recbtos ADD COLUMN band_cartao character(14);
ALTER TABLE gerente.recbtos ADD COLUMN aut_cartao character varying(20);
--RUN--

--SEQ 0365- 13/06/2022 16:10 WILLIAN
ALTER TABLE gerente.pedidos ADD COLUMN cod_agrupador integer;
CREATE INDEX key_pedidos_agrupador ON gerente.pedidos USING btree (id_empresa, cod_agrupador);
--RUN--

--SEQ 0366- 27/06/2022 10:20 ALAN
ALTER TABLE gerente.pedidos DROP COLUMN emitir_dav;
--RUN--

--SEQ 0367- 03/08/2022 10:20 JCS
CREATE INDEX key_clientes_idxfti ON gerente.clientes USING GIST (idxfti); 
--RUN--

--SEQ 0368- 17/08/2022 10:00 WILLIAN
ALTER TABLE gerente.pedvolumes ADD COLUMN impresso smallint;
ALTER TABLE gerente.pedvolumes ADD COLUMN usuario character(12);
--RUN--

--SEQ 0369- 16/09/2022 16:45 ALAN
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_forma;
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbto_forma CHECK (forma = ANY (ARRAY[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 21, 22, 23, 24]));
--RUN--

--SEQ 370-- 19/09/2022 11:30 ALAN
CREATE OR REPLACE VIEW gerente.vlucratividade AS
SELECT 'PED'::char(3) as origem,a.id_empresa,a.numero,a.tipo,a.dtemi,a.dt_baixa_ctr,a.clien,a.cod_vendedor,
        a.estoq_vendedor,a.cod_formapag,b.produ,b.vl_totliq::numeric(15,2),b.vl_cmv,b.vl_mc,
        b.vl_icms,b.ipi as vl_ipi,0 as vl_pis,0 as vl_cofins
  FROM gerente.pedidos A
  LEFT OUTER JOIN gerente.peditens B ON (a.id_pedido=b.id_pedido)
  LEFT OUTER JOIN gerente.tes C ON (b.id_tes=c.id_tes) 
  WHERE a.tipo IN ('N','D') AND a.situa=3 AND c.operacional=1 AND (a.id_tipov=1 OR a.id_tipov=2 OR a.id_tipov=4 OR a.id_tipov=0)
UNION ALL
SELECT 'NF'::char(3) as origem,a.id_empresa,a.numero,c.natureza,a.dt_emissao,d.dt_baixa_ctr as dt_baixa_ctr,a.id_desrem,d.cod_vendedor,
        0 AS estoq_vendedor,0 AS cod_formapag,b.id_produto,(b.vl_total_bruto-b.vl_desconto+b.vl_frete+b.vl_seguro+b.vl_desp_acessorias)::numeric(15,2) as vl_totliq ,
       (COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data<=a.dt_emissao ORDER BY data DESC LIMIT 1),
                (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data>=a.dt_emissao ORDER BY data LIMIT 1)) * b.qtd_comercial)::numeric(15,2) as vl_cmv,
       (b.vl_total_bruto-b.vl_desconto+b.vl_frete+b.vl_seguro+b.vl_desp_acessorias)-b.vl_icms-b.vl_pis-b.vl_cofins-(COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data<=a.dt_emissao ORDER BY data DESC LIMIT 1),
                                                   (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data>=a.dt_emissao ORDER BY data LIMIT 1)) * b.qtd_comercial)::numeric(15,2) as vl_mc,b.vl_icms,b.vl_ipi,b.vl_pis,b.vl_cofins
  FROM gestao.nf A
  LEFT OUTER JOIN gestao.nfdet B ON (a.id_nf=b.id_nf)
  LEFT OUTER JOIN gerente.tes C ON (b.id_tes=c.id_tes) 
  LEFT OUTER JOIN gerente.pedidos D ON (a.num_pedido=d.numero AND a.id_empresa=d.id_empresa) 
  WHERE a.status='E' AND c.operacional=1 AND b.cfop NOT IN (5929,6929) AND ((a.tp_docto='S' AND c.natureza='N') OR (a.tp_docto='E' AND c.natureza='D'))
UNION ALL  
SELECT 'CF'::char(3) as origem,a.id_empresa,a.numero,'N',a.data,a.data as dt_baixa_ctr,a.id_cliente,a.cod_vendedor,0 AS estoq_vendedor,
        0 AS cod_formapag,b.id_produto,b.vl_base,
       (COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data<=a.data ORDER BY data DESC LIMIT 1),
                (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data>=a.data ORDER BY data LIMIT 1)) * b.qtdade)::numeric(15,2) as vl_cmv,
       (b.vl_base-b.vl_imposto-b.vl_pis-b.vl_cofins-(COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data<=a.data ORDER BY data DESC LIMIT 1),
                                                   (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data>=a.data ORDER BY data LIMIT 1)) * b.qtdade))::numeric(15,2) as vl_mc,
      b.vl_imposto as vl_icms,0 as vl_ipi,b.vl_pis,b.vl_cofins
  FROM gerente.cfiscal A
  LEFT OUTER JOIN gerente.cfiscald B ON (a.id_cfiscal=b.id_cfiscal)
  WHERE a.situacao='E' AND b.item_cancelado=0;
--RUN--

--SEQ 0371- 23/03/2023 15:45 willian
ALTER TABLE gerente.clientes ADD COLUMN obs_entrega character varying(255);
--RUN--

--SEQ 372-- 11/04/2023 12:00 JCS
CREATE OR REPLACE VIEW gerente.vlucratividade AS
SELECT 'PED'::char(3) as origem,a.id_empresa,a.numero,a.tipo,a.dtemi,a.dt_baixa_ctr,a.clien,a.cod_vendedor,
        a.estoq_vendedor,a.cod_formapag,b.produ,b.vl_totliq::numeric(15,2),b.vl_cmv,b.vl_mc,
        b.vl_icms,b.ipi as vl_ipi,0 as vl_pis,0 as vl_cofins,num_ped_sar
  FROM gerente.pedidos A
  LEFT OUTER JOIN gerente.peditens B ON (a.id_pedido=b.id_pedido)
  LEFT OUTER JOIN gerente.tes C ON (b.id_tes=c.id_tes) 
  WHERE a.tipo IN ('N','D') AND a.situa=3 AND c.operacional=1 AND (a.id_tipov=1 OR a.id_tipov=2 OR a.id_tipov=4 OR a.id_tipov=0)
UNION ALL
SELECT 'NF'::char(3) as origem,a.id_empresa,a.numero,c.natureza,a.dt_emissao,d.dt_baixa_ctr as dt_baixa_ctr,a.id_desrem,d.cod_vendedor,
        0 AS estoq_vendedor,0 AS cod_formapag,b.id_produto,(b.vl_total_bruto-b.vl_desconto+b.vl_frete+b.vl_seguro+b.vl_desp_acessorias)::numeric(15,2) as vl_totliq ,
       (COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data<=a.dt_emissao ORDER BY data DESC LIMIT 1),
                (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data>=a.dt_emissao ORDER BY data LIMIT 1)) * b.qtd_comercial)::numeric(15,2) as vl_cmv,
       (b.vl_total_bruto-b.vl_desconto+b.vl_frete+b.vl_seguro+b.vl_desp_acessorias)-b.vl_icms-b.vl_pis-b.vl_cofins-(COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data<=a.dt_emissao ORDER BY data DESC LIMIT 1),
                                                   (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data>=a.dt_emissao ORDER BY data LIMIT 1)) * b.qtd_comercial)::numeric(15,2) as vl_mc,b.vl_icms,b.vl_ipi,b.vl_pis,b.vl_cofins,' '
  FROM gestao.nf A
  LEFT OUTER JOIN gestao.nfdet B ON (a.id_nf=b.id_nf)
  LEFT OUTER JOIN gerente.tes C ON (b.id_tes=c.id_tes) 
  LEFT OUTER JOIN gerente.pedidos D ON (a.num_pedido=d.numero AND a.id_empresa=d.id_empresa) 
  WHERE a.status='E' AND c.operacional=1 AND b.cfop NOT IN (5929,6929) AND ((a.tp_docto='S' AND c.natureza='N') OR (a.tp_docto='E' AND c.natureza='D'))
UNION ALL  
SELECT 'CF'::char(3) as origem,a.id_empresa,a.numero,'N',a.data,a.data as dt_baixa_ctr,a.id_cliente,a.cod_vendedor,0 AS estoq_vendedor,
        0 AS cod_formapag,b.id_produto,b.vl_base,
       (COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data<=a.data ORDER BY data DESC LIMIT 1),
                (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=COALESCE((SELECT id_empresa_tabcomp FROM gestao.tabcomp where nome_tabcomp='cstpadrao' and id_empresa=a.id_empresa),a.id_empresa) AND data>=a.data ORDER BY data LIMIT 1)) * b.qtdade)::numeric(15,2) as vl_cmv,
       (b.vl_base-b.vl_imposto-b.vl_pis-b.vl_cofins-(COALESCE((SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data<=a.data ORDER BY data DESC LIMIT 1),
                                                   (SELECT valor FROM gestao.cstpadrao WHERE id_produto=b.id_produto AND id_empresa=1 AND data>=a.data ORDER BY data LIMIT 1)) * b.qtdade))::numeric(15,2) as vl_mc,
      b.vl_imposto as vl_icms,0 as vl_ipi,b.vl_pis,b.vl_cofins,' '
  FROM gerente.cfiscal A
  LEFT OUTER JOIN gerente.cfiscald B ON (a.id_cfiscal=b.id_cfiscal)
  WHERE a.situacao='E' AND b.item_cancelado=0;
--RUN--

--SEQ 0373-- 16/05/2023 08:20 ALAN
ALTER TABLE gerente.tes ADD COLUMN ignorar_val_cfop_uf smallint;
--RUN--

--SEQ 0374-- 26/05/2023 15:20 ALAN
ALTER TABLE gerente.peditens ALTER COLUMN nr_art TYPE character(15);
--RUN--

--SEQ 0375-- 12/07/2023 15:10 Willian
ALTER TABLE gerente.clientes ADD COLUMN vl_ped_min numeric(12,2);
--RUN--

--SEQ 0376-- 15/09/2023 12:10 JCS
ALTER TABLE gerente.pedidos ADD COLUMN semaforo smallint;
--RUN--

--SEQ 0377-- 26/09/2023 18:00 POR JCS
ALTER TABLE gerente.pedidos ADD COLUMN vl_deson_icms numeric(15,2);
ALTER TABLE gerente.pedidos ADD COLUMN vl_deson_pis_cofins numeric(15,2);
--RUN--

--SEQ 0378-- 04/10/2023 10:20 POR WILLIAN
ALTER TABLE gerente.recbtos DROP CONSTRAINT chk_recbto_ctr;
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbto_ctr CHECK (origem = 'C' AND id_ctr IS NOT NULL OR origem='A' AND id_ctr IS NULL OR origem = 'P' AND (id_ctr IS NULL OR id_ctr IS NOT NULL));
--RUN--

--SEQ 0379-- 27/10/2023 16:34 POR JCS
CREATE TEMP TABLE tmp1 AS
SELECT id_pedido,sum(vl_deson_icms) as vldeso_icms , sum(vl_deson_pis_cofins) as vldes_piso_cofins FROM gerente.peditens WHERE vl_deson_icms>0 OR vl_deson_pis_cofins>0 GROUP BY id_pedido;

UPDATE gerente.pedidos A
   SET descv=0 ,
       vl_deson_icms = (SELECT vldeso_icms FROM tmp1 WHERE id_pedido=A.id_pedido ),
       vl_deson_pis_cofins = (SELECT vldes_piso_cofins FROM tmp1 WHERE id_pedido=A.id_pedido )
   WHERE a.descp=0 AND a.descv>0 AND a.id_pedido IN (select id_pedido FROM tmp1);
--RUN--

--SEQ 0380-- 18/12/2023 15:45 POR WILLIAN
ALTER TABLE gerente.clientes ADD COLUMN aliq_irrf numeric(6,2);
--RUN--

--SEQ 0381-- 26/02/2024 16:24 POR WILLIAN
ALTER TABLE gerente.pedidos ADD COLUMN preco_unit_liq_nf smallint;
ALTER TABLE gerente.pedidos ADD COLUMN gera_nf character(1);
--RUN--

--SEQ 0382-- 28/02/2024 10:38 POR JCS
ALTER TABLE gerente.clientes ADD COLUMN div_ccc smallint;
--RUN--

--SEQ 0383-- 20/03/2024 11:00 POR WILLIAN
ALTER TABLE gestao.brincos DROP CONSTRAINT IF EXISTS fk_brinco_producao;
ALTER TABLE gestao.brincos ADD CONSTRAINT fk_brinco_producao FOREIGN KEY (id_producao) REFERENCES gerente.producao (id_producao);
--RUN--

--SEQ 0384-- 11/04/2024 10:38 POR ALAN
ALTER TABLE gerente.clientes ADD COLUMN ds_contrato character varying(120);
ALTER TABLE gerente.clientes ADD COLUMN vl_contrato numeric(12,2);
--RUN--

--SEQ 0385-- 22/04/2024 07:45 POR ALAN
ALTER TABLE gestao.frolan ADD CONSTRAINT fk_frolan_ctr FOREIGN KEY (id_ctr) REFERENCES gerente.ctr(id_ctr);
--RUN--

--SEQ 0386-- 29/05/2024 11:12 POR ALAN
ALTER TABLE gerente.clientes ALTER COLUMN altitude TYPE integer;
--RUN--

--SEQ 0387-- 18/06/2024 16:22 POR ALAN
CREATE TABLE gerente.forne
(
  id_forne serial NOT NULL,
  nome character(50) NOT NULL,
  fanta character(40),
  pesso smallint,
  cnpj_cpf character(18),
  inscr character(15),
  endereco character(50),
  num_endereco character varying(20),
  id_municipio integer NOT NULL,
  cep character(9),
  bairr character(20),
  conta character(20),
  ddd character(4),
  fone character(20),
  fax character(20),
  cod_vendedor integer,
  repre character(20),
  dddr character(4),
  teler character(20),
  faxr character(8),
  cadas date NOT NULL,
  compr date,
  idef integer,
  idctb integer,
  clasf character(4),
  banco character(25),
  agenc character(30),
  cagen character(10),
  cc character(12),
  da date,
  email_fornec character(80),
  email_repres character(60),
  ativo smallint DEFAULT 9,
  transportador smallint,
  obs character varying(500),
  obs_transp_nf character(50),
  prazo_pagto character varying(20),
  email_nfe character(80),
  rntrc_transp character(20),
  tp_transp  smallint,
  col_id_municipio integer,
  enquadramento character(3),
  categoria character(20),
  idxfti tsvector,
  id_empresa integer,
  CONSTRAINT pk_forne PRIMARY KEY (id_forne),
  CONSTRAINT fk_forne_municipio FOREIGN KEY (id_municipio) REFERENCES gestao.municipio (id_municipio),
  CONSTRAINT fk_forne_col_municipio FOREIGN KEY (col_id_municipio) REFERENCES gestao.municipio (id_municipio),
  CONSTRAINT chk_enquadramento CHECK (enquadramento::text = ANY (ARRAY['LR'::text, 'LP'::text, 'EPP'::text, 'ME'::text, 'MEI'::text, 'NA'::text]))
);

CREATE UNIQUE INDEX key_forne_cnpj_cpf on gerente.forne (cnpj_cpf);
CREATE INDEX key_forne_fanta ON gerente.forne (upper(to_ascii(fanta::text)));
CREATE INDEX key_forne_municipio ON gerente.forne (id_municipio);
CREATE INDEX key_forne_nome ON gerente.forne (upper(to_ascii(nome::text)));

CREATE INDEX key_forne_idxFTI ON gerente.forne USING gist(idxFTI);
CREATE TRIGGER tsvectorupdate
  BEFORE INSERT OR UPDATE
  ON gerente.forne
  FOR EACH ROW
  EXECUTE PROCEDURE tsvector_update_trigger('idxfti', 'pg_catalog.english', 'nome');
--RUN--

--SEQ 0388-- 09/07/2024 13:22 POR Willian
ALTER TABLE gerente.producao ADD COLUMN qtd_pecas integer;
--RUN--

--SEQ 0389-- 17/07/2024 15:49 POR Willian
ALTER TABLE gerente.pedidos ADD COLUMN workflow character(5) NOT NULL DEFAULT ' ';
--RUN--

--SEQ 0390-- 17/09/2024 14:00 Alan
GRANT ALL ON TABLE gerente.forne_id_forne_seq TO postgres;
ALTER TABLE gerente.forne ALTER COLUMN id_forne DROP DEFAULT;
--RUN--

--SEQ 0391-- 09/12/2024 09:07 WILLIAN
ALTER TABLE gerente.forne ALTER COLUMN nome TYPE character varying(50);
--RUN--

--SEQ 0392-- 08/01/2025 11:20 ALAN
ALTER TABLE gerente.recbtos ADD COLUMN vl_recebido numeric(15,2);
ALTER TABLE gerente.recbtos ADD CONSTRAINT chk_recbtos_vl_recebido CHECK (vl_recebido >= valor or vl_recebido is null or vl_recebido=0);
--RUN--

--SEQ 0393-- 25/03/2025 17:50 ALAN
INSERT INTO gestao.tes(
            id_tes, id_empresa, codigo, ativo, tipo, descr, calc_icms, calc_ipi, calc_pis_cofins, desc_icms, descr_desc_icms, 
            cfop_dentro, cfop_fora, 
            desc_pis_cofins, descr_desc_pis_cofins, gerar_ctr, atual_estoque, cred_icms, cred_ipi, texto_padrao, poder_terc, soma_ipi, calc_ipi_frete, calc_ipi_da, vincular_docto, 
            baixar_ctr, id_natureza, operacional, lancar_icms, lancar_ipi, cod_exp_fiscal_av1, cod_exp_fiscal_ap1, cod_exp_fiscal_av2, cod_exp_fiscal_ap2, 
            obs1_nf, obs2_nf, gerar_comissao, conta_deb_ctb, hist_deb_ctb, conta_cre_ctb, hist_cre_ctb, tce, tipo_correntista, usar_bacao, id_cst, nat_op, cod_ccusto, emite_cf,
            cst_icms_ent, cst_ipi_ent, cst_pis_ent, cst_cofins_ent,cod_infcomp, tipo_infcomp, classificacao, reajusta_custo_reposicao, natureza, gera_lancto_fiscal, gera_lancto_contabil, 
            ignorar_val_cfop_uf, est_vendedor, descr_compl, cst_ipi, cst_pis, cst_cofins, tipo_sar, codigo_enq_ipi, nat_bc_credito, tes_valida_cons_final, desc_cofins, cod_mot_deson, cod_ic_deson,
            integrar_sar,prefixo_ctr,gera_prod_fiscal,flag_faturamento,flag_valor_contabil,flag_ativo_permanente,flag_compras,flag_fat_servicos,flag_cons_trib_icms)
SELECT id_tes, id_empresa, codigo, ativo, tipo, descr, calc_icms, calc_ipi, calc_pis_cofins, desc_icms, coalesce(descr_desc_icms,' '),
       CASE WHEN (substr(cod_cfop::text,1,1) in('1','5','7')) THEN cod_cfop ELSE 0 END, CASE WHEN (substr(cod_cfop::text,1,1) in('2','6','7')) THEN cod_cfop ELSE 0 END,
       desc_pis_cofins, descr_desc_pis_cofins, gerar_ctr, atual_estoque, cred_icms, cred_ipi, coalesce(texto_padrao,' '), coalesce(poder_terc,' '), soma_ipi, calc_ipi_frete, calc_ipi_da, vincular_docto,
       baixar_ctr, id_natureza, operacional, lancar_icms, lancar_ipi, cod_exp_fiscal_av1, cod_exp_fiscal_ap1, cod_exp_fiscal_av2, cod_exp_fiscal_ap2,
       obs1_nf, obs2_nf, gerar_comissao, coalesce(cod_ctbconta,0), coalesce(cod_ctbhisto,0), coalesce(cod_ctbconta_cre,0), coalesce(cod_ctbhisto_cre,0), tce, tipo_correntista, usar_bacao, id_cst, nat_op, cod_ccusto, emite_cf,
       cst_icms_ent, cst_ipi_ent, cst_pis_ent, cst_cofins_ent, cod_infcomp, tipo_infcomp, classificacao, reajusta_custo_reposicao, natureza, gera_lancto_fiscal, CASE WHEN lancto_contabil=99 THEN 'N' ELSE 'S' END,
       ignorar_val_cfop_uf, est_vendedor, descr_compl, cst_ipi, cst_pis, cst_cofins, tipo_sar, codigo_enq_ipi, cod_base_cred, tes_valida_cons_final, desc_cofins, cod_mot_deson, cod_ic_deson,
                       0,''         ,0               ,0               ,0                  ,0                    ,0           ,0,0
  FROM gerente.tes;
ALTER TABLE gerente.tes RENAME TO old_tes;
--RUN--

--SEQ 0394-- 26/03/2025 09:15 ALAN
ALTER TABLE gestao.tes RENAME desc_pis_cofins TO desc_pis;
ALTER TABLE gerente.old_tes DROP CONSTRAINT key_tes_tipo_sar;
ALTER TABLE gestao.tes ADD CONSTRAINT key_tes_tipo_sar UNIQUE(id_empresa, tes_valida_cons_final, tipo_sar);
--RUN--

--SEQ 0395-- 26/03/2025 09:25 ALAN
DROP VIEW gerente.vestoque_vendedor;
DROP VIEW gerente.vpeditens;
DROP VIEW gerente.vfaturamento;
DROP VIEW gerente.vlucratividade;
DROP VIEW gerente.vmovto_consig;
DROP VIEW gerente.vsaldo_vef;
DROP VIEW gerente.vmovto_vef;
CREATE OR REPLACE VIEW gerente.vestoque_vendedor AS
 SELECT ped.id_pedido,
    ped.numero,
    ped.id_empresa,
    ped.dtemi AS dt_emissao,
    ped.clien AS id_cliente,
        CASE
            WHEN tes.est_vendedor = 'R'::bpchar THEN pedi.qtd
            ELSE - pedi.qtd
        END AS qtdade,
        CASE
            WHEN tes.est_vendedor = 'R'::bpchar THEN pedi.total
            ELSE - pedi.total
        END AS total,
    pedi.num_pedido_vinc,
    tes.est_vendedor,
    pedi.produ AS id_produto,
    ped.cod_vendedor
   FROM gestao.tes
     LEFT JOIN gerente.peditens pedi ON pedi.id_tes = tes.id_tes
     LEFT JOIN gerente.pedidos ped ON ped.id_pedido = pedi.id_pedido
  WHERE (tes.est_vendedor = ANY (ARRAY['R'::bpchar, 'V'::bpchar, 'T'::bpchar])) AND ped.situa = 3 AND (ped.tipo = ANY (ARRAY['N'::bpchar, 'D'::bpchar])) AND ped.dtemi >= '2013-04-29'::date;
CREATE OR REPLACE VIEW gerente.vfaturamento AS 
 SELECT a.id_empresa,
    a.id_pedido,
    b.id_peditens,
    a.clien,
    a.dtemi,
    a.cod_vendedor,
    b.produ AS id_erp_produto,
    COALESCE(
        CASE
            WHEN a.tipo = 'N'::bpchar THEN b.qtd
            ELSE - b.qtd
        END, 0::numeric) AS qtd,
    COALESCE(
        CASE
            WHEN a.tipo = 'N'::bpchar THEN b.vl_totliq
            ELSE - b.vl_totliq
        END, 0::numeric) AS vl_totliq,
    COALESCE(
        CASE
            WHEN a.tipo = 'N'::bpchar THEN b.ipi
            ELSE - b.ipi
        END, 0::numeric) AS vl_ipi,
    COALESCE(
        CASE
            WHEN a.tipo = 'N'::bpchar THEN b.vl_icmsst
            ELSE - b.vl_icmsst
        END, 0::numeric) AS vl_icmsst
   FROM gerente.pedidos a
     LEFT JOIN gerente.peditens b ON a.id_pedido = b.id_pedido
     LEFT JOIN gestao.tes c ON b.id_tes = c.id_tes
  WHERE (a.tipo = ANY (ARRAY['N'::bpchar, 'D'::bpchar])) AND c.operacional = 1 AND a.situa = 3;
CREATE OR REPLACE VIEW gerente.vlucratividade AS 
 SELECT 'PED'::character(3) AS origem,
    a.id_empresa,
    a.numero,
    a.tipo,
    a.dtemi,
    a.dt_baixa_ctr,
    a.clien,
    a.cod_vendedor,
    a.estoq_vendedor,
    a.cod_formapag,
    b.produ,
    b.vl_totliq::numeric(15,2) AS vl_totliq,
    b.vl_cmv,
    b.vl_mc,
    b.vl_icms,
    b.ipi AS vl_ipi,
    0 AS vl_pis,
    0 AS vl_cofins,
    a.num_ped_sar
   FROM gerente.pedidos a
     LEFT JOIN gerente.peditens b ON a.id_pedido = b.id_pedido
     LEFT JOIN gestao.tes c ON b.id_tes = c.id_tes
  WHERE (a.tipo = ANY (ARRAY['N'::bpchar, 'D'::bpchar])) AND a.situa = 3 AND c.operacional = 1 AND (a.id_tipov = 1 OR a.id_tipov = 2 OR a.id_tipov = 4 OR a.id_tipov = 0)
UNION ALL
 SELECT 'NF'::character(3) AS origem,
    a.id_empresa,
    a.numero,
    c.natureza AS tipo,
    a.dt_emissao AS dtemi,
    d.dt_baixa_ctr,
    a.id_desrem AS clien,
    d.cod_vendedor,
    0 AS estoq_vendedor,
    0 AS cod_formapag,
    b.id_produto AS produ,
    (b.vl_total_bruto - b.vl_desconto + b.vl_frete + b.vl_seguro + b.vl_desp_acessorias)::numeric(15,2) AS vl_totliq,
    (COALESCE(( SELECT cstpadrao.valor
           FROM gestao.cstpadrao
          WHERE cstpadrao.id_produto = b.id_produto AND cstpadrao.id_empresa = COALESCE(( SELECT tabcomp.id_empresa_tabcomp
                   FROM gestao.tabcomp
                  WHERE tabcomp.nome_tabcomp::text = 'cstpadrao'::text AND tabcomp.id_empresa = a.id_empresa), a.id_empresa) AND cstpadrao.data <= a.dt_emissao
          ORDER BY cstpadrao.data DESC
         LIMIT 1), ( SELECT cstpadrao.valor
           FROM gestao.cstpadrao
          WHERE cstpadrao.id_produto = b.id_produto AND cstpadrao.id_empresa = COALESCE(( SELECT tabcomp.id_empresa_tabcomp
                   FROM gestao.tabcomp
                  WHERE tabcomp.nome_tabcomp::text = 'cstpadrao'::text AND tabcomp.id_empresa = a.id_empresa), a.id_empresa) AND cstpadrao.data >= a.dt_emissao
          ORDER BY cstpadrao.data
         LIMIT 1)) * b.qtd_comercial)::numeric(15,2) AS vl_cmv,
    b.vl_total_bruto - b.vl_desconto + b.vl_frete + b.vl_seguro + b.vl_desp_acessorias - b.vl_icms - b.vl_pis - b.vl_cofins - (COALESCE(( SELECT cstpadrao.valor
           FROM gestao.cstpadrao
          WHERE cstpadrao.id_produto = b.id_produto AND cstpadrao.id_empresa = 1 AND cstpadrao.data <= a.dt_emissao
          ORDER BY cstpadrao.data DESC
         LIMIT 1), ( SELECT cstpadrao.valor
           FROM gestao.cstpadrao
          WHERE cstpadrao.id_produto = b.id_produto AND cstpadrao.id_empresa = 1 AND cstpadrao.data >= a.dt_emissao
          ORDER BY cstpadrao.data
         LIMIT 1)) * b.qtd_comercial)::numeric(15,2) AS vl_mc,
    b.vl_icms,
    b.vl_ipi,
    b.vl_pis,
    b.vl_cofins,
    ' '::bpchar AS num_ped_sar
   FROM gestao.nf a
     LEFT JOIN gestao.nfdet b ON a.id_nf = b.id_nf
     LEFT JOIN gestao.tes c ON b.id_tes = c.id_tes
     LEFT JOIN gerente.pedidos d ON a.num_pedido = d.numero AND a.id_empresa = d.id_empresa
  WHERE a.status = 'E'::bpchar AND c.operacional = 1 AND (b.cfop <> ALL (ARRAY[5929, 6929])) AND (a.tp_docto = 'S'::bpchar AND c.natureza = 'N'::bpchar OR a.tp_docto = 'E'::bpchar AND c.natureza = 'D'::bpchar)
UNION ALL
 SELECT 'CF'::character(3) AS origem,
    a.id_empresa,
    a.numero,
    'N'::bpchar AS tipo,
    a.data AS dtemi,
    a.data AS dt_baixa_ctr,
    a.id_cliente AS clien,
    a.cod_vendedor,
    0 AS estoq_vendedor,
    0 AS cod_formapag,
    b.id_produto AS produ,
    b.vl_base AS vl_totliq,
    (COALESCE(( SELECT cstpadrao.valor
           FROM gestao.cstpadrao
          WHERE cstpadrao.id_produto = b.id_produto AND cstpadrao.id_empresa = COALESCE(( SELECT tabcomp.id_empresa_tabcomp
                   FROM gestao.tabcomp
                  WHERE tabcomp.nome_tabcomp::text = 'cstpadrao'::text AND tabcomp.id_empresa = a.id_empresa), a.id_empresa) AND cstpadrao.data <= a.data
          ORDER BY cstpadrao.data DESC
         LIMIT 1), ( SELECT cstpadrao.valor
           FROM gestao.cstpadrao
          WHERE cstpadrao.id_produto = b.id_produto AND cstpadrao.id_empresa = COALESCE(( SELECT tabcomp.id_empresa_tabcomp
                   FROM gestao.tabcomp
                  WHERE tabcomp.nome_tabcomp::text = 'cstpadrao'::text AND tabcomp.id_empresa = a.id_empresa), a.id_empresa) AND cstpadrao.data >= a.data
          ORDER BY cstpadrao.data
         LIMIT 1)) * b.qtdade)::numeric(15,2) AS vl_cmv,
    (b.vl_base - b.vl_imposto - b.vl_pis - b.vl_cofins - COALESCE(( SELECT cstpadrao.valor
           FROM gestao.cstpadrao
          WHERE cstpadrao.id_produto = b.id_produto AND cstpadrao.id_empresa = 1 AND cstpadrao.data <= a.data
          ORDER BY cstpadrao.data DESC
         LIMIT 1), ( SELECT cstpadrao.valor
           FROM gestao.cstpadrao
          WHERE cstpadrao.id_produto = b.id_produto AND cstpadrao.id_empresa = 1 AND cstpadrao.data >= a.data
          ORDER BY cstpadrao.data
         LIMIT 1)) * b.qtdade)::numeric(15,2) AS vl_mc,
    b.vl_imposto AS vl_icms,
    0 AS vl_ipi,
    b.vl_pis,
    b.vl_cofins,
    ' '::bpchar AS num_ped_sar
   FROM gerente.cfiscal a
     LEFT JOIN gerente.cfiscald b ON a.id_cfiscal = b.id_cfiscal
  WHERE a.situacao = 'E'::bpchar AND b.item_cancelado = 0;
CREATE OR REPLACE VIEW gerente.vmovto_consig AS 
 SELECT 'PED'::text AS tipo,
    ped.id_pedido AS id,
    ped.id_empresa,
    ped.dtemi AS dt_emi_ent,
    ped.clien AS id_cli_for,
    ped.cod_vendedor,
    pedi.produ AS id_produto,
    pedi.qtd AS qtdade,
    pedi.total,
    pedi.num_pedido_vinc,
    tes.poder_terc AS tipo_movto,
    ped.numero,
    ped.prz_con,
    0 AS id_empresa_doc_vinc
   FROM gestao.tes
     LEFT JOIN gerente.peditens pedi ON pedi.id_tes = tes.id_tes
     LEFT JOIN gerente.pedidos ped ON ped.id_pedido = pedi.id_pedido
  WHERE tes.tce = 1 AND ped.situa = 3
UNION ALL
 SELECT 'ENT'::text AS tipo,
    d.id_entrada AS id,
    d.id_empresa,
    d.entra AS dt_emi_ent,
    d.id_forne AS id_cli_for,
    NULL::integer AS cod_vendedor,
    c.produ AS id_produto,
    c.qtd AS qtdade,
    c.total,
    c.num_pedido_vinc,
    tes.poder_terc AS tipo_movto,
    d.numero,
    0 AS prz_con,
    c.id_empresa_doc_vinc
   FROM gestao.empresa b
     LEFT JOIN gestao.tes tes ON b.id_empresa = tes.id_empresa
     LEFT JOIN gestao.entradet c ON tes.codigo = c.cod_tes AND tes.id_empresa = b.id_matriz
     LEFT JOIN gestao.entradas d ON d.id_entrada = c.id_entrada
  WHERE tes.tce = 1 AND tes.poder_terc = 'D'::bpchar AND d.id_entrada > 0;
CREATE OR REPLACE VIEW gerente.vmovto_vef AS
 SELECT ped.id_pedido,
    ped.id_empresa,
    ped.dtemi AS dt_emissao,
    ped.clien AS id_cliente,
    ped.cod_vendedor,
    pedi.produ AS id_produto,
        CASE
            WHEN tes.poder_terc = 'F'::bpchar THEN pedi.qtd
            WHEN tes.poder_terc = 'D'::bpchar AND ped.tipo = 'D'::bpchar THEN pedi.qtd
            ELSE - pedi.qtd
        END AS qtdade,
    pedi.total,
    pedi.num_pedido_vinc,
    tes.poder_terc AS tipo_movto
   FROM gestao.tes
     LEFT JOIN gerente.peditens pedi ON pedi.id_tes = tes.id_tes
     LEFT JOIN gerente.pedidos ped ON ped.id_pedido = pedi.id_pedido
  WHERE tes.tce = 2 AND ped.situa = 3;
CREATE OR REPLACE VIEW gerente.vpeditens AS 
 SELECT a.id_pedido,
    b.id_empresa,
    b.tipo,
    b.situa,
    a.id_st,
    a.id_tes,
    c.operacional,
    b.dtemi,
    b.clien AS id_cliente,
    a.produ AS id_produto,
        CASE
            WHEN b.tipo = 'D'::bpchar THEN - a.qtd
            ELSE a.qtd
        END AS qtd,
    (
        CASE
            WHEN b.tipo = 'D'::bpchar THEN (-1)
            ELSE 1
        END::numeric * a.total * (b.totpr - b.descv + b.acrev) / b.totpr)::numeric(15,2) AS total
   FROM gerente.peditens a
     LEFT JOIN gerente.pedidos b ON a.id_pedido = b.id_pedido
     LEFT JOIN gestao.tes c ON a.id_tes = c.id_tes
  WHERE b.tipo = ANY (ARRAY['D'::bpchar, 'N'::bpchar]);
CREATE OR REPLACE VIEW gerente.vsaldo_vef AS 
 SELECT vmovto_vef.id_empresa,
    vmovto_vef.id_cliente,
    vmovto_vef.id_produto,
    sum(vmovto_vef.qtdade) AS qtdade
   FROM gerente.vmovto_vef
  GROUP BY vmovto_vef.id_empresa, vmovto_vef.id_cliente, vmovto_vef.id_produto;
--RUN--

--SEQ 0396-- 01/04/2025 10:00 ALAN
ALTER TABLE gerente.peditens DROP CONSTRAINT fk_peditens_tes;
ALTER TABLE gerente.peditens ADD CONSTRAINT fk_peditens_tes FOREIGN KEY (id_tes) REFERENCES gestao.tes (id_tes);
ALTER TABLE gerente.servico DROP CONSTRAINT fk_servico_tes;
ALTER TABLE gerente.servico ADD CONSTRAINT fk_servico_tes FOREIGN KEY (id_tes)  REFERENCES gestao.tes (id_tes);
ALTER TABLE gerente.clientes DROP CONSTRAINT fk_cliente_tes;
ALTER TABLE gerente.clientes ADD CONSTRAINT fk_cliente_tes FOREIGN KEY (id_tes) REFERENCES gestao.tes (id_tes);
ALTER TABLE gestao.tes ADD CONSTRAINT fk_tes_tabobsfiscal FOREIGN KEY (id_empresa, tipo_infcomp, cod_infcomp) REFERENCES gestao.tabobsfiscal (id_empresa, tipo, codigo);
--RUN--

--SEQ 0397-- 01/04/2025 15:45 ALAN
ALTER TABLE gerente.recbtos ADD COLUMN id_nf_dev integer;
CREATE INDEX key_recbtos_id_nf_dev ON gerente.recbtos USING btree (id_nf_dev);
--RUN--

--SEQ 0398-- 03/04/2025 14:30 ALAN
CREATE OR REPLACE VIEW gerente.vdemanda_venda AS 
SELECT a.id_empresa,a.data as dt_est,a.qtdade,a.id_produto,d.data as dt_req,c.id_natureza FROM gestao.estmovto A
LEFT OUTER JOIN gestao.tes B ON (a.cod_tes=b.codigo AND b.id_empresa in(SELECT id_matriz FROM gestao.empresa WHERE id_empresa=A.id_empresa)) 
LEFT OUTER JOIN gestao.reqd C ON (c.id_req=a.origem_id AND c.ordem=a.origem_ordem AND a.origem_prefixo='RQ')   
LEFT OUTER JOIN gestao.req D ON (d.id_req=c.id_req) 
WHERE NOT (COALESCE(b.natureza,'N')='D' AND a.qtdade>0) AND a.origem_prefixo IN ('PE','NF2','NF','PR','RQ','PDV','OS') AND a.tipo='S';
--RUN--

--SEQ 0399-- 09/04/2025 14:15 ALAN
ALTER TABLE gestao.tes ALTER COLUMN id_tes SET DEFAULT nextval(('gestao.tes_id_tes_seq'::text)::regclass);
CREATE SEQUENCE gestao.tes_id_tes_seq INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 9223372036854775807 CACHE 1;
ALTER SEQUENCE gestao.tes_id_tes_seq OWNED BY gestao.tes.id_tes;
ALTER SEQUENCE gestao.tes_id_tes_seq OWNER TO postgres;
SELECT setval('gestao.tes_id_tes_seq', (SELECT MAX(id_tes) FROM gestao.tes), true);
--RUN--

--SEQ 0400-- 14/04/2025 13:45 ALAN
update gestao.oc set oc_recebida=ja_recebido;
DROP VIEW gestao.vsaldo_oc;
ALTER TABLE gestao.oc DROP COLUMN ja_recebido;
CREATE OR REPLACE VIEW gestao.vsaldo_oc AS 
 SELECT b.id_empresa,
    a.id_produto,
    sum(a.qtd_comprada - a.qtd_recebida - a.qtd_cancelada) AS qtd_saldo_oc,
    a.und,
    min(a.data_prev_entrega) AS data_prev_entrega,
    string_agg(b.numero::text, ' '::text) AS num_oc
   FROM gestao.ocd a
     LEFT JOIN gestao.oc b ON a.id_oc = b.id_oc
  WHERE a.id_produto > 0 AND (b.oc_recebida <> ALL (ARRAY[1, 2])) AND NOT (a.situacao = ANY (ARRAY['R'::bpchar, 'C'::bpchar]))
  GROUP BY b.id_empresa, a.id_produto, a.und;
--RUN--

--SEQ 0401-- 24/09/2025 13:45 JCS
ALTER TABLE gestao.pagtos ADD CONSTRAINT fk_pagtos_recbtos FOREIGN KEY (id_recbto)   REFERENCES gerente.recbtos (id_recbto);
--RUN--

--SEQ 0402-- 03/11/2025 16:00 ALAN
ALTER TABLE gerente.ctr DISABLE TRIGGER ALL;
update gerente.ctr set id_os=null where id_os=0;
ALTER TABLE gerente.ctr ADD CONSTRAINT fk_ctr_os FOREIGN KEY (id_os) REFERENCES gestao.os (id_os);
ALTER TABLE gerente.ctr ENABLE TRIGGER ALL;
--RUN--

--SEQ 0403-- 07/12/2025 08:00 JCS
--ALTER TABLE gerente.clientes ALTER COLUMN razao TYPE character varying(65);
--RUN--

--SEQ 0404-- 29/12/2025 10:00 ALAN
ALTER TABLE gerente.clientes ADD COLUMN envia_email_cobranca smallint;
update gerente.clientes set envia_email_cobranca=1;
update gerente.clientes set envia_email_cobranca=0 where id_cliente in( SELECT TRIM(x)::integer AS valor FROM gerente.registro, unnest(string_to_array(valor, ',')) AS x  WHERE chave LIKE 'Envia Email CTR Vencido.%' AND nome = 'Clientes Excluidos');
--RUN--

--SEQ 0405-- 07/01/2026 17:50 JCS
UPDATE gerente.clientes SET envia_email_cobranca=1 where envia_email_cobranca IS NULL;
ALTER TABLE gerente.clientes ALTER COLUMN envia_email_cobranca SET NOT NULL;
ALTER TABLE gerente.clientes ALTER COLUMN envia_email_cobranca SET DEFAULT 1;
--RUN--

--SEQ 0406- 21/01/2026 17:36 JCS
create or replace view gerente.vrecdev AS
select r.id_pedido , sum(case when r.origem = 'A' then r.valor else 0 end) as vl_dev_adiant,
       sum(case when r.origem = 'C' then r.valor else 0 end) as vl_dev 
from gerente.recbtos r
where r.id_pedido>0 and r.forma =8
group by r.id_pedido;
--RUN--

--SEQ 0407- 06/02/2026 16:30 WILLIAN
ALTER TABLE gerente.forne ADD COLUMN tag_taxa_tda character(100);
ALTER TABLE gerente.forne ADD COLUMN tag_taxa_tde character(100);
ALTER TABLE gerente.forne ADD COLUMN tag_taxa_produto character(100);
--RUN--
