cadastrouse gre_funcionarios;
-- 2. criar tabela funcoes
UPDATE gre_funcionarios
SET funcao = REPLACE(funcao, 'Aj.', 'Ajudante')
WHERE funcao LIKE '%Aj.%';
-- corrigir erros de digitação
select funcao, count(*) FROM gre_funcionarios group by funcao;
create table gre_funcao(
id int auto_increment,
nome varchar(30) default null,
created datetime default null,
usu_created int default null,
modified datetime default null,
usu_modified int default null,
primary key(id)
); 
select * from gre_funcao;
INSERT INTO gre_funcao (id, nome, created, usu_created, modified, usu_modified)
SELECT 0, funcao, NOW(), 1, NULL, NULL
FROM gre_funcionarios
where funcao <> '0'
GROUP BY funcao;
-- criar o funcao_id no gre_funcionarios
UPDATE gre_funcionarios f
JOIN gre_funcao g ON f.funcao = g.nome
SET f.funcao_id = g.id;
select f.id, f.nome, f.funcao, f.funcao_id, fu.nome
from gre_funcionarios f
inner join gre_funcao fu
on fu.id = f.funcao_id;
create table gre_alimentacao(
id int auto_increment,
nome varchar(30) default null,
created datetime default null,
usu_created int default null,
modified datetime default null,
usu_modified int default null,
primary key(id)
); 
INSERT INTO gre_alimentacao (id, nome, created, usu_created, modified, usu_modified)
SELECT 0, alimento, NOW(), 1, NULL, NULL
FROM gre_funcionarios
where alimento <> '0'
GROUP BY alimento;
-- criar alimentacao_id no gre_funcionarios
UPDATE gre_funcionarios f
JOIN gre_alimentacao g ON f.alimento = g.nome
SET f.alimentacao_id = g.id;
select f.id, f.nome, f.alimento, f.alimentacao_id, fu.nome
from gre_funcionarios f
inner join gre_alimentacao fu
on fu.id = f.alimentacao_id;
-- ajustar vale transporte
select * from gre_funcionarios WHERE vt LIKE '%por dia%';
update gre_funcionarios set valor_vt = 
  REPLACE(TRIM(SUBSTRING_INDEX(vt, 'por dia', 1)), ',', '.')
 WHERE vt LIKE '%por dia%';
 
 -- pega CEP
 SELECT 
  id, 
  endereco,
  REPLACE(
    REPLACE(
      TRIM(SUBSTRING(
        SUBSTRING_INDEX(LOWER(endereco), 'cep', -1),
        2, 10
      )),
      ',', '.'
    ),
    '-', ''
  ) AS cep_extraido
FROM gre_funcionarios
WHERE LOWER(endereco) LIKE '%cep%';

update gre_funcionarios set cep = REPLACE(
    REPLACE(
      TRIM(SUBSTRING(
        SUBSTRING_INDEX(LOWER(endereco), 'cep', -1),
        2, 10
      )),
      ',', '.'
    ),
    '-', ''
  );
-- tabela materiais nova
use dados_mont_blanc;
insert into dados_mont_blanc.trabproduto (
 select p.* from  dados_mont_blanc.trabproduto p
 left join dados_mont_blanc.tblbeneficiamento b
 on p.id_beneficiamento = b.codigo
 where  p.id_beneficiamento in (14,16,17))
 order by p.preco_vendas desc;
 select material, count(*) itens from dados_mont_blanc.trabproduto group by material order by itens desc;
 truncate table crsys.gre_materiais;
insert into crsys.gre_materiais SELECT
    0,
    REPLACE(TRIM(p.material), TRIM(b.beneficiamento), ''),
    1,
    (p.preco_custo / 100),
    (p.preco_vendas / 100 ),
    CASE 
        WHEN Moeda = 'Reais' THEN 1
        WHEN Moeda = 'Dólar' THEN 2
        WHEN Moeda = 'Euro' THEN 3
        ELSE 0
    END moeda,
    1, 1, NOW(), 1, NULL, NULL,
    p.codigo
FROM 
    dados_mont_blanc.trabproduto p
INNER JOIN 
    tblbeneficiamento b ON b.codigo = p.id_beneficiamento; 
