CREATE TABLE IF NOT EXISTS pessoas (
 id INTEGER PRIMARY KEY AUTOINCREMENT, grupo_matriz_id INTEGER NOT NULL, codigo TEXT NOT NULL, tipo_pessoa TEXT NOT NULL,
 cpf_cnpj TEXT, nome_razao TEXT NOT NULL, nome_fantasia TEXT, rg TEXT, inscricao_estadual TEXT, inscricao_municipal TEXT,
 nascimento_abertura TEXT, estrangeiro INTEGER NOT NULL DEFAULT 0, observacoes TEXT, ativo INTEGER NOT NULL DEFAULT 1,
 criado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TEXT,
 FOREIGN KEY(grupo_matriz_id) REFERENCES empresas(id), UNIQUE(grupo_matriz_id,codigo), UNIQUE(grupo_matriz_id,cpf_cnpj)
);
CREATE INDEX IF NOT EXISTS idx_pessoas_grupo_nome ON pessoas(grupo_matriz_id,nome_razao);
CREATE TABLE IF NOT EXISTS pessoa_empresas (
 pessoa_id INTEGER NOT NULL, empresa_id INTEGER NOT NULL, ativo INTEGER NOT NULL DEFAULT 1, criado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP,
 PRIMARY KEY(pessoa_id,empresa_id), FOREIGN KEY(pessoa_id) REFERENCES pessoas(id), FOREIGN KEY(empresa_id) REFERENCES empresas(id)
);
CREATE TABLE IF NOT EXISTS pessoa_enderecos (
 id INTEGER PRIMARY KEY AUTOINCREMENT, pessoa_id INTEGER NOT NULL, tipo TEXT NOT NULL DEFAULT 'principal', identificacao TEXT,
 cep TEXT, logradouro TEXT, numero TEXT, complemento TEXT, bairro TEXT, municipio TEXT, codigo_ibge TEXT, uf TEXT, pais TEXT NOT NULL DEFAULT 'Brasil', principal INTEGER NOT NULL DEFAULT 0,
 FOREIGN KEY(pessoa_id) REFERENCES pessoas(id)
);
CREATE TABLE IF NOT EXISTS pessoa_contatos (
 id INTEGER PRIMARY KEY AUTOINCREMENT, pessoa_id INTEGER NOT NULL, tipo TEXT NOT NULL, nome TEXT, departamento TEXT, valor TEXT NOT NULL, principal INTEGER NOT NULL DEFAULT 0,
 FOREIGN KEY(pessoa_id) REFERENCES pessoas(id)
);
CREATE TABLE IF NOT EXISTS pessoa_clientes (
 id INTEGER PRIMARY KEY AUTOINCREMENT, pessoa_id INTEGER NOT NULL, empresa_id INTEGER NOT NULL, grupo_pessoa_id INTEGER, tabela_preco_id INTEGER,
 limite_credito NUMERIC NOT NULL DEFAULT 0, desconto_maximo NUMERIC NOT NULL DEFAULT 0, consumidor_final INTEGER NOT NULL DEFAULT 1,
 indicador_ie TEXT NOT NULL DEFAULT 'nao_contribuinte', permite_venda_prazo INTEGER NOT NULL DEFAULT 0, permite_vencidos INTEGER NOT NULL DEFAULT 0,
 bloqueado INTEGER NOT NULL DEFAULT 0, motivo_bloqueio TEXT, ativo INTEGER NOT NULL DEFAULT 1,
 criado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TEXT,
 FOREIGN KEY(pessoa_id) REFERENCES pessoas(id), FOREIGN KEY(empresa_id) REFERENCES empresas(id), FOREIGN KEY(grupo_pessoa_id) REFERENCES grupos_pessoa(id), FOREIGN KEY(tabela_preco_id) REFERENCES tabelas_preco(id),
 UNIQUE(pessoa_id,empresa_id)
);
CREATE INDEX IF NOT EXISTS idx_pessoa_clientes_empresa ON pessoa_clientes(empresa_id,ativo);
