delimiter ;

drop table if exists erpc_solicitacao_compra_itens;

drop table if exists erpc_solicitacao_compra;

drop table if exists erpc_grupo_alcada;

drop table if exists erpc_cotacao_compra_itens;

drop table if exists erpc_cotacao_compra;

drop table if exists erpc_pedidos_compra_itens;

drop table if exists erpc_pedidos_compra;

CREATE TABLE erpc_solicitacao_compra (
  id int NOT NULL AUTO_INCREMENT,
  id_solicitante int NOT NULL,
  id_status_solicitacao int NOT NULL,
  id_responsavel_aprov int NULL,
  dt_emissao date DEFAULT NULL,
  vl_total decimal(10,2) DEFAULT NULL,
  ds_observacao varchar(255) DEFAULT NULL,
  st_ativo tinyint(4) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY fk_erpc_solicitacao_compra_erpc_usuario_solicitante (id_solicitante),
  KEY fk_erpc_solicitacao_compra_erpc_dom_status_solicitacao_compra (id_status_solicitacao),
  KEY fk_erpc_solicitacao_compra_erpc_usuario_responsavel (id_responsavel_aprov),
  CONSTRAINT fk_erpc_solicitacao_compra_erpc_dom_status_solicitacao_compra FOREIGN KEY (id_status_solicitacao) REFERENCES erpc_dom_status_solicitacao_compra (id),
  CONSTRAINT fk_erpc_solicitacao_compra_erpc_usuario_solicitante FOREIGN KEY (id_solicitante) REFERENCES erpc_usuarios (id),
  CONSTRAINT fk_erpc_solicitacao_compra_erpc_usuario_responsavel_aprov FOREIGN KEY (id_responsavel_aprov) REFERENCES erpc_usuarios (id)
);

CREATE TABLE erpc_solicitacao_compra_itens (
  id int NOT NULL AUTO_INCREMENT,
  id_solicitacao_compra int NOT NULL,
  id_produto int NOT NULL,
  nr_quantidade decimal(10,2) DEFAULT NULL,
  id_unidade_medida varchar(2) NOT NULL,
  vl_unit_estimado decimal(10,2) DEFAULT NULL,
  vl_unit_cotado decimal(10,2) DEFAULT NULL,
  dt_necessidade date DEFAULT NULL,
  st_ativo tinyint(4) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY fk_erpc_solicitacao_compra_itens_erpc_solicitacao_compra (id_solicitacao_compra),
  KEY fk_erpc_solicitacao_compra_itens_erpc_unidade_medida (id_unidade_medida),
  KEY fk_erpc_solicitacao_compra_itens_erpc_produtos (id_produto),
  CONSTRAINT fk_erpc_solicitacao_compra_itens_erpc_solicitacao_compra FOREIGN KEY (id_solicitacao_compra) REFERENCES erpc_solicitacao_compra (id),
  CONSTRAINT fk_erpc_solicitacao_compra_itens_erpc_unidade_medida FOREIGN KEY (id_unidade_medida) REFERENCES erpc_unidade_medida (id),
  CONSTRAINT fk_erpc_solicitacao_compra_itens_erpc_produtos FOREIGN KEY (id_produto) REFERENCES erpc_produtos (id)
);

CREATE TABLE erpc_dom_status_solicitacao_compra (
  id int NOT NULL AUTO_INCREMENT,
  ds_status varchar(255) DEFAULT NULL,
  ds_path varchar(255) DEFAULT NULL,
  st_ativo tinyint(4) DEFAULT NULL,
  PRIMARY KEY (id)
);

/*
1 - aguardando aprovação
2 - aprovada
3 - cancelada
*/
insert into erpc_dom_status_solicitacao_compra (ds_status,ds_path,st_ativo) values 
('AGUARDANDO APROVAÇÃO','img/icones/bullet_yellow.png',1),
('APROVADA','img/icones/bullet_green.png',1),
('CANCELADA','img/icones/bullet_red.png',1);

CREATE TABLE erpc_grupo_alcada (
  id int NOT NULL AUTO_INCREMENT,
  ds_grupo varchar(255) DEFAULT NULL,
  vl_maximo decimal(10,2) DEFAULT NULL,
  st_ativo tinyint(4) DEFAULT NULL,
  PRIMARY KEY (id)
);

INSERT INTO erpc_grupo_alcada ( ds_grupo, vl_maximo, st_ativo) VALUES ('TESTE1', '200,00', '1');
;

ALTER TABLE erpc_usuarios ADD id_grupo_alcada int NULL;

ALTER TABLE erpc_usuarios
ADD CONSTRAINT fk_erpc_usuarios_erpc_grupo_alcada
FOREIGN KEY (id_grupo_alcada) REFERENCES erpc_grupo_alcada(id);