select * from crsys.gre_materiais where tipo_moeda_id = 0;
select * from tblproduto where codigo =  12998;
set sql_safe_updates = 0;
update crsys.gre_materiais set tipo_moeda_id = 1 where tipo_moeda_id = 0;    
-- tabela materiais/beneficiamento
use crsys;
create table gre_mater_benef(
id int auto_increment,
mater_id int default null,
benef_id int default null,
padrao int default 0,
primary key(id));
-- criar index mat_benef; 

drop table trabprodbenef;
CREATE TABLE `trabprodbenef` (
  `Codigo` int NOT NULL AUTO_INCREMENT,
  `Material` varchar(90) DEFAULT NULL,
  `Categoria` varchar(45) DEFAULT 'Rocha',
  `Preco_Vendas` double DEFAULT '0',
  `Preco_custo` double DEFAULT '0',
  `Fornecedor` varchar(60) DEFAULT NULL,
  `Estoque_Minimo` double DEFAULT '0',
  `Unid` varchar(10) DEFAULT NULL,
  `Quant_Estoque` double DEFAULT '0',
  `Ultima_Compra` date DEFAULT '1900-01-01',
  `Ultima_Venda` date DEFAULT '1900-01-01',
  `Criterio_De_Compra` varchar(45) DEFAULT NULL,
  `Data` date DEFAULT '1900-01-01',
  `Ponto_de_Ressuprimento` double DEFAULT '0',
  `Beneficiamento` varchar(45) DEFAULT NULL,
  `OBS` varchar(250) DEFAULT NULL,
  `Moeda` varchar(20) DEFAULT NULL,
  `Usuario` varchar(45) DEFAULT NULL,
  `PrazoDeEntrega` int DEFAULT '0',
  `ConsumoDiario` double DEFAULT '0',
  `Nivel_Dificuldade` double DEFAULT '1000',
  `ID_Origem` int DEFAULT '0',
  `ID_Beneficiamento` int DEFAULT '0',
  PRIMARY KEY (`Codigo`)
);
insert into trabprodbenef (
select p.* from dados_mont_blanc.tblproduto p
where p.codigo not in (select t.codigo from dados_mont_blanc.trabproduto t)
and p.categoria = 'Rocha');
ALTER TABLE `dados_mont_blanc`.`trabprodbenef` 
ADD COLUMN `nome_reduzido` VARCHAR(200) NULL DEFAULT 'null' AFTER `ID_Beneficiamento`;
select t.material, t.nome_reduzido, t.id_beneficiamento, b.nome nome_benef, g.codigo_ant, g.nome from trabprodbenef t
inner join crsys.gre_materiais g
on g.nome = t.nome_reduzido
inner join crsys.gre_beneficiamentos b
on b.id = t.ID_Beneficiamento;

insert into crsys.gre_mater_benef (select 0, g.codigo_ant, t.id_beneficiamento from trabprodbenef t
inner join crsys.gre_materiais g
on g.nome = t.nome_reduzido
inner join crsys.gre_beneficiamentos b
on b.id = t.ID_Beneficiamento);
insert into crsys.gre_mater_benef Select 0, p.codigo_ant, 14 from crsys.gre_materiais p;
select * from crsys.gre_mater_benef;
select
 m.codigo_ant codigo_material, 
 concat(trim(m.nome),' ',b.nome) nome_com_beneficiamento, m.preco_venda, b.preco preco_beneficiamento,
(m.preco_venda + b.preco) preco_com_beneficiamento
 from crsys.gre_materiais m
inner join crsys.gre_mater_benef mmb
on mmb.mater_id = m.codigo_ant
inner join crsys.gre_beneficiamentos b
on mmb.benef_id = b.id
where trim(m.nome) <> ''
and m.nome like '%Granito%' 
order by m.nome, b.ordem;
-- tabela Insumos
truncate table gre_insumos;
insert into gre_insumos (select 0, 
   material,
   case when unid = 'Lata' then 5
       when unid = 'Peça' then 8
       when unid = 'Kg' then 6
       when unid = 'Litro' then 7
       when unid = '0' then 8
       when unid = 'caixa' then 10       
       when unid = 'Saco' then  9     
	else
       null
    end   
   unid,
   0,
   round((preco_custo/100),2) custo,
   round((preco_vendas/100),2) venda,
   1,
   case when categoria = 'Cuba' then  1
        when categoria = 'Insumo' then  2 
        when categoria = 'Ferramenta' then  3
   else 
      null
   end
   cate_id,
   1,
   now(),
   1,
   null,
   null,
   codigo
 from  dados_mont_blanc.tblproduto  where categoria <> "Rocha");
 UPDATE crsys.gre_insumos ins
