1422 lines
69 KiB
SQL
Executable File
1422 lines
69 KiB
SQL
Executable File
-- ============================================================================
|
|
-- WORKBLOOM ERP - ESQUEMA DE BANCO DE DADOS (POSTGRESQL)
|
|
-- Sistema Completo de Emissão Fiscal:
|
|
-- NF-e (55), NFC-e (65), CT-e (57), MDF-e (58) e NFS-e (Serviços ABRASF / Nacional)
|
|
-- Multi-empresa (Matriz e Filiais), Séries Dinâmicas e Reforma Tributária (EC 132/2023)
|
|
-- ============================================================================
|
|
|
|
-- Extensão para geração nativa de UUIDs
|
|
CREATE EXTENSION IF NOT EXISTS "pgcrypto";
|
|
|
|
-- ============================================================================
|
|
-- 1. AUTENTICAÇÃO E CONTROLE DE ACESSO
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "usuario" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"nome_completo" VARCHAR(128) NOT NULL,
|
|
"cpf" CHAR(11) DEFAULT NULL,
|
|
"email" VARCHAR(255) NOT NULL,
|
|
"nome_usuario" VARCHAR(50) NOT NULL,
|
|
"senha_hash" VARCHAR(255) NOT NULL,
|
|
"ativo" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 2. CONTABILIDADE, EMPRESAS, CONFIGURAÇÕES FISCAIS E SÉRIES
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "contador" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"nome_empresarial" VARCHAR(128) NOT NULL,
|
|
"nome_fantasia" VARCHAR(128) DEFAULT NULL,
|
|
"cnpj" CHAR(14) DEFAULT NULL,
|
|
"cpf" CHAR(11) DEFAULT NULL,
|
|
"crc" VARCHAR(20) DEFAULT NULL,
|
|
"email" VARCHAR(255) NOT NULL,
|
|
"telefone" VARCHAR(20) DEFAULT NULL,
|
|
"end_cep" CHAR(8) DEFAULT NULL,
|
|
"end_codigo_ibge" CHAR(7) DEFAULT NULL,
|
|
"end_logradouro" VARCHAR(255) DEFAULT NULL,
|
|
"end_numero" VARCHAR(10) DEFAULT NULL,
|
|
"end_complemento" VARCHAR(255) DEFAULT NULL,
|
|
"end_bairro" VARCHAR(255) DEFAULT NULL,
|
|
"end_cidade" VARCHAR(255) DEFAULT NULL,
|
|
"end_uf" CHAR(2) DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "certificado" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"nome_arquivo" VARCHAR(255) NOT NULL,
|
|
"arquivo_binario" BYTEA DEFAULT NULL,
|
|
"senha" TEXT NOT NULL,
|
|
"data_emissao" DATE NOT NULL,
|
|
"data_validade" DATE NOT NULL,
|
|
"tp_certificado" VARCHAR(10) NOT NULL DEFAULT 'A1',
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "empresa" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"matriz_id" BIGINT DEFAULT NULL, -- NULL se for Matriz; ID da Matriz se for Filial
|
|
"tipo_estabelecimento" VARCHAR(10) NOT NULL DEFAULT 'MATRIZ', -- 'MATRIZ', 'FILIAL'
|
|
"contador_id" BIGINT DEFAULT NULL,
|
|
"certificado_id" BIGINT DEFAULT NULL,
|
|
"status" VARCHAR(20) NOT NULL DEFAULT 'ATIVO', -- ATIVO, INATIVO, BLOQUEADO
|
|
"nome_empresarial" VARCHAR(128) NOT NULL,
|
|
"nome_fantasia" VARCHAR(128) DEFAULT NULL,
|
|
"cnpj" CHAR(14) NOT NULL,
|
|
"inscricao_estadual" VARCHAR(30) DEFAULT NULL,
|
|
"inscricao_municipal" VARCHAR(30) DEFAULT NULL,
|
|
"cnae_principal" CHAR(7) DEFAULT NULL,
|
|
"regime_tributario" SMALLINT NOT NULL DEFAULT 1, -- 1: Simples Nacional, 2: Simples com Excesso, 3: Regime Normal, 4: MEI - Microempreendedor Individual
|
|
"dia_do_pagamento" SMALLINT DEFAULT NULL,
|
|
-- Endereço
|
|
"end_cep" CHAR(8) DEFAULT NULL,
|
|
"end_codigo_ibge" CHAR(7) DEFAULT NULL,
|
|
"end_logradouro" VARCHAR(255) DEFAULT NULL,
|
|
"end_numero" VARCHAR(10) DEFAULT NULL,
|
|
"end_complemento" VARCHAR(255) DEFAULT NULL,
|
|
"end_bairro" VARCHAR(255) DEFAULT NULL,
|
|
"end_cidade" VARCHAR(255) DEFAULT NULL,
|
|
"end_uf" CHAR(2) DEFAULT NULL,
|
|
-- Contato
|
|
"email" VARCHAR(255) DEFAULT NULL,
|
|
"email_nfe" VARCHAR(255) DEFAULT NULL,
|
|
"telefone" VARCHAR(20) DEFAULT NULL,
|
|
-- Timestamps
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Configurações Fiscais e Ambientes SEFAZ/Prefeituras desacoplados por Empresa e Modelo
|
|
CREATE TABLE IF NOT EXISTS "empresa_configuracao_fiscal" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"modelo_documento" VARCHAR(5) NOT NULL, -- '55': NF-e, '65': NFC-e, '57': CT-e, '58': MDF-e, 'NFS': NFS-e
|
|
"ambiente_sefaz" SMALLINT NOT NULL DEFAULT 2, -- 1: Produção, 2: Homologação
|
|
"tipo_emissao" SMALLINT NOT NULL DEFAULT 1, -- 1: Normal, 9: Contingência Off-line
|
|
"versao_layout" VARCHAR(10) NOT NULL DEFAULT '4.00',
|
|
-- Tokens de Segurança NFC-e (quando modelo = 65)
|
|
"csc_id" VARCHAR(10) DEFAULT NULL,
|
|
"csc_token" VARCHAR(128) DEFAULT NULL,
|
|
-- Provedores e Acesso NFS-e (quando modelo = NFS)
|
|
"provedor_nfse" VARCHAR(50) DEFAULT NULL, -- ABRASF, NACIONAL, GINFES, BETHA, IPM, NOTACONTROL, ISSNET, etc.
|
|
"login_prefeitura" VARCHAR(60) DEFAULT NULL,
|
|
"senha_prefeitura" TEXT DEFAULT NULL,
|
|
"token_prefeitura" VARCHAR(255) DEFAULT NULL,
|
|
"client_id_nacional" VARCHAR(128) DEFAULT NULL,
|
|
"client_secret_nacional" VARCHAR(128) DEFAULT NULL,
|
|
-- Configurações visuais do DANFE/DANFSE
|
|
"orientacao_danfe" VARCHAR(10) NOT NULL DEFAULT 'RETRATO', -- RETRATO, PAISAGEM
|
|
"imprimir_mensagem_tributos" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"ativo" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Gerenciamento de Séries Fiscais Dinâmicas e Customizáveis
|
|
CREATE TABLE IF NOT EXISTS "serie_fiscal" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"modelo_documento" VARCHAR(5) NOT NULL, -- '55': NF-e, '65': NFC-e, '57': CT-e, '58': MDF-e, 'NFS': NFS-e (RPS)
|
|
"serie" VARCHAR(5) NOT NULL DEFAULT '1',
|
|
"ambiente_sefaz" SMALLINT NOT NULL DEFAULT 2, -- 1: Produção, 2: Homologação
|
|
"ultimo_numero" INTEGER NOT NULL DEFAULT 0,
|
|
"descricao" VARCHAR(128) DEFAULT NULL, -- Ex: "Série Balcão 1", "Série RPS Principal", "Série E-Commerce"
|
|
"padrao" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"ativo" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Tabela associativa de Usuários com Empresas/Filiais (Multi-tenant)
|
|
CREATE TABLE IF NOT EXISTS "usuario_empresa" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"usuario_id" BIGINT NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"perfil" VARCHAR(20) NOT NULL DEFAULT 'OPERADOR', -- ADMIN, OPERADOR, CONSULTA, EMISSOR
|
|
"acesso_todas_filiais" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 3. CADASTROS BASE (UNIDADES, CLIENTES, FORNECEDORES, TRANSPORTADORAS, VEÍCULOS, CONDUTORES)
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "unidade" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"sigla" VARCHAR(10) NOT NULL,
|
|
"descricao" VARCHAR(128) NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "cliente" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"tipo_pessoa" SMALLINT NOT NULL DEFAULT 1, -- 1: Física, 2: Jurídica, 3: Estrangeiro
|
|
"nome_razao_social" VARCHAR(128) NOT NULL,
|
|
"nome_fantasia" VARCHAR(128) DEFAULT NULL,
|
|
"cpf" CHAR(11) DEFAULT NULL,
|
|
"cnpj" CHAR(14) DEFAULT NULL,
|
|
"id_estrangeiro" VARCHAR(20) DEFAULT NULL,
|
|
"indicador_ie" SMALLINT NOT NULL DEFAULT 9, -- 1: Contribuinte ICMS, 2: Isento, 9: Não Contribuinte
|
|
"inscricao_estadual" VARCHAR(30) DEFAULT NULL,
|
|
"inscricao_municipal" VARCHAR(30) DEFAULT NULL,
|
|
"suframa" VARCHAR(9) DEFAULT NULL,
|
|
"email" VARCHAR(255) DEFAULT NULL,
|
|
"telefone" VARCHAR(20) DEFAULT NULL,
|
|
-- Endereço
|
|
"end_cep" CHAR(8) DEFAULT NULL,
|
|
"end_codigo_ibge" CHAR(7) DEFAULT NULL,
|
|
"end_logradouro" VARCHAR(255) DEFAULT NULL,
|
|
"end_numero" VARCHAR(10) DEFAULT NULL,
|
|
"end_complemento" VARCHAR(255) DEFAULT NULL,
|
|
"end_bairro" VARCHAR(255) DEFAULT NULL,
|
|
"end_cidade" VARCHAR(255) DEFAULT NULL,
|
|
"end_uf" CHAR(2) DEFAULT NULL,
|
|
"end_pais_codigo" CHAR(4) DEFAULT '1058',
|
|
"end_pais_nome" VARCHAR(60) DEFAULT 'BRASIL',
|
|
-- Timestamps
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "fornecedor" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"tipo_pessoa" SMALLINT NOT NULL DEFAULT 2, -- 1: Física, 2: Jurídica
|
|
"nome_razao_social" VARCHAR(128) NOT NULL,
|
|
"nome_fantasia" VARCHAR(128) DEFAULT NULL,
|
|
"cpf" CHAR(11) DEFAULT NULL,
|
|
"cnpj" CHAR(14) DEFAULT NULL,
|
|
"indicador_ie" SMALLINT NOT NULL DEFAULT 1,
|
|
"inscricao_estadual" VARCHAR(30) DEFAULT NULL,
|
|
"inscricao_municipal" VARCHAR(30) DEFAULT NULL,
|
|
"email" VARCHAR(255) DEFAULT NULL,
|
|
"telefone" VARCHAR(20) DEFAULT NULL,
|
|
-- Endereço
|
|
"end_cep" CHAR(8) DEFAULT NULL,
|
|
"end_codigo_ibge" CHAR(7) DEFAULT NULL,
|
|
"end_logradouro" VARCHAR(255) DEFAULT NULL,
|
|
"end_numero" VARCHAR(10) DEFAULT NULL,
|
|
"end_complemento" VARCHAR(255) DEFAULT NULL,
|
|
"end_bairro" VARCHAR(255) DEFAULT NULL,
|
|
"end_cidade" VARCHAR(255) DEFAULT NULL,
|
|
"end_uf" CHAR(2) DEFAULT NULL,
|
|
-- Timestamps
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "transportadora" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"nome_razao_social" VARCHAR(128) NOT NULL,
|
|
"cnpj" CHAR(14) DEFAULT NULL,
|
|
"cpf" CHAR(11) DEFAULT NULL,
|
|
"inscricao_estadual" VARCHAR(30) DEFAULT NULL,
|
|
"isento_ie" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"endereco_completo" VARCHAR(255) DEFAULT NULL,
|
|
"end_cidade" VARCHAR(255) DEFAULT NULL,
|
|
"end_uf" CHAR(2) DEFAULT NULL,
|
|
"end_codigo_ibge" CHAR(7) DEFAULT NULL,
|
|
"placa_veiculo" VARCHAR(10) DEFAULT NULL,
|
|
"uf_veiculo" CHAR(2) DEFAULT NULL,
|
|
"rntrc" VARCHAR(20) DEFAULT NULL,
|
|
"telefone" VARCHAR(20) DEFAULT NULL,
|
|
-- Timestamps
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Cadastro de Veículos (utilizado por Transportadoras, CT-e e MDF-e)
|
|
CREATE TABLE IF NOT EXISTS "veiculo" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"placa" VARCHAR(10) NOT NULL,
|
|
"renavam" VARCHAR(20) DEFAULT NULL,
|
|
"uf_licenciamento" CHAR(2) NOT NULL,
|
|
"tipo_veiculo" VARCHAR(20) NOT NULL DEFAULT 'TRACAO', -- 'TRACAO', 'REBOQUE'
|
|
"tipo_rodado" VARCHAR(2) DEFAULT '01', -- 01: Truck, 02: Toco, 03: Cavalo Mecânico, 04: VAN, 05: Utilitário, 06: Outros
|
|
"tipo_carroceria" VARCHAR(2) DEFAULT '00', -- 00: Não aplicável, 01: Aberta, 02: Fechada/Baú, 03: Granelera, 04: Porta-contêiner, 05: Sider
|
|
"tara_kg" INTEGER DEFAULT 0,
|
|
"capacidade_kg" INTEGER DEFAULT 0,
|
|
"capacidade_m3" INTEGER DEFAULT 0,
|
|
"rntrc" VARCHAR(20) DEFAULT NULL,
|
|
"proprietario_tipo_pessoa" SMALLINT DEFAULT 1, -- 1: Próprio/Empresa, 2: Terceiro PF, 3: Terceiro PJ
|
|
"proprietario_cpf_cnpj" VARCHAR(14) DEFAULT NULL,
|
|
"proprietario_nome" VARCHAR(128) DEFAULT NULL,
|
|
"proprietario_ie" VARCHAR(30) DEFAULT NULL,
|
|
"proprietario_uf" CHAR(2) DEFAULT NULL,
|
|
"ativo" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Cadastro de Condutores / Motoristas (utilizado em CT-e e MDF-e)
|
|
CREATE TABLE IF NOT EXISTS "condutor" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"nome" VARCHAR(128) NOT NULL,
|
|
"cpf" CHAR(11) NOT NULL,
|
|
"cnh" VARCHAR(20) DEFAULT NULL,
|
|
"telefone" VARCHAR(20) DEFAULT NULL,
|
|
"ativo" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 4. PRODUTOS E REGRAS TRIBUTÁRIAS (VIGENTE + REFORMA TRIBUTÁRIA EC 132/2023)
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "produto" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"codigo_interno" VARCHAR(60) NOT NULL,
|
|
"nome" VARCHAR(128) NOT NULL,
|
|
-- GTIN / Código de Barras (SEFAZ exige 'SEM GTIN' quando inexistente)
|
|
"codigo_barras_ean" VARCHAR(14) NOT NULL DEFAULT 'SEM GTIN',
|
|
"codigo_barras_ean_trib" VARCHAR(14) NOT NULL DEFAULT 'SEM GTIN',
|
|
"unidade_comercial_id" BIGINT NOT NULL,
|
|
"unidade_tributavel_id" BIGINT DEFAULT NULL,
|
|
"fator_conversao_tributaria" NUMERIC(15, 4) NOT NULL DEFAULT 1.0000,
|
|
"valor_unitario" NUMERIC(15, 4) NOT NULL DEFAULT 0.0000,
|
|
"valor_custo" NUMERIC(15, 4) NOT NULL DEFAULT 0.0000,
|
|
"peso_liquido_kg" NUMERIC(15, 4) DEFAULT NULL,
|
|
"peso_bruto_kg" NUMERIC(15, 4) DEFAULT NULL,
|
|
|
|
-- Classificação Fiscal Geral
|
|
"ncm" CHAR(8) NOT NULL,
|
|
"cest" CHAR(7) DEFAULT NULL,
|
|
"ex_tipi" VARCHAR(3) DEFAULT NULL,
|
|
"cfop_padrao_nfe_interno" CHAR(4) NOT NULL DEFAULT '5102',
|
|
"cfop_padrao_nfe_externo" CHAR(4) NOT NULL DEFAULT '6102',
|
|
"cfop_padrao_nfce" CHAR(4) NOT NULL DEFAULT '5102',
|
|
"origem_mercadoria" SMALLINT NOT NULL DEFAULT 0,
|
|
|
|
-- Tributação Vigente: ICMS / Simples Nacional
|
|
"cst_icms" CHAR(3) DEFAULT NULL,
|
|
"csosn" CHAR(4) DEFAULT NULL,
|
|
"modalidade_bc_icms" SMALLINT DEFAULT 3,
|
|
"aliquota_icms" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_reducao_bc_icms" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_icms_st" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_mva_st" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_reducao_bc_icms_st" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_fcp" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_fcp_st" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Tributação Vigente: PIS / COFINS / IPI
|
|
"cst_pis" CHAR(2) NOT NULL DEFAULT '07',
|
|
"aliquota_pis" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"cst_cofins" CHAR(2) NOT NULL DEFAULT '07',
|
|
"aliquota_cofins" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"cst_ipi" CHAR(2) DEFAULT NULL,
|
|
"codigo_enquadramento_ipi" CHAR(3) DEFAULT '999',
|
|
"aliquota_ipi" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- ========================================================================
|
|
-- PREPARAÇÃO PARA A REFORMA TRIBUTÁRIA (EC 132/2023 - IBS / CBS / IS)
|
|
-- ========================================================================
|
|
"c_classif_trib" VARCHAR(20) DEFAULT NULL, -- Código de Classificação Tributária Nacional
|
|
"c_prod_anp" VARCHAR(10) DEFAULT NULL, -- Código ANP de Combustíveis e Derivados
|
|
"codigo_beneficio_fiscal" VARCHAR(10) DEFAULT NULL, -- cBenef
|
|
-- IBS (Imposto sobre Bens e Serviços)
|
|
"cst_ibs" VARCHAR(3) DEFAULT NULL,
|
|
"aliquota_ibs_estadual" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_ibs_municipal" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_diferimento_ibs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_reducao_ibs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
-- CBS (Contribuição sobre Bens e Serviços)
|
|
"cst_cbs" VARCHAR(3) DEFAULT NULL,
|
|
"aliquota_cbs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_diferimento_cbs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_reducao_cbs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
-- Imposto Seletivo (IS)
|
|
"tributado_imposto_seletivo" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"cst_is" VARCHAR(3) DEFAULT NULL,
|
|
"aliquota_is" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Controle
|
|
"ativo" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 5. CATÁLOGO DE SERVIÇOS (PARA EMPRESAS PRESTADORAS DE SERVIÇOS - NFS-e)
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "servico" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"codigo_interno" VARCHAR(60) NOT NULL,
|
|
"nome" VARCHAR(128) NOT NULL,
|
|
"discriminacao_padrao" TEXT DEFAULT NULL,
|
|
|
|
-- Classificação do Serviço conforme LC 116/2003 e Prefeituras
|
|
"item_lista_servico" VARCHAR(10) NOT NULL, -- Ex: '01.01', '07.02', '14.01', '17.01'
|
|
"codigo_cnae" CHAR(7) DEFAULT NULL,
|
|
"codigo_tributacao_municipio" VARCHAR(30) DEFAULT NULL,
|
|
"codigo_tributacao_nacional" VARCHAR(10) DEFAULT NULL, -- cTribNac (Padrão Nacional NFS-e)
|
|
"c_classif_trib" VARCHAR(20) DEFAULT NULL, -- Reforma Tributária
|
|
|
|
-- Valores e Regras do ISS
|
|
"valor_unitario" NUMERIC(15, 4) NOT NULL DEFAULT 0.0000,
|
|
"aliquota_iss" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"iss_retido_padrao" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"exigibilidade_iss" SMALLINT NOT NULL DEFAULT 1, -- 1: Exigível, 2: Não incidência, 3: Isenção, 4: Exportação, 5: Imunidade, 6: Suspensa por Decisão Judicial, 7: Suspensa por Processo Administrativo
|
|
|
|
-- Retenções Federais Padrão
|
|
"aliquota_pis" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_cofins" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_inss" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_ir" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_csll" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Reforma Tributária no Serviço (IBS / CBS)
|
|
"aliquota_ibs_estadual" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_ibs_municipal" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_cbs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Controle
|
|
"ativo" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 6. DOCUMENTOS FISCAIS DE MERCADORIAS (NF-e MOD 55 / NFC-e MOD 65)
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "documento_fiscal" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL, -- Filial emissora
|
|
"serie_fiscal_id" BIGINT DEFAULT NULL, -- Série fiscal dinâmica utilizada
|
|
"cliente_id" BIGINT DEFAULT NULL, -- Opcional em NFC-e (consumidor)
|
|
"transportadora_id" BIGINT DEFAULT NULL,
|
|
|
|
-- Identificação do DF-e
|
|
"modelo" CHAR(2) NOT NULL DEFAULT '55', -- '55': NF-e, '65': NFC-e
|
|
"serie" VARCHAR(5) NOT NULL DEFAULT '1',
|
|
"numero" INTEGER NOT NULL,
|
|
"codigo_numerico" CHAR(8) DEFAULT NULL, -- cNF (código aleatório de 8 dígitos)
|
|
"natureza_operacao" VARCHAR(128) NOT NULL DEFAULT 'VENDA DE MERCADORIAS',
|
|
"tipo_documento" SMALLINT NOT NULL DEFAULT 1, -- 0: Entrada, 1: Saída
|
|
"destino_operacao" SMALLINT NOT NULL DEFAULT 1, -- 1: Interna, 2: Interestadual, 3: Exterior
|
|
"tipo_emissao" SMALLINT NOT NULL DEFAULT 1, -- 1: Normal, 9: Contingência Off-line
|
|
"finalidade_emissao" SMALLINT NOT NULL DEFAULT 1, -- 1: Normal, 2: Complementar, 3: Ajuste, 4: Devolução
|
|
"consumidor_final" SMALLINT NOT NULL DEFAULT 1, -- 0: Normal, 1: Consumidor Final
|
|
"presenca_comprador" SMALLINT NOT NULL DEFAULT 1, -- 1: Presencial, 2: Internet, etc.
|
|
"ambiente_sefaz" SMALLINT NOT NULL DEFAULT 2, -- 1: Produção, 2: Homologação
|
|
|
|
-- Datas e Status
|
|
"data_emissao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"data_saida_entrada" TIMESTAMP DEFAULT NULL,
|
|
"status" VARCHAR(20) NOT NULL DEFAULT 'DIGITACAO', -- DIGITACAO, TRANSMITIDA, AUTORIZADA, CANCELADA, DENEGADA, REJEITADA, INUTILIZADA
|
|
"chave_acesso" CHAR(44) DEFAULT NULL,
|
|
"protocolo_autorizacao" VARCHAR(60) DEFAULT NULL,
|
|
"data_autorizacao" TIMESTAMP DEFAULT NULL,
|
|
"motivo_status_sefaz" VARCHAR(512) DEFAULT NULL,
|
|
"codigo_status_sefaz" VARCHAR(10) DEFAULT NULL,
|
|
|
|
-- Transporte / Frete
|
|
"modalidade_frete" SMALLINT NOT NULL DEFAULT 9, -- 0: CIF, 1: FOB, 2: Terceiros, 9: Sem Frete
|
|
"valor_frete" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_seguro" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_desconto" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_outras_despesas" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"placa_veiculo" VARCHAR(10) DEFAULT NULL,
|
|
"uf_veiculo" CHAR(2) DEFAULT NULL,
|
|
"quantidade_volumes" NUMERIC(10, 2) DEFAULT NULL,
|
|
"especie_volumes" VARCHAR(60) DEFAULT NULL,
|
|
"peso_liquido" NUMERIC(15, 3) DEFAULT NULL,
|
|
"peso_bruto" NUMERIC(15, 3) DEFAULT NULL,
|
|
|
|
-- Totais de Produtos e Tributação Vigente
|
|
"valor_total_produtos" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_bc_icms" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_icms" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_icms_desonerado" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_bc_icms_st" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_icms_st" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_fcp" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_fcp_st" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_fcp_retido_st" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ipi" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ipi_devolvido" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_pis" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_cofins" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_tributos_aproximado" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_documento" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- ========================================================================
|
|
-- TOTAIS DA REFORMA TRIBUTÁRIA (EC 132/2023 - IBS / CBS / IS)
|
|
-- ========================================================================
|
|
"valor_bc_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ibs_estadual" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ibs_municipal" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_bc_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_bc_is" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_is" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Informações Adicionais
|
|
"informacoes_complementares" TEXT DEFAULT NULL,
|
|
"informacoes_fisco" TEXT DEFAULT NULL,
|
|
|
|
-- Armazenamento SEFAZ e NFC-e
|
|
"xml_envio" TEXT DEFAULT NULL,
|
|
"xml_autorizado" TEXT DEFAULT NULL,
|
|
"xml_cancelamento" TEXT DEFAULT NULL,
|
|
"retorno_sefaz_json" JSONB DEFAULT NULL,
|
|
"qrcode_url_nfce" TEXT DEFAULT NULL,
|
|
|
|
-- Timestamps
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Itens do Documento Fiscal
|
|
CREATE TABLE IF NOT EXISTS "documento_fiscal_item" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"documento_fiscal_id" BIGINT NOT NULL,
|
|
"numero_item" INTEGER NOT NULL,
|
|
"produto_id" BIGINT DEFAULT NULL,
|
|
"codigo_produto" VARCHAR(60) NOT NULL,
|
|
"descricao_produto" VARCHAR(128) NOT NULL,
|
|
"ncm" CHAR(8) NOT NULL,
|
|
"cest" CHAR(7) DEFAULT NULL,
|
|
"cfop" CHAR(4) NOT NULL,
|
|
"codigo_barras_ean" VARCHAR(14) NOT NULL DEFAULT 'SEM GTIN',
|
|
"codigo_barras_ean_trib" VARCHAR(14) NOT NULL DEFAULT 'SEM GTIN',
|
|
|
|
-- Unidades e Quantidades
|
|
"unidade_comercial" VARCHAR(10) NOT NULL,
|
|
"quantidade_comercial" NUMERIC(15, 4) NOT NULL,
|
|
"valor_unitario_comercial" NUMERIC(15, 4) NOT NULL,
|
|
"valor_total_bruto" NUMERIC(15, 2) NOT NULL,
|
|
"unidade_tributavel" VARCHAR(10) NOT NULL,
|
|
"quantidade_tributavel" NUMERIC(15, 4) NOT NULL,
|
|
"valor_unitario_tributavel" NUMERIC(15, 4) NOT NULL,
|
|
|
|
-- Rateios no Item
|
|
"valor_desconto" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_frete" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_seguro" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_outras_despesas" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"ind_total" SMALLINT NOT NULL DEFAULT 1,
|
|
|
|
-- Detalhamento Tributação Vigente: ICMS / Simples Nacional
|
|
"origem_mercadoria" SMALLINT NOT NULL DEFAULT 0,
|
|
"cst_icms" CHAR(3) DEFAULT NULL,
|
|
"csosn" CHAR(4) DEFAULT NULL,
|
|
"modalidade_bc_icms" SMALLINT DEFAULT 3,
|
|
"base_icms" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_icms" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_icms" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_reducao_bc_icms" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"base_icms_st" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_icms_st" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_icms_st" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_mva_st" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_reducao_bc_icms_st" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"base_fcp" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_fcp" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_fcp" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Detalhamento Tributação Vigente: PIS / COFINS / IPI
|
|
"cst_pis" CHAR(2) NOT NULL DEFAULT '07',
|
|
"base_pis" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_pis" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_pis" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"cst_cofins" CHAR(2) NOT NULL DEFAULT '07',
|
|
"base_cofins" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_cofins" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_cofins" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"cst_ipi" CHAR(2) DEFAULT NULL,
|
|
"codigo_enquadramento_ipi" CHAR(3) DEFAULT '999',
|
|
"base_ipi" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_ipi" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ipi" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- ========================================================================
|
|
-- DETALHAMENTO REFORMA TRIBUTÁRIA POR ITEM (EC 132/2023 - IBS / CBS / IS)
|
|
-- ========================================================================
|
|
"c_classif_trib" VARCHAR(20) DEFAULT NULL,
|
|
"c_prod_anp" VARCHAR(10) DEFAULT NULL,
|
|
"c_benef" VARCHAR(10) DEFAULT NULL,
|
|
-- IBS Item
|
|
"cst_ibs" VARCHAR(3) DEFAULT NULL,
|
|
"base_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_ibs_estadual" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ibs_estadual" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_ibs_municipal" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ibs_municipal" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
-- CBS Item
|
|
"cst_cbs" VARCHAR(3) DEFAULT NULL,
|
|
"base_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_cbs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
-- Imposto Seletivo Item
|
|
"cst_is" VARCHAR(3) DEFAULT NULL,
|
|
"base_is" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_is" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_is" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
"valor_total_tributos_item" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"informacoes_adicionais" TEXT DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Formas de Pagamento do Documento Fiscal
|
|
CREATE TABLE IF NOT EXISTS "documento_fiscal_pagamento" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"documento_fiscal_id" BIGINT NOT NULL,
|
|
"forma_pagamento" CHAR(2) NOT NULL DEFAULT '01', -- 01: Dinheiro, 02: Cheque, 03: Cartão de Crédito, 04: Cartão de Débito, 15: Boleto, 17: PIX, 90: Sem Pagamento, 99: Outros
|
|
"valor_pagamento" NUMERIC(15, 2) NOT NULL,
|
|
"tipo_integracao" SMALLINT NOT NULL DEFAULT 2, -- 1: Integrado TEF, 2: Não Integrado
|
|
"cnpj_credenciadora" CHAR(14) DEFAULT NULL,
|
|
"bandeira_operadora" CHAR(2) DEFAULT NULL, -- 01: Visa, 02: Mastercard, 03: Amex, 04: Sorocred, 05: Elo, 99: Outras
|
|
"numero_autorizacao" VARCHAR(20) DEFAULT NULL,
|
|
"valor_troco" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Duplicatas / Parcelas de Cobrança (NF-e)
|
|
CREATE TABLE IF NOT EXISTS "documento_fiscal_duplicata" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"documento_fiscal_id" BIGINT NOT NULL,
|
|
"numero_duplicata" VARCHAR(60) NOT NULL,
|
|
"data_vencimento" DATE NOT NULL,
|
|
"valor_duplicata" NUMERIC(15, 2) NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Eventos SEFAZ (Cancelamento, Carta de Correção - CCe, Inutilização)
|
|
CREATE TABLE IF NOT EXISTS "documento_fiscal_evento" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"documento_fiscal_id" BIGINT NOT NULL,
|
|
"tipo_evento" VARCHAR(30) NOT NULL, -- 'CANCELAMENTO', 'CCE', 'INUTILIZACAO'
|
|
"codigo_evento" CHAR(6) NOT NULL, -- 110111: Cancelamento, 110110: CC-e
|
|
"sequencial_evento" INTEGER NOT NULL DEFAULT 1,
|
|
"data_evento" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"protocolo" VARCHAR(60) DEFAULT NULL,
|
|
"justificativa" TEXT NOT NULL,
|
|
"xml_evento" TEXT DEFAULT NULL,
|
|
"xml_retorno" TEXT DEFAULT NULL,
|
|
"status_sefaz" VARCHAR(10) DEFAULT NULL,
|
|
"motivo_sefaz" VARCHAR(512) DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 7. MÓDULO DE NFS-e (NOTA FISCAL DE SERVIÇOS ELETRÔNICA - ABRASF / NACIONAL)
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "nfse" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL, -- Filial prestadora do serviço
|
|
"serie_fiscal_id" BIGINT DEFAULT NULL, -- Série do RPS / DPS
|
|
"cliente_id" BIGINT DEFAULT NULL, -- Tomador do serviço
|
|
"intermediario_id" BIGINT DEFAULT NULL, -- Intermediário do serviço (opcional)
|
|
|
|
-- Identificação da NFS-e Nacional (ADN / Receita Federal) e Prefeituras
|
|
"chave_acesso" CHAR(50) DEFAULT NULL, -- Chave de acesso oficial de 50 dígitos da NFS-e Nacional
|
|
"numero_nfse" VARCHAR(30) DEFAULT NULL,
|
|
"codigo_verificacao" VARCHAR(30) DEFAULT NULL,
|
|
"data_emissao_nfse" TIMESTAMP DEFAULT NULL,
|
|
"link_url_nfse" TEXT DEFAULT NULL,
|
|
"link_danfse_pdf" TEXT DEFAULT NULL, -- Link para download direto do DANFSe no ADN (Receita Federal)
|
|
"qrcode_url_nfse" TEXT DEFAULT NULL, -- URL do QR-Code da NFS-e Nacional
|
|
|
|
-- Dados da DPS (Declaração de Prestação de Serviços) / RPS
|
|
"tipo_documento" VARCHAR(10) NOT NULL DEFAULT 'DPS', -- 'DPS' (Padrão Nacional), 'RPS' (ABRASF/Municipal)
|
|
"id_dps" VARCHAR(50) DEFAULT NULL, -- Identificador da DPS (ex: DPS3550308...)
|
|
"numero_rps" INTEGER NOT NULL,
|
|
"serie_rps" VARCHAR(5) NOT NULL DEFAULT '1',
|
|
"tipo_rps" SMALLINT NOT NULL DEFAULT 1, -- 1: RPS, 2: Nota Fiscal Conjugada Mista, 3: Cupom
|
|
"data_emissao_rps" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"ambiente_sefaz" SMALLINT NOT NULL DEFAULT 2, -- 1: Produção, 2: Produção Restrita (Homologação)
|
|
|
|
-- Local de Prestação do Serviço
|
|
"end_codigo_ibge_prestacao" CHAR(7) NOT NULL,
|
|
"end_cidade_prestacao" VARCHAR(128) NOT NULL,
|
|
"end_uf_prestacao" CHAR(2) NOT NULL,
|
|
"end_pais_codigo" CHAR(4) DEFAULT '1058',
|
|
"pais_resultado_prestacao" CHAR(4) DEFAULT '1058',
|
|
|
|
-- Regime e Tributação do ISS (Padrão Nacional / LC 116)
|
|
"regime_especial_tributacao" SMALLINT DEFAULT 0, -- 0: Nenhum, 1: Microempresa Municipal, 2: Estimativa, 3: Sociedade de Profissionais, 4: Cooperativa, 5: MEI, 6: Simples Nacional / ME / EPP
|
|
"optante_simples_nacional" BOOLEAN NOT NULL DEFAULT TRUE,
|
|
"incentivo_fiscal" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"tp_tributacao_iss" SMALLINT NOT NULL DEFAULT 1, -- 1: Tributável no município, 2: Tributável fora do município, 3: Isenção, 4: Imunidade, 5: Exigibilidade suspensa judicial, 6: Exigibilidade suspensa administrativo, 7: Não incidência
|
|
"tp_retencao_iss" SMALLINT NOT NULL DEFAULT 1, -- 1: Não Retido, 2: Retido pelo Tomador, 3: Retido pelo Intermediário
|
|
|
|
-- Valores do Serviço
|
|
"valor_servicos" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_deducoes" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_desconto_incondicionado" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_desconto_condicionado" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_outras_retencoes" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- ISS
|
|
"base_calculo_iss" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_iss" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_iss" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"iss_retido" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"valor_iss_retido" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"responsavel_retencao_iss" SMALLINT DEFAULT 1, -- 1: Tomador, 2: Intermediário
|
|
|
|
-- Retenções Federais
|
|
"valor_pis" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_cofins" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_inss" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ir" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_csll" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Reforma Tributária na NFS-e (EC 132/2023 - IBS / CBS)
|
|
"valor_bc_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ibs_estadual" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ibs_municipal" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_bc_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Valor Líquido Final da NFS-e
|
|
"valor_liquido_nfse" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Status e Integração Web Service ADN (Nacional) / Prefeitura (ABRASF)
|
|
"status" VARCHAR(20) NOT NULL DEFAULT 'DIGITACAO', -- DIGITACAO, ENVIADO_LOTE, PROCESSANDO, EMITIDA, CANCELADA, REJEITADA, SUBSTITUIDA
|
|
"numero_lote_rps" VARCHAR(30) DEFAULT NULL,
|
|
"protocolo_lote" VARCHAR(60) DEFAULT NULL,
|
|
"motivo_status" VARCHAR(512) DEFAULT NULL,
|
|
"codigo_status" VARCHAR(10) DEFAULT NULL,
|
|
"xml_rps_envio" TEXT DEFAULT NULL,
|
|
"xml_nfse_autorizada" TEXT DEFAULT NULL,
|
|
"xml_cancelamento" TEXT DEFAULT NULL,
|
|
"retorno_prefeitura_json" JSONB DEFAULT NULL,
|
|
|
|
-- Timestamps
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Itens / Discriminação do Serviço na NFS-e
|
|
CREATE TABLE IF NOT EXISTS "nfse_item" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"nfse_id" BIGINT NOT NULL,
|
|
"numero_item" INTEGER NOT NULL,
|
|
"servico_id" BIGINT DEFAULT NULL,
|
|
"discriminacao_servico" TEXT NOT NULL,
|
|
|
|
-- Códigos Fiscais do Item
|
|
"item_lista_servico" VARCHAR(10) NOT NULL,
|
|
"codigo_cnae" CHAR(7) DEFAULT NULL,
|
|
"codigo_tributacao_municipio" VARCHAR(30) DEFAULT NULL,
|
|
"codigo_tributacao_nacional" VARCHAR(10) DEFAULT NULL,
|
|
"c_classif_trib" VARCHAR(20) DEFAULT NULL,
|
|
|
|
-- Quantidades e Valores
|
|
"quantidade" NUMERIC(15, 4) NOT NULL DEFAULT 1.0000,
|
|
"valor_unitario" NUMERIC(15, 4) NOT NULL DEFAULT 0.0000,
|
|
"valor_total_servico" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_deducao" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_desconto" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Tributação do Item
|
|
"aliquota_iss" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_iss" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"iss_retido" BOOLEAN NOT NULL DEFAULT FALSE,
|
|
"aliquota_ibs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_cbs" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Eventos e Cancelamento de NFS-e
|
|
CREATE TABLE IF NOT EXISTS "nfse_evento" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"nfse_id" BIGINT NOT NULL,
|
|
"tipo_evento" VARCHAR(30) NOT NULL, -- 'CANCELAMENTO', 'SUBSTITUICAO'
|
|
"codigo_motivo_cancelamento" VARCHAR(5) DEFAULT NULL, -- 1: Erro emissão, 2: Serviço não prestado, 3: Erro assinatura, 4: Duplicidade, 9: Outros
|
|
"justificativa" TEXT NOT NULL,
|
|
"data_evento" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"protocolo" VARCHAR(60) DEFAULT NULL,
|
|
"xml_evento" TEXT DEFAULT NULL,
|
|
"xml_retorno" TEXT DEFAULT NULL,
|
|
"status_prefeitura" VARCHAR(10) DEFAULT NULL,
|
|
"motivo_prefeitura" VARCHAR(512) DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 8. MÓDULO DE CT-e (CONHECIMENTO DE TRANSPORTE ELETRÔNICO - MODELO 57)
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "cte" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL, -- Filial emissora do frete
|
|
"serie_fiscal_id" BIGINT DEFAULT NULL, -- Série fiscal do CT-e
|
|
"serie" VARCHAR(5) NOT NULL DEFAULT '1',
|
|
"numero" INTEGER NOT NULL,
|
|
"codigo_numerico" CHAR(8) DEFAULT NULL, -- cCT
|
|
"natureza_operacao" VARCHAR(128) NOT NULL DEFAULT 'PRESTACAO DE SERVICO DE TRANSPORTE',
|
|
"cfop" CHAR(4) NOT NULL,
|
|
"tipo_cte" SMALLINT NOT NULL DEFAULT 0, -- 0: Normal, 1: Complementar, 2: Anulação, 3: Substituto
|
|
"tipo_servico" SMALLINT NOT NULL DEFAULT 0, -- 0: Normal, 1: Subcontratação, 2: Redespacho, 3: Redespacho Intermediário, 4: Multimodal
|
|
"modal" VARCHAR(2) NOT NULL DEFAULT '01', -- 01: Rodoviário, 02: Aéreo, 03: Aquaviário, 04: Ferroviário, 05: Dutoviário, 06: Multimodal
|
|
"ambiente_sefaz" SMALLINT NOT NULL DEFAULT 2, -- 1: Produção, 2: Homologação
|
|
"tipo_emissao" SMALLINT NOT NULL DEFAULT 1, -- 1: Normal, 7: EPEC, 8: Contingência FSDA
|
|
|
|
-- Datas e Status
|
|
"data_emissao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"status" VARCHAR(20) NOT NULL DEFAULT 'DIGITACAO',
|
|
"chave_acesso" CHAR(44) DEFAULT NULL,
|
|
"protocolo_autorizacao" VARCHAR(60) DEFAULT NULL,
|
|
"data_autorizacao" TIMESTAMP DEFAULT NULL,
|
|
"motivo_status_sefaz" VARCHAR(512) DEFAULT NULL,
|
|
"codigo_status_sefaz" VARCHAR(10) DEFAULT NULL,
|
|
|
|
-- Localidade da Prestação
|
|
"end_codigo_ibge_inicio" CHAR(7) NOT NULL,
|
|
"end_cidade_inicio" VARCHAR(128) NOT NULL,
|
|
"end_uf_inicio" CHAR(2) NOT NULL,
|
|
"end_codigo_ibge_fim" CHAR(7) NOT NULL,
|
|
"end_cidade_fim" VARCHAR(128) NOT NULL,
|
|
"end_uf_fim" CHAR(2) NOT NULL,
|
|
|
|
-- Atores do Frete (Tomador do Serviço)
|
|
"tomador_servico" SMALLINT NOT NULL DEFAULT 0, -- 0: Remetente, 1: Expedidor, 2: Recebedor, 3: Destinatário, 4: Outros
|
|
"remetente_id" BIGINT DEFAULT NULL, -- FK cliente/fornecedor
|
|
"destinatario_id" BIGINT DEFAULT NULL,
|
|
"expedidor_id" BIGINT DEFAULT NULL,
|
|
"recebedor_id" BIGINT DEFAULT NULL,
|
|
"tomador_id" BIGINT DEFAULT NULL,
|
|
|
|
-- Valores do Frete e Tributação
|
|
"valor_total_prestacao" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_receber" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Tributação ICMS
|
|
"cst_icms" CHAR(3) DEFAULT NULL,
|
|
"base_icms" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"aliquota_icms" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_icms" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"percentual_reducao_bc_icms" NUMERIC(5, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_icms_outra_uf" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Reforma Tributária no CT-e
|
|
"c_classif_trib" VARCHAR(20) DEFAULT NULL,
|
|
"valor_bc_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_ibs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_bc_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"valor_total_cbs" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Informações da Carga
|
|
"produto_predominante" VARCHAR(128) DEFAULT NULL,
|
|
"outras_caracteristicas_carga" VARCHAR(60) DEFAULT NULL,
|
|
"valor_total_carga" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
|
|
-- Informações Adicionais e Arquivos
|
|
"informacoes_complementares" TEXT DEFAULT NULL,
|
|
"xml_envio" TEXT DEFAULT NULL,
|
|
"xml_autorizado" TEXT DEFAULT NULL,
|
|
"xml_cancelamento" TEXT DEFAULT NULL,
|
|
"retorno_sefaz_json" JSONB DEFAULT NULL,
|
|
"qrcode_url_cte" TEXT DEFAULT NULL,
|
|
|
|
-- Timestamps
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Componentes Tarifários do Valor da Prestação do Frete
|
|
CREATE TABLE IF NOT EXISTS "cte_componente_valor" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"cte_id" BIGINT NOT NULL,
|
|
"nome_componente" VARCHAR(60) NOT NULL, -- 'FRETE VALOR', 'FRETE PESO', 'PEDAGIO', 'GRIS', 'TAXA DESPACHO', 'OUTROS'
|
|
"valor" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Documentos Originários Referenciados no CT-e (ex: NF-e transportadas)
|
|
CREATE TABLE IF NOT EXISTS "cte_documento_referenciado" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"cte_id" BIGINT NOT NULL,
|
|
"tipo_documento" VARCHAR(10) NOT NULL DEFAULT 'NFE', -- 'NFE', 'NF_PAPEL', 'OUTROS'
|
|
"chave_acesso_nfe" CHAR(44) DEFAULT NULL,
|
|
"numero_documento" VARCHAR(30) DEFAULT NULL,
|
|
"serie_documento" VARCHAR(5) DEFAULT NULL,
|
|
"data_emissao" DATE DEFAULT NULL,
|
|
"valor_documento" NUMERIC(15, 2) DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Informações de Quantidades da Carga no CT-e
|
|
CREATE TABLE IF NOT EXISTS "cte_carga" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"cte_id" BIGINT NOT NULL,
|
|
"codigo_unidade_medida" VARCHAR(2) NOT NULL DEFAULT '01', -- 00: M3, 01: KG, 02: TON, 03: UNID, 04: LITROS, 05: MMBTU
|
|
"tipo_medida" VARCHAR(60) NOT NULL, -- 'PESO BRUTO', 'PESO DECLARADO', 'PESO LIQUIDO', 'VOLUME', 'LITRAGEM'
|
|
"quantidade" NUMERIC(15, 4) NOT NULL DEFAULT 0.0000,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Informações do Veículo Rodoviário e Condutores no CT-e
|
|
CREATE TABLE IF NOT EXISTS "cte_veiculo_rodoviario" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"cte_id" BIGINT NOT NULL,
|
|
"veiculo_id" BIGINT DEFAULT NULL,
|
|
"rntrc" VARCHAR(20) DEFAULT NULL,
|
|
"condutor_id" BIGINT DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Eventos do CT-e (Cancelamento, Carta de Correção - CC-e)
|
|
CREATE TABLE IF NOT EXISTS "cte_evento" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"cte_id" BIGINT NOT NULL,
|
|
"tipo_evento" VARCHAR(30) NOT NULL, -- 'CANCELAMENTO', 'CCE'
|
|
"codigo_evento" CHAR(6) NOT NULL, -- 110111: Cancelamento, 110110: CC-e
|
|
"sequencial_evento" INTEGER NOT NULL DEFAULT 1,
|
|
"data_evento" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"protocolo" VARCHAR(60) DEFAULT NULL,
|
|
"justificativa" TEXT NOT NULL,
|
|
"xml_evento" TEXT DEFAULT NULL,
|
|
"xml_retorno" TEXT DEFAULT NULL,
|
|
"status_sefaz" VARCHAR(10) DEFAULT NULL,
|
|
"motivo_sefaz" VARCHAR(512) DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 9. MÓDULO DE MDF-e (MANIFESTO ELETRÔNICO DE DOCUMENTOS FISCAIS - MODELO 58)
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "mdfe" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL, -- Filial emissora do manifesto
|
|
"serie_fiscal_id" BIGINT DEFAULT NULL, -- Série fiscal do MDF-e
|
|
"serie" VARCHAR(5) NOT NULL DEFAULT '1',
|
|
"numero" INTEGER NOT NULL,
|
|
"codigo_numerico" CHAR(8) DEFAULT NULL, -- cMDF
|
|
"tipo_emissao" SMALLINT NOT NULL DEFAULT 1, -- 1: Normal, 2: Contingência
|
|
"tipo_transportador" SMALLINT NOT NULL DEFAULT 1, -- 1: ETC, 2: TAC, 3: CTC
|
|
"modal" SMALLINT NOT NULL DEFAULT 1, -- 1: Rodoviário, 2: Aéreo, 3: Aquaviário, 4: Ferroviário
|
|
"ambiente_sefaz" SMALLINT NOT NULL DEFAULT 2, -- 1: Produção, 2: Homologação
|
|
|
|
-- Datas e Status
|
|
"data_emissao" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"data_inicio_viagem" TIMESTAMP DEFAULT NULL,
|
|
"status" VARCHAR(20) NOT NULL DEFAULT 'DIGITACAO', -- DIGITACAO, TRANSMITIDO, AUTORIZADO, ENCERRADO, CANCELADO, REJEITADO
|
|
"chave_acesso" CHAR(44) DEFAULT NULL,
|
|
"protocolo_autorizacao" VARCHAR(60) DEFAULT NULL,
|
|
"data_autorizacao" TIMESTAMP DEFAULT NULL,
|
|
"motivo_status_sefaz" VARCHAR(512) DEFAULT NULL,
|
|
"codigo_status_sefaz" VARCHAR(10) DEFAULT NULL,
|
|
|
|
-- Rota do Transporte
|
|
"uf_carregamento" CHAR(2) NOT NULL,
|
|
"uf_descarregamento" CHAR(2) NOT NULL,
|
|
|
|
-- Totais Consolidados da Carga
|
|
"valor_total_carga" NUMERIC(15, 2) NOT NULL DEFAULT 0.00,
|
|
"codigo_unidade_peso" VARCHAR(2) NOT NULL DEFAULT '01', -- 01: KG, 02: TON
|
|
"peso_bruto_total" NUMERIC(15, 4) NOT NULL DEFAULT 0.0000,
|
|
"quantidade_total_dfe" INTEGER NOT NULL DEFAULT 0, -- Total de CT-e / NF-e manifestados
|
|
|
|
-- Seguro de Carga
|
|
"responsavel_seguro" SMALLINT DEFAULT 1, -- 1: Emitente do MDF-e, 2: Contratante do Serviço
|
|
"seguradora_cnpj" CHAR(14) DEFAULT NULL,
|
|
"seguradora_nome" VARCHAR(128) DEFAULT NULL,
|
|
"numero_apolice" VARCHAR(60) DEFAULT NULL,
|
|
"numero_averbacao" VARCHAR(60) DEFAULT NULL,
|
|
|
|
-- Arquivos e Informações
|
|
"informacoes_complementares" TEXT DEFAULT NULL,
|
|
"informacoes_fisco" TEXT DEFAULT NULL,
|
|
"xml_envio" TEXT DEFAULT NULL,
|
|
"xml_autorizado" TEXT DEFAULT NULL,
|
|
"xml_encerramento" TEXT DEFAULT NULL,
|
|
"xml_cancelamento" TEXT DEFAULT NULL,
|
|
"retorno_sefaz_json" JSONB DEFAULT NULL,
|
|
"qrcode_url_mdfe" TEXT DEFAULT NULL,
|
|
|
|
-- Timestamps
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- Municípios de Carregamento do MDF-e
|
|
CREATE TABLE IF NOT EXISTS "mdfe_municipio_carregamento" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"mdfe_id" BIGINT NOT NULL,
|
|
"end_codigo_ibge" CHAR(7) NOT NULL,
|
|
"end_cidade" VARCHAR(128) NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Municípios de Descarregamento do MDF-e
|
|
CREATE TABLE IF NOT EXISTS "mdfe_municipio_descarregamento" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"mdfe_id" BIGINT NOT NULL,
|
|
"end_codigo_ibge" CHAR(7) NOT NULL,
|
|
"end_cidade" VARCHAR(128) NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- UFs de Percurso do Transporte (quando interestadual)
|
|
CREATE TABLE IF NOT EXISTS "mdfe_percurso_uf" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"mdfe_id" BIGINT NOT NULL,
|
|
"ordem" SMALLINT NOT NULL DEFAULT 1,
|
|
"uf_percurso" CHAR(2) NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Veículo de Tração do MDF-e
|
|
CREATE TABLE IF NOT EXISTS "mdfe_veiculo_tracao" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"mdfe_id" BIGINT NOT NULL,
|
|
"veiculo_id" BIGINT DEFAULT NULL,
|
|
"placa" VARCHAR(10) NOT NULL,
|
|
"renavam" VARCHAR(20) DEFAULT NULL,
|
|
"uf_licenciamento" CHAR(2) NOT NULL,
|
|
"tara_kg" INTEGER NOT NULL DEFAULT 0,
|
|
"capacidade_kg" INTEGER DEFAULT 0,
|
|
"capacidade_m3" INTEGER DEFAULT 0,
|
|
"tipo_rodado" VARCHAR(2) DEFAULT '01',
|
|
"tipo_carroceria" VARCHAR(2) DEFAULT '00',
|
|
"rntrc" VARCHAR(20) DEFAULT NULL,
|
|
"proprietario_tipo_pessoa" SMALLINT DEFAULT 1,
|
|
"proprietario_cpf_cnpj" VARCHAR(14) DEFAULT NULL,
|
|
"proprietario_nome" VARCHAR(128) DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Reboques Acoplados no MDF-e
|
|
CREATE TABLE IF NOT EXISTS "mdfe_veiculo_reboque" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"mdfe_id" BIGINT NOT NULL,
|
|
"veiculo_id" BIGINT DEFAULT NULL,
|
|
"placa" VARCHAR(10) NOT NULL,
|
|
"renavam" VARCHAR(20) DEFAULT NULL,
|
|
"uf_licenciamento" CHAR(2) NOT NULL,
|
|
"tara_kg" INTEGER NOT NULL DEFAULT 0,
|
|
"capacidade_kg" INTEGER DEFAULT 0,
|
|
"capacidade_m3" INTEGER DEFAULT 0,
|
|
"tipo_carroceria" VARCHAR(2) DEFAULT '00',
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Condutores / Motoristas Vinculados ao MDF-e
|
|
CREATE TABLE IF NOT EXISTS "mdfe_condutor" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"mdfe_id" BIGINT NOT NULL,
|
|
"condutor_id" BIGINT DEFAULT NULL,
|
|
"nome_condutor" VARCHAR(128) NOT NULL,
|
|
"cpf_condutor" CHAR(11) NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Documentos Fiscais Manifestados no MDF-e (NF-e ou CT-e)
|
|
CREATE TABLE IF NOT EXISTS "mdfe_documento_referenciado" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"mdfe_id" BIGINT NOT NULL,
|
|
"tipo_documento" VARCHAR(10) NOT NULL DEFAULT 'NFE', -- 'NFE', 'CTE'
|
|
"chave_acesso" CHAR(44) NOT NULL,
|
|
"end_codigo_ibge_descarregamento" CHAR(7) NOT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Eventos do MDF-e (Cancelamento, Encerramento, Inclusão de Condutor)
|
|
CREATE TABLE IF NOT EXISTS "mdfe_evento" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"mdfe_id" BIGINT NOT NULL,
|
|
"tipo_evento" VARCHAR(30) NOT NULL, -- 'ENCERRAMENTO', 'CANCELAMENTO', 'INCLUSAO_CONDUTOR'
|
|
"codigo_evento" CHAR(6) NOT NULL, -- 110112: Encerramento, 110111: Cancelamento, 110114: Inclusão Condutor
|
|
"sequencial_evento" INTEGER NOT NULL DEFAULT 1,
|
|
"data_evento" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"protocolo" VARCHAR(60) DEFAULT NULL,
|
|
"justificativa" TEXT DEFAULT NULL,
|
|
-- Dados específicos do encerramento (UF e Município de Encerramento)
|
|
"end_codigo_ibge_encerramento" CHAR(7) DEFAULT NULL,
|
|
"end_uf_encerramento" CHAR(2) DEFAULT NULL,
|
|
"xml_evento" TEXT DEFAULT NULL,
|
|
"xml_retorno" TEXT DEFAULT NULL,
|
|
"status_sefaz" VARCHAR(10) DEFAULT NULL,
|
|
"motivo_sefaz" VARCHAR(512) DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 10. CONFIGURAÇÕES & MENSALIDADES DA EMPRESA
|
|
-- ============================================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS "configuracao" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"nome_app" VARCHAR(128) NOT NULL DEFAULT 'Workbloom ERP',
|
|
"mensagem_suporte" VARCHAR(512) DEFAULT NULL,
|
|
"contato_suporte" VARCHAR(32) DEFAULT NULL,
|
|
"contato_suporte_formatado" VARCHAR(32) DEFAULT NULL,
|
|
"info_pagamento_pix" TEXT DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS "pagamento_empresa" (
|
|
"id" BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
"uuid" UUID NOT NULL,
|
|
"empresa_id" BIGINT NOT NULL,
|
|
"contador_id" BIGINT DEFAULT NULL,
|
|
"data_vencimento" DATE NOT NULL,
|
|
"data_pagamento" DATE DEFAULT NULL,
|
|
"valor" NUMERIC(15, 2) NOT NULL,
|
|
"status" VARCHAR(20) NOT NULL DEFAULT 'PENDENTE', -- PENDENTE, PAGO, CANCELADO, VENCIDO
|
|
"observacoes" VARCHAR(512) DEFAULT NULL,
|
|
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updated_at" TIMESTAMP DEFAULT NULL,
|
|
"deleted_at" TIMESTAMP DEFAULT NULL
|
|
);
|
|
|
|
-- ============================================================================
|
|
-- 11. CONSTRAINTS (CHAVES ESTRANGEIRAS E UNICIDADES)
|
|
-- ============================================================================
|
|
|
|
-- Usuario
|
|
ALTER TABLE "usuario"
|
|
ADD CONSTRAINT "usuario_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "usuario_email_unique" UNIQUE ("email"),
|
|
ADD CONSTRAINT "usuario_nome_usuario_unique" UNIQUE ("nome_usuario");
|
|
|
|
-- Contador
|
|
ALTER TABLE "contador"
|
|
ADD CONSTRAINT "contador_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "contador_email_unique" UNIQUE ("email");
|
|
|
|
-- Certificado
|
|
ALTER TABLE "certificado"
|
|
ADD CONSTRAINT "certificado_uuid_unique" UNIQUE ("uuid");
|
|
|
|
-- Empresa
|
|
ALTER TABLE "empresa"
|
|
ADD CONSTRAINT "empresa_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "empresa_cnpj_unique" UNIQUE ("cnpj"),
|
|
ADD CONSTRAINT "fk_empresa_matriz" FOREIGN KEY ("matriz_id") REFERENCES "empresa" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_empresa_contador" FOREIGN KEY ("contador_id") REFERENCES "contador" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_empresa_certificado" FOREIGN KEY ("certificado_id") REFERENCES "certificado" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- Empresa Configuração Fiscal
|
|
ALTER TABLE "empresa_configuracao_fiscal"
|
|
ADD CONSTRAINT "empresa_config_fiscal_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "empresa_config_fiscal_mod_unique" UNIQUE ("empresa_id", "modelo_documento"),
|
|
ADD CONSTRAINT "fk_empresa_config_fiscal_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Série Fiscal
|
|
ALTER TABLE "serie_fiscal"
|
|
ADD CONSTRAINT "serie_fiscal_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "serie_fiscal_empresa_mod_serie_amb_unique" UNIQUE ("empresa_id", "modelo_documento", "serie", "ambiente_sefaz"),
|
|
ADD CONSTRAINT "fk_serie_fiscal_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Usuario Empresa
|
|
ALTER TABLE "usuario_empresa"
|
|
ADD CONSTRAINT "usuario_empresa_unique" UNIQUE ("usuario_id", "empresa_id"),
|
|
ADD CONSTRAINT "fk_usuario_empresa_usuario" FOREIGN KEY ("usuario_id") REFERENCES "usuario" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_usuario_empresa_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Unidade
|
|
ALTER TABLE "unidade"
|
|
ADD CONSTRAINT "unidade_sigla_unique" UNIQUE ("sigla");
|
|
|
|
-- Cliente
|
|
ALTER TABLE "cliente"
|
|
ADD CONSTRAINT "cliente_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_cliente_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Fornecedor
|
|
ALTER TABLE "fornecedor"
|
|
ADD CONSTRAINT "fornecedor_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_fornecedor_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Transportadora
|
|
ALTER TABLE "transportadora"
|
|
ADD CONSTRAINT "transportadora_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_transportadora_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Veiculo
|
|
ALTER TABLE "veiculo"
|
|
ADD CONSTRAINT "veiculo_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_veiculo_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Condutor
|
|
ALTER TABLE "condutor"
|
|
ADD CONSTRAINT "condutor_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_condutor_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Produto
|
|
ALTER TABLE "produto"
|
|
ADD CONSTRAINT "produto_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "produto_empresa_codigo_unique" UNIQUE ("empresa_id", "codigo_interno"),
|
|
ADD CONSTRAINT "fk_produto_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_produto_unidade_comercial" FOREIGN KEY ("unidade_comercial_id") REFERENCES "unidade" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_produto_unidade_tributavel" FOREIGN KEY ("unidade_tributavel_id") REFERENCES "unidade" ("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- Serviço (NFS-e)
|
|
ALTER TABLE "servico"
|
|
ADD CONSTRAINT "servico_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "servico_empresa_codigo_unique" UNIQUE ("empresa_id", "codigo_interno"),
|
|
ADD CONSTRAINT "fk_servico_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Documento Fiscal (NF-e / NFC-e)
|
|
ALTER TABLE "documento_fiscal"
|
|
ADD CONSTRAINT "documento_fiscal_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "documento_fiscal_chave_unique" UNIQUE ("chave_acesso"),
|
|
ADD CONSTRAINT "documento_fiscal_empresa_mod_serie_num_amb_unique" UNIQUE ("empresa_id", "modelo", "serie", "numero", "ambiente_sefaz"),
|
|
ADD CONSTRAINT "fk_doc_fiscal_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_doc_fiscal_serie" FOREIGN KEY ("serie_fiscal_id") REFERENCES "serie_fiscal" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_doc_fiscal_cliente" FOREIGN KEY ("cliente_id") REFERENCES "cliente" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_doc_fiscal_transportadora" FOREIGN KEY ("transportadora_id") REFERENCES "transportadora" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- Documento Fiscal Item
|
|
ALTER TABLE "documento_fiscal_item"
|
|
ADD CONSTRAINT "doc_fiscal_item_num_unique" UNIQUE ("documento_fiscal_id", "numero_item"),
|
|
ADD CONSTRAINT "fk_doc_fiscal_item_doc" FOREIGN KEY ("documento_fiscal_id") REFERENCES "documento_fiscal" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_doc_fiscal_item_produto" FOREIGN KEY ("produto_id") REFERENCES "produto" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- Documento Fiscal Pagamento
|
|
ALTER TABLE "documento_fiscal_pagamento"
|
|
ADD CONSTRAINT "fk_doc_fiscal_pagamento_doc" FOREIGN KEY ("documento_fiscal_id") REFERENCES "documento_fiscal" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Documento Fiscal Duplicata
|
|
ALTER TABLE "documento_fiscal_duplicata"
|
|
ADD CONSTRAINT "fk_doc_fiscal_duplicata_doc" FOREIGN KEY ("documento_fiscal_id") REFERENCES "documento_fiscal" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Documento Fiscal Evento
|
|
ALTER TABLE "documento_fiscal_evento"
|
|
ADD CONSTRAINT "doc_fiscal_evento_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_doc_fiscal_evento_doc" FOREIGN KEY ("documento_fiscal_id") REFERENCES "documento_fiscal" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- NFS-e
|
|
ALTER TABLE "nfse"
|
|
ADD CONSTRAINT "nfse_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "nfse_empresa_serie_num_amb_unique" UNIQUE ("empresa_id", "serie_rps", "numero_rps", "ambiente_sefaz"),
|
|
ADD CONSTRAINT "fk_nfse_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_nfse_serie" FOREIGN KEY ("serie_fiscal_id") REFERENCES "serie_fiscal" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_nfse_cliente" FOREIGN KEY ("cliente_id") REFERENCES "cliente" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_nfse_intermediario" FOREIGN KEY ("intermediario_id") REFERENCES "cliente" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- NFS-e Item
|
|
ALTER TABLE "nfse_item"
|
|
ADD CONSTRAINT "nfse_item_num_unique" UNIQUE ("nfse_id", "numero_item"),
|
|
ADD CONSTRAINT "fk_nfse_item_nfse" FOREIGN KEY ("nfse_id") REFERENCES "nfse" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_nfse_item_servico" FOREIGN KEY ("servico_id") REFERENCES "servico" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- NFS-e Evento
|
|
ALTER TABLE "nfse_evento"
|
|
ADD CONSTRAINT "nfse_evento_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_nfse_evento_nfse" FOREIGN KEY ("nfse_id") REFERENCES "nfse" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- CT-e
|
|
ALTER TABLE "cte"
|
|
ADD CONSTRAINT "cte_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "cte_chave_unique" UNIQUE ("chave_acesso"),
|
|
ADD CONSTRAINT "cte_empresa_serie_num_amb_unique" UNIQUE ("empresa_id", "serie", "numero", "ambiente_sefaz"),
|
|
ADD CONSTRAINT "fk_cte_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_cte_serie" FOREIGN KEY ("serie_fiscal_id") REFERENCES "serie_fiscal" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_cte_remetente" FOREIGN KEY ("remetente_id") REFERENCES "cliente" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_cte_destinatario" FOREIGN KEY ("destinatario_id") REFERENCES "cliente" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_cte_expedidor" FOREIGN KEY ("expedidor_id") REFERENCES "cliente" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_cte_recebedor" FOREIGN KEY ("recebedor_id") REFERENCES "cliente" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_cte_tomador" FOREIGN KEY ("tomador_id") REFERENCES "cliente" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- CT-e Componentes
|
|
ALTER TABLE "cte_componente_valor"
|
|
ADD CONSTRAINT "fk_cte_componente_cte" FOREIGN KEY ("cte_id") REFERENCES "cte" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- CT-e Documentos Referenciados
|
|
ALTER TABLE "cte_documento_referenciado"
|
|
ADD CONSTRAINT "fk_cte_doc_ref_cte" FOREIGN KEY ("cte_id") REFERENCES "cte" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- CT-e Carga
|
|
ALTER TABLE "cte_carga"
|
|
ADD CONSTRAINT "fk_cte_carga_cte" FOREIGN KEY ("cte_id") REFERENCES "cte" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- CT-e Veículo Rodoviário
|
|
ALTER TABLE "cte_veiculo_rodoviario"
|
|
ADD CONSTRAINT "fk_cte_veiculo_cte" FOREIGN KEY ("cte_id") REFERENCES "cte" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_cte_veiculo_veiculo" FOREIGN KEY ("veiculo_id") REFERENCES "veiculo" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_cte_veiculo_condutor" FOREIGN KEY ("condutor_id") REFERENCES "condutor" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- CT-e Eventos
|
|
ALTER TABLE "cte_evento"
|
|
ADD CONSTRAINT "cte_evento_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_cte_evento_cte" FOREIGN KEY ("cte_id") REFERENCES "cte" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- MDF-e
|
|
ALTER TABLE "mdfe"
|
|
ADD CONSTRAINT "mdfe_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "mdfe_chave_unique" UNIQUE ("chave_acesso"),
|
|
ADD CONSTRAINT "mdfe_empresa_serie_num_amb_unique" UNIQUE ("empresa_id", "serie", "numero", "ambiente_sefaz"),
|
|
ADD CONSTRAINT "fk_mdfe_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_mdfe_serie" FOREIGN KEY ("serie_fiscal_id") REFERENCES "serie_fiscal" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- MDF-e Municípios Carregamento
|
|
ALTER TABLE "mdfe_municipio_carregamento"
|
|
ADD CONSTRAINT "fk_mdfe_mun_carr_mdfe" FOREIGN KEY ("mdfe_id") REFERENCES "mdfe" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- MDF-e Municípios Descarregamento
|
|
ALTER TABLE "mdfe_municipio_descarregamento"
|
|
ADD CONSTRAINT "fk_mdfe_mun_desc_mdfe" FOREIGN KEY ("mdfe_id") REFERENCES "mdfe" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- MDF-e Percurso UFs
|
|
ALTER TABLE "mdfe_percurso_uf"
|
|
ADD CONSTRAINT "fk_mdfe_percurso_mdfe" FOREIGN KEY ("mdfe_id") REFERENCES "mdfe" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- MDF-e Veículo Tração
|
|
ALTER TABLE "mdfe_veiculo_tracao"
|
|
ADD CONSTRAINT "fk_mdfe_veic_tracao_mdfe" FOREIGN KEY ("mdfe_id") REFERENCES "mdfe" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_mdfe_veic_tracao_veiculo" FOREIGN KEY ("veiculo_id") REFERENCES "veiculo" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- MDF-e Reboques
|
|
ALTER TABLE "mdfe_veiculo_reboque"
|
|
ADD CONSTRAINT "fk_mdfe_veic_reboque_mdfe" FOREIGN KEY ("mdfe_id") REFERENCES "mdfe" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_mdfe_veic_reboque_veiculo" FOREIGN KEY ("veiculo_id") REFERENCES "veiculo" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- MDF-e Condutores
|
|
ALTER TABLE "mdfe_condutor"
|
|
ADD CONSTRAINT "fk_mdfe_condutor_mdfe" FOREIGN KEY ("mdfe_id") REFERENCES "mdfe" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_mdfe_condutor_condutor" FOREIGN KEY ("condutor_id") REFERENCES "condutor" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- MDF-e Documentos Referenciados
|
|
ALTER TABLE "mdfe_documento_referenciado"
|
|
ADD CONSTRAINT "fk_mdfe_doc_ref_mdfe" FOREIGN KEY ("mdfe_id") REFERENCES "mdfe" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- MDF-e Eventos
|
|
ALTER TABLE "mdfe_evento"
|
|
ADD CONSTRAINT "mdfe_evento_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_mdfe_evento_mdfe" FOREIGN KEY ("mdfe_id") REFERENCES "mdfe" ("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Pagamento Empresa
|
|
ALTER TABLE "pagamento_empresa"
|
|
ADD CONSTRAINT "pagamento_empresa_uuid_unique" UNIQUE ("uuid"),
|
|
ADD CONSTRAINT "fk_pagamento_empresa_empresa" FOREIGN KEY ("empresa_id") REFERENCES "empresa" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
ADD CONSTRAINT "fk_pagamento_empresa_contador" FOREIGN KEY ("contador_id") REFERENCES "contador" ("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- ============================================================================
|
|
-- 12. ÍNDICES DE PERFORMANCE E BUSCA RÁPIDA
|
|
-- ============================================================================
|
|
|
|
CREATE INDEX IF NOT EXISTS "idx_empresa_matriz_id" ON "empresa" ("matriz_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_empresa_cnpj" ON "empresa" ("cnpj");
|
|
CREATE INDEX IF NOT EXISTS "idx_empresa_config_fiscal_empresa" ON "empresa_configuracao_fiscal" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_serie_fiscal_empresa_mod" ON "serie_fiscal" ("empresa_id", "modelo_documento");
|
|
CREATE INDEX IF NOT EXISTS "idx_cliente_empresa_id" ON "cliente" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_cliente_cpf_cnpj" ON "cliente" ("cpf", "cnpj");
|
|
CREATE INDEX IF NOT EXISTS "idx_fornecedor_empresa_id" ON "fornecedor" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_veiculo_empresa_placa" ON "veiculo" ("empresa_id", "placa");
|
|
CREATE INDEX IF NOT EXISTS "idx_condutor_empresa_cpf" ON "condutor" ("empresa_id", "cpf");
|
|
CREATE INDEX IF NOT EXISTS "idx_produto_empresa_id" ON "produto" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_produto_codigo_interno" ON "produto" ("codigo_interno");
|
|
CREATE INDEX IF NOT EXISTS "idx_produto_ncm" ON "produto" ("ncm");
|
|
CREATE INDEX IF NOT EXISTS "idx_produto_c_classif_trib" ON "produto" ("c_classif_trib");
|
|
CREATE INDEX IF NOT EXISTS "idx_produto_ean" ON "produto" ("codigo_barras_ean");
|
|
CREATE INDEX IF NOT EXISTS "idx_servico_empresa_id" ON "servico" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_servico_codigo_interno" ON "servico" ("codigo_interno");
|
|
CREATE INDEX IF NOT EXISTS "idx_servico_item_lc116" ON "servico" ("item_lista_servico");
|
|
CREATE INDEX IF NOT EXISTS "idx_doc_fiscal_empresa_id" ON "documento_fiscal" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_doc_fiscal_status" ON "documento_fiscal" ("status");
|
|
CREATE INDEX IF NOT EXISTS "idx_doc_fiscal_data_emissao" ON "documento_fiscal" ("data_emissao");
|
|
CREATE INDEX IF NOT EXISTS "idx_doc_fiscal_chave_acesso" ON "documento_fiscal" ("chave_acesso");
|
|
CREATE INDEX IF NOT EXISTS "idx_doc_fiscal_item_doc_id" ON "documento_fiscal_item" ("documento_fiscal_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_nfse_empresa_id" ON "nfse" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_nfse_status" ON "nfse" ("status");
|
|
CREATE INDEX IF NOT EXISTS "idx_nfse_numero_nfse" ON "nfse" ("numero_nfse");
|
|
CREATE INDEX IF NOT EXISTS "idx_nfse_chave_acesso" ON "nfse" ("chave_acesso");
|
|
CREATE INDEX IF NOT EXISTS "idx_nfse_id_dps" ON "nfse" ("id_dps");
|
|
CREATE INDEX IF NOT EXISTS "idx_nfse_item_nfse_id" ON "nfse_item" ("nfse_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_cte_empresa_id" ON "cte" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_cte_status" ON "cte" ("status");
|
|
CREATE INDEX IF NOT EXISTS "idx_cte_chave_acesso" ON "cte" ("chave_acesso");
|
|
CREATE INDEX IF NOT EXISTS "idx_mdfe_empresa_id" ON "mdfe" ("empresa_id");
|
|
CREATE INDEX IF NOT EXISTS "idx_mdfe_status" ON "mdfe" ("status");
|
|
CREATE INDEX IF NOT EXISTS "idx_mdfe_chave_acesso" ON "mdfe" ("chave_acesso");
|
|
|
|
-- ============================================================================
|
|
-- 13. DADOS INICIAIS DE APOIO (SEEDS DE UNIDADES E CONFIGURAÇÃO)
|
|
-- ============================================================================
|
|
|
|
INSERT INTO "unidade" ("sigla", "descricao") VALUES
|
|
('UN', 'UNIDADE'),
|
|
('CX', 'CAIXA'),
|
|
('KG', 'QUILOGRAMA'),
|
|
('KIT', 'KIT'),
|
|
('PC', 'PEÇA'),
|
|
('PCT', 'PACOTE'),
|
|
('LT', 'LITRO'),
|
|
('M', 'METRO'),
|
|
('M2', 'METRO QUADRADO'),
|
|
('M3', 'METRO CÚBICO'),
|
|
('PAR', 'PAR'),
|
|
('DZ', 'DUZIA'),
|
|
('FD', 'FARDO'),
|
|
('TON', 'TONELADA'),
|
|
('G', 'GRAMA'),
|
|
('ML', 'MILILITRO'),
|
|
('SERV', 'SERVIÇO'),
|
|
('HORA', 'HORA')
|
|
ON CONFLICT ("sigla") DO NOTHING;
|
|
|
|
INSERT INTO "configuracao" ("id", "nome_app", "mensagem_suporte") VALUES
|
|
(1, 'Workbloom ERP', 'Suporte ao emissor fiscal disponível de segunda a sexta.')
|
|
ON CONFLICT ("id") DO NOTHING; |