CREATE TABLE erpc_centro_custo (
  id int NOT NULL AUTO_INCREMENT,
  ds_centro_custo varchar(255) DEFAULT NULL,
  st_ativo tinyint(4) DEFAULT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE erpc_departamentos (
  id int NOT NULL AUTO_INCREMENT,
  ds_departamento varchar(255) DEFAULT NULL,
  id_centro_custo int NOT NULL,
  st_ativo tinyint(4) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY fk_erpc_departamentos_erpc_centro_custo (id_centro_custo),
  CONSTRAINT fk_erpc_departamentos_erpc_centro_custo FOREIGN KEY (id_centro_custo) REFERENCES erpc_centro_custo (id)
);

ALTER TABLE erpc_usuarios ADD id_departamento int NULL;

/*ALTER TABLE erpc_usuarios
ADD CONSTRAINT fk_erpc_usuarios_erpc_departamentos
FOREIGN KEY (id_departamento) REFERENCES erpc_departamentos(id);*/


CREATE TABLE erpc_cotacao_compra (
  id int NOT NULL AUTO_INCREMENT,
  id_solicitacao int NOT NULL,
  id_comprador int NULL,
  id_responsavel_aprov int DEFAULT NULL,
  dt_cotacao timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  st_ativo tinyint(4) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY fk_erpc_cotacao_compra_erpc_solicitacao (id_solicitacao),
  KEY fk_erpc_cotacao_compra_erpc_comprador (id_comprador),
  KEY fk_erpc_cotacao_compra_erpc_responsavel_aprov (id_responsavel_aprov),
  CONSTRAINT fk_erpc_cotacao_compra_erpc_solicitacao_compra FOREIGN KEY (id_solicitacao) REFERENCES erpc_solicitacao_compra (id),
  CONSTRAINT fk_erpc_cotacao_compra_erpc_usuarios_comprador FOREIGN KEY (id_comprador) REFERENCES erpc_usuarios (id),
  CONSTRAINT fk_erpc_cotacao_compra_erpc_usuarios_responsavel_aprov FOREIGN KEY (id_responsavel_aprov) REFERENCES erpc_usuarios (id)
);

alter table erpc_cotacao_compra modify id_comprador int null;

CREATE TABLE erpc_cotacao_compra_itens (
  id int NOT NULL AUTO_INCREMENT,
  id_cotacao_compra int DEFAULT NULL,
  id_solicitacao_compra_item int DEFAULT NULL,
  id_fornecedor int DEFAULT NULL,
  vl_produto decimal(10,2) DEFAULT NULL,
  vl_negociado decimal(10,2) DEFAULT NULL,
  dt_disponibilidade date DEFAULT NULL,
  st_aprovada tinyint(4) DEFAULT NULL,
  st_ativo tinyint(4) DEFAULT NULL,
  PRIMARY KEY (id),
  KEY fk_erpc_cotacao_compra_erpc_fornecedores (id_fornecedor),
  KEY fk_erpc_cotacao_compra_erpc_solicitacao_compra_itens (id_solicitacao_compra_item),
  KEY fk_erpc_cotacao_compra_erpc_cotacao_compra (id_cotacao_compra),
  CONSTRAINT fk_erpc_cotacao_compra_erpc_cotacao_compra FOREIGN KEY (id_cotacao_compra) REFERENCES erpc_cotacao_compra (id),
  CONSTRAINT fk_erpc_cotacao_compra_erpc_fornecedores FOREIGN KEY (id_fornecedor) REFERENCES erpc_fornecedores (id),
  CONSTRAINT fk_erpc_cotacao_compra_erpc_solicitacao_compra_itens FOREIGN KEY (id_solicitacao_compra_item) REFERENCES erpc_solicitacao_compra_itens (id)
) ;
/*
1 - em aberto
2 - cancelado
3 - fechado
*/

CREATE TABLE if not exists erpc_dom_status_pedidos_compra (
  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  ds_status_pedido varchar(255) DEFAULT NULL,
  ds_path varchar(255) DEFAULT NULL,
  st_ativo tinyint(4) DEFAULT NULL
);

insert into erpc_dom_status_pedidos_compra (ds_status_pedido,ds_path,st_ativo) values 
('EM ABERTO','img/icones/bullet_yellow.png',1),
('CANCELADO','img/icones/bullet_red.png',1),
('FECHADO','img/icones/bullet_green.png',1);

CREATE TABLE erpc_pedidos_compra (
  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  id_solicitacao_compra int DEFAULT NULL,
  dt_lancamento timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  id_fornecedor int NOT NULL,
  id_forma_pagamento int NOT NULL,
  id_condicao_pagamento int NOT NULL,
  id_status_pedido int NOT NULL,
  id_usuario int not null,
  fl_tipo    bit not null,
  vl_total decimal(10,2) NOT NULL,
  st_ativo tinyint(4) DEFAULT NULL);

ALTER TABLE erpc_pedidos_compra ADD CONSTRAINT fk_erpc_pedidos_compra_erpc_solicitacao_compra FOREIGN KEY (id_solicitacao_compra) REFERENCES erpc_solicitacao_compra (id);
ALTER TABLE erpc_pedidos_compra ADD CONSTRAINT fk_erpc_pedidos_compra_erpc_condicao_pagamento FOREIGN KEY (id_condicao_pagamento) REFERENCES erpc_condicao_pagamento (id);
ALTER TABLE erpc_pedidos_compra ADD CONSTRAINT fk_erpc_pedidos_compra_erpc_dom_forma_pagamento FOREIGN KEY (id_forma_pagamento) REFERENCES erpc_dom_forma_pagamento (id);
ALTER TABLE erpc_pedidos_compra ADD CONSTRAINT fk_erpc_pedidos_compra_erpc_fornecedores FOREIGN KEY (id_fornecedor) REFERENCES erpc_fornecedores (id);

ALTER TABLE erpc_pedidos_compra ADD CONSTRAINT fk_erpc_pedidos_compra_erpc_dom_status_pedido_compra1 FOREIGN KEY (id_status_pedido) REFERENCES erpc_dom_status_pedidos_compra(id);

ALTER TABLE erpc_pedidos_compra DROP FOREIGN KEY fk_erpc_pedidos_compra_erpc_solicitacao_compra;

CREATE TABLE erpc_pedidos_compra_itens (
  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  id_solicitacao_compra_item int null,
  id_pedido int NOT NULL,
  id_produto int NOT NULL,
  nr_quantidade int NOT NULL,
  vl_unitario decimal(10,2) NOT NULL,
  id_unidade_medida varchar(2) NOT NULL,
  st_ativo tinyint(4) DEFAULT NULL);

ALTER TABLE erpc_pedidos_compra_itens ADD CONSTRAINT fk_erpc_pedido_compra_itens_erpc_solicitacao_compra_itens FOREIGN KEY(id_solicitacao_compra_item) references erpc_solicitacao_compra_itens(id);
  
ALTER TABLE erpc_pedidos_compra_itens ADD CONSTRAINT fk_erpc_pedido_compra_itens_erpc_pedidos_compra FOREIGN KEY (id_pedido) REFERENCES erpc_pedidos_compra (id);
ALTER TABLE erpc_pedidos_compra_itens ADD CONSTRAINT fk_erpc_pedido_compra_itens_erpc_produtos FOREIGN KEY (id_produto) REFERENCES erpc_produtos (id);
ALTER TABLE erpc_pedidos_compra_itens ADD CONSTRAINT fk_erpc_pedido_compra_itens_erpc_unidade_medida FOREIGN KEY (id_unidade_medida) REFERENCES erpc_unidade_medida (id);

insert into erpc_centro_custo( ds_centro_custo, st_ativo) values( 'TESTE', 1);

insert into erpc_departamentos ( ds_departamento, id_centro_custo, st_ativo) VALUES ('TESTE1', 1, '1');

update erpc_usuarios set id_departamento  = 1, id_grupo_alcada = 1;

drop view if exists vw_erpc_nfecode_geraxml_emitente;

create VIEW `vw_erpc_nfecode_geraxml_emitente` AS
    SELECT DISTINCT
        `ds`.`id` AS `nr_documento`,
        `ds`.`ds_numnf` AS `nr_nota`,
        35 AS `cUF`,
        `m`.`ds_codigo_ibge` AS `cMunFG`,
        `u`.`ds_endereco` AS `xLgr`,
        `u`.`ds_numero` AS `nro`,
        `u`.`ds_complemento` AS `xCpl`,
        `u`.`ds_bairro` AS `xBairro`,
        `m`.`ds_codigo_ibge` AS `cMun`,
        `m`.`ds_municipio` AS `xMun`,
        `m`.`ds_uf` AS `UF`,
        `u`.`ds_cep` AS `CEP`,
        1058 AS `cPais`,
        `p`.`ds_pais` AS `xPais`,
        NULL AS `fone`,
        `u`.`ds_logo` AS `logo`,
        `un`.`id_regime` AS `cRegTrib`,
        `un`.`ds_cnpj` AS `cnpj`,
        `un`.`ds_razao_social` AS `razaosocial`,
        `un`.`ds_fantasia` AS `nomefantasia`,
        `un`.`ds_ie` AS `ie`,
        `un`.`ds_iest` AS `iest`,
        `un`.`ds_im` AS `im`,
        `un`.`ds_cnae_fiscal` AS `cnae`,
        (CASE
            WHEN (`un`.`id_regime` = 4) THEN 1
            ELSE 3
        END) AS `regime`
    FROM
        ((((((((`erpc_documentos_saida` `ds`
        JOIN `erpc_unidades` `un` ON ((`ds`.`id_unidade` = `un`.`id`)))
        JOIN `erpc_pedidos_documentos_saida` `dp` ON ((`ds`.`id` = `dp`.`id_documento_saida`)))
        JOIN `erpc_pedidos_venda_liberados` `vl` ON ((`dp`.`id_pedido_liberados` = `vl`.`id`)))
        JOIN `erpc_pedidos_itens_liberados` `il` ON ((`vl`.`id` = `il`.`id_pedido_venda_liberado`)))
        JOIN `erpc_unidades` `u` ON ((`vl`.`id_unidade` = `u`.`id`)))
        JOIN `erpc_municipios` `m` ON ((`u`.`id_municipio` = `m`.`id`)))
        JOIN `erpc_estados` `e` ON ((`m`.`ds_uf` = `e`.`ds_uf`)))
        JOIN `erpc_paises` `p` ON ((`e`.`id_pais` = `p`.`id`)));