JOIN dados_mont_blanc.tblproduto p
  ON p.codigo = ins.codigo_ant AND p.categoria <> "Rocha"
JOIN crsys.gre_fornecedores f
  ON f.nome COLLATE utf8mb3_general_ci = p.fornecedor COLLATE utf8mb3_general_ci
SET ins.forn_id = f.id;
 -- tabela Mão de Obra
 truncate table crsys.gre_maodeobra;
insert into crsys.gre_maodeobra (select codigo,
	   mo,
       preco,
       case when categoria = 'Cuba' then 1
            when categoria = 'Serviço' then 4
            when categoria = 'Acabamento' then 5
       else
           null
      end     
      cat_id,
             case when unid = 'ml' then 1
            when unid = 'unid' then 4
            when unid = 'Diaria' then 11
       else
           null
       end    
       unid_id,
      1 empr_id,
      1,
      now(),
      1,
      null,
      null
 from dados_mont_blanc.tblmo);     
 select * from crsys.gre_maodeobra;
 -- tabela fornecedores
 truncate table crsys.gre_fornecedores;
insert into crsys.gre_fornecedores(
SELECT 0,
        REGEXP_REPLACE(cnpj, '[^0-9]', '') cnpj,
        ie insc_estadual,
        null,
       rs nome,
       SUBSTRING_INDEX(rs, ' ', 2)  nome_fantasia,
        
        REGEXP_REPLACE(cep, '[^0-9]', '') cep,
        endereco,
        null numero,
        bairro,
        null complemento,
        contato,
          REGEXP_REPLACE(telcom, '[^0-9]', '') fone,
          email,
          REGEXP_REPLACE(celular, '[^0-9]', '') celular_contato,
          mun.id municio_id,
          case when formapagamento = 'Boleto' then 1
               when formapagamento = 'Cheque' then 3
           else
           null
           end
           gre_forma_id,
           1 gre_tipo_id,
           1 gre_sit_id,
           now(),
           1,
           null,
           N_Fornecedor,
           cidade
FROM dados_mont_blanc.tblfornecedor
left join crsys.adms_municipios mun
on mun.nome = cidade);
 -- ajuste gre_fornecedores
 set sql_safe_updates = 0;
 UPDATE gre_fornecedores
SET nome = UPPER(nome);     
UPDATE crsys.gre_fornecedores
SET celular_contato = CONCAT('9', celular_contato)
WHERE CHAR_LENGTH(celular_contato) = 8
  AND celular_contato > 60000000;
UPDATE crsys.gre_fornecedores
SET celular_contato = CONCAT('11', celular_contato)
WHERE CHAR_LENGTH(celular_contato) = 9
  AND LEFT(celular_contato, 2) <> '11'
  AND celular_contato > 60000000;
-- Ambientes
truncate table crsys.gre_ambientes;
insert into crsys.gre_ambientes (SELECT 0, ambiente,1,1,now(),1,null,null
 FROM dados_mont_blanc.tblambiente);
SELECT * FROM crsys.gre_ambientes;
-- Tabela PRODUTOS
use dados_mont_blanc;
truncate table crsys.gre_produtos;
insert into crsys.gre_produtos (SELECT p.codigo,
       ltrim(p.produto) produto,
       u.id unid_id,
       (p.CustoColocacao/100) CustoColocacao,
       (p.PrecoColocacao/100) precoColocacao,
       grupo,
       1 empr_id,
       1 gre_sit_id,
       now(),
       1,
       null,
       null
       FROM tblprodutosaida p
 inner join crsys.gre_unidades u
 on u.sigla = p.unid);