/******************************************************************************/
/***          Generated by IBExpert 2010.03.19 07/06/2018 15:04:33          ***/
/******************************************************************************/

SET SQL DIALECT 3;


CREATE DATABASE 'localhost:D:\Desenvolvimento\Estoque\Estoque.fdb'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET ISO8859_1;



/******************************************************************************/
/***                         User Defined Functions                         ***/
/******************************************************************************/

DECLARE EXTERNAL FUNCTION CLR_DIG
    CSTRING(18)
    RETURNS CSTRING(18)
    ENTRY_POINT 'CLR_DIG' MODULE_NAME 'AfaDll';


DECLARE EXTERNAL FUNCTION COLLATEBR
    CSTRING(254)
    RETURNS CSTRING(254)
    ENTRY_POINT 'COLLATEBR' MODULE_NAME 'AfaDll';


DECLARE EXTERNAL FUNCTION DAYS_BETWEEN
    TIMESTAMP,
    TIMESTAMP
    RETURNS INTEGER BY VALUE
    ENTRY_POINT 'DAYS_BETWEEN' MODULE_NAME 'AfaDll';


DECLARE EXTERNAL FUNCTION IF_NN
    DOUBLE PRECISION,
    CSTRING(5),
    DOUBLE PRECISION,
    DOUBLE PRECISION,
    DOUBLE PRECISION
    RETURNS DOUBLE PRECISION BY VALUE
    ENTRY_POINT 'IF_NN' MODULE_NAME 'AfaDll';


DECLARE EXTERNAL FUNCTION IF_NS
    DOUBLE PRECISION,
    CSTRING(5),
    DOUBLE PRECISION,
    CSTRING(254),
    CSTRING(254)
    RETURNS CSTRING(254)
    ENTRY_POINT 'IF_NS' MODULE_NAME 'AfaDll';


DECLARE EXTERNAL FUNCTION IF_SN
    CSTRING(254),
    CSTRING(5),
    CSTRING(254),
    DOUBLE PRECISION,
    DOUBLE PRECISION
    RETURNS DOUBLE PRECISION BY VALUE
    ENTRY_POINT 'IF_SN' MODULE_NAME 'AfaDll';


DECLARE EXTERNAL FUNCTION IF_SS
    CSTRING(254),
    CSTRING(5),
    CSTRING(254),
    CSTRING(254),
    CSTRING(254)
    RETURNS CSTRING(254)
    ENTRY_POINT 'IF_SS' MODULE_NAME 'AfaDll';


DECLARE EXTERNAL FUNCTION LPAD
    CSTRING(255),
    INTEGER,
    CSTRING(1)
    RETURNS CSTRING(255) FREE_IT
    ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf';


DECLARE EXTERNAL FUNCTION ROUND_DEC
    DOUBLE PRECISION,
    SMALLINT
    RETURNS DOUBLE PRECISION BY VALUE
    ENTRY_POINT 'ROUND_DEC' MODULE_NAME 'AfaDll';


DECLARE EXTERNAL FUNCTION STRLEN
    CSTRING(327)
    RETURNS INTEGER BY VALUE
    ENTRY_POINT 'AFA_STRLEN' MODULE_NAME 'AfaDll';




/******************************************************************************/
/***                                Domains                                 ***/
/******************************************************************************/

CREATE DOMAIN BIG_INTERGER AS
BIGINT;

CREATE DOMAIN DM_BAIRRO AS
VARCHAR(25);

CREATE DOMAIN DM_CEP AS
VARCHAR(9);

CREATE DOMAIN DM_CIDADE AS
VARCHAR(30);

CREATE DOMAIN DM_CNPJ AS
VARCHAR(18);

CREATE DOMAIN DM_CPF AS
VARCHAR(14);

CREATE DOMAIN DM_EMAIL AS
VARCHAR(150);

CREATE DOMAIN DM_ENDERECO AS
VARCHAR(40);

CREATE DOMAIN DM_FONE AS
VARCHAR(13);

CREATE DOMAIN DM_INSCRICAO AS
VARCHAR(20);

CREATE DOMAIN DM_INTEGER AS
INTEGER
NOT NULL;

CREATE DOMAIN DM_NOME AS
VARCHAR(60)
COLLATE PT_PT;

CREATE DOMAIN DM_RG AS
VARCHAR(18);

CREATE DOMAIN DM_SMALLINT AS
SMALLINT
NOT NULL;

CREATE DOMAIN DM_UF AS
CHAR(2);

CREATE DOMAIN DM_USER AS
VARCHAR(20)
DEFAULT USER;



/******************************************************************************/
/***                               Generators                               ***/
/******************************************************************************/

CREATE GENERATOR GEN_CCE_ID;
SET GENERATOR GEN_CCE_ID TO 13;

CREATE GENERATOR GEN_CIDADE_ID;
SET GENERATOR GEN_CIDADE_ID TO 0;

CREATE GENERATOR GEN_CLIENTE_ID;
SET GENERATOR GEN_CLIENTE_ID TO 0;

CREATE GENERATOR GEN_HISTORICO_PEDIDO_PALM_ID;
SET GENERATOR GEN_HISTORICO_PEDIDO_PALM_ID TO 452;

CREATE GENERATOR GEN_IBPT_ID;
SET GENERATOR GEN_IBPT_ID TO 0;

CREATE GENERATOR GEN_INC_IDPEDIDO_VENDA_BALCAO;
SET GENERATOR GEN_INC_IDPEDIDO_VENDA_BALCAO TO 374;

CREATE GENERATOR GEN_PAIS_ID;
SET GENERATOR GEN_PAIS_ID TO 0;

CREATE GENERATOR GEN_PEDIDOS_IMPRESSO_ID;
SET GENERATOR GEN_PEDIDOS_IMPRESSO_ID TO 242;

CREATE GENERATOR GEN_SENHA_PALM_ID;
SET GENERATOR GEN_SENHA_PALM_ID TO 349;

CREATE GENERATOR IBE$VERSION_HISTORY_ID_GEN;
SET GENERATOR IBE$VERSION_HISTORY_ID_GEN TO 0;

CREATE GENERATOR IDNOTA_SCAN;
SET GENERATOR IDNOTA_SCAN TO 1;

CREATE GENERATOR IDPEDIDO_FILIAL_1;
SET GENERATOR IDPEDIDO_FILIAL_1 TO 312;

CREATE GENERATOR IDPEDIDO_FILIAL_2;
SET GENERATOR IDPEDIDO_FILIAL_2 TO 0;

CREATE GENERATOR IDPEDIDO_FILIAL_3;
SET GENERATOR IDPEDIDO_FILIAL_3 TO 0;

CREATE GENERATOR IDVENDA_BALCAO;
SET GENERATOR IDVENDA_BALCAO TO 405;

CREATE GENERATOR INC_CARTACORRECAO;
SET GENERATOR INC_CARTACORRECAO TO 17;

CREATE GENERATOR INC_ESTOQUE_FISICO;
SET GENERATOR INC_ESTOQUE_FISICO TO 15883;

CREATE GENERATOR INC_ESTOQUE_FISICO_DEPOSITO;
SET GENERATOR INC_ESTOQUE_FISICO_DEPOSITO TO 31091;

CREATE GENERATOR INC_IDPARTICIPANTE;
SET GENERATOR INC_IDPARTICIPANTE TO 586;

CREATE GENERATOR NEW_GENERATOR_IDPEDIDO;
SET GENERATOR NEW_GENERATOR_IDPEDIDO TO 339583;



/******************************************************************************/
/***                               Exceptions                               ***/
/******************************************************************************/

CREATE EXCEPTION ID_MAIOR_Q_100 'Controle não pode Passar de 99';



SET TERM ^ ; 



/******************************************************************************/
/***                           Stored Procedures                            ***/
/******************************************************************************/

CREATE PROCEDURE AFA_SINTEGRA_R50 (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    CPF_CNPJ VARCHAR(18),
    INSESTADUAL VARCHAR(20),
    DATAFINAL DATE,
    UF VARCHAR(2),
    MODELO VARCHAR(2),
    SER VARCHAR(3),
    NOTA INTEGER,
    CFOP VARCHAR(4),
    EMISSORDOCUMENTO VARCHAR(1),
    VALORDOCUMENTO NUMERIC(15,2),
    ALIQUOTA NUMERIC(15,2),
    BASECALCULO NUMERIC(15,2),
    VALORICMS NUMERIC(15,2),
    VALOROUTROS NUMERIC(15,2),
    SITUACAO VARCHAR(1),
    VALORISENTOS NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE AFA_SINTEGRA_R51 (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    CPF_CNPJ VARCHAR(18),
    INSESTADUAL VARCHAR(20),
    DATAFINAL DATE,
    UF VARCHAR(2),
    MODELO VARCHAR(2),
    SER VARCHAR(3),
    NOTA INTEGER,
    CFOP VARCHAR(4),
    EMISSORDOCUMENTO VARCHAR(1),
    VALORDOCUMENTO NUMERIC(15,2),
    VALORIPI NUMERIC(15,2),
    ALIQUOTA NUMERIC(15,2),
    VALOROUTRAS NUMERIC(15,2),
    VALORISENTA NUMERIC(15,2),
    SITUACAO VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE AFA_SINTEGRA_R53 (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    CPF_CNPJ VARCHAR(18),
    INSESTADUAL VARCHAR(20),
    DATAFINAL DATE,
    UF VARCHAR(2),
    MODELO VARCHAR(2),
    SER VARCHAR(3),
    NOTA INTEGER,
    CFOP VARCHAR(4),
    EMISSORDOCUMENTO VARCHAR(1),
    VALORDOCUMENTO NUMERIC(15,2),
    SITUACAO VARCHAR(1),
    ICMSRETIDO NUMERIC(15,2),
    DESPESAS NUMERIC(15,2),
    BASEST NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE AFA_SINTEGRA_R54 (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    CPF_CNPJ VARCHAR(18),
    NOMEPRODUTO VARCHAR(60),
    NUMERO INTEGER,
    CST VARCHAR(3),
    CFOP VARCHAR(4),
    COD_MODELO VARCHAR(2),
    SERIE VARCHAR(3),
    CONTADOR INTEGER,
    ALIQUOTA NUMERIC(15,2),
    BASE_ST NUMERIC(15,2),
    QTDE NUMERIC(15,3),
    VALOR_BASE NUMERIC(15,2),
    VALOR_IPI NUMERIC(15,2),
    VL_ITEM NUMERIC(15,2),
    VL_DESCONTO NUMERIC(15,2),
    IDPRODUTO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ARRUMA_CHAVE_NOTA (
    IDFILIAL INTEGER,
    IDREPRESENTANTE SMALLINT)
RETURNS (
    COUNT_ID INTEGER,
    IDPEDIDOPALM INTEGER,
    IDPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ARRUMA_TIPO_PAGTO_NF (
    IDFILIAL INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATUALIZA_CAMPO_SERIE_NOTA (
    IDFILIAL SMALLINT)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATUALIZA_CARTEIRA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    IDPRODUTO INTEGER,
    IDCARTEIRA INTEGER,
    FATOR INTEGER,
    IDUNIDADEMEDIDA INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ATUALIZA_CFOP_NOTA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATUALIZA_CONSIGNACAO (
    IDCONSIGNACAO INTEGER,
    IDFILIAL INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATUALIZA_ESTOQUE (
    IDFILIAL SMALLINT,
    IDPRODUTO INTEGER,
    QTDE NUMERIC(10,3),
    OPERACAO VARCHAR(1),
    HISTORICO VARCHAR(100))
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATUALIZA_ESTOQUE_DEPOSITO (
    IDFILIAL SMALLINT,
    IDDEPOSITO SMALLINT,
    IDPRODUTO INTEGER,
    QTDE NUMERIC(10,3),
    OPERACAO VARCHAR(1),
    HISTORICO VARCHAR(60))
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATUALIZA_ESTOQUE_FISICO (
    VIDFILIAL INTEGER,
    VANO INTEGER)
RETURNS (
    VIDPRODUTO INTEGER,
    VVALORCUSTO NUMERIC(15,4),
    VVALORVENDA NUMERIC(15,4))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ATUALIZA_NOTA_TIPO_OPER (
    IDFILIAL INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATUALIZA_PRECO_CUSTO (
    IDFILIAL SMALLINT)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA SMALLINT,
    TOTALCUSTO NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ATUALIZA_PRECO_CUSTO_PEDIDO (
    IDFILIAL SMALLINT,
    VIDFOLHA SMALLINT)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA SMALLINT,
    TOTALCUSTO NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ATUALIZACAO_INVENTARIO (
    IDFILIAL INTEGER,
    SITUACAO CHAR(1))
RETURNS (
    IDPRODUTO INTEGER,
    ESTOQUE NUMERIC(10,3),
    QTDEESTOQUE NUMERIC(10,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ATUALIZACAO_INVENTARIO_DEPOSITO (
    IDFILIAL INTEGER,
    SITUACAO CHAR(1) CHARACTER SET NONE,
    IDDEPOSITO INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    ESTOQUE NUMERIC(10,3),
    QTDEESTOQUE NUMERIC(10,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ATUALIZANDO_QTD_ERRADA_ENTRADA (
    IDFILIAL INTEGER,
    IDNOTA INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATUALIZAR_CEST (
    IDFILIAL INTEGER,
    TIPO_MVA INTEGER)
RETURNS (
    CEST VARCHAR(7),
    MVA NUMERIC(15,4),
    NCM VARCHAR(15))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ATUALIZAR_DADOS (
    IDFOLHA SMALLINT,
    SERIE SMALLINT)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE ATULIZA_HISTORICO_PRODUTO (
    IDFILIAL INTEGER,
    IDPRODUTO INTEGER,
    QTDEINVENTARIO NUMERIC(10,3),
    QTDECOMPRA NUMERIC(10,3),
    CUSTONOTA NUMERIC(16,2),
    PRECOVENDA NUMERIC(16,2),
    ESTOQUE NUMERIC(10,3))
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE BLOQUEAR_SISTEMA (
    SISTEMA_BLOQUEADO VARCHAR(1))
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE CALCULA_MVA_COMPRA (
    IDFILIAL INTEGER,
    IDPRODUTO INTEGER,
    C_PRECOCUSTO NUMERIC(15,2))
RETURNS (
    VALOR_BASE DOUBLE PRECISION,
    VALORICMSCALCULO NUMERIC(15,2),
    TAXATRIBUTO NUMERIC(15,2),
    CLFISCAL VARCHAR(3),
    INSENTIVO NUMERIC(15,4),
    TOTAL_BASE NUMERIC(15,2),
    TOTAL_ICMS NUMERIC(15,2),
    VALORBASE_ST NUMERIC(15,2),
    MARGEM NUMERIC(15,2),
    ALIQUOTA_ST NUMERIC(15,2),
    VALORICMS_ST NUMERIC(15,2),
    VALORICMS NUMERIC(15,2),
    PRECOVENDA_COM_IMPOSTO NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE CALCULA_TOTAIS_DE_PRODUTO (
    IDFILIAL INTEGER,
    IDPRODUTO INTEGER,
    IDTRIBUTO INTEGER,
    QTDE NUMERIC(10,3),
    PRECO_VENDA NUMERIC(15,2),
    IDCFOP INTEGER,
    UF VARCHAR(2),
    IDCLIENTE INTEGER = 0)
RETURNS (
    VALOR_BASE DOUBLE PRECISION,
    VALORICMSCALCULO NUMERIC(15,2),
    TAXATRIBUTO NUMERIC(15,2),
    CLFISCAL VARCHAR(3),
    INSENTIVO NUMERIC(15,4),
    TOTAL_BASE NUMERIC(15,2),
    TOTAL_ICMS NUMERIC(15,2),
    VALORBASE_ST NUMERIC(15,2),
    MARGEM NUMERIC(15,2),
    ALIQUOTA_ST NUMERIC(15,2),
    VALORICMS_ST NUMERIC(15,2),
    VALORICMS NUMERIC(15,2),
    PRECOVENDA_COM_IMPOSTO NUMERIC(15,2),
    CFOP_PRINCIPAL VARCHAR(1),
    CL_FISCAL_CFOP VARCHAR(3),
    INSENTIVO_CFOP NUMERIC(15,4),
    MARGEM_CFOP NUMERIC(15,2),
    TAXATRIBUTO_CFOP NUMERIC(15,2),
    ALIQUOTAST_CFOP NUMERIC(15,2),
    TAXA_ICMS_ESTADO NUMERIC(15,2),
    ALIQUOTA_ST_ESTADO NUMERIC(15,2),
    ISENTIVO_ESTADO NUMERIC(15,4))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE CALCULA_TOTAL_C100 (
    IDFILIAL INTEGER,
    IDNOTA INTEGER,
    IDFORNECEDOR INTEGER)
RETURNS (
    VVL_TOTAL_ITEM NUMERIC(15,4),
    VCPF_CNPJ VARCHAR(18),
    VVL_IPI NUMERIC(15,4),
    VVL_DESC NUMERIC(15,2),
    VVL_BC_ICMS NUMERIC(15,2),
    VVL_BC_ICMS_ST NUMERIC(15,2),
    VVL_ICMS NUMERIC(15,2),
    VVL_ICMS_ST NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE CLIENTE_ATRASO (
    IDFILIAL INTEGER,
    IDCLIENTE INTEGER)
RETURNS (
    ATRASO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE DESCONTO_NOTA (
    IDFILIAL INTEGER,
    IDNOTA INTEGER,
    TIPONOTA VARCHAR(8))
RETURNS (
    TOTALPRECOVENDA NUMERIC(16,2),
    TOTALDESCONTO NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE ENTRADA_TO_SPED (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE EST_SUGESTAO_COMPRA (
    IDFILIAL INTEGER,
    IDPRODUTO INTEGER,
    IDFORNECEDOR INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    QTDE_COMPRA NUMERIC(15,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE EXPORTA_ESCRITA_ENTRADA (
    IDFILIAL INTEGER,
    DATINI DATE,
    DATFIM DATE)
RETURNS (
    IDFORNECEDOR INTEGER,
    IDNOTA INTEGER,
    DATAENTRADA DATE,
    CNPJ_FORNECEDOR VARCHAR(20) CHARACTER SET NONE,
    UF CHAR(2) CHARACTER SET NONE,
    CFOP CHAR(8) CHARACTER SET NONE,
    DATAEMISSAO DATE,
    VALORCONTABIL NUMERIC(16,2),
    VALORBASE NUMERIC(16,2),
    ALIQUOTAICMS NUMERIC(10,2),
    VALORICMS NUMERIC(16,2),
    VALOROUTROS NUMERIC(16,2),
    CODIGOICMS INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE EXPORTA_ESCRITA_SAIDA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDNOTA INTEGER,
    DATAENTRADA DATE,
    CNPJ_CLIENTE VARCHAR(20),
    UF CHAR(2),
    CFOP CHAR(8),
    VALORCONTABIL NUMERIC(16,2),
    VALORBASE NUMERIC(16,2),
    VALORICMS NUMERIC(16,2),
    ALIQUOTAICMS NUMERIC(10,2),
    VALOROUTROS NUMERIC(16,2),
    CODIGOICMS INTEGER,
    SITUACAONOTA CHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE FU_ALLTRIM (
    WVAR VARCHAR(8192))
RETURNS (
    R_ALLTRIM VARCHAR(8192))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE GERA_FINANCEIRO_VENDA (
    IDFILIAL INTEGER,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE GERADOR_ID (
    IDFILIAL INTEGER,
    GERAR_ID VARCHAR(30))
RETURNS (
    RETORNO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE GERAR_PEDIDO_CFOP_ENTRADA (
    IDFILIAL SMALLINT,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    IDCFOP INTEGER)
RETURNS (
    IDPEDIDO_RETORNO INTEGER,
    IDFOLHA_RETORNO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE INSERT_FORNECEDOR_PRODUTO (
    IDFILIAL SMALLINT)
RETURNS (
    VIDFORNECEDOR INTEGER,
    VIDPRODUTO INTEGER,
    VCUSTONOTA NUMERIC(14,2),
    VPRECOVENDA NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE INSERT_GENERO_MERCADORIA
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE INSERT_PRODUTO_TBAUXILIAR (
    IDFILIAL INTEGER)
RETURNS (
    IDPRODUTO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE INSERT_REGIAO_ROMANEIO (
    IDFILIAL INTEGER,
    IDREGIAO INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDCONTROLE INTEGER)
RETURNS (
    IDPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE INSERT_REPRESENTANTE_ROMANEIO (
    IDFILIAL INTEGER,
    IDREPRESENTANTE INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDCONTROLE INTEGER)
RETURNS (
    IDPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE INSERT_REPRESENTANTE_TBAUX (
    IDFILIAL INTEGER)
RETURNS (
    IDREPRESENTANTE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE INSERT_SUBGRUPO_TBAUX (
    IDFILIAL INTEGER,
    IDGRUPO INTEGER)
RETURNS (
    IDSUB_GRUPO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE INSERT_TIPO_MERCADORIA
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE LIMPAR_ST (
    IDFILIAL INTEGER,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE MARCA_SITUACAO_SPEDC100 (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDNOTA INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE MUDA_ROTA_CLIENTE (
    IDFILIAL INTEGER,
    ROTA INTEGER,
    IDCONTROLE INTEGER)
RETURNS (
    IDCLIENTE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE NEW_PROCEDURE (
    MARCARA VARCHAR(8))
RETURNS (
    RESULTADO VARCHAR(15))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE PEDIDOPALM_D (
    IDFILIAL SMALLINT,
    IDREPRESENTANTE SMALLINT,
    IDPEDIDOPALM INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE PEDIDOPALM_I (
    IDFILIAL SMALLINT,
    IDREPRESENTANTE SMALLINT,
    IDPEDIDOPALM INTEGER,
    IDPEDIDO INTEGER,
    CNPJ CHAR(14),
    IDPEDIDOCLIENTE VARCHAR(20),
    DTEMISSAO DATE,
    HREMISSAO TIME,
    DESCONTO1 NUMERIC(10,2),
    DESCONTO2 NUMERIC(10,2),
    DESCONTO3 NUMERIC(10,2),
    DESCONTO4 NUMERIC(10,2),
    IDFORMAPAGTO SMALLINT,
    NATOPERACAO CHAR(5),
    SITPEDIDO CHAR(1),
    IDPORTADOR SMALLINT,
    IDCONDICAOPAGTO SMALLINT,
    IDTRANSPORTADORA SMALLINT,
    DTENTREGA DATE,
    IDTABELAPRECO INTEGER,
    OBSERVACAO VARCHAR(255),
    IDCLIENTE INTEGER,
    DATAPEDIDO DATE,
    OBS1 VARCHAR(60),
    OBS2 VARCHAR(60),
    TOTAL_PEDIDO NUMERIC(16,2),
    TOTAL_DESCONTO NUMERIC(14,2),
    TOTAL_COM_DECONTO NUMERIC(16,2),
    NRSERIE VARCHAR(15))
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE PEDIDOPALM_IU (
    IDFILIAL SMALLINT,
    IDREPRESENTANTE SMALLINT,
    IDPEDIDOPALM INTEGER,
    IDPEDIDO INTEGER,
    CNPJ CHAR(14),
    IDPEDIDOCLIENTE VARCHAR(20),
    DTEMISSAO DATE,
    HREMISSAO TIME,
    DESCONTO1 NUMERIC(10,2),
    DESCONTO2 NUMERIC(10,2),
    DESCONTO3 NUMERIC(10,2),
    DESCONTO4 NUMERIC(10,2),
    IDFORMAPAGTO SMALLINT,
    NATOPERACAO CHAR(5),
    SITPEDIDO CHAR(1),
    IDPORTADOR SMALLINT,
    IDCONDICAOPAGTO SMALLINT,
    IDTRANSPORTADORA SMALLINT,
    DTENTREGA DATE,
    IDTABELAPRECO INTEGER,
    OBSERVACAO VARCHAR(255),
    IDCLIENTE INTEGER,
    DATAPEDIDO DATE,
    OBS1 VARCHAR(60),
    OBS2 VARCHAR(60),
    TOTAL_PEDIDO NUMERIC(16,2),
    TOTAL_DESCONTO NUMERIC(14,2),
    TOTAL_COM_DECONTO NUMERIC(16,2),
    NRSERIE VARCHAR(15))
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE PEDIDOPALM_S
RETURNS (
    IDFILIAL SMALLINT,
    IDREPRESENTANTE SMALLINT,
    IDPEDIDOPALM INTEGER,
    IDPEDIDO INTEGER,
    CNPJ CHAR(14),
    IDPEDIDOCLIENTE VARCHAR(20),
    DTEMISSAO DATE,
    HREMISSAO TIME,
    DESCONTO1 NUMERIC(10,2),
    DESCONTO2 NUMERIC(10,2),
    DESCONTO3 NUMERIC(10,2),
    DESCONTO4 NUMERIC(10,2),
    IDFORMAPAGTO SMALLINT,
    NATOPERACAO CHAR(5),
    SITPEDIDO CHAR(1),
    IDPORTADOR SMALLINT,
    IDCONDICAOPAGTO SMALLINT,
    IDTRANSPORTADORA SMALLINT,
    DTENTREGA DATE,
    IDTABELAPRECO INTEGER,
    OBSERVACAO VARCHAR(255),
    IDCLIENTE INTEGER,
    DATAPEDIDO DATE,
    OBS1 VARCHAR(60),
    OBS2 VARCHAR(60),
    TOTAL_PEDIDO NUMERIC(16,2),
    TOTAL_DESCONTO NUMERIC(14,2),
    TOTAL_COM_DECONTO NUMERIC(16,2),
    NRSERIE VARCHAR(15))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE PEDIDOPALM_U (
    IDFILIAL SMALLINT,
    IDREPRESENTANTE SMALLINT,
    IDPEDIDOPALM INTEGER,
    IDPEDIDO INTEGER,
    CNPJ CHAR(14),
    IDPEDIDOCLIENTE VARCHAR(20),
    DTEMISSAO DATE,
    HREMISSAO TIME,
    DESCONTO1 NUMERIC(10,2),
    DESCONTO2 NUMERIC(10,2),
    DESCONTO3 NUMERIC(10,2),
    DESCONTO4 NUMERIC(10,2),
    IDFORMAPAGTO SMALLINT,
    NATOPERACAO CHAR(5),
    SITPEDIDO CHAR(1),
    IDPORTADOR SMALLINT,
    IDCONDICAOPAGTO SMALLINT,
    IDTRANSPORTADORA SMALLINT,
    DTENTREGA DATE,
    IDTABELAPRECO INTEGER,
    OBSERVACAO VARCHAR(255),
    IDCLIENTE INTEGER,
    DATAPEDIDO DATE,
    OBS1 VARCHAR(60),
    OBS2 VARCHAR(60),
    TOTAL_PEDIDO NUMERIC(16,2),
    TOTAL_DESCONTO NUMERIC(14,2),
    TOTAL_COM_DECONTO NUMERIC(16,2),
    NRSERIE VARCHAR(15))
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE QUITA_CONTAS_RECEBER (
    IDFILIAL INTEGER,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE RECALCULA_COMISSAO_PALM (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    TOTALCOMISSAO NUMERIC(10,2),
    IDPEDIDO INTEGER,
    TAXAESPECIAL NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE RECALCULA_PEDIDO (
    IDFILIAL INTEGER,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE RECEBENDO_PALM (
    IDFILIAL INTEGER,
    DATAIMPORT DATE,
    ARQUIVO_PALM VARCHAR(40))
RETURNS (
    IDPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE RECEBENDO_PALM_AFA (
    IDFILIAL INTEGER,
    DATAIMPORT DATE,
    IDREPRESENTANTE INTEGER)
RETURNS (
    IDPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE RECEBENDO_PALM_GERENCIAL (
    IDFILIAL INTEGER,
    DATAIMPORT DATE)
RETURNS (
    IDPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_AGRUPAMENTO_PEDIDO (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA SMALLINT,
    NOMEFORMAPAGTO VARCHAR(40) CHARACTER SET NONE,
    NOMECLIENTE VARCHAR(60) CHARACTER SET NONE,
    TOTALPEDIDO NUMERIC(16,2),
    IDCLIENTE INTEGER,
    SITUACAO CHAR(1) CHARACTER SET NONE,
    CONDICAOPAGTO VARCHAR(30) CHARACTER SET NONE,
    NOTAFISCAL INTEGER,
    FANTASIA VARCHAR(60),
    CIDADE VARCHAR(25),
    BAIRRO VARCHAR(25),
    IDREPRESENTANTE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_AGRUPAMENTO_ROMANEIO (
    IDFILIAL SMALLINT,
    IDCONTROLE INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    IDFORNECEDOR INTEGER,
    NOMEFORNECEDOR VARCHAR(40) CHARACTER SET NONE,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25) CHARACTER SET NONE,
    IDUNIDADEMEDIDA INTEGER,
    PESO NUMERIC(10,3),
    EMBALAGEM VARCHAR(10) CHARACTER SET NONE,
    FATORCONVERSAO INTEGER,
    ABREVIATURA VARCHAR(10) CHARACTER SET NONE,
    QTDECAIXA NUMERIC(14,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_AJUSTE_DEPOSITO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPROINI INTEGER,
    IDPROFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    ABREVIATURA CHAR(3) CHARACTER SET NONE,
    TIPOOPERACAO CHAR(1) CHARACTER SET NONE,
    QTDEAJUSTE NUMERIC(10,3),
    DTAJUSTE DATE,
    VALORAJUSTE NUMERIC(14,2),
    FATORCONVERSAO INTEGER,
    IDCONTROLE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_AJUSTE_ESTOQUE (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    ABREVIATURA CHAR(6) CHARACTER SET NONE,
    TIPOOPERACAO CHAR(1) CHARACTER SET NONE,
    QTDEAJUSTE NUMERIC(10,3),
    OBSERVACAO VARCHAR(50) CHARACTER SET NONE,
    DTAJUSTE DATE,
    VALORAJUSTE NUMERIC(14,2),
    FATORCONVERSAO INTEGER,
    IDCONTROLE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_C_RECEBER_ABERTO_REPRE_SINT (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(60),
    TOTALVENDA NUMERIC(16,2),
    TOTALCOMISSAO NUMERIC(16,4),
    CPF VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CARTEIRA (
    IDFILIAL INTEGER,
    IDREPINI SMALLINT,
    IDREPFIM SMALLINT,
    DTINICIAL DATE,
    DTFINAL DATE,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPEDIDOINI INTEGER,
    IDPEDIDOFIM INTEGER)
RETURNS (
    IDCARTEIRA INTEGER,
    HISTORICO VARCHAR(70),
    DATAPEDIDO DATE,
    VALORDEBITO NUMERIC(16,2),
    VALORCREDITO NUMERIC(16,2),
    SALDOANTERIOR NUMERIC(16,2),
    IDPEDIDO INTEGER,
    IDCLIENTE INTEGER,
    IDREPRESENTANTE SMALLINT)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CENTROCUSTOS_ABERTOS (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDOBRAINI INTEGER,
    IDOBRAFIM INTEGER)
RETURNS (
    IDCENTROCUSTO INTEGER,
    NOMECENTROCUSTO VARCHAR(40),
    IDCATEGORIA SMALLINT,
    NOMECATEGORIA VARCHAR(35),
    VALORTOTAL NUMERIC(16,2),
    TIPOOPERACAO CHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CENTROCUSTOS_COMPETENCIA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    DTEMISSAOINI DATE,
    DTEMISSAOFIM DATE)
RETURNS (
    IDCENTROCUSTO INTEGER,
    NOMECENTROCUSTO VARCHAR(40),
    IDCATEGORIA SMALLINT,
    NOMECATEGORIA VARCHAR(35),
    VALORTOTAL NUMERIC(16,2),
    TIPOOPERACAO CHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CENTROCUSTOS_QUITADOS (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDOBRAINI INTEGER,
    IDOBRAFIM INTEGER,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDCAIXAINI SMALLINT,
    IDCAIXAFIM SMALLINT)
RETURNS (
    IDCENTROCUSTO INTEGER,
    NOMECENTROCUSTO VARCHAR(40),
    IDCATEGORIA SMALLINT,
    NOMECATEGORIA VARCHAR(35),
    VALORTOTAL NUMERIC(16,2),
    TIPOOPERACAO CHAR(1),
    TIPOOPERACAO_M VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CENTROCUSTOS_QUITADOS_ANAL (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDOBRAINI INTEGER,
    IDOBRAFIM INTEGER,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDCAIXAINI SMALLINT,
    IDCAIXAFIM SMALLINT)
RETURNS (
    IDCENTROCUSTO INTEGER,
    NOMECENTROCUSTO VARCHAR(40),
    IDCATEGORIA SMALLINT,
    NOMECATEGORIA VARCHAR(35),
    VALORCREDITO NUMERIC(16,2),
    VALORDEBITO NUMERIC(16,2),
    TIPOOPERACAO CHAR(1),
    DTMOVIMENTO DATE,
    IDMOVIMENTOCAIXA INTEGER,
    DOCUMENTO VARCHAR(20),
    DESCRICAOHISTORICO VARCHAR(115))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CLASSIFICACAO_MERCADO (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    AA_FIM NUMERIC(14,2),
    A_INI NUMERIC(14,2),
    A_FIM NUMERIC(14,2),
    B_INI NUMERIC(14,2),
    B_FIM NUMERIC(14,2),
    C_INI NUMERIC(14,2),
    C_FIM NUMERIC(14,2),
    D_FIM NUMERIC(14,2),
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDATIVIDADE SMALLINT,
    NOMEATIVIDADE VARCHAR(25),
    AA INTEGER,
    A INTEGER,
    B INTEGER,
    C INTEGER,
    D INTEGER,
    TOTAL NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CLIENTE_MOVIMENTADOS (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(40),
    QTDECLIENTE INTEGER,
    QTDEATENDIDOS INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CLIENTES_NAO_VISITADOS (
    IDFILIAL INTEGER)
RETURNS (
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(40) CHARACTER SET NONE,
    DTULTIMACOMPRA DATE)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COMISSAORECEBER_REPRE_SINT (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(60),
    TOTALVENDA NUMERIC(16,2),
    TOTALCOMISSAO NUMERIC(16,4),
    CPF VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COMISSAOREPRE_ANAL (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDREPINI INTEGER,
    IDREPFIM INTEGER)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(60),
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60),
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    TOTALPEDIDO NUMERIC(16,2),
    TOTALCOMISSAO NUMERIC(16,4),
    TIPOOPERACAO CHAR(1),
    TOTALPRODUTO NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COMISSAOREPRE_SINT (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(60),
    TOTALVENDA NUMERIC(16,2),
    TOTALCOMISSAO NUMERIC(16,4),
    TOTALPRODUTO NUMERIC(15,2),
    DEVTOTALVENDA NUMERIC(16,2),
    DEVCOMISSAO NUMERIC(16,4),
    DEVTOTALPRODUTO NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COMPARACAO_3MESES (
    IDFILIAL SMALLINT,
    DTINI_MES1 DATE,
    DTFIM_MES1 DATE,
    DTINI_MES2 DATE,
    DTFIM_MES2 DATE,
    DTINI_MES3 DATE,
    DTFIM_MES3 DATE,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    DTINI_MES4 DATE,
    DTFIM_MES4 DATE,
    DTINI_MES5 DATE,
    DTFIM_MES5 DATE,
    DTINI_MES6 DATE,
    DTFIM_MES6 DATE,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDREPRESENTANTE SMALLINT,
    NOMEREPRESENTANTE VARCHAR(45),
    VALOR_MES1 NUMERIC(14,2),
    VALOR_MES2 NUMERIC(14,2),
    VALOR_MES3 NUMERIC(14,2),
    VALOR_MES4 NUMERIC(14,2),
    VALOR_MES5 NUMERIC(14,2),
    VALOR_MES6 NUMERIC(14,2),
    CPF VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COMPARACAO_3MESES_REGIAO (
    IDFILIAL SMALLINT,
    DTINI_MES1 DATE,
    DTFIM_MES1 DATE,
    DTINI_MES2 DATE,
    DTFIM_MES2 DATE,
    DTINI_MES3 DATE,
    DTFIM_MES3 DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    IDREPRESENTANTEINI INTEGER,
    IDREPRESENTANTEFIM INTEGER)
RETURNS (
    IDREGIAO SMALLINT,
    NOMEREGIAO VARCHAR(45),
    VALOR_MES1 NUMERIC(14,2),
    VALOR_MES2 NUMERIC(14,2),
    VALOR_MES3 NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COMPARACAO_INVENTARIO (
    IDFILIAL INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDSUB_GRUPOINI INTEGER,
    IDSUB_GRUPOFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    QTDE_INVENTARIO NUMERIC(10,3),
    QTDE_DIFERENCA NUMERIC(10,3),
    QTDE_ATUAL NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(35) CHARACTER SET NONE,
    VALORDIFERENCA NUMERIC(15,2),
    VALORESTOQUE NUMERIC(15,2),
    VALORINVENTARIO NUMERIC(15,2),
    NOMESUB_GRUPO VARCHAR(30),
    IDSUB_GRUPO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CONSIGUINACAO_VALORES (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    PEDIDO_MAE INTEGER,
    VIDCONSIGUINACAO INTEGER,
    NOMEREPRESENTANTE VARCHAR(60),
    VALORENTRADA NUMERIC(15,2),
    VALOR_VENDA NUMERIC(15,2),
    VALORCOMPLEMENTO NUMERIC(15,2),
    VALORRETORNO NUMERIC(15,2),
    VALOR_DIFERENCA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_CONTA_CORRENTE_SUPERVISOR (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    P_IDSUPERVISOR SMALLINT,
    IDPEDIDOINI INTEGER,
    IDPEDIDOFIM INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDMOVTO_SUPERVISOR INTEGER,
    IDSUPERVISOR SMALLINT,
    NM_SUPERVISOR VARCHAR(60),
    DATA_MOVTO DATE,
    IDREPRESENTANTE SMALLINT,
    NM_REPRESENTANTE VARCHAR(60),
    IDCLIENTE INTEGER,
    NM_CLIENTE VARCHAR(60),
    VALOR_MOVTO NUMERIC(12,2),
    TIPO_OPERACAO VARCHAR(1),
    IDPEDIDO INTEGER,
    IDFOLHA SMALLINT,
    SALDOANTERIOR NUMERIC(15,2),
    VALORCREDIDO NUMERIC(15,2),
    VALORDEBITO NUMERIC(15,2),
    SALDO NUMERIC(15,2),
    HISTORICO VARCHAR(30),
    NM_PRODUTO VARCHAR(60),
    EMBALAGEM VARCHAR(10),
    IDPRODUTO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COTA (
    IDFILIAL INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    IDPROINI INTEGER,
    IDPROFIM INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(40) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    QTDECOTA NUMERIC(10,3),
    QTDEVENDA NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    PERCENTUAL NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COTA_FORNECEDOR (
    IDFILIAL INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    IDPROINI INTEGER,
    IDPROFIM INTEGER,
    IDFORINI INTEGER,
    IDFORFIM FLOAT,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(40) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    QTDECOTA NUMERIC(10,3),
    QTDEVENDA NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    IDFORNECEDOR INTEGER,
    NOMEFORNECEDOR VARCHAR(60),
    PERCENTUAL NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COTAS_FORNECEDOR (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDREPINI SMALLINT,
    IDREPFIM SMALLINT,
    IDFORINI INTEGER,
    IDFORFIM INTEGER)
RETURNS (
    IDREPRESENTANTE SMALLINT,
    NOMEREPRESENTANTE VARCHAR(60),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60),
    VALORVENDIDO NUMERIC(15,2),
    VALORCOTA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COTAS_GRUPO (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDREPINI SMALLINT,
    IDREPFIM SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT)
RETURNS (
    IDREPRESENTANTE SMALLINT,
    NOMEREPRESENTANTE VARCHAR(45),
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    VALORVENDIDO NUMERIC(15,2),
    VALORCOTA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_COTAS_REPRESENTANTE (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDREPRESENTANTEINI INTEGER,
    IDREPRESENTANTEFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDREPRESENTANTE SMALLINT,
    NOMEREPRESENTANTE VARCHAR(40),
    COTAS NUMERIC(15,2),
    VALORVENDIDO NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_DEVOLUCAOPRODUTO (
    IDFILIAL SMALLINT,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    TOTALGERAL NUMERIC(10,2),
    PERCENTUAL NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ENT_SAIDA_CONFERENCIA_SINT (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPROINI INTEGER,
    IDPROFIM INTEGER,
    V_AJUSTEESTOQUE VARCHAR(1),
    V_ITENSPEDIDO VARCHAR(1),
    V_ITENSENTRADA VARCHAR(1),
    V_ITENSDEVOLUCAO VARCHAR(1))
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    FATORCONVERSAO INTEGER,
    QTDE_ANTERIOR NUMERIC(10,3),
    QTDE_ENTRADA NUMERIC(10,3),
    QTDE_SAIDA NUMERIC(10,3),
    QTDE_ATUAL NUMERIC(10,3),
    CUSTONOTAUNIT NUMERIC(15,4))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ENTRADA_MATERIA_PRIMA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDCONTROLE INTEGER,
    IDNOTA INTEGER,
    DTENTRADA DATE,
    IDMATERIA_PRIMA INTEGER,
    DESCRICAO_MATERIA VARCHAR(45),
    QTDE NUMERIC(10,2),
    CUSTO NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ENTRADA_NF (
    IDFILIAL INTEGER,
    DTENTRADAINI DATE,
    DTENTRADAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    DTNOTAFISCALINI DATE,
    DTNOTAFISCALFIM DATE,
    BONIFICADOINI VARCHAR(1),
    BONIFICADOFIM VARCHAR(1),
    IDCFOPINI SMALLINT,
    IDCFOPFIM SMALLINT)
RETURNS (
    NOMEFORNECEDOR VARCHAR(90),
    DATAENTRADA DATE,
    IDNOTA INTEGER,
    CONDICAOPAGTO VARCHAR(35),
    CFOP VARCHAR(5),
    CENTROCUSTO VARCHAR(40),
    TOTALIPI NUMERIC(16,2),
    TOTALFRETE NUMERIC(16,2),
    DESCONTO NUMERIC(10,2),
    TOTALLIQUIDO NUMERIC(10,2),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    UNIDADE CHAR(10),
    QTDECOMPRA NUMERIC(10,2),
    CUSTONOTA NUMERIC(16,2),
    TOTALPRODUTO NUMERIC(16,2),
    IDFORNECEDOR INTEGER,
    EMBALAGEM VARCHAR(10),
    TIPO_NOTA VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ENTRADA_NF_DEVOLUCAO (
    IDFILIAL INTEGER,
    DTENTRADAINI DATE,
    DTENTRADAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    DTNOTAFISCALINI DATE,
    DTNOTAFISCALFIM DATE,
    BONIFICADOINI VARCHAR(1),
    BONIFICADOFIM VARCHAR(1))
RETURNS (
    NOMEFORNECEDOR VARCHAR(100),
    DATAENTRADA DATE,
    IDNOTA INTEGER,
    CONDICAOPAGTO VARCHAR(35),
    CFOP VARCHAR(5),
    CENTROCUSTO VARCHAR(40),
    TOTALIPI NUMERIC(16,2),
    TOTALFRETE NUMERIC(16,2),
    DESCONTO NUMERIC(10,2),
    TOTALLIQUIDO NUMERIC(10,2),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    UNIDADE CHAR(6),
    QTDECOMPRA NUMERIC(10,2),
    CUSTONOTA NUMERIC(16,2),
    TOTALPRODUTO NUMERIC(16,2),
    IDFORNECEDOR INTEGER,
    EMBALAGEM VARCHAR(10))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ENTRADA_SAIDA_CONFERENCIA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPROINI INTEGER,
    IDPROFIM INTEGER,
    V_AJUSTEESTOQUE VARCHAR(1),
    V_ITENSPEDIDO VARCHAR(1),
    V_ITENSENTRADA VARCHAR(1),
    V_ITENSDEVOLUCAO VARCHAR(1))
RETURNS (
    DATAFICHA DATE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    HISTORICO VARCHAR(70) CHARACTER SET NONE,
    VALORENTRADA NUMERIC(10,3),
    VALORSAIDA NUMERIC(10,3),
    FATORCONVERSAO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ENTRADA_SAIDA_MT_PRIMA (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDMATERIA_PRIMA INTEGER,
    DESCRICAO VARCHAR(60),
    VALORENTRADA NUMERIC(15,2),
    VALORSAIDA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ENTRADAPRODUTO_FOR (
    IDFILIAL INTEGER,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    DTENTRADAINI DATE,
    DTENTRADAFIM DATE,
    DTNOTAFISCALINI DATE,
    DTNOTAFISCALFIM DATE)
RETURNS (
    IDFORNECEDOR INTEGER,
    NOMEFORNECEDOR VARCHAR(40),
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(40),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    UNIDADE VARCHAR(20),
    FATORCONVERSAO INTEGER,
    QTDEVENDIDA NUMERIC(16,2),
    TOTALVENDIDO NUMERIC(16,2),
    TOTALCUSTO NUMERIC(15,2),
    IDSUB_GRUPO INTEGER,
    FATURAMENTO_CX NUMERIC(15,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ENTRADAPRODUTO_PESO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    NOMEFORNECEDOR VARCHAR(60) CHARACTER SET NONE,
    IDUNIDADEMEDIDA INTEGER,
    PESO NUMERIC(10,3),
    EMBALAGEM VARCHAR(20) CHARACTER SET NONE,
    IDFORNECEDOR INTEGER,
    FATORCONVERSAO INTEGER,
    ABREVIATURA VARCHAR(10) CHARACTER SET NONE,
    QTDECAIXA NUMERIC(16,3),
    IDGRUPO INTEGER,
    IDSUBGRUPO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_EQUIPE_VENDA_SUPERVISOR (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    CPF VARCHAR(14))
RETURNS (
    IDREPRESENTANTE SMALLINT,
    NOMEREPRESENTANTE VARCHAR(60),
    COTAS NUMERIC(14,2),
    TOTALPEDIDO NUMERIC(14,2),
    PORCENTAGEM NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_FICHA_ENT_SAI_DEPOS_SINT (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPROINI INTEGER,
    IDPROFIM INTEGER,
    IDDEPOSITO INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    SALDO NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    IDCONTROLE INTEGER,
    CUSTO_PRODUTO NUMERIC(16,4))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_FICHA_ENT_SAI_DEPOSITO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPROINI INTEGER,
    IDPROFIM INTEGER,
    IDDEPOSITO INTEGER)
RETURNS (
    DATAFICHA DATE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    HISTORICO VARCHAR(60),
    QTDEENTRADA NUMERIC(10,3),
    QTDESAIDA NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    QTDEANTERIOR NUMERIC(10,3),
    QTDEATUAL NUMERIC(10,3),
    SALDO NUMERIC(10,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_FICHA_ENTRADA_SAIDA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPROINI INTEGER,
    IDPROFIM INTEGER)
RETURNS (
    DATAFICHA DATE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    HISTORICO VARCHAR(60),
    QTDEENTRADA NUMERIC(10,3),
    QTDESAIDA NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    QTDEANTERIOR NUMERIC(10,3),
    QTDEATUAL NUMERIC(10,3),
    SALDO NUMERIC(10,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_FICHA_ENTRADA_SAIDA_SINT (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPROINI INTEGER,
    IDPROFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    SALDO NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    IDCONTROLE INTEGER,
    CUSTO_PRODUTO NUMERIC(16,4),
    DTESTOQUE DATE,
    VCUSTO NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_FLUXO_CAIXA (
    IDFILIAL SMALLINT,
    DTVEN_INI DATE,
    DTVEN_FIM DATE)
RETURNS (
    DATA DATE,
    VRECEBER NUMERIC(15,2),
    VPAGAR NUMERIC(15,2),
    VCHEQUE NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ICMS (
    IDFILIAL INTEGER,
    DTINICIAL DATE,
    DTFINAL DATE)
RETURNS (
    DTENTRADA DATE,
    ENT_VALORBASE NUMERIC(16,2),
    ENT_VALORICMS NUMERIC(16,2),
    NOT_VALORBASE NUMERIC(16,2),
    NOT_VALORICMS NUMERIC(16,2),
    DIF_VALORBASE NUMERIC(16,2),
    DIF_VALORICMS NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ICMS_COMPRA_ENTRADA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDTRIBUTO_1 INTEGER,
    IDTRIBUTO_2 INTEGER,
    IDTRIBUTO_3 INTEGER)
RETURNS (
    IDFORNECEDOR INTEGER,
    NOMEFORNECEDOR VARCHAR(60),
    CFOP VARCHAR(5),
    IDNOTA INTEGER,
    TOTALBASE NUMERIC(15,2),
    LABEL_1 VARCHAR(15),
    LABEL_2 VARCHAR(15),
    LABEL_3 VARCHAR(15),
    VALOR_BASE_1 NUMERIC(15,2),
    VALOR_ICMS_1 NUMERIC(15,2),
    VALOR_BASE_3 NUMERIC(15,2),
    VALOR_BASE_2 NUMERIC(15,2),
    VALOR_ICMS_2 NUMERIC(15,2),
    VALOR_ICMS_3 NUMERIC(15,2),
    DATA_NOTA DATE,
    SITUACAO_NOTA VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ICMS_NOTAS_FISCAIS (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDTRIBUTO_1 INTEGER,
    IDTRIBUTO_2 INTEGER,
    IDTRIBUTO_3 INTEGER)
RETURNS (
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60),
    CFOP VARCHAR(5),
    IDNOTA INTEGER,
    IDPEDIDO VARCHAR(8),
    TOTALBASE NUMERIC(15,2),
    LABEL_1 VARCHAR(15),
    LABEL_2 VARCHAR(15),
    LABEL_3 VARCHAR(15),
    VALOR_BASE_1 NUMERIC(15,2),
    VALOR_ICMS_1 NUMERIC(15,2),
    VALOR_BASE_3 NUMERIC(15,2),
    VALOR_BASE_2 NUMERIC(15,2),
    VALOR_ICMS_2 NUMERIC(15,2),
    VALOR_ICMS_3 NUMERIC(15,2),
    DATA_NOTA DATE,
    SITUACAO_NOTA VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ICMSENTRADA (
    IDFILIAL INTEGER,
    DTINICIAL DATE,
    DTFINAL DATE)
RETURNS (
    DTENTRADA DATE,
    VALORBASE NUMERIC(16,2),
    VALORICMS NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ICMSNOTA (
    IDFILIAL INTEGER,
    DTINICIAL DATE,
    DTFINAL DATE)
RETURNS (
    DTNOTA DATE,
    VALORBASE NUMERIC(16,2),
    VALORICMS NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_LUCRATIVIDADE (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    TIPOCUSTO CHAR(1),
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    TIPOPEDIDOINI VARCHAR(1),
    TIPOPEDIDOFIM VARCHAR(1))
RETURNS (
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(35),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    QTDECAIXA NUMERIC(16,2),
    PRECOVENDA NUMERIC(16,2),
    CUSTO NUMERIC(16,2),
    MARGEM NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_LUCRATIVIDADE_MSCERCAS (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    TIPOCUSTO CHAR(1),
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    TIPOPEDIDOINI VARCHAR(1),
    TIPOPEDIDOFIM VARCHAR(1),
    IDOBRASINI INTEGER,
    IDOBRASFIM INTEGER)
RETURNS (
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(35),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    QTDECAIXA NUMERIC(16,2),
    PRECOVENDA NUMERIC(16,2),
    CUSTO NUMERIC(16,2),
    MARGEM NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_MEDIA_VENDA_CLIENTE (
    IDFILIAL INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDCLIENTE SMALLINT,
    NOME VARCHAR(60),
    VALORVENDIDO NUMERIC(16,2),
    MEDIACOMPRA NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_METAS_VENDAS_REPRE (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCONVENIOINI INTEGER,
    IDCONVENIOFIM INTEGER,
    IDREPREINI INTEGER,
    IDREPREFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDCIDADEINI INTEGER,
    IDCIDADEFIM INTEGER,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    UNIDADE VARCHAR(5) CHARACTER SET NONE,
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(45),
    DTULTIMACOMPRA DATE,
    FONE VARCHAR(13) CHARACTER SET NONE,
    FATORCONVERSAO INTEGER,
    QTDEVENDIDA NUMERIC(14,2),
    TOTALVENDA NUMERIC(14,2),
    IDREPRESENTANTE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_MOVIMENTO (
    IDFILIAL INTEGER,
    IDCAIXA INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    ORDEM VARCHAR(1),
    SALDO VARCHAR(1))
RETURNS (
    IDMOVTOCAIXA INTEGER,
    DOCUMENTO VARCHAR(20),
    HISTORICO VARCHAR(111),
    DTMOVIMENTO DATE,
    DTEMISSAO DATE,
    VALORDEBITO NUMERIC(16,2),
    VALORCREDITO NUMERIC(16,2),
    SALDOANTERIOR NUMERIC(16,2),
    TIPOOPERACAO CHAR(1),
    COMPENSADO VARCHAR(1),
    CENTROCUSTO VARCHAR(40))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_MOVIMENTO_ARTPAN (
    IDFILIAL INTEGER,
    IDCAIXA INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    ORDEM VARCHAR(1),
    SALDO VARCHAR(1))
RETURNS (
    IDMOVTOCAIXA INTEGER,
    DOCUMENTO VARCHAR(20) CHARACTER SET NONE,
    HISTORICO VARCHAR(152) CHARACTER SET NONE,
    DTMOVIMENTO DATE,
    DTEMISSAO DATE,
    VALORDEBITO NUMERIC(16,2),
    VALORCREDITO NUMERIC(16,2),
    SALDOANTERIOR NUMERIC(16,2),
    TIPOOPERACAO CHAR(1),
    COMPENSADO VARCHAR(1),
    CENTROCUSTO VARCHAR(40))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_MOVIMENTO_FUNCIONARIO (
    IDFILIAL INTEGER,
    IDFUNCIONARIO INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDCONTROLE INTEGER,
    HISTORICO VARCHAR(60),
    DTMOVIMENTO DATE,
    VALORDEBITO NUMERIC(16,2),
    VALORCREDITO NUMERIC(16,2),
    SALDOANTERIOR NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_MOVTO_PRODUTOS (
    IDFILIAL INTEGER,
    DTPEDIDOINI DATE,
    DTPEDIDOFIM DATE,
    IDREPREINI SMALLINT,
    IDREPREFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    TIPOVENDA VARCHAR(1))
RETURNS (
    IDPRODUTO INTEGER,
    ESPECIFICACAO VARCHAR(60),
    FATORCONVERSAO INTEGER,
    QTDEPEDIDO NUMERIC(14,3),
    TOTALPEDIDO NUMERIC(15,2),
    QTDEDEVOLUCAO NUMERIC(14,3),
    TOTALDEVOLUCAO NUMERIC(15,2),
    QTDEBONIFICACAO NUMERIC(14,3),
    TOTALBONIFICACAO NUMERIC(15,2),
    QTDETROCA NUMERIC(14,3),
    TOTALTROCA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_NF_EMI_REPRES (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOME VARCHAR(40),
    QTDE_NFS INTEGER,
    MEDIA_ITENS INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ORCAMENTOPRODUTO_PDV (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60),
    UNIDADE NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_POSICAO_CLIENTE_FORN (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(80),
    CNPJ VARCHAR(18),
    ENDERECO VARCHAR(45),
    CIDADE VARCHAR(35),
    QTDEVENDIDA NUMERIC(10,2),
    VALORVENDIDO NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_POSICAO_EST_FORNECEDOR (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDFORNECEDOR INTEGER,
    NOMEFORNECEDOR VARCHAR(60),
    FATORCONVERSAO INTEGER,
    PRECOVENDAUNIT NUMERIC(16,4),
    CUSTONOTAUNIT NUMERIC(16,4),
    QTDEVENDIDA NUMERIC(10,3),
    CUSTO_VENDIDO NUMERIC(14,2),
    VENDA_VENDIDA NUMERIC(14,2),
    PERCENTUAL_VENDIDO NUMERIC(10,2),
    QTDEESTOQUE NUMERIC(10,3),
    CUSTO_ESTOQUE NUMERIC(14,2),
    VENDA_ESTOQUE NUMERIC(14,2),
    PERCENTUAL_ESTOQUE NUMERIC(10,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_POSICAO_FINANCEIRA (
    IDFILIAL INTEGER)
RETURNS (
    DESCRICAO VARCHAR(20) CHARACTER SET NONE,
    VALOR NUMERIC(16,2),
    TIPO VARCHAR(3) CHARACTER SET NONE)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_POSICAO_VENDA_REPRE (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDREPINI SMALLINT,
    IDREPFIM SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDFORNECEDORINI SMALLINT,
    IDFORNECEDORFIM SMALLINT,
    DIASUTEIS SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDDIVISAOINI SMALLINT,
    IDDIVISAOFIM SMALLINT,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT,
    SITINI VARCHAR(1),
    SITFIM VARCHAR(1),
    IDATIVIDADEINI INTEGER,
    IDATIVIDADEFIM INTEGER,
    IDSUB_ATIVIDADEINI INTEGER,
    IDSUB_ATIVIDADEFIM INTEGER)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(45) CHARACTER SET NONE,
    QTDECLIENTE NUMERIC(10,2),
    QTDEVISITADOS NUMERIC(10,2),
    POR_CLIENTE NUMERIC(10,2),
    TOTALPEDIDO NUMERIC(16,2),
    QTDEPEDIDO NUMERIC(10,2),
    DIAS INTEGER,
    QTDEPEDIDO_DIAS NUMERIC(10,2),
    VALORMEDIO NUMERIC(16,2),
    VENDAS_DIAS NUMERIC(16,2),
    CPF VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_PRECO_NORMALPRATICADO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDPEDIDOINI INTEGER,
    IDPEDIDOFIM INTEGER,
    IDFOLHAINI INTEGER,
    IDFOLHAFIM INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(35),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    QTDECAIXA NUMERIC(16,2),
    PRECOVENDA NUMERIC(16,2),
    PRECOTABELA NUMERIC(16,2),
    MARGEM NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    IDSUB_GRUPO SMALLINT,
    NOME_SUBGRUPO VARCHAR(30))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_PREMIACAO (
    IDFILIAL INTEGER,
    IDFOR1 INTEGER,
    IDFOR2 INTEGER,
    IDFOR3 INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(40) CHARACTER SET NONE,
    QTDEPEDIDO INTEGER,
    TOTALVALOR NUMERIC(16,2),
    TOTALFOR1 NUMERIC(16,2),
    TOTALFOR2 NUMERIC(16,2),
    TOTALFOR3 NUMERIC(16,2),
    QTDEFOR1 INTEGER,
    QTDEFOR2 INTEGER,
    QTDEFOR3 INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_PRODUCAOREPRESENTANTE (
    IDFILIAL SMALLINT,
    IDFORN1 INTEGER,
    IDFORN2 INTEGER,
    IDFORN3 INTEGER,
    DATAINICIAL DATE,
    DATAFINAL DATE)
RETURNS (
    IDREPRESENTANTE SMALLINT,
    NOMEREPRESENTANTE VARCHAR(40) CHARACTER SET NONE,
    TOTALVENDA NUMERIC(10,2),
    TOTALBONIFICACAO NUMERIC(10,2),
    TOTALTROCA NUMERIC(10,2),
    TOTALFORNECEDOR1 NUMERIC(10,2),
    TOTALFORNECEDOR2 NUMERIC(10,2),
    TOTALFORNECEDOR3 NUMERIC(10,2),
    TOTALSALDOCARTEIRA NUMERIC(10,2),
    TOTALPERCREPRESENTANTE NUMERIC(10,2),
    TOTALPERCENTUAL NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_PRODUTO_TIPO_MOVIMENTACAO (
    IDFILIAL INTEGER,
    SITUACAOPEDIDO CHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT)
RETURNS (
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(45),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    PRECOVENDA NUMERIC(14,2),
    QTDEPEDIDO NUMERIC(10,3),
    FATORCONVERSAO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_PRODUTOCORTE (
    IDFILIAL SMALLINT,
    IDPROINI INTEGER,
    IDPROFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    TIPOPEDIDO VARCHAR(1),
    IDROM_INI INTEGER,
    IDROM_FIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    IDPEDIDO INTEGER,
    IDFOLHA SMALLINT,
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60),
    TOTALPEDIDO NUMERIC(10,2),
    QTDEPEDIDO NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    FANTASIA VARCHAR(80),
    DTPEDIDO DATE,
    PRECO_ITEM INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_PRODUTOS_CONFIRMADO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    VALORCONFIRMADO NUMERIC(15,2),
    FATORCONVERSAO INTEGER,
    QTDE_CONFIRMADA NUMERIC(10,3),
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    CLASSIFICACAO_FISCAL VARCHAR(15),
    IDCFOP SMALLINT,
    NM_CFOP VARCHAR(40))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_RANKINGCLIENTE (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDCONVENIO_INI SMALLINT,
    IDCONVENIO_FIM SMALLINT,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER)
RETURNS (
    IDCIDADE SMALLINT,
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60),
    FANTASIA VARCHAR(60),
    TOTALPEDIDO NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    IDSUB_CONVENIO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_RAZAO_PRODUTO (
    IDFILIAL INTEGER,
    DT_INICIAL DATE,
    DT_FINAL DATE,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    ESPECIFICACAO VARCHAR(60),
    QTDE_ANTERIOR NUMERIC(15,3),
    QTDE_ENTRADA NUMERIC(15,3),
    QTDE_SAIDA NUMERIC(15,3),
    QTDE_ATUAL NUMERIC(15,3),
    FATORCONVERSAO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_REGISTRO_APURACAO_ICMS_ENTR (
    IDFILIAL SMALLINT,
    DATAENTRADAINI DATE,
    DATAENTRADAFIM DATE,
    DATANOTAFISCALINI DATE,
    DATANOTAFISCALFIM DATE,
    IDCFOPINI SMALLINT,
    IDCFOPFIM SMALLINT)
RETURNS (
    CFOP VARCHAR(5),
    IDCFOP SMALLINT,
    DESCRICAO VARCHAR(40),
    VALOR_BASE NUMERIC(15,2),
    VALOR_ICMS NUMERIC(15,2),
    VALOR_CONTABEL NUMERIC(15,2),
    ISENTAS NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_REGISTRO_APURACAO_ICMS_SAID (
    IDFILIAL SMALLINT,
    DATANOTAINI DATE,
    DATANOTAFIM DATE,
    IDCFOPINI SMALLINT,
    IDCFOPFIM SMALLINT,
    SITUACAOINI VARCHAR(1),
    SITUACAOFIM VARCHAR(1))
RETURNS (
    CFOP VARCHAR(5),
    IDCFOP SMALLINT,
    DESCRICAO VARCHAR(40),
    VALOR_BASE NUMERIC(15,2),
    VALOR_ICMS NUMERIC(15,2),
    VALOR_CONTABEL NUMERIC(15,2),
    ISENTAS NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_REPRESENTANTE_FORNECEDOR (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDFORNECEDOR_01 INTEGER,
    IDFORNECEDOR_02 INTEGER,
    IDFORNECEDOR_03 INTEGER,
    IDFORNECEDOR_04 INTEGER)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(45),
    POSITIVADO_01 INTEGER,
    POSITIVADO_02 INTEGER,
    POSITIVADO_03 INTEGER,
    POSITIVADO_04 INTEGER,
    REALIZADO_01 NUMERIC(14,2),
    REALIZADO_02 NUMERIC(14,2),
    REALIZADO_03 NUMERIC(14,2),
    REALIZADO_04 NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_REPRESENTANTE_GRUPO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDGRUPO_01 INTEGER,
    IDGRUPO_02 INTEGER,
    IDGRUPO_03 INTEGER,
    IDGRUPO_04 INTEGER)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(45),
    POSITIVADO_01 INTEGER,
    POSITIVADO_02 INTEGER,
    POSITIVADO_03 INTEGER,
    POSITIVADO_04 INTEGER,
    REALIZADO_01 NUMERIC(14,2),
    REALIZADO_02 NUMERIC(14,2),
    REALIZADO_03 NUMERIC(14,2),
    REALIZADO_04 NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ROMANEIO_CARGA (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    NOMEFORNECEDOR VARCHAR(60) CHARACTER SET NONE,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25) CHARACTER SET NONE,
    IDUNIDADEMEDIDA INTEGER,
    PESO NUMERIC(10,3),
    EMBALAGEM VARCHAR(20) CHARACTER SET NONE,
    IDFORNECEDOR INTEGER,
    FATORCONVERSAO INTEGER,
    ABREVIATURA VARCHAR(10) CHARACTER SET NONE,
    QTDECAIXA NUMERIC(16,3),
    CODIGO_BARRA VARCHAR(15),
    DUN VARCHAR(15),
    TOTALPRODUTO NUMERIC(16,2),
    CAMARA_FRIA VARCHAR(3),
    IDCFOP INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_ROMANEIO_PEDIDO (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA SMALLINT,
    NOMEFORMAPAGTO VARCHAR(40),
    NOMECLIENTE VARCHAR(60),
    TOTALPEDIDO NUMERIC(16,2),
    IDCLIENTE INTEGER,
    SITUACAO CHAR(1),
    CONDICAOPAGTO VARCHAR(30),
    IDREPRESENTANTE SMALLINT,
    BAIRRO VARCHAR(25),
    CIDADE VARCHAR(25),
    NOTAFISCAL INTEGER,
    FANTASIA VARCHAR(60),
    LUCRATIVIDADE NUMERIC(15,2),
    TOTALCUSTO NUMERIC(16,2),
    ROTA VARCHAR(3),
    IDCFOP INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_SINTETICO_FINANCEIRO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    TITULO VARCHAR(15),
    IDFORMAPAGTO SMALLINT,
    DESCRICAO VARCHAR(35),
    SALDOANTERIOR NUMERIC(15,2),
    SALDODIARIO NUMERIC(15,2),
    TOTAL NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_SUGESTAO_COMPRA (
    IDFILIAL INTEGER,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    SITUACAOINI VARCHAR(1),
    SITUACAOFIM VARCHAR(1),
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT)
RETURNS (
    IDPRODUTO INTEGER,
    ESPECIFICACAO VARCHAR(60),
    IDUNIDADEMEDIDA SMALLINT,
    UNIDADE VARCHAR(6),
    FATORCONVERSAO INTEGER,
    QTDEATUAL NUMERIC(10,3),
    NOMEFORNECEDOR VARCHAR(60),
    IDFORNECEDOR INTEGER,
    EMBALAGEM VARCHAR(10),
    QTDEMINIMA NUMERIC(10,3),
    IDFABRICA INTEGER,
    CUSTONOTA NUMERIC(14,2),
    CUSTOENCARGOS NUMERIC(14,2),
    PRECOVENDA NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_TRIMESTRAL_PRODUTO (
    IDFILIAL SMALLINT,
    DT1_MESANOINI DATE,
    DT1_MESANOFIM DATE,
    DT2_MESANOINI DATE,
    DT2_MESANOFIM DATE)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    VALORLIQUIDO_1 NUMERIC(14,2),
    VALORLIQUIDO_2 NUMERIC(14,2),
    QTDELIQUIDO_1 NUMERIC(10,3),
    QTDELIQUIDO_2 NUMERIC(10,3),
    NOMEGRUPO VARCHAR(25),
    IDGRUPO SMALLINT)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_TROCA (
    IDFILIAL INTEGER,
    DTPEDIDOINI DATE,
    DTPEDIDOFIM DATE,
    IDREPREINI INTEGER,
    IDREPREFIM INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(65),
    TOTALPEDIDO NUMERIC(14,2),
    TOTALDEVOLUCAO NUMERIC(14,2),
    TOTALBONIFICACAO NUMERIC(14,2),
    TOTALTROCA NUMERIC(14,2),
    FATORCONVERSAO INTEGER,
    QTDEPEDIDO NUMERIC(15,3),
    QTDEDEVOLUCAO NUMERIC(15,3),
    QTDEBONIFICACAO NUMERIC(15,3),
    QTDETROCA NUMERIC(15,3),
    QTDEENTRADA NUMERIC(15,3),
    TOTALENTRADA NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_TROCA_SINT_GRUPO (
    IDFILIAL INTEGER,
    DTPEDIDOINI DATE,
    DTPEDIDOFIM DATE,
    IDREPREINI INTEGER,
    IDREPREFIM INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(65),
    TOTALPEDIDO NUMERIC(14,2),
    TOTALDEVOLUCAO NUMERIC(14,2),
    TOTALBONIFICACAO NUMERIC(14,2),
    TOTALTROCA NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_TROCA_SINT_REPRESENTANTE (
    IDFILIAL INTEGER,
    DTPEDIDOINI DATE,
    DTPEDIDOFIM DATE,
    IDREPREINI INTEGER,
    IDREPREFIM INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(65),
    TOTALPEDIDO NUMERIC(14,2),
    TOTALDEVOLUCAO NUMERIC(14,2),
    TOTALBONIFICACAO NUMERIC(14,2),
    TOTALTROCA NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAPROD_SG_FOR_SINT (
    IDFILIAL INTEGER,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    DTINI DATE,
    DTFIM DATE,
    SITUACAOPEDIDO CHAR(1),
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT,
    IDCONVENIOINI SMALLINT,
    IDCONVENIOFIM SMALLINT,
    IDSUB_CONVENIOINI SMALLINT,
    IDSUB_CONVENIOFIM SMALLINT,
    IDUSUARIO INTEGER,
    IDATIVIDADEINI SMALLINT,
    IDATIVIDADEFIM SMALLINT,
    IDSUB_ATIVIDADEINI INTEGER,
    IDSUB_ATIVIDADEFIM INTEGER,
    IDSUB_GRUPOINI INTEGER,
    IDSUB_GRUPOFIM INTEGER,
    CPFINI VARCHAR(14),
    CPFFIM VARCHAR(14))
RETURNS (
    IDFORNECEDOR INTEGER,
    NOMEFORNECEDOR VARCHAR(60) CHARACTER SET NONE,
    TOTALVENDIDO NUMERIC(16,2),
    QTDEVENDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAPRODUTO_FOR_ANAL (
    IDFILIAL INTEGER,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    DTINI DATE,
    DTFIM DATE,
    SITUACAOPEDIDO CHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT,
    IDCONVENIOINI SMALLINT,
    IDCONVENIOFIM SMALLINT,
    IDSUB_CONVENIOINI SMALLINT,
    IDSUB_CONVENIOFIM SMALLINT,
    IDUSUARIO INTEGER,
    IDATIVIDADEINI SMALLINT,
    IDATIVIDADEFIM SMALLINT,
    IDSUB_ATIVIDADEINI INTEGER,
    IDSUB_ATIVIDADEFIM INTEGER,
    IDSUB_GRUPOINI INTEGER,
    IDSUB_GRUPOFIM INTEGER,
    CPF_SUPERVISOR VARCHAR(14))
RETURNS (
    IDFORNECEDOR INTEGER,
    NOMEFORNECEDOR VARCHAR(60),
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(40),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    UNIDADE VARCHAR(20),
    FATORCONVERSAO INTEGER,
    QTDEVENDIDA NUMERIC(16,3),
    TOTALVENDIDO NUMERIC(16,2),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    TOTALCUSTO NUMERIC(14,2),
    FATURAMENTO_CX NUMERIC(15,4),
    IDUNIDADEMEDIDA INTEGER,
    CUSTO_ENCARGOS NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAPRODUTO_FOR_SINT (
    IDFILIAL INTEGER,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    DTINI DATE,
    DTFIM DATE,
    SITUACAOPEDIDO CHAR(1),
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT,
    IDCONVENIOINI SMALLINT,
    IDCONVENIOFIM SMALLINT,
    IDSUB_CONVENIOINI SMALLINT,
    IDSUB_CONVENIOFIM SMALLINT,
    IDUSUARIO INTEGER,
    IDATIVIDADEINI SMALLINT,
    IDATIVIDADEFIM SMALLINT,
    IDSUB_ATIVIDADEINI INTEGER,
    IDSUB_ATIVIDADEFIM INTEGER,
    IDSUB_GRUPOINI INTEGER,
    IDSUB_GRUPOFIM INTEGER)
RETURNS (
    IDFORNECEDOR INTEGER,
    NOMEFORNECEDOR VARCHAR(60) CHARACTER SET NONE,
    TOTALVENDIDO NUMERIC(16,2),
    QTDEVENDIDO INTEGER,
    VALORCOTA NUMERIC(16,2),
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(60),
    CPF_SUPERVISOR VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAPRODUTO_REGIAO_SINT (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDREGIAO SMALLINT,
    NOME VARCHAR(45),
    VALORVENDIDO NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAS_CENTROCUSTO (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER)
RETURNS (
    IDCENTROCUSTO SMALLINT,
    NOMECENTROCUSTO VARCHAR(45),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    QTDEVENDIDA NUMERIC(10,3),
    PRECOVENDA NUMERIC(15,2),
    FATORCONVERSAO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAS_CENTROCUSTO_MSCERCAS (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    IDOBRASINI INTEGER,
    IDOBRASFIM INTEGER)
RETURNS (
    IDCENTROCUSTO SMALLINT,
    NOMECENTROCUSTO VARCHAR(45),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    QTDEVENDIDA NUMERIC(10,3),
    PRECOVENDA NUMERIC(15,2),
    FATORCONVERSAO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAS_CENTROCUSTO_SINT (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER)
RETURNS (
    IDCENTROCUSTO SMALLINT,
    NOMECENTROCUSTO VARCHAR(45),
    TOTALVENDA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAS_CUSTO_SINTMSCERCAS (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDCENTROCUSTOINI SMALLINT,
    IDCENTROCUSTOFIM SMALLINT,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    IDOBRASINI INTEGER,
    IDOBRASFIM INTEGER)
RETURNS (
    IDCENTROCUSTO SMALLINT,
    NOMECENTROCUSTO VARCHAR(45),
    TOTALVENDA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAS_FORMAPAGTO (
    IDFILIAL INTEGER,
    DTPEDIDOINI DATE,
    DTPEDIDOFIM DATE,
    IDREPREINI INTEGER,
    IDREPREFIM INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDFORMAPAGTO INTEGER,
    NOMEFORMAPAGTO VARCHAR(35),
    TOTALPEDIDO NUMERIC(14,2),
    TOTALDEVOLUCAO NUMERIC(14,2),
    TOTALBONIFICACAO NUMERIC(14,2),
    TOTALTROCA NUMERIC(14,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAS_PRODUTOS (
    IDFILIAL INTEGER,
    IDREPRESENTANTEINI SMALLINT,
    IDREPRESENTANTEFIM SMALLINT,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPRODUTO INTEGER,
    NM_PRODUTO VARCHAR(60),
    QTDE_A_VISTA NUMERIC(10,3),
    QTDE_A_PRAZO NUMERIC(10,3),
    VALOR_A_VISTA NUMERIC(16,2),
    VALOR_A_PRAZO NUMERIC(16,2),
    PRECO_UNITARIO_V NUMERIC(15,2),
    PRECO_UNITARIO_P NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAS_REPRESENTANTE (
    IDFILIAL SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    SIT VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(45) CHARACTER SET NONE,
    VALORVENDIDO NUMERIC(14,2),
    CUSTONOTA NUMERIC(14,4),
    QTDEVENDIDA NUMERIC(10,3),
    FATORCONVERSAO INTEGER,
    CPF_SUPERVISOR VARCHAR(14),
    QTDEPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDAS_TABELAPRECO (
    IDFILIAL INTEGER,
    IDTABELA INTEGER,
    DTINICIAL DATE,
    DTFINAL DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(40) CHARACTER SET NONE,
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(40) CHARACTER SET NONE,
    IDTABELAPRECO INTEGER,
    TABELAPRECO VARCHAR(40) CHARACTER SET NONE,
    TOTALPEDIDO NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    SITUACAOINI VARCHAR(1),
    SITUACAOFIM VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60),
    UNIDADE NUMERIC(15,2),
    NOTAFISCAL INTEGER,
    E_PAO VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_ATIVIDADE (
    IDFILIAL SMALLINT,
    DTINI DATE,
    DTFIM DATE,
    IDATIVIDADEINI SMALLINT,
    IDATIVIDADEFIM SMALLINT,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDATIVIDADE SMALLINT,
    NOMEATIVIDADE VARCHAR(25),
    VALORVENDIDO NUMERIC(15,2),
    TOTALGERAL NUMERIC(15,2),
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_CIDADE (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER)
RETURNS (
    IDREGIAO INTEGER,
    NOMEREGIAO VARCHAR(35) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    IDCIDADE INTEGER,
    NOMECIDADE VARCHAR(25) CHARACTER SET NONE,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    EMBALAGEM VARCHAR(10) CHARACTER SET NONE,
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_CIDADE_SINT (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER)
RETURNS (
    IDCIDADE INTEGER,
    NOMECIDADE VARCHAR(25),
    TOTALPEDIDO NUMERIC(16,2),
    QTDEPOPULACAO INTEGER,
    QTDECLIENTE INTEGER,
    QTDEPOSITIVADOS INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_CLIENTE (
    IDFILIAL INTEGER,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDCONVENIOINI SMALLINT,
    IDCONVENIOFIM SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDSUB_CONVENIOINI INTEGER,
    IDSUB_CONVENIOFIM INTEGER,
    IDROMANEIOINI INTEGER,
    IDROMANEIOFIM INTEGER,
    IDCONSIGNACAOINI INTEGER,
    IDCONSIGNACAOFIM INTEGER)
RETURNS (
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    EMBALAGEM VARCHAR(10) CHARACTER SET NONE,
    NOMECONVENIO VARCHAR(40) CHARACTER SET NONE,
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    IDCIDADE SMALLINT,
    CPF_SUPERVISOR VARCHAR(14),
    IDATIVIDADE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_CONSIG (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    SITUACAOINI VARCHAR(1),
    SITUACAOFIM VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCONSIGINI INTEGER,
    IDCONSIGFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_GRUPO (
    IDFILIAL INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM INTEGER,
    CPF_SUPERVISOR VARCHAR(14))
RETURNS (
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(40),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    EMBALAGEM VARCHAR(10),
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    TOTALVENDA NUMERIC(14,2),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    FATURAMENTO_CX NUMERIC(15,4))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_GRUPO_SINT (
    IDFILIAL SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDREPINI SMALLINT,
    IDREPFIM SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    VALORVENDIDO NUMERIC(14,2),
    TOTALVENDA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_NOTA (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    SITUACAOINI VARCHAR(1),
    SITUACAOFIM VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60),
    UNIDADE NUMERIC(15,2),
    NOTAFISCAL INTEGER,
    E_PAO VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_PDV (
    IDFILIAL SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORINI INTEGER,
    IDFORFIM INTEGER,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    IDSUB_GRUPOINI SMALLINT,
    IDSUB_GRUPOFIM SMALLINT,
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    PRECOVENDA NUMERIC(10,2),
    QTDEVENDIDA NUMERIC(10,2),
    FATORCONVERSAO INTEGER,
    IDREPRESENTANTE SMALLINT,
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(25),
    IDSUB_GRUPO SMALLINT,
    NOMESUB_GRUPO VARCHAR(30),
    IDFORNECEDOR SMALLINT,
    NOMEFORNECEDOR VARCHAR(60),
    UNIDADE NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_PESO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    NOMEREPRESENTANTE VARCHAR(40),
    IDUNIDADEMEDIDA INTEGER,
    PESO NUMERIC(10,3),
    EMBALAGEM VARCHAR(20),
    IDREPRESENTANTE INTEGER,
    FATORCONVERSAO INTEGER,
    ABREVIATURA VARCHAR(10),
    QTDECAIXA NUMERIC(16,3),
    NOMEFORNECEDOR VARCHAR(60),
    IDFORNECEDOR INTEGER,
    IDGRUPO INTEGER,
    IDSUBGRUPO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_REGIAO (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDREGIAO INTEGER,
    NOMEREGIAO VARCHAR(35),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    EMBALAGEM VARCHAR(10),
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_REGIAO_DATA (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER,
    IDREPINI INTEGER,
    IDREPFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDPRODUTOINI INTEGER,
    IDPRODUTOFIM INTEGER)
RETURNS (
    IDREGIAO INTEGER,
    NOMEREGIAO VARCHAR(35) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60) CHARACTER SET NONE,
    EMBALAGEM VARCHAR(10) CHARACTER SET NONE,
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    DATAPEDIDO DATE)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_REPRE (
    IDFILIAL INTEGER,
    IDGRUPOINI INTEGER,
    IDGRUPOFIM INTEGER,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    SIT VARCHAR(1),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDGRUPO INTEGER,
    NOMEGRUPO VARCHAR(100),
    IDPRODUTO INTEGER,
    NOMEPRODUTO VARCHAR(60),
    EMBALAGEM VARCHAR(10),
    QTDEPEDIDO NUMERIC(10,3),
    VALORPEDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER,
    CUSTONOTA NUMERIC(14,4),
    IDREPRESENTANTE SMALLINT,
    IDSUB_GRUPO SMALLINT,
    DESCRICAO VARCHAR(35),
    CPF_SUPERVISOR VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASPRODUTO_REPRE_SINT (
    IDFILIAL SMALLINT,
    IDGRUPOINI SMALLINT,
    IDGRUPOFIM SMALLINT,
    DATAINI DATE,
    DATAFIM DATE,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    SIT VARCHAR(1),
    COTA_CUSTO VARCHAR(5),
    IDCLIENTEINI INTEGER,
    IDCLIENTEFIM INTEGER,
    IDCIDADEINI SMALLINT,
    IDCIDADEFIM SMALLINT)
RETURNS (
    IDGRUPO SMALLINT,
    NOMEGRUPO VARCHAR(35) CHARACTER SET NONE,
    NOMEREPRESENTANTE VARCHAR(45) CHARACTER SET NONE,
    VALORVENDIDO NUMERIC(14,2),
    CUSTONOTA NUMERIC(14,4),
    IDREPRESENTANTE INTEGER,
    CPF_SUPERVISOR VARCHAR(14))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE REL_VENDASREGIAO (
    IDFILIAL INTEGER,
    IDREGIAOINI INTEGER,
    IDREGIAOFIM INTEGER)
RETURNS (
    IDREGIAO INTEGER,
    NOMEREGIAO VARCHAR(40) CHARACTER SET NONE,
    IDCLIENTE INTEGER,
    NOMECLIENTE VARCHAR(60) CHARACTER SET NONE,
    QTDEVENDIDA NUMERIC(10,3),
    TOTALVENDIDO NUMERIC(16,2),
    FATORCONVERSAO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE RETORNA_IBGE (
    IDCIDADE INTEGER)
RETURNS (
    IBGE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE RETORNA_PRECOVENDA_BALCAO (
    IDFILIAL INTEGER,
    IDPRODUTO INTEGER)
RETURNS (
    PRECOVENDA NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE RETORNA_TAXADESCONTO_BALCAO (
    IDFILIAL INTEGER,
    IDPRODUTO INTEGER)
RETURNS (
    TAXADESCONTO NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE SALDO_REPRESENTANTE (
    IDFILIAL INTEGER,
    IDREPRESENTANTE INTEGER)
RETURNS (
    VALOR INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE SENHA_PALM_I (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER,
    IDREPRESENTANTE INTEGER,
    SENHA VARCHAR(6),
    IDUSUARIO INTEGER,
    DTDEUSO DATE)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE SENHA_PALM_IU (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER,
    IDREPRESENTANTE INTEGER,
    SENHA VARCHAR(6),
    IDUSUARIO INTEGER,
    DTDEUSO DATE)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE SENHA_PALM_S
RETURNS (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER,
    IDREPRESENTANTE INTEGER,
    SENHA VARCHAR(6),
    IDUSUARIO INTEGER,
    DTDEUSO DATE)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE SENHA_PALM_U (
    IDFILIAL INTEGER,
    IDCONTROLE INTEGER,
    IDREPRESENTANTE INTEGER,
    SENHA VARCHAR(6),
    IDUSUARIO INTEGER,
    DTDEUSO DATE)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE SINTEGRA_REG50 (
    IDFILIAL INTEGER,
    TIPO VARCHAR(10),
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    RGTIPO CHAR(2),
    INSESTADUAL VARCHAR(14),
    CNPJEMPRESA VARCHAR(14),
    DTDOCUMENTO DATE,
    ESTADO CHAR(2),
    MODELO CHAR(2),
    SERIEDOCUMENTO CHAR(3),
    NUMERONF VARCHAR(6),
    CFOP CHAR(4),
    EMITEM CHAR(1),
    VALORCONTABIL NUMERIC(16,2),
    VALORBASE NUMERIC(16,2),
    VALORICMS NUMERIC(16,2),
    VALORISENTO NUMERIC(16,2),
    VALOROUTROS NUMERIC(16,2),
    ALIQUOTA NUMERIC(10,2),
    CANCELADO CHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE SINTEGRA_REG54 (
    IDFILIAL INTEGER,
    TIPO VARCHAR(10),
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    RGTIPO CHAR(2),
    CNPJEMPRESA VARCHAR(14),
    MODELO CHAR(2),
    SERIEDOCUMENTO CHAR(3),
    NUMERONF VARCHAR(6),
    CFOP VARCHAR(4),
    CODIGOTRIBUTO VARCHAR(3),
    NUMEROITEN VARCHAR(3),
    IDPRODUTO INTEGER,
    QTDE NUMERIC(16,3),
    TOTALPRODUTO NUMERIC(16,2),
    DESCONTO NUMERIC(10,2),
    VALORBASE NUMERIC(16,2),
    VALORSUBSTRI NUMERIC(16,2),
    VALORIPI NUMERIC(16,2),
    ALIQUOTA NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE SINTEGRA_REG75 (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    RGTIPO CHAR(2) CHARACTER SET NONE,
    IDPRODUTO INTEGER,
    IDNCM INTEGER,
    DESCRICAOPRODUTO VARCHAR(40) CHARACTER SET NONE,
    UNIDADEMEDIDA VARCHAR(6) CHARACTER SET NONE,
    SITUAC CHAR(3) CHARACTER SET NONE,
    VALORIPI NUMERIC(10,2),
    VALORICMS NUMERIC(10,2),
    REDUCAOALIQ NUMERIC(10,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE SP_TRUNC (
    FLOATVALUE DOUBLE PRECISION,
    DECIMALS SMALLINT)
RETURNS (
    RESULT DOUBLE PRECISION)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE SPED_C190 (
    IDFILIAL INTEGER,
    IDNOTA INTEGER,
    TIPO VARCHAR(1),
    CPF_CNPJ VARCHAR(18))
RETURNS (
    CST_ICMS VARCHAR(3),
    CFOP VARCHAR(5),
    ALIQ_ICMS NUMERIC(15,2),
    VL_OPR NUMERIC(15,2),
    VL_BC_ICMS NUMERIC(15,2),
    VL_ICMS NUMERIC(15,2),
    VL_BC_ICMS_ST NUMERIC(15,2),
    VL_ICMS_ST NUMERIC(15,2),
    VL_RED_BC NUMERIC(15,2),
    VL_IPI NUMERIC(15,2),
    COD_OBS VARCHAR(6),
    VL_FRETE NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE SPED_SAIDA_NOTAS (
    IDFILIAL INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    "0150_COD_PART" INTEGER,
    "0150_NOME" VARCHAR(100),
    "0150_CNPJ" VARCHAR(20),
    "0150_CPF" VARCHAR(20),
    "0150_IE" VARCHAR(20),
    "0150_COD_PAIS" VARCHAR(20),
    "0150_COD_MUN" INTEGER,
    "0150_SUFRAMA" VARCHAR(35),
    "0150_ENDERECO" VARCHAR(60),
    "0150_BAIRRO" VARCHAR(60))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE TMP (
    IDFILIAL INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    QTDE NUMERIC(10,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE TMP_D (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    TOTALPEDIDO NUMERIC(15,2),
    DIF NUMERIC(15,2),
    DEVOLUCAO NUMERIC(15,2),
    SIT VARCHAR(1))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE TRANSFORMA_PDV_VENDA (
    IDFILIAL INTEGER,
    IDVENDA INTEGER,
    TIPO VARCHAR(3))
RETURNS (
    DATAVENDA DATE,
    IDREPRESENTANTE INTEGER,
    IDCLIENTE INTEGER,
    IDFORMAPAGTO INTEGER,
    DESCONTO NUMERIC(16,2),
    TOTALVENDA NUMERIC(15,2),
    DEF_CAIXA INTEGER,
    NOMECLIENTE VARCHAR(60),
    VIDTRIBUTO INTEGER,
    VUF VARCHAR(2),
    VTOTAL_BASE NUMERIC(15,2),
    VTOTAL_ICMS NUMERIC(15,2),
    VTOTAL_BASE_ST NUMERIC(15,2),
    VTOTAL_ICMS_ST NUMERIC(15,2),
    VCLFISCAL VARCHAR(3),
    VTAXA_ICMS NUMERIC(15,2),
    VALIQUOTA_ST NUMERIC(15,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE VERIFICA_CUSTO_ENCARGOS_PEDIDO (
    IDFILIAL INTEGER,
    DATAINI DATE,
    DATAFIM DATE)
RETURNS (
    IDFOLHA INTEGER,
    IDPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE VERIFICA_TOTAL_PEDIDO_PALM (
    IDFILIAL INTEGER,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE Z_ARRUMA_INSCRICAO_EST_MT (
    IDFILIAL INTEGER)
AS
BEGIN
  EXIT;
END^


CREATE PROCEDURE Z_ATU_PRECO_COMPRA (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    IDPRODUTO INTEGER,
    VCUSTONOTA NUMERIC(15,4),
    VCUSTOTRIBUTO NUMERIC(15,4),
    VCUSTOENCARGOS NUMERIC(15,4))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_ATUALIZA_NCM
RETURNS (
    NCM VARCHAR(15),
    IDPRODUTO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_ATUALIZA_TB_UF (
    IDFILIAL INTEGER)
RETURNS (
    VUF VARCHAR(2),
    IDCONTADOR INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_ATULIZA_SALDO (
    IDFILIAL INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    QTDEANTERIOR NUMERIC(10,3))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_CALCULA_COMISSAO (
    IDFILIAL INTEGER,
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER)
RETURNS (
    IDPRODUTO INTEGER,
    CONTADOR INTEGER,
    VTOTALCOMISSAO NUMERIC(16,4),
    XTOTALCOMISSAO NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_CONSERTA_TOTAL_PED (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    DATAPEDIDO DATE,
    TOTALPEDIDO NUMERIC(18,2),
    TOTATALPRODUTO DOUBLE PRECISION,
    DIF DOUBLE PRECISION)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_ERRUMAR_ENTRADA (
    IDFILIAL INTEGER)
RETURNS (
    IDFORNECEDOR INTEGER,
    IDNOTA INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_INSERT_SUBCONVENIO (
    IDFILIAL INTEGER)
RETURNS (
    VIDCONVENIO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_INSERT_SUBGRUPO (
    IDFILIAL INTEGER)
RETURNS (
    VIDGRUPO INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_PLANILHA (
    IDFILIAL INTEGER,
    ANO INTEGER,
    MES INTEGER,
    IDFORNECEDORINI INTEGER,
    IDFORNECEDORFIM INTEGER,
    IDGRUPO_1 INTEGER,
    IDGRUPO_2 INTEGER,
    IDGRUPO_3 INTEGER,
    IDGRUPO_4 INTEGER,
    IDGRUPO_5 INTEGER,
    IDGRUPO_6 INTEGER)
RETURNS (
    IDREPRESENTANTE INTEGER,
    NOMEREPRESENTANTE VARCHAR(60),
    DIA_1 INTEGER,
    DIA_2 INTEGER,
    DIA_3 INTEGER,
    DIA_4 INTEGER,
    DIA_5 INTEGER,
    DIA_6 INTEGER,
    DIA_7 INTEGER,
    DIA_8 INTEGER,
    DIA_9 INTEGER,
    DIA_10 INTEGER,
    DIA_11 INTEGER,
    DIA_12 INTEGER,
    DIA_13 INTEGER,
    DIA_14 INTEGER,
    DIA_15 INTEGER,
    DIA_16 INTEGER,
    DIA_17 INTEGER,
    DIA_18 INTEGER,
    DIA_19 INTEGER,
    DIA_20 INTEGER,
    DIA_21 INTEGER,
    DIA_22 INTEGER,
    DIA_23 INTEGER,
    DIA_24 INTEGER,
    DIA_25 INTEGER,
    DIA_26 INTEGER,
    DIA_27 INTEGER,
    DIA_28 INTEGER,
    DIA_29 INTEGER,
    DIA_30 INTEGER,
    DIA_31 INTEGER,
    TOTALGERAL_DIAS INTEGER,
    QTDE_GRUPO_1 INTEGER,
    QTDE_GRUPO_2 INTEGER,
    QTDE_GRUPO_3 INTEGER,
    QTDE_GRUPO_4 INTEGER,
    QTDE_GRUPO_5 INTEGER,
    QTDE_GRUPO_6 INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_RECALCULA_CUSTO_PEDIDO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    IDPRODUTO INTEGER,
    CUSTONOTA NUMERIC(16,4),
    CUSTOTRIBUTO NUMERIC(16,4),
    CUSTOENCARGOS NUMERIC(16,4),
    PRECOVENDA NUMERIC(16,4),
    CONTADOR INTEGER,
    TOTALGERAL NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_RECALCULA_PEDIDO (
    IDFILIAL INTEGER,
    DTINI DATE,
    DTFIM DATE)
RETURNS (
    IDPEDIDO INTEGER,
    IDFOLHA INTEGER,
    TOTALPEDIDO NUMERIC(16,2),
    VALORITEM NUMERIC(16,2))
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_ROMANEIO (
    IDFILIAL INTEGER)
RETURNS (
    IDCONTROLE INTEGER)
AS
BEGIN
  SUSPEND;
END^


CREATE PROCEDURE Z_SELECT_CALCULA_COMISSAO (
    IDFILIAL INTEGER)
RETURNS (
    IDPEDIDO INTEGER)
AS
BEGIN
  SUSPEND;
END^



SET TERM ; ^



/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/



CREATE TABLE ADMINISTRAR_SISTEMA (
    IDFILIAL          SMALLINT,
    DATA              DATE,
    LIBERADO          VARCHAR(1),
    DESCRICAO         BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    USUARIO           VARCHAR(15),
    IDCLIENTE         INTEGER,
    HORA              TIME,
    IDRECEBER         INTEGER,
    IDINDENTIFICADOR  INTEGER,
    IDPAGAR           INTEGER,
    LIBERADO_POR      VARCHAR(15),
    IDPEDIDO          INTEGER,
    IDFOLHA           INTEGER
);

CREATE TABLE AGENDA (
    IDFILIAL  DM_SMALLINT,
    DATA      DATE,
    HORA      TIME,
    DE        VARCHAR(20),
    ASSUNTO   VARCHAR(40),
    MEMO      BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    PARA      VARCHAR(20)
);

CREATE TABLE AGENDA_PARTICULAR (
    IDAGENDA  INTEGER NOT NULL,
    IDFILIAL  SMALLINT NOT NULL,
    NOME      VARCHAR(60),
    FONE      DM_FONE,
    FAX       DM_FONE,
    CELULAR   DM_FONE
);

CREATE TABLE AGENDA_PERSONALIZADA (
    ID                          INTEGER NOT NULL,
    IDUSUARIO                   INTEGER NOT NULL,
    RESOURCEID                  INTEGER,
    PARENTID                    INTEGER,
    CAPTION                     VARCHAR(255),
    START_AGE                   TIMESTAMP,
    FINISH                      TIMESTAMP,
    STATE                       INTEGER,
    ACTUALFINISH                INTEGER,
    ACTUALSTART                 INTEGER,
    EVENTTYPE                   INTEGER,
    LABELCOLOR                  INTEGER,
    LOCATION                    VARCHAR(255),
    "MESSAGE"                   VARCHAR(255),
    OPTIONS                     INTEGER,
    RECURRENCEINDEX             INTEGER,
    RECURRENCEINFO              BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    REMINDERDATE                TIMESTAMP,
    REMINDERMINUTESBEFORESTART  INTEGER,
    REMINDERRESOURCESDATA       BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    TASKCOMPLETEFIELD           INTEGER,
    TASKINDEXFIELD              INTEGER,
    TASKLINKSFIELD              BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    TASKSTATUSFIELD             INTEGER
);

CREATE TABLE AJUSTE_DEPOSITO (
    IDFILIAL         DM_SMALLINT NOT NULL,
    IDAJUSTE         DM_INTEGER NOT NULL,
    IDPRODUTO        DM_INTEGER NOT NULL,
    DTAJUSTE         DATE,
    QTDE_AJUSTE      NUMERIC(10,3) NOT NULL,
    TIPOOPERACAO     VARCHAR(1) NOT NULL,
    IDUNIDADEMEDIDA  DM_SMALLINT,
    FATORCONVERSAO   INTEGER,
    IDDEPOSITO       SMALLINT
);

CREATE TABLE AJUSTE_MATERIA_PRIMA (
    IDFILIAL         DM_SMALLINT NOT NULL,
    IDCONTROLE       DM_INTEGER NOT NULL,
    IDMATERIA_PRIMA  DM_INTEGER NOT NULL,
    DATA             DATE,
    QTDE             NUMERIC(10,2) NOT NULL,
    OBSERVACAO       VARCHAR(60),
    TIPOOPERACAO     CHAR(1)
);

CREATE TABLE AJUSTEESTOQUE (
    IDFILIAL         DM_SMALLINT,
    IDAJUSTEESTOQUE  DM_INTEGER NOT NULL,
    IDPRODUTO        DM_INTEGER NOT NULL,
    IDCENTROCUSTO    DM_SMALLINT,
    QTDEAJUSTE       NUMERIC(10,3),
    OBSERVACAO       VARCHAR(50),
    TIPOOPERACAO     VARCHAR(1),
    IDUNIDADEMEDIDA  DM_SMALLINT,
    FATORCONVERSAO   DM_SMALLINT,
    DTAJUSTE         DATE,
    CUSTONOTA        NUMERIC(12,4),
    CUSTOTRIBUTOS    NUMERIC(12,4),
    CUSTOENCARGOS    NUMERIC(12,4),
    PRECOVENDA       NUMERIC(12,4),
    SIT_INVENTARIO   VARCHAR(1),
    IDDEPOSITO       SMALLINT,
    DEPOSITO         VARCHAR(1)
);

CREATE TABLE ARQUIVOS_PALM (
    IDFILIAL     DM_SMALLINT NOT NULL,
    NOMEARQUIVO  DM_NOME NOT NULL
);

CREATE TABLE ATIVIDADE (
    IDFILIAL     DM_SMALLINT,
    IDATIVIDADE  DM_SMALLINT,
    NOME         VARCHAR(25),
    USUARIO      VARCHAR(15),
    EXCLUIDO     VARCHAR(1)
);

CREATE TABLE BANCO (
    IDFILIAL   DM_SMALLINT,
    IDBANCO    VARCHAR(4) CHARACTER SET NONE,
    DESCRICAO  VARCHAR(25)
);

CREATE TABLE BANCO_FORNECEDOR (
    IDFORNECEDOR  INTEGER NOT NULL,
    IDCONTROLE    INTEGER NOT NULL,
    NUMAGENCIA    VARCHAR(6) NOT NULL,
    NUMCONTA      VARCHAR(10) NOT NULL,
    NUMBANCO      VARCHAR(4) NOT NULL,
    CORRENTISTA   VARCHAR(50) NOT NULL
);

CREATE TABLE C100_NF (
    IDFILIAL                 SMALLINT NOT NULL,
    NOTA_PROPRIA_TERCEIROS   VARCHAR(1) DEFAULT 'P' NOT NULL,
    IDNOTA                   INTEGER NOT NULL,
    IND_OPER                 VARCHAR(1) NOT NULL,
    IND_EMIT                 VARCHAR(1),
    IDCLIENTE                INTEGER,
    COD_MOD                  VARCHAR(2),
    SER                      VARCHAR(3) NOT NULL,
    NUM_DOC                  INTEGER,
    CHAVE_NFE                VARCHAR(44),
    DT_DOC                   DATE,
    DT_E_S                   DATE,
    VL_DOC                   NUMERIC(15,2),
    VL_DESC                  NUMERIC(15,2),
    VL_ABAT_NT               NUMERIC(15,2),
    VL_MERC                  NUMERIC(15,2),
    IND_FRT                  VARCHAR(1),
    VL_FRT                   NUMERIC(15,2),
    VL_SEG                   NUMERIC(15,2),
    VL_OUT_DA                NUMERIC(15,2),
    VL_BC_ICMS               NUMERIC(15,2),
    VL_ICMS                  NUMERIC(15,2),
    VL_BC_ICMS_ST            NUMERIC(15,2),
    VL_ICMS_ST               NUMERIC(15,2),
    VL_IPI                   NUMERIC(15,2),
    VL_PIS                   NUMERIC(15,2),
    VL_CONFINS               NUMERIC(15,2),
    VL_PIS_ST                NUMERIC(15,2),
    VL_COFINS_ST             NUMERIC(15,2),
    IND_PGTO                 VARCHAR(1),
    DESCRICAO_COMPLEMENTAR   VARCHAR(240),
    CRT                      VARCHAR(1),
    SITUACAONOTA             VARCHAR(1),
    INUTILIZADA              VARCHAR(1),
    CPF_CNPJ                 VARCHAR(18) NOT NULL,
    IDPARTICIPANTE           INTEGER,
    ATUALIZACAO              VARCHAR(1),
    IDFORNECEDOR             INTEGER,
    CADASTRADO_PELA_ENTRADA  VARCHAR(1),
    IDCFOP                   INTEGER,
    IDCONDICAO_PAGTO         SMALLINT,
    BONIFICACAO              VARCHAR(1),
    IDFORMA_PAGTO            SMALLINT,
    IDCENTRO_CUSTO           SMALLINT,
    TIPO_NOTA                VARCHAR(1),
    PARCELA                  INTEGER,
    ATUALIZA_PRECO_PRODUTO   VARCHAR(1)
);

CREATE TABLE C170_ITENS_NF (
    IDFILIAL                INTEGER NOT NULL,
    CPF_CNPJ                VARCHAR(18) NOT NULL,
    NOTA_PROPRIA_TERCEIROS  VARCHAR(1) DEFAULT 'P' NOT NULL,
    IDNOTA                  INTEGER NOT NULL,
    IDPRODUTO               INTEGER NOT NULL,
    CONTADOR                INTEGER NOT NULL,
    QTD                     NUMERIC(15,3),
    UNID                    VARCHAR(6),
    VL_ITEM                 NUMERIC(16,4),
    VL_DESC                 NUMERIC(15,2),
    IND_MOV                 VARCHAR(1),
    CST_ICMS                VARCHAR(3),
    CFOP                    VARCHAR(4),
    COD_NAT                 VARCHAR(10),
    VL_BC_ICMS              NUMERIC(15,2),
    ALIQ_ICMS               NUMERIC(15,2),
    VL_ICMS                 NUMERIC(15,2),
    VL_BC_ICMS_ST           NUMERIC(15,2),
    ALIQ_ST                 NUMERIC(15,2),
    VL_ICMS_ST              NUMERIC(15,2),
    IND_APUR                VARCHAR(1),
    CST_IPI                 VARCHAR(2),
    COD_ENQ                 VARCHAR(2),
    VL_BC_IPI               NUMERIC(15,2),
    ALIQ_IPI                NUMERIC(15,2),
    VL_IPI                  NUMERIC(15,2),
    CST_PIS                 VARCHAR(2),
    VL_BC_PIS               NUMERIC(15,2),
    ALIQ_PIS_PERCENTUAL     NUMERIC(15,2),
    QUANT_BC_PIS            NUMERIC(15,2),
    ALIQ_PIS_REAIS          NUMERIC(15,2),
    VL_PIS                  NUMERIC(15,2),
    CST_CONFINS             VARCHAR(3),
    VL_BC_CONFINS           NUMERIC(15,2),
    ALIQ_COFINS             NUMERIC(15,2),
    QUANT_BC_CONFINS        NUMERIC(15,2),
    VL_COFINS               NUMERIC(15,2),
    P_RED_BC                NUMERIC(15,2),
    VCREDICMSSN             NUMERIC(15,2),
    PCREDSN                 NUMERIC(15,2),
    IDUNIDADEMEDIDA         SMALLINT,
    ATUALIZACAO             VARCHAR(1),
    QTDE_FORNECEDOR         NUMERIC(15,3),
    CPROD                   VARCHAR(20),
    NOMEPRODUTO_FORNECEDOR  VARCHAR(100),
    CODIGO_BARRA            VARCHAR(20),
    NCM                     VARCHAR(20),
    CEST                    VARCHAR(20)
);

CREATE TABLE CADASTRO_SENHAS (
    IDUSUARIO             INTEGER NOT NULL,
    SENHA                 VARCHAR(6) NOT NULL,
    TAXA                  NUMERIC(10,2),
    PEDIR_SENHA_DESCONTO  VARCHAR(1),
    PEDIR_SENHA_ATRASO    VARCHAR(1),
    PEDIR_SENHA_ESTOQUE   VARCHAR(1),
    PEDIR_SENHA_EXCLUIR   VARCHAR(1)
);

CREATE TABLE CAIXA (
    IDFILIAL                  DM_SMALLINT,
    IDCAIXA                   DM_SMALLINT,
    DESCRICAO                 VARCHAR(40),
    TIPOCONTA                 CHAR(1),
    SALDOANTERIOR             NUMERIC(16,2),
    SAIR_REL_FLUXO            CHAR(1),
    EXCLUIDO                  VARCHAR(1),
    USUARIO                   VARCHAR(1),
    GB_CODIGOCEDENTE          VARCHAR(15),
    GB_DIGITOCODIGOCEDENTE    VARCHAR(3),
    GB_CODIGOBANCO            VARCHAR(4),
    GB_CODIGOAGENCIA          VARCHAR(5),
    GB_DIGITOAGENCIA          VARCHAR(2),
    GB_NUMEROCONTA            VARCHAR(15),
    GB_DIGITOCONTA            VARCHAR(2),
    GB_NOMECLIENTE            VARCHAR(50),
    GB_TIPOCARTEIRA           VARCHAR(6),
    GB_NUMEROCGC              VARCHAR(18),
    GB_NUMEROCPF              VARCHAR(14),
    GB_BAIRRO                 VARCHAR(25),
    GB_CEP                    VARCHAR(9),
    GB_CIDADE                 VARCHAR(25),
    GB_EMAIL                  VARCHAR(40),
    GB_ESTADO                 VARCHAR(2),
    GB_NUMERO                 VARCHAR(6),
    GB_RUA                    VARCHAR(50),
    GB_COMPLEMENTO            VARCHAR(30),
    GB_CONVENIO               VARCHAR(20),
    GB_NOSSONUMERO            VARCHAR(20),
    GB_MENSAGEM_BOLETO        VARCHAR(60),
    GB_JUROS_MES              NUMERIC(10,2),
    GB_MULTA                  NUMERIC(10,2),
    GB_TAMANHO_NOSSONUMERO    SMALLINT,
    GB_LAYOUT                 VARCHAR(1),
    GB_LAYOUT_NN              VARCHAR(10),
    GB_MODALIDADE             VARCHAR(3),
    GB_CARACTITULO            VARCHAR(12),
    IDCAIXA_TMP               INTEGER,
    IDFILIAL_NOSSONUMERO      SMALLINT,
    IDCAIXA_NOSSONUMERO       SMALLINT,
    COMPARTILHAR_NOSSONUMERO  VARCHAR(1) DEFAULT 'N' NOT NULL,
    SEQUENCIAL                INTEGER,
    LOCAL_PAGAMENTO           VARCHAR(100),
    CAMINHO_SALVAR_REMESSA    VARCHAR(120)
);

CREATE TABLE CARGA (
    IDFILIAL    DM_SMALLINT,
    IDCONTROLE  DM_INTEGER NOT NULL,
    DTCONTROLE  DATE
);

CREATE TABLE CARREGAMENTO (
    IDFILIAL    INTEGER NOT NULL,
    IDCONTROLE  INTEGER NOT NULL,
    DATA        DATE,
    DESCRICAO   VARCHAR(40)
);

CREATE TABLE CARTEIRA (
    IDFILIAL         DM_SMALLINT,
    IDCARTEIRA       DM_INTEGER NOT NULL,
    IDREPRESENTANTE  DM_SMALLINT,
    NATOPERACAO      CHAR(1),
    DATAPEDIDO       DATE,
    VALORCARTEIRA    NUMERIC(14,2),
    IDPEDIDO         INTEGER,
    HISTORICO        VARCHAR(70),
    IDCLIENTE        INTEGER,
    TMP              VARCHAR(1)
);

CREATE TABLE CATEGORIA (
    IDFILIAL      DM_SMALLINT,
    IDCATEGORIA   DM_SMALLINT,
    DESCRICAO     VARCHAR(35),
    TIPOOPERACAO  CHAR(1) CHARACTER SET NONE,
    EXCLUIDO      VARCHAR(1),
    USUARIO       VARCHAR(15)
);

CREATE TABLE CATEGORIA_SERVICO (
    IDFILIAL     SMALLINT NOT NULL,
    IDCATEGORIA  SMALLINT NOT NULL,
    DESCRICAO    VARCHAR(20)
);

CREATE TABLE CCE (
    IDFILIAL    SMALLINT NOT NULL,
    IDCONTROLE  INTEGER NOT NULL,
    IDNOTA      INTEGER NOT NULL,
    CORRECAO    VARCHAR(200) NOT NULL
);

CREATE TABLE CELULARES (
    CNPJ                DM_CNPJ NOT NULL,
    IMEI                VARCHAR(15) NOT NULL,
    REPRESENTANTE       VARCHAR(66),
    DT_PRIMEIRO_ACESSO  DATE,
    DT_ULTIMO_ACESSO    DATE,
    BLOQUEAR            VARCHAR(1)
);

CREATE TABLE CENTROCUSTO (
    IDFILIAL           DM_SMALLINT,
    IDCENTROCUSTO      DM_SMALLINT,
    IDCATEGORIA        SMALLINT,
    DESCRICAO          VARCHAR(40),
    SITUACAORELATORIO  CHAR(1),
    EXCLUIDO           VARCHAR(1),
    USUARIO            VARCHAR(15)
);

CREATE TABLE CFOP (
    IDFILIAL            DM_SMALLINT,
    IDCFOP              DM_SMALLINT,
    DESCRICAO           VARCHAR(40),
    CFOP                VARCHAR(5),
    CFOP_ANTIGO         VARCHAR(4),
    GERAFINANCEIRO      VARCHAR(1),
    TIPOOPERACAO        VARCHAR(1),
    ALIQUOTAICMS        NUMERIC(10,2),
    TIPOCFOP            CHAR(1),
    ABREVIATURA         VARCHAR(30),
    CLFISCAL            VARCHAR(3),
    EXCLUIDO            VARCHAR(1),
    USUARIO             VARCHAR(15),
    SIMPLESREMESSA      VARCHAR(1),
    CFOP_PRINCIPAL      VARCHAR(1),
    CFOP_PRODUTO        VARCHAR(1),
    IDTRIBUTO           SMALLINT,
    DESCRICAO_SITUACAO  VARCHAR(200)
);

CREATE TABLE CFOP_TRIBUTO (
    IDFILIAL           INTEGER NOT NULL,
    IDCFOP             INTEGER NOT NULL,
    IDTRIBUTO_ORIGEM   INTEGER NOT NULL,
    IDTRIBUTO_DESTINO  INTEGER NOT NULL
);

CREATE TABLE CHEQUES (
    IDFILIAL         DM_SMALLINT,
    NUMBANCO         VARCHAR(4),
    NUMAGENCIA       VARCHAR(6),
    NUMCONTA         VARCHAR(10),
    NUMCHEQUE        VARCHAR(8),
    NOMECORRENTISTA  VARCHAR(40),
    NOMEAVALISTA     VARCHAR(40),
    DATACHEQUE       DATE,
    DATAPRE          DATE,
    SITUACAOCHEQUE   CHAR(1),
    VALORCHEQUE      NUMERIC(16,2),
    OBSERVACAO       BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    VALORJUROS       NUMERIC(16,2),
    VALORPAGO        NUMERIC(16,2),
    MOTIVO           VARCHAR(3) CHARACTER SET NONE,
    JUROSMES         NUMERIC(10,2),
    DATAPAGAMENTO    DATE,
    DIASEMATRASO     SMALLINT,
    VALORDESPESA     NUMERIC(16,2),
    DTDIGITACAO      DATE,
    IDCOBRANCA       SMALLINT,
    IDCLIENTE        INTEGER,
    IDREPRESENTANTE  SMALLINT,
    DATABAIXADO      DATE,
    DATADEVOLVIDO    DATE
);

CREATE TABLE CIDADE (
    IDFILIAL        DM_SMALLINT,
    IDCIDADE        DM_SMALLINT,
    IDREGIAO        SMALLINT,
    NOME            VARCHAR(25),
    UF              VARCHAR(2),
    QTDEPOPULACAO   INTEGER,
    ID_EXTERNO      INTEGER,
    EXCLUIDO        VARCHAR(1),
    USUARIO         VARCHAR(15),
    ID_CID_DOMINIO  INTEGER,
    IDPAIS          SMALLINT,
    IDCIDADE_TMP    SMALLINT,
    CIDADE_NOVA     VARCHAR(1),
    CODIGO_PAIS     INTEGER,
    DESCRICAO_PAIS  VARCHAR(60)
);

CREATE TABLE CLIENTE (
    IDFILIAL               DM_SMALLINT,
    IDCLIENTE              DM_INTEGER NOT NULL,
    IDCONVENIO             DM_SMALLINT,
    IDCIDADE               DM_SMALLINT,
    IDREGIAO               DM_SMALLINT,
    IDSUBREGIAO            SMALLINT,
    IDATIVIDADE            DM_SMALLINT,
    NOME                   DM_NOME,
    FANTASIA               DM_NOME,
    ENDERECO               DM_ENDERECO,
    BAIRRO                 DM_BAIRRO,
    CEP                    DM_CEP,
    CNPJ                   DM_CNPJ,
    INSESTADUAL            DM_INSCRICAO,
    CPF                    DM_CPF,
    RG                     DM_RG,
    FONE                   DM_FONE,
    FAX                    DM_FONE,
    CELULAR                DM_FONE,
    PONTOREFERENCIA        VARCHAR(120),
    EMAIL                  DM_EMAIL,
    DTCADASTRO             DATE,
    DTULTIMACOMPRA         DATE,
    OBSERVACAO             BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    LIMITECREDITO          NUMERIC(16,2),
    SITUACAOCREDITO        CHAR(1),
    COMPRADOR              VARCHAR(40),
    DTNASCIMENTOCOMP       DATE,
    FONECOMP               DM_FONE,
    CONTRIBUINTE           CHAR(1),
    INSCRICAOMUNICIPAL     VARCHAR(16),
    TIPOCLIENTE            CHAR(1),
    DIAVISITA              SMALLINT,
    ORDEMVISITA            SMALLINT,
    VLRULTIMACOMPRA        NUMERIC(14,2),
    IDTABELAPRECO          SMALLINT,
    EXCLUIDO               VARCHAR(1),
    USUARIO                VARCHAR(15),
    IDSUB_ATIVIDADE        SMALLINT,
    PERIODO_VISITA         SMALLINT,
    IDREPRESENTANTE        SMALLINT,
    IDSUBCONVENIO          INTEGER,
    IDCLIENTE_PALM         INTEGER,
    IDREPRESENTANTE_PALM   SMALLINT,
    MEDIACOMPRA            NUMERIC(16,2),
    SUFRAMA                VARCHAR(9),
    EMAIL2                 DM_EMAIL,
    IDCLIENTE_TMP          INTEGER,
    DT_ALTERACAO           DATE,
    CLIENTE_NOVO           VARCHAR(1),
    DESCONTO_BOLETO        NUMERIC(16,2),
    CLIENTE_CONTRIBUINTE   VARCHAR(1),
    SITUACAO_DO_CLIENTE    VARCHAR(20),
    SAIR_ST_NA_OBSERVACAO  VARCHAR(1),
    LATITUDE               DOUBLE PRECISION,
    LONGITUDE              DOUBLE PRECISION,
    CLIENTE_ATRASO         COMPUTED BY ((select atraso from CLIENTE_ATRASO(IDFILIAL, IDCLIENTE)))
);

CREATE TABLE CLIENTE_BALCAO (
    IDFILIAL         SMALLINT,
    DTPEDIDO         DATE,
    NOMECLIENTE      VARCHAR(45),
    ENDERECO         DM_ENDERECO,
    BAIRRO           DM_BAIRRO,
    CEP              DM_CEP,
    CPF              DM_CPF,
    CNPJ             DM_CNPJ,
    INSCESTADUAL     DM_INSCRICAO,
    RG               DM_RG,
    FONE             DM_FONE,
    PONTOREFERENCIA  VARCHAR(50),
    IDPEDIDO         INTEGER
);

CREATE TABLE CLIENTE_FORNECEDOR (
    IDCLIENTE     DM_INTEGER NOT NULL,
    IDFILIAL      DM_SMALLINT,
    IDFORNECEDOR  DM_SMALLINT
);

CREATE TABLE CLIENTE_PALM (
    IDFILIAL              INTEGER,
    IDCLIENTE             INTEGER,
    NMRAZAO               VARCHAR(60),
    NMFANTASIA            VARCHAR(60),
    ENDERECO              VARCHAR(40),
    NUMERO                VARCHAR(8),
    CEP                   VARCHAR(9),
    BAIRRO                VARCHAR(25),
    IDCIDADE              SMALLINT,
    TIPOCLIENTE           VARCHAR(1),
    CNPJ                  VARCHAR(18),
    IE                    VARCHAR(20),
    CPF                   VARCHAR(14),
    RG                    VARCHAR(18),
    FONE                  VARCHAR(13),
    FAX                   VARCHAR(13),
    CELULAR               VARCHAR(13),
    EMAIL                 VARCHAR(40),
    ALTERADO              VARCHAR(1),
    IDATIVIDADE           SMALLINT,
    IDCONVENIO            SMALLINT,
    IDREGIAO              SMALLINT,
    IDTABELAPRECO         SMALLINT,
    CONTRIBUINTE          VARCHAR(1),
    CLIENTE_CONTRIBUINTE  VARCHAR(1),
    IDREPRESENTANTE       INTEGER,
    DATA_IMPORT           DATE,
    HORA_IMPORT           TIME
);

CREATE TABLE CLIENTE_PRODUTO (
    IDFILIAL     SMALLINT NOT NULL,
    IDCLIENTE    INTEGER NOT NULL,
    IDPRODUTO    INTEGER NOT NULL,
    PRECO_VENDA  NUMERIC(14,4),
    PRECO_ATUAL  NUMERIC(14,4)
);

CREATE TABLE CLIENTE_TABELAPRECO (
    IDFILIAL       DM_SMALLINT,
    IDCLIENTE      DM_INTEGER NOT NULL,
    IDTABELAPRECO  DM_INTEGER NOT NULL,
    TMP            VARCHAR(1)
);

CREATE TABLE COBRANCA (
    IDFILIAL        DM_SMALLINT,
    IDCOBRANCA      DM_SMALLINT,
    DESCRICAO       DM_NOME,
    EXCLUIDO        VARCHAR(1),
    USUARIO         VARCHAR(15),
    ENVIAR_ANDROID  VARCHAR(1)
);

CREATE TABLE COBRANCA_CTS_RECEBER (
    IDFILIAL    DM_INTEGER NOT NULL,
    IDCONTROLE  INTEGER NOT NULL,
    DESCRICAO   VARCHAR(40),
    DTCADASTRO  DATE
);

CREATE TABLE CONDICAOPAGTO (
    IDCONDICAOPAGTO    DM_SMALLINT,
    IDFILIAL           DM_SMALLINT,
    DESCRICAO          VARCHAR(15),
    TAXADESCONTO       NUMERIC(10,2),
    TAXAFINACEIRO      NUMERIC(10,2),
    PRAZO              DM_SMALLINT,
    PRAZO2             SMALLINT,
    PRAZO3             SMALLINT,
    PRAZO4             SMALLINT,
    PRAZO5             SMALLINT,
    PRAZO6             SMALLINT,
    EXCLUIDO           VARCHAR(1),
    USUARIO            VARCHAR(15),
    DESCONTO_COMISSAO  NUMERIC(10,2),
    ENVIAR_PALM        VARCHAR(1),
    PARCELA            SMALLINT
);

CREATE TABLE CONDPGTCLIENTE (
    IDFILIAL         DM_SMALLINT,
    IDCLIENTE        DM_INTEGER NOT NULL,
    IDCONDICAOPAGTO  DM_SMALLINT,
    FLAG             CHAR(1),
    COND_NOVO        VARCHAR(1)
);

CREATE TABLE CONFIGURACAO (
    IDFILIAL                        INTEGER NOT NULL,
    ENVIAR_LOGO_PDF_NFE             VARCHAR(1),
    GERAR_XML_PASTA                 VARCHAR(1),
    OBSERVACAO_NFE                  BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    SALVAR_REMESSA                  VARCHAR(70),
    MOSTRA_MARGEM                   VARCHAR(1),
    MD_RELATORIO_2                  VARCHAR(1),
    IDTABELAPRECO_ETIQUETA          NUMERIC(15,2),
    IDCFOP_PARA_CPF                 INTEGER,
    COMPARTILHAR_NOTA_IDFILIAL      SMALLINT,
    USAR_NUMERO_NOTA_FILIAL         VARCHAR(1),
    CAMINHO_FTP_MOBILE              VARCHAR(40),
    USAR_NFE_SIMPLIFICADA           VARCHAR(1),
    CAMINHO_FISICO_FTP              VARCHAR(150),
    SENHA_EXCLUIR_PDV               VARCHAR(30),
    MVA_COMPRA_PRODUTO              VARCHAR(1),
    USAR_NFE_SIMPLIFICADA_SERVER    VARCHAR(1),
    TRANS_PED_PENDENTE_COM_EST_NEG  VARCHAR(1),
    RECEBER_ULT_PEDIDOS_ANDROID     VARCHAR(1),
    USAR_BOLETO_ANDROID             VARCHAR(1),
    GERAR_IDNFCE                    INTEGER,
    USAR_NFCE                       VARCHAR(1),
    NFCE_CSC                        VARCHAR(60),
    NFCE_IDCSC                      VARCHAR(60),
    NFCE_AMBIENTE                   VARCHAR(1),
    IDCFOP_NFCE                     INTEGER,
    VERIFICAR_CLI_ATRASO_MOB        VARCHAR(1),
    DIAS_EM_ATRASO_MOB              SMALLINT,
    MOSTRAR_OBS_CLI_MOBILE          VARCHAR(1),
    DEIXIAR_DIGITAR_PRECO_QTDE      VARCHAR(1),
    PORTA_FTP                       INTEGER,
    CALCULARPRODUTO_CADPRO          VARCHAR(1),
    IMAGENS_NO_ANDROID              VARCHAR(1),
    CAMINHO_IMAGEM_FTP              VARCHAR(150),
    DIGITAR_PRAZO_ANDROID           VARCHAR(1)
);

CREATE TABLE CONFIGURACAO_REPLICADOR (
    IDFILIAL_ORIGEM           INTEGER,
    IDFILIAL_DESTINO          INTEGER,
    BD_ORIGEM                 VARCHAR(45),
    BD_DESTINO                VARCHAR(45),
    REPLICAR_TEMPO            INTEGER,
    REPLICADOR_ATIVO_INATIVO  VARCHAR(1),
    REPLICADOR_OCULTO         VARCHAR(1)
);

CREATE TABLE CONSIGNACAO (
    IDFILIAL         SMALLINT NOT NULL,
    IDCONSIGNACAO    INTEGER NOT NULL,
    IDREPRESENTANTE  SMALLINT,
    DATA             DATE,
    OBSERVACAO       VARCHAR(60),
    SITUACAO         VARCHAR(1)
);

CREATE TABLE CONTROLE_ETIQUETA (
    IDFILIAL       SMALLINT,
    IDPRODUTO      INTEGER,
    QTDE_ETIQUETA  SMALLINT
);

CREATE TABLE CONVENIO (
    IDFILIAL    DM_SMALLINT,
    IDCONVENIO  DM_SMALLINT,
    DESCRICAO   DM_NOME,
    EXCLUIDO    VARCHAR(1),
    USUARIO     VARCHAR(15)
);

CREATE TABLE CORTES (
    IDFILIAL         DM_SMALLINT NOT NULL,
    IDCLIENTE        DM_INTEGER NOT NULL,
    IDPEDIDO         DM_INTEGER NOT NULL,
    IDPRODUTO        DM_INTEGER NOT NULL,
    IDREPRESENTANTE  DM_INTEGER,
    QTDE             NUMERIC(10,3),
    PRECOVENDA       NUMERIC(16,2) NOT NULL,
    IDFOLHA          SMALLINT NOT NULL,
    IDUNIDADEMEDIDA  SMALLINT,
    FATORCONVERSAO   INTEGER,
    DATAPEDIDO       DATE
);

CREATE TABLE COTA (
    IDFILIAL         DM_SMALLINT,
    IDREPRESENTANTE  DM_INTEGER NOT NULL,
    IDPRODUTO        DM_INTEGER NOT NULL,
    QTDE             NUMERIC(10,3)
);

CREATE TABLE COTA_FORNECEDOR (
    IDFILIAL         SMALLINT NOT NULL,
    IDREPRESENTANTE  SMALLINT NOT NULL,
    IDFORNECEDOR     SMALLINT NOT NULL,
    VALOR            NUMERIC(15,2),
    QTDE             INTEGER
);

CREATE TABLE COTA_GRUPO (
    IDFILIAL         SMALLINT NOT NULL,
    IDREPRESENTANTE  SMALLINT NOT NULL,
    IDGRUPO          SMALLINT NOT NULL,
    VALOR            NUMERIC(15,2),
    QTDE             INTEGER
);

CREATE TABLE COTACAO_PRODUTO (
    IDFILIAL      INTEGER NOT NULL,
    IDCONTROLE    INTEGER NOT NULL,
    IDFORNECEDOR  INTEGER,
    DATA_COTACAO  DATE NOT NULL,
    MES1          VARCHAR(7),
    MES2          VARCHAR(7),
    MES3          VARCHAR(7)
);

CREATE TABLE CTE (
    IDFILIAL              SMALLINT NOT NULL,
    IDPEDIDO              INTEGER NOT NULL,
    IDCTE                 INTEGER,
    IDREMETENTE           INTEGER,
    IDCIDADE_REMETENTE    SMALLINT,
    IDDESTINATARIO        INTEGER,
    IDCIDADE_DESTINARIO   SMALLINT,
    PRODUTO_PREDOMINANTE  VARCHAR(60),
    MEDIDA                VARCHAR(15),
    QTDE                  NUMERIC(12,3),
    PESO                  NUMERIC(12,3),
    VALOR                 NUMERIC(12,2),
    DATA_PREV_ENTREGA     DATE,
    VALOR_SERVICO         NUMERIC(12,2),
    PAGAR_PAGO            VARCHAR(1),
    IDCFOP                SMALLINT,
    IDTRIBUTO             SMALLINT,
    BASE_CALCULO          NUMERIC(12,2),
    OBSERVACAO            BLOB SUB_TYPE 0 SEGMENT SIZE 80
);

CREATE TABLE CTE_CHAVE (
    IDFILIAL  INTEGER NOT NULL,
    IDPEDIDO  INTEGER NOT NULL,
    CHAVE     VARCHAR(80) NOT NULL
);

CREATE TABLE CTRL_ENTREGA (
    IDFILIAL    DM_INTEGER NOT NULL,
    IDCONTROLE  INTEGER NOT NULL,
    DESCRICAO   VARCHAR(40),
    DTCADASTRO  DATE
);

CREATE TABLE DATA_MOVIMENTO (
    IDFILIAL    INTEGER NOT NULL,
    DATA_MOVTO  DATE NOT NULL,
    SITUACAO    VARCHAR(1)
);

CREATE TABLE DATA_REMESSA (
    BANCO  INTEGER NOT NULL,
    DATA   DATE NOT NULL,
    QTDE   INTEGER NOT NULL
);

CREATE TABLE DEPOSITO (
    IDFILIAL    DM_SMALLINT NOT NULL,
    IDDEPOSITO  DM_SMALLINT NOT NULL,
    DTDEPOSITO  DATE,
    DESCRICAO   VARCHAR(40),
    SITUACAO    VARCHAR(1)
);

CREATE TABLE DEVOLUCAO (
    IDFILIAL              DM_SMALLINT,
    IDPEDIDO              DM_INTEGER NOT NULL,
    IDFOLHA               DM_SMALLINT,
    DATAPEDIDO            DATE,
    DATADIGITACAO         DATE,
    IDCFOP                DM_SMALLINT,
    IDCLIENTE             DM_INTEGER,
    IDCONDICAOPAGTO       DM_SMALLINT,
    IDFORMAPAGTO          DM_SMALLINT,
    IDREPRESENTANTE       DM_SMALLINT,
    IDCENTROCUSTO         DM_SMALLINT,
    NOTAFISCAL            INTEGER,
    DATANOTAFISCAL        DATE,
    TOTALCUSTO            NUMERIC(16,2),
    TOTALPRODUTO          NUMERIC(16,2),
    TOTALDESCONTO         NUMERIC(16,2),
    TOTALPEDIDO           NUMERIC(16,2),
    PARCELA               SMALLINT,
    TOTALCOMISSAO         NUMERIC(16,2) DEFAULT 0,
    FLAG                  CHAR(1),
    IDTABELAPRECO         DM_SMALLINT,
    SITUACAOPEDIDO        CHAR(1),
    NOTAGERADORA          INTEGER,
    DATAGERADORA          DATE,
    OBS1                  VARCHAR(60),
    OBS2                  VARCHAR(60),
    TAXADESCONTO          NUMERIC(10,2),
    IDPEDIDOPALM          INTEGER,
    IDCOBRANCA            SMALLINT,
    IDROMANEIO            INTEGER,
    SIT_INVENTARIO        VARCHAR(1),
    IDCONSIGNACAO         INTEGER,
    TIPO_PEDIDO           VARCHAR(1),
    TIPONOTA              VARCHAR(5),
    IDOBRAS               SMALLINT,
    TIPO_PVD              VARCHAR(3),
    LOTE_NFE              VARCHAR(1),
    VALIDADAS             VARCHAR(1),
    NFE_ENVIADA           VARCHAR(1),
    NFE_IMPRESSA          VARCHAR(1),
    NFE_MOTIVO            VARCHAR(60),
    SERIE                 SMALLINT,
    TOTAL_FRETE           NUMERIC(16,2),
    VALOR_PIS             NUMERIC(15,2),
    VALOR_CONFINS         NUMERIC(15,2),
    VALOR_IPI             NUMERIC(15,2),
    VALOR_BASE_ST         NUMERIC(16,2),
    VALOR_ICMS_ST         NUMERIC(16,2),
    VALOR_BASE            NUMERIC(16,2),
    VALOR_ICMS            NUMERIC(16,2),
    TOTAL_CUSTO_ENCARGOS  NUMERIC(16,2)
);

CREATE TABLE DEVOLUCAO_ENTRADA (
    IDNOTA           DM_INTEGER NOT NULL,
    IDFILIAL         DM_SMALLINT,
    IDCFOP           DM_SMALLINT,
    IDFORNECEDOR     DM_INTEGER,
    IDFORMAPAGTO     DM_SMALLINT,
    IDCENTROCUSTO    DM_SMALLINT,
    IDCONDICAOPAGTO  DM_SMALLINT,
    DATAENTRADA      DATE,
    DATANOTAFISCAL   DATE,
    TOTALPRODUTO     NUMERIC(16,2),
    TOTALLIQUIDO     NUMERIC(16,2),
    BONIFICACAO      CHAR(1),
    TOTALDESCONTO    NUMERIC(16,2)
);

CREATE TABLE DIVISAO_FORNECEDOR (
    IDFILIAL   SMALLINT NOT NULL,
    IDDIVISAO  INTEGER NOT NULL,
    DESCRICAO  VARCHAR(35),
    EXCLUIDO   VARCHAR(1),
    USUARIO    VARCHAR(15)
);

CREATE TABLE ENT_MATERIA_PRIMA (
    IDFILIAL    DM_SMALLINT NOT NULL,
    IDCONTROLE  DM_INTEGER NOT NULL,
    IDNOTA      DM_INTEGER,
    DTENTRADA   DATE
);

CREATE TABLE ENTRADA (
    IDNOTA                 DM_INTEGER NOT NULL,
    IDFILIAL               DM_SMALLINT,
    IDCFOP                 DM_SMALLINT,
    IDFORNECEDOR           DM_INTEGER,
    IDFORMAPAGTO           DM_SMALLINT,
    IDCENTROCUSTO          DM_SMALLINT,
    IDCONDICAOPAGTO        DM_SMALLINT,
    DATAENTRADA            DATE,
    DATANOTAFISCAL         DATE,
    PRAZOPAGAMENTO         DM_SMALLINT,
    TOTALPRODUTO           NUMERIC(16,2),
    TOTALIPI               NUMERIC(16,2),
    TOTALFRETE             NUMERIC(16,2),
    TOTALDESCONTO          NUMERIC(16,2),
    TOTALOUTROS            NUMERIC(16,2),
    TOTALLIQUIDO           NUMERIC(16,2),
    BONIFICACAO            CHAR(1),
    PARCELAS               SMALLINT,
    SIT_INVENTARIO         VARCHAR(1),
    TMP                    VARCHAR(1),
    TIPO_ENTRADA           VARCHAR(1),
    TOTALDESPESA_VARIAVEL  NUMERIC(16,2),
    TIPO_NOTA              VARCHAR(1),
    IDOBRAS                SMALLINT,
    VALOR_PIS              NUMERIC(15,2),
    VALOR_CONFINS          NUMERIC(15,2),
    CHAVE_NFE              VARCHAR(120)
);

CREATE TABLE ENTRADA_PRODUTO (
    IDFILIAL   SMALLINT NOT NULL,
    IDENTRADA  INTEGER NOT NULL,
    DTENTRADA  DATE
);

CREATE TABLE ESTOQUE_FISICO (
    IDFILIAL        DM_SMALLINT NOT NULL,
    IDCONTROLE      INTEGER NOT NULL,
    IDPRODUTO       INTEGER,
    DTMOVTO         DATE,
    HISTORICO       VARCHAR(100),
    SITUACAO        VARCHAR(1),
    QTDE            NUMERIC(10,3),
    SALDO           NUMERIC(14,3),
    PRECO_VENDA     NUMERIC(16,4),
    CUSTO_PRODUTO   NUMERIC(14,4),
    TMP             VARCHAR(1),
    HORA            TIME,
    CUSTO_PRODUTO2  NUMERIC(14,4)
);

CREATE TABLE ESTOQUE_FISICO_DEPOSITO (
    IDFILIAL       DM_SMALLINT NOT NULL,
    IDCONTROLE     INTEGER NOT NULL,
    IDPRODUTO      INTEGER,
    DTMOVTO        DATE,
    HISTORICO      VARCHAR(60),
    SITUACAO       VARCHAR(1),
    QTDE           NUMERIC(10,3),
    SALDO          NUMERIC(14,3),
    PRECO_VENDA    NUMERIC(16,4),
    CUSTO_PRODUTO  NUMERIC(14,4),
    IDDEPOSITO     SMALLINT
);

CREATE TABLE FERIADOS (
    IDFERIADOS  VARCHAR(5)
);

CREATE TABLE FILIAL (
    IDFILIAL                        DM_INTEGER NOT NULL,
    RAZAO                           DM_NOME,
    ENDERECO                        DM_ENDERECO,
    BAIRRO                          DM_BAIRRO,
    CEP                             DM_CEP,
    CIDADE                          DM_CIDADE,
    UF                              DM_UF,
    CNPJ                            DM_CNPJ,
    INSESTADUAL                     DM_INSCRICAO,
    INSMUNICIPAL                    DM_INSCRICAO,
    FONE                            DM_FONE,
    FAX                             DM_FONE,
    EMAIL                           DM_EMAIL,
    USERNAME                        DM_USER,
    VENCIMENTO                      SMALLINT,
    SENHA                           VARCHAR(10),
    TIPOEMPRESA                     VARCHAR(20),
    IDGRUPO                         VARCHAR(5),
    IDCIDADE                        VARCHAR(5),
    IDREGIAO                        VARCHAR(5),
    SAIRLOGOTIPO                    CHAR(1),
    LOGOTIPO                        BLOB SUB_TYPE 2 SEGMENT SIZE 80,
    IDREPRESENTANTE                 VARCHAR(5),
    IDFORNECEDOR                    VARCHAR(5),
    IDATIVIDADE                     VARCHAR(5),
    IDFORMAPAGTO                    VARCHAR(5),
    IDCFOP                          VARCHAR(5),
    IDCLIENTE                       VARCHAR(5),
    IDTRIBUTO                       VARCHAR(5),
    IDPRODUTO                       VARCHAR(5),
    ABILITARQTDINICIAL              CHAR(1),
    IDHISTORICO                     VARCHAR(5),
    IDCENTROCUSTO                   VARCHAR(5),
    IDCAIXA                         VARCHAR(5),
    IDCONDICAOPAGTO                 VARCHAR(5),
    IDUNIDADEMEDIDA                 CHAR(5),
    IDNOTAFISCAL                    INTEGER,
    QTDEITENSNOTAFISCAL             SMALLINT,
    IDCFOPPEDIDO                    SMALLINT,
    IDCENTROCUSTOPEDIDO             SMALLINT,
    IDCFOPDEVOLUCAO                 SMALLINT,
    IMP                             VARCHAR(27),
    SERIENF                         VARCHAR(4),
    MODELONF                        VARCHAR(2),
    FLAG                            INTEGER,
    IDCARTEIRA                      VARCHAR(5),
    IDAJUST_VENDA                   VARCHAR(5),
    INC_ENV                         INTEGER,
    GERA_CARTEIRA                   CHAR(1),
    ATIVACONSISTENCIA               CHAR(1) CHARACTER SET NONE,
    IDPEDIDO                        VARCHAR(5) CHARACTER SET NONE,
    INC_IDPEDIDO                    INTEGER,
    SAIR_NOME_EMPRESA               CHAR(1) CHARACTER SET NONE,
    VALORACRESCIMO                  NUMERIC(16,2),
    MENSAGEM_ACRESCIMO              VARCHAR(30),
    SAIR_ACRESCIMO                  CHAR(1),
    ACRESCIMO_ABAIXO                NUMERIC(16,2),
    IDCONVENIO                      VARCHAR(5) CHARACTER SET NONE,
    PAGINA_PEDIDO                   NUMERIC(10,3),
    IDCATEGORIA                     VARCHAR(5),
    TAMANHOPAGINA                   NUMERIC(16,2),
    LIMITEPEDIDO                    INTEGER,
    IDCOBRANCA                      VARCHAR(5),
    IDFUNCIONARIO                   VARCHAR(5),
    DESCONTO_EMI                    CHAR(1),
    ORC_PED                         CHAR(1),
    DEF_CAIXA                       SMALLINT,
    SIT_PALM                        CHAR(1),
    ALTURA_ETIQUETA                 SMALLINT,
    COLUNA_ETIQUETA                 SMALLINT,
    ESPACO_COL_ETIQUETA             SMALLINT,
    RELACIONAR_PED_ROMANEIO         CHAR(1),
    SIT_PRODUTO                     CHAR(1),
    SENHA_DESC_PEDIDO               VARCHAR(6),
    ALIQUOTA_REDUZIDA               NUMERIC(10,2),
    IDTABELAPRECO_SAOBENTO          SMALLINT,
    IDUNIDADEMEDIDA_SAOBENTO        SMALLINT,
    IDUNIDADEMEDIDA_BALCAO          SMALLINT,
    IDTABELAPRECO_BALCAO            SMALLINT,
    USAR_LOG                        CHAR(1),
    IDCLIENTE_BALCAO                INTEGER,
    LOCAL_UNISYSTEM                 VARCHAR(35),
    JUROS_AO_DIA_BOLETO             NUMERIC(10,2),
    IDMATERIA_PRIMA                 VARCHAR(5),
    IDRECEITA                       INTEGER,
    CL_MER_AA_INI                   NUMERIC(14,2),
    CL_MER_AA_FIM                   NUMERIC(14,2),
    CL_MER_A_INI                    NUMERIC(14,2),
    CL_MER_A_FIM                    NUMERIC(14,2),
    CL_MER_B_INI                    NUMERIC(14,2),
    CL_MER_B_FIM                    NUMERIC(14,2),
    CL_MER_C_INI                    NUMERIC(14,2),
    CL_MER_C_FIM                    NUMERIC(14,2),
    CL_MER_D_INI                    NUMERIC(14,2),
    CL_MER_D_FIM                    NUMERIC(14,2),
    SENHA_CLIENTE_CHEQUE_SUSPENSO   SMALLINT,
    INC_IDRECEITA                   INTEGER DEFAULT 0,
    INC_ENTRADA_MP                  INTEGER,
    EXCLUIDO                        VARCHAR(1),
    ALTERADO_USUARIO                VARCHAR(15),
    IDCATEGORIA_SERVICO             VARCHAR(5),
    IDTIPO_SERVICO                  VARCHAR(5),
    INC_IDORDEM_VIAGEM              INTEGER,
    PEDIR_SENHA_MES                 SMALLINT,
    MD_CADASTRO                     VARCHAR(1),
    MD_LISTAGEM                     VARCHAR(1),
    MD_RELATORIO                    VARCHAR(1),
    MD_ENTRADA                      VARCHAR(1),
    MD_SAIDA                        VARCHAR(1),
    MD_BALCAO                       VARCHAR(1),
    MD_PRODUCAO                     VARCHAR(1),
    MD_CTAS_RECEBER                 VARCHAR(1),
    MD_CTAS_PAGAR                   VARCHAR(1),
    MD_CHEQUES                      VARCHAR(1),
    MD_FUNCIONARIOS                 VARCHAR(1),
    MD_CTR_FROTA                    VARCHAR(1),
    MD_CAIXA                        VARCHAR(1),
    IDTB_FRENTECAIXA                SMALLINT,
    IDCLIENTE_FRENTECAIXA           INTEGER,
    IDFORMAPAGTO_FRENTECAIXA        SMALLINT,
    MENSAGEM_FRENTECAIXA            BLOB SUB_TYPE 2 SEGMENT SIZE 4096,
    IDCFOP_FRENTECAIXA              SMALLINT,
    SIT_INVENTARIO                  VARCHAR(1),
    SOMAR_BOLETO                    VARCHAR(1),
    IDCONDICAOPAGTO_FRENTECAIXA     SMALLINT,
    IDDIVISAO_FORNECEDOR            VARCHAR(5),
    IDSUB_ATIVIDADE                 VARCHAR(5),
    IDSUB_GRUPO                     VARCHAR(5),
    IDNOTAENTREGA                   INTEGER,
    IDFORMAPAGTO_CARTAO_TEF         SMALLINT,
    IDFORMAPAGTO_CHEQUE_TEF         SMALLINT,
    ALTURA_MARGEM                   SMALLINT,
    FOLHA_ETIQUETA                  SMALLINT,
    IDEQUIPE                        VARCHAR(5),
    ALTERAR_COM_PEDIDO              VARCHAR(1),
    SETOR_EXPORTA_PRODUTO           VARCHAR(12),
    PERM_MENU_RECEBER               VARCHAR(1),
    IMPRESSORA_FISCAL               VARCHAR(1),
    IMPORTAR_KANZEM                 VARCHAR(1),
    LOCAL_KANZEN                    VARCHAR(35),
    SISTEMA_TRABALHA_FRENTE_CAIXA   VARCHAR(1),
    IDDEPOSITO                      VARCHAR(5),
    MD_DEPOSITO                     VARCHAR(1),
    DEPOSITO_LOCAL                  SMALLINT,
    DEPOSITO_EXTERNO                SMALLINT,
    IDUNIDADEMEDIDA_FRENTE_CX       SMALLINT,
    IDFORMAPAGTO_LANCHONETE         SMALLINT,
    IDCONDICAOPAGTO_LANCHONETE      SMALLINT,
    SENHA_EXCLUIR_LANCHONETE        VARCHAR(10),
    SENHA_CONFIG_LANCHONETE         VARCHAR(10),
    IDCLIENTE_LANCHONETE            INTEGER,
    IDUNIDADE_LANCHONETE            SMALLINT,
    IDTABELAPRECO_LANCHONETE        SMALLINT,
    IMPRIME_IMP_FISCAL_LANCH        VARCHAR(1),
    ATU_VENDA_TEMPO_LANCH           SMALLINT,
    PEDIR_SENHA_FORMACOND_PD        VARCHAR(1),
    SENHA_FORMACOND_PD              VARCHAR(10),
    SENHA_CANCELAR_CUPOM_LANCH      VARCHAR(10),
    BALANCA_COPY1_FRENTECX          SMALLINT,
    BALANCA_COPY2_FRENTECX          SMALLINT,
    DIGITO_BALANCA                  VARCHAR(1),
    PRECO_BALANCA_1_COPY            SMALLINT,
    PRECO_BALANCA_2_COPY            SMALLINT,
    SENHA_EXCLUIR_VENDA_FRCX        VARCHAR(10),
    SENHA_EXCLUIR_ITEM_FRCX         VARCHAR(10),
    TIPO_PEDIDO                     VARCHAR(40),
    IDFOLHA                         VARCHAR(5),
    SIT_CLIENTE_PRODUTO             VARCHAR(1),
    INC_IDCOBRANCARECEBER           INTEGER,
    PAGINA_RECIBO                   SMALLINT,
    TIPO_RECIBO                     VARCHAR(1),
    CTR_VENCTO_PRODUTO              VARCHAR(1),
    EMITE_NT_PROM_FORMAPAGTO        VARCHAR(1),
    SAIR_ENDERECO_EMI_PD            VARCHAR(1),
    INC_IDCARTEIRA                  INTEGER,
    UPDATE_PERMISSAO                VARCHAR(1),
    FATURA_PEDIDO_PD_EST_NEG        VARCHAR(1),
    DTINVENTARIO                    DATE,
    INC_ESTOQUE_FISICO              INTEGER,
    MOSTRAR_TRANSPORTADORA_NF       VARCHAR(1),
    INC_ROMANEIO                    INTEGER,
    GB_CODIGO_BANCO                 VARCHAR(3),
    GB_NOSSO_NUMERO                 VARCHAR(60),
    GB_DIGITO                       VARCHAR(2),
    GB_CODIGO_CEDENTE               VARCHAR(20),
    ORDEM_NOTA                      VARCHAR(1),
    ADMINISTRAR_SISTEMA             VARCHAR(1),
    PED_FATURAR_DIAS_ATRASO         SMALLINT,
    INC_IDPROMOCAO                  INTEGER,
    CTB_CODIGO_EMPRESA              VARCHAR(7),
    CTB_SEQUENCIAL                  INTEGER,
    EXPORTAR_ESCRITA_FISCAL         VARCHAR(20),
    CTB_CNPJ_EMPRESA                VARCHAR(18),
    TRAZER_DESCONTO_PRO_ANTERIOR    VARCHAR(1),
    ROMANEIO_RDPRINT                VARCHAR(1),
    ATIVAR_ECF                      VARCHAR(1),
    ESPELHO_MOSTRAR_PER_TAB         VARCHAR(1),
    SENHA_CLIENTE_DEB_ATR           SMALLINT,
    EXPORTA_NFE                     VARCHAR(1),
    SALVAR_NFE                      VARCHAR(35),
    INFORMAR_IDNOTA                 VARCHAR(1),
    TIPO_ATRASO_CTS_RECEBER         VARCHAR(1),
    MOVIMENTA_VENDA                 VARCHAR(1),
    MOVIMENTA_BONIFICACAO           VARCHAR(1),
    MOVIMENTA_TROCA                 VARCHAR(1),
    MOVIMENTA_CONSIGNACAO           VARCHAR(1),
    PALM_IDCONVENIO                 SMALLINT,
    PALM_IDREGIAO                   SMALLINT,
    PALM_IDATIVIDADE                SMALLINT,
    NOMEPRO_COMPRIMIDO              VARCHAR(1),
    INC_IDENTRADA_PRODUTO           INTEGER,
    PALM_TABELA_1                   SMALLINT,
    PALM_TABELA_2                   SMALLINT,
    INC_IDCOTACAO                   INTEGER,
    FRENTECAIXA_P1                  VARCHAR(15),
    FRENTECAIXA_P2                  VARCHAR(15),
    FRENTECAIXA_P3                  VARCHAR(15),
    FRENTECAIXA_P4                  VARCHAR(15),
    FRENTECAIXA_P5                  VARCHAR(15),
    FRENTECAIXA_P6                  VARCHAR(15),
    FRENTECAIXA_P7                  VARCHAR(15),
    FRENTECAIXA_P8                  VARCHAR(15),
    FRENTECAIXA_P9                  VARCHAR(15),
    CANCELA_CUPOM                   VARCHAR(1),
    SENHA_CANCELA_CUPOM             VARCHAR(10),
    DESCONTO_CUPOM                  VARCHAR(1),
    SENHA_DESCONTO_CUPOM            VARCHAR(10),
    PARCELAS_SINTETIZADA            VARCHAR(1),
    PALM_IDFORMAPAGTO_TROCA         SMALLINT,
    PALM_IDFORMAPAGTO_BONIF         SMALLINT,
    PALM_IDCFOP_TROCA               SMALLINT,
    PALM_IDCFOP_BONIF               SMALLINT,
    PALM_IDFOLHA                    SMALLINT,
    MD_PLANILHA                     VARCHAR(1),
    DESCONTO_POSITIVO               VARCHAR(1),
    IDCONDICAO_BALCAO               SMALLINT,
    IDFORMAPAGTO_BALCAO             SMALLINT,
    PALM_TABELA_3                   SMALLINT,
    PALM_TABELA_4                   SMALLINT,
    CAMINHO_LOG                     VARCHAR(80),
    NOTA_BAIXA_ESTOQUE              VARCHAR(1),
    PALM_TABELA_5                   SMALLINT,
    BALCAO_TIPO_IMP                 VARCHAR(1),
    CONTROLE_DATA_SISTEMA           VARCHAR(1),
    INC_IDVENDABALCAO               INTEGER,
    DESCONTO_PEDIDO                 VARCHAR(1),
    INC_PEDIDO_F7                   INTEGER,
    INC_PEDIDO_F6                   INTEGER,
    IDCFOP_ENTRADA                  SMALLINT,
    IDCENTROCUSTO_ENTRADA           SMALLINT,
    IDCENTROCUSTO_DEVOLUCAO         SMALLINT,
    TIPO_EMPRESA                    VARCHAR(20),
    IDCFOP_S_REMESSA                SMALLINT,
    IDCENTROCUSTO_S_REMESSA         SMALLINT,
    USA_BALANCA                     VARCHAR(1),
    TIPO_BALANCA                    VARCHAR(15),
    BALANCA_BAUD_RATE               VARCHAR(6),
    TIMEOUT_BALANCA                 INTEGER,
    CNAE                            VARCHAR(9),
    BALCAO_IMP_40COL                VARCHAR(1),
    BALCAO_DESCONTO_TOTAL           NUMERIC(10,2),
    NFE_NUMERO_SERIE                VARCHAR(40),
    NFE_LOGO                        VARCHAR(40),
    NFE_UF                          VARCHAR(2),
    NFE_AMBIENTE                    VARCHAR(1),
    NFE_DANFE                       VARCHAR(1),
    PERG_SALVAR_ARQ_RESP            VARCHAR(1),
    NFE_SALVAR_ARQ_RESP             VARCHAR(40),
    USAR_ACBR                       VARCHAR(1),
    FANTASIA                        VARCHAR(40),
    CODIGO_CIDADE                   INTEGER,
    NFE_ENVIAR_IMPRIMIR             VARCHAR(1),
    END_NUM                         VARCHAR(8),
    TAXA_FUNRURAL                   VARCHAR(1),
    USAR_CADASTRO_SENHA             VARCHAR(1),
    NFE_SAIR_PESO                   VARCHAR(1),
    PDV_DEF_IDFORMAPAGTO            SMALLINT,
    PDV_DEF_IDCONDICAOPAGTO         SMALLINT,
    PDV_DEF_IDCFOP                  SMALLINT,
    PDV_DEF_IDCENTROCUSTO           SMALLINT,
    PDV_DEF_IDTABELA_PRECO          SMALLINT,
    PDV_DEF_IDUNIDADEMEDIDA         SMALLINT,
    BALCAO_FATURAR_EST_NEG          VARCHAR(1),
    BALCAO_DAR_DESCONTO_PROD        VARCHAR(1),
    BALCAO_DAR_DESCONTO_TOTAL       VARCHAR(1),
    IDENT_DUPLICATA_1               VARCHAR(20),
    IDENT_DUPLICATA_2               VARCHAR(40),
    IDENT_DUPLICATA_3               VARCHAR(40),
    NFE_ENVIAR                      SMALLINT,
    CONTROLA_CONTA_SUPERVISOR       VARCHAR(1),
    FAT_EST_NEGATIVO                VARCHAR(1),
    DIGITA_PRECOTABELA              VARCHAR(1),
    BALCAO_ABRIR_PROG_EXTERNO       VARCHAR(90),
    VALIDAR_NCM                     VARCHAR(1),
    TEMPO_PARA_DAR_TAB_BALCAO       INTEGER,
    GERAR_ARQUIVO_AUTOCOM           VARCHAR(1),
    CAPTION_PROGRAMA_BALCAO         VARCHAR(40),
    CAPTION_SENHA_BALCAO            VARCHAR(40),
    USUARIO_BALCAO                  VARCHAR(20),
    SENHA_BALCAO                    VARCHAR(20),
    PALM_IDCENTROCUSTO_TROCA        INTEGER,
    PALM_IDCENTROCUSTO_BONIFICACAO  INTEGER,
    INC_IDCONTROLE_ENTREGA          INTEGER,
    NFE_SALVAR_PDF                  VARCHAR(90),
    IDFOLHA_DEFAULT                 SMALLINT,
    IDCFOP_FORA_ESTADO              SMALLINT,
    PUXAR_PEDIDO_PALM_PENDENTE      VARCHAR(1),
    IMPRIMIR_PEDIDO_VENDABALCAO     VARCHAR(1),
    DIGITAR_PRC_UNIT_VENDABALCAO    VARCHAR(1),
    AVANCO_LINHA_IMPRESSORA_40_COL  SMALLINT,
    VERSAO_LAYOUT_SPED              SMALLINT,
    PERFIL_ARQUIVO_SPED             VARCHAR(1),
    INDICADOR_TIPO_ATIVIDADE_SPED   VARCHAR(1),
    SUFRAMA                         VARCHAR(9),
    NOMEARQUIVO_SPED                VARCHAR(40),
    LOCAL_ARQUIVO_SPED              VARCHAR(100),
    SISTEMA_BLOQUEADO               VARCHAR(1),
    RATEAR_PEDIDO                   VARCHAR(1),
    CAMINHO_ARQUIVO_ARTPAN          VARCHAR(100),
    EXCLUIR_VENDA_PDV               VARCHAR(1),
    CRT                             VARCHAR(1),
    IDTRANSPORTADORA_NOTA_FISCAL    INTEGER,
    VALIDADE_CERTIFICADO            DATE,
    SERVICO_AUTOCOM                 VARCHAR(40),
    BAIXA_DATA_PAG_MOV              VARCHAR(1),
    NFE_NUM_COPIA                   VARCHAR(1),
    NFE_SMTP                        VARCHAR(50),
    NFE_SENHA                       VARCHAR(15),
    NFE_PORTA                       VARCHAR(5),
    NFE_EMAIL                       VARCHAR(50),
    NFE_SSL                         VARCHAR(1),
    NFE_SAIR_CODIGO_BARRA           VARCHAR(1),
    DIG_TAB_MENOR                   VARCHAR(1),
    ENVIAR_DESCONTO_NFE             VARCHAR(1),
    ENDERECO_TAB_PALM               VARCHAR(50),
    INC_PEDIDO_F8                   INTEGER,
    USA_KIT                         VARCHAR(1),
    SERIE                           SMALLINT,
    VALIDAR_DOCUMENTOS_CLIENTE      VARCHAR(1) DEFAULT 'S',
    TRATAR_CLIENTES_NOVOS           VARCHAR(1),
    DEF_CFOP_FORA_ESTADO            INTEGER,
    DEF_ENTRADA_CONDICAOPAGTO       SMALLINT,
    DEF_ENTRADA_IDFORMAPAGTO        SMALLINT,
    IMPORTA_PEDIDOS_JA_CAD          VARCHAR(1),
    GRAVAR_PEDIDO_SO_NO_FINAL       VARCHAR(1),
    QTDE_ADD_DIA_JUROS              SMALLINT,
    USAR_CODIGO_BARRA_PEDIDO        VARCHAR(1),
    CADASTRAR_CUPOM_PEDIDO          VARCHAR(1),
    DEF_IDREPRESENTANTE             SMALLINT,
    PORTA_BALACA                    VARCHAR(10),
    TRUCAR_VALOR_PDV                VARCHAR(1),
    TRATAR_CLIENTES_REP             VARCHAR(1) DEFAULT 'N',
    INC_CLIENTE                     INTEGER,
    INC_CIDADE                      INTEGER,
    I_CIDADE                        INTEGER,
    ATUALIZA_DADOS_COMPLEMENTAR     VARCHAR(1),
    ATU_DADOS_PRIMEIRA_VEZ          VARCHAR(1),
    DEF_IDCFOP_CUPOM                SMALLINT,
    ABRIR_PESQUISA_PRODUTO          VARCHAR(1),
    PEDIDO_SMTP                     VARCHAR(50),
    PEDIDO_SENHA                    VARCHAR(15),
    PEDIDO_PORTA                    VARCHAR(5),
    PEDIDO_EMAIL                    VARCHAR(50),
    PEDIDO_SSL                      VARCHAR(1),
    INATIVAR_CONSIGNACAO_DEVOLUCAO  VARCHAR(1),
    DEF_CFOP_IDCONSIGNACAO          SMALLINT,
    IDUNIDADEMEDIDA_DEF_PALM        SMALLINT,
    TECLAS_F_NO_PEDIDO              VARCHAR(1),
    DEF_DESC_TABPRECO               NUMERIC(6,2),
    VERSAO_NFE                      VARCHAR(2),
    DIGITAR_PRECO_PALTA             VARCHAR(1),
    QTDE_CASA_AUTOCOM               VARCHAR(1),
    N_ESCOLHER_FORMA                VARCHAR(1),
    N_ESCOLHER_CONDICAO             VARCHAR(1),
    N_ESCOLHER_TABELA               VARCHAR(1),
    N_ALTERA_CLIENTE                VARCHAR(1),
    N_INCLUI_CLIENTE                VARCHAR(1),
    VEND_TRABALHA_C_CONSIG          VARCHAR(1),
    MD_LANCHONETE                   VARCHAR(1),
    IDPEDIDO_MDFE                   INTEGER,
    MDFE_AMBIENTE                   SMALLINT,
    SEQUENCIA_MDFE                  INTEGER,
    CERTIFICADO_MDFE                VARCHAR(100),
    MD_MDFE                         VARCHAR(1),
    MD_CTE                          VARCHAR(1),
    SALVAR_MDFE                     VARCHAR(60),
    PORTA_MOBILE                    SMALLINT,
    FAZER_CONSISTENCIA_MOBILE       VARCHAR(1),
    FATURAR_ESTOQUE_NEGATIVO        VARCHAR(1),
    MSG_NOTA_PEDIDO                 VARCHAR(100),
    FUNCIONARIO_GERAR_MOVTOCAIXA    VARCHAR(1),
    FUNCIONARIO_DEF_IDCAIXA         SMALLINT,
    FUNCIONARIO_DEF_IDCENTROCUSTO   SMALLINT,
    NATOPERACAO_MOBILE              VARCHAR(5),
    NAO_ALTERAR_PRECO_VENDA_MOBILE  VARCHAR(1),
    PERMITIR_ACRESCIMO_MOBILE       VARCHAR(1),
    PERMITIR_DESCONTO_MOBILE        VARCHAR(1),
    SENHA_ADMIN_MOBILE              VARCHAR(10),
    AUTOCOM_PRODUTO_BARRA           VARCHAR(1),
    MD_CESTA_BASICA                 VARCHAR(1),
    INC_ORCAMENTO                   INTEGER,
    USAR_TABELA_REP_MOBILE          VARCHAR(1),
    PERIODO_PARA_FILTRAR_NOTEBOOK   SMALLINT,
    CASA_DECIMAL_PEDIDO             VARCHAR(2),
    ULTNSU_MANIFESTO                VARCHAR(30),
    LEVAR_TODOS_CLIENTES_MOB        VARCHAR(1),
    TRATAR_CLI_NOVOS_MOBILE         VARCHAR(1)
);

CREATE TABLE FORMAPAGTO (
    IDFILIAL                DM_SMALLINT,
    IDFORMAPAGTO            DM_SMALLINT,
    DESCRICAO               VARCHAR(15),
    DESCONTO_COMISSAO       NUMERIC(10,2),
    COBRANCA                VARCHAR(1),
    EXCLUIDO                VARCHAR(1),
    USUARIO                 VARCHAR(15),
    TEF                     VARCHAR(1),
    EMITIR_NOTAPROMISSORIA  VARCHAR(1),
    PERMITIR_DESCONTO       VARCHAR(1),
    NUMBANCO                VARCHAR(4),
    NUMAGENCIA              VARCHAR(6),
    NUMCONTA                VARCHAR(10),
    BALCAO_GERA_FINANCEIRO  VARCHAR(1),
    ENVIAR_PALM             VARCHAR(1),
    TIPOFORMA               VARCHAR(1),
    NFE_DUPLICATA           VARCHAR(1),
    FORMA_IMPRESSORA        VARCHAR(35),
    CODIGO_FORMA_PAGTO      VARCHAR(3),
    BALCAO_QUITAR           VARCHAR(1),
    IMPRESSAO_QTDE_COPIAS   VARCHAR(1),
    QUITAR_AUTO_RECEBER     VARCHAR(1),
    IDCONDICAOPAGTO         SMALLINT,
    SAIR_NOTA_PEDIDO        VARCHAR(1),
    FORMAPAGTO_NFCE         VARCHAR(2),
    PINPAD_INTEGRADO        VARCHAR(1),
    CNPJ_OPERADORA          VARCHAR(20)
);

CREATE TABLE FORNECEDOR (
    IDFILIAL           DM_SMALLINT,
    IDFORNECEDOR       DM_INTEGER NOT NULL,
    NOME               DM_NOME,
    FANTASIA           DM_NOME,
    ENDERECO           DM_ENDERECO,
    BAIRRO             DM_BAIRRO,
    IDCIDADE           DM_SMALLINT,
    CEP                DM_CEP,
    CNPJ               DM_CNPJ,
    INSESTADUAL        DM_INSCRICAO,
    FONE               DM_FONE,
    FAX                DM_FONE,
    CPF                DM_CPF,
    RG                 DM_RG,
    EMAIL              DM_EMAIL,
    TIPOFORNECEDOR     CHAR(1),
    DTCADASTRO         DATE,
    OBSERVACAO         BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    REPRESENTANTE      DM_NOME COLLATE PT_PT,
    FONEREPRESENTANTE  DM_FONE,
    EXCLUIDO           VARCHAR(1),
    USUARIO            VARCHAR(15),
    IDDIVISAO          SMALLINT,
    IDEQUIPE           SMALLINT,
    ABREVIATURA        VARCHAR(30),
    SITUACAO           VARCHAR(1),
    FORNECEDOR_NOVO    VARCHAR(1)
);

CREATE TABLE FORNECEDOR_PRODUTO (
    IDFILIAL       DM_SMALLINT NOT NULL,
    IDFORNECEDOR   DM_INTEGER NOT NULL,
    IDPRODUTO      INTEGER NOT NULL,
    IDPRODUTO_FAB  BIG_INTERGER NOT NULL,
    CUSTO          NUMERIC(14,2),
    PRECOVENDA     NUMERIC(14,2)
);

CREATE TABLE FUNCIONARIO (
    IDFILIAL         DM_SMALLINT,
    IDFUNCIONARIO    DM_SMALLINT,
    NOME             DM_NOME,
    ENDERECO         DM_ENDERECO,
    BAIRRO           DM_BAIRRO,
    IDCIDADE         DM_SMALLINT,
    CEP              DM_CEP,
    FONE             DM_FONE,
    CELULAR          DM_FONE,
    EMAIL            DM_EMAIL,
    CPF              DM_CPF,
    RG               DM_RG,
    IDREPRESENTANTE  SMALLINT,
    DTADIMISSAO      DATE,
    SITUACAO         CHAR(1),
    EXCLUIDO         VARCHAR(1),
    USUARIO          VARCHAR(15),
    DTSAIDA          DATE,
    DTNASCIMENTO     DATE
);

CREATE TABLE GENERO_MERCADORIA (
    IDGENERO   SMALLINT NOT NULL,
    DESCRICAO  VARCHAR(200) NOT NULL
);

CREATE TABLE GRUPO (
    IDFILIAL       DM_SMALLINT,
    IDGRUPO        DM_SMALLINT,
    NOME           VARCHAR(25),
    USERNAME       DM_USER,
    ID_EXTERNO     INTEGER,
    SITUACAO       CHAR(1),
    EXCLUIDO       VARCHAR(1),
    USUARIO        VARCHAR(15),
    MENSAGEM_01    VARCHAR(100),
    MENSAGEM_02    VARCHAR(100),
    MENSAGEM_NOTA  VARCHAR(1)
);

CREATE TABLE HISTORICO (
    IDFILIAL     DM_SMALLINT,
    IDHISTORICO  DM_INTEGER NOT NULL,
    HISTORICO    VARCHAR(60),
    EXCLUIDO     VARCHAR(1),
    USUARIO      VARCHAR(1)
);

CREATE TABLE HISTORICO_PEDIDO_PALM (
    IDCONTROLE    INTEGER NOT NULL,
    IDPEDIDOPALM  INTEGER,
    HISTORICO     VARCHAR(80)
);

CREATE TABLE IBPT (
    ID_IBPT                 INTEGER NOT NULL,
    NCM_IBPT                VARCHAR(10),
    EX_IBPT                 VARCHAR(3),
    TABELA_IBPT             VARCHAR(3),
    ALIQNACIONAL_IBPT       NUMERIC(15,2),
    ALIQINTERNACIONAL_IBPT  NUMERIC(15,2)
);

CREATE TABLE IMPRESSORAS_FISCAL (
    IDFILIAL      SMALLINT NOT NULL,
    IDCONTROLE    INTEGER NOT NULL,
    NUMERO_SERIE  VARCHAR(15) NOT NULL
);

CREATE TABLE INVENTARIO (
    IDFILIAL         DM_SMALLINT,
    IDPRODUTO        DM_INTEGER NOT NULL,
    IDUNIDADEMEDIDA  DM_SMALLINT,
    QTDE             NUMERIC(10,3),
    ESTOQUE          NUMERIC(10,3)
);

CREATE TABLE INVENTARIO_DEPOSITO (
    IDFILIAL         SMALLINT NOT NULL,
    IDDEPOSITO       SMALLINT NOT NULL,
    IDPRODUTO        INTEGER NOT NULL,
    IDUNIDADEMEDIDA  SMALLINT NOT NULL,
    QTDE             NUMERIC(10,3),
    ESTOQUE          NUMERIC(10,3)
);

CREATE TABLE ITEM_ORCAMENTO (
    IDFILIAL         SMALLINT NOT NULL,
    IDVENDA          INTEGER NOT NULL,
    IDCONTADOR       SMALLINT NOT NULL,
    IDPRODUTO        INTEGER,
    CDBARRA          VARCHAR(15),
    QTDE_VENDA       NUMERIC(13,3),
    PRECO_CUSTO      NUMERIC(12,2),
    PRECO_VENDA      NUMERIC(12,2),
    PRECO_UNITARIO   NUMERIC(11,3),
    INDICADOR        VARCHAR(1) CHARACTER SET ISO8859_3,
    IDDEPOSITO       INTEGER,
    PRECO_SUGESTAO   NUMERIC(13,3),
    PRECO_TRIBUTADO  NUMERIC(13,3),
    TAXA_DESCONTO    NUMERIC(6,2),
    PRECO_TABELA     NUMERIC(12,2),
    ATUALIZA         VARCHAR(1),
    LIXO             VARCHAR(1),
    IDCLIENTE        INTEGER,
    CONSIGNACAO      VARCHAR(1),
    EH_TROCA         VARCHAR(1)
);

CREATE TABLE ITENS_CARREGAMENTO (
    IDFILIAL      INTEGER NOT NULL,
    IDCONTROLE    INTEGER NOT NULL,
    IDPRODUTO     INTEGER NOT NULL,
    CODIGO_BARRA  INTEGER,
    QTDE          NUMERIC(15,2),
    VALOR         NUMERIC(15,2)
);

CREATE TABLE ITENS_COBRANCA_CTS_RECEBER (
    IDFILIAL     DM_INTEGER NOT NULL,
    IDCONTROLE   DM_INTEGER NOT NULL,
    IDRECEBER    DM_INTEGER NOT NULL,
    IDFOLHA      DM_INTEGER NOT NULL,
    IDORDEM      SMALLINT NOT NULL,
    NOMECLIENTE  DM_NOME
);

CREATE TABLE ITENS_CONSIGNACAO (
    IDFILIAL                 SMALLINT NOT NULL,
    IDCONSIGNACAO            INTEGER NOT NULL,
    IDPRODUTO                INTEGER NOT NULL,
    QTDE_ENTRADA             NUMERIC(12,3) DEFAULT 0,
    QTDE_SAIDA               NUMERIC(12,3) DEFAULT 0,
    QTDE_RETORNO             NUMERIC(12,3),
    PRECO_VENDA              NUMERIC(14,4),
    QTDE_ENTRADA_QUE_ALTERA  NUMERIC(16,2)
);

CREATE TABLE ITENS_COTACAO_PRODUTO (
    IDFILIAL     INTEGER NOT NULL,
    IDCONTROLE   INTEGER NOT NULL,
    IDPRODUTO    INTEGER NOT NULL,
    CUSTONOTA    NUMERIC(16,2),
    VALOR_MES_1  NUMERIC(14,2),
    VALOR_MES_2  NUMERIC(14,2),
    VALOR_MES_3  NUMERIC(14,2),
    QTDECOTACAO  NUMERIC(10,3)
);

CREATE TABLE ITENS_CTRL_ENTREGA (
    IDFILIAL     DM_INTEGER NOT NULL,
    IDCONTROLE   DM_INTEGER NOT NULL,
    IDRECEBER    DM_INTEGER NOT NULL,
    IDFOLHA      DM_INTEGER NOT NULL,
    IDORDEM      SMALLINT NOT NULL,
    NOMECLIENTE  DM_NOME
);

CREATE TABLE ITENS_DEVOLUCAO_ENTRADA (
    IDFILIAL         DM_SMALLINT,
    IDFORNECEDOR     DM_INTEGER NOT NULL,
    IDNOTA           DM_INTEGER NOT NULL,
    IDPRODUTO        DM_INTEGER NOT NULL,
    IDUNIDADEMEDIDA  DM_SMALLINT,
    PRECOVENDA       NUMERIC(16,2),
    QTDECOMPRA       NUMERIC(10,3),
    FATORCONVERSAO   SMALLINT,
    CUSTOPRODUTO     NUMERIC(16,4),
    DEVOLVIDO        VARCHAR(1)
);

CREATE TABLE ITENS_ENT_MATERIA_PRIMA (
    IDFILIAL         DM_SMALLINT NOT NULL,
    IDCONTROLE       DM_INTEGER NOT NULL,
    IDMATERIA_PRIMA  DM_INTEGER NOT NULL,
    CUSTO            NUMERIC(14,2),
    QTDE             NUMERIC(10,2)
);

CREATE TABLE ITENS_ENTRADA_PRODUTO (
    IDFILIAL   SMALLINT NOT NULL,
    IDENTRADA  INTEGER NOT NULL,
    CONTADOR   SMALLINT NOT NULL,
    IDPRODUTO  INTEGER NOT NULL,
    QTDE       NUMERIC(10,3)
);

CREATE TABLE ITENS_EQUIPE (
    IDFILIAL         SMALLINT NOT NULL,
    IDEQUIPE         SMALLINT NOT NULL,
    IDREPRESENTANTE  INTEGER NOT NULL
);

CREATE TABLE ITENS_LANCHONETE (
    IDFILIAL    DM_SMALLINT NOT NULL,
    IDPEDIDO    INTEGER NOT NULL,
    IDMESA      SMALLINT NOT NULL,
    IDCONTADOR  INTEGER NOT NULL,
    IDPRODUTO   INTEGER NOT NULL,
    QTDE        NUMERIC(10,3),
    PRECOVENDA  NUMERIC(14,2)
);

CREATE TABLE ITENS_VENDA_BALCAO (
    IDFILIAL            INTEGER NOT NULL,
    TIPO                VARCHAR(3) NOT NULL,
    IDVENDA             INTEGER NOT NULL,
    CONTADOR            INTEGER NOT NULL,
    IDPRODUTO           INTEGER NOT NULL,
    QTDE                NUMERIC(13,3),
    PRECOVENDA          NUMERIC(15,4),
    TOTAL               DOUBLE PRECISION,
    CODIGOBARRA         VARCHAR(25),
    B_EXCLUIR_ITEM      VARCHAR(1),
    ALIQUOTA            VARCHAR(8),
    IDBICO              SMALLINT,
    MESCLAR_DAV         VARCHAR(1),
    TRIBUTO_INDICADOR   VARCHAR(1),
    TRIBUTO_TAXAICMS    NUMERIC(10,2),
    ITEM_CANCELADO      VARCHAR(1),
    DESCONTO            NUMERIC(10,2),
    TIPODESCONTO        VARCHAR(1),
    VALOR_COM_DESCONTO  DOUBLE PRECISION,
    CST                 VARCHAR(3),
    BASE_ICMS           DOUBLE PRECISION DEFAULT 0,
    VALOR_ICMS          DOUBLE PRECISION DEFAULT 0,
    BASE_ICMS_ST        DOUBLE PRECISION DEFAULT 0,
    VALOR_ICMS_ST       DOUBLE PRECISION DEFAULT 0
);

CREATE TABLE ITENSCARGA (
    IDFILIAL    DM_SMALLINT,
    IDCONTROLE  DM_INTEGER NOT NULL,
    IDROMANEIO  DM_INTEGER NOT NULL
);

CREATE TABLE ITENSDEPOSITO (
    IDFILIAL      DM_SMALLINT NOT NULL,
    IDDEPOSITO    DM_SMALLINT NOT NULL,
    IDPRODUTO     DM_INTEGER NOT NULL,
    QTDE_ATUAL    NUMERIC(10,3),
    DTINVENTARIO  DATE
);

CREATE TABLE ITENSDEVOLUCAO (
    IDFILIAL               DM_SMALLINT,
    IDPEDIDO               DM_INTEGER NOT NULL,
    IDFOLHA                DM_SMALLINT,
    CONTADOR               INTEGER NOT NULL,
    IDPRODUTO              DM_INTEGER,
    CUSTONOTA              NUMERIC(16,4),
    CUSTOTRIBUTADO         NUMERIC(16,4),
    CUSTOENCARGOS          NUMERIC(16,4),
    PRECOTABELA            NUMERIC(16,4),
    TAXADESCONTO           NUMERIC(10,4),
    PRECOVENDA             NUMERIC(16,4),
    QTDEPEDIDO             NUMERIC(10,3),
    TAXACOMISSAO           NUMERIC(10,2) DEFAULT 0,
    FATORCONVERSAO         DM_SMALLINT,
    IDUNIDADEMEDIDA        DM_SMALLINT,
    IDCARTEIRA             INTEGER,
    TROCA                  CHAR(1),
    IDMOVTO_SUPERVISOR     INTEGER,
    CST_IPI                VARCHAR(3),
    ALIQUOTA_IPI           NUMERIC(10,2),
    VALOR_IPI              NUMERIC(14,2),
    CST_PIS                VARCHAR(3),
    ALIQUOTA_PIS           NUMERIC(10,2),
    VALOR_PIS              NUMERIC(14,2),
    CST_COFINS             VARCHAR(3),
    ALIQUOTA_COFINS        NUMERIC(10,2),
    VALOR_COFINS           NUMERIC(14,2),
    IDTRIBUTO_CONFINS      SMALLINT,
    IDTRIBUTO_PIS          SMALLINT,
    IDTRIBUTO_IPI          SMALLINT,
    CST                    VARCHAR(3),
    TAXA_ICMS              NUMERIC(15,2),
    CALCULO_VALOR_BASE     NUMERIC(15,2),
    CALCULO_VALOR_ICMS     NUMERIC(15,2),
    CALCULO_VALOR_BASE_ST  NUMERIC(15,2),
    CALCULO_VALOR_ICMS_ST  NUMERIC(15,2),
    ALIQUOTA_ST            NUMERIC(15,2)
);

CREATE TABLE ITENSENTRADA (
    IDFILIAL                       DM_SMALLINT,
    IDFORNECEDOR                   DM_INTEGER NOT NULL,
    IDNOTA                         DM_INTEGER NOT NULL,
    CONTADOR                       SMALLINT DEFAULT 0 NOT NULL,
    IDPRODUTO                      DM_INTEGER NOT NULL,
    IDUNIDADEMEDIDA                DM_SMALLINT,
    IDTRIBUTO                      DM_SMALLINT,
    CUSTONOTA                      NUMERIC(16,4),
    CUSTOTRIBUTOS                  NUMERIC(16,4),
    CUSTOSENCARGOS                 NUMERIC(16,4),
    PRECOVENDA                     NUMERIC(16,4),
    CUSTONOTAUNIT                  NUMERIC(16,4),
    CUSTOTRIBUTOSUNIT              NUMERIC(16,4),
    CUSTOSENCARGOSUNIT             NUMERIC(16,4),
    PRECOVENDAUNIT                 NUMERIC(16,4),
    TAXAIPI                        NUMERIC(10,2),
    TAXAFRETE                      NUMERIC(10,2),
    TAXAICMSCOMPRA                 NUMERIC(10,2),
    TAXAICMSANTECIPADO             NUMERIC(10,2),
    TAXAIMPFEDERAL                 NUMERIC(10,2),
    TAXAFINANCEIRA                 NUMERIC(10,2),
    TAXAREMARCACAO                 NUMERIC(10,4),
    TAXALUCRO                      NUMERIC(10,2),
    TAXACOMISSAO                   NUMERIC(10,2),
    QTDECOMPRA                     NUMERIC(10,3),
    FATORCONVERSAO                 SMALLINT,
    CONFIRMAPRECO                  CHAR(1),
    TAXADESPESA                    NUMERIC(10,2),
    CUSTOPRODUTO                   NUMERIC(16,4),
    TAXAOUTRAS                     NUMERIC(10,2),
    DTVECIMENTO                    DATE,
    TAXA_CAPITAL                   NUMERIC(10,2),
    IDPRODUTO_FAB                  INTEGER,
    IDDEPOSITO                     SMALLINT,
    VALOR_BASE                     NUMERIC(14,2),
    VALOR_ICMS                     NUMERIC(14,2),
    TAXAICMS                       NUMERIC(10,2),
    INSENTIVOFISCAL                NUMERIC(10,4),
    IDCFOP                         SMALLINT,
    CLFISCAL                       VARCHAR(3),
    DESCRICAO_SITUACAO             VARCHAR(100),
    VALOR_IPI                      NUMERIC(10,2),
    VALOR_FRETE                    NUMERIC(10,2),
    VALOR_ICMS_ANTECIPADO          NUMERIC(10,2),
    TAXA_OU_VALOR_IPI              VARCHAR(1),
    TAXA_OU_VALOR_FRETE            VARCHAR(1),
    TAXA_OU_VALOR_ICMS_ANTECIPADO  VARCHAR(1),
    IDTRIBUTO_CONFINS              SMALLINT,
    IDTRIBUTO_PIS                  SMALLINT,
    IDTRIBUTO_IPI                  SMALLINT,
    CST_IPI                        VARCHAR(3),
    ALIQUOTA_IPI                   NUMERIC(10,2),
    CST_PIS                        VARCHAR(3),
    ALIQUOTA_PIS                   NUMERIC(10,2),
    VALOR_PIS                      NUMERIC(14,2),
    CST_COFINS                     VARCHAR(3),
    ALIQUOTA_COFINS                NUMERIC(10,2),
    VALOR_COFINS                   NUMERIC(14,2)
);

CREATE TABLE ITENSNOTA (
    IDFILIAL               DM_SMALLINT,
    IDNOTA                 DM_INTEGER NOT NULL,
    TIPONOTA               VARCHAR(5) DEFAULT 'NF' NOT NULL,
    SERIE                  SMALLINT NOT NULL,
    CONTADOR               INTEGER NOT NULL,
    IDPEDIDO               DM_INTEGER NOT NULL,
    IDFOLHA                DM_SMALLINT,
    IDPRODUTO              DM_INTEGER NOT NULL,
    CUSTONOTA              NUMERIC(16,4),
    CUSTOTRIBUTADO         NUMERIC(16,4),
    CUSTOENCARGOS          NUMERIC(16,4),
    PRECOTABELA            NUMERIC(16,4),
    TAXADESCONTO           NUMERIC(10,2),
    PRECOVENDA             NUMERIC(16,4),
    QTDEPEDIDO             NUMERIC(10,3),
    TAXACOMISSAO           NUMERIC(10,2),
    IDUNIDADEMEDIDA        DM_SMALLINT,
    FATORCONVERSAO         DM_SMALLINT,
    TROCA                  CHAR(1),
    PRECOTABELA_ORIGINAL   NUMERIC(16,4),
    SITUACAONOTA           VARCHAR(1),
    CONTADOR_ITEN          INTEGER,
    VALOR_BASE             NUMERIC(14,2),
    VALOR_ICMS             NUMERIC(14,2),
    TAXAICMS               NUMERIC(10,2),
    INSENTIVOFISCAL        NUMERIC(10,4),
    IDTRIBUTO              SMALLINT,
    CEAN                   VARCHAR(15),
    CEAN_TRIB              VARCHAR(15),
    CST_IPI                VARCHAR(3),
    ALIQUOTA_IPI           NUMERIC(10,2),
    VALOR_IPI              NUMERIC(14,2),
    CST_PIS                VARCHAR(3),
    ALIQUOTA_PIS           NUMERIC(10,2),
    VALOR_PIS              NUMERIC(14,2),
    CST_COFINS             VARCHAR(3),
    ALIQUOTA_COFINS        NUMERIC(10,2),
    VALOR_COFINS           NUMERIC(14,2),
    IDTRIBUTO_CONFINS      SMALLINT,
    IDTRIBUTO_PIS          SMALLINT,
    IDTRIBUTO_IPI          SMALLINT,
    USADO                  VARCHAR(1),
    NCM                    VARCHAR(8),
    VALOR_IBPT             NUMERIC(16,2),
    CST                    VARCHAR(3),
    TAXA_ICMS              NUMERIC(15,2),
    CALCULO_VALOR_BASE_ST  NUMERIC(15,2),
    CALCULO_VALOR_ICMS_ST  NUMERIC(15,2),
    CALCULO_VALOR_BASE     NUMERIC(15,2),
    CALCULO_VALOR_ICMS     NUMERIC(15,2),
    ALIQUOTA_ST            NUMERIC(15,2),
    CFOP                   VARCHAR(5)
);

CREATE TABLE ITENSNOTA_COMPLEMENTAR (
    IDFILIAL              DM_SMALLINT,
    IDPEDIDO              DM_INTEGER NOT NULL,
    CONTADOR              INTEGER NOT NULL,
    IDPRODUTO             DM_INTEGER NOT NULL,
    CUSTONOTA             NUMERIC(16,4),
    CUSTOTRIBUTADO        NUMERIC(16,4),
    CUSTOENCARGOS         NUMERIC(16,4),
    PRECOTABELA           NUMERIC(16,4),
    PRECOTABELA_ORIGINAL  NUMERIC(16,4),
    TAXADESCONTO          NUMERIC(10,4),
    PRECOVENDA            NUMERIC(16,4),
    QTDEPEDIDO            NUMERIC(10,3),
    IDUNIDADEMEDIDA       DM_SMALLINT,
    FATORCONVERSAO        DM_SMALLINT,
    CODIGO_BARRA          VARCHAR(15),
    VALOR_ICMS            NUMERIC(15,2),
    VALOR_BASE            NUMERIC(15,2),
    IDTRIBUTO             SMALLINT,
    IDCFOP                SMALLINT,
    CST                   VARCHAR(3),
    TAXAICMS              NUMERIC(10,2),
    INSENTIVOFISCAL       NUMERIC(10,4)
);

CREATE TABLE ITENSORCAMENTO_PDV (
    IDFILIAL               DM_SMALLINT,
    IDPEDIDO               DM_INTEGER NOT NULL,
    IDFOLHA                DM_SMALLINT,
    CONTADOR               INTEGER NOT NULL,
    IDPRODUTO              DM_INTEGER NOT NULL,
    CUSTONOTA              NUMERIC(16,4),
    CUSTOTRIBUTADO         NUMERIC(16,4),
    CUSTOENCARGOS          NUMERIC(16,4),
    PRECOTABELA            NUMERIC(16,4),
    PRECOTABELA_ORIGINAL   NUMERIC(16,4),
    TAXADESCONTO           NUMERIC(10,4),
    PRECOVENDA             NUMERIC(16,4),
    QTDEPEDIDO             NUMERIC(10,3),
    IDUNIDADEMEDIDA        DM_SMALLINT,
    TAXACOMISSAO           NUMERIC(10,2) DEFAULT 0,
    FATORCONVERSAO         DM_SMALLINT,
    IDCARTEIRA             INTEGER,
    IDPEDIDOPALM           INTEGER,
    IDREPRESENTANTE        SMALLINT,
    DTIMPORT               DATE,
    TROCA                  CHAR(1),
    ARQUIVO_PALM           VARCHAR(60),
    SIT_PEDIDO             CHAR(1),
    IDDEPOSITO             SMALLINT,
    DATA_VENCTO            DATE,
    ESTOQUE_REPRESENTANTE  VARCHAR(1),
    SITUACAO_ESTOQUE       VARCHAR(1),
    SITUACAO_DESCONTO      VARCHAR(1),
    CODIGO_BARRA           VARCHAR(15),
    B_EXCLUIR_ITEM         VARCHAR(1)
);

CREATE TABLE ITENSPARAMETRO (
    IDFILIAL     DM_SMALLINT,
    IDDESCRICAO  VARCHAR(20),
    CAMPO        VARCHAR(25),
    LINHA        SMALLINT,
    COLUNA       SMALLINT,
    VISIVEL      CHAR(1)
);

CREATE TABLE ITENSPEDIDO (
    IDFILIAL               DM_SMALLINT,
    IDPEDIDO               DM_INTEGER NOT NULL,
    IDFOLHA                DM_SMALLINT,
    CONTADOR               INTEGER NOT NULL,
    IDPRODUTO              DM_INTEGER NOT NULL,
    CUSTONOTA              NUMERIC(16,4),
    CUSTOTRIBUTADO         NUMERIC(16,4),
    CUSTOENCARGOS          NUMERIC(16,4),
    PRECOTABELA            NUMERIC(16,4),
    PRECOTABELA_ORIGINAL   NUMERIC(16,4),
    TAXADESCONTO           NUMERIC(10,4),
    PRECOVENDA             NUMERIC(16,4),
    QTDEPEDIDO             NUMERIC(10,3),
    IDUNIDADEMEDIDA        DM_SMALLINT,
    TAXACOMISSAO           NUMERIC(10,2) DEFAULT 0,
    FATORCONVERSAO         DM_SMALLINT,
    IDCARTEIRA             INTEGER,
    IDPEDIDOPALM           INTEGER,
    IDREPRESENTANTE        SMALLINT,
    DTIMPORT               DATE,
    TROCA                  CHAR(1),
    ARQUIVO_PALM           VARCHAR(60),
    SIT_PEDIDO             CHAR(1),
    IDDEPOSITO             SMALLINT,
    DATA_VENCTO            DATE,
    ESTOQUE_REPRESENTANTE  VARCHAR(1),
    SITUACAO_ESTOQUE       VARCHAR(1),
    SITUACAO_DESCONTO      VARCHAR(1),
    CODIGO_BARRA           VARCHAR(30),
    B_EXCLUIR_ITEM         VARCHAR(1),
    PODE_TRANSFORMA_VENDA  VARCHAR(1),
    HOUVE_CORTE            VARCHAR(1),
    CST_IPI                VARCHAR(3),
    ALIQUOTA_IPI           NUMERIC(10,2),
    VALOR_IPI              NUMERIC(14,2),
    CST_PIS                VARCHAR(3),
    ALIQUOTA_PIS           NUMERIC(10,2),
    VALOR_PIS              NUMERIC(14,2),
    CST_COFINS             VARCHAR(3),
    ALIQUOTA_COFINS        NUMERIC(10,2),
    VALOR_COFINS           NUMERIC(14,2),
    IDTRIBUTO_CONFINS      SMALLINT,
    IDTRIBUTO_PIS          SMALLINT,
    IDTRIBUTO_IPI          SMALLINT,
    ATUALIZA_DADOS         VARCHAR(1),
    CST                    VARCHAR(3),
    TAXA_ICMS              NUMERIC(15,2),
    CALCULO_VALOR_BASE     NUMERIC(15,2),
    CALCULO_VALOR_ICMS     NUMERIC(15,2),
    CALCULO_VALOR_BASE_ST  NUMERIC(15,2),
    CALCULO_VALOR_ICMS_ST  NUMERIC(15,2),
    ALIQUOTA_ST            NUMERIC(15,2),
    DATA_HORA_INCLUSAO     TIMESTAMP,
    OBSERVACAO             VARCHAR(60),
    M_RETORNO_CONS         VARCHAR(15)
);

CREATE TABLE ITENSPEDIDOPALM (
    IDFILIAL             SMALLINT,
    IDREPRESENTANTE      INTEGER,
    IDPEDIDOPALM         INTEGER,
    IDPEDIDO             INTEGER,
    IDITEM               SMALLINT,
    UNIDADEMEDIDA        SMALLINT,
    QTDEPEDIDO           NUMERIC(10,3),
    VALORUNITARIO        NUMERIC(16,4),
    DESCONTO             NUMERIC(10,2),
    OFERTA               NUMERIC(10,2),
    SITUACAOITEM         CHAR(1),
    ITEMTROCA            CHAR(1),
    VALORUNITARIOTABELA  NUMERIC(16,4),
    IDPRODUTO            INTEGER,
    RETRANSMITIR         VARCHAR(1),
    OBSERVACAO           VARCHAR(60)
);

CREATE TABLE ITENSPEDIDOPALM_AUX (
    IDFILIAL             SMALLINT,
    IDREPRESENTANTE      INTEGER,
    IDPEDIDOPALM         INTEGER,
    IDPEDIDO             INTEGER,
    IDITEM               SMALLINT,
    UNIDADEMEDIDA        SMALLINT,
    QTDEPEDIDO           NUMERIC(10,3),
    VALORUNITARIO        NUMERIC(16,4),
    DESCONTO             NUMERIC(10,2),
    OFERTA               NUMERIC(10,2),
    SITUACAOITEM         CHAR(1),
    ITEMTROCA            CHAR(1),
    VALORUNITARIOTABELA  NUMERIC(16,4),
    IDPRODUTO            INTEGER,
    RETRANSMITIR         VARCHAR(1),
    OBSERVACAO           VARCHAR(60)
);

CREATE TABLE ITENSPENDENTE (
    IDFILIAL               DM_SMALLINT NOT NULL,
    IDPEDIDO               DM_INTEGER NOT NULL,
    IDFOLHA                DM_SMALLINT NOT NULL,
    CONTADOR               INTEGER NOT NULL,
    IDPRODUTO              DM_INTEGER NOT NULL,
    CUSTONOTA              NUMERIC(16,4),
    CUSTOTRIBUTADO         NUMERIC(16,4),
    CUSTOENCARGOS          NUMERIC(16,4),
    PRECOTABELA            NUMERIC(16,4),
    PRECOTABELA_ORIGINAL   NUMERIC(14,4),
    TAXADESCONTO           NUMERIC(10,2),
    PRECOVENDA             NUMERIC(16,4),
    QTDEPEDIDO             NUMERIC(10,3),
    IDUNIDADEMEDIDA        DM_SMALLINT NOT NULL,
    TAXACOMISSAO           NUMERIC(10,2) DEFAULT 0,
    FATORCONVERSAO         DM_SMALLINT NOT NULL,
    IDCARTEIRA             INTEGER,
    IDPEDIDOPALM           INTEGER,
    IDREPRESENTANTE        SMALLINT,
    DTIMPORT               DATE,
    TROCA                  CHAR(1),
    ARQUIVO_PALM           VARCHAR(60),
    SIT_PEDIDO             CHAR(1),
    IDDEPOSITO             SMALLINT,
    DATA_VENCTO            DATE,
    ESTOQUE_REPRESENTANTE  VARCHAR(1)
);

CREATE TABLE ITENSPRODUCAO (
    IDFILIAL         DM_SMALLINT NOT NULL,
    IDPRODUCAO       DM_INTEGER NOT NULL,
    IDRECEITA        DM_INTEGER NOT NULL,
    IDMATERIA_PRIMA  DM_INTEGER NOT NULL,
    QTDE             NUMERIC(10,2),
    CUSTO            NUMERIC(16,2),
    TIPO_OPERACAO    VARCHAR(1)
);

CREATE TABLE ITENSRECEITA (
    IDFILIAL         DM_SMALLINT NOT NULL,
    IDCONTROLE       DM_INTEGER NOT NULL,
    IDMATERIA_PRIMA  DM_INTEGER NOT NULL,
    QTDE             NUMERIC(10,2),
    CUSTO            NUMERIC(16,2),
    TIPO_OPERACAO    VARCHAR(1)
);

CREATE TABLE ITENSROMANEIO (
    IDFILIAL            DM_SMALLINT NOT NULL,
    IDCONTROLE          DM_INTEGER NOT NULL,
    IDPEDIDO            DM_INTEGER NOT NULL,
    IDFOLHA             SMALLINT NOT NULL,
    SITUACAOROMANEIO    CHAR(1),
    NOMECLIENTE         VARCHAR(60),
    DATA_HORA_INCLUSAO  TIMESTAMP
);

CREATE TABLE ITENSTABELAPRECO (
    IDFILIAL            DM_SMALLINT,
    IDTABELAPRECO       DM_SMALLINT,
    IDPRODUTO           DM_INTEGER NOT NULL,
    PRECOUNIT           NUMERIC(16,4),
    QUANTIDADEMAXIMA    NUMERIC(10,3),
    TAXADESCONTO        NUMERIC(10,2),
    PRECOVENDA          NUMERIC(16,2),
    PROMOCAO            CHAR(1) CHARACTER SET NONE DEFAULT 'S',
    PRECOTABELA         NUMERIC(16,2),
    DESCONTOTABELA      NUMERIC(10,2),
    CHAMAR_TRIGGER      VARCHAR(1),
    PRECO_FOI_ALTERADO  VARCHAR(1)
);

CREATE TABLE ITENSVEICULO (
    IDFILIAL       DM_SMALLINT NOT NULL,
    IDPLACA        VARCHAR(8) NOT NULL,
    IDCONTROLE     SMALLINT NOT NULL,
    PRECOCUSTO     NUMERIC(15,2),
    KM_INICIAL     NUMERIC(10,1),
    KM_FINAL       NUMERIC(10,1),
    MARCA          VARCHAR(15),
    MODELO         VARCHAR(15),
    DATACOMPRA     DATE,
    ESTOQUE        INTEGER,
    TIPO_CADASTRO  VARCHAR(6),
    NUMERO         VARCHAR(10)
);

CREATE TABLE JUST_VISITA (
    IDFILIAL   DM_SMALLINT,
    IDJUST     DM_SMALLINT,
    DESCRICAO  VARCHAR(20),
    TIPO       CHAR(1)
);

CREATE TABLE KIT_PRODUTO (
    IDFILIAL                   INTEGER NOT NULL,
    IDPRODUTO                  INTEGER NOT NULL,
    IDKIT                      INTEGER NOT NULL,
    QTDE                       NUMERIC(10,3) NOT NULL,
    PERCENTUAL_DO_VALOR_VENDA  NUMERIC(14,4) NOT NULL,
    PRECO_VENDA                NUMERIC(16,2)
);

CREATE TABLE LANCHONETE (
    IDFILIAL         DM_SMALLINT NOT NULL,
    IDPEDIDO         DM_INTEGER NOT NULL,
    IDMESA           DM_SMALLINT NOT NULL,
    TOTALPEDIDO      NUMERIC(14,2),
    DTPEDIDO         DATE,
    IDFORMAPAGTO     SMALLINT,
    IDCONDICAOPAGTO  SMALLINT,
    OBS1             VARCHAR(60),
    OBS2             VARCHAR(2)
);

CREATE TABLE LOG_ALTERACAO_ANDROID (
    IDFILIAL         SMALLINT NOT NULL,
    IDREPRESENTANTE  INTEGER NOT NULL,
    ID               INTEGER NOT NULL,
    ID_2             INTEGER,
    TIPO             VARCHAR(20) NOT NULL,
    IDFOLHA          INTEGER,
    SITUACAO         VARCHAR(1)
);

CREATE TABLE LOG_NOSSONUMERO (
    IDFILIAL      INTEGER NOT NULL,
    IDRECEBER     INTEGER NOT NULL,
    IDFOLHA       INTEGER NOT NULL,
    IDORDEM       INTEGER NOT NULL,
    NOSSO_NUMERO  VARCHAR(20),
    DATA          DATE,
    DIGITO        VARCHAR(3)
);

CREATE TABLE LOTE (
    IDFILIAL       DM_SMALLINT NOT NULL,
    IDLOTE         DM_INTEGER NOT NULL,
    DTLOTE         DATE,
    DESCRICAO      VARCHAR(40),
    SITUACAO_LOTE  VARCHAR(1)
);

CREATE TABLE MANIFESTO_NFE (
    IDFILIAL              INTEGER NOT NULL,
    NSU                   VARCHAR(30),
    CHAVE                 VARCHAR(60),
    VALOR                 NUMERIC(15,2),
    CLIENTE               VARCHAR(120),
    DATAPEDIDO            DATE,
    CPF_CNPJ              VARCHAR(20),
    NOMEARQUIVO           VARCHAR(100),
    CIENCIA_OPERACAO      VARCHAR(1),
    CONFIRMACAO_OPERACAO  VARCHAR(1),
    DESC_OPERACAO         VARCHAR(1),
    OPERACAO_N_REALIZADA  VARCHAR(1),
    SITUACAO_NOTA         VARCHAR(30),
    CNPJ                  VARCHAR(20),
    TMP                   VARCHAR(1)
);

CREATE TABLE MATERIA_PRIMA (
    IDFILIAL          DM_SMALLINT NOT NULL,
    IDMATERIA_PRIMA   DM_INTEGER NOT NULL,
    DESCRICAO         DM_NOME,
    CUSTO             NUMERIC(14,2),
    ESTOQUE_ATUAL     NUMERIC(10,2) DEFAULT 0,
    CONTROLA_ESTOQUE  VARCHAR(1)
);

CREATE TABLE MDEFE_LOCAL_CARREGAMENTO (
    IDFILIAL  INTEGER NOT NULL,
    IDPEDIDO  INTEGER NOT NULL,
    IDCIDADE  INTEGER NOT NULL
);

CREATE TABLE MDEFE_LOCAL_DESCARREGAMENTO (
    IDFILIAL  INTEGER NOT NULL,
    IDPEDIDO  INTEGER NOT NULL,
    IDCIDADE  INTEGER NOT NULL
);

CREATE TABLE MDFE (
    IDFILIAL                    INTEGER NOT NULL,
    IDPEDIDO                    INTEGER NOT NULL,
    IDMDFE                      INTEGER,
    CONDUTOR                    VARCHAR(65),
    CPF_CONDUTOR                DM_CPF,
    VEI_TRACAO_UF               VARCHAR(2),
    VEI_TRACAO_TIPO_CARROCERIA  VARCHAR(60),
    VEI_TRACAO_TIPO_RODADO      VARCHAR(60),
    VEI_TRACAO_PLACA            VARCHAR(9),
    VEI_TRACAO_TARA             INTEGER,
    VEI_TRACAO_RENAVAM          INTEGER,
    VEI_TRACAO_CAP_M3           INTEGER,
    VEI_TRACAO_KG               INTEGER,
    OBSERVACAO_FISCO            BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    OBSERVACAO_CONTRIBUINTE     BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    TIPO_EMITENTE               VARCHAR(40),
    ENVIADA                     VARCHAR(1),
    NOMEARQUIVO                 VARCHAR(80),
    DATA_MDFE                   DATE,
    MOTIVO                      VARCHAR(100),
    VALOR_DA_MERCADORA          NUMERIC(16,2),
    CODIGO_MEDIDA               VARCHAR(3),
    PESO_BRUTO_TOTAL            NUMERIC(16,2),
    RNTRC                       VARCHAR(40),
    CIOT                        VARCHAR(40),
    IDROMANEIO                  INTEGER,
    CPF_CONDUTOR_2              VARCHAR(14),
    CONDUTOR_2                  VARCHAR(65),
    CPF_CONDUTOR_3              VARCHAR(14),
    CONDUTOR_3                  VARCHAR(65)
);

CREATE TABLE MDFE_DOCUMENTO (
    IDFILIAL  INTEGER NOT NULL,
    IDPEDIDO  INTEGER NOT NULL,
    CHAVE     VARCHAR(85) NOT NULL,
    TIPO      VARCHAR(5) NOT NULL,
    IDCIDADE  INTEGER NOT NULL
);

CREATE TABLE MENSAGEM_PALM (
    IDFILIAL                 SMALLINT NOT NULL,
    IDREPRESENTANTE_ORIGEM   SMALLINT NOT NULL,
    IDREPRESENTANTE_DESTINO  SMALLINT,
    OPERACAO                 CHAR(1),
    DATA                     DATE NOT NULL,
    HORA                     TIME NOT NULL,
    ASSUNTO                  VARCHAR(30),
    MENSAGEM                 VARCHAR(255),
    ENVIAR_TODOS             CHAR(1)
);

CREATE TABLE MESA (
    IDFILIAL      DM_SMALLINT NOT NULL,
    IDMESA        DM_INTEGER NOT NULL,
    DESCRICAO     VARCHAR(20),
    TOTALPEDIDO   NUMERIC(14,2),
    IDPEDIDO_TMP  INTEGER,
    OBS1          VARCHAR(60),
    OBS2          VARCHAR(60)
);

CREATE TABLE MOVTO_SUPERVISOR (
    IDFILIAL            SMALLINT NOT NULL,
    IDMOVTO_SUPERVISOR  INTEGER NOT NULL,
    IDSUPERVISOR        SMALLINT NOT NULL,
    DATA_MOVTO          DATE,
    IDREPRESENTANTE     SMALLINT,
    IDCLIENTE           INTEGER,
    IDPRODUTO           INTEGER,
    VALOR_MOVTO         NUMERIC(12,2),
    TIPO_OPERACAO       VARCHAR(1),
    IDPEDIDO            INTEGER,
    IDFOLHA             SMALLINT
);

CREATE TABLE MOVTOCAIXA (
    IDFILIAL              DM_SMALLINT,
    IDMOVTOCAIXA          DM_INTEGER,
    IDCAIXA               DM_SMALLINT,
    DESCRICAOHISTORICO    VARCHAR(50),
    COMPLEMENTOHISTORICO  VARCHAR(60),
    TIPOOPERACAO          CHAR(1),
    VALORMOVTO            NUMERIC(16,2),
    DTMOVIMENTO           DATE,
    DTEMISSAO             DATE,
    IDCENTROCUSTO         DM_SMALLINT,
    SITUACAOREGISTRO      CHAR(1),
    DOCUMENTO             VARCHAR(20),
    IDPEDIDO              INTEGER,
    COMPENSADO            VARCHAR(1),
    IDOBRAS               INTEGER
);

CREATE TABLE MOVTOFUNCIONARIO (
    IDFILIAL       DM_SMALLINT,
    IDCONTROLE     DM_INTEGER,
    IDFUNCIONARIO  DM_SMALLINT,
    DTMOVIMENTO    DATE,
    VALOR          NUMERIC(15,2),
    HISTORICO      VARCHAR(60),
    TIPOOPERACAO   CHAR(1),
    IDHISTORICO    INTEGER,
    IDMOVTOCAIXA   INTEGER
);

CREATE TABLE NOTA (
    IDFILIAL                    DM_SMALLINT,
    IDNOTA                      DM_INTEGER,
    TIPONOTA                    VARCHAR(5) DEFAULT 'NF' NOT NULL,
    SERIE                       SMALLINT NOT NULL,
    IDPEDIDO                    DM_INTEGER,
    IDFOLHA                     DM_SMALLINT,
    DATANOTA                    DATE,
    DATADIGITACAO               DATE,
    IDCFOP                      DM_SMALLINT,
    IDCLIENTE                   DM_INTEGER,
    IDCONDICAOPAGTO             DM_SMALLINT,
    IDFORMAPAGTO                DM_SMALLINT,
    IDREPRESENTANTE             DM_SMALLINT,
    IDCENTROCUSTO               DM_SMALLINT,
    TOTALCUSTO                  NUMERIC(16,2),
    TOTALPRODUTO                NUMERIC(16,2),
    TOTALDESCONTO               NUMERIC(16,2),
    TOTALPEDIDO                 NUMERIC(16,2),
    TOTALCOMISSAO               NUMERIC(16,2),
    SITUACAOPEDIDO              CHAR(1),
    IDTABELAPRECO               DM_SMALLINT,
    SITUACAONOTA                VARCHAR(1),
    OBS1                        VARCHAR(60),
    OBS2                        VARCHAR(60),
    TAXADESCONTO                NUMERIC(10,2) DEFAULT 0,
    ICMS                        NUMERIC(10,2),
    ALIQUOTA_REDUZIDA           VARCHAR(1),
    TIPO_NOTA                   VARCHAR(1),
    ENTREGARPEDIDO              VARCHAR(1),
    NOME_TRANSPORTADORA         VARCHAR(40),
    INSCR_TRANSPORTADORA        VARCHAR(15),
    ENDERECO_TRANSPORTADORA     VARCHAR(40),
    CNPJ_TRANSPORTADORA         VARCHAR(18),
    UF_TRANSPORTADORA           VARCHAR(2),
    MUNICIPIO_TRANSPORTADORA    VARCHAR(30),
    PLACA_VEICULO               VARCHAR(8),
    UF_VEICULO                  VARCHAR(2),
    NOME_ARQ_ELETRONICO         VARCHAR(120),
    JUSTIFICATIVA_CANCELAMENTO  VARCHAR(40),
    TAXA_FUNRURAL               NUMERIC(10,2),
    N_SERIE_IMP                 VARCHAR(15),
    OBS3                        VARCHAR(60),
    OBS4                        VARCHAR(60),
    PROTOCOLO                   VARCHAR(100),
    DPEC                        VARCHAR(1),
    INF_COMPLEMENTARES          VARCHAR(400),
    TIPO_OPERACAO               VARCHAR(1),
    TIPO_PAGAMENTO              VARCHAR(1),
    TIPO_FRETE                  VARCHAR(1),
    OUTRAS_DESPESA_ACESSORIO    NUMERIC(14,2),
    VALOR_PIS                   NUMERIC(15,2),
    VALOR_CONFINS               NUMERIC(15,2),
    VALOR_IPI                   NUMERIC(15,2),
    DATAPEDIDO                  DATE,
    NFE_QUANTIDADE              NUMERIC(13,3),
    NFE_ESPECIE                 VARCHAR(15),
    NFE_MARCA                   VARCHAR(15),
    PED_QUANTIDADE              NUMERIC(13,3),
    PED_ESPECIE                 VARCHAR(15),
    PED_MARCA                   VARCHAR(15),
    USADO                       VARCHAR(1),
    TOTAL_FRETE                 NUMERIC(16,2),
    KIT                         VARCHAR(1),
    OBS_EXTENSO                 BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    TIPO_NOTA_COMP_NORMAL       VARCHAR(12),
    CHAVE_ACESSO_ORIGINAL       VARCHAR(60),
    VALOR_BASE_ST               NUMERIC(16,2),
    VALOR_ICMS_ST               NUMERIC(16,2),
    VALOR_BASE                  NUMERIC(16,2),
    VALOR_ICMS                  NUMERIC(16,2),
    PESO_LIQUIDO                NUMERIC(16,3),
    PESO_BRUTO                  NUMERIC(16,3)
);

CREATE TABLE NOTA_COMPLEMENTAR (
    IDFILIAL         DM_SMALLINT,
    IDPEDIDO         DM_INTEGER NOT NULL,
    DATAPEDIDO       DATE,
    DATADIGITACAO    DATE DEFAULT current_date,
    IDCFOP           DM_SMALLINT,
    IDCLIENTE        DM_INTEGER,
    IDCONDICAOPAGTO  DM_SMALLINT,
    IDFORMAPAGTO     DM_SMALLINT,
    IDREPRESENTANTE  DM_SMALLINT,
    IDCENTROCUSTO    DM_SMALLINT,
    NOTAFISCAL       INTEGER,
    DATANOTAFISCAL   DATE,
    TOTALCUSTO       NUMERIC(16,2),
    TOTALPRODUTO     NUMERIC(16,2),
    TOTALDESCONTO    NUMERIC(16,2),
    TOTALPEDIDO      NUMERIC(16,2),
    IDTABELAPRECO    DM_SMALLINT,
    OBS01            VARCHAR(60),
    OBS02            VARCHAR(60),
    LOTE_NFE         VARCHAR(1),
    VALIDADAS        VARCHAR(1),
    NFE_ENVIADA      VARCHAR(1),
    NFE_IMPRESSA     VARCHAR(1),
    NFE_MOTIVO       VARCHAR(60),
    TOTAL_BASE       NUMERIC(15,2),
    TOTAL_ICMS       NUMERIC(15,2),
    NOME_ARQUIVO     VARCHAR(120),
    PROTOCOLO        VARCHAR(100)
);

CREATE TABLE NOTA_REFERENCIADAS (
    IDFILIAL      SMALLINT NOT NULL,
    IDPEDIDO      INTEGER NOT NULL,
    IDNOTA        INTEGER NOT NULL,
    CHAVE_ACESSO  VARCHAR(45) NOT NULL
);

CREATE TABLE OBRA (
    IDFILIAL   SMALLINT NOT NULL,
    IDOBRA     SMALLINT NOT NULL,
    DESCRICAO  VARCHAR(40),
    CONCLUIDO  VARCHAR(1)
);

CREATE TABLE ORCAMENTO (
    IDFILIAL           SMALLINT NOT NULL,
    IDVENDA            INTEGER NOT NULL,
    IDCLIENTE          INTEGER NOT NULL,
    IDREPRESENTANTE    SMALLINT,
    IDCOND_PAGTO       SMALLINT,
    IDCFOP             SMALLINT,
    IDCONTA            INTEGER,
    DATA_VENDA         DATE,
    IDFORMAPAGTO       SMALLINT,
    TOTAL_PRODUTO      NUMERIC(12,2),
    TOTAL_DESCONTO     NUMERIC(12,2),
    TOTAL_LIQUIDO      NUMERIC(12,2),
    TAXA_COMISSAO      NUMERIC(6,2),
    NUMPARCELA         SMALLINT,
    PRAZO              SMALLINT,
    OBS01              VARCHAR(60),
    OBS02              VARCHAR(60),
    PARCELAENTRADA     SMALLINT DEFAULT 0,
    N_SERIE_IMP        VARCHAR(15),
    NUMERO_CUPOM       VARCHAR(6),
    CONSIGNACAO        VARCHAR(1),
    IDTABELA           DM_SMALLINT,
    IDDEPOSITO         SMALLINT,
    IDCAIXA            INTEGER,
    IDMOVTOCAIXA       INTEGER,
    CONFIRMA_PAGTO     VARCHAR(1),
    VALOR_ENTRADA      NUMERIC(12,2),
    SITUACAO_PAGTO     VARCHAR(1),
    TOTAL_TROCA        NUMERIC(12,2),
    EH_TROCA           VARCHAR(1),
    IDHISTORICO        INTEGER,
    TOTAL_VALOR_GERAL  NUMERIC(12,2)
);

CREATE TABLE ORCAMENTO_PDV (
    IDFILIAL            DM_SMALLINT,
    IDPEDIDO            DM_INTEGER NOT NULL,
    IDFOLHA             DM_SMALLINT,
    IDPEDIDOPALM        INTEGER,
    DATAPEDIDO          DATE,
    DATADIGITACAO       DATE,
    IDCFOP              DM_SMALLINT,
    IDCLIENTE           DM_INTEGER,
    IDCONDICAOPAGTO     DM_SMALLINT,
    IDFORMAPAGTO        DM_SMALLINT,
    IDREPRESENTANTE     DM_SMALLINT,
    IDCENTROCUSTO       DM_SMALLINT,
    NOTAFISCAL          INTEGER,
    DATANOTAFISCAL      DATE,
    TOTALCUSTO          NUMERIC(16,2),
    TOTALPRODUTO        NUMERIC(16,2),
    TOTALDESCONTO       NUMERIC(16,2),
    TOTALPEDIDO         NUMERIC(16,2),
    PARCELA             SMALLINT,
    TOTALCOMISSAO       NUMERIC(16,4) DEFAULT 0,
    ENTREGARPEDIDO      CHAR(1),
    SITUACAOPEDIDO      CHAR(1),
    IDTABELAPRECO       DM_SMALLINT,
    OBS01               VARCHAR(60),
    OBS02               VARCHAR(60),
    DTIMPORT            DATE,
    ARQUIVO_PALM        VARCHAR(60),
    TAXADESCONTO        NUMERIC(10,2) DEFAULT 0,
    IDCOBRANCA          SMALLINT,
    SITUACAOROMANEIO    CHAR(1),
    IDROMANEIO          INTEGER,
    SUBSTITUICAO        CHAR(1),
    IDPEDIDO_SAOBENTO   VARCHAR(10),
    TIPO_PEDIDO         CHAR(1),
    CLIENTE_BALCAO      CHAR(1),
    OLD_SITUACAOPEDIDO  CHAR(1),
    SIT_INVENTARIO      VARCHAR(1),
    NUMERO_CUPOM        VARCHAR(6),
    N_SERIE_IMP         VARCHAR(15),
    LANCHONETE          VARCHAR(1),
    IDCONSIGNACAO       INTEGER,
    ENVIADO_PALM        VARCHAR(1),
    ITENS_CUPOM         BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    VALOR_F1            NUMERIC(10,2),
    VALOR_F2            NUMERIC(10,2),
    VALOR_F3            NUMERIC(10,2),
    VALOR_F4            NUMERIC(10,2),
    VALOR_F5            NUMERIC(10,2),
    VALOR_F6            NUMERIC(10,2),
    VALOR_F7            NUMERIC(10,2),
    VALOR_F8            NUMERIC(10,2),
    VALOR_F9            NUMERIC(10,2),
    ORCAMENTO_VENDA     VARCHAR(1),
    TIPONOTA            VARCHAR(5),
    TIPOPEDIDO_PALM     VARCHAR(1),
    VENDA_IMPRESSA      VARCHAR(1),
    IDOBRAS             SMALLINT,
    TOTALDIGITADO       NUMERIC(14,2),
    LOTE_NFE            VARCHAR(1),
    VALIDADAS           VARCHAR(1),
    NFE_ENVIADA         VARCHAR(1),
    NFE_IMPRESSA        VARCHAR(1),
    NFE_MOTIVO          VARCHAR(60),
    TAXA_FUNRURAL       NUMERIC(10,2),
    COO                 INTEGER,
    TIPO_PVD            VARCHAR(3)
);

CREATE TABLE ORDEM (
    IDFILIAL             DM_SMALLINT NOT NULL,
    IDORDEM              DM_INTEGER NOT NULL,
    DATAORDEM            DATE,
    IDPLACA              VARCHAR(8) NOT NULL,
    KM_SAIDA             NUMERIC(10,1),
    KM_CHEGADA           NUMERIC(10,1),
    NATURAZA_DA_CARGA    VARCHAR(15),
    QUANTIDADE           NUMERIC(10,1),
    ESPECIE              VARCHAR(5),
    PESO                 NUMERIC(10,3),
    NOTA_FISCAL          INTEGER,
    VALOR_DA_MERCADORIA  NUMERIC(14,2),
    FRETE_VALOR          NUMERIC(14,2),
    PEDAGIO              NUMERIC(14,2),
    TOTAL_PRESTACAO      NUMERIC(14,2),
    BASE_DE_CALCULO      NUMERIC(14,2),
    ALIQUOTA             NUMERIC(10,2),
    ICMS                 NUMERIC(14,2),
    OBSERVACAO           VARCHAR(255),
    MOTORISTA            DM_NOME,
    N_CONHECIMENTO       INTEGER,
    F_ORDEM              VARCHAR(1),
    IDCLIENTE_ORIGEM     DM_INTEGER,
    IDCLIENTE_DESTINO    DM_INTEGER,
    TAXA_COMISSAO        NUMERIC(10,2),
    FRETE                VARCHAR(1)
);

CREATE TABLE ORDEM_REQUISICAO (
    IDFILIAL          DM_SMALLINT NOT NULL,
    IDORDEM           DM_INTEGER NOT NULL,
    IDREQUISICAO      DM_INTEGER NOT NULL,
    IDSERVICO         DM_INTEGER,
    ABASTECIMENTO     NUMERIC(14,3),
    KM_ABASTECIMENTO  NUMERIC(10,1),
    VALOR_REQUISICAO  NUMERIC(14,2),
    OBSERVACAO        VARCHAR(60)
);

CREATE TABLE OS (
    IDFILIAL         SMALLINT NOT NULL,
    IDOS             INTEGER NOT NULL,
    DATA_OS          DATE,
    HORA_OS          TIME,
    SITUACAO_OS      VARCHAR(1),
    IDFORMAPAGTO     SMALLINT,
    IDCONDICAOPAGTO  SMALLINT,
    IDCLIENTE        INTEGER,
    IDCENTROCUSTO    SMALLINT,
    IDREPRESENTANTE  SMALLINT,
    IDPLACA          VARCHAR(8),
    IDTABELAPRECO    SMALLINT,
    TOTAL_PECAS      DOUBLE PRECISION,
    TOTAL_MAOOBRA    DOUBLE PRECISION,
    TOTAL_OS         DOUBLE PRECISION,
    PARCELA          SMALLINT,
    OBSERVACAO       BLOB SUB_TYPE 1 SEGMENT SIZE 8192
);

CREATE TABLE OS_MAOOBRA (
    IDFILIAL           SMALLINT NOT NULL,
    IDOS               INTEGER NOT NULL,
    IDITEM             SMALLINT NOT NULL,
    DESCRICAO_MAOOBRA  VARCHAR(80),
    PRECO_UNITARIO     DOUBLE PRECISION
);

CREATE TABLE OS_PECAS (
    IDFILIAL        SMALLINT NOT NULL,
    IDOS            INTEGER NOT NULL,
    IDITEM          SMALLINT NOT NULL,
    IDPRODUTO       INTEGER,
    QTDE            NUMERIC(13,3),
    PRECO_UNITARIO  DOUBLE PRECISION,
    PRECO_TOTAL     DOUBLE PRECISION
);

CREATE TABLE PAGAR (
    IDFILIAL              DM_SMALLINT,
    IDFORNECEDOR          DM_INTEGER,
    IDPAGAR               DM_INTEGER,
    IDORDEM               DM_SMALLINT,
    IDPARCIAL             DM_SMALLINT DEFAULT 1,
    DATAEMISSAO           DATE,
    DATAVENCIMENTO        DATE,
    DATAPAGAMENTO         DATE,
    VALORDOCUMENTO        NUMERIC(16,2),
    VALORJUROS            NUMERIC(16,2),
    VALORPAGAMENTO        NUMERIC(16,2),
    IDCENTROCUSTO         SMALLINT,
    IDMOVTOCAIXA          INTEGER,
    COMPLEMENTOHISTORICO  VARCHAR(50),
    IDFORMAPAGTO          SMALLINT,
    IDCAIXA               SMALLINT,
    IDENTRADA             INTEGER,
    DOCUMENTO             VARCHAR(15),
    SITUACAOREGISTRO      CHAR(1),
    IDMOVTOFUNCIONARIO    INTEGER,
    DTDIGITACAO_01        DATE,
    DTDIGITACAO_02        DATE,
    IDOBRAS               SMALLINT,
    PARCELA               VARCHAR(15),
    F_PARCIAL             VARCHAR(1)
);

CREATE TABLE PAGTOCLIENTE (
    IDFILIAL      DM_SMALLINT,
    IDCLIENTE     DM_INTEGER NOT NULL,
    IDFORMAPAGTO  DM_SMALLINT,
    FLAG          CHAR(1),
    PAGTO_NOVO    VARCHAR(1)
);

CREATE TABLE PAIS (
    IDPAIS     SMALLINT NOT NULL,
    DESCRICAO  VARCHAR(45) NOT NULL,
    COD_PAIS   INTEGER NOT NULL
);

CREATE TABLE PARAMETRO (
    IDFILIAL           DM_SMALLINT,
    IDDESCRICAO        VARCHAR(20),
    TAMANHOPAGINA      NUMERIC(10,3),
    OBSERVACAO1        VARCHAR(60) COLLATE PT_PT,
    OBSERVACAO2        VARCHAR(60) COLLATE PT_PT,
    TIPOIMPRESSAO      SMALLINT,
    SITUACAOIMPRESSAO  SMALLINT,
    TIPOPARAMETRO      CHAR(25) CHARACTER SET NONE,
    LARGURAPAGINA      NUMERIC(10,2)
);

CREATE TABLE PEDIDO (
    IDFILIAL                  DM_SMALLINT,
    IDPEDIDO                  DM_INTEGER NOT NULL,
    IDFOLHA                   DM_SMALLINT,
    IDPEDIDOPALM              INTEGER,
    DATAPEDIDO                DATE,
    DATADIGITACAO             DATE,
    IDCFOP                    DM_SMALLINT,
    IDCLIENTE                 DM_INTEGER,
    IDCONDICAOPAGTO           DM_SMALLINT,
    IDFORMAPAGTO              DM_SMALLINT,
    IDREPRESENTANTE           DM_SMALLINT,
    IDCENTROCUSTO             DM_SMALLINT,
    NOTAFISCAL                INTEGER,
    DATANOTAFISCAL            DATE,
    TOTALCUSTO                NUMERIC(16,2),
    TOTALPRODUTO              NUMERIC(16,2),
    TOTALDESCONTO             NUMERIC(16,2),
    TOTALPEDIDO               NUMERIC(16,2),
    PARCELA                   SMALLINT,
    TOTALCOMISSAO             NUMERIC(16,4) DEFAULT 0,
    ENTREGARPEDIDO            CHAR(1),
    SITUACAOPEDIDO            CHAR(1),
    IDTABELAPRECO             DM_SMALLINT,
    OBS01                     VARCHAR(60),
    OBS02                     VARCHAR(60),
    DTIMPORT                  DATE,
    ARQUIVO_PALM              VARCHAR(60),
    TAXADESCONTO              NUMERIC(10,2) DEFAULT 0,
    IDCOBRANCA                SMALLINT,
    SITUACAOROMANEIO          CHAR(1),
    IDROMANEIO                INTEGER,
    SUBSTITUICAO              CHAR(1),
    IDPEDIDO_SAOBENTO         VARCHAR(10),
    TIPO_PEDIDO               CHAR(1),
    CLIENTE_BALCAO            CHAR(1),
    OLD_SITUACAOPEDIDO        CHAR(1),
    SIT_INVENTARIO            VARCHAR(1),
    NUMERO_CUPOM              VARCHAR(6),
    N_SERIE_IMP               VARCHAR(15),
    LANCHONETE                VARCHAR(1),
    IDCONSIGNACAO             INTEGER,
    ENVIADO_PALM              VARCHAR(1),
    ITENS_CUPOM               BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    VALOR_F1                  NUMERIC(10,2),
    VALOR_F2                  NUMERIC(10,2),
    VALOR_F3                  NUMERIC(10,2),
    VALOR_F4                  NUMERIC(10,2),
    VALOR_F5                  NUMERIC(10,2),
    VALOR_F6                  NUMERIC(10,2),
    VALOR_F7                  NUMERIC(10,2),
    VALOR_F8                  NUMERIC(10,2),
    VALOR_F9                  NUMERIC(10,2),
    ORCAMENTO_VENDA           VARCHAR(1),
    TIPONOTA                  VARCHAR(5),
    TIPOPEDIDO_PALM           VARCHAR(1),
    VENDA_IMPRESSA            VARCHAR(1),
    IDOBRAS                   SMALLINT,
    TOTALDIGITADO             NUMERIC(14,2),
    LOTE_NFE                  VARCHAR(1),
    VALIDADAS                 VARCHAR(1),
    NFE_ENVIADA               VARCHAR(1),
    NFE_IMPRESSA              VARCHAR(1),
    NFE_MOTIVO                VARCHAR(60),
    TAXA_FUNRURAL             NUMERIC(10,2),
    COO                       INTEGER,
    TIPO_PVD                  VARCHAR(3),
    OBS03                     VARCHAR(60),
    OBS04                     VARCHAR(60),
    IDMOVTO_SUPERVISOR        INTEGER,
    COBRANCA_CTS              INTEGER,
    ENTREGA                   INTEGER,
    TRANSFORMA_VENDA          VARCHAR(1),
    PODE_TRANSFORMA_VENDA     VARCHAR(1),
    PRODUTO_EST_NEGATIVO      VARCHAR(1),
    OUTRAS_DESPESA_ACESSORIO  NUMERIC(14,2),
    VALOR_PIS                 NUMERIC(15,2),
    VALOR_CONFINS             NUMERIC(15,2),
    VALOR_IPI                 NUMERIC(15,2),
    PED_QUANTIDADE            NUMERIC(13,3),
    PED_ESPECIE               VARCHAR(15),
    PED_MARCA                 VARCHAR(15),
    SERIE                     SMALLINT,
    NOMEUSUARIO               VARCHAR(25),
    ATUALIZA_DADOS            VARCHAR(1),
    USUARIO_IMPRIMIU          SMALLINT,
    IDPDV                     INTEGER,
    TOTAL_FRETE               NUMERIC(16,2),
    ANDROID                   VARCHAR(1),
    ANDROID_JA_ENVIOU         VARCHAR(1),
    OBS_EXTENSO               BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    SIT_PEDIDO_MOBILE         VARCHAR(1),
    ENVIAR_BOLETO_NOVAMENTE   VARCHAR(1),
    TIPO_NOTA                 VARCHAR(12),
    CHAVE_ACESSO_ORIGINAL     VARCHAR(60),
    IDVEICULO_CLIENTE         VARCHAR(8),
    TOTAL_MAOOBRA             NUMERIC(15,2),
    SITUACAO_ABERTO_FECHADO   VARCHAR(1),
    VALOR_BASE_ST             NUMERIC(16,2),
    VALOR_ICMS_ST             NUMERIC(16,2),
    VALOR_BASE                NUMERIC(16,2),
    VALOR_ICMS                NUMERIC(16,2),
    LOCAL_FTP                 VARCHAR(60),
    NOME_ARQUIVO_FTP          VARCHAR(40),
    NOME_ARQUIVO_XML          VARCHAR(40),
    PESO_LIQUIDO              NUMERIC(16,3),
    PESO_BRUTO                NUMERIC(16,3),
    DATA_HORA_INCLUSAO        TIMESTAMP,
    OBSERVACAO                BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    PRAZO_ANDROID             SMALLINT,
    TOTAL_CUSTO_ENCARGOS      NUMERIC(16,2)
);

CREATE TABLE PEDIDO_MAOOBRA (
    IDFILIAL           SMALLINT NOT NULL,
    IDPEDIDO           INTEGER NOT NULL,
    IDFOLHA            SMALLINT NOT NULL,
    IDITEM             SMALLINT NOT NULL,
    DESCRICAO_MAOOBRA  VARCHAR(80),
    PRECO_UNITARIO     DOUBLE PRECISION
);

CREATE TABLE PEDIDO_STATUS (
    IDFILIAL         SMALLINT,
    IDPEDIDO         INTEGER,
    IDREPRESENTANTE  INTEGER,
    STATUS           VARCHAR(1),
    MOBILE_STATUS    VARCHAR(1)
);

CREATE TABLE PEDIDOPALM (
    IDFILIAL              SMALLINT,
    IDREPRESENTANTE       SMALLINT NOT NULL,
    IDPEDIDOPALM          INTEGER NOT NULL,
    IDPEDIDO              INTEGER,
    CNPJ                  CHAR(18),
    IDPEDIDOCLIENTE       VARCHAR(20),
    DTEMISSAO             DATE,
    HREMISSAO             TIME,
    DESCONTO1             NUMERIC(10,2),
    DESCONTO2             NUMERIC(10,2),
    DESCONTO3             NUMERIC(10,2),
    DESCONTO4             NUMERIC(10,2),
    IDFORMAPAGTO          SMALLINT,
    NATOPERACAO           CHAR(5),
    SITPEDIDO             CHAR(1),
    IDPORTADOR            SMALLINT,
    IDCONDICAOPAGTO       SMALLINT,
    IDTRANSPORTADORA      SMALLINT,
    DTENTREGA             DATE,
    IDTABELAPRECO         INTEGER,
    OBSERVACAO            VARCHAR(255),
    IDCLIENTE             INTEGER,
    DATAPEDIDO            DATE,
    OBS1                  VARCHAR(60),
    OBS2                  VARCHAR(60),
    TOTAL_PEDIDO          NUMERIC(16,2),
    TOTAL_DESCONTO        NUMERIC(14,2),
    TOTAL_COM_DECONTO     NUMERIC(16,2),
    NRSERIE               VARCHAR(15),
    PARCELA               SMALLINT,
    IDCONSIGNACAO         INTEGER,
    PEDIDO_INCOSISTENTE   VARCHAR(1),
    RETRANSMITIR          VARCHAR(1),
    NMRAZAO               VARCHAR(60),
    NMFANTASIA            VARCHAR(60),
    ENDERECO              VARCHAR(40),
    CEP                   VARCHAR(9),
    BAIRRO                VARCHAR(25),
    IDCIDADE              SMALLINT,
    TIPOCLIENTE           VARCHAR(1),
    IE                    VARCHAR(20),
    CPF                   VARCHAR(14),
    RG                    VARCHAR(18),
    FONE                  VARCHAR(13),
    FAX                   VARCHAR(13),
    CELULAR               VARCHAR(13),
    EMAIL                 VARCHAR(150),
    ALTERADO              VARCHAR(1),
    IDATIVIDADE           SMALLINT,
    IDCONVENIO            SMALLINT,
    IDREGIAO              SMALLINT,
    CONTRIBUINTE          VARCHAR(1),
    CLIENTE_CONTRIBUINTE  VARCHAR(1),
    OBS_EXTENSO           BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    PRAZO                 SMALLINT
);

CREATE TABLE PEDIDOPALM_AUX (
    IDFILIAL              SMALLINT,
    IDREPRESENTANTE       SMALLINT NOT NULL,
    IDPEDIDOPALM          INTEGER NOT NULL,
    IDPEDIDO              INTEGER,
    CNPJ                  CHAR(18),
    IDPEDIDOCLIENTE       VARCHAR(20),
    DTEMISSAO             DATE,
    HREMISSAO             TIME,
    DESCONTO1             NUMERIC(10,2),
    DESCONTO2             NUMERIC(10,2),
    DESCONTO3             NUMERIC(10,2),
    DESCONTO4             NUMERIC(10,2),
    IDFORMAPAGTO          SMALLINT,
    NATOPERACAO           CHAR(5),
    SITPEDIDO             CHAR(1),
    IDPORTADOR            SMALLINT,
    IDCONDICAOPAGTO       SMALLINT,
    IDTRANSPORTADORA      SMALLINT,
    DTENTREGA             DATE,
    IDTABELAPRECO         INTEGER,
    OBSERVACAO            VARCHAR(255),
    IDCLIENTE             INTEGER,
    DATAPEDIDO            DATE,
    OBS1                  VARCHAR(60),
    OBS2                  VARCHAR(60),
    TOTAL_PEDIDO          NUMERIC(16,2),
    TOTAL_DESCONTO        NUMERIC(14,2),
    TOTAL_COM_DECONTO     NUMERIC(16,2),
    NRSERIE               VARCHAR(15),
    PARCELA               SMALLINT,
    IDCONSIGNACAO         INTEGER,
    PEDIDO_INCOSISTENTE   VARCHAR(1),
    RETRANSMITIR          VARCHAR(1),
    NMRAZAO               VARCHAR(60),
    NMFANTASIA            VARCHAR(60),
    ENDERECO              VARCHAR(40),
    CEP                   VARCHAR(9),
    BAIRRO                VARCHAR(25),
    IDCIDADE              SMALLINT,
    TIPOCLIENTE           VARCHAR(1),
    IE                    VARCHAR(20),
    CPF                   VARCHAR(14),
    RG                    VARCHAR(18),
    FONE                  VARCHAR(13),
    FAX                   VARCHAR(13),
    CELULAR               VARCHAR(13),
    EMAIL                 VARCHAR(150),
    ALTERADO              VARCHAR(1),
    IDATIVIDADE           SMALLINT,
    IDCONVENIO            SMALLINT,
    IDREGIAO              SMALLINT,
    CONTRIBUINTE          VARCHAR(1),
    CLIENTE_CONTRIBUINTE  VARCHAR(1),
    OBS_EXTENSO           BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    PRAZO                 SMALLINT
);

CREATE TABLE PEDIDOS_IMPRESSO (
    IDCONTROLE   INTEGER NOT NULL,
    DATA         DATE,
    HORA         TIME,
    IDFILIAL     INTEGER,
    IDPEDIDO     INTEGER,
    IDFOLHA      INTEGER,
    IDUSUARIO    SMALLINT,
    NOMEUSUARIO  VARCHAR(40)
);

CREATE TABLE PENDENTE (
    IDFILIAL            DM_SMALLINT NOT NULL,
    IDPEDIDO            DM_INTEGER NOT NULL,
    IDFOLHA             DM_SMALLINT NOT NULL,
    DATAPEDIDO          DATE,
    DATADIGITACAO       DATE,
    IDCFOP              DM_SMALLINT NOT NULL,
    IDCLIENTE           DM_INTEGER NOT NULL,
    IDCONDICAOPAGTO     DM_SMALLINT NOT NULL,
    IDFORMAPAGTO        DM_SMALLINT NOT NULL,
    IDREPRESENTANTE     DM_SMALLINT NOT NULL,
    IDCENTROCUSTO       DM_SMALLINT NOT NULL,
    NOTAFISCAL          INTEGER,
    DATANOTAFISCAL      DATE,
    TOTALCUSTO          NUMERIC(16,2),
    TOTALPRODUTO        NUMERIC(16,2),
    TOTALDESCONTO       NUMERIC(16,2),
    TOTALPEDIDO         NUMERIC(16,2),
    PARCELA             SMALLINT,
    TOTALCOMISSAO       NUMERIC(16,4) DEFAULT 0,
    ENTREGARPEDIDO      CHAR(1),
    SITUACAOPEDIDO      CHAR(1),
    IDTABELAPRECO       DM_SMALLINT NOT NULL,
    OBS01               VARCHAR(60),
    OBS02               VARCHAR(60),
    IDPEDIDOPALM        INTEGER,
    DTIMPORT            DATE,
    ARQUIVO_PALM        VARCHAR(60),
    TAXADESCONTO        NUMERIC(10,2) DEFAULT 0,
    IDCOBRANCA          SMALLINT,
    SITUACAOROMANEIO    CHAR(1),
    IDROMANEIO          INTEGER,
    SUBSTITUICAO        CHAR(1),
    IDPEDIDO_SAOBENTO   VARCHAR(10),
    TIPO_PEDIDO         CHAR(1),
    CLIENTE_BALCAO      CHAR(1),
    OLD_SITUACAOPEDIDO  CHAR(1),
    SIT_INVENTARIO      VARCHAR(1),
    NUMERO_CUPOM        VARCHAR(6),
    N_SERIE_IMP         VARCHAR(15),
    LANCHONETE          VARCHAR(1),
    IDCONSIGNACAO       INTEGER
);

CREATE TABLE PERCURSO (
    IDPEDIDO  INTEGER NOT NULL,
    UF        VARCHAR(2) NOT NULL,
    IDFILIAL  INTEGER NOT NULL
);

CREATE TABLE PERMISSOES (
    IDPROCEDIMENTO     VARCHAR(20) NOT NULL,
    DESCRICAO          VARCHAR(60) NOT NULL,
    IDUSUARIO          DM_SMALLINT,
    USERNAME           DM_USER,
    USR_INSERT         CHAR(1),
    USR_ALTERAR        CHAR(1),
    USR_DELETE         CHAR(1),
    USR_ITENS_INSERT   CHAR(1),
    USR_ITENS_ALTERAR  CHAR(1),
    USR_ITENS_DELETE   CHAR(1)
);

CREATE TABLE PROCEDIMENTO (
    IDPROCEDIMENTO  VARCHAR(20) NOT NULL,
    DESCRICAO       VARCHAR(60) NOT NULL,
    USERNAME        DM_USER
);

CREATE TABLE PRODUCAO (
    IDFILIAL       SMALLINT NOT NULL,
    IDCONTROLE     INTEGER NOT NULL,
    DATA           DATE,
    IDRECEITA      INTEGER NOT NULL,
    IDPRODUTO      INTEGER NOT NULL,
    QTDE_PRODUZIR  NUMERIC(10,3),
    QTDE_RECEITA   NUMERIC(10,3),
    PRECO          NUMERIC(15,2)
);

CREATE TABLE PRODUCAO_CESTA (
    ID_FILIAL        SMALLINT NOT NULL,
    ID_PRODUCAO      INTEGER NOT NULL,
    DATA_PRODUCAO    DATE,
    ID_CESTA         INTEGER,
    QTDE_ENTRADA     INTEGER,
    QTDE_SAIDA       INTEGER,
    ID_DEPOSITO      SMALLINT,
    STATUS_PRODUCAO  VARCHAR(15)
);

CREATE TABLE PRODUCAO_CESTA_ITEM (
    ID_FILIAL        SMALLINT NOT NULL,
    ID_PRODUCAO      INTEGER NOT NULL,
    ID_CONTADOR      SMALLINT NOT NULL,
    ID_PRODUTO       INTEGER NOT NULL,
    QTDE_PRODUTO     NUMERIC(12,3),
    CUSTO_NOTA       NUMERIC(12,2),
    CUSTO_TRIBUTADO  NUMERIC(12,2),
    PRECO_VENDA      NUMERIC(12,2),
    MARGEM           NUMERIC(6,2),
    ID_CESTA         INTEGER,
    QTDE_ESTOQUE     NUMERIC(10,3),
    QTDE_CESTA       NUMERIC(10,3)
);

CREATE TABLE PRODUTO (
    IDFILIAL                 DM_SMALLINT,
    IDPRODUTO                DM_INTEGER,
    ESPECIFICACAO            VARCHAR(60),
    SITUACAOPRODUTO          VARCHAR(1),
    FATORCONVERSAO           DM_SMALLINT,
    IDGRUPO                  DM_SMALLINT,
    IDTRIBUTO                DM_SMALLINT,
    CUSTONOTA                NUMERIC(16,2),
    CUSTOTRIBUTOS            NUMERIC(16,2),
    CUSTOSENCARGOS           NUMERIC(16,2),
    PRECOVENDA               NUMERIC(16,2),
    TAXAIPI                  NUMERIC(10,2),
    TAXAFRETE                NUMERIC(10,2),
    TAXAICMSCOMPRA           NUMERIC(10,2),
    TAXAICMSANTECIPADO       NUMERIC(10,2),
    TAXAIMPFEDERAL           NUMERIC(10,2),
    TAXAFINANCEIRA           NUMERIC(10,2),
    TAXAREMARCACAO           NUMERIC(10,4),
    TAXALUCRO                NUMERIC(10,2),
    TAXACOMISSAO             NUMERIC(10,2),
    COMISSAOBALCAO           NUMERIC(10,2),
    COMISSAOPRACA            NUMERIC(10,2),
    COMISSAOINTERIOR         NUMERIC(10,2),
    TAXAREPRESENTANTE        NUMERIC(10,2),
    PESO                     NUMERIC(10,3),
    QTDEMINIMA               NUMERIC(10,3),
    QTDEMAXIMA               NUMERIC(10,3),
    QTDEATUAL                NUMERIC(10,3),
    DTREMARCACAO             DATE,
    TAXADESPESA              NUMERIC(10,2),
    QTDEANTERIOR             NUMERIC(10,3),
    EMBALAGEM                VARCHAR(10),
    IDFORNECEDOR             DM_INTEGER,
    IDUNIDADEMEDIDA          DM_SMALLINT,
    CUSTONOTAUNIT            NUMERIC(16,4),
    CUSTOTRIBUTOSUNIT        NUMERIC(16,4),
    CUSTOSENCARGOSUNIT       NUMERIC(16,4),
    PRECOVENDAUNIT           NUMERIC(16,4),
    IDTRIBUTOCOMPRA          SMALLINT,
    TAXAOUTROS               NUMERIC(10,2),
    DTINVENTARIO             DATE,
    DESCONTOMAXIMO           NUMERIC(10,2),
    SAIR_TB_PRECO            CHAR(1),
    DTVENCIMENTO             DATE,
    DTINVENTARIO1            DATE,
    DTINVENTARIO2            DATE,
    DTINVENTARIO3            DATE,
    DTINVENTARIO4            DATE,
    DTINVENTARIO5            DATE,
    QTDEINVENTARIO1          NUMERIC(10,3),
    QTDEINVENTARIO2          NUMERIC(10,3),
    QTDEINVENTARIO3          NUMERIC(10,3),
    QTDEINVENTARIO4          NUMERIC(10,3),
    QTDEINVENTARIO5          NUMERIC(10,3),
    DTCOMPRA1                DATE,
    DTCOMPRA2                DATE,
    DTCOMPRA3                DATE,
    DTCOMPRA4                DATE,
    DTCOMPRA5                DATE,
    QTDECOMPRA1              NUMERIC(10,3),
    QTDECOMPRA2              NUMERIC(10,3),
    QTDECOMPRA3              NUMERIC(10,3),
    QTDECOMPRA4              NUMERIC(10,3),
    QTDECOMPRA5              NUMERIC(10,3),
    CUSTONOTA1               NUMERIC(16,2),
    CUSTONOTA2               NUMERIC(16,2),
    CUSTONOTA3               NUMERIC(16,2),
    CUSTONOTA4               NUMERIC(16,2),
    CUSTONOTA5               NUMERIC(16,2),
    PRECOVENDA1              NUMERIC(16,2),
    PRECOVENDA2              NUMERIC(16,2),
    PRECOVENDA3              NUMERIC(16,2),
    PRECOVENDA4              NUMERIC(16,2),
    PRECOVENDA5              NUMERIC(16,2),
    DTESTOQUE1               DATE,
    DTESTOQUE2               DATE,
    DTESTOQUE3               DATE,
    DTESTOQUE4               DATE,
    DTESTOQUE5               DATE,
    ESTOQUE1                 NUMERIC(10,3),
    ESTOQUE2                 NUMERIC(10,3),
    ESTOQUE3                 NUMERIC(10,3),
    ESTOQUE4                 NUMERIC(10,3),
    ESTOQUE5                 NUMERIC(10,3),
    TAXA_CAPITAL             NUMERIC(10,2),
    EXCLUIDO                 VARCHAR(1),
    USUARIO                  VARCHAR(15),
    CODIGO_BARRA             VARCHAR(15),
    IDSUB_GRUPO              INTEGER,
    REPLICAR                 VARCHAR(1),
    PRAZO_VALIDADE           SMALLINT,
    TECLA_PRODUTO            VARCHAR(3),
    CHAMAR_TRIGGER           VARCHAR(1),
    FOTO                     BLOB SUB_TYPE 0 SEGMENT SIZE 80,
    NOMEARQUIVO              VARCHAR(60),
    QTDE_GER                 NUMERIC(14,3),
    QTDE_CON                 NUMERIC(14,3),
    DP_ALTURA                NUMERIC(10,2),
    DP_LARGURA               NUMERIC(10,2),
    DP_COMPRIMENTO           NUMERIC(10,2),
    DC_ALTURA                NUMERIC(10,2),
    DC_LARGURA               NUMERIC(10,2),
    DC_COMPRIMENTO           NUMERIC(10,2),
    DUN                      VARCHAR(15),
    B_QTDE                   NUMERIC(10,2),
    B_ALTURA                 NUMERIC(10,2),
    B_EMPILHAMENTO           NUMERIC(10,2),
    B_VALIDADE               VARCHAR(2),
    CLASSIFICACAO_FISCAL     VARCHAR(15),
    PRECOPALTAUNIT           NUMERIC(16,4),
    PRECOPALTA               NUMERIC(16,2),
    CONSUMO                  VARCHAR(1) DEFAULT 'N',
    IDGENERO_MERCADORIA      SMALLINT,
    IDTIPOMERCADORIA         SMALLINT,
    IDTRIBUTO_IPI            SMALLINT,
    IDTRIBUTO_COFINS         SMALLINT,
    IDTRIBUTO_PIS            SMALLINT,
    COMPLEMENTO_DESCRICAO    BLOB SUB_TYPE 1 SEGMENT SIZE 80,
    ESTE_PRODUTO_E_PAO       VARCHAR(1),
    PRODUTO_CAMERA_FRIA      VARCHAR(1),
    NCM_INVALIDO             VARCHAR(1),
    CEST                     VARCHAR(7),
    MVA                      NUMERIC(15,4),
    PRECOVENDA_INTERIOR      NUMERIC(16,2),
    PRECOVENDA_INTERIORUNIT  NUMERIC(16,2),
    C_CLFISCAL               VARCHAR(3),
    C_MARGEM_AGREGADA        NUMERIC(15,2),
    C_TAXA_ICMS              NUMERIC(10,2),
    C_ALIQUOTA_ST            NUMERIC(10,2),
    C_ISENTIVO               NUMERIC(15,4),
    CUSTO_COM_MVA            NUMERIC(16,2),
    CUSTONOTA_ORIGINAL       NUMERIC(15,2),
    NOME_ARQ_IMAGEM          VARCHAR(60)
);

CREATE TABLE PROMOCAO (
    IDFILIAL           SMALLINT NOT NULL,
    IDPROMOCAO         INTEGER NOT NULL,
    DATA_INI_PROMOCAO  DATE,
    DATA_FIM_PROMOCAO  DATE,
    PRORROGACAO        SMALLINT,
    SITUACAO_PROMOCAO  VARCHAR(1),
    OBSERVACAO         VARCHAR(60)
);

CREATE TABLE PROMOCAO_ITEM (
    IDFILIAL        SMALLINT NOT NULL,
    IDPROMOCAO      INTEGER NOT NULL,
    IDPRODUTO       INTEGER NOT NULL,
    PRECO_TABELA    NUMERIC(14,2),
    PRECO_PROMOCAO  NUMERIC(14,2),
    TAXA_DESCONTO   NUMERIC(10,2)
);

CREATE TABLE PROMOCAO_ITEM_TABPRECO (
    IDFILIAL       SMALLINT NOT NULL,
    IDPROMOCAO     INTEGER NOT NULL,
    IDPRODUTO      INTEGER NOT NULL,
    IDTABELAPRECO  SMALLINT NOT NULL
);

CREATE TABLE REBOQUE (
    IDFILIAL                      INTEGER NOT NULL,
    IDPEDIDO                      INTEGER NOT NULL,
    IDCONTROLE                    SMALLINT,
    REBOQ_TRACAO_UF               VARCHAR(2),
    REBOQ_TRACAO_TIPO_CARROCERIA  VARCHAR(60),
    REBOQ_TRACAO_PLACA            VARCHAR(9),
    REBOQ_TRACAO_TARA             INTEGER,
    REBOQ_TRACAO_RENAVAM          INTEGER,
    REBOQ_TRACAO_CAP_M3           INTEGER,
    REBOQ_TRACAO_KG               INTEGER
);

CREATE TABLE RECEBER (
    IDFILIAL              DM_SMALLINT,
    IDRECEBER             DM_INTEGER,
    IDFOLHA               DM_SMALLINT,
    IDORDEM               DM_SMALLINT,
    IDPARCIAL             DM_SMALLINT DEFAULT 1,
    IDCENTROCUSTO         SMALLINT,
    IDREPRESENTANTE       SMALLINT,
    IDCLIENTE             INTEGER,
    IDFORMAPAGTO          SMALLINT,
    IDCOBRANCA            SMALLINT,
    DOCUMENTO             VARCHAR(20),
    DATAEMISSAO           DATE,
    DATAVENCIMENTO        DATE,
    DATAPAGAMENTO         DATE,
    VALORDOCUMENTO        NUMERIC(16,2),
    VALORJUROS            NUMERIC(16,2),
    VALORPAGAMENTO        NUMERIC(16,2),
    IDMOVTOCAIXA          INTEGER,
    SITUACAOREGISTRO      CHAR(1),
    HISTORICO             VARCHAR(50),
    IDCAIXA               SMALLINT,
    TAXACOMISSAO          NUMERIC(10,4),
    IDROMANEIO            INTEGER,
    DTDIGITACAO           DATE,
    SIT_BALCAO            CHAR(1),
    MANDAR_BOLETO         VARCHAR(1),
    DTDIGITACAO_01        DATE,
    DTDIGITACAO_02        DATE,
    TOTALCOMISSAO         NUMERIC(12,2),
    F_PARCIAL             VARCHAR(1),
    IDOBRAS               SMALLINT,
    GB_CONVENIO           VARCHAR(10),
    GB_NOSSONUMERO        VARCHAR(20),
    GB_DIGITONOSSONUMERO  VARCHAR(3),
    GB_DATAREMESSA        DATE,
    GB_DATARETORNO        DATE,
    GB_DATABOLETO         DATE,
    GB_DATA_VENCIMENTO    DATE,
    GB_BOLETOS_AGRUPADOS  VARCHAR(1),
    GB_REMESSA            VARCHAR(1),
    GB_CODIGOBANCO        VARCHAR(4),
    GB_CODIGOAGENCIA      VARCHAR(5),
    GB_DIGITOAGENCIA      VARCHAR(2),
    GB_NUMEROCONTA        VARCHAR(15),
    GB_DIGITOCONTA        VARCHAR(2),
    NOMEARQUIVO_REMESSA   VARCHAR(40),
    IDOS                  INTEGER,
    CAMINHO_BOLETO        VARCHAR(110),
    GB_SEQUENCIAL         INTEGER,
    LINHA_DIGITAVEL       VARCHAR(100),
    NOME_ARQUIVO          VARCHAR(70)
);

CREATE TABLE RECEITA (
    IDFILIAL        DM_SMALLINT NOT NULL,
    IDCONTROLE      DM_INTEGER NOT NULL,
    DESCRICAO       DM_NOME,
    CUSTO           NUMERIC(16,2),
    DTCADASTRO      DATE,
    EXPORTAR_CUSTO  VARCHAR(1)
);

CREATE TABLE REDUZAO_Z (
    IDCONTROLE          INTEGER NOT NULL,
    NUMEROFABRICACAO    VARCHAR(20),
    MODELO              VARCHAR(20),
    CRZ                 INTEGER,
    COO                 INTEGER,
    CRO                 INTEGER,
    DATAMOVIMENTO       DATE,
    DATAEMISSAO         DATE,
    HORA_EMISSAO        TIME,
    VENDE_BRUTA_DIARIA  NUMERIC(15,2),
    MFADICIONAL         VARCHAR(1),
    NUMEROUSUARIO       SMALLINT,
    VALOR_GT            VARCHAR(25),
    COO_INICIAL         INTEGER,
    COO_FINAL           INTEGER
);

CREATE TABLE REF_NFE_PEDIDO_DEV (
    IDFILIAL  INTEGER NOT NULL,
    IDPEDIDO  INTEGER NOT NULL,
    IDFOLHA   INTEGER NOT NULL,
    CHAVE     VARCHAR(65) NOT NULL
);

CREATE TABLE REF_NOTA_PRODUTOR (
    IDFILIAL   INTEGER NOT NULL,
    IDPEDIDO   INTEGER,
    CNPJ_CPF   VARCHAR(18) NOT NULL,
    IDNOTA     INTEGER NOT NULL,
    IE         VARCHAR(16),
    DATA_NOTA  DATE,
    UF         VARCHAR(2),
    IDCOMPRA   INTEGER,
    IDFOLHA    INTEGER
);

CREATE TABLE REGIAO (
    IDFILIAL    DM_SMALLINT,
    IDREGIAO    DM_SMALLINT,
    NOME        VARCHAR(25),
    TAXAFRETE   NUMERIC(10,2),
    TIPOREGIAO  CHAR(1) CHARACTER SET NONE,
    EXCLUIDO    VARCHAR(1),
    USUARIO     VARCHAR(15)
);

CREATE TABLE REGIAO_ROMANEIO (
    IDFILIAL    DM_SMALLINT,
    IDCONTROLE  DM_INTEGER,
    IDREGIAO    DM_SMALLINT
);

CREATE TABLE REL_MOVIMENTACAO (
    IDFILIAL          INTEGER NOT NULL,
    DATA              DATE NOT NULL,
    IDCONTROLE        INTEGER NOT NULL,
    IDPEDIDO          INTEGER,
    IDFOLHA           INTEGER,
    CONTADOR_PRODUTO  INTEGER,
    IDPRODUTO         INTEGER,
    TIPO_MOVIMENTO    VARCHAR(1),
    VALORPRODUTO      NUMERIC(15,2),
    ORIGEM            VARCHAR(1)
);

CREATE TABLE REPCLIENTE (
    IDFILIAL         DM_SMALLINT NOT NULL,
    IDCLIENTE        DM_INTEGER NOT NULL,
    IDREPRESENTANTE  DM_SMALLINT NOT NULL,
    FLAG             CHAR(1),
    REP_NOVO         VARCHAR(1)
);

CREATE TABLE REPLICADOR (
    TABELA     VARCHAR(35),
    CAMPOS     VARCHAR(38),
    PROCESSAR  VARCHAR(1)
);

CREATE TABLE REPRESENTANTE (
    IDFILIAL                        DM_SMALLINT,
    IDREPRESENTANTE                 DM_SMALLINT,
    NOME                            DM_NOME,
    ENDERECO                        DM_ENDERECO,
    BAIRRO                          DM_BAIRRO,
    IDCIDADE                        DM_SMALLINT,
    CEP                             DM_CEP,
    FONE                            DM_FONE,
    EMAIL                           DM_EMAIL,
    CPF                             DM_CPF,
    RG                              DM_RG,
    CATEGORIA                       CHAR(1),
    CELULAR                         DM_FONE,
    SENHA                           VARCHAR(10),
    SITUACAO                        CHAR(1) CHARACTER SET NONE DEFAULT 'A',
    LIMITECARTEIRA                  NUMERIC(16,2),
    TAXAESPECIAL                    NUMERIC(10,2),
    TIPOCOMISSAO                    CHAR(1),
    IDCOBRANCA                      SMALLINT,
    COTAS                           NUMERIC(15,2),
    SEXO                            CHAR(1),
    DTNASCIMENTO                    DATE,
    EXCLUIDO                        VARCHAR(1),
    USUARIO                         VARCHAR(15),
    CPF_SUPERVISOR                  DM_CPF,
    CONTROLA_PRODUTO_REPRESENTANTE  VARCHAR(1),
    PATH_FTP                        VARCHAR(50),
    VENDA_PALM                      CHAR(1),
    ULTMATUALIZACAO                 VARCHAR(15),
    GERARDADOSPALM                  VARCHAR(1),
    IDPEDIDOPALM                    INTEGER,
    IDTABELAPRECO                   SMALLINT,
    IDBANCO                         SMALLINT,
    PLACA_VEICULO                   VARCHAR(10),
    SALDO_REPRESENTANTE             COMPUTED BY ((SELECT VALOR FROM SALDO_REPRESENTANTE(IDFILIAL,IDREPRESENTANTE))),
    USA_ANDROID                     VARCHAR(1)
);

CREATE TABLE REPRESENTANTE_PRODUTO (
    IDFILIAL         SMALLINT NOT NULL,
    IDCONTROLE       INTEGER NOT NULL,
    IDREPRESENTANTE  SMALLINT NOT NULL,
    IDPRODUTO        INTEGER NOT NULL,
    QTDE             NUMERIC(12,3)
);

CREATE TABLE REPRESENTANTE_ROMANEIO (
    IDFILIAL         DM_SMALLINT,
    IDCONTROLE       DM_INTEGER,
    IDREPRESENTANTE  DM_SMALLINT
);

CREATE TABLE RESERVA_CONTROLE (
    IDFILIAL    SMALLINT NOT NULL,
    IDCONTROLE  INTEGER,
    TIPO        VARCHAR(10)
);

CREATE TABLE RESERVA_IDPEDIDO (
    IDPEDIDO  INTEGER,
    IDFILIAL  SMALLINT,
    TIPO      CHAR(1)
);

CREATE TABLE ROMANEIO (
    IDFILIAL          DM_SMALLINT,
    IDCONTROLE        DM_INTEGER,
    DATAROMANEIO      DATE,
    DTINI             DATE,
    DTFIM             DATE,
    IDCOBRANCA        SMALLINT,
    SITUACAOROMANEIO  CHAR(1),
    OBSERVACAO        VARCHAR(40)
);

CREATE TABLE ROMANEIO_PRODUTO (
    IDFILIAL        DM_SMALLINT,
    IDROMANEIO      DM_INTEGER,
    IDPRODUTO       DM_INTEGER,
    QTDECAIXA       NUMERIC(16,3),
    FATORCONVERSAO  INTEGER,
    QTDE_PISTOLADA  NUMERIC(16,3),
    FECHADO         VARCHAR(1)
);

CREATE TABLE SANGRIA_SUPRIMENTO (
    IDFILIAL           INTEGER NOT NULL,
    IDCONTROLE         INTEGER NOT NULL,
    VALOR              NUMERIC(15,2),
    IDREPRESENTANTE    INTEGER,
    NOMEREPRESENTANTE  VARCHAR(60),
    IMPRESSORA         VARCHAR(15),
    TIPO               VARCHAR(10),
    DTPEDIDO           DATE,
    HORA               TIME
);

CREATE TABLE SENHA_PALM (
    IDFILIAL         INTEGER NOT NULL,
    IDCONTROLE       INTEGER NOT NULL,
    IDREPRESENTANTE  INTEGER NOT NULL,
    SENHA            VARCHAR(6) NOT NULL,
    STATUS           CHAR(1),
    IDUSUARIO        INTEGER,
    DTDEUSO          DATE
);

CREATE TABLE SEQUENCIA_VISITA (
    IDFILIAL         DM_SMALLINT,
    IDREPRESENTANTE  DM_INTEGER,
    IDCLIENTE        DM_INTEGER,
    DIA              DM_SMALLINT,
    SEQUENCIA        DM_SMALLINT
);

CREATE TABLE SKIN (
    IDSKIN  SMALLINT NOT NULL,
    ARQ     BLOB SUB_TYPE 0 SEGMENT SIZE 80
);

CREATE TABLE SPED_0100 (
    NOME      VARCHAR(100),
    CPF       VARCHAR(14) NOT NULL,
    CRC       VARCHAR(15),
    CNPJ      VARCHAR(18),
    CEP       VARCHAR(9),
    ENDERECO  VARCHAR(60),
    NUM       VARCHAR(10),
    COMPL     VARCHAR(60),
    BAIRRO    VARCHAR(60),
    FONE      VARCHAR(10),
    FAX       VARCHAR(10),
    EMAIL     VARCHAR(60),
    IDCIDADE  SMALLINT,
    COD_MUN   COMPUTED BY ((select first 1 CIDADE.ID_EXTERNO from CIDADE
  where CIDADE.IDCIDADE = IDCIDADE))
);

CREATE TABLE SPED_0150 (
    IDPARTICIPANTE  INTEGER NOT NULL,
    NOME            VARCHAR(60),
    CNPJ            VARCHAR(18),
    CPF             VARCHAR(14),
    TIPOCLIENTE     VARCHAR(1),
    INSESTADUAL     VARCHAR(20),
    ENDERECO        VARCHAR(40),
    BAIRRO          VARCHAR(25),
    ID_EXTERNO      INTEGER,
    COD_PAIS        INTEGER,
    SUFRAMA         VARCHAR(9),
    UF              VARCHAR(2)
);

CREATE TABLE SUB_ATIVIDADE (
    IDFILIAL         SMALLINT NOT NULL,
    IDSUB_ATIVIDADE  DM_INTEGER NOT NULL,
    IDATIVIDADE      SMALLINT,
    DESCRICAO        VARCHAR(35),
    USUARIO          VARCHAR(15)
);

CREATE TABLE SUB_CONVENIO (
    IDFILIAL        SMALLINT NOT NULL,
    IDSUB_CONVENIO  DM_INTEGER NOT NULL,
    IDCONVENIO      SMALLINT,
    DESCRICAO       DM_NOME
);

CREATE TABLE SUB_GRUPO (
    IDFILIAL     SMALLINT NOT NULL,
    IDSUB_GRUPO  SMALLINT NOT NULL,
    DESCRICAO    VARCHAR(30),
    IDGRUPO      SMALLINT,
    USUARIO      VARCHAR(15)
);

CREATE TABLE SUB_REGIAO (
    IDREGIAO      DM_SMALLINT NOT NULL,
    IDSUB_REGIAO  DM_SMALLINT NOT NULL,
    NOME          VARCHAR(40) NOT NULL
);

CREATE TABLE TAB_CEST (
    CEST       VARCHAR(7) NOT NULL,
    NCM        VARCHAR(8) NOT NULL,
    DESCRICAO  VARCHAR(512),
    MVA_17     NUMERIC(15,4),
    MVA_4      NUMERIC(15,4),
    MVA_7      NUMERIC(15,4),
    MVA_12     NUMERIC(15,4)
);

CREATE TABLE TABELA_AUXILIAR (
    ID           INTEGER,
    IDUSUARIO    SMALLINT,
    TABELA       VARCHAR(20),
    DATA         DATE,
    RECEBER      NUMERIC(15,2),
    PAGAR        NUMERIC(15,2),
    CHEQUE       NUMERIC(15,2),
    MES          VARCHAR(20),
    VALOR        NUMERIC(16,2),
    NOME         VARCHAR(45),
    QTDE         NUMERIC(10,3),
    FLAG         VARCHAR(1),
    IDGRUPO      INTEGER,
    QTDECLIENTE  INTEGER
);

CREATE TABLE TABELAPRECO (
    IDFILIAL             DM_SMALLINT,
    IDTABELAPRECO        DM_SMALLINT,
    DESCRICAO            VARCHAR(30),
    ABREVIATURA          VARCHAR(10),
    CLIENTEESPECIAL      CHAR(1),
    SITUACAO             CHAR(1),
    ALT_PRECO_PEDIDO     CHAR(1),
    EXCLUIDO             VARCHAR(1),
    USUARIO              VARCHAR(15),
    TIPOCUSTO            VARCHAR(1),
    TABELA_ESPECIAL      VARCHAR(1),
    TABELAPALM           CHAR(1),
    PR_CAPITAL_INTERIOR  VARCHAR(1),
    TIPO_PRECO           VARCHAR(1),
    DESCONTO_TABELA      NUMERIC(16,2),
    DESCONTO             NUMERIC(16,2)
);

CREATE TABLE TIPI (
    NCM                CHAR(8) NOT NULL,
    DESCRICAO          VARCHAR(1100),
    ALIQUOTA_NACIONAL  NUMERIC(16,2)
);

CREATE TABLE TIPO_MERCADORIA (
    IDTIPOMERCADORIA  SMALLINT NOT NULL,
    DESCRICAO         VARCHAR(35) NOT NULL
);

CREATE TABLE TIPO_SERVICO (
    IDFILIAL             SMALLINT NOT NULL,
    IDTIPO               SMALLINT NOT NULL,
    DESCRICAO            VARCHAR(60),
    IDCATEGORIA_SERVICO  INTEGER NOT NULL
);

CREATE TABLE TRANSFERENCIA_DEPOSITO (
    IDFILIAL            DM_SMALLINT NOT NULL,
    IDCONTROLE          INTEGER NOT NULL,
    DATA                DATE,
    IDDEPOSITO_ORIGEM   DM_SMALLINT,
    IDDEPOSITO_DESTINO  DM_SMALLINT,
    IDPRODUTO           INTEGER,
    QTDE_AJUSTE         NUMERIC(10,3),
    IDUNIDADEMEDIDA     SMALLINT,
    FATORCONVERSAO      INTEGER
);

CREATE TABLE TRANSPORTADORA (
    IDTRANSPORTADORA    DM_INTEGER NOT NULL,
    NM_TRANSPORTADORA   DM_NOME,
    ENDERECO            VARCHAR(60),
    IDCIDADE            DM_SMALLINT,
    CNPJ                DM_CNPJ,
    INSCRICAO_ESTADUAL  DM_INSCRICAO,
    IDPLACA             VARCHAR(8),
    UF_PLACA            VARCHAR(2)
);

CREATE TABLE TRIBUTO (
    IDFILIAL            DM_SMALLINT,
    IDTRIBUTO           DM_SMALLINT,
    DESCRICAO           VARCHAR(25),
    TAXAICMS            NUMERIC(10,2),
    CLFISCAL            VARCHAR(3),
    ALIQUOTANOTA        VARCHAR(5),
    INSENTIVOFISCAL     NUMERIC(10,4),
    INDICADOR           VARCHAR(1),
    EXCLUIDO            VARCHAR(1),
    USUARIO             VARCHAR(15),
    MENSAGEM_NOTA       VARCHAR(1),
    MENSAGEM_01         VARCHAR(100),
    MENSAGEM_02         VARCHAR(100),
    CLFISCAL_REDUZIDA   VARCHAR(3),
    CFOP                VARCHAR(5),
    SITUACAO_PIS        VARCHAR(2),
    ALIQUOTA_PIS        NUMERIC(10,2),
    SITUACAO_COFINS     VARCHAR(2),
    ALIQUOTA_COFINS     NUMERIC(10,2),
    DESCRICAO_SITUACAO  VARCHAR(200),
    ALIQUOTA_ST         NUMERIC(10,2),
    PERCENTUAL_SIMPLES  NUMERIC(10,2),
    CFOP_FORA_ESTADO    VARCHAR(5),
    SITUACAO_IPI        VARCHAR(2),
    ALIQUOTA_IPI        NUMERIC(10,2),
    MARGEM_AGREGADO     NUMERIC(10,2),
    E_ICMS              VARCHAR(1) DEFAULT 'S',
    E_PIS               VARCHAR(1),
    E_COFINS            VARCHAR(1),
    E_IPI               VARCHAR(1),
    CST_ECF             VARCHAR(3),
    INSENTIVO2          NUMERIC(10,4)
);

CREATE TABLE TRIBUTO_ESTADO (
    IDFILIAL         INTEGER NOT NULL,
    IDPRODUTO        INTEGER NOT NULL,
    UF               VARCHAR(2) NOT NULL,
    CLFISCAL         VARCHAR(3),
    MARGEM_AGREGADA  NUMERIC(15,2),
    TAXA_ICMS        NUMERIC(10,2),
    ALIQUOTA_ST      NUMERIC(10,2),
    ISENTIVO         NUMERIC(15,4)
);

CREATE TABLE UF (
    UF                  VARCHAR(2),
    ID_FEDERACAO_IBGE   VARCHAR(3),
    ICMS_INTERESTADUAL  NUMERIC(15,2)
);

CREATE TABLE UNIDADEMEDIDA (
    IDFILIAL         DM_SMALLINT,
    IDUNIDADEMEDIDA  DM_SMALLINT,
    DESCRICAO        VARCHAR(10),
    ABREVIATURA      CHAR(6),
    FATORCONVERSAO   INTEGER,
    EXCLUIDO         VARCHAR(1),
    USUARIO          VARCHAR(15),
    TIPO_UNIDADE     VARCHAR(1),
    EMBALAGEM        VARCHAR(25)
);

CREATE TABLE UNIDADEPRODUTO (
    IDFILIAL         DM_SMALLINT,
    IDPRODUTO        DM_INTEGER,
    IDUNIDADEMEDIDA  DM_SMALLINT
);

CREATE TABLE USUARIO (
    IDFILIAL                        DM_SMALLINT,
    IDUSUARIO                       DM_SMALLINT,
    NOME                            VARCHAR(15),
    SENHA                           VARCHAR(8),
    SKIN                            INTEGER,
    COREDITFOCADO                   INTEGER,
    COREDITDESABILITADO             INTEGER,
    PERM_MENU_PAGAR                 CHAR(1),
    IDREPRESENTANTE                 SMALLINT,
    PERM_MENU_RECEBER               CHAR(1),
    FC_REDUCAO_X                    VARCHAR(1),
    FC_REDUCAO_Z                    VARCHAR(1),
    FC_LEITURA_MEMORIA_FISCAL       VARCHAR(1),
    FC_OPERACOES_NAO_FISCAIS        VARCHAR(1),
    FC_CANCELAR_CUPOM               VARCHAR(1),
    SOMENTE_PEDIDO_PENDENTE         VARCHAR(1),
    CADASTRA_TROCA_BONIF            VARCHAR(1),
    IDTABELAPRECO                   SMALLINT,
    USAR_TABELAPRECO                VARCHAR(1),
    ADMINISTRAR_DESCONTO_PRO        VARCHAR(1),
    ADMINISTRAR_DEB_ATRASO_CLI      VARCHAR(1),
    BALCAO_ALTERAR_DATA             VARCHAR(1),
    EXCLUIR_BALCAO_RETAGUARDA       VARCHAR(1),
    CONTROLE_DATA_SISTEMA           VARCHAR(1),
    EXCLUIR_PED_CONSULTA            VARCHAR(1),
    ADM_MOVTO_CAIXA                 VARCHAR(1),
    USU_PODE_PESQ                   VARCHAR(1),
    ALTERA_REP_VENDA                VARCHAR(1),
    USUARIO_ALTERAR_SITCREDITO_CLI  VARCHAR(1),
    EXCLUI_VENDA_PDV                VARCHAR(1),
    ALTERAR_PEDIDO_BOLETO_IMPRESSO  VARCHAR(1),
    USUARIO_CANCELA_NFE             VARCHAR(1),
    DIGITA_DTPEDIDO                 VARCHAR(1),
    DATASISTEMA                     DATE,
    SOMENTE_PEDIDO_VENDA            VARCHAR(1),
    DIGITAR_DT_PAGAMENTO_RECEBER    VARCHAR(1),
    DIGITAR_DT_PAGAMENTO_PAGAR      VARCHAR(1),
    IDCAIXA_PDV                     SMALLINT,
    USUARIO_MASTER                  VARCHAR(1),
    FILTRAR_PEDIDO_DESCONTO         VARCHAR(1),
    EMISSAO_IGUAL_COBRANCA          VARCHAR(1),
    VER_TELA_EMITIR_ETIQUETA        VARCHAR(1),
    EXCLUI_PEDIDO_C_NOTA            VARCHAR(1),
    USUARIO_ESCOLHE_REP_PDV         VARCHAR(1)
);

CREATE TABLE VEICULO (
    IDFILIAL           DM_SMALLINT NOT NULL,
    IDPLACA            VARCHAR(8) NOT NULL,
    DESCRICAO          VARCHAR(40),
    COR                VARCHAR(25),
    MODELO             VARCHAR(25),
    ANO                NUMERIC(4,0),
    RASTRIADOR         VARCHAR(1),
    QTDE_PNEU_RODANDO  NUMERIC(2,1),
    VALORSEGURO        NUMERIC(14,2),
    VALOR_DEPRICIACAO  NUMERIC(14,2),
    CODIGO_ANTT        VARCHAR(20),
    NITRAGEM_BAU       SMALLINT,
    NITRAGEM_TOTAL     SMALLINT,
    QTDE_ESTEPE        SMALLINT,
    IDCLIENTE          INTEGER
);

CREATE TABLE VEICULO_CLIENTE (
    IDFILIAL           DM_SMALLINT NOT NULL,
    IDPLACA            VARCHAR(8) NOT NULL,
    DESCRICAO          VARCHAR(40),
    COR                VARCHAR(25),
    MODELO             VARCHAR(25),
    ANO                NUMERIC(4,0),
    VALORSEGURO        NUMERIC(14,2),
    VALOR_DEPRICIACAO  NUMERIC(14,2),
    CODIGO_ANTT        VARCHAR(20),
    IDCLIENTE          INTEGER
);

CREATE TABLE VENCTO_PRODUTO (
    IDFILIAL     SMALLINT NOT NULL,
    IDPRODUTO    INTEGER NOT NULL,
    DATA_VENCTO  DATE NOT NULL,
    QTDE         NUMERIC(12,3),
    OBSERVACAO   VARCHAR(30),
    SITUACAO     VARCHAR(1)
);

CREATE TABLE VENDA_BALCAO (
    IDFILIAL               INTEGER NOT NULL,
    IDVENDA                INTEGER NOT NULL,
    TIPO                   VARCHAR(3) NOT NULL,
    IDCLIENTE              INTEGER,
    DATAVENDA              DATE,
    OPERADOR               VARCHAR(30),
    TOTALVENDA             NUMERIC(15,2),
    VALOR_F1               NUMERIC(15,2),
    VALOR_F2               NUMERIC(15,2),
    NOMECLIENTE            VARCHAR(60),
    IDFORMAPAGTO           SMALLINT,
    IDCONDICAOPAGTO        SMALLINT,
    IDREPRESENTANTE        SMALLINT,
    CRZ                    INTEGER,
    COO                    INTEGER,
    CCF                    INTEGER,
    IDFORMA_F1             SMALLINT,
    IDFORMA_F2             SMALLINT,
    DATA_CUPOM             DATE,
    HORA_DO_CUPOM          TIME,
    CUPOM_CANCELADO        VARCHAR(1),
    IDCUPOM_GERADO_DAV_PV  INTEGER,
    IDFECHAMENTO           INTEGER,
    TIPOCLIENTE            VARCHAR(1),
    CNPJ                   VARCHAR(18),
    CPF                    VARCHAR(18),
    INSCESTADUAL           VARCHAR(15),
    MESCLAR_DAV            VARCHAR(1),
    SITUACAO_DAV           VARCHAR(1),
    NUMERO_CUPOM           INTEGER,
    NUMERO_CAIXA           SMALLINT,
    DAV_MESCLADOS          VARCHAR(30),
    VALORTROCO             NUMERIC(10,2),
    ENDERECO_CLIENTE       VARCHAR(60),
    BAIRRO_CLIENTE         VARCHAR(40),
    CEP_CLIENTE            VARCHAR(9),
    FONE_CLIENTE           VARCHAR(14),
    DESCONTO_SUBTOTAL      NUMERIC(14,2),
    VALOR_ACRECIMO         NUMERIC(14,2),
    IDCIDADE_CLIENTE       SMALLINT,
    BASE_ICMS              NUMERIC(14,2) DEFAULT 0,
    VALOR_ICMS             NUMERIC(14,4) DEFAULT 0,
    BASE_ICMS_ST           NUMERIC(14,2) DEFAULT 0,
    VALOR_ICMS_ST          NUMERIC(14,4) DEFAULT 0,
    IDPEDIDO_RETAGUARDA    INTEGER,
    TMP                    VARCHAR(1),
    TROCO                  NUMERIC(15,2),
    ENDERECO_NUMERO        SMALLINT,
    NFE_ENVIADA            VARCHAR(1),
    NFE_IMPRESSA           VARCHAR(1),
    NOME_ARQ_ELETRONICO    VARCHAR(60),
    IDNOTAFISCAL           INTEGER,
    NFE_ERRO               VARCHAR(1),
    NFCE_CONFIRMADA        VARCHAR(1),
    NUMERO_AUTENTICACAO    VARCHAR(30),
    BANDEIRA               VARCHAR(25)
);

CREATE TABLE VERSAO (
    N_VERSAO           INTEGER,
    SCRIPT_ATUALIZADO  VARCHAR(1)
);



/******************************************************************************/
/***                                 Views                                  ***/
/******************************************************************************/


/* View: EMISSAO_NOTA */
CREATE VIEW EMISSAO_NOTA(
    IDPEDIDO,
    IDFOLHA,
    DATAPEDIDO,
    NOTAFISCAL,
    TOTALPEDIDO,
    IDROMANEIO,
    NOME,
    LOTE_NFE,
    VALIDADAS,
    NFE_ENVIADA,
    NFE_IMPRESSA,
    NFE_MOTIVO,
    IDCLIENTE,
    IDCIDADE,
    SERIE,
    TIPO,
    IDREPRESENTANTE,
    TIPOCLIENTE,
    IDFILIAL,
    TIPO_PVD,
    DATA_NOTA,
    SITUACAOPEDIDO,
    SITUACAO_ABERTO_FECHADO,
    TIPO_NOTA)
AS
select P.IDPEDIDO, P.IDFOLHA, P.DATAPEDIDO, P.NOTAFISCAL, P.TOTALPEDIDO, P.IDROMANEIO, C.NOME, P.LOTE_NFE, P.VALIDADAS, P.NFE_ENVIADA, P.NFE_IMPRESSA, P.NFE_MOTIVO, P.IDCLIENTE, C.IDCIDADE, P.SERIE, 'Venda',
       P.IDREPRESENTANTE,C.TIPOCLIENTE, P.IDFILIAL, P.TIPO_PEDIDO, P.DATANOTAFISCAL, P.SITUACAOPEDIDO, P.SITUACAO_ABERTO_FECHADO,P.TIPO_NOTA from PEDIDO P

left JOIN CLIENTE C
   ON C.IDCLIENTE = P.IDCLIENTE
;



/* View: MONTAR_CORTE */
CREATE VIEW MONTAR_CORTE(
    IDFILIAL,
    IDCONTROLE,
    IDPRODUTO,
    ESPECIFICACAO,
    NOME,
    FANTASIA,
    QTDEPEDIDO,
    FATORCONVERSAO,
    IDFOLHA,
    IDPEDIDO,
    FATOR_PRO,
    XTMP)
AS
select IT.IDFILIAL, ITR.IDCONTROLE, IT.IDPRODUTO, PR.ESPECIFICACAO as NOMEPRODUTO, C.NOME as NOMECLIENTE, C.FANTASIA, IT.QTDEPEDIDO, IT.FATORCONVERSAO, IT.IDFOLHA, IT.IDPEDIDO, PR.FATORCONVERSAO, ' ' from ITENSPEDIDO IT


JOIN PEDIDO P
   ON P.IDFILIAL = IT.IDFILIAL
  AND P.IDPEDIDO = IT.IDPEDIDO
  AND P.IDFOLHA = IT.IDFOLHA

JOIN PRODUTO PR
   ON PR.IDFILIAL = IT.IDFILIAL
  AND PR.IDPRODUTO = IT.IDPRODUTO

JOIN CLIENTE C
   ON C.IDFILIAL = P.IDFILIAL
 AND C.IDCLIENTE = P.IDCLIENTE

join ITENSROMANEIO ITR
  on ITR.IDFILIAL = IT.IDFILIAL
 and ITR.IDPEDIDO = IT.IDPEDIDO
 and ((ITR.IDFOLHA is null) or (ITR.IDFOLHA = IT.IDFOLHA))

WHERE (NOT(EXISTS(SELECT D.IDFILIAL FROM DEVOLUCAO D
              WHERE D.IDFILIAL = IT.IDFILIAL
                AND D.IDPEDIDO = P.IDPEDIDO
                AND D.IDFOLHA = P.IDFOLHA)))

--    AND (NOT(EXISTS(SELECT R.IDFILIAL FROM RECEBER R
--              WHERE R.IDFILIAL = IT.IDFILIAL
--                AND R.IDRECEBER = P.IDPEDIDO
--                AND R.IDFOLHA = P.IDFOLHA
--                AND not R.VALORPAGAMENTO is null)))
;



/* View: REL_DEVOLUCAO */
CREATE VIEW REL_DEVOLUCAO(
    IDFILIAL,
    IDPEDIDO,
    IDFOLHA,
    DATAPEDIDO,
    DATADIGITACAO,
    IDCFOP,
    IDCLIENTE,
    IDCONDICAOPAGTO,
    IDFORMAPAGTO,
    IDREPRESENTANTE,
    IDCENTROCUSTO,
    NOTAFISCAL,
    DATANOTAFISCAL,
    TOTALCUSTO,
    TOTALPRODUTO,
    TOTALDESCONTO,
    TOTALPEDIDO,
    PARCELA,
    TOTALCOMISSAO,
    FLAG,
    IDTABELAPRECO,
    SITUACAOPEDIDO,
    NOTAGERADORA,
    DATAGERADORA,
    OBS1,
    OBS2,
    TAXADESCONTO,
    IDPEDIDOPALM,
    IDCOBRANCA,
    IDROMANEIO,
    SIT_INVENTARIO,
    IDCONSIGNACAO,
    TIPO_PEDIDO,
    TIPONOTA,
    IDOBRAS,
    TIPO_PVD,
    NOMECLIENTE,
    NOMEREPRESENTANTE,
    IDCIDADE_CLIENTE,
    IDCONVENIO)
AS
select
    D.IDFILIAL         ,
    D.IDPEDIDO         ,
    D.IDFOLHA          ,
    D.DATAPEDIDO       ,
    D.DATADIGITACAO    ,
    D.IDCFOP           ,
    D.IDCLIENTE        ,
    D.IDCONDICAOPAGTO  ,
    D.IDFORMAPAGTO     ,
    D.IDREPRESENTANTE  ,
    D.IDCENTROCUSTO    ,
    D.NOTAFISCAL       ,
    D.DATANOTAFISCAL   ,
    D.TOTALCUSTO       ,
    D.TOTALPRODUTO     ,
    D.TOTALDESCONTO    ,
    D.TOTALPEDIDO      ,
    D.PARCELA          ,
    D.TOTALCOMISSAO    ,
    D.FLAG             ,
    D.IDTABELAPRECO    ,
    D.SITUACAOPEDIDO   ,
    D.NOTAGERADORA     ,
    D.DATAGERADORA     ,
    D.OBS1             ,
    D.OBS2             ,
    D.TAXADESCONTO     ,
    D.IDPEDIDOPALM     ,
    D.IDCOBRANCA       ,
    D.IDROMANEIO       ,
    D.SIT_INVENTARIO   ,
    D.IDCONSIGNACAO    ,
    D.TIPO_PEDIDO      ,
    D.TIPONOTA         ,
    D.IDOBRAS          ,
    D.TIPO_PVD         ,
    C.NOME             ,
    R.NOME             ,
    C.IDCIDADE         ,
    C.IDCONVENIO
 from DEVOLUCAO D

left join CLIENTE C
   on C.IDCLIENTE = D.IDCLIENTE

left join REPRESENTANTE R
   on R.IDREPRESENTANTE = D.IDREPRESENTANTE
;



/* View: REL_ITENS_DEVOLUCAO */
CREATE VIEW REL_ITENS_DEVOLUCAO(
    IDFILIAL,
    IDPEDIDO,
    IDFOLHA,
    CONTADOR,
    IDPRODUTO,
    CUSTONOTA,
    CUSTOTRIBUTADO,
    CUSTOENCARGOS,
    PRECOTABELA,
    TAXADESCONTO,
    PRECOVENDA,
    QTDEPEDIDO,
    TAXACOMISSAO,
    FATORCONVERSAO,
    IDUNIDADEMEDIDA,
    IDCARTEIRA,
    TROCA,
    IDMOVTO_SUPERVISOR,
    IDFORNECEDOR,
    FATORPRODUTO,
    PESO)
AS
select
    IT.IDFILIAL            ,
    IT.IDPEDIDO            ,
    IT.IDFOLHA             ,
    IT.CONTADOR            ,
    IT.IDPRODUTO           ,
    IT.CUSTONOTA           ,
    IT.CUSTOTRIBUTADO      ,
    IT.CUSTOENCARGOS       ,
    IT.PRECOTABELA         ,
    IT.TAXADESCONTO        ,
    IT.PRECOVENDA          ,
    IT.QTDEPEDIDO          ,
    IT.TAXACOMISSAO        ,
    IT.FATORCONVERSAO      ,
    IT.IDUNIDADEMEDIDA     ,
    IT.IDCARTEIRA          ,
    IT.TROCA               ,
    IT.IDMOVTO_SUPERVISOR  ,
    P.IDFORNECEDOR         ,
    P.FATORCONVERSAO       ,
    P.PESO
 from ITENSDEVOLUCAO  IT

left join PRODUTO P
   on P.IDFILIAL = IT.IDFILIAL
  and P.IDPRODUTO = IT.IDPRODUTO
;



/* View: REL_ITENS_PEDIDO */
CREATE VIEW REL_ITENS_PEDIDO(
    IDFILIAL,
    IDPEDIDO,
    IDFOLHA,
    CONTADOR,
    IDPRODUTO,
    CUSTONOTA,
    CUSTOTRIBUTADO,
    CUSTOENCARGOS,
    PRECOTABELA,
    PRECOTABELA_ORIGINAL,
    TAXADESCONTO,
    PRECOVENDA,
    QTDEPEDIDO,
    IDUNIDADEMEDIDA,
    TAXACOMISSAO,
    FATORCONVERSAO,
    IDCARTEIRA,
    IDPEDIDOPALM,
    IDREPRESENTANTE,
    DTIMPORT,
    TROCA,
    ARQUIVO_PALM,
    SIT_PEDIDO,
    IDDEPOSITO,
    DATA_VENCTO,
    ESTOQUE_REPRESENTANTE,
    SITUACAO_ESTOQUE,
    SITUACAO_DESCONTO,
    CODIGO_BARRA,
    B_EXCLUIR_ITEM,
    PODE_TRANSFORMA_VENDA,
    HOUVE_CORTE,
    CST_IPI,
    ALIQUOTA_IPI,
    VALOR_IPI,
    CST_PIS,
    ALIQUOTA_PIS,
    VALOR_PIS,
    CST_COFINS,
    ALIQUOTA_COFINS,
    VALOR_COFINS,
    IDTRIBUTO_CONFINS,
    IDTRIBUTO_PIS,
    IDTRIBUTO_IPI,
    NOMEPRODUTO,
    IDGRUPO,
    IDSUB_GRUPO,
    FATORPRODUTO,
    NOMEGRUPO,
    NOMESUBGRUPO,
    IDFORNECEDOR,
    NOMEFORNECEDOR,
    ESTE_PRODUTO_E_PAO,
    EMBALAGEM,
    SITUACAO_GRUPO,
    PESO,
    ABREVIATURA_UN_PRODUTO,
    DESC_UNI_PRODUTO,
    IDUNIDADEMEDIDA_PRODUTO)
AS
select
    IT.IDFILIAL               ,
    IT.IDPEDIDO               ,
    IT.IDFOLHA                ,
    IT.CONTADOR               ,
    IT.IDPRODUTO              ,
    IT.CUSTONOTA              ,
    IT.CUSTOTRIBUTADO         ,
    IT.CUSTOENCARGOS          ,
    IT.PRECOTABELA            ,
    IT.PRECOTABELA_ORIGINAL   ,
    IT.TAXADESCONTO           ,
    IT.PRECOVENDA             ,
    IT.QTDEPEDIDO             ,
    IT.IDUNIDADEMEDIDA        ,
    IT.TAXACOMISSAO           ,
    IT.FATORCONVERSAO         ,
    IT.IDCARTEIRA             ,
    IT.IDPEDIDOPALM           ,
    IT.IDREPRESENTANTE        ,
    IT.DTIMPORT               ,
    coalesce(IT.TROCA,'N')    ,
    IT.ARQUIVO_PALM           ,
    IT.SIT_PEDIDO             ,
    IT.IDDEPOSITO             ,
    IT.DATA_VENCTO            ,
    IT.ESTOQUE_REPRESENTANTE  ,
    IT.SITUACAO_ESTOQUE       ,
    IT.SITUACAO_DESCONTO      ,
    IT.CODIGO_BARRA           ,
    IT.B_EXCLUIR_ITEM         ,
    IT.PODE_TRANSFORMA_VENDA  ,
    IT.HOUVE_CORTE            ,
    IT.CST_IPI                ,
    IT.ALIQUOTA_IPI           ,
    IT.VALOR_IPI              ,
    IT.CST_PIS                ,
    IT.ALIQUOTA_PIS           ,
    IT.VALOR_PIS              ,
    IT.CST_COFINS             ,
    IT.ALIQUOTA_COFINS        ,
    IT.VALOR_COFINS           ,
    IT.IDTRIBUTO_CONFINS      ,
    IT.IDTRIBUTO_PIS          ,
    IT.IDTRIBUTO_IPI          ,
    P.ESPECIFICACAO           ,
    P.IDGRUPO                 ,
    P.IDSUB_GRUPO             ,
    P.FATORCONVERSAO          ,
    G.NOME                    ,
    SG.DESCRICAO              ,
    P.IDFORNECEDOR            ,
    F.NOME                    ,
    P.ESTE_PRODUTO_E_PAO      ,
    P.EMBALAGEM               ,
    G.SITUACAO                ,
    P.PESO                    ,
    U.ABREVIATURA             ,
    U.DESCRICAO               ,
    P.IDUNIDADEMEDIDA
 from ITENSPEDIDO IT


join PRODUTO P
  on P.IDFILIAL = IT.IDFILIAL
 and P.IDPRODUTO = IT.IDPRODUTO

left join UNIDADEMEDIDA U
   on U.IDFILIAL = IT.IDFILIAL
  and U.IDUNIDADEMEDIDA = P.IDUNIDADEMEDIDA

left join GRUPO G
   on G.IDGRUPO = P.IDGRUPO

left join SUB_GRUPO SG
   on SG.IDSUB_GRUPO = P.IDSUB_GRUPO

left join FORNECEDOR F
  on F.IDFORNECEDOR = P.IDFORNECEDOR
;



/* View: REL_PEDIDO */
CREATE VIEW REL_PEDIDO(
    IDFILIAL,
    IDPEDIDO,
    IDFOLHA,
    IDPEDIDOPALM,
    DATAPEDIDO,
    DATADIGITACAO,
    IDCFOP,
    IDCLIENTE,
    IDCONDICAOPAGTO,
    IDFORMAPAGTO,
    IDREPRESENTANTE,
    IDCENTROCUSTO,
    NOTAFISCAL,
    DATANOTAFISCAL,
    TOTALCUSTO,
    TOTALPRODUTO,
    TOTALDESCONTO,
    TOTALPEDIDO,
    PARCELA,
    TOTALCOMISSAO,
    ENTREGARPEDIDO,
    SITUACAOPEDIDO,
    IDTABELAPRECO,
    OBS01,
    OBS02,
    DTIMPORT,
    ARQUIVO_PALM,
    TAXADESCONTO,
    IDCOBRANCA,
    SITUACAOROMANEIO,
    IDROMANEIO,
    SUBSTITUICAO,
    IDPEDIDO_SAOBENTO,
    TIPO_PEDIDO,
    CLIENTE_BALCAO,
    OLD_SITUACAOPEDIDO,
    SIT_INVENTARIO,
    NUMERO_CUPOM,
    N_SERIE_IMP,
    LANCHONETE,
    IDCONSIGNACAO,
    ENVIADO_PALM,
    ITENS_CUPOM,
    VALOR_F1,
    VALOR_F2,
    VALOR_F3,
    VALOR_F4,
    VALOR_F5,
    VALOR_F6,
    VALOR_F7,
    VALOR_F8,
    VALOR_F9,
    ORCAMENTO_VENDA,
    TIPONOTA,
    TIPOPEDIDO_PALM,
    VENDA_IMPRESSA,
    IDOBRAS,
    TOTALDIGITADO,
    LOTE_NFE,
    VALIDADAS,
    NFE_ENVIADA,
    NFE_IMPRESSA,
    NFE_MOTIVO,
    TAXA_FUNRURAL,
    COO,
    TIPO_PVD,
    OBS03,
    OBS04,
    IDMOVTO_SUPERVISOR,
    COBRANCA_CTS,
    ENTREGA,
    TRANSFORMA_VENDA,
    PODE_TRANSFORMA_VENDA,
    PRODUTO_EST_NEGATIVO,
    OUTRAS_DESPESA_ACESSORIO,
    VALOR_PIS,
    VALOR_CONFINS,
    VALOR_IPI,
    PED_QUANTIDADE,
    PED_ESPECIE,
    PED_MARCA,
    SERIE,
    NOMEUSUARIO,
    NOMECLIENTE,
    NOMEREPRESENTANTE,
    IDSUB_CONVENIO,
    IDCONVENIO,
    NOMECONVENIO,
    IDCIDADE_CLIENTE,
    NOMECIDADE_CLIENTE,
    FANTASIA_CLIENTE,
    IDREGIAO_CLIENTE,
    DESCRICAO_REGIAO_CLIENTE,
    CPF_SUPERVISOR,
    IDATIVIDADE,
    IDSUB_ATIVIDADE,
    CFOP,
    CONDICAOPAGTO,
    FORMAPAGTO,
    COBRANCA,
    TIPOCLIENTE,
    NOMEATIVIDADE_CLIENTE,
    NOMECFOP,
    DESCRICAO_CENTROCUSTO,
    DESCRICAO_TABELAPRECO,
    UF,
    USUARIO_IMPRIMIU,
    TOTAL_MAOOBRA,
    VALOR_BASE_ST,
    VALOR_ICMS_ST)
AS
select
    P.IDFILIAL                  ,
    P.IDPEDIDO                  ,
    P.IDFOLHA                   ,
    P.IDPEDIDOPALM              ,
    P.DATAPEDIDO                ,
    P.DATADIGITACAO             ,
    P.IDCFOP                    ,
    P.IDCLIENTE                 ,
    P.IDCONDICAOPAGTO           ,
    P.IDFORMAPAGTO              ,
    P.IDREPRESENTANTE           ,
    P.IDCENTROCUSTO             ,
    P.NOTAFISCAL                ,
    P.DATANOTAFISCAL            ,
    P.TOTALCUSTO                ,
    P.TOTALPRODUTO              ,
    P.TOTALDESCONTO             ,
    P.TOTALPEDIDO               ,
    P.PARCELA                   ,
    P.TOTALCOMISSAO             ,
    P.ENTREGARPEDIDO            ,
    P.SITUACAOPEDIDO            ,
    P.IDTABELAPRECO             ,
    P.OBS01                     ,
    P.OBS02                     ,
    P.DTIMPORT                  ,
    P.ARQUIVO_PALM              ,
    P.TAXADESCONTO              ,
    P.IDCOBRANCA                ,
    P.SITUACAOROMANEIO          ,
    P.IDROMANEIO                ,
    P.SUBSTITUICAO              ,
    P.IDPEDIDO_SAOBENTO         ,
    P.TIPO_PEDIDO               ,
    P.CLIENTE_BALCAO            ,
    P.OLD_SITUACAOPEDIDO        ,
    P.SIT_INVENTARIO            ,
    P.NUMERO_CUPOM              ,
    P.N_SERIE_IMP               ,
    P.LANCHONETE                ,
    P.IDCONSIGNACAO             ,
    P.ENVIADO_PALM              ,
    P.ITENS_CUPOM               ,
    P.VALOR_F1                  ,
    P.VALOR_F2                  ,
    P.VALOR_F3                  ,
    P.VALOR_F4                  ,
    P.VALOR_F5                  ,
    P.VALOR_F6                  ,
    P.VALOR_F7                  ,
    P.VALOR_F8                  ,
    P.VALOR_F9                  ,
    P.ORCAMENTO_VENDA           ,
    P.TIPONOTA                  ,
    P.TIPOPEDIDO_PALM           ,
    P.VENDA_IMPRESSA            ,
    P.IDOBRAS                   ,
    P.TOTALDIGITADO             ,
    P.LOTE_NFE                  ,
    P.VALIDADAS                 ,
    P.NFE_ENVIADA               ,
    P.NFE_IMPRESSA              ,
    P.NFE_MOTIVO                ,
    P.TAXA_FUNRURAL             ,
    P.COO                       ,
    P.TIPO_PVD                  ,
    P.OBS03                     ,
    P.OBS04                     ,
    P.IDMOVTO_SUPERVISOR        ,
    P.COBRANCA_CTS              ,
    P.ENTREGA                   ,
    P.TRANSFORMA_VENDA          ,
    P.PODE_TRANSFORMA_VENDA     ,
    P.PRODUTO_EST_NEGATIVO      ,
    P.OUTRAS_DESPESA_ACESSORIO  ,
    P.VALOR_PIS                 ,
    P.VALOR_CONFINS             ,
    P.VALOR_IPI                 ,
    P.PED_QUANTIDADE            ,
    P.PED_ESPECIE               ,
    P.PED_MARCA                 ,
    P.SERIE                     ,
    P.NOMEUSUARIO               ,
    C.NOME                      ,
    R.NOME                      ,
    C.IDSUBCONVENIO             ,
    C.IDCONVENIO                ,
    CO.DESCRICAO                ,
    C.IDCIDADE                  ,
    CI.NOME                     ,
    C.FANTASIA                  ,
    C.IDREGIAO                  ,
    REG.NOME                    ,
    R.CPF_SUPERVISOR            ,
    C.IDATIVIDADE               ,
    C.IDSUB_ATIVIDADE           ,
    CF.CFOP                     ,
    CP.DESCRICAO                ,
    FP.DESCRICAO                ,
    CB.DESCRICAO                ,
    C.TIPOCLIENTE               ,
    A.NOME                      ,
    CF.DESCRICAO                ,
    CC.DESCRICAO                ,
    T.DESCRICAO                 ,
    CI.UF                       ,
    P.USUARIO_IMPRIMIU          ,
    P.TOTAL_MAOOBRA             ,
    P.VALOR_BASE_ST             ,
    P.VALOR_ICMS_ST

 from PEDIDO P

left join CLIENTE C
   on C.IDCLIENTE = P.IDCLIENTE

left join REPRESENTANTE R
   on R.IDREPRESENTANTE = P.IDREPRESENTANTE

left join CFOP CF
   on CF.IDFILIAL = P.IDFILIAL
  and CF.IDCFOP = P.IDCFOP

left join CONDICAOPAGTO CP
  on CP.IDCONDICAOPAGTO = P.IDCONDICAOPAGTO

left join CENTROCUSTO CC
  on CC.IDCENTROCUSTO = P.IDCENTROCUSTO

left join TABELAPRECO T
   on T.IDFILIAL      = P.IDFILIAL
  and T.IDTABELAPRECO = P.IDTABELAPRECO

left join CONVENIO CO
  on CO.IDCONVENIO = C.IDCONVENIO

left join FORMAPAGTO FP
  on FP.IDFORMAPAGTO = P.IDFORMAPAGTO


left join CIDADE CI
  on CI.IDCIDADE = C.IDCIDADE

left join REGIAO REG
  on REG.IDREGIAO = C.IDREGIAO

left join ATIVIDADE A
  on A.IDATIVIDADE = C.IDATIVIDADE


left  JOIN COBRANCA CB
  ON CB.IDFILIAL = P.IDFILIAL
 AND CB.IDCOBRANCA = P.IDCOBRANCA



where (exists(select first 1 ITP.idfilial from ITENSPEDIDO ITP
                           where ITP.idfilial = P.IDFILIAL
                             and ITP.idpedido = P.IDPEDIDO
                             and ITP.idfolha  = P.idfolha))
;



/* View: RELATORIO_PRODUTOS */
CREATE VIEW RELATORIO_PRODUTOS(
    PEDIDO_DATA_PEDIDO,
    PEDIDO,
    IDPEDIDO,
    PRODUTO_CODIGO,
    PRODUTO_DESCRICAO,
    REPRESENTANTE_CODIGO,
    REPRESENTANTE_NOME,
    QTD_PRUDUTO_PEDIDO)
AS
SELECT
PEDIDO.DATAPEDIDO               AS PEDIDO_DATA_PEDIDO,
PEDIDO.IDPEDIDO                 AS PEDIDO,
ITENSPEDIDO.IDPEDIDO,
ITENSPEDIDO.IDPRODUTO           AS PRODUTO_CODIGO,
PRODUTO.ESPECIFICACAO           AS PRODUTO_DESCRICAO,
PEDIDO.IDREPRESENTANTE          AS REPRESENTANTE_CODIGO,
REPRESENTANTE.NOME              AS REPRESENTANTE_NOME,
(SELECT COUNT (ITENSPEDIDO.IDPRODUTO)
        FROM ITENSPEDIDO
        WHERE  ITENSPEDIDO.IDFILIAL = PEDIDO.IDFILIAL AND
               ITENSPEDIDO.IDPEDIDO = PEDIDO.IDPEDIDO) AS QTD_PRUDUTO_PEDIDO

FROM PEDIDO

JOIN ITENSPEDIDO        ON  ITENSPEDIDO.IDPEDIDO            =   PEDIDO.IDPEDIDO

JOIN PRODUTO            ON  PRODUTO.IDPRODUTO               =   ITENSPEDIDO.IDPRODUTO

JOIN REPRESENTANTE      ON  REPRESENTANTE.IDREPRESENTANTE   =   PEDIDO.IDREPRESENTANTE


--COMMIT
;



/* View: RELATORIO_VENDA */
CREATE VIEW RELATORIO_VENDA(
    PEDIDO,
    NOTAFISCAL,
    DATAPEDIDO,
    CFOP,
    IDCLIENTE,
    REPRESENTANTE_COD,
    REPRESENTANTE_DESC,
    TABELA_PRECO_COD,
    TABELA_PRECO_DESC,
    PRODUTO_COD,
    PRODUTO_DESC,
    QTDEPEDIDO,
    PRECOTABELA,
    PRECOVENDA,
    DIFERENCA,
    TOTALPEDIDO,
    SITUACAOPEDIDO,
    SIT_PEDIDO,
    TOTAL_NF,
    TOTAL_PD)
AS
SELECT
PEDIDO.IDPEDIDO                                     AS PEDIDO,
PEDIDO.NOTAFISCAL,
PEDIDO.DATAPEDIDO,
PEDIDO.IDCFOP                                       AS CFOP,
PEDIDO.IDCLIENTE,
PEDIDO.IDREPRESENTANTE                              AS REPRESENTANTE_COD,
REPRESENTANTE.NOME                                  AS REPRESENTANTE_DESC,
PEDIDO.IDTABELAPRECO                                AS TABELA_PRECO_COD,
TABELAPRECO.DESCRICAO                               AS TABELA_PRECO_DESC,
ITENSPEDIDO.IDPRODUTO                               AS PRODUTO_COD,
PRODUTO.ESPECIFICACAO                               AS PRODUTO_DESC,
ITENSPEDIDO.QTDEPEDIDO,
ITENSPEDIDO.PRECOTABELA,
ITENSPEDIDO.PRECOVENDA,
((ITENSPEDIDO.PRECOVENDA-ITENSPEDIDO.PRECOTABELA)*ITENSPEDIDO.QTDEPEDIDO)    AS DIFERENCA,
PEDIDO.TOTALPEDIDO,
PEDIDO.SITUACAOPEDIDO,
ITENSPEDIDO.SIT_PEDIDO,

(SELECT SUM (PEDIDO.TOTALPEDIDO) FROM PEDIDO
    WHERE PEDIDO.NOTAFISCAL IS NOT NULL AND PEDIDO.DATAPEDIDO = PEDIDO.DATAPEDIDO)
                                                    AS TOTAL_NF,

(SELECT SUM (PEDIDO.TOTALPEDIDO) FROM PEDIDO
    WHERE PEDIDO.NOTAFISCAL IS NULL AND PEDIDO.DATAPEDIDO = PEDIDO.DATAPEDIDO)
                                                    AS TOTAL_PD

FROM PEDIDO

LEFT OUTER JOIN ITENSPEDIDO     ON  ITENSPEDIDO.IDPEDIDO            =   PEDIDO.IDPEDIDO
                                AND ITENSPEDIDO.IDFOLHA             =   PEDIDO.IDFOLHA
                                AND PEDIDO.SITUACAOPEDIDO           =   ITENSPEDIDO.SIT_PEDIDO

LEFT OUTER JOIN PRODUTO                    ON  ITENSPEDIDO.IDPRODUTO           =   PRODUTO.IDPRODUTO

LEFT OUTER JOIN REPRESENTANTE              ON  REPRESENTANTE.IDREPRESENTANTE   =   PEDIDO.IDREPRESENTANTE

LEFT OUTER JOIN TABELAPRECO                ON  TABELAPRECO.IDTABELAPRECO       =   PEDIDO.IDTABELAPRECO

--WHERE
--PEDIDO.IDREPRESENTANTE = :IDREPRESENTANTE       AND
--PEDIDO.DATAPEDIDO = :DATAPEDIDO
;



/* View: SPED_0190 */
CREATE VIEW SPED_0190(
    IDUNIDADEMEDIDA,
    DESCRICAO,
    IDFILIAL,
    DATAPEDIDO,
    NOTA_PROPRIA_TERCEIROS)
AS
select IT.IDUNIDADEMEDIDA, U.ABREVIATURA, IT.IDFILIAL, P.DT_E_S, IT.NOTA_PROPRIA_TERCEIROS  from C170_ITENS_NF IT
  LEFT JOIN C100_NF P
    ON P.IDFILIAL = IT.IDFILIAL
   AND P.IDNOTA  = IT.IDNOTA
   AND P.NOTA_PROPRIA_TERCEIROS = 'T'
   AND P.CPF_CNPJ = IT.CPF_CNPJ

  JOIN UNIDADEMEDIDA U
    ON U.IDFILIAL = IT.IDFILIAL
   AND U.IDUNIDADEMEDIDA = IT.IDUNIDADEMEDIDA

  WHERE IT.NOTA_PROPRIA_TERCEIROS = 'T'

/*
union all

select PR.IDUNIDADEMEDIDA, U.ABREVIATURA, IT.IDFILIAL, P.DT_E_S, IT.NOTA_PROPRIA_TERCEIROS  from C170_ITENS_NF IT
  LEFT JOIN C100_NF P
    ON P.IDFILIAL = IT.IDFILIAL
   AND P.IDNOTA  = IT.IDNOTA
   AND P.NOTA_PROPRIA_TERCEIROS = 'T'

  JOIN PRODUTO PR
    ON PR.IDFILIAL = IT.IDFILIAL
   AND PR.IDPRODUTO = IT.IDPRODUTO

  JOIN UNIDADEMEDIDA U
    ON U.IDFILIAL = IT.IDFILIAL
   AND U.IDUNIDADEMEDIDA = PR.IDUNIDADEMEDIDA

  WHERE IT.NOTA_PROPRIA_TERCEIROS = 'T'
*/
;



/* View: SPED_0200 */
CREATE VIEW SPED_0200(
    IDPRODUTO,
    ESPECIFICACAO,
    CODIGO_BARRA,
    IDUNIDADEMEDIDA,
    CLASSIFICACAO_FISCAL,
    TAXAICMS,
    DATAPEDIDO,
    IDFILIAL,
    IDGENERO_MERCADORIA,
    IDTIPOMERCADORIA,
    DESCRICAO_GENERO,
    CPF_CNPJ)
AS
select IT.IDPRODUTO, PR.ESPECIFICACAO, PR.CODIGO_BARRA, PR.IDUNIDADEMEDIDA,
       PR.CLASSIFICACAO_FISCAL, T.TAXAICMS, P.DT_E_S, IT.IDFILIAL, PR.IDGENERO_MERCADORIA,
       PR.IDTIPOMERCADORIA, G.DESCRICAO, P.CPF_CNPJ from C170_ITENS_NF IT

JOIN C100_NF P
  ON P.IDFILIAL = IT.IDFILIAL
 AND P.IDNOTA = IT.IDNOTA
 AND P.NOTA_PROPRIA_TERCEIROS = 'T'
 AND P.CPF_CNPJ = IT.CPF_CNPJ

JOIN PRODUTO PR
  ON PR.IDFILIAL = IT.IDFILIAL
 AND PR.IDPRODUTO = IT.IDPRODUTO

JOIN TRIBUTO T
  ON T.IDFILIAL  = IT.IDFILIAL
 AND T.IDTRIBUTO = PR.IDTRIBUTO

LEFT JOIN GENERO_MERCADORIA G
  ON G.IDGENERO = PR.IDGENERO_MERCADORIA

 WHERE IT.NOTA_PROPRIA_TERCEIROS = 'T'
;



/* View: SPED_0400 */
CREATE VIEW SPED_0400(
    IDFILIAL,
    DATANOTA,
    CFOP,
    DESCRICAO)
AS
select IT.IDFILIAL, CN.DT_E_S, IT.CFOP, C.DESCRICAO from C170_ITENS_NF IT

join CFOP C
  on C.IDFILIAL = IT.IDFILIAL
 and C.CFOP = IT.CFOP

join C100_NF CN
  on CN.IDFILIAL = IT.IDFILIAL
and CN.IDNOTA = IT.IDNOTA
and CN.NOTA_PROPRIA_TERCEIROS = 'T'
AND CN.CPF_CNPJ = IT.CPF_CNPJ

where IT.NOTA_PROPRIA_TERCEIROS = 'T'
;



/* View: VERIFCA_DIF */
CREATE VIEW VERIFCA_DIF(
    IDPEDIDO,
    IDFOLHA,
    DATAPEDIDO,
    TOTALPEDIDO,
    TOTALPRODUTO,
    DIF)
AS
select
P.IDPEDIDO,
p.idfolha,
p.datapedido,
P.TOTALPRODUTO,
round_dec(sum(I.qtdepedido * I.precovenda),2),
(p.TOTALPRODUTO-round_dec(sum(I.qtdepedido * I.precovenda),2))


from PEDIDO P

left join itenspedido I
on  I.IDFILIAL = P.IDFILIAL
and I.IDPEDIDO = P.IDPEDIDO

where P.idfilial = 1
and   p.situacaopedido = 'V'

group by P.IDPEDIDO, P.IDFOLHA, p.datapedido,P.TOTALPRODUTO

having round_dec(sum(i.qtdepedido*i.precovenda),2) <> p.TOTALPRODUTO
;




/******************************************************************************/
/***                              Primary Keys                              ***/
/******************************************************************************/

ALTER TABLE AGENDA_PARTICULAR ADD CONSTRAINT PK_AGENDA_PARTICULAR PRIMARY KEY (IDFILIAL, IDAGENDA);
ALTER TABLE AGENDA_PERSONALIZADA ADD CONSTRAINT PK_AGENDA_PERSONALIZADA PRIMARY KEY (IDUSUARIO, ID);
ALTER TABLE AJUSTEESTOQUE ADD CONSTRAINT PKAJUSTEESTOQUE PRIMARY KEY (IDFILIAL, IDAJUSTEESTOQUE, IDPRODUTO);
ALTER TABLE AJUSTE_DEPOSITO ADD CONSTRAINT PKAJUSTE_DEPOSITO PRIMARY KEY (IDFILIAL, IDAJUSTE, IDPRODUTO);
ALTER TABLE AJUSTE_MATERIA_PRIMA ADD CONSTRAINT PKAJUSTE_MATERIA_PRIMA PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE ARQUIVOS_PALM ADD CONSTRAINT PKARQUIVOS_PALM PRIMARY KEY (IDFILIAL, NOMEARQUIVO);
ALTER TABLE ATIVIDADE ADD CONSTRAINT PKATIVIDADE PRIMARY KEY (IDATIVIDADE);
ALTER TABLE BANCO_FORNECEDOR ADD PRIMARY KEY (IDFORNECEDOR, IDCONTROLE);
ALTER TABLE C100_NF ADD CONSTRAINT PK_C100_NF PRIMARY KEY (IDFILIAL, CPF_CNPJ, NOTA_PROPRIA_TERCEIROS, IDNOTA, SER);
ALTER TABLE C170_ITENS_NF ADD CONSTRAINT PK_C170_ITENS_NF PRIMARY KEY (IDFILIAL, CPF_CNPJ, NOTA_PROPRIA_TERCEIROS, IDNOTA, IDPRODUTO, CONTADOR);
ALTER TABLE CADASTRO_SENHAS ADD CONSTRAINT PK_CADASTRO_SENHAS PRIMARY KEY (IDUSUARIO, SENHA);
ALTER TABLE CAIXA ADD CONSTRAINT PKCAIXA PRIMARY KEY (IDFILIAL, IDCAIXA);
ALTER TABLE CARGA ADD CONSTRAINT PK_CARGA PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE CARREGAMENTO ADD CONSTRAINT PK_CARREGAMENTO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE CARTEIRA ADD CONSTRAINT PKCARTEIRA PRIMARY KEY (IDFILIAL, IDCARTEIRA);
ALTER TABLE CATEGORIA ADD CONSTRAINT PKCATEGORIA PRIMARY KEY (IDCATEGORIA);
ALTER TABLE CATEGORIA_SERVICO ADD CONSTRAINT PK_CATEGORIASERVICO PRIMARY KEY (IDFILIAL, IDCATEGORIA);
ALTER TABLE CCE ADD CONSTRAINT PK_CCE PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE CELULARES ADD CONSTRAINT PK_CELULARES PRIMARY KEY (CNPJ, IMEI);
ALTER TABLE CENTROCUSTO ADD CONSTRAINT PKCENTROCUSTO PRIMARY KEY (IDCENTROCUSTO);
ALTER TABLE CFOP ADD CONSTRAINT PKCFOP PRIMARY KEY (IDFILIAL, IDCFOP);
ALTER TABLE CFOP_TRIBUTO ADD CONSTRAINT PK_CFOP_TRIBUTO PRIMARY KEY (IDFILIAL, IDCFOP, IDTRIBUTO_ORIGEM, IDTRIBUTO_DESTINO);
ALTER TABLE CIDADE ADD CONSTRAINT PKCIDADE PRIMARY KEY (IDCIDADE);
ALTER TABLE CLIENTE ADD CONSTRAINT PKCLIENTE PRIMARY KEY (IDCLIENTE);
ALTER TABLE CLIENTE_FORNECEDOR ADD CONSTRAINT PK_CLIENTE_FORNECEDOR PRIMARY KEY (IDFILIAL, IDCLIENTE, IDFORNECEDOR);
ALTER TABLE CLIENTE_PRODUTO ADD CONSTRAINT PK_CLIENTE_PRODUTO PRIMARY KEY (IDFILIAL, IDCLIENTE, IDPRODUTO);
ALTER TABLE CLIENTE_TABELAPRECO ADD CONSTRAINT PK_CLIENTE_TABELAPRECO PRIMARY KEY (IDFILIAL, IDCLIENTE, IDTABELAPRECO);
ALTER TABLE COBRANCA ADD CONSTRAINT PKCOBRANCA PRIMARY KEY (IDFILIAL, IDCOBRANCA);
ALTER TABLE COBRANCA_CTS_RECEBER ADD CONSTRAINT PK_COBRANCA_CTS_RECEBER PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE CONDICAOPAGTO ADD CONSTRAINT PKPAGTO PRIMARY KEY (IDCONDICAOPAGTO);
ALTER TABLE CONDPGTCLIENTE ADD CONSTRAINT PK_CONDPGTCLIENTE PRIMARY KEY (IDCLIENTE, IDCONDICAOPAGTO);
ALTER TABLE CONFIGURACAO ADD CONSTRAINT PK_CONFIGURACAO PRIMARY KEY (IDFILIAL);
ALTER TABLE CONSIGNACAO ADD CONSTRAINT PK_CONSIGNACAO PRIMARY KEY (IDFILIAL, IDCONSIGNACAO);
ALTER TABLE CONVENIO ADD CONSTRAINT PKCONVENIO PRIMARY KEY (IDCONVENIO);
ALTER TABLE COTA ADD CONSTRAINT PKCOTA PRIMARY KEY (IDFILIAL, IDREPRESENTANTE, IDPRODUTO);
ALTER TABLE COTACAO_PRODUTO ADD PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE COTA_FORNECEDOR ADD CONSTRAINT PK_COTA_FORNECEDOR PRIMARY KEY (IDFILIAL, IDREPRESENTANTE, IDFORNECEDOR);
ALTER TABLE COTA_GRUPO ADD CONSTRAINT PK_COTA_GRUPO PRIMARY KEY (IDFILIAL, IDREPRESENTANTE, IDGRUPO);
ALTER TABLE CTE ADD CONSTRAINT PK_CTE PRIMARY KEY (IDFILIAL, IDPEDIDO);
ALTER TABLE CTE_CHAVE ADD CONSTRAINT PK_CTE_CHAVE PRIMARY KEY (IDFILIAL, IDPEDIDO, CHAVE);
ALTER TABLE CTRL_ENTREGA ADD CONSTRAINT PK_CTRL_ENTREGA PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE DATA_MOVIMENTO ADD CONSTRAINT PK_DATA_MOVIMENTO PRIMARY KEY (IDFILIAL, DATA_MOVTO);
ALTER TABLE DATA_REMESSA ADD CONSTRAINT PK_DATA_REMESSA PRIMARY KEY (BANCO, DATA);
ALTER TABLE DEPOSITO ADD CONSTRAINT PKDEPOSITO PRIMARY KEY (IDFILIAL, IDDEPOSITO);
ALTER TABLE DEVOLUCAO ADD CONSTRAINT PKDEVOLUCAO PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE DEVOLUCAO_ENTRADA ADD CONSTRAINT PKDEVOLUCAO_ENTRADA PRIMARY KEY (IDFILIAL, IDFORNECEDOR, IDNOTA);
ALTER TABLE DIVISAO_FORNECEDOR ADD CONSTRAINT PK_DIVISAO_FORNECEDOR PRIMARY KEY (IDDIVISAO);
ALTER TABLE ENTRADA ADD CONSTRAINT PKENTRADA PRIMARY KEY (IDFILIAL, IDFORNECEDOR, IDNOTA);
ALTER TABLE ENTRADA_PRODUTO ADD CONSTRAINT PK_ENTRADA_PRODUTO PRIMARY KEY (IDFILIAL, IDENTRADA);
ALTER TABLE ENT_MATERIA_PRIMA ADD CONSTRAINT PKENT_MATERIA_PRIMA PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE ESTOQUE_FISICO ADD CONSTRAINT PK_ESTOQUE_FISICO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE ESTOQUE_FISICO_DEPOSITO ADD CONSTRAINT PK_ESTOQUE_FISICO_DEPOSITO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE FILIAL ADD CONSTRAINT PKFILIAL PRIMARY KEY (IDFILIAL);
ALTER TABLE FORMAPAGTO ADD CONSTRAINT PKFORMAPAGTO PRIMARY KEY (IDFORMAPAGTO);
ALTER TABLE FORNECEDOR ADD CONSTRAINT PKFORNECEDOR PRIMARY KEY (IDFORNECEDOR);
ALTER TABLE FORNECEDOR_PRODUTO ADD CONSTRAINT PK_FORNECEDOR_PRODUTO PRIMARY KEY (IDFILIAL, IDFORNECEDOR, IDPRODUTO, IDPRODUTO_FAB);
ALTER TABLE FUNCIONARIO ADD CONSTRAINT PKFUNCIONARIO PRIMARY KEY (IDFILIAL, IDFUNCIONARIO);
ALTER TABLE GENERO_MERCADORIA ADD CONSTRAINT PK_GENERO_MERCADORIA PRIMARY KEY (IDGENERO);
ALTER TABLE GRUPO ADD CONSTRAINT PKGRUPO PRIMARY KEY (IDGRUPO);
ALTER TABLE HISTORICO ADD CONSTRAINT PK_HISTORICO PRIMARY KEY (IDFILIAL, IDHISTORICO);
ALTER TABLE HISTORICO_PEDIDO_PALM ADD CONSTRAINT PK_HISTORICO_PEDIDO_PALM PRIMARY KEY (IDCONTROLE);
ALTER TABLE IBPT ADD CONSTRAINT PK_IBPT PRIMARY KEY (ID_IBPT);
ALTER TABLE IMPRESSORAS_FISCAL ADD CONSTRAINT PK_IMPRESSORAS_FISCAL PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE INVENTARIO ADD CONSTRAINT PKINVENTARIO PRIMARY KEY (IDFILIAL, IDPRODUTO);
ALTER TABLE INVENTARIO_DEPOSITO ADD CONSTRAINT PK_INVENTARIO_DEPOSITO PRIMARY KEY (IDFILIAL, IDDEPOSITO, IDPRODUTO);
ALTER TABLE ITEM_ORCAMENTO ADD CONSTRAINT PK_ITEM_ORCAMENTO PRIMARY KEY (IDFILIAL, IDVENDA, IDCONTADOR);
ALTER TABLE ITENSCARGA ADD CONSTRAINT PK_ITENSCARGA PRIMARY KEY (IDFILIAL, IDCONTROLE, IDROMANEIO);
ALTER TABLE ITENSDEPOSITO ADD CONSTRAINT PKITENSDEPOSITO PRIMARY KEY (IDFILIAL, IDDEPOSITO, IDPRODUTO);
ALTER TABLE ITENSDEVOLUCAO ADD CONSTRAINT PKITENSDEVOLUCAO PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA, CONTADOR);
ALTER TABLE ITENSENTRADA ADD CONSTRAINT PKITENSENTRADA PRIMARY KEY (IDFILIAL, IDFORNECEDOR, IDNOTA, CONTADOR, IDPRODUTO, IDUNIDADEMEDIDA);
ALTER TABLE ITENSNOTA ADD CONSTRAINT PK_ITENSNOTA PRIMARY KEY (IDFILIAL, IDNOTA, TIPONOTA, SERIE, CONTADOR);
ALTER TABLE ITENSNOTA_COMPLEMENTAR ADD CONSTRAINT PKITENSPEDIDO_CP PRIMARY KEY (IDFILIAL, IDPEDIDO, CONTADOR);
ALTER TABLE ITENSORCAMENTO_PDV ADD CONSTRAINT PKITENSORCAMENTO_PDV PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA, CONTADOR);
ALTER TABLE ITENSPEDIDO ADD CONSTRAINT PKITENSPEDIDO PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA, CONTADOR);
ALTER TABLE ITENSPENDENTE ADD CONSTRAINT PKITENSPENDENTE PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA, CONTADOR);
ALTER TABLE ITENSPRODUCAO ADD CONSTRAINT PKITENSPRODUCAO PRIMARY KEY (IDFILIAL, IDPRODUCAO, IDRECEITA, IDMATERIA_PRIMA);
ALTER TABLE ITENSRECEITA ADD CONSTRAINT PKITENSRECEITA PRIMARY KEY (IDFILIAL, IDCONTROLE, IDMATERIA_PRIMA);
ALTER TABLE ITENSROMANEIO ADD CONSTRAINT PKITENSROMANEIO PRIMARY KEY (IDFILIAL, IDCONTROLE, IDPEDIDO, IDFOLHA);
ALTER TABLE ITENSTABELAPRECO ADD CONSTRAINT PKITENSTABELAPRECO PRIMARY KEY (IDFILIAL, IDTABELAPRECO, IDPRODUTO);
ALTER TABLE ITENSVEICULO ADD CONSTRAINT PK_ITENSVEICULO PRIMARY KEY (IDFILIAL, IDPLACA, IDCONTROLE);
ALTER TABLE ITENS_CARREGAMENTO ADD CONSTRAINT PK_ITENS_CARREGAMENTO PRIMARY KEY (IDFILIAL, IDCONTROLE, IDPRODUTO);
ALTER TABLE ITENS_COBRANCA_CTS_RECEBER ADD CONSTRAINT PKITENS_COBRANCA_CTS_RECEBER PRIMARY KEY (IDFILIAL, IDCONTROLE, IDRECEBER, IDFOLHA, IDORDEM);
ALTER TABLE ITENS_CONSIGNACAO ADD CONSTRAINT PK_ITENS_CONSIGNACAO PRIMARY KEY (IDFILIAL, IDCONSIGNACAO, IDPRODUTO);
ALTER TABLE ITENS_COTACAO_PRODUTO ADD PRIMARY KEY (IDFILIAL, IDCONTROLE, IDPRODUTO);
ALTER TABLE ITENS_CTRL_ENTREGA ADD CONSTRAINT PKITENS_CTRL_ENTREGA PRIMARY KEY (IDFILIAL, IDCONTROLE, IDRECEBER, IDFOLHA, IDORDEM);
ALTER TABLE ITENS_DEVOLUCAO_ENTRADA ADD CONSTRAINT PKDEVOLUCAO_ITENSENTRADA PRIMARY KEY (IDFILIAL, IDFORNECEDOR, IDNOTA, IDPRODUTO, IDUNIDADEMEDIDA);
ALTER TABLE ITENS_ENTRADA_PRODUTO ADD CONSTRAINT PK_ITENS_ENTRADA_PRODUTO PRIMARY KEY (IDFILIAL, IDENTRADA, CONTADOR);
ALTER TABLE ITENS_ENT_MATERIA_PRIMA ADD CONSTRAINT PKITENS_ENT_MATERIA_PRIMA PRIMARY KEY (IDFILIAL, IDCONTROLE, IDMATERIA_PRIMA);
ALTER TABLE ITENS_EQUIPE ADD CONSTRAINT PK_ITENS_EQUIPE PRIMARY KEY (IDFILIAL, IDEQUIPE, IDREPRESENTANTE);
ALTER TABLE ITENS_LANCHONETE ADD CONSTRAINT PK_ITENS_LANCHONETE PRIMARY KEY (IDFILIAL, IDPEDIDO, IDMESA, IDCONTADOR);
ALTER TABLE ITENS_VENDA_BALCAO ADD CONSTRAINT PK_ITENS_VENDA_BALCAO PRIMARY KEY (IDFILIAL, TIPO, IDVENDA, CONTADOR);
ALTER TABLE JUST_VISITA ADD CONSTRAINT PKJUST_VISITA PRIMARY KEY (IDFILIAL, IDJUST);
ALTER TABLE KIT_PRODUTO ADD CONSTRAINT PK_KIT_PRODUTO PRIMARY KEY (IDFILIAL, IDPRODUTO, IDKIT);
ALTER TABLE LANCHONETE ADD CONSTRAINT PK_LANCHONETE PRIMARY KEY (IDFILIAL, IDPEDIDO, IDMESA);
ALTER TABLE LOTE ADD CONSTRAINT PKLOTE PRIMARY KEY (IDFILIAL, IDLOTE);
ALTER TABLE MATERIA_PRIMA ADD CONSTRAINT PKMATERIA_PRIMA PRIMARY KEY (IDFILIAL, IDMATERIA_PRIMA);
ALTER TABLE MDEFE_LOCAL_CARREGAMENTO ADD CONSTRAINT PK_MDEFE_LOCAL_CARREGAMENTO PRIMARY KEY (IDFILIAL, IDPEDIDO, IDCIDADE);
ALTER TABLE MDEFE_LOCAL_DESCARREGAMENTO ADD CONSTRAINT PK_MDEFE_LOCAL_DESCARREGAMENTO PRIMARY KEY (IDFILIAL, IDPEDIDO, IDCIDADE);
ALTER TABLE MDFE ADD CONSTRAINT PK_MDFE PRIMARY KEY (IDFILIAL, IDPEDIDO);
ALTER TABLE MESA ADD CONSTRAINT PK_MESA PRIMARY KEY (IDFILIAL, IDMESA);
ALTER TABLE MOVTOCAIXA ADD CONSTRAINT PKMOVROCAIXA PRIMARY KEY (IDFILIAL, IDMOVTOCAIXA);
ALTER TABLE MOVTOFUNCIONARIO ADD CONSTRAINT PKMOVTOFUNCIONARIO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE MOVTO_SUPERVISOR ADD CONSTRAINT PK_MOVTO_SUPERVISOR PRIMARY KEY (IDFILIAL, IDMOVTO_SUPERVISOR);
ALTER TABLE NOTA ADD CONSTRAINT PK_NOTA PRIMARY KEY (IDFILIAL, IDNOTA, TIPONOTA, SERIE);
ALTER TABLE NOTA_COMPLEMENTAR ADD CONSTRAINT PKNOTA_COMPLEMENTAR PRIMARY KEY (IDFILIAL, IDPEDIDO);
ALTER TABLE NOTA_REFERENCIADAS ADD CONSTRAINT PK_NOTA_REFERENCIADAS PRIMARY KEY (IDFILIAL, IDPEDIDO, IDNOTA);
ALTER TABLE OBRA ADD CONSTRAINT PK_OBRA PRIMARY KEY (IDFILIAL, IDOBRA);
ALTER TABLE ORCAMENTO ADD CONSTRAINT PK_ORCAMENTO PRIMARY KEY (IDFILIAL, IDVENDA);
ALTER TABLE ORCAMENTO_PDV ADD CONSTRAINT PKORCAMENTO_PDV PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE ORDEM ADD CONSTRAINT PKORDEM PRIMARY KEY (IDFILIAL, IDORDEM);
ALTER TABLE ORDEM_REQUISICAO ADD CONSTRAINT PKORDEM_REQUISICAO PRIMARY KEY (IDFILIAL, IDORDEM, IDREQUISICAO);
ALTER TABLE OS ADD PRIMARY KEY (IDFILIAL, IDOS);
ALTER TABLE OS_MAOOBRA ADD PRIMARY KEY (IDFILIAL, IDOS, IDITEM);
ALTER TABLE OS_PECAS ADD PRIMARY KEY (IDFILIAL, IDOS, IDITEM);
ALTER TABLE PAGAR ADD CONSTRAINT PKPAGAR PRIMARY KEY (IDFILIAL, IDFORNECEDOR, IDPAGAR, IDORDEM, IDPARCIAL);
ALTER TABLE PAGTOCLIENTE ADD CONSTRAINT PK_PAGTOCLIENTE PRIMARY KEY (IDCLIENTE, IDFORMAPAGTO);
ALTER TABLE PAIS ADD CONSTRAINT PK_PAIS PRIMARY KEY (IDPAIS);
ALTER TABLE PEDIDO ADD CONSTRAINT PKPEDIDO PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE PEDIDOS_IMPRESSO ADD CONSTRAINT PK_PEDIDOS_IMPRESSO PRIMARY KEY (IDCONTROLE);
ALTER TABLE PEDIDO_MAOOBRA ADD PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA, IDITEM);
ALTER TABLE PENDENTE ADD CONSTRAINT PKPENDENTE PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE PERCURSO ADD CONSTRAINT PK_PERCURSO PRIMARY KEY (IDFILIAL, IDPEDIDO, UF);
ALTER TABLE PERMISSOES ADD CONSTRAINT PK_PERMISSOES PRIMARY KEY (IDPROCEDIMENTO, DESCRICAO, IDUSUARIO);
ALTER TABLE PROCEDIMENTO ADD CONSTRAINT PK_PROCEDIMENTO PRIMARY KEY (IDPROCEDIMENTO, DESCRICAO);
ALTER TABLE PRODUCAO ADD CONSTRAINT PKPRODUCAO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE PRODUCAO_CESTA ADD PRIMARY KEY (ID_FILIAL, ID_PRODUCAO);
ALTER TABLE PRODUCAO_CESTA_ITEM ADD CONSTRAINT PK_PRODUCAO_CESTA_ITEM PRIMARY KEY (ID_FILIAL, ID_PRODUCAO, ID_CONTADOR);
ALTER TABLE PRODUTO ADD CONSTRAINT PKPRODUTO PRIMARY KEY (IDFILIAL, IDPRODUTO);
ALTER TABLE PROMOCAO ADD PRIMARY KEY (IDFILIAL, IDPROMOCAO);
ALTER TABLE PROMOCAO_ITEM ADD PRIMARY KEY (IDFILIAL, IDPROMOCAO, IDPRODUTO);
ALTER TABLE PROMOCAO_ITEM_TABPRECO ADD PRIMARY KEY (IDFILIAL, IDPROMOCAO, IDPRODUTO, IDTABELAPRECO);
ALTER TABLE RECEBER ADD CONSTRAINT PKRECEBER PRIMARY KEY (IDFILIAL, IDRECEBER, IDFOLHA, IDORDEM, IDPARCIAL);
ALTER TABLE RECEITA ADD CONSTRAINT PKRECEITA PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE REDUZAO_Z ADD CONSTRAINT PK_REDUZAO_Z PRIMARY KEY (IDCONTROLE);
ALTER TABLE REF_NFE_PEDIDO_DEV ADD CONSTRAINT PK_REF_NFE_PEDIDO_DEV PRIMARY KEY (IDFILIAL, IDPEDIDO, IDFOLHA, CHAVE);
ALTER TABLE REGIAO ADD CONSTRAINT PKREGIAO PRIMARY KEY (IDREGIAO);
ALTER TABLE REGIAO_ROMANEIO ADD CONSTRAINT PKREGIAO_ROMANEIO PRIMARY KEY (IDFILIAL, IDCONTROLE, IDREGIAO);
ALTER TABLE REL_MOVIMENTACAO ADD CONSTRAINT PK_REL_MOVIMENTACAO PRIMARY KEY (IDFILIAL, DATA, IDCONTROLE);
ALTER TABLE REPCLIENTE ADD CONSTRAINT PK_REPCLIENTE PRIMARY KEY (IDCLIENTE, IDREPRESENTANTE);
ALTER TABLE REPRESENTANTE ADD CONSTRAINT PKREPRESENTANTE PRIMARY KEY (IDREPRESENTANTE);
ALTER TABLE REPRESENTANTE_PRODUTO ADD CONSTRAINT PK_REPRESENTANTE_PRODUTO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE REPRESENTANTE_ROMANEIO ADD CONSTRAINT PKREPRESENTANTE_ROMANEIO PRIMARY KEY (IDFILIAL, IDCONTROLE, IDREPRESENTANTE);
ALTER TABLE ROMANEIO ADD CONSTRAINT PKROMANEIO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE ROMANEIO_PRODUTO ADD CONSTRAINT PK_ROMANEIO_PRODUTO PRIMARY KEY (IDFILIAL, IDROMANEIO, IDPRODUTO);
ALTER TABLE SANGRIA_SUPRIMENTO ADD CONSTRAINT PK_SANGRIA_SUPRIMENTO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE SEQUENCIA_VISITA ADD CONSTRAINT PKSEQUENCIA_VISITA PRIMARY KEY (IDFILIAL, IDREPRESENTANTE, IDCLIENTE);
ALTER TABLE SKIN ADD CONSTRAINT PK_SKIN PRIMARY KEY (IDSKIN);
ALTER TABLE SPED_0100 ADD CONSTRAINT PK_SPED_0100 PRIMARY KEY (CPF);
ALTER TABLE SPED_0150 ADD CONSTRAINT PK_SPED_0150 PRIMARY KEY (IDPARTICIPANTE);
ALTER TABLE SUB_ATIVIDADE ADD CONSTRAINT PK_SUB_ATIVIDADE PRIMARY KEY (IDSUB_ATIVIDADE);
ALTER TABLE SUB_CONVENIO ADD CONSTRAINT PK_SUB_CONVENIO PRIMARY KEY (IDSUB_CONVENIO);
ALTER TABLE SUB_GRUPO ADD CONSTRAINT PK_SUB_GRUPO PRIMARY KEY (IDSUB_GRUPO);
ALTER TABLE SUB_REGIAO ADD CONSTRAINT PKSUB_REGIAO PRIMARY KEY (IDREGIAO, IDSUB_REGIAO);
ALTER TABLE TABELAPRECO ADD CONSTRAINT PKTABELAPRECO PRIMARY KEY (IDFILIAL, IDTABELAPRECO);
ALTER TABLE TIPI ADD CONSTRAINT PK_TIPI PRIMARY KEY (NCM);
ALTER TABLE TIPO_MERCADORIA ADD CONSTRAINT PK_TIPO_MERCADORIA PRIMARY KEY (IDTIPOMERCADORIA);
ALTER TABLE TIPO_SERVICO ADD CONSTRAINT PK_TIPOSERVICO PRIMARY KEY (IDTIPO, IDFILIAL);
ALTER TABLE TRANSFERENCIA_DEPOSITO ADD CONSTRAINT PK_TRANSFERENCIA_DEPOSITO PRIMARY KEY (IDFILIAL, IDCONTROLE);
ALTER TABLE TRANSPORTADORA ADD CONSTRAINT PK_TRANSPORTADORA PRIMARY KEY (IDTRANSPORTADORA);
ALTER TABLE TRIBUTO ADD CONSTRAINT PKTRIBUTO PRIMARY KEY (IDFILIAL, IDTRIBUTO);
ALTER TABLE TRIBUTO_ESTADO ADD CONSTRAINT PK_TRIBUTO_ESTADO PRIMARY KEY (IDFILIAL, IDPRODUTO, UF);
ALTER TABLE UNIDADEMEDIDA ADD CONSTRAINT PKUNIDADEMEDIDA PRIMARY KEY (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE UNIDADEPRODUTO ADD CONSTRAINT PKUNIDADEPRODUTO PRIMARY KEY (IDFILIAL, IDPRODUTO, IDUNIDADEMEDIDA);
ALTER TABLE USUARIO ADD CONSTRAINT PKUSUARIO PRIMARY KEY (IDFILIAL, IDUSUARIO);
ALTER TABLE VEICULO ADD CONSTRAINT PKVEICULO PRIMARY KEY (IDFILIAL, IDPLACA);
ALTER TABLE VEICULO_CLIENTE ADD CONSTRAINT PKVEICULO_CLIENTE PRIMARY KEY (IDFILIAL, IDPLACA);
ALTER TABLE VENCTO_PRODUTO ADD CONSTRAINT PK_VENCTO_PRODUTO PRIMARY KEY (IDFILIAL, IDPRODUTO, DATA_VENCTO);
ALTER TABLE VENDA_BALCAO ADD CONSTRAINT PK_VENDA_BALCAO PRIMARY KEY (IDFILIAL, TIPO, IDVENDA);


/******************************************************************************/
/***                              Foreign Keys                              ***/
/******************************************************************************/

ALTER TABLE AJUSTEESTOQUE ADD CONSTRAINT FKCENTROCUSTO_AJUSTEESTOQUE FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE AJUSTEESTOQUE ADD CONSTRAINT FKPRODUTO_AJUSTEESTOQUE FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE AJUSTEESTOQUE ADD CONSTRAINT FKUNIDADEMEDIDA_AJUSTEESTOQUE FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE AJUSTE_DEPOSITO ADD CONSTRAINT FKAJUSTE_DEP_PRODUTO FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE AJUSTE_MATERIA_PRIMA ADD CONSTRAINT FK_AJUSTE_MATERIA_PRIMA_2 FOREIGN KEY (IDFILIAL, IDMATERIA_PRIMA) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO)
  USING INDEX FKAJUSTE_MP_MATERIA;
ALTER TABLE BANCO_FORNECEDOR ADD FOREIGN KEY (IDFORNECEDOR) REFERENCES FORNECEDOR (IDFORNECEDOR);
ALTER TABLE BANCO_FORNECEDOR ADD FOREIGN KEY (IDFORNECEDOR) REFERENCES FORNECEDOR (IDFORNECEDOR);
ALTER TABLE CARTEIRA ADD CONSTRAINT FKCLIENTE_CARTEIRA FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE CARTEIRA ADD CONSTRAINT FKREPRESENTANTE_CARTEIRA FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE CENTROCUSTO ADD CONSTRAINT FKCATEGORIA_CENTROCUSTO FOREIGN KEY (IDCATEGORIA) REFERENCES CATEGORIA (IDCATEGORIA);
ALTER TABLE CFOP ADD CONSTRAINT FK_CFOP_2 FOREIGN KEY (IDFILIAL, IDTRIBUTO) REFERENCES TRIBUTO (IDFILIAL, IDTRIBUTO);
ALTER TABLE CLIENTE ADD CONSTRAINT FKATIVIDADE_CLIENTE FOREIGN KEY (IDATIVIDADE) REFERENCES ATIVIDADE (IDATIVIDADE);
ALTER TABLE CLIENTE ADD CONSTRAINT FKCODADE_CLIENTE FOREIGN KEY (IDCIDADE) REFERENCES CIDADE (IDCIDADE);
ALTER TABLE CLIENTE ADD CONSTRAINT FKCONVENIO_CLIENTE FOREIGN KEY (IDCONVENIO) REFERENCES CONVENIO (IDCONVENIO);
ALTER TABLE CLIENTE ADD CONSTRAINT FKREGIAO_CLIENTE FOREIGN KEY (IDREGIAO) REFERENCES REGIAO (IDREGIAO);
ALTER TABLE CLIENTE_TABELAPRECO ADD CONSTRAINT FKCLIENTE_TABELAPRECO FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE CORTES ADD CONSTRAINT FKCLIENTE_CORTES FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE CORTES ADD CONSTRAINT FKREPRESENTANTE_CORTES FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE COTA ADD CONSTRAINT FKPRODUTO_COTA FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE COTA ADD CONSTRAINT FKREPRESENTANTE_COTA FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE COTACAO_PRODUTO ADD FOREIGN KEY (IDFORNECEDOR) REFERENCES FORNECEDOR (IDFORNECEDOR);
ALTER TABLE COTACAO_PRODUTO ADD FOREIGN KEY (IDFORNECEDOR) REFERENCES FORNECEDOR (IDFORNECEDOR);
ALTER TABLE DEVOLUCAO ADD CONSTRAINT FKCENTROCUSTO_DEVOLUCAO FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE DEVOLUCAO ADD CONSTRAINT FKCLIENTE_DEVOLUCAO FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE DEVOLUCAO ADD CONSTRAINT FKCONDICAOPAGTO_DEVOLUCAO FOREIGN KEY (IDCONDICAOPAGTO) REFERENCES CONDICAOPAGTO (IDCONDICAOPAGTO);
ALTER TABLE DEVOLUCAO ADD CONSTRAINT FKFORMAPAGTO_DEVOLUCAO FOREIGN KEY (IDFORMAPAGTO) REFERENCES FORMAPAGTO (IDFORMAPAGTO);
ALTER TABLE DEVOLUCAO ADD CONSTRAINT FKREPRESENTANTE_DEVOLUCAO FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE DEVOLUCAO_ENTRADA ADD CONSTRAINT FKCENTROCUSTO_DEVOLUCAO_ENTRADA FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE DEVOLUCAO_ENTRADA ADD CONSTRAINT FKFORMAPAGTO_DEVOLUCAO_ENTRADA FOREIGN KEY (IDFORMAPAGTO) REFERENCES FORMAPAGTO (IDFORMAPAGTO);
ALTER TABLE DEVOLUCAO_ENTRADA ADD CONSTRAINT FKFORNECEDOR_DEVOLUCAO_ENTRADA FOREIGN KEY (IDFORNECEDOR) REFERENCES FORNECEDOR (IDFORNECEDOR);
ALTER TABLE ENTRADA ADD CONSTRAINT FKCENTROCUSTO_ENTRADA FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE ENTRADA ADD CONSTRAINT FKCONDICAOPAGTO_ENTRADA FOREIGN KEY (IDCONDICAOPAGTO) REFERENCES CONDICAOPAGTO (IDCONDICAOPAGTO);
ALTER TABLE ENTRADA ADD CONSTRAINT FKFORMAPAGTO_ENTRADA FOREIGN KEY (IDFORMAPAGTO) REFERENCES FORMAPAGTO (IDFORMAPAGTO);
ALTER TABLE ENTRADA ADD CONSTRAINT FKFORNECEDOR_ENTRADA FOREIGN KEY (IDFORNECEDOR) REFERENCES FORNECEDOR (IDFORNECEDOR);
ALTER TABLE FORNECEDOR ADD CONSTRAINT FKCIDADE_FORNECEDOR FOREIGN KEY (IDCIDADE) REFERENCES CIDADE (IDCIDADE);
ALTER TABLE FUNCIONARIO ADD CONSTRAINT FKCIDADE_FUNCIONARIO FOREIGN KEY (IDCIDADE) REFERENCES CIDADE (IDCIDADE);
ALTER TABLE INVENTARIO ADD CONSTRAINT FKPRODUTO_INVENTARIO FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE INVENTARIO ADD CONSTRAINT FKUNIDADEMEDIDA_INVENTARIO FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE ITEM_ORCAMENTO ADD CONSTRAINT FK_ITEM_ORCAMENTO FOREIGN KEY (IDFILIAL, IDVENDA) REFERENCES ORCAMENTO (IDFILIAL, IDVENDA);
ALTER TABLE ITEM_ORCAMENTO ADD CONSTRAINT FK_ITEM_ORCAMENTO1 FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITEM_ORCAMENTO ADD CONSTRAINT FK_ITEM_ORCAMENTO_2 FOREIGN KEY (IDFILIAL, IDDEPOSITO) REFERENCES DEPOSITO (IDFILIAL, IDDEPOSITO);
ALTER TABLE ITENSDEVOLUCAO ADD CONSTRAINT FKDEVOLUCAO_ITENSDEVOLUCAO FOREIGN KEY (IDFILIAL, IDPEDIDO, IDFOLHA) REFERENCES DEVOLUCAO (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE ITENSDEVOLUCAO ADD CONSTRAINT FKPRODUTO_ITENSDEVOLUCAO FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENSDEVOLUCAO ADD CONSTRAINT FKUNIDADEMEDIDA_DEVOLUCAO FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE ITENSDEVOLUCAO ADD CONSTRAINT FK_ITENSDEVOLUCAO FOREIGN KEY (IDFILIAL, IDMOVTO_SUPERVISOR) REFERENCES MOVTO_SUPERVISOR (IDFILIAL, IDMOVTO_SUPERVISOR);
ALTER TABLE ITENSENTRADA ADD CONSTRAINT FKENTRADA_ITENSENTRADA FOREIGN KEY (IDFILIAL, IDFORNECEDOR, IDNOTA) REFERENCES ENTRADA (IDFILIAL, IDFORNECEDOR, IDNOTA);
ALTER TABLE ITENSENTRADA ADD CONSTRAINT FKPRODUTO_ITENSENTRADA FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENSENTRADA ADD CONSTRAINT FKTRIBUTO_ITENSENTRADA FOREIGN KEY (IDFILIAL, IDTRIBUTO) REFERENCES TRIBUTO (IDFILIAL, IDTRIBUTO);
ALTER TABLE ITENSENTRADA ADD CONSTRAINT FKUNIDADEMEDIDA_ITENSENTRADA FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE ITENSNOTA ADD CONSTRAINT FKPRODUTO_ITENSNOTA FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENSNOTA ADD CONSTRAINT FK_ITENSNOTA_1 FOREIGN KEY (IDFILIAL, IDNOTA, TIPONOTA, SERIE) REFERENCES NOTA (IDFILIAL, IDNOTA, TIPONOTA, SERIE);
ALTER TABLE ITENSNOTA_COMPLEMENTAR ADD CONSTRAINT FKPEDIDO_ITENSPEDIDO_CP FOREIGN KEY (IDFILIAL, IDPEDIDO) REFERENCES NOTA_COMPLEMENTAR (IDFILIAL, IDPEDIDO);
ALTER TABLE ITENSNOTA_COMPLEMENTAR ADD CONSTRAINT FKPRODUTO_ITENSPEDIDO_CP FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENSNOTA_COMPLEMENTAR ADD CONSTRAINT FKUNIDADEMEDIDA_PEDIDO_CP FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE ITENSORCAMENTO_PDV ADD CONSTRAINT FKPEDIDO_ITENSORCAMENTO_PDV FOREIGN KEY (IDFILIAL, IDPEDIDO, IDFOLHA) REFERENCES PEDIDO (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE ITENSORCAMENTO_PDV ADD CONSTRAINT FKPRODUTO_ITENSORCAMENTO_PDV FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENSORCAMENTO_PDV ADD CONSTRAINT FKUNIDA_ITENSORCAMENTO_PDV FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE ITENSPEDIDO ADD CONSTRAINT FKPEDIDO_ITENSPEDIDO FOREIGN KEY (IDFILIAL, IDPEDIDO, IDFOLHA) REFERENCES PEDIDO (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE ITENSPEDIDO ADD CONSTRAINT FKPRODUTO_ITENSPEDIDO FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENSPEDIDO ADD CONSTRAINT FKUNIDADEMEDIDA_PEDIDO FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE ITENSPENDENTE ADD CONSTRAINT FKPEDIDO_ITENSPENDENTE FOREIGN KEY (IDFILIAL, IDPEDIDO, IDFOLHA) REFERENCES PENDENTE (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE ITENSPENDENTE ADD CONSTRAINT FKPRODUTO_ITENSPENDENTE FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENSPENDENTE ADD CONSTRAINT FKUNIDADEMEDIDA_ITENSPENDENTE FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE ITENSRECEITA ADD CONSTRAINT FK_ITENSRECEITA_1 FOREIGN KEY (IDFILIAL, IDMATERIA_PRIMA) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO)
  USING INDEX FKMATERIA_ITENSRECEITA;
ALTER TABLE ITENSROMANEIO ADD CONSTRAINT FKROMANEIO_ITENSROMANEIO FOREIGN KEY (IDFILIAL, IDCONTROLE) REFERENCES ROMANEIO (IDFILIAL, IDCONTROLE);
ALTER TABLE ITENSTABELAPRECO ADD CONSTRAINT FKPRODUTO_ITENSTABELAPRECO FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENSTABELAPRECO ADD CONSTRAINT FKTABELAPRECO_ITENSTABELAPRECO FOREIGN KEY (IDFILIAL, IDTABELAPRECO) REFERENCES TABELAPRECO (IDFILIAL, IDTABELAPRECO);
ALTER TABLE ITENS_CONSIGNACAO ADD CONSTRAINT FK_ITENS_CONSIGNACAO_2 FOREIGN KEY (IDFILIAL, IDCONSIGNACAO) REFERENCES CONSIGNACAO (IDFILIAL, IDCONSIGNACAO);
ALTER TABLE ITENS_COTACAO_PRODUTO ADD CONSTRAINT FK_ITENS_COTACAO_PRODUTO_2 FOREIGN KEY (IDFILIAL, IDCONTROLE) REFERENCES COTACAO_PRODUTO (IDFILIAL, IDCONTROLE);
ALTER TABLE ITENS_COTACAO_PRODUTO ADD FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENS_DEVOLUCAO_ENTRADA ADD FOREIGN KEY (IDFILIAL, IDFORNECEDOR, IDNOTA) REFERENCES DEVOLUCAO_ENTRADA (IDFILIAL, IDFORNECEDOR, IDNOTA);
ALTER TABLE ITENS_DEVOLUCAO_ENTRADA ADD FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE ITENS_DEVOLUCAO_ENTRADA ADD FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE MOVTOCAIXA ADD CONSTRAINT FKCAIXA_MOVTOCAIXA FOREIGN KEY (IDFILIAL, IDCAIXA) REFERENCES CAIXA (IDFILIAL, IDCAIXA);
ALTER TABLE MOVTOCAIXA ADD CONSTRAINT FKCENTROCUSTO_MOVTOCAIXA FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE MOVTOFUNCIONARIO ADD CONSTRAINT FKFUNCIONARIO_MOVTOFUNCIONARIO FOREIGN KEY (IDFILIAL, IDFUNCIONARIO) REFERENCES FUNCIONARIO (IDFILIAL, IDFUNCIONARIO);
ALTER TABLE MOVTO_SUPERVISOR ADD CONSTRAINT FK_MOVTO_SUPERVISOR FOREIGN KEY (IDSUPERVISOR) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE NOTA ADD CONSTRAINT FKCENTROCUSTO_NOTA FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE NOTA ADD CONSTRAINT FKCLIENTE_NOTA FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE NOTA ADD CONSTRAINT FKCONDICAOPAGTO_NOTA FOREIGN KEY (IDCONDICAOPAGTO) REFERENCES CONDICAOPAGTO (IDCONDICAOPAGTO);
ALTER TABLE NOTA ADD CONSTRAINT FKFORMAPAGTO_NOTA FOREIGN KEY (IDFORMAPAGTO) REFERENCES FORMAPAGTO (IDFORMAPAGTO);
ALTER TABLE NOTA ADD CONSTRAINT FKREPRESENTANTE_NOTA FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE NOTA_COMPLEMENTAR ADD CONSTRAINT FKCENTROCUSTO_PEDIDO_CP FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE NOTA_COMPLEMENTAR ADD CONSTRAINT FKCLIENTE_PEDIDO_CP FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE NOTA_COMPLEMENTAR ADD CONSTRAINT FKREPRESENTANTE_PEDIDO_CP FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE ORCAMENTO ADD CONSTRAINT FK_ORCAMENTO1 FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE ORCAMENTO ADD CONSTRAINT FK_ORCAMENTO2 FOREIGN KEY (IDCOND_PAGTO) REFERENCES CONDICAOPAGTO (IDCONDICAOPAGTO);
ALTER TABLE ORCAMENTO ADD CONSTRAINT FK_ORCAMENTO3 FOREIGN KEY (IDFILIAL, IDCFOP) REFERENCES CFOP (IDFILIAL, IDCFOP);
ALTER TABLE ORCAMENTO ADD CONSTRAINT FK_ORCAMENTO_2 FOREIGN KEY (IDFILIAL, IDDEPOSITO) REFERENCES DEPOSITO (IDFILIAL, IDDEPOSITO);
ALTER TABLE ORCAMENTO ADD CONSTRAINT FK_ORCAMENTO_3 FOREIGN KEY (IDFILIAL, IDCAIXA) REFERENCES CAIXA (IDFILIAL, IDCAIXA);
ALTER TABLE ORCAMENTO_PDV ADD CONSTRAINT FKCENTROCUSTO_ORCAMENTO_PDV FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE ORCAMENTO_PDV ADD CONSTRAINT FKCLIENTE_ORCAMENTO_PDV FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE ORCAMENTO_PDV ADD CONSTRAINT FKCONDICAOPAGTO_ORCAMENTO_PDV FOREIGN KEY (IDCONDICAOPAGTO) REFERENCES CONDICAOPAGTO (IDCONDICAOPAGTO);
ALTER TABLE ORCAMENTO_PDV ADD CONSTRAINT FKREPRESENTANTE_ORCAMENTO_PDV FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE OS ADD CONSTRAINT FK_OS FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE OS ADD CONSTRAINT FK_OS1 FOREIGN KEY (IDFILIAL, IDPLACA) REFERENCES VEICULO (IDFILIAL, IDPLACA);
ALTER TABLE OS ADD CONSTRAINT FK_OS3 FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE OS ADD CONSTRAINT FK_OS_1 FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE OS ADD CONSTRAINT FK_OS_2 FOREIGN KEY (IDFORMAPAGTO) REFERENCES FORMAPAGTO (IDFORMAPAGTO);
ALTER TABLE OS ADD CONSTRAINT FK_OS_3 FOREIGN KEY (IDCONDICAOPAGTO) REFERENCES CONDICAOPAGTO (IDCONDICAOPAGTO);
ALTER TABLE OS ADD CONSTRAINT FK_OS_4 FOREIGN KEY (IDFILIAL, IDTABELAPRECO) REFERENCES TABELAPRECO (IDFILIAL, IDTABELAPRECO);
ALTER TABLE OS_MAOOBRA ADD CONSTRAINT FK_OS_MAOOBRA FOREIGN KEY (IDFILIAL, IDOS) REFERENCES OS (IDFILIAL, IDOS);
ALTER TABLE OS_PECAS ADD CONSTRAINT FK_OS_PECAS FOREIGN KEY (IDFILIAL, IDOS) REFERENCES OS (IDFILIAL, IDOS);
ALTER TABLE PAGAR ADD CONSTRAINT FKCENTROCUSTO_PAGAR FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE PAGAR ADD CONSTRAINT FKFORMAPAGTO_PAGAR FOREIGN KEY (IDFORMAPAGTO) REFERENCES FORMAPAGTO (IDFORMAPAGTO);
ALTER TABLE PAGAR ADD CONSTRAINT FKFORNECEDOR_PAGAR FOREIGN KEY (IDFORNECEDOR) REFERENCES FORNECEDOR (IDFORNECEDOR);
ALTER TABLE PEDIDO ADD CONSTRAINT FKCENTROCUSTO_PEDIDO FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE PEDIDO ADD CONSTRAINT FKCLIENTE_PEDIDO FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE PEDIDO ADD CONSTRAINT FKREPRESENTANTE_PEDIDO FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE PEDIDO_MAOOBRA ADD CONSTRAINT FK_PEDIDO_MAOOBRA FOREIGN KEY (IDFILIAL, IDPEDIDO, IDFOLHA) REFERENCES PEDIDO (IDFILIAL, IDPEDIDO, IDFOLHA);
ALTER TABLE PENDENTE ADD CONSTRAINT FKCENTROCUSTO_PENDENTE FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE PENDENTE ADD CONSTRAINT FKCLIENTE_PENDENTE FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE PENDENTE ADD CONSTRAINT FKCONDICAOPAGTO_PENDENTE FOREIGN KEY (IDCONDICAOPAGTO) REFERENCES CONDICAOPAGTO (IDCONDICAOPAGTO);
ALTER TABLE PENDENTE ADD CONSTRAINT FKFORMAPAGTO_PENDENTE FOREIGN KEY (IDFORMAPAGTO) REFERENCES FORMAPAGTO (IDFORMAPAGTO);
ALTER TABLE PENDENTE ADD CONSTRAINT FKREPRESENTANTE_PENDENTE FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE PRODUCAO ADD CONSTRAINT FKRECEITA_PRODUCAO FOREIGN KEY (IDFILIAL, IDRECEITA) REFERENCES RECEITA (IDFILIAL, IDCONTROLE);
ALTER TABLE PRODUCAO_CESTA_ITEM ADD CONSTRAINT FK_PRODUCAO_CESTA_ITEM FOREIGN KEY (ID_FILIAL, ID_PRODUCAO) REFERENCES PRODUCAO_CESTA (ID_FILIAL, ID_PRODUCAO);
ALTER TABLE PRODUTO ADD CONSTRAINT FKFORNECEDOR_PRODUTO FOREIGN KEY (IDFORNECEDOR) REFERENCES FORNECEDOR (IDFORNECEDOR);
ALTER TABLE PRODUTO ADD CONSTRAINT FKGRUPO_PRODUTO FOREIGN KEY (IDGRUPO) REFERENCES GRUPO (IDGRUPO);
ALTER TABLE PRODUTO ADD CONSTRAINT FKTRIBUTO_CLIENTE FOREIGN KEY (IDFILIAL, IDTRIBUTO) REFERENCES TRIBUTO (IDFILIAL, IDTRIBUTO);
ALTER TABLE PROMOCAO_ITEM ADD CONSTRAINT FK_PROMOCAO_ITEM FOREIGN KEY (IDFILIAL, IDPROMOCAO) REFERENCES PROMOCAO (IDFILIAL, IDPROMOCAO);
ALTER TABLE PROMOCAO_ITEM_TABPRECO ADD CONSTRAINT FK_PROMOCAO_ITEM_TABPRECO FOREIGN KEY (IDFILIAL, IDPROMOCAO, IDPRODUTO) REFERENCES PROMOCAO_ITEM (IDFILIAL, IDPROMOCAO, IDPRODUTO);
ALTER TABLE PROMOCAO_ITEM_TABPRECO ADD CONSTRAINT FK_PROMOCAO_ITEM_TABPRECO1 FOREIGN KEY (IDFILIAL, IDTABELAPRECO) REFERENCES TABELAPRECO (IDFILIAL, IDTABELAPRECO);
ALTER TABLE RECEBER ADD CONSTRAINT FKCENTROCUSTO_RECEBER FOREIGN KEY (IDCENTROCUSTO) REFERENCES CENTROCUSTO (IDCENTROCUSTO);
ALTER TABLE RECEBER ADD CONSTRAINT FKFORMAPAGTO_RECEBER FOREIGN KEY (IDFORMAPAGTO) REFERENCES FORMAPAGTO (IDFORMAPAGTO);
ALTER TABLE RECEBER ADD CONSTRAINT FKREPRESENTANTE_RECEBER FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE REPRESENTANTE ADD CONSTRAINT FKCIDADE_REPRESENTANTE FOREIGN KEY (IDCIDADE) REFERENCES CIDADE (IDCIDADE);
ALTER TABLE REPRESENTANTE ADD CONSTRAINT FKCOBRANCA_REPRESENTANTE FOREIGN KEY (IDFILIAL, IDCOBRANCA) REFERENCES COBRANCA (IDFILIAL, IDCOBRANCA);
ALTER TABLE REPRESENTANTE_PRODUTO ADD CONSTRAINT FK_REPRESENTANTE_PRODUTO FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE) ON DELETE CASCADE;
ALTER TABLE REPRESENTANTE_PRODUTO ADD CONSTRAINT FK_REPRESENTANTE_PRODUTO1 FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO) ON DELETE CASCADE;
ALTER TABLE ROMANEIO_PRODUTO ADD CONSTRAINT FK_ROMANEIO_PRODUTO_2 FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE SEQUENCIA_VISITA ADD CONSTRAINT FKCLIENTE_SEQUENCIAVISITA FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE SEQUENCIA_VISITA ADD CONSTRAINT FKREPRESENTANTE_SEQUENCIAVISITA FOREIGN KEY (IDREPRESENTANTE) REFERENCES REPRESENTANTE (IDREPRESENTANTE);
ALTER TABLE UNIDADEPRODUTO ADD CONSTRAINT FKPRODUTO_UNIDADEPRODUTO FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO);
ALTER TABLE UNIDADEPRODUTO ADD CONSTRAINT FKUNIDADEMEDIDA_UNIDADEPRODUTO FOREIGN KEY (IDFILIAL, IDUNIDADEMEDIDA) REFERENCES UNIDADEMEDIDA (IDFILIAL, IDUNIDADEMEDIDA);
ALTER TABLE VEICULO ADD CONSTRAINT FK_VEICULO_1 FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE VEICULO_CLIENTE ADD CONSTRAINT FK_VEICULO_CLIENTE_1 FOREIGN KEY (IDCLIENTE) REFERENCES CLIENTE (IDCLIENTE);
ALTER TABLE VENCTO_PRODUTO ADD CONSTRAINT FK_VENCTO_PRODUTO FOREIGN KEY (IDFILIAL, IDPRODUTO) REFERENCES PRODUTO (IDFILIAL, IDPRODUTO) ON DELETE CASCADE;


/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/

CREATE INDEX AJUSTEESTOQUE_IDX1 ON AJUSTEESTOQUE (IDFILIAL, DTAJUSTE);
CREATE INDEX C100_NF_IDX2 ON C100_NF (IDFILIAL, NOTA_PROPRIA_TERCEIROS, DT_E_S);
CREATE INDEX C170_ITENS_NF_IDX2 ON C170_ITENS_NF (IDFILIAL, CPF_CNPJ);
CREATE INDEX C170_ITENS_NF_IDX3 ON C170_ITENS_NF (IDFILIAL, IDNOTA, NOTA_PROPRIA_TERCEIROS);
CREATE INDEX CHEQUES_IDX1 ON CHEQUES (IDFILIAL, DATACHEQUE);
CREATE INDEX CHEQUES_IDX2 ON CHEQUES (IDFILIAL, DATAPRE);
CREATE INDEX CHEQUES_IDX3 ON CHEQUES (IDFILIAL, DATAPAGAMENTO);
CREATE INDEX CLIENTE_IDX1 ON CLIENTE (EXCLUIDO);
CREATE INDEX IDX_CLIENTEBALCAO ON CLIENTE_BALCAO (IDFILIAL, DTPEDIDO);
CREATE INDEX CORTES_IDX1 ON CORTES (IDFILIAL, DATAPEDIDO);
CREATE INDEX DEVOLUCAO_IDX1 ON DEVOLUCAO (IDFILIAL, DATAPEDIDO);
CREATE INDEX ENTRADA_IDX1 ON ENTRADA (IDFILIAL, DATAENTRADA);
CREATE INDEX ENTRADA_IDX2 ON ENTRADA (IDFILIAL, DATANOTAFISCAL);
CREATE INDEX ESTOQUE_FISICO_IDX1 ON ESTOQUE_FISICO (IDFILIAL, DTMOVTO, IDPRODUTO);
CREATE INDEX ESTOQUE_FISICO_IDX2 ON ESTOQUE_FISICO (IDFILIAL, IDCONTROLE);
CREATE INDEX ESTOQUE_FISICO_IDX3 ON ESTOQUE_FISICO (IDFILIAL, IDPRODUTO);
CREATE INDEX ESTOQUE_FISICO_DEPOSITO_IDX1 ON ESTOQUE_FISICO_DEPOSITO (IDFILIAL, IDPRODUTO, DTMOVTO);
CREATE INDEX ITENSPEDIDOPALM_IDX1 ON ITENSPEDIDOPALM (IDFILIAL, IDPEDIDOPALM, IDREPRESENTANTE, IDPRODUTO);
CREATE INDEX ITENSPEDIDOPALM_AUX_IDX1 ON ITENSPEDIDOPALM_AUX (IDFILIAL, IDPEDIDOPALM, IDREPRESENTANTE, IDPRODUTO);
CREATE INDEX ITENSROMANEIO_IDX1 ON ITENSROMANEIO (IDFILIAL, IDPEDIDO, IDFOLHA);
CREATE INDEX ITENS_CONSIGNACAO_IDX1 ON ITENS_CONSIGNACAO (IDPRODUTO);
CREATE INDEX LOG_ALTERACAO_ANDROID_IDX1 ON LOG_ALTERACAO_ANDROID (IDFILIAL, IDREPRESENTANTE, TIPO);
CREATE INDEX MANIFESTO_NFE_IDX1 ON MANIFESTO_NFE (IDFILIAL, NSU, CHAVE);
CREATE INDEX IDX_MENSAGEM_PALM ON MENSAGEM_PALM (IDFILIAL, DATA);
CREATE INDEX MOVTOCAIXA_IDX1 ON MOVTOCAIXA (IDFILIAL, DTMOVIMENTO);
CREATE INDEX NOTA_IDX1 ON NOTA (IDFILIAL, DATANOTA);
CREATE INDEX NOTA_IDX2 ON NOTA (IDFILIAL, IDPEDIDO, IDFOLHA);
CREATE INDEX NOTA_COMPLEMENTAR_IDX1 ON NOTA_COMPLEMENTAR (IDFILIAL, DATAPEDIDO);
CREATE INDEX IDX_IDENTRADA ON PAGAR (IDFILIAL, IDFORNECEDOR, IDENTRADA);
CREATE INDEX PAGAR_IDX1 ON PAGAR (IDFILIAL, DATAVENCIMENTO);
CREATE INDEX PAGAR_IDX2 ON PAGAR (IDFILIAL, DATAPAGAMENTO);
CREATE INDEX IDX_PEDIDO_PALM ON PEDIDO (IDFILIAL, IDREPRESENTANTE, IDPEDIDOPALM);
CREATE INDEX PEDIDO_IDX1 ON PEDIDO (IDFILIAL, DATAPEDIDO);
CREATE INDEX PEDIDO_IDX2 ON PEDIDO (IDFILIAL, IDCLIENTE);
CREATE INDEX PEDIDOPALM_IDX1 ON PEDIDOPALM (IDFILIAL, IDPEDIDOPALM, IDREPRESENTANTE);
CREATE INDEX PEDIDOPALM_IDX2 ON PEDIDOPALM (TOTAL_PEDIDO);
CREATE INDEX PEDIDOPALM_AUX_IDX1 ON PEDIDOPALM_AUX (IDFILIAL, IDPEDIDOPALM, IDREPRESENTANTE);
CREATE INDEX PEDIDO_STATUS_IDX1 ON PEDIDO_STATUS (IDFILIAL, IDPEDIDO, IDREPRESENTANTE);
CREATE INDEX PERMISSOES_IDX1 ON PERMISSOES (IDUSUARIO);
CREATE INDEX RECEBER_IDX1 ON RECEBER (IDFILIAL, DATAVENCIMENTO);
CREATE INDEX RECEBER_IDX2 ON RECEBER (IDFILIAL, DATAPAGAMENTO);
CREATE INDEX RECEBER_IDX3 ON RECEBER (IDFILIAL, IDCLIENTE);
CREATE INDEX RECEBER_IDX4 ON RECEBER (IDFILIAL, DATAPAGAMENTO, IDCLIENTE);
CREATE INDEX REF_NOTA_PRODUTOR_IDX1 ON REF_NOTA_PRODUTOR (IDFILIAL, IDPEDIDO, CNPJ_CPF);
CREATE INDEX REF_NOTA_PRODUTOR_IDX2 ON REF_NOTA_PRODUTOR (IDFILIAL, IDCOMPRA, CNPJ_CPF);
CREATE INDEX REL_MOVIMENTACAO_IDX1 ON REL_MOVIMENTACAO (IDFILIAL, IDPEDIDO, IDFOLHA, CONTADOR_PRODUTO);
CREATE INDEX TABELA_AUXILIAR_IDX1 ON TABELA_AUXILIAR (ID);
CREATE INDEX TAB_CEST_IDX1 ON TAB_CEST (NCM);


/******************************************************************************/
/***                                Triggers                                ***/
/******************************************************************************/


SET TERM ^ ;



/******************************************************************************/
/***                          Triggers for tables                           ***/
/******************************************************************************/



/* Trigger: ADMINISTRAR_SISTEMA_BF_INSERT */
CREATE TRIGGER ADMINISTRAR_SISTEMA_BF_INSERT FOR ADMINISTRAR_SISTEMA
ACTIVE BEFORE INSERT POSITION 0
AS
  declare variable vID integer;
begin
  select max(A.IDINDENTIFICADOR) from ADMINISTRAR_SISTEMA A
    where A.IDFILIAL = new.IDFILIAL
  into :vID;

  if (:vID > 0) then
    new.IDINDENTIFICADOR = :vID+1;
  else
    new.IDINDENTIFICADOR = 1;
end
^

/* Trigger: AGENDA_PERSONALIZADA_BF_INSERT */
CREATE TRIGGER AGENDA_PERSONALIZADA_BF_INSERT FOR AGENDA_PERSONALIZADA
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   select max(ID)+1 from AGENDA_PERSONALIZADA
     where IDUSUARIO = new.IDUSUARIO
     into new.ID;
   if (new.id is null) then new.ID = 1;
end
^

/* Trigger: AJUSTEESTOQUE_DELETE_DEPOSITO */
CREATE TRIGGER AJUSTEESTOQUE_DELETE_DEPOSITO FOR AJUSTEESTOQUE
ACTIVE BEFORE DELETE POSITION 1
AS
begin
  if (old.DEPOSITO = 'S') then begin
       if (old.TIPOOPERACAO='+') then begin
          execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,old.IDDEPOSITO,old.IDPRODUTO,(old.QTDEAJUSTE*old.FATORCONVERSAO),'-','EXCLUSÃO DE AJUSTE DE ESTOQUE: ' || old.IDAJUSTEESTOQUE);
       end
       else begin
          execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,old.IDDEPOSITO,old.IDPRODUTO,(old.QTDEAJUSTE*old.FATORCONVERSAO),'+','EXCLUSÃO DE AJUSTE DE ESTOQUE: ' || old.IDAJUSTEESTOQUE);
       end
   end
end
^

/* Trigger: AJUSTEESTOQUE_INSERT_DEPOSITO */
CREATE TRIGGER AJUSTEESTOQUE_INSERT_DEPOSITO FOR AJUSTEESTOQUE
ACTIVE BEFORE INSERT POSITION 1
as
begin
   if (new.DEPOSITO = 'S') then begin
       if (new.TIPOOPERACAO='+') then begin
          execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,new.IDDEPOSITO,new.IDPRODUTO,(new.QTDEAJUSTE*new.FATORCONVERSAO),'+','INCLUSÃO DE AJUSTE DE ESTOQUE: ' || new.IDAJUSTEESTOQUE);
       end
       else begin
          execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,new.IDDEPOSITO,new.IDPRODUTO,(new.QTDEAJUSTE*new.FATORCONVERSAO),'-','INCLUSÃO DE AJUSTE DE ESTOQUE: ' || new.IDAJUSTEESTOQUE);
       end
   end
end
^

/* Trigger: AJUSTEESTOQUE_UPDATE_DEPOSITO */
CREATE TRIGGER AJUSTEESTOQUE_UPDATE_DEPOSITO FOR AJUSTEESTOQUE
ACTIVE BEFORE UPDATE POSITION 1
AS
begin

   if (new.DEPOSITO = 'S') then begin
       if (old.TIPOOPERACAO='+') then begin
          execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,old.IDDEPOSITO,old.IDPRODUTO,(old.QTDEAJUSTE*old.FATORCONVERSAO),'-','ALTERAÇÃO AJUSTE ESTOQUE :' || old.IDAJUSTEESTOQUE);
       end
       else begin
          execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,old.IDDEPOSITO,old.IDPRODUTO,(old.QTDEAJUSTE*old.FATORCONVERSAO),'+','ALTERAÇÃO AJUSTE ESTOQUE :' || old.IDAJUSTEESTOQUE);
       end
    
       if (new.TIPOOPERACAO='+') then begin
          execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,new.IDDEPOSITO,new.IDPRODUTO,(new.QTDEAJUSTE*new.FATORCONVERSAO),'+','ALTERAÇÃO AJUSTE ESTOQUE :' || new.IDAJUSTEESTOQUE);
       end
       else begin
          execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,new.IDDEPOSITO,new.IDPRODUTO,(new.QTDEAJUSTE*new.FATORCONVERSAO),'-','ALTERAÇÃO AJUSTE ESTOQUE :' || new.IDAJUSTEESTOQUE);
       end
   end
end
^

/* Trigger: C100_NF_ATUALIZA_CLIENTE */
CREATE TRIGGER C100_NF_ATUALIZA_CLIENTE FOR C100_NF
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable NOME            VARCHAR(60);
declare variable CNPJ            VARCHAR(18);
declare variable CPF             VARCHAR(14);
declare variable TIPOCLIENTE     VARCHAR(1);
declare variable INSESTADUAL     VARCHAR(20);
declare variable ENDERECO        VARCHAR(40);
declare variable BAIRRO          VARCHAR(25);
declare variable ID_EXTERNO      INTEGER;
declare variable COD_PAIS        INTEGER;
declare variable SUFRAMA         VARCHAR(9);
declare variable vUF             VARCHAR(2);
begin
   if (new.CADASTRADO_PELA_ENTRADA = 'S') then Exit;
   -- VERIFICA O CLIENTE
   if (not new.IDCLIENTE is null) then
   begin
       select C.NOME, C.CNPJ, C.CPF, C.TIPOCLIENTE, C.INSESTADUAL,
              C.ENDERECO, C.BAIRRO, CI.ID_EXTERNO, P.COD_PAIS, C.SUFRAMA, CI.UF  from CLIENTE C
           left join CIDADE CI
              on CI.IDCIDADE = C.IDCIDADE
           left join PAIS P
              on P.IDPAIS = CI.IDPAIS
         where C.IDCLIENTE = new.IDCLIENTE
         into :NOME, :CNPJ, :CPF, :TIPOCLIENTE, :INSESTADUAL,
              :ENDERECO, :BAIRRO, :ID_EXTERNO, :COD_PAIS, :SUFRAMA, :vUF;

       if (trim(CLR_DIG(IF_SS(:TIPOCLIENTE,'=','J',:CNPJ,:CPF))) <> trim( CLR_DIG(new.CPF_CNPJ))) then
          new.CPF_CNPJ = trim(CLR_DIG(IF_SS(:TIPOCLIENTE,'=','J',:CNPJ,:CPF)));

       if (not(exists(select S.IDPARTICIPANTE from SPED_0150 S
                    where trim(CLR_DIG(IF_SS(S.TIPOCLIENTE,'=','J',S.CNPJ,S.CPF))) = trim( CLR_DIG(new.CPF_CNPJ))   ))) then
       begin
          -- SE NAO EXISTIR O PARTICIPANTE ELE INCLUI
          INSERT INTO SPED_0150 (IDPARTICIPANTE, NOME, CNPJ, CPF, TIPOCLIENTE, INSESTADUAL, ENDERECO, BAIRRO, ID_EXTERNO, COD_PAIS, SUFRAMA, UF)
              VALUES (0, :NOME, trim(CLR_DIG(:CNPJ)), trim(CLR_DIG(:CPF)), :TIPOCLIENTE, :INSESTADUAL, :ENDERECO, :BAIRRO, :ID_EXTERNO, :COD_PAIS, :SUFRAMA, :VUF);
       end
       else begin
          -- AGORA SE EXISTIR O PARTICIPANTE
          update SPED_0150 S
             set NOME         = :NOME,
                 CNPJ         = trim(CLR_DIG(:CNPJ)),
                 CPF          = trim(CLR_DIG(:CPF)),
                 TIPOCLIENTE  = :TIPOCLIENTE,
                 INSESTADUAL  = :INSESTADUAL,
                 ENDERECO     = :ENDERECO,
                 BAIRRO       = :BAIRRO,
                 ID_EXTERNO   = :ID_EXTERNO,
                 COD_PAIS     = :COD_PAIS,
                 SUFRAMA      = :SUFRAMA,
                 UF           = :VUF
           where S.IDPARTICIPANTE = new.IDPARTICIPANTE;
       end

       if (new.IDPARTICIPANTE is null) then
       begin
           select first 1 S.IDPARTICIPANTE from SPED_0150 S
              where trim(CLR_DIG(IF_SS(S.TIPOCLIENTE,'=','J',S.CNPJ,S.CPF))) = trim(CLR_DIG(new.CPF_CNPJ))
           into new.IDPARTICIPANTE;
       end
   end


end
^

/* Trigger: C100_NF_AUTALIZA_FORNECEDOR */
CREATE TRIGGER C100_NF_AUTALIZA_FORNECEDOR FOR C100_NF
ACTIVE BEFORE INSERT OR UPDATE POSITION 1
AS
declare variable NOME            VARCHAR(60);
declare variable CNPJ            VARCHAR(18);
declare variable CPF             VARCHAR(14);
declare variable TIPOCLIENTE     VARCHAR(1);
declare variable INSESTADUAL     VARCHAR(20);
declare variable ENDERECO        VARCHAR(40);
declare variable BAIRRO          VARCHAR(25);
declare variable ID_EXTERNO      INTEGER;
declare variable COD_PAIS        INTEGER;
declare variable SUFRAMA         VARCHAR(9);
declare variable vUF         VARCHAR(2);
begin
   if (new.CADASTRADO_PELA_ENTRADA = 'S') then Exit;

   -- VERIFICA O FORNECEDOR
   if (not new.IDFORNECEDOR is null) then
   begin

       select F.NOME, F.CNPJ, F.CPF, F.INSESTADUAL,
              F.ENDERECO, F.BAIRRO, CI.ID_EXTERNO, P.COD_PAIS, CI.UF  from FORNECEDOR F
           left join CIDADE CI
              on CI.IDCIDADE = F.IDCIDADE
           left join PAIS P
              on P.IDPAIS = CI.IDPAIS
         where F.IDFORNECEDOR = new.IDFORNECEDOR
         into :NOME, :CNPJ, :CPF, :INSESTADUAL,
              :ENDERECO, :BAIRRO, :ID_EXTERNO, :COD_PAIS, :VUF;

       if (CLR_DIG(:CNPJ) <> '') then
          TIPOCLIENTE = 'J';
       else
          TIPOCLIENTE = 'F';

       if (trim(CLR_DIG(IF_SS(:TIPOCLIENTE,'=','J',:CNPJ,:CPF))) <> trim( CLR_DIG(new.CPF_CNPJ))) then
          new.CPF_CNPJ = trim(CLR_DIG(IF_SS(:TIPOCLIENTE,'=','J',:CNPJ,:CPF)));

       if (not(exists(select S.IDPARTICIPANTE from SPED_0150 S
                    where trim(CLR_DIG(IF_SS(S.TIPOCLIENTE,'=','J',S.CNPJ,S.CPF))) = trim(CLR_DIG(new.CPF_CNPJ))    ))) then       begin
--           SE NAO EXISTIR O PARTICIPANTE ELE INCLUI
           INSERT INTO SPED_0150 (IDPARTICIPANTE, NOME, CNPJ, CPF, TIPOCLIENTE, INSESTADUAL, ENDERECO, BAIRRO, ID_EXTERNO, COD_PAIS, UF)
              VALUES (0, :NOME, trim(CLR_DIG(:CNPJ)), trim(CLR_DIG(:CPF)), :TIPOCLIENTE, :INSESTADUAL, :ENDERECO, :BAIRRO, :ID_EXTERNO, :COD_PAIS, :VUF);
       end
       else begin

          -- AGORA SE EXISTIR O PARTICIPANTE
          update SPED_0150
             set NOME         = :NOME,
                 CNPJ         = trim(CLR_DIG(:CNPJ)),
                 CPF          = trim(CLR_DIG(:CPF)),
                 TIPOCLIENTE  = :TIPOCLIENTE,
                 INSESTADUAL  = :INSESTADUAL,
                 ENDERECO     = :ENDERECO,
                 BAIRRO       = :BAIRRO,
                 ID_EXTERNO   = :ID_EXTERNO,
                 COD_PAIS     = :COD_PAIS,
                 UF           = :vUF
           where IDPARTICIPANTE = new.IDPARTICIPANTE;
       end

       if (new.IDPARTICIPANTE is null) then
       begin
           select first 1 S.IDPARTICIPANTE from SPED_0150 S
              where trim(CLR_DIG( IF_SS(S.TIPOCLIENTE,'=','J',S.CNPJ,S.CPF))) = trim(CLR_DIG(new.CPF_CNPJ))
           into new.IDPARTICIPANTE;
       end
   end


end
^

/* Trigger: C100_NF_BD0 */
CREATE TRIGGER C100_NF_BD0 FOR C100_NF
ACTIVE BEFORE DELETE POSITION 0
AS
begin
   delete from C170_ITENS_NF C
      where C.IDFILIAL = old.IDFILIAL
        and C.IDNOTA   = old.IDNOTA
        and C.CPF_CNPJ = old.CPF_CNPJ
        and C.NOTA_PROPRIA_TERCEIROS = old.NOTA_PROPRIA_TERCEIROS;
end
^

/* Trigger: C100_NF_BD2 */
CREATE TRIGGER C100_NF_BD2 FOR C100_NF
ACTIVE BEFORE DELETE POSITION 2
as
  declare variable IDENTRADA integer;
begin
  select first 1 P.IDENTRADA from PAGAR P
    where P.IDFILIAL = old.IDFILIAL
      and P.IDPAGAR = old.IDNOTA
      and P.IDFORNECEDOR = old.IDFORNECEDOR
    into :IDENTRADA;

  if (not IDENTRADA is null) then begin
      delete from PAGAR P
         where P.IDFILIAL = old.IDFILIAL
           and P.IDFORNECEDOR = old.IDFORNECEDOR
           and P.IDENTRADA = old.IDNOTA;
  end
end
^

/* Trigger: C100_NF_BI0 */
CREATE TRIGGER C100_NF_BI0 FOR C100_NF
ACTIVE BEFORE INSERT POSITION 0
AS
begin
    if (new.CADASTRADO_PELA_ENTRADA = 'S') then Exit;

    update C170_ITENS_NF C
       set C.CPF_CNPJ = new.CPF_CNPJ
     where C.IDFILIAL = new.IDFILIAL
       and C.NOTA_PROPRIA_TERCEIROS = new.NOTA_PROPRIA_TERCEIROS
       and C.IDNOTA = new.IDNOTA
       and C.CPF_CNPJ is null;
end
^

/* Trigger: C100_NF_BU2 */
CREATE TRIGGER C100_NF_BU2 FOR C100_NF
ACTIVE BEFORE INSERT OR UPDATE POSITION 2
as
  declare variable vCONTADOR  integer;
  declare variable vVALORPARCELA numeric(16,2);
  declare variable vVALORDOCUMENTO numeric(16,2);
  declare variable vPRAZO1 smallint;
  declare variable vPRAZO2 smallint;
  declare variable vPRAZO3 smallint;
  declare variable vPRAZO4 smallint;
  declare variable vPRAZO5 smallint;
  declare variable vPRAZO6 smallint;
  declare variable vGERARFINANCEIRO char(1);
  declare variable vOLD_GERARFINANCEIRO char(1);
  declare variable IDENTRADA integer;
begin
      if (new.CADASTRADO_PELA_ENTRADA is null) then Exit;

      select first 1 P.IDENTRADA from PAGAR P
        where P.IDFILIAL = old.IDFILIAL
          and P.IDPAGAR = old.IDNOTA
          and P.IDFORNECEDOR = old.IDFORNECEDOR
        into :IDENTRADA;
    
      select CD.PRAZO, CD.PRAZO2, CD.PRAZO3,CD.PRAZO4,CD.PRAZO5,CD.PRAZO6 from CONDICAOPAGTO CD
         where CD.IDCONDICAOPAGTO = new.IDCONDICAO_PAGTO
         into :vPRAZO1,:vPRAZO2,:vPRAZO3,:vPRAZO4,:vPRAZO5,:vPRAZO6;
    
      select CF.GERAFINANCEIRO from CFOP CF
         where CF.IDCFOP = new.IDCFOP
           and CF.IDFILIAL = new.IDFILIAL
          into :vGERARFINANCEIRO;
    
      select CF.GERAFINANCEIRO from CFOP CF
         where CF.IDCFOP = old.IDCFOP
          and CF.IDFILIAL = new.IDFILIAL
          into :vOLD_GERARFINANCEIRO;
    
      if ((new.BONIFICACAO = 'N') and
         (:vGERARFINANCEIRO <> 'N'))
      then begin
           vCONTADOR = 1;
           vVALORDOCUMENTO = 0;

           if (not IDENTRADA is null)
           then begin
                delete from PAGAR P
                      where P.IDFILIAL = new.IDFILIAL
                        and P.IDFORNECEDOR = old.IDFORNECEDOR
                        and P.IDPAGAR = old.IDNOTA;
           end
    
           if (not exists (select first 1 P.IDPAGAR from PAGAR P
                         where P.IDFILIAL = new.IDFILIAL
                           and P.IDFORNECEDOR = new.IDFORNECEDOR
                           and P.IDPAGAR = new.IDNOTA)) then begin
           vVALORPARCELA = new.VL_DOC/new.PARCELA;
           while (vCONTADOR <= new.PARCELA) do begin

              insert into PAGAR   (IDFILIAL, IDPAGAR,  DOCUMENTO, DATAEMISSAO, DATAVENCIMENTO, IDFORNECEDOR, VALORDOCUMENTO,
                                   IDFORMAPAGTO, IDORDEM, IDCENTROCUSTO, IDENTRADA)
                       values (new.IDFILIAL, new.IDNOTA, new.IDNOTA || '-' || :vCONTADOR || '/' || 1, current_date, new.DT_DOC+(if_nn(:vCONTADOR,'=',1,:vPRAZO1,0)+
                                                                                                                              + if_nn(:vCONTADOR,'=',2,if_nn(:vPRAZO2,'=',0,:vPRAZO1*2,:vPRAZO2),0)+
                                                                                                                              + if_nn(:vCONTADOR,'=',3,if_nn(:vPRAZO3,'=',0,:vPRAZO1*3,:vPRAZO3),0)+
                                                                                                                              + if_nn(:vCONTADOR,'=',4,if_nn(:vPRAZO4,'=',0,:vPRAZO1*4,:vPRAZO4),0)+
                                                                                                                              + if_nn(:vCONTADOR,'=',5,if_nn(:vPRAZO5,'=',0,:vPRAZO1*5,:vPRAZO5),0)+
                                                                                                                              + if_nn(:vCONTADOR,'=',6,if_nn(:VPRAZO6,'=',0,:vPRAZO1*6,:vPRAZO6),0)), new.IDFORNECEDOR, :vVALORPARCELA,

                                   new.IDFORMA_PAGTO, :vCONTADOR, new.IDCENTRO_CUSTO, new.IDNOTA);
               vVALORDOCUMENTO = vVALORDOCUMENTO+vVALORPARCELA;
               if (vCONTADOR = new.PARCELA) then begin
                  update PAGAR P
                     set P.VALORDOCUMENTO = :vVALORPARCELA+(new.VL_DOC-:vVALORDOCUMENTO)
                   where P.IDFILIAL = new.IDFILIAL
                     and P.IDORDEM = new.PARCELA
                     and P.IDFORNECEDOR = new.IDFORNECEDOR
                     and P.IDPAGAR = new.IDNOTA;
               end
               vCONTADOR = vCONTADOR+1;
            end
         end end
      else begin
        if (not IDENTRADA is null)
        then begin
             delete from PAGAR P
                   where P.IDFILIAL = new.IDFILIAL
                     and P.IDFORNECEDOR = new.IDFORNECEDOR
                     and P.IDPAGAR = new.IDNOTA;
        end
      end
--  end
end
^

/* Trigger: C170_ITENS_ADD_PRODUTO_FOR */
CREATE TRIGGER C170_ITENS_ADD_PRODUTO_FOR FOR C170_ITENS_NF
ACTIVE AFTER INSERT OR UPDATE POSITION 0
AS
  declare variable vCADASTRADO_PELA_ENTRADA varchar(1);
  declare variable vATUALIZAR_PRECO_PRODUTO varchar(1);
  declare variable vIDFORNECEDOR integer;
begin
   if (new.CPROD = '') then Exit;
   if (new.CPROD is null) then Exit;
   if (new.IDPRODUTO = 0) then exit;

   select C.CADASTRADO_PELA_ENTRADA, C.IDFORNECEDOR, C.ATUALIZA_PRECO_PRODUTO from C100_NF C
     WHERE C.IDFILIAL = new.IDFILIAL
       AND C.IDNOTA = new.IDNOTA
       AND C.NOTA_PROPRIA_TERCEIROS = 'T'
       AND CPF_CNPJ = new.CPF_CNPJ
   into :VCADASTRADO_PELA_ENTRADA, :VIDFORNECEDOR, :VATUALIZAR_PRECO_PRODUTO;

   if (:VCADASTRADO_PELA_ENTRADA = 'S') then
   begin

      if (:VATUALIZAR_PRECO_PRODUTO = 'S') then
      begin
          if (inserting) then
          begin
              if (new.VL_ITEM > 0) then
              begin
                  update PRODUTO P
                     set P.CUSTONOTA = new.VL_ITEM/new.QTD,
                         P.CUSTOTRIBUTOS = new.VL_ITEM/new.QTD,
                         P.CUSTOSENCARGOS = new.VL_ITEM/new.QTD,
                         P.PRECOVENDA = new.VL_ITEM/new.QTD,
                         P.CUSTONOTAUNIT = P.CUSTONOTA/P.FATORCONVERSAO,
                         P.CUSTOTRIBUTOSUNIT = P.CUSTOTRIBUTOS/P.FATORCONVERSAO,
                         P.CUSTOSENCARGOSUNIT = P.CUSTOSENCARGOS/P.FATORCONVERSAO,
                         P.PRECOVENDAUNIT = P.PRECOVENDA/P.FATORCONVERSAO
    
                     where P.IDFILIAL = new.IDFILIAL
                       and P.IDPRODUTO = new.IDPRODUTO;
              end
          end
      end

      if (exists(select F.IDFILIAL from FORNECEDOR_PRODUTO F
           where F.IDFILIAL     = new.IDFILIAL
             and F.IDFORNECEDOR = :VIDFORNECEDOR
             and F.IDPRODUTO_FAB = cast(new.CPROD as bigint))) then
      begin
          if (not new.IDPRODUTO is null) then
          begin
              update FORNECEDOR_PRODUTO F1
                 set F1.IDPRODUTO = new.IDPRODUTO,
                     F1.CUSTO     = new.VL_ITEM
              where F1.IDFILIAL = new.IDFILIAL
                and F1.IDFORNECEDOR = :VIDFORNECEDOR
                and F1.IDPRODUTO_FAB = cast(new.CPROD as bigint);
          end
      end
      else
      begin
          if (not new.IDPRODUTO = 0) then
          begin
             INSERT INTO FORNECEDOR_PRODUTO (IDFILIAL, IDFORNECEDOR, IDPRODUTO, IDPRODUTO_FAB, CUSTO, PRECOVENDA)
                VALUES (new.IDFILIAL, :VIDFORNECEDOR, new.IDPRODUTO,cast(new.CPROD as bigint), NULL, new.VL_ITEM);
          end
      end

   end
end
^

/* Trigger: C170_ITENS_NF_ATUALIZA_EST */
CREATE TRIGGER C170_ITENS_NF_ATUALIZA_EST FOR C170_ITENS_NF
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 2
AS
  declare variable vCADASTRO varchar(1);
  declare variable vIDFORNECEDOR integer;
  declare variable newFATORCONVERSAO smallint;
  declare variable oldFATORCONVERSAO smallint;
begin
   if (new.IDPRODUTO = 0) then exit;

   select C.CADASTRADO_PELA_ENTRADA, C.IDFORNECEDOR from C100_NF C
     where C.IDFILIAL = new.IDFILIAL
       and C.CPF_CNPJ = new.CPF_CNPJ
       and C.IDNOTA   = new.IDNOTA
       and C.NOTA_PROPRIA_TERCEIROS = 'T'
       and C.CADASTRADO_PELA_ENTRADA = 'S'
    into :VCADASTRO, :VIDFORNECEDOR;

   if (deleting) then
   begin
       select first 1 C.CADASTRADO_PELA_ENTRADA, C.IDFORNECEDOR from C100_NF C
         where C.IDFILIAL = old.IDFILIAL
           and C.CPF_CNPJ = old.CPF_CNPJ
           and C.IDNOTA   = old.IDNOTA
           and C.NOTA_PROPRIA_TERCEIROS = 'T'
           and C.CADASTRADO_PELA_ENTRADA = 'S'
        into :VCADASTRO, :VIDFORNECEDOR;
   end

   if (:VCADASTRO = 'S') then
   begin
       if ((inserting) or (updating))  then
       begin
           select U.FATORCONVERSAO from UNIDADEMEDIDA U
            where U.IDFILIAL = new.IDFILIAL
              and U.IDUNIDADEMEDIDA = new.IDUNIDADEMEDIDA
            into :NEWFATORCONVERSAO;
       end

       if (updating) then     -- UPDATING
       begin
          select P.FATORCONVERSAO from UNIDADEMEDIDA P
           where P.IDFILIAL = old.IDFILIAL
             and P.IDUNIDADEMEDIDA = old.IDUNIDADEMEDIDA
             into :OLDFATORCONVERSAO;

          if ((old.QTD*:OLDFATORCONVERSAO) <> (new.QTD*:NEWFATORCONVERSAO) or ((new.IDPRODUTO <> old.IDPRODUTO)))  then begin
              /* --Retornando para o estoque */
              execute procedure ATUALIZA_ESTOQUE(old.IDFILIAL,old.IDPRODUTO,(old.QTD*:OLDFATORCONVERSAO),'-','ALTERAÇÃO PRODUTO PELA ENTRADA NF:' || new.IDNOTA || '/' || :vIDFORNECEDOR);
              /* --Retirando do Estoque */
              execute procedure ATUALIZA_ESTOQUE(new.IDFILIAL,new.IDPRODUTO,(new.QTD*:NEWFATORCONVERSAO),'+','ALTERAÇÃO PRODUTO PELA ENTRADA NF:' || new.IDNOTA || '/' || :vIDFORNECEDOR);
          end
       end
       else
       if (inserting) then  -- INSERTING
       begin
          execute procedure ATUALIZA_ESTOQUE(new.IDFILIAL,new.IDPRODUTO,(new.QTD*:NEWFATORCONVERSAO),'+','INCLUSÃO DE PRODUTO PELA ENTRADA NF:' || new.IDNOTA || '/' || :VIDFORNECEDOR);
       end
       else
       if (deleting) then -- DELETING
       begin
          select P.FATORCONVERSAO from UNIDADEMEDIDA P
           where P.IDFILIAL = old.IDFILIAL
             and P.IDUNIDADEMEDIDA = old.IDUNIDADEMEDIDA
             into :OLDFATORCONVERSAO;

          execute procedure ATUALIZA_ESTOQUE(old.IDFILIAL,old.IDPRODUTO,(old.QTD*:oldFATORCONVERSAO),'-','EXCLUSÃO DE PRODUTO PELA ENTRADA NF:' || old.IDNOTA || '/' || :vIDFORNECEDOR);
       end
   end
--   if ((old.QTDECOMPRA*old.FATORCONVERSAO) <> (new.QTDECOMPRA*new.FATORCONVERSAO)) then begin
--       /* --Retornando para o estoque */
--       execute procedure ATUALIZA_ESTOQUE(old.IDFILIAL,old.IDPRODUTO,(old.QTDECOMPRA*old.FATORCONVERSAO),'-','ALTERAÇÃO PRODUTO PELA ENTRADA NF:' || new.IDNOTA || '/' || new.IDFORNECEDOR);
--       /* --Retirando do Estoque */
--       execute procedure ATUALIZA_ESTOQUE(new.IDFILIAL,new.IDPRODUTO,(new.QTDECOMPRA*new.FATORCONVERSAO),'+','ALTERAÇÃO PRODUTO PELA ENTRADA NF:' || new.IDNOTA || '/' || new.IDFORNECEDOR);
--   end
end
^

/* Trigger: C170_ITENS_NF_INSERT */
CREATE TRIGGER C170_ITENS_NF_INSERT FOR C170_ITENS_NF
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   -- VERIFICA SE FOR INSERT ELE CONTA O CONTADOR
   -- PARA NAO DAR ERRO NA CHAVE
   if (inserting) then
   begin
     if (new.NOTA_PROPRIA_TERCEIROS = 'T') then
     begin
         select coalesce(max(C.CONTADOR)+1,1) from C170_ITENS_NF C
            WHERE C.IDFILIAL = new.IDFILIAL
              AND C.IDNOTA = new.IDNOTA
              AND C.NOTA_PROPRIA_TERCEIROS = 'T'
              AND C.CPF_CNPJ = new.CPF_CNPJ
           into new.CONTADOR;
     end
     else begin
         select coalesce(max(C.CONTADOR)+1,1) from C170_ITENS_NF C
            WHERE C.IDFILIAL = new.IDFILIAL
              AND C.IDNOTA = new.IDNOTA
              AND C.NOTA_PROPRIA_TERCEIROS = 'P'
              AND C.CPF_CNPJ = new.CPF_CNPJ
           into new.CONTADOR;
     end
   end
end
^

/* Trigger: CARTEIRA_BU0 */
CREATE TRIGGER CARTEIRA_BU0 FOR CARTEIRA
ACTIVE BEFORE UPDATE POSITION 0
AS
  declare variable vIDCLIENTE integer;
begin
   select P.IDCLIENTE from PEDIDO P
     where P.IDPEDIDO = new.IDPEDIDO
       and P.IDFILIAL = new.IDFILIAL
       and P.IDFOLHA = 1
     into :vIDCLIENTE;

    new.IDCLIENTE = :vIDCLIENTE;
end
^

/* Trigger: CCE_BI */
CREATE TRIGGER CCE_BI FOR CCE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
   NEW.IDCONTROLE = GEN_ID(GEN_CCE_ID,1);
END
^

/* Trigger: CFOP_BU0 */
CREATE TRIGGER CFOP_BU0 FOR CFOP
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
  if (new.cfop_principal = 'N') then
     new.aliquotaicms = 0;
end
^

/* Trigger: CLIENTE_BI0 */
CREATE TRIGGER CLIENTE_BI0 FOR CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   if (NEW.idfilial = 0 ) then
       NEW.idfilial = 1;

   if (new.ENDERECO is null) then
     new.ENDERECO = '';
end
^

/* Trigger: CLIENTE_PRODUTO_BIU0 */
CREATE TRIGGER CLIENTE_PRODUTO_BIU0 FOR CLIENTE_PRODUTO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
  if (new.PRECO_ATUAL is null) then
    new.PRECO_ATUAL = 0;
end
^

/* Trigger: CLIENTE_TABELAPRECO_BU0 */
CREATE TRIGGER CLIENTE_TABELAPRECO_BU0 FOR CLIENTE_TABELAPRECO
ACTIVE BEFORE UPDATE POSITION 0
as
begin
   update CLIENTE C
      set c.IDTABELAPRECO = new.IDTABELAPRECO,
          c.CONTRIBUINTE = 'S'
    where c.IDFILIAL = new.IDFILIAL
      and c.IDCLIENTE = new.IDCLIENTE;
end
^

/* Trigger: DEVOLUCAO_BD0 */
CREATE TRIGGER DEVOLUCAO_BD0 FOR DEVOLUCAO
ACTIVE BEFORE DELETE POSITION 0
AS
begin
  delete from ITENSDEVOLUCAO I
    where I.IDFILIAL = old.IDFILIAL
      and I.IDPEDIDO = old.IDPEDIDO
      and I.IDFOLHA = old.IDFOLHA;
end
^

/* Trigger: FILIAL_BU0 */
CREATE TRIGGER FILIAL_BU0 FOR FILIAL
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
/*
    if (old.crt <> new.crt) then
    begin
       if (new.crt = 1) then    -- SE FOR OPTANTE DO SIMPLES NACIONAL
       begin
          update tributo t
             set --t.taxaicms = 0,
                 t.clfiscal = '400',
                 t.descricao_situacao = '400 - Não tributada'
           where t.idfilial = new.idfilial;

           update cfop c
              set c.clfiscal = '400',
                  c.descricao_situacao = '400 - Não tributada'
--                  c.aliquotaicms = 0
             where c.idfilial = new.idfilial;
       end
    end

*/
    if (old.NFE_NUMERO_SERIE <> new.NFE_NUMERO_SERIE) then
    begin
       new.VALIDADE_CERTIFICADO = null;
    end
end
^

/* Trigger: HISTORICO_PEDIDO_PALM_BI */
CREATE TRIGGER HISTORICO_PEDIDO_PALM_BI FOR HISTORICO_PEDIDO_PALM
ACTIVE BEFORE INSERT POSITION 0
as
begin
  new.IDCONTROLE = gen_id(GEN_HISTORICO_PEDIDO_PALM_ID,1);
end
^

/* Trigger: IBPT_BI */
CREATE TRIGGER IBPT_BI FOR IBPT
ACTIVE BEFORE INSERT POSITION 0
as
begin
  if (new.id_ibpt is null) then
    new.id_ibpt = gen_id(gen_ibpt_id,1);
end
^

/* Trigger: IMPRESSORAS_FISCAL_BI0 */
CREATE TRIGGER IMPRESSORAS_FISCAL_BI0 FOR IMPRESSORAS_FISCAL
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   if (new.IDCONTROLE > 99) then begin
      exception ID_MAIOR_Q_100;
   end
end
^

/* Trigger: ITENSDEVOLUCAO_AD11REL_MOVIMENT */
CREATE TRIGGER ITENSDEVOLUCAO_AD11REL_MOVIMENT FOR ITENSDEVOLUCAO
ACTIVE AFTER DELETE POSITION 12
AS
begin
  delete from REL_MOVIMENTACAO R
    where R.IDFILIAL = old.IDFILIAL
      and R.IDPEDIDO = old.IDPEDIDO
      and R.IDFOLHA  = old.IDFOLHA
      and R.CONTADOR_PRODUTO = old.CONTADOR
      and R.ORIGEM = 'D';
end
^

/* Trigger: ITENSDEVOLUCAO_AF_DELETE_CONSIG */
CREATE TRIGGER ITENSDEVOLUCAO_AF_DELETE_CONSIG FOR ITENSDEVOLUCAO
ACTIVE AFTER DELETE POSITION 2
as
  declare variable vCONTROLA_PRODUTO varchar(1);
  declare variable vIDREPRESENTANTE integer;
  declare variable vSITUACAO_PEDIDO varchar(1);
  declare variable vIDCONSIGNACAO integer;
begin
    if (exists(select PV.IDFILIAL from PEDIDO PV
                where PV.IDFILIAL = old.IDFILIAL
                  and PV.IDPEDIDO = old.IDPEDIDO
                  and PV.IDFOLHA = old.IDFOLHA)) then
    begin
        select P.IDREPRESENTANTE, P.SITUACAOPEDIDO, P.IDCONSIGNACAO  from PEDIDO P
          where P.IDFILIAL = old.IDFILIAL
            and P.IDPEDIDO = old.IDPEDIDO
            and P.IDFOLHA = old.IDFOLHA
          into :VIDREPRESENTANTE, :VSITUACAO_PEDIDO, :VIDCONSIGNACAO;
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
        if (:VSITUACAO_PEDIDO = 'C') then begin
        
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            if (:VCONTROLA_PRODUTO = 'S') then begin
               update ITENS_CONSIGNACAO RP
                  set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA+(old.QTDEPEDIDO),
                      RP.QTDE_RETORNO = 0
                where RP.IDFILIAL = old.IDFILIAL
                  and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                  and RP.IDPRODUTO = old.IDPRODUTO;
            end
        end
    
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR VENDA
        if (:VSITUACAO_PEDIDO = 'V') then begin
        
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            if (:VCONTROLA_PRODUTO = 'S') then begin
               update ITENS_CONSIGNACAO RP
                  set RP.QTDE_SAIDA = RP.QTDE_SAIDA+(old.QTDEPEDIDO),
                      RP.QTDE_RETORNO = 0
                where RP.IDFILIAL = old.IDFILIAL
                  and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                  and RP.IDPRODUTO = old.IDPRODUTO;
            end
        end
    end
    else
    begin
        -- se não existir o pedido
        select D.IDREPRESENTANTE, D.SITUACAOPEDIDO, D.IDCONSIGNACAO  from DEVOLUCAO D
          where D.IDFILIAL = old.IDFILIAL
            and D.IDPEDIDO = old.IDPEDIDO
            and D.IDFOLHA = old.IDFOLHA
          into :VIDREPRESENTANTE, :VSITUACAO_PEDIDO, :VIDCONSIGNACAO;
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
        if (:VSITUACAO_PEDIDO = 'C') then begin
        
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            if (:VCONTROLA_PRODUTO = 'S') then begin
               update ITENS_CONSIGNACAO RP
                  set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA+(old.QTDEPEDIDO),
                      RP.QTDE_RETORNO = 0
                where RP.IDFILIAL = old.IDFILIAL
                  and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                  and RP.IDPRODUTO = old.IDPRODUTO;
            end
        end
    
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR VENDA
        if (:VSITUACAO_PEDIDO = 'V') then begin
        
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            if (:VCONTROLA_PRODUTO = 'S') then begin
               update ITENS_CONSIGNACAO RP
                  set RP.QTDE_SAIDA = RP.QTDE_SAIDA+(old.QTDEPEDIDO),
                      RP.QTDE_RETORNO = 0
                where RP.IDFILIAL = old.IDFILIAL
                  and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                  and RP.IDPRODUTO = old.IDPRODUTO;
            end
        end
    end
end
^

/* Trigger: ITENSDEVOLUCAO_BF_INSERT_CONSIG */
CREATE TRIGGER ITENSDEVOLUCAO_BF_INSERT_CONSIG FOR ITENSDEVOLUCAO
ACTIVE BEFORE INSERT POSITION 3
as
  declare variable vCONTROLA_PRODUTO varchar(1);
  declare variable vIDREPRESENTANTE integer;
  declare variable vSITUACAO_PEDIDO varchar(1);
  declare variable VIDCONSIGNACAO integer;
begin
    if (exists(select PV.IDFILIAL from PEDIDO PV
                where PV.IDFILIAL = new.IDFILIAL
                  and PV.IDPEDIDO = new.IDPEDIDO
                  and PV.IDFOLHA = new.IDFOLHA)) then
    begin
        select P.IDREPRESENTANTE, P.SITUACAOPEDIDO, P.IDCONSIGNACAO  from PEDIDO P
          where P.IDFILIAL = new.IDFILIAL
            and P.IDPEDIDO = new.IDPEDIDO
            and P.IDFOLHA = new.IDFOLHA
          into :VIDREPRESENTANTE, :vSITUACAO_PEDIDO, :VIDCONSIGNACAO;
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
        if (:VSITUACAO_PEDIDO = 'C') then begin
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            -- SÓ SE CONTROLA ESTOQUE POR REPRESENTANTE
            if (:VCONTROLA_PRODUTO = 'S') then begin
        
                -- SE NÃO EXISTIR
                if (not(exists(
                        select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                           where RP.IDFILIAL = new.IDFILIAL
                             and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                             and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                    insert into ITENS_CONSIGNACAO
                          (IDFILIAL, IDCONSIGNACAO, IDPRODUTO, QTDE_ENTRADA)
                   values (new.IDFILIAL, :VIDCONSIGNACAO, new.IDPRODUTO, (new.QTDEPEDIDO)*-1);
                end
                else begin
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA-new.QTDEPEDIDO,
                          RP.QTDE_RETORNO = RP.QTDE_ENTRADA_QUE_ALTERA-RP.QTDE_SAIDA
                    where RP.IDFILIAL = new.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = new.IDPRODUTO;
                end
            end
        end
    
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
        if (:VSITUACAO_PEDIDO = 'V') then begin
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            -- SÓ SE CONTROLA ESTOQUE POR REPRESENTANTE
            if (:VCONTROLA_PRODUTO = 'S') then begin
        
                -- SE NÃO EXISTIR
                if ((exists(
                        select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                           where RP.IDFILIAL = new.IDFILIAL
                             and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                             and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_SAIDA = RP.QTDE_SAIDA-(new.QTDEPEDIDO),
                          RP.QTDE_RETORNO = RP.QTDE_ENTRADA_QUE_ALTERA-RP.QTDE_SAIDA
                    where RP.IDFILIAL = new.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = new.IDPRODUTO;
                end
            end
        end
    end
    else
    begin
      -- se não existir o pedido

        select D.IDREPRESENTANTE, D.SITUACAOPEDIDO, D.IDCONSIGNACAO  from DEVOLUCAO D
          where D.IDFILIAL = new.IDFILIAL
            and D.IDPEDIDO = new.IDPEDIDO
            and D.IDFOLHA = new.IDFOLHA
          into :VIDREPRESENTANTE, :vSITUACAO_PEDIDO, :VIDCONSIGNACAO;
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
        if (:VSITUACAO_PEDIDO = 'C') then begin
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            -- SÓ SE CONTROLA ESTOQUE POR REPRESENTANTE
            if (:VCONTROLA_PRODUTO = 'S') then begin
        
                -- SE NÃO EXISTIR
                if (not(exists(
                        select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                           where RP.IDFILIAL = new.IDFILIAL
                             and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                             and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                    insert into ITENS_CONSIGNACAO
                          (IDFILIAL, IDCONSIGNACAO, IDPRODUTO, QTDE_ENTRADA)
                   values (new.IDFILIAL, :VIDCONSIGNACAO, new.IDPRODUTO, (new.QTDEPEDIDO)*-1);
                end
                else begin
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA-(new.QTDEPEDIDO),
                          RP.QTDE_RETORNO = RP.QTDE_ENTRADA_QUE_ALTERA-RP.QTDE_SAIDA
                    where RP.IDFILIAL = new.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = new.IDPRODUTO;
                end
            end
        end
    
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
        if (:VSITUACAO_PEDIDO = 'V') then begin
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            -- SÓ SE CONTROLA ESTOQUE POR REPRESENTANTE
            if (:VCONTROLA_PRODUTO = 'S') then begin
        
                -- SE NÃO EXISTIR
                if ((exists(
                        select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                           where RP.IDFILIAL = new.IDFILIAL
                             and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                             and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_SAIDA = RP.QTDE_SAIDA-(new.QTDEPEDIDO),
                          RP.QTDE_RETORNO = RP.QTDE_ENTRADA_QUE_ALTERA-RP.QTDE_SAIDA
                    where RP.IDFILIAL = new.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = new.IDPRODUTO;
                end
            end
        end
    end
end
^

/* Trigger: ITENSDEVOLUCAO_BF_UPDATE_CONSIG */
CREATE TRIGGER ITENSDEVOLUCAO_BF_UPDATE_CONSIG FOR ITENSDEVOLUCAO
ACTIVE BEFORE UPDATE POSITION 2
as
  declare variable vCONTROLA_PRODUTO varchar(1);
  declare variable vIDREPRESENTANTE integer;
  declare variable vSITUACAO_PEDIDO varchar(1);
  declare variable VIDCONSIGNACAO integer;
begin
    if (exists(select PV.IDFILIAL from PEDIDO PV
                where PV.IDFILIAL = new.IDFILIAL
                  and PV.IDPEDIDO = new.IDPEDIDO
                  and PV.IDFOLHA = new.IDFOLHA)) then
    begin
        -- EXISTE PEDIDO
        select P.IDREPRESENTANTE, P.SITUACAOPEDIDO, P.IDCONSIGNACAO from PEDIDO P
          where P.IDFILIAL = new.IDFILIAL
            and P.IDPEDIDO = new.IDPEDIDO
            and P.IDFOLHA = new.IDFOLHA
          into :VIDREPRESENTANTE, :VSITUACAO_PEDIDO, VIDCONSIGNACAO;
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
        if (:VSITUACAO_PEDIDO = 'C') then begin
        
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            if (:VCONTROLA_PRODUTO = 'S') then begin
                -- SE NÃO EXISTIR
                if (not(exists(
                        select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                           where RP.IDFILIAL = new.IDFILIAL
                             and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                             and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                    insert into ITENS_CONSIGNACAO
                          (IDFILIAL, IDCONSIGNACAO, IDPRODUTO, QTDE_ENTRADA)
                   values (new.IDFILIAL, :VIDCONSIGNACAO, new.IDPRODUTO, (new.QTDEPEDIDO)*-1);
                end
                else begin
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA+(old.QTDEPEDIDO),
                          RP.QTDE_RETORNO = RP.QTDE_ENTRADA_QUE_ALTERA-RP.QTDE_SAIDA
                    where RP.IDFILIAL = old.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = old.IDPRODUTO;
            
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA-(new.QTDEPEDIDO),
                          RP.QTDE_RETORNO = RP.QTDE_ENTRADA_QUE_ALTERA-RP.QTDE_SAIDA
                    where RP.IDFILIAL = new.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = new.IDPRODUTO;
                end
            end
        end
    
    
    
    
    
    
    
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR VENDA
        if (:VSITUACAO_PEDIDO = 'V') then begin
        
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            if (:VCONTROLA_PRODUTO = 'S') then begin
                -- SE NÃO EXISTIR
                if ((exists(
                        select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                           where RP.IDFILIAL = new.IDFILIAL
                             and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                             and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_SAIDA = RP.QTDE_SAIDA+(old.QTDEPEDIDO)
                    where RP.IDFILIAL = old.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = old.IDPRODUTO;
            
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_SAIDA = RP.QTDE_SAIDA-(new.QTDEPEDIDO)
                    where RP.IDFILIAL = new.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = new.IDPRODUTO;
                end
            end
        end
    end
    else
    begin
      -- se não existir o pedido
        select D.IDREPRESENTANTE, D.SITUACAOPEDIDO, D.IDCONSIGNACAO from DEVOLUCAO D
          where D.IDFILIAL = new.IDFILIAL
            and D.IDPEDIDO = new.IDPEDIDO
            and D.IDFOLHA = new.IDFOLHA
          into :VIDREPRESENTANTE, :VSITUACAO_PEDIDO, VIDCONSIGNACAO;
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
        if (:VSITUACAO_PEDIDO = 'C') then begin
        
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            if (:VCONTROLA_PRODUTO = 'S') then begin
                -- SE NÃO EXISTIR
                if (not(exists(
                        select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                           where RP.IDFILIAL = new.IDFILIAL
                             and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                             and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                    insert into ITENS_CONSIGNACAO
                          (IDFILIAL, IDCONSIGNACAO, IDPRODUTO, QTDE_ENTRADA)
                   values (new.IDFILIAL, :VIDCONSIGNACAO, new.IDPRODUTO, (new.QTDEPEDIDO)*-1);
                end
                else begin
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA+(old.QTDEPEDIDO)
                    where RP.IDFILIAL = old.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = old.IDPRODUTO;
            
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA-(new.QTDEPEDIDO)
                    where RP.IDFILIAL = new.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = new.IDPRODUTO;
                end
            end
        end
    
    
    
    
    
    
    
    
        -- SÓ SE A SITUACAO DO PEDIDO FOR VENDA
        if (:VSITUACAO_PEDIDO = 'V') then begin
        
            select R.CONTROLA_PRODUTO_REPRESENTANTE from REPRESENTANTE R
             where R.IDREPRESENTANTE = :vIDREPRESENTANTE
              into :VCONTROLA_PRODUTO;
        
            if (:VCONTROLA_PRODUTO = 'S') then begin
                -- SE NÃO EXISTIR
                if ((exists(
                        select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                           where RP.IDFILIAL = new.IDFILIAL
                             and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                             and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_SAIDA = RP.QTDE_SAIDA+(old.QTDEPEDIDO)
                    where RP.IDFILIAL = old.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = old.IDPRODUTO;
            
                   update ITENS_CONSIGNACAO RP
                      set RP.QTDE_SAIDA = RP.QTDE_SAIDA-(new.QTDEPEDIDO)
                    where RP.IDFILIAL = new.IDFILIAL
                      and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                      and RP.IDPRODUTO = new.IDPRODUTO;
                end
            end
        end
    end
end
^

/* Trigger: ITENSDEVOLUCAO_BI11_REL_MOVIM */
CREATE TRIGGER ITENSDEVOLUCAO_BI11_REL_MOVIM FOR ITENSDEVOLUCAO
ACTIVE BEFORE INSERT POSITION 11
AS
begin
  INSERT INTO REL_MOVIMENTACAO (IDFILIAL, DATA, IDCONTROLE, IDPEDIDO, IDFOLHA, CONTADOR_PRODUTO, IDPRODUTO,  TIPO_MOVIMENTO, VALORPRODUTO, ORIGEM)
        VALUES (new.IDFILIAL, current_date, 0 , new.IDPEDIDO, new.IDFOLHA, new.CONTADOR, new.IDPRODUTO, '-', (new.PRECOVENDA*new.QTDEPEDIDO) ,'D');
end
^

/* Trigger: ITENSDEVOLUCAO_BU11_REL_MOVIME */
CREATE TRIGGER ITENSDEVOLUCAO_BU11_REL_MOVIME FOR ITENSDEVOLUCAO
ACTIVE BEFORE UPDATE POSITION 11
AS
begin
  if ((new.PRECOVENDA*new.QTDEPEDIDO) <> (old.PRECOVENDA*old.QTDEPEDIDO)) then
  begin
      update REL_MOVIMENTACAO R
         set R.VALORPRODUTO = (new.PRECOVENDA*new.QTDEPEDIDO)
       where R.IDFILIAL = new.IDFILIAL
         and R.IDPEDIDO = new.IDPEDIDO
         and R.IDFOLHA  = new.IDFOLHA
         and R.CONTADOR_PRODUTO = new.CONTADOR
         and R.ORIGEM = 'D'; -- SE FOR VENDA
  end
end
^

/* Trigger: ITENSDEVOLUCAO_DELETE_DEPOSITO */
CREATE TRIGGER ITENSDEVOLUCAO_DELETE_DEPOSITO FOR ITENSDEVOLUCAO
ACTIVE AFTER DELETE POSITION 1
as
  declare variable vIDDEPOSITO integer;
begin
     select first 1 IT.IDDEPOSITO from ITENSPEDIDO IT
       where IT.IDFILIAL = old.IDFILIAL
         and IT.IDPEDIDO = old.IDPEDIDO
         and IT.IDFOLHA  = old.IDFOLHA
         and IT.IDPRODUTO = old.IDPRODUTO
      into :VIDDEPOSITO;

     execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,:vIDDEPOSITO,old.IDPRODUTO,(old.QTDEPEDIDO*old.FATORCONVERSAO),'-','EXCLUSÃO DE DEVOLUÇÃO :' || old.IDPEDIDO);
end
^

/* Trigger: ITENSDEVOLUCAO_INSERT_DEPOSITO */
CREATE TRIGGER ITENSDEVOLUCAO_INSERT_DEPOSITO FOR ITENSDEVOLUCAO
ACTIVE BEFORE INSERT POSITION 1
as
  declare variable vIDDEPOSITO integer;
begin
      select first 1 IT.IDDEPOSITO from ITENSPEDIDO IT
       where IT.IDFILIAL  = new.IDFILIAL
         and IT.IDPEDIDO  = new.IDPEDIDO
         and IT.IDFOLHA   = new.IDFOLHA
         and IT.IDPRODUTO = new.IDPRODUTO
      into :vIDDEPOSITO;

---  Baixando qtde no deposito informado
     execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,:VIDDEPOSITO,new.IDPRODUTO,(new.QTDEPEDIDO*new.FATORCONVERSAO),'+','INCLUSÃO DE DEVOLUÇÃO PD:' || new.IDPEDIDO || '/' || new.IDFOLHA );
end
^

/* Trigger: ITENSDEVOLUCAO_UPDATE_DEPOSITO */
CREATE TRIGGER ITENSDEVOLUCAO_UPDATE_DEPOSITO FOR ITENSDEVOLUCAO
ACTIVE BEFORE UPDATE POSITION 1
as
  declare variable vIDDEPOSITO integer;
begin
      select first 1 IT.IDDEPOSITO from ITENSPEDIDO IT
       where IT.IDFILIAL = new.IDFILIAL
         and IT.IDPEDIDO = new.IDPEDIDO
         and IT.IDPRODUTO = new.IDPRODUTO
         and IT.IDFOLHA  = new.IDFOLHA
      into :vIDDEPOSITO;


     execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,:vIDDEPOSITO,old.IDPRODUTO,(old.QTDEPEDIDO*old.FATORCONVERSAO),'-','ALTERAÇÃO DEVOLUÇÃO :' || old.IDPEDIDO);

     execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,:vIDDEPOSITO,new.IDPRODUTO,(new.QTDEPEDIDO*new.FATORCONVERSAO),'+','ALTERAÇÃO DEVOLUÇÃO :' || new.IDPEDIDO);
end
^

/* Trigger: ITENSENTRADA_BIU0 */
CREATE TRIGGER ITENSENTRADA_BIU0 FOR ITENSENTRADA
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
 declare variable vCST_IPI      varchar(3);
 declare variable vALIQUOTA_IPI NUMERIC(10,2);

 declare variable vCST_PIS      varchar(3);
 declare variable vALIQUOTA_PIS NUMERIC(10,2);

 declare variable vCST_COFINS      varchar(3);
 declare variable vALIQUOTA_COFINS NUMERIC(10,2);
begin
     if (updating) then
     begin
        new.VALOR_IPI = null;
        new.VALOR_PIS = null;
        new.VALOR_COFINS = null;
     end

/*
//     if ((inserting) or (new.IDPRODUTO <> old.IDPRODUTO)) then
     begin
        select P.IDTRIBUTO_IPI, P.IDTRIBUTO_COFINS, P.IDTRIBUTO_PIS from PRODUTO P
           where P.IDFILIAL  = new.IDFILIAL
             and P.IDPRODUTO = new.IDPRODUTO
           into new.IDTRIBUTO_IPI, new.IDTRIBUTO_CONFINS, new.IDTRIBUTO_PIS;
     end
*/

     --
     -- VERIFICANDO IPI
     --
     if (new.IDTRIBUTO_IPI > 0) then
     begin
         select T.SITUACAO_IPI, T.ALIQUOTA_IPI
          from TRIBUTO T
           where T.IDFILIAL = new.IDFILIAL
             and T.IDTRIBUTO = new.IDTRIBUTO_IPI
           into :VCST_IPI, :VALIQUOTA_IPI;

         new.CST_IPI      = :VCST_IPI;
         new.ALIQUOTA_IPI = :VALIQUOTA_IPI;
         if (new.ALIQUOTA_IPI <> 0) then
         begin
             new.VALOR_IPI = (new.CUSTOPRODUTO*new.QTDECOMPRA) *new.ALIQUOTA_IPI/100;
         end
     end

     --
     -- VERIFICANDO PIS
     --
     if (new.IDTRIBUTO_PIS > 0) then
     begin
         select T.SITUACAO_PIS, T.ALIQUOTA_PIS
          from TRIBUTO T
           where T.IDFILIAL = new.IDFILIAL
             and T.IDTRIBUTO = new.IDTRIBUTO_PIS
           into :VCST_PIS, :VALIQUOTA_PIS;

         new.CST_PIS      = :VCST_PIS;
         new.ALIQUOTA_PIS = :VALIQUOTA_PIS;
         if (new.ALIQUOTA_PIS <> 0) then
         begin
             new.VALOR_PIS = (new.CUSTOPRODUTO*new.QTDECOMPRA)*new.ALIQUOTA_PIS/100;
         end
     end


     --
     -- VERIFICANDO COFINS
     --
     if (new.IDTRIBUTO_CONFINS > 0) then
     begin
         select T.SITUACAO_COFINS, T.ALIQUOTA_COFINS
          from TRIBUTO T
           where T.IDFILIAL = new.IDFILIAL
             and T.IDTRIBUTO = new.IDTRIBUTO_CONFINS
           into :VCST_COFINS, :VALIQUOTA_COFINS;

         new.CST_COFINS      = :VCST_COFINS;
         new.ALIQUOTA_COFINS = :VALIQUOTA_COFINS;
         if (new.ALIQUOTA_COFINS <> 0) then
         begin
             new.VALOR_COFINS = (new.CUSTOPRODUTO*new.QTDECOMPRA)*new.ALIQUOTA_COFINS/100;
         end
     end
end
^

/* Trigger: ITENSENTRADA_DELETE_DEPOSITO */
CREATE TRIGGER ITENSENTRADA_DELETE_DEPOSITO FOR ITENSENTRADA
ACTIVE AFTER DELETE POSITION 0
as
  declare variable vMD_DEPOSITO varchar(1);
begin
  select F.MD_DEPOSITO from FILIAL F
   where F.IDFILIAL = old.IDFILIAL
  into :VMD_DEPOSITO;

   if (vMD_DEPOSITO = 'S') then begin
      execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,old.IDDEPOSITO,old.IDPRODUTO,(old.QTDECOMPRA*old.FATORCONVERSAO),'-','EXCLUSÃO DE ENTRADA :' || old.IDNOTA);
   end
end
^

/* Trigger: ITENSENTRADA_DEL_VENCTO_PRO */
CREATE TRIGGER ITENSENTRADA_DEL_VENCTO_PRO FOR ITENSENTRADA
ACTIVE AFTER DELETE POSITION 0
AS
  declare variable vCONTROLE_VENCIMENTO varchar(1);
begin
    select F.CTR_VENCTO_PRODUTO from FILIAL F
      where F.IDFILIAL = old.IDFILIAL
    into :VCONTROLE_VENCIMENTO;

    if (:VCONTROLE_VENCIMENTO = 'S') then begin
        -- SE NÃO EXISTIR
        if ((exists(
                select VP.IDFILIAL from VENCTO_PRODUTO VP
                   where VP.IDFILIAL = old.IDFILIAL
                     and VP.IDPRODUTO = old.IDPRODUTO
                     and VP.DATA_VENCTO = old.DTVECIMENTO))) then begin

           update VENCTO_PRODUTO VP
              set VP.QTDE = VP.QTDE-(old.QTDECOMPRA*old.FATORCONVERSAO)
            where VP.IDFILIAL = old.IDFILIAL
              and VP.DATA_VENCTO = old.DTVECIMENTO
              and VP.IDPRODUTO = old.IDPRODUTO;
        end
    end
end
^

/* Trigger: ITENSENTRADA_INSERT_DEPOSITO */
CREATE TRIGGER ITENSENTRADA_INSERT_DEPOSITO FOR ITENSENTRADA
ACTIVE BEFORE INSERT POSITION 1
as
  declare variable vMD_DEPOSITO varchar(1);
begin
  select F.MD_DEPOSITO from FILIAL F
   where F.IDFILIAL = new.IDFILIAL
  into :VMD_DEPOSITO;

   if (vMD_DEPOSITO = 'S') then begin
      execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,new.IDDEPOSITO,new.IDPRODUTO,(new.QTDECOMPRA*new.FATORCONVERSAO),'+','INCLUSÃO DE ENTRADA :' || new.IDNOTA);
   end
end
^

/* Trigger: ITENSENTRADA_INSERT_VENCTO_PRO */
CREATE TRIGGER ITENSENTRADA_INSERT_VENCTO_PRO FOR ITENSENTRADA
ACTIVE BEFORE INSERT POSITION 2
as
  declare variable vCONTROLE_VENCIMENTO varchar(1);
begin
    select F.CTR_VENCTO_PRODUTO from FILIAL F
      where F.IDFILIAL = new.IDFILIAL
    into :VCONTROLE_VENCIMENTO;

    if (:VCONTROLE_VENCIMENTO = 'S') then begin
        -- SE NÃO EXISTIR
        if (not(exists(
                select VP.IDFILIAL from VENCTO_PRODUTO VP
                   where VP.IDFILIAL = new.IDFILIAL
                     and VP.IDPRODUTO = new.IDPRODUTO
                     and VP.DATA_VENCTO = new.DTVECIMENTO))) then begin
            if (not new.DTVECIMENTO is null) then begin
                insert into VENCTO_PRODUTO
                      (IDFILIAL, IDPRODUTO, QTDE, DATA_VENCTO)
               values (new.IDFILIAL, new.IDPRODUTO, (new.QTDECOMPRA*new.FATORCONVERSAO), new.DTVECIMENTO);
            end
        end
        else begin
           update VENCTO_PRODUTO VP
              set VP.QTDE = VP.QTDE+(new.QTDECOMPRA*new.FATORCONVERSAO)
            where VP.IDFILIAL = new.IDFILIAL
              and VP.DATA_VENCTO = new.DTVECIMENTO
              and VP.IDPRODUTO = new.IDPRODUTO;
        end
    end
end
^

/* Trigger: ITENSENTRADA_UPDATE_DEPOSITO */
CREATE TRIGGER ITENSENTRADA_UPDATE_DEPOSITO FOR ITENSENTRADA
ACTIVE BEFORE UPDATE POSITION 0
as
  declare variable vMD_DEPOSITO varchar(1);
begin
  select F.MD_DEPOSITO from FILIAL F
   where F.IDFILIAL = new.IDFILIAL
  into :VMD_DEPOSITO;

   if (vMD_DEPOSITO = 'S') then begin
      execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,old.IDDEPOSITO,old.IDPRODUTO,(old.QTDECOMPRA*old.FATORCONVERSAO),'-','ALTERAÇÃO DE ENTRADA :' || old.IDNOTA);
      execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,new.IDDEPOSITO,new.IDPRODUTO,(new.QTDECOMPRA*new.FATORCONVERSAO),'+','ALTERAÇÃO DE ENTRADA :' || new.IDNOTA);
   end
end
^

/* Trigger: ITENSENTRADA_UPDATE_VENCTO_PRO */
CREATE TRIGGER ITENSENTRADA_UPDATE_VENCTO_PRO FOR ITENSENTRADA
ACTIVE BEFORE UPDATE POSITION 2
AS
  declare variable vCONTROLE_VENCIMENTO varchar(1);
begin
    select F.CTR_VENCTO_PRODUTO from FILIAL F
      where F.IDFILIAL = new.IDFILIAL
    into :VCONTROLE_VENCIMENTO;

    if (:VCONTROLE_VENCIMENTO = 'S') then begin
        -- SE NÃO EXISTIR
        if (not(exists(
                select VP.IDFILIAL from VENCTO_PRODUTO VP
                   where VP.IDFILIAL = new.IDFILIAL
                     and VP.IDPRODUTO = new.IDPRODUTO
                     and VP.DATA_VENCTO = new.DTVECIMENTO))) then begin
            if (not new.DTVECIMENTO is null) then begin
                insert into VENCTO_PRODUTO
                      (IDFILIAL, IDPRODUTO, QTDE, DATA_VENCTO)
               values (new.IDFILIAL, new.IDPRODUTO, (new.QTDECOMPRA*new.FATORCONVERSAO), new.DTVECIMENTO);
           end
        end
        else begin
           update VENCTO_PRODUTO VP
              set VP.QTDE = VP.QTDE-(old.QTDECOMPRA*old.FATORCONVERSAO)
            where VP.IDFILIAL = old.IDFILIAL
              and VP.DATA_VENCTO = old.DTVECIMENTO
              and VP.IDPRODUTO = old.IDPRODUTO;
    
    
           update VENCTO_PRODUTO VP
              set VP.QTDE = VP.QTDE+(new.QTDECOMPRA*new.FATORCONVERSAO)
            where VP.IDFILIAL = new.IDFILIAL
              and VP.DATA_VENCTO = new.DTVECIMENTO
              and VP.IDPRODUTO = new.IDPRODUTO;
        end
    end
end
^

/* Trigger: ITENSNOTA_AF_BAIXA_ESTOQUE */
CREATE TRIGGER ITENSNOTA_AF_BAIXA_ESTOQUE FOR ITENSNOTA
ACTIVE AFTER INSERT POSITION 0
AS
  declare variable vNOTA_BAIXA_ESTOQUE varchar(1);
  declare variable vTIPO_NOTA varchar(1);
  declare variable vSITUACAONOTA varchar(1);
  declare variable vDEPOSITO_LOCAL integer;
  declare variable vDEPOSITO_EXTERNO integer;
begin
   select F.NOTA_BAIXA_ESTOQUE from FILIAL F
      where F.IDFILIAL = new.IDFILIAL
     into :VNOTA_BAIXA_ESTOQUE;

   if (:VNOTA_BAIXA_ESTOQUE = 'S') then begin
      select N.TIPO_NOTA,N.SITUACAONOTA from NOTA N
        where N.IDFILIAL = new.IDFILIAL
          and N.IDNOTA = new.IDNOTA
          and N.TIPONOTA = new.TIPONOTA
       into :VTIPO_NOTA, :VSITUACAONOTA;

      select F.DEPOSITO_LOCAL, F.DEPOSITO_EXTERNO from FILIAL F
        where F.IDFILIAL = new.IDFILIAL
       into :VDEPOSITO_LOCAL, :VDEPOSITO_EXTERNO;

      if (:VSITUACAONOTA is null) then begin
          if (:VTIPO_NOTA = 'V') then begin
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,:vDEPOSITO_EXTERNO,new.IDPRODUTO,(new.QTDEPEDIDO*new.FATORCONVERSAO),'-','INCLUSÃO DE NOTA NF:' || new.IDNOTA);
          end
          if (:VTIPO_NOTA = 'D') then begin
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,:vDEPOSITO_EXTERNO,new.IDPRODUTO,(new.QTDEPEDIDO*new.FATORCONVERSAO),'+','INCLUSÃO DE NOTA NF:' || new.IDNOTA);
          end
      end
   end
end
^

/* Trigger: ITENSNOTA_AF_DL_BAIXA_ESTOQUE */
CREATE TRIGGER ITENSNOTA_AF_DL_BAIXA_ESTOQUE FOR ITENSNOTA
ACTIVE AFTER DELETE POSITION 0
AS
  declare variable vNOTA_BAIXA_ESTOQUE varchar(1);
  declare variable vTIPO_NOTA varchar(1);
  declare variable vSITUACAONOTA varchar(1);
  declare variable vDEPOSITO_LOCAL integer;
  declare variable vDEPOSITO_EXTERNO integer;
begin
   select F.NOTA_BAIXA_ESTOQUE from FILIAL F
      where F.IDFILIAL = old.IDFILIAL
     into :VNOTA_BAIXA_ESTOQUE;


   if (:VNOTA_BAIXA_ESTOQUE = 'S') then begin
      select N.TIPO_NOTA, N.SITUACAONOTA from NOTA N
        where N.IDFILIAL = old.IDFILIAL
          and N.IDNOTA = old.IDNOTA
          and N.TIPONOTA = old.TIPONOTA
        into :VTIPO_NOTA, :vSITUACAONOTA;

      select F.DEPOSITO_LOCAL, F.DEPOSITO_EXTERNO from FILIAL F
        where F.IDFILIAL = old.IDFILIAL
       into :VDEPOSITO_LOCAL, :VDEPOSITO_EXTERNO;

      if (:VSITUACAONOTA is null) then begin
          if (:VTIPO_NOTA = 'V') then begin
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,:VDEPOSITO_EXTERNO ,old.IDPRODUTO,(old.QTDEPEDIDO*old.FATORCONVERSAO),'+','EXCLUSÃO DE NOTA VENDA NF:' || old.IDNOTA );
          end
    
          if (:VTIPO_NOTA = 'D') then begin
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,:VDEPOSITO_EXTERNO ,old.IDPRODUTO,(old.QTDEPEDIDO*old.FATORCONVERSAO),'-','EXCLUSÃO DE NOTA DEVOLUÇÃO NF:' || old.IDNOTA );
          end
      end
   end
end
^

/* Trigger: ITENSNOTA_AF_UP_BAIXA_ESTOQUE */
CREATE TRIGGER ITENSNOTA_AF_UP_BAIXA_ESTOQUE FOR ITENSNOTA
ACTIVE AFTER UPDATE POSITION 0
AS
  declare variable vNOTA_BAIXA_ESTOQUE varchar(1);
  declare variable vTIPO_NOTA varchar(1);
  declare variable vDEPOSITO_LOCAL integer;
  declare variable vDEPOSITO_EXTERNO integer;
  declare variable vSITUACAONOTA varchar(1);
begin
   select F.NOTA_BAIXA_ESTOQUE from FILIAL F
      where F.IDFILIAL = new.IDFILIAL
     into :VNOTA_BAIXA_ESTOQUE;


   if (:VNOTA_BAIXA_ESTOQUE = 'S') then begin
      select N.TIPO_NOTA, N.SITUACAONOTA from NOTA N
        where N.IDFILIAL = new.IDFILIAL
          and N.IDNOTA = new.IDNOTA
          and N.TIPONOTA = new.TIPONOTA
        into :VTIPO_NOTA, :vSITUACAONOTA;

      select F.DEPOSITO_LOCAL, F.DEPOSITO_EXTERNO from FILIAL F
        where F.IDFILIAL = new.IDFILIAL
       into :VDEPOSITO_LOCAL, :VDEPOSITO_EXTERNO;


      if (:vSITUACAONOTA is null) then begin
          if (:VTIPO_NOTA = 'V') then begin
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,:VDEPOSITO_EXTERNO,old.IDPRODUTO,(old.QTDEPEDIDO*old.FATORCONVERSAO),'+','ALTERAÇÃO DE NOTA :' || old.IDNOTA);
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,:VDEPOSITO_EXTERNO,new.IDPRODUTO,(new.QTDEPEDIDO*new.FATORCONVERSAO),'-','ALTERAÇÃO DE NOTA :' || new.IDNOTA);
          end
    
          if (:VTIPO_NOTA = 'D') then begin
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,:VDEPOSITO_EXTERNO,old.IDPRODUTO,(old.QTDEPEDIDO*old.FATORCONVERSAO),'-','ALTERAÇÃO DE NOTA :' || old.IDNOTA);
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(new.IDFILIAL,:VDEPOSITO_EXTERNO,new.IDPRODUTO,(new.QTDEPEDIDO*new.FATORCONVERSAO),'+','ALTERAÇÃO DE NOTA :' || new.IDNOTA);
          end
      end

      if (:vSITUACAONOTA = 'C') then begin
          if (:VTIPO_NOTA = 'V') then begin
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,:VDEPOSITO_EXTERNO,old.IDPRODUTO,(old.QTDEPEDIDO*old.FATORCONVERSAO),'+','ALTERAÇÃO DE NOTA :' || old.IDNOTA);
          end
    
          if (:VTIPO_NOTA = 'D') then begin
             execute procedure ATUALIZA_ESTOQUE_DEPOSITO(old.IDFILIAL,:VDEPOSITO_EXTERNO,old.IDPRODUTO,(old.QTDEPEDIDO*old.FATORCONVERSAO),'-','ALTERAÇÃO DE NOTA :' || old.IDNOTA);
          end
      end

   end
end
^

/* Trigger: ITENSNOTA_BIU0 */
CREATE TRIGGER ITENSNOTA_BIU0 FOR ITENSNOTA
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
 declare variable vCST_IPI      varchar(3);
 declare variable vALIQUOTA_IPI NUMERIC(10,2);

 declare variable vCST_PIS      varchar(3);
 declare variable vALIQUOTA_PIS NUMERIC(10,2);

 declare variable vCST_COFINS      varchar(3);
 declare variable vALIQUOTA_COFINS NUMERIC(10,2);
 declare variable vIDTRIBUTO_CONFIS integer;
 declare variable vIDTRIBUTO_PIS integer;
 declare variable vIDTRIBUTO_IPI integer;
begin
   if (new.IDFOLHA <> 99) then
   begin
      Exit;
   end
   if (new.IDFOLHA <> 9) then
   begin
      Exit;
   end

--     if (new.idfolha <> 1) then
--     begin
/*
     if ((inserting) or (new.IDPRODUTO <> old.IDPRODUTO)) then
     begin
        select P.IDTRIBUTO_IPI, P.IDTRIBUTO_COFINS, P.IDTRIBUTO_PIS from PRODUTO P
           where P.IDFILIAL  = new.IDFILIAL
             and P.IDPRODUTO = new.IDPRODUTO
           into new.IDTRIBUTO_IPI, new.IDTRIBUTO_CONFINS, new.IDTRIBUTO_PIS;
     end
*/

        select P.IDTRIBUTO_COFINS, P.IDTRIBUTO_IPI, P.IDTRIBUTO_PIS from PRODUTO P
          where  P.IDFILIAL  = new.IDFILIAL
             and P.IDPRODUTO = new.IDPRODUTO
          into :VIDTRIBUTO_CONFIS, :VIDTRIBUTO_IPI, :VIDTRIBUTO_PIS;

        if (new.IDTRIBUTO_CONFINS is null) then
            if (:VIDTRIBUTO_CONFIS > 0) then
                new.IDTRIBUTO_CONFINS = :VIDTRIBUTO_CONFIS;

        if (new.IDTRIBUTO_IPI is null) then
            if (:VIDTRIBUTO_IPI > 0) then
                new.IDTRIBUTO_IPI = :VIDTRIBUTO_IPI;

        if (new.IDTRIBUTO_PIS is null) then
            if (:VIDTRIBUTO_PIS > 0) then
                new.IDTRIBUTO_PIS = :VIDTRIBUTO_PIS;
--     end


     if (new.IDTRIBUTO_IPI > 0) then
     begin
        new.VALOR_IPI = null;
        new.ALIQUOTA_IPI = null;

        if (new.IDTRIBUTO_IPI > 0) then
        begin
             select T.SITUACAO_IPI, T.ALIQUOTA_IPI
              from TRIBUTO T
               where T.IDFILIAL = new.IDFILIAL
                 and T.IDTRIBUTO = new.IDTRIBUTO_IPI
               into :VCST_IPI, :VALIQUOTA_IPI;
    
             new.CST_IPI      = :VCST_IPI;
             new.ALIQUOTA_IPI = :VALIQUOTA_IPI;
    --         if (new.CST_IPI = '00') then
    --         begin
                 if (new.ALIQUOTA_IPI > 0) then
                 begin
                     new.VALOR_IPI = (new.PRECOVENDA*new.QTDEPEDIDO) *new.ALIQUOTA_IPI/100;
    --             end
                 end
         end
     end



     if (new.IDTRIBUTO_CONFINS > 0) then
     begin
        new.VALOR_COFINS = null;
        new.ALIQUOTA_COFINS = null;
         --
         -- VERIFICANDO COFINS
         --
         if (new.IDTRIBUTO_CONFINS > 0) then
         begin
             select T.SITUACAO_COFINS, T.ALIQUOTA_COFINS
              from TRIBUTO T
               where T.IDFILIAL = new.IDFILIAL
                 and T.IDTRIBUTO = new.IDTRIBUTO_CONFINS
               into :VCST_COFINS, :VALIQUOTA_COFINS;
    
             new.CST_COFINS      = :VCST_COFINS;
             new.ALIQUOTA_COFINS = :VALIQUOTA_COFINS;
             if (new.ALIQUOTA_COFINS > 0) then
             begin
                 new.VALOR_COFINS = (new.PRECOVENDA*new.QTDEPEDIDO)*new.ALIQUOTA_COFINS/100;
             end
         end
     end


     if (new.IDTRIBUTO_PIS > 0) then
     begin
        new.VALOR_PIS = null;
        new.ALIQUOTA_PIS = null;

         if (new.IDTRIBUTO_PIS > 0) then
         begin
             select T.SITUACAO_PIS, T.ALIQUOTA_PIS
              from TRIBUTO T
               where T.IDFILIAL = new.IDFILIAL
                 and T.IDTRIBUTO = new.IDTRIBUTO_PIS
               into :VCST_PIS, :VALIQUOTA_PIS;
    
             new.CST_PIS      = :VCST_PIS;
             new.ALIQUOTA_PIS = :VALIQUOTA_PIS;
             if (new.ALIQUOTA_PIS > 0) then
             begin
                 new.VALOR_PIS = (new.PRECOVENDA*new.QTDEPEDIDO)*new.ALIQUOTA_PIS/100;
             end
         end

     end
end
^

/* Trigger: ITENSNOTA_COMPLEMENTAR_BI0 */
CREATE TRIGGER ITENSNOTA_COMPLEMENTAR_BI0 FOR ITENSNOTA_COMPLEMENTAR
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   select max(IT.CONTADOR)+1 from ITENSNOTA_COMPLEMENTAR IT
      where IT.IDFILIAL = new.IDFILIAL
        and IT.IDPEDIDO = new.IDPEDIDO
      into new.CONTADOR;

   if (new.CONTADOR is null) then new.CONTADOR = 1;
end
^

/* Trigger: ITENSNOTA_NCM */
CREATE TRIGGER ITENSNOTA_NCM FOR ITENSNOTA
ACTIVE BEFORE INSERT OR UPDATE POSITION 3
AS
 declare variable vALIQUOTA numeric(16,2);
begin
   select P.CLASSIFICACAO_FISCAL from PRODUTO P
     where P.IDFILIAL = new.IDFILIAL
       and p.IDPRODUTO = new.IDPRODUTO
   into new.NCM;


   select I.ALIQUOTA_NACIONAL from TIPI I
     where I.NCM = new.NCM
     into :VALIQUOTA;


   if (:VALIQUOTA > 0) then
   begin
      new.VALOR_IBPT = ((new.PRECOVENDA*new.QTDEPEDIDO) *:VALIQUOTA)/100;
   end
end
^

/* Trigger: ITENSPEDIDOPALM_AI0 */
CREATE TRIGGER ITENSPEDIDOPALM_AI0 FOR ITENSPEDIDOPALM
ACTIVE AFTER INSERT POSITION 0
AS
begin
    if (new.retransmitir is null) then
    begin
        INSERT INTO ITENSPEDIDOPALM_AUX (IDFILIAL, IDREPRESENTANTE, IDPEDIDOPALM, IDPEDIDO, IDITEM, UNIDADEMEDIDA, QTDEPEDIDO, VALORUNITARIO, DESCONTO, OFERTA, SITUACAOITEM, ITEMTROCA, VALORUNITARIOTABELA, IDPRODUTO, OBSERVACAO)
            VALUES (new.IDFILIAL, new.IDREPRESENTANTE, new.IDPEDIDOPALM, new.IDPEDIDO, new.IDITEM, new.UNIDADEMEDIDA, new.QTDEPEDIDO, new.VALORUNITARIO, new.DESCONTO, new.OFERTA, new.SITUACAOITEM, new.ITEMTROCA, new.VALORUNITARIOTABELA, new.IDPRODUTO, new.OBSERVACAO);
    end
end
^

/* Trigger: ITENSPEDIDOPALM_AUX_BU0 */
CREATE TRIGGER ITENSPEDIDOPALM_AUX_BU0 FOR ITENSPEDIDOPALM_AUX
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
   if ((new.retransmitir = 'S') and (old.retransmitir is null)) then
    begin
        INSERT INTO ITENSPEDIDOPALM (IDFILIAL, IDREPRESENTANTE, IDPEDIDOPALM, IDPEDIDO, IDITEM, UNIDADEMEDIDA, QTDEPEDIDO, VALORUNITARIO, DESCONTO, OFERTA, SITUACAOITEM, ITEMTROCA, VALORUNITARIOTABELA, IDPRODUTO, retransmitir)
            VALUES (new.IDFILIAL, new.IDREPRESENTANTE, new.IDPEDIDOPALM, new.IDPEDIDO, new.IDITEM, new.UNIDADEMEDIDA, new.QTDEPEDIDO, new.VALORUNITARIO, new.DESCONTO, new.OFERTA, new.SITUACAOITEM, new.ITEMTROCA, new.VALORUNITARIOTABELA, new.IDPRODUTO, new.retransmitir);
        new.retransmitir = null;
    end
end
^

/* Trigger: ITENSPEDIDO_BDREL_MOVIMENTACAO */
CREATE TRIGGER ITENSPEDIDO_BDREL_MOVIMENTACAO FOR ITENSPEDIDO
ACTIVE BEFORE DELETE POSITION 11
AS
begin
  delete from REL_MOVIMENTACAO R
    where R.IDFILIAL = old.IDFILIAL
      and R.IDPEDIDO = old.IDPEDIDO
      and R.IDFOLHA  = old.IDFOLHA
      and R.CONTADOR_PRODUTO = old.CONTADOR
      and R.ORIGEM = 'V';
end
^

/* Trigger: ITENSPEDIDO_BF_CLIENTE_PRODUTO */
CREATE TRIGGER ITENSPEDIDO_BF_CLIENTE_PRODUTO FOR ITENSPEDIDO
ACTIVE BEFORE INSERT POSITION 2
as
  declare variable vIDCLIENTE integer;
  declare variable vSIT_CLIENTE_PRODUTO varchar(1);
  declare variable vIDTABELAPRECO INTEGER;
  declare variable vPRECOTABELAUNIT numeric(14,4);
  declare variable vORCAMENTO_VENDA varchar(1);
begin
   select coalesce(P.ORCAMENTO_VENDA,'') from PEDIDO P
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPEDIDO = new.IDPEDIDO
      and P.IDFOLHA  = new.IDFOLHA
   into :VORCAMENTO_VENDA;
   if (:VORCAMENTO_VENDA = 'O') then Exit;

--  if (new.IDFOLHA <> 9) then begin
      select F.SIT_CLIENTE_PRODUTO
      from FILIAL F
      where F.IDFILIAL = new.IDFILIAL
      into :vSIT_CLIENTE_PRODUTO ;
    
      if (:vSIT_CLIENTE_PRODUTO='S') then begin
         --Localizar Codigo da Tabela de Preco e do cliente
         select P.IDCLIENTE,P.IDTABELAPRECO
           from PEDIDO P
          where P.IDFILIAL = new.IDFILIAL
            and P.IDPEDIDO = new.IDPEDIDO
            and P.IDFOLHA = new.IDFOLHA
           into :vIDCLIENTE,:vIDTABELAPRECO ;

         --Localizar preco unitario do produto
         select IT.PRECOUNIT from ITENSTABELAPRECO IT
         where IT.IDFILIAL = NEW.IDFILIAL
         and   IT.IDTABELAPRECO = :vIDTABELAPRECO
         and   IT.IDPRODUTO = NEW.IDPRODUTO
         into :vPRECOTABELAUNIT;

    
         if (not exists(select IDCLIENTE from CLIENTE_PRODUTO
                         where IDCLIENTE=:vIDCLIENTE
                           and IDFILIAL = new.IDFILIAL
                           and IDPRODUTO=new.IDPRODUTO))
         then begin
              insert into CLIENTE_PRODUTO (IDCLIENTE, IDPRODUTO, PRECO_VENDA, IDFILIAL, PRECO_ATUAL)
                                 values (:vIDCLIENTE, new.IDPRODUTO, new.PRECOVENDA/new.FATORCONVERSAO, new.IDFILIAL, :vPRECOTABELAUNIT);
              end
         else begin
              update CLIENTE_PRODUTO CP
              set CP.preco_venda = new.precovenda/new.FATORCONVERSAO,
                  CP.PRECO_ATUAL = :vPRECOTABELAUNIT
              where CP.IDCLIENTE = :vIDCLIENTE
                and CP.IDFILIAL = new.IDFILIAL
                and CP.IDPRODUTO = new.idproduto;
         end
      end
--   end
end
^

/* Trigger: ITENSPEDIDO_BF_DELETE_CONSIG */
CREATE TRIGGER ITENSPEDIDO_BF_DELETE_CONSIG FOR ITENSPEDIDO
ACTIVE BEFORE DELETE POSITION 0
as
  declare variable vIDREPRESENTANTE integer;
  declare variable vSITUACAO_PEDIDO varchar(1);
  declare variable vIDCONSIGNACAO integer;
begin
    select P.IDREPRESENTANTE, P.SITUACAOPEDIDO, P.IDCONSIGNACAO  from PEDIDO P
      where P.IDFILIAL = old.IDFILIAL
        and P.IDPEDIDO = old.IDPEDIDO
        and P.IDFOLHA = old.IDFOLHA
      into :VIDREPRESENTANTE, :VSITUACAO_PEDIDO, VIDCONSIGNACAO;

    -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
    if (old.SIT_PEDIDO = 'C') then begin

        if (old.ESTOQUE_REPRESENTANTE = 'S') then begin
           update ITENS_CONSIGNACAO RP
              set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA-(old.QTDEPEDIDO*old.FATORCONVERSAO),
                  RP.QTDE_ENTRADA_QUE_ALTERA = RP.QTDE_ENTRADA_QUE_ALTERA-(old.QTDEPEDIDO*old.FATORCONVERSAO),
                  RP.PRECO_VENDA = (old.PRECOVENDA/old.FATORCONVERSAO)
            where RP.IDFILIAL = old.IDFILIAL
              and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
              and RP.IDPRODUTO = old.IDPRODUTO;
        end
    end

    -- SÓ SE A SITUACAO DO PEDIDO FOR VENDA
    if ((old.SIT_PEDIDO = 'V') or (old.SIT_PEDIDO = 'B')) then begin
    
        if (old.ESTOQUE_REPRESENTANTE = 'S') then begin
           update ITENS_CONSIGNACAO RP
              set RP.QTDE_SAIDA = RP.QTDE_SAIDA-(old.QTDEPEDIDO*old.FATORCONVERSAO)
            where RP.IDFILIAL = old.IDFILIAL
              and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
              and RP.IDPRODUTO = old.IDPRODUTO;
        end
    end
end
^

/* Trigger: ITENSPEDIDO_BF_FOR_CLIENTE */
CREATE TRIGGER ITENSPEDIDO_BF_FOR_CLIENTE FOR ITENSPEDIDO
ACTIVE BEFORE INSERT POSITION 4
as
  declare variable vIDFORNECEDOR integer;
  declare variable vIDCLIENTE integer;
begin
  /* REGISTRA COMPRA DOS PRODUTOS DE TAL FORNECEDOR COM OS CLIENTES */

/*
  select P.IDFORNECEDOR from PRODUTO P
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPRODUTO = new.IDPRODUTO
    into :VIDFORNECEDOR;

  select PE.IDCLIENTE from PEDIDO PE
    where PE.IDFILIAL = new.IDFILIAL
      and PE.IDPEDIDO = new.IDPEDIDO
      and PE.IDFOLHA = new.IDFOLHA
    into :VIDCLIENTE;

  if (not (exists(select CF.IDFILIAL from CLIENTE_FORNECEDOR CF
             where CF.IDCLIENTE = :VIDCLIENTE
               and CF.IDFILIAL = new.IDFILIAL
               and CF.IDFORNECEDOR = :VIDFORNECEDOR))) then begin

      insert into CLIENTE_FORNECEDOR (IDCLIENTE,IDFILIAL,IDFORNECEDOR)
        values (:VIDCLIENTE,new.IDFILIAL,:VIDFORNECEDOR);
  end
*/
POST_EVENT '$$IBE$$';
end
^

/* Trigger: ITENSPEDIDO_BF_INSERT_CONSIG */
CREATE TRIGGER ITENSPEDIDO_BF_INSERT_CONSIG FOR ITENSPEDIDO
ACTIVE BEFORE INSERT POSITION 3
as
  declare variable vIDREPRESENTANTE integer;
  declare variable vSITUACAO_PEDIDO varchar(1);
  declare variable VIDCONSIGNACAO integer;
  declare variable VORCAMENTO_VENDA varchar(1);
begin

   select coalesce(P.ORCAMENTO_VENDA,'') from PEDIDO P
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPEDIDO = new.IDPEDIDO
      and P.IDFOLHA  = new.IDFOLHA
   into :VORCAMENTO_VENDA;
   if (:VORCAMENTO_VENDA = 'O') then Exit;

    select P.IDREPRESENTANTE, P.SITUACAOPEDIDO, P.IDCONSIGNACAO from PEDIDO P
      where P.IDFILIAL = new.IDFILIAL
        and P.IDPEDIDO = new.IDPEDIDO
        and P.IDFOLHA = new.IDFOLHA
      into :VIDREPRESENTANTE, :vSITUACAO_PEDIDO, :vIDCONSIGNACAO;

    -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
    if (VSITUACAO_PEDIDO = 'C') then begin

        -- SÓ SE CONTROLA ESTOQUE POR REPRESENTANTE
        if (new.ESTOQUE_REPRESENTANTE = 'S') then begin
    
            -- SE NÃO EXISTIR
            if (not(exists(
                    select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                       where RP.IDFILIAL = new.IDFILIAL
                         and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                         and RP.IDPRODUTO = new.IDPRODUTO))) then begin

                insert into ITENS_CONSIGNACAO
                      (IDFILIAL, IDCONSIGNACAO, IDPRODUTO, QTDE_ENTRADA, PRECO_VENDA, QTDE_ENTRADA_QUE_ALTERA)
               values (new.IDFILIAL, :VIDCONSIGNACAO, new.IDPRODUTO, (new.QTDEPEDIDO*new.FATORCONVERSAO), (new.PRECOVENDA/new.FATORCONVERSAO),(new.QTDEPEDIDO*new.FATORCONVERSAO));
            end
            else begin
               update ITENS_CONSIGNACAO RP
                  set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA+(new.QTDEPEDIDO*new.FATORCONVERSAO),
                      RP.QTDE_ENTRADA_QUE_ALTERA = RP.QTDE_ENTRADA_QUE_ALTERA+(new.QTDEPEDIDO*new.FATORCONVERSAO),
                      RP.PRECO_VENDA = (new.PRECOVENDA/new.FATORCONVERSAO)
                where RP.IDFILIAL = new.IDFILIAL
                  and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                  and RP.IDPRODUTO = new.IDPRODUTO;
            end
        end
    end



    -- SÓ SE A SITUACAO DO PEDIDO FOR CONSIGNACAO
    if ((:VSITUACAO_PEDIDO = 'V') or (:VSITUACAO_PEDIDO = 'B'))  then begin

        -- SÓ SE CONTROLA ESTOQUE POR REPRESENTANTE
        if (new.ESTOQUE_REPRESENTANTE = 'S') then begin
    
            -- SE NÃO EXISTIR
            if ((exists(select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                         where RP.IDFILIAL = new.IDFILIAL
                           and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                           and RP.IDPRODUTO = new.IDPRODUTO))) then begin

               update ITENS_CONSIGNACAO RP
                  set RP.QTDE_SAIDA = RP.QTDE_SAIDA+(new.QTDEPEDIDO*new.FATORCONVERSAO)
                where RP.IDFILIAL = new.IDFILIAL
                  and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                  and RP.IDPRODUTO = new.IDPRODUTO;
            end
        end
    end
end
^

/* Trigger: ITENSPEDIDO_BF_UPDATE_CONSIG */
CREATE TRIGGER ITENSPEDIDO_BF_UPDATE_CONSIG FOR ITENSPEDIDO
ACTIVE BEFORE UPDATE POSITION 3
as
  declare variable vIDREPRESENTANTE integer;
  declare variable vSITUACAO_PEDIDO varchar(1);
  declare variable vIDCONSIGNACAO   integer;
  declare variable vORCAMENTO_VENDA varchar(1);
begin
  select coalesce(P.ORCAMENTO_VENDA,'') from PEDIDO P
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPEDIDO = new.IDPEDIDO
      and P.IDFOLHA  = new.IDFOLHA
   into :VORCAMENTO_VENDA;
  if (:VORCAMENTO_VENDA = 'O') then Exit;

    select P.IDREPRESENTANTE, P.SITUACAOPEDIDO, P.IDCONSIGNACAO  from PEDIDO P
      where P.IDFILIAL = new.IDFILIAL
        and P.IDPEDIDO = new.IDPEDIDO
        and P.IDFOLHA = new.IDFOLHA
      into :VIDREPRESENTANTE, :VSITUACAO_PEDIDO, :VIDCONSIGNACAO;


    -- SE FOR PEDIDO DE CONSIGNACAO
    if (old.SIT_PEDIDO = 'C') then begin
        if (old.ESTOQUE_REPRESENTANTE = 'S') then begin
           update ITENS_CONSIGNACAO RP
              set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA-(old.QTDEPEDIDO*old.FATORCONVERSAO),
                  RP.QTDE_ENTRADA_QUE_ALTERA = RP.QTDE_ENTRADA_QUE_ALTERA-(old.QTDEPEDIDO*old.FATORCONVERSAO),
                  RP.PRECO_VENDA = (old.PRECOVENDA/old.FATORCONVERSAO)
            where RP.IDFILIAL = old.IDFILIAL
              and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
              and RP.IDPRODUTO = old.IDPRODUTO;
        end
    end

    -- SE FOR PEDIDO DE CONSIGNACAO
    if (new.SIT_PEDIDO = 'C') then begin

        if (new.ESTOQUE_REPRESENTANTE = 'S') then begin
            -- SE NÃO EXISTIR
            if (not(exists(
                    select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                       where RP.IDFILIAL = new.IDFILIAL
                         and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                         and RP.IDPRODUTO = new.IDPRODUTO))) then begin
                insert into ITENS_CONSIGNACAO
                      (IDFILIAL, IDCONSIGNACAO, IDPRODUTO, QTDE_ENTRADA, PRECO_VENDA, QTDE_ENTRADA_QUE_ALTERA)
               values (new.IDFILIAL, :VIDCONSIGNACAO, new.IDPRODUTO, (new.QTDEPEDIDO*new.FATORCONVERSAO), (new.PRECOVENDA/new.FATORCONVERSAO), (new.QTDEPEDIDO*new.FATORCONVERSAO));
            end
            else begin
               update ITENS_CONSIGNACAO RP
                  set RP.QTDE_ENTRADA = RP.QTDE_ENTRADA+(new.QTDEPEDIDO*new.FATORCONVERSAO),
                      RP.QTDE_ENTRADA_QUE_ALTERA = RP.QTDE_ENTRADA_QUE_ALTERA+(new.QTDEPEDIDO*new.FATORCONVERSAO),
                      RP.PRECO_VENDA = (new.PRECOVENDA/new.FATORCONVERSAO)
                where RP.IDFILIAL = new.IDFILIAL
                  and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                  and RP.IDPRODUTO = new.IDPRODUTO;
            end
        end
    end

    -- SE FOR PEDIDO DE VENDA
    if ((old.SIT_PEDIDO = 'V') or (old.SIT_PEDIDO = 'B')) then begin

        if (old.ESTOQUE_REPRESENTANTE = 'S') then begin
            -- SE NÃO EXISTIR
           update ITENS_CONSIGNACAO RP
              set RP.QTDE_SAIDA = RP.QTDE_SAIDA-(old.QTDEPEDIDO*old.FATORCONVERSAO)
            where RP.IDFILIAL = old.IDFILIAL
              and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
              and RP.IDPRODUTO = old.IDPRODUTO;
        end
    end


    -- SE FOR PEDIDO DE VENDA
    if ((new.SIT_PEDIDO = 'V') or (new.SIT_PEDIDO = 'B'))  then begin

        if (new.ESTOQUE_REPRESENTANTE = 'S') then begin
            -- SE NÃO EXISTIR
            if ((exists(
                    select RP.IDFILIAL from ITENS_CONSIGNACAO RP
                       where RP.IDFILIAL = new.IDFILIAL
                         and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                         and RP.IDPRODUTO = new.IDPRODUTO))) then begin

               update ITENS_CONSIGNACAO RP
                  set RP.QTDE_SAIDA = RP.QTDE_SAIDA+(new.QTDEPEDIDO*new.FATORCONVERSAO)
                where RP.IDFILIAL = new.IDFILIAL
                  and RP.IDCONSIGNACAO = :VIDCONSIGNACAO
                  and RP.IDPRODUTO = new.IDPRODUTO;
            end
        end
    end
end
^

/* Trigger: ITENSPEDIDO_BF_UP_CLIENTE_PRO */
CREATE TRIGGER ITENSPEDIDO_BF_UP_CLIENTE_PRO FOR ITENSPEDIDO
ACTIVE BEFORE UPDATE POSITION 2
as
  declare variable vIDCLIENTE integer;
  declare variable vSIT_CLIENTE_PRODUTO varchar(1);
  declare variable vIDTABELAPRECO integer;
  declare variable vPRECOTABELAUNIT numeric(14,4);
  declare variable VORCAMENTO_VENDA varchar(1);
begin
  select coalesce(P.ORCAMENTO_VENDA,'') from PEDIDO P
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPEDIDO = new.IDPEDIDO
      and P.IDFOLHA  = new.IDFOLHA
   into :VORCAMENTO_VENDA;
  if (:VORCAMENTO_VENDA = 'O') then Exit;

--  if (new.IDFOLHA <> 9) then begin
      select F.SIT_CLIENTE_PRODUTO
      from FILIAL F
      where F.IDFILIAL = new.IDFILIAL
      into :vSIT_CLIENTE_PRODUTO ;
    
      if (:vSIT_CLIENTE_PRODUTO='S') then begin
         -- Localiza Codigo do cliente e Codigo da Tabela
         select P.IDCLIENTE, P.IDTABELAPRECO
           from PEDIDO P
          where P.IDFILIAL = new.IDFILIAL
            and P.IDPEDIDO = new.IDPEDIDO
            and P.IDFOLHA = new.IDFOLHA
           into :vIDCLIENTE, VIDTABELAPRECO ;

         -- Localiza Preco unitario da Tabela
         select IT.PRECOUNIT  from ITENSTABELAPRECO IT
         where IT.IDFILIAL = NEW.IDFILIAL
         and   IT.IDTABELAPRECO = :VIDTABELAPRECO
         and   IT.IDPRODUTO = NEW.IDPRODUTO
         into :VPRECOTABELAUNIT;

         if (not exists(select IDCLIENTE from CLIENTE_PRODUTO
                         where IDCLIENTE=:vIDCLIENTE
                         and IDFILIAL = new.IDFILIAL
                         and IDPRODUTO=new.IDPRODUTO))
         then begin
              insert into CLIENTE_PRODUTO (IDCLIENTE, IDPRODUTO, PRECO_VENDA, IDFILIAL, PRECO_ATUAL)
                                 values (:vIDCLIENTE, new.IDPRODUTO, new.PRECOVENDA/new.FATORCONVERSAO, new.IDFILIAL, :vPRECOTABELAUNIT);
              end
         else begin
              update CLIENTE_PRODUTO CP
              set CP.preco_venda = new.precovenda/new.FATORCONVERSAO,
                  CP.PRECO_ATUAL = :VPRECOTABELAUNIT

              where CP.IDCLIENTE = :vIDCLIENTE
                and CP.IDFILIAL = new.IDFILIAL
                and CP.IDPRODUTO = new.idproduto;
         end
      end
 --  end
end
^

/* Trigger: ITENSPEDIDO_BIU0 */
CREATE TRIGGER ITENSPEDIDO_BIU0 FOR ITENSPEDIDO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
 declare variable vCST_IPI      varchar(3);
 declare variable vALIQUOTA_IPI NUMERIC(10,2);

 declare variable vCST_PIS      varchar(3);
 declare variable vALIQUOTA_PIS NUMERIC(10,2);

 declare variable vCST_COFINS      varchar(3);
 declare variable vALIQUOTA_COFINS NUMERIC(10,2);
 declare variable vIDTRIBUTO_CONFIS integer;
 declare variable vIDTRIBUTO_PIS integer;
 declare variable vIDTRIBUTO_IPI integer;
begin
--     if (new.idfolha <> 1) then
--     begin
/*
     if ((inserting) or (new.IDPRODUTO <> old.IDPRODUTO)) then
     begin
        select P.IDTRIBUTO_IPI, P.IDTRIBUTO_COFINS, P.IDTRIBUTO_PIS from PRODUTO P
           where P.IDFILIAL  = new.IDFILIAL
             and P.IDPRODUTO = new.IDPRODUTO
           into new.IDTRIBUTO_IPI, new.IDTRIBUTO_CONFINS, new.IDTRIBUTO_PIS;
     end
*/
        new.DATA_HORA_INCLUSAO = current_timestamp;
        select P.IDTRIBUTO_COFINS, P.IDTRIBUTO_IPI, P.IDTRIBUTO_PIS from PRODUTO P
          where  P.IDFILIAL  = new.IDFILIAL
             and P.IDPRODUTO = new.IDPRODUTO
          into :VIDTRIBUTO_CONFIS, :VIDTRIBUTO_IPI, :VIDTRIBUTO_PIS;

        if (new.IDTRIBUTO_CONFINS is null) then
            if (:VIDTRIBUTO_CONFIS > 0) then
                new.IDTRIBUTO_CONFINS = :VIDTRIBUTO_CONFIS;

        if (new.IDTRIBUTO_IPI is null) then
            if (:VIDTRIBUTO_IPI > 0) then
                new.IDTRIBUTO_IPI = :VIDTRIBUTO_IPI;

        if (new.IDTRIBUTO_PIS is null) then
            if (:VIDTRIBUTO_PIS > 0) then
                new.IDTRIBUTO_PIS = :VIDTRIBUTO_PIS;
--     end


     if (inserting) then
     begin
         if (new.IDTRIBUTO_IPI > 0) then
         begin
            new.VALOR_IPI = null;
            new.ALIQUOTA_IPI = null;
    
            if (new.IDTRIBUTO_IPI > 0) then
            begin
                 select T.SITUACAO_IPI, T.ALIQUOTA_IPI
                  from TRIBUTO T
                   where T.IDFILIAL = new.IDFILIAL
                     and T.IDTRIBUTO = new.IDTRIBUTO_IPI
                   into :VCST_IPI, :VALIQUOTA_IPI;
        
                 new.CST_IPI      = :VCST_IPI;
                 new.ALIQUOTA_IPI = :VALIQUOTA_IPI;
        --         if (new.CST_IPI = '00') then
        --         begin
                     if (new.ALIQUOTA_IPI > 0) then
                     begin
                         new.VALOR_IPI = (new.PRECOVENDA*new.QTDEPEDIDO) *new.ALIQUOTA_IPI/100;
        --             end
                     end
             end
         end
     end



     if (new.IDTRIBUTO_CONFINS > 0) then
     begin
        new.VALOR_COFINS = null;
        new.ALIQUOTA_COFINS = null;
         --
         -- VERIFICANDO COFINS
         --
         if (new.IDTRIBUTO_CONFINS > 0) then
         begin
             select T.SITUACAO_COFINS, T.ALIQUOTA_COFINS
              from TRIBUTO T
               where T.IDFILIAL = new.IDFILIAL
                 and T.IDTRIBUTO = new.IDTRIBUTO_CONFINS
               into :VCST_COFINS, :VALIQUOTA_COFINS;
    
             new.CST_COFINS      = :VCST_COFINS;
             new.ALIQUOTA_COFINS = :VALIQUOTA_COFINS;
             if (new.ALIQUOTA_COFINS > 0) then
             begin
                 new.VALOR_COFINS = (new.PRECOVENDA*new.QTDEPEDIDO)*new.ALIQUOTA_COFINS/100;
             end
         end
     end


     if (new.IDTRIBUTO_PIS > 0) then
     begin
        new.VALOR_PIS = null;
        new.ALIQUOTA_PIS = null;

         if (new.IDTRIBUTO_PIS > 0) then
         begin
             select T.SITUACAO_PIS, T.ALIQUOTA_PIS
              from TRIBUTO T
               where T.IDFILIAL = new.IDFILIAL
                 and T.IDTRIBUTO = new.IDTRIBUTO_PIS
               into :VCST_PIS, :VALIQUOTA_PIS;
    
             new.CST_PIS      = :VCST_PIS;
             new.ALIQUOTA_PIS = :VALIQUOTA_PIS;
             if (new.ALIQUOTA_PIS > 0) then
             begin
                 new.VALOR_PIS = (new.PRECOVENDA*new.QTDEPEDIDO)*new.ALIQUOTA_PIS/100;
             end
         end

     end
end
^

/* Trigger: ITENSPEDIDO_BUREL_MOVIMENTACAO */
CREATE TRIGGER ITENSPEDIDO_BUREL_MOVIMENTACAO FOR ITENSPEDIDO
ACTIVE BEFORE UPDATE POSITION 11
AS
begin
  if ((new.PRECOVENDA*new.QTDEPEDIDO) <> (old.PRECOVENDA*old.QTDEPEDIDO)) then
  begin
      update REL_MOVIMENTACAO R
         set R.VALORPRODUTO = (new.PRECOVENDA*new.QTDEPEDIDO)
       where R.IDFILIAL = new.IDFILIAL
         and R.IDPEDIDO = new.IDPEDIDO
         and R.IDFOLHA  = new.IDFOLHA
         and R.CONTADOR_PRODUTO = new.CONTADOR
         and R.ORIGEM = 'V'; -- SE FOR VENDA
  end
end
^

/* Trigger: ITENSPEDIDO_REL_MOVIMENTACAO */
CREATE TRIGGER ITENSPEDIDO_REL_MOVIMENTACAO FOR ITENSPEDIDO
ACTIVE BEFORE INSERT POSITION 11
AS
begin
  INSERT INTO REL_MOVIMENTACAO (IDFILIAL, DATA, IDCONTROLE, IDPEDIDO, IDFOLHA, CONTADOR_PRODUTO, IDPRODUTO,  TIPO_MOVIMENTO, VALORPRODUTO, ORIGEM)
        VALUES (new.IDFILIAL, current_date, 0 , new.IDPEDIDO, new.IDFOLHA, new.CONTADOR, new.IDPRODUTO, '+', (new.PRECOVENDA*new.QTDEPEDIDO) ,'V');
end
^

/* Trigger: ITENSPRODUCAO_BF_UPDATE */
CREATE TRIGGER ITENSPRODUCAO_BF_UPDATE FOR ITENSPRODUCAO
ACTIVE BEFORE UPDATE POSITION 0
AS
begin

  execute procedure ATUALIZA_ESTOQUE(old.IDFILIAL,old.IDMATERIA_PRIMA,old.QTDE,'+','ALTERAÇÃO PRODUCAO: ' || old.IDPRODUCAO);

  execute procedure ATUALIZA_ESTOQUE(new.IDFILIAL,new.IDMATERIA_PRIMA,new.QTDE,'-','ALTERAÇÃO PRODUCAO: ' || new.IDPRODUCAO);

end
^

/* Trigger: ITENSTABELAPRECO_BI0 */
CREATE TRIGGER ITENSTABELAPRECO_BI0 FOR ITENSTABELAPRECO
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   new.PRECO_FOI_ALTERADO = 'S';
end
^

/* Trigger: ITENSTABELAPRECO_MUDA_FLAG */
CREATE TRIGGER ITENSTABELAPRECO_MUDA_FLAG FOR ITENSTABELAPRECO
ACTIVE BEFORE UPDATE POSITION 1
AS
begin
   if (new.PRECOVENDA <> old.PRECOVENDA) then
      new.PRECO_FOI_ALTERADO = 'S';
end
^

/* Trigger: ITENS_COBRANCA_CTS_RECEBER_AD0 */
CREATE TRIGGER ITENS_COBRANCA_CTS_RECEBER_AD0 FOR ITENS_COBRANCA_CTS_RECEBER
ACTIVE AFTER DELETE POSITION 0
AS
begin
   update PEDIDO P
      set P.COBRANCA_CTS = null
    where P.IDFILIAL = old.IDFILIAL
      and P.IDPEDIDO = old.IDRECEBER
      and P.IDFOLHA  = old.IDFOLHA;
end
^

/* Trigger: ITENS_COBRANCA_CTS_RECEBER_BI0 */
CREATE TRIGGER ITENS_COBRANCA_CTS_RECEBER_BI0 FOR ITENS_COBRANCA_CTS_RECEBER
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   update PEDIDO P
      set P.COBRANCA_CTS = new.IDCONTROLE
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPEDIDO = new.IDRECEBER
      and P.IDFOLHA  = new.IDFOLHA;
end
^

/* Trigger: ITENS_COBRANCA_CTS_RECEBER_BU0 */
CREATE TRIGGER ITENS_COBRANCA_CTS_RECEBER_BU0 FOR ITENS_COBRANCA_CTS_RECEBER
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
   update PEDIDO P
      set P.COBRANCA_CTS = null
    where P.IDFILIAL = old.IDFILIAL
      and P.IDPEDIDO = old.IDRECEBER
      and P.IDFOLHA  = old.IDFOLHA;

   update PEDIDO P
      set P.COBRANCA_CTS = new.IDCONTROLE
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPEDIDO = new.IDRECEBER
      and P.IDFOLHA  = new.IDFOLHA;
end
^

/* Trigger: ITENS_CONSIGNACAO_AF_UPDATE */
CREATE TRIGGER ITENS_CONSIGNACAO_AF_UPDATE FOR ITENS_CONSIGNACAO
ACTIVE AFTER UPDATE POSITION 0
AS
 declare variable vATUALIZA_ESTOQUE_PRODUTO varchar(1);
begin
  select f.tratar_clientes_novos from FILIAL F
  where f.idfilial = new.idfilial
  into :vatualiza_estoque_produto;


  if (vatualiza_estoque_produto = 'S') then begin
     update PRODUTO P
     set p.qtdeatual = (new.qtde_entrada-new.qtde_saida)
     where p.idfilial = new.idfilial
     and   p.idproduto = new.idproduto;
  end
end
^

/* Trigger: ITENS_CTRL_ENTREGA_AD0 */
CREATE TRIGGER ITENS_CTRL_ENTREGA_AD0 FOR ITENS_CTRL_ENTREGA
ACTIVE AFTER DELETE POSITION 0
AS
begin
   update PEDIDO P
      set P.ENTREGA = null
    where P.IDFILIAL = old.IDFILIAL
      and P.IDPEDIDO = old.IDRECEBER
      and P.IDFOLHA  = old.IDFOLHA;
end
^

/* Trigger: ITENS_CTRL_ENTREGA_BI0 */
CREATE TRIGGER ITENS_CTRL_ENTREGA_BI0 FOR ITENS_CTRL_ENTREGA
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   update PEDIDO P
      set P.ENTREGA = new.IDCONTROLE
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPEDIDO = new.IDRECEBER
      and P.IDFOLHA  = new.IDFOLHA;
end
^

/* Trigger: ITENS_CTRL_ENTREGA_BU0 */
CREATE TRIGGER ITENS_CTRL_ENTREGA_BU0 FOR ITENS_CTRL_ENTREGA
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
   update PEDIDO P
      set P.ENTREGA = null
    where P.IDFILIAL = old.IDFILIAL
      and P.IDPEDIDO = old.IDRECEBER
      and P.IDFOLHA  = old.IDFOLHA;

   update PEDIDO P
      set P.ENTREGA = new.IDCONTROLE
    where P.IDFILIAL = new.IDFILIAL
      and P.IDPEDIDO = new.IDRECEBER
      and P.IDFOLHA  = new.IDFOLHA;
end
^

/* Trigger: ITENS_DEVOLUCAO_BF_INSERT */
CREATE TRIGGER ITENS_DEVOLUCAO_BF_INSERT FOR ITENS_DEVOLUCAO_ENTRADA
ACTIVE BEFORE INSERT POSITION 0
as
  declare variable vCONSUMO VARCHAR(1);
begin
 select P.CONSUMO from PRODUTO P
 where P.IDFILIAL = NEW.IDFILIAL
   and P.IDPRODUTO = NEW.IDPRODUTO
   into :vCONSUMO;

 if ((:vCONSUMO is null ) or (:vCONSUMO = 'N')) then begin
    execute procedure ATUALIZA_ESTOQUE(new.IDFILIAL,new.IDPRODUTO,(new.QTDECOMPRA*new.FATORCONVERSAO),'-','INCLUSÃO DE PRODUTO PELA DEVOLUCAO NF:' || new.IDNOTA || '/' || new.IDFORNECEDOR);
 end
end
^

/* Trigger: ITENS_DEVOLUCAO_ENTRADA_AF_DL */
CREATE TRIGGER ITENS_DEVOLUCAO_ENTRADA_AF_DL FOR ITENS_DEVOLUCAO_ENTRADA
ACTIVE AFTER DELETE POSITION 0
AS
  declare variable VCONSUMO varchar(1);
begin
 select P.CONSUMO from PRODUTO P
 where P.IDFILIAL = old.IDFILIAL
   and P.IDPRODUTO = old.IDPRODUTO
   into :vCONSUMO;

 if ((:VCONSUMO is null) or (:VCONSUMO = 'N'))  then begin
   execute procedure ATUALIZA_ESTOQUE(old.IDFILIAL,old.IDPRODUTO,(old.QTDECOMPRA*old.FATORCONVERSAO),'+','EXCLUSÃO DE PRODUTO PELA DEVOLUCAO NF:' || old.IDNOTA || '/' || old.IDFORNECEDOR);
 end
end
^

/* Trigger: ITENS_DEVOLUCAO_ENTRADA_AF_UP */
CREATE TRIGGER ITENS_DEVOLUCAO_ENTRADA_AF_UP FOR ITENS_DEVOLUCAO_ENTRADA
ACTIVE AFTER UPDATE POSITION 0
AS
 declare variable vCONSUMO varchar(1);
begin
 select P.CONSUMO from PRODUTO P
 where P.IDFILIAL = old.IDFILIAL
   and P.IDPRODUTO = old.IDPRODUTO
   into :vCONSUMO;

 if ((:VCONSUMO is null) or (:VCONSUMO = 'N'))  then begin
   if ((old.QTDECOMPRA*old.FATORCONVERSAO) <> (new.QTDECOMPRA*new.FATORCONVERSAO)) then begin
       /* --Retornando para o estoque */
       execute procedure ATUALIZA_ESTOQUE(old.IDFILIAL,old.IDPRODUTO,(old.QTDECOMPRA*old.FATORCONVERSAO),'+','ALTERAÇÃO PRODUTO PELA DEVOLUCAO NF:' || new.IDNOTA || '/' || new.IDFORNECEDOR);
       /* --Retirando do Estoque */
       execute procedure ATUALIZA_ESTOQUE(new.IDFILIAL,new.IDPRODUTO,(new.QTDECOMPRA*new.FATORCONVERSAO),'-','ALTERAÇÃO PRODUTO PELA DEVOLUCAO NF:' || new.IDNOTA || '/' || new.IDFORNECEDOR);
   end
 end
end
^

/* Trigger: ITENS_ENTRADA_PRODUTO_AF_DELETE */
CREATE TRIGGER ITENS_ENTRADA_PRODUTO_AF_DELETE FOR ITENS_ENTRADA_PRODUTO
ACTIVE AFTER DELETE POSITION 0
AS
begin
   execute procedure ATUALIZA_ESTOQUE(old.IDFILIAL,old.IDPRODUTO,old.QTDE,'-','EXCLUSAO ENTRADA PRODUTO N: ' || old.IDENTRADA);
end
^

/* Trigger: ITENS_ENTRADA_PRODUTO_AF_INSERT */
CREATE TRIGGER ITENS_ENTRADA_PRODUTO_AF_INSERT FOR ITENS_ENTRADA_PRODUTO
ACTIVE AFTER INSERT POSITION 0
AS
begin
   -- SÓ INSERE
   execute procedure ATUALIZA_ESTOQUE(new.IDFILIAL,new.IDPRODUTO,new.QTDE,'+','INCLUSAO PELA ENTRADA PRODUTO N: ' || new.IDENTRADA);
end
^

/* Trigger: ITENS_ENTRADA_PRODUTO_AF_UPDATE */
CREATE TRIGGER ITENS_ENTRADA_PRODUTO_AF_UPDATE FOR ITENS_ENTRADA_PRODUTO
ACTIVE AFTER UPDATE POSITION 0
AS
begin
   execute procedure ATUALIZA_ESTOQUE(old.IDFILIAL,old.IDPRODUTO,old.QTDE,'-','ALTERACAO PELA ENTRADA PRODUTO N: ' || new.IDENTRADA);

   execute procedure ATUALIZA_ESTOQUE(new.IDFILIAL,new.IDPRODUTO,new.QTDE,'+','ALTERACAO PELA ENTRADA PRODUTO N: ' || new.IDENTRADA);
end
^

/* Trigger: ITENS_ENTRADA_PRODUTO_BF_INSERT */
CREATE TRIGGER ITENS_ENTRADA_PRODUTO_BF_INSERT FOR ITENS_ENTRADA_PRODUTO
ACTIVE BEFORE INSERT POSITION 0
AS
  declare variable vCONTADOR integer;
begin
  select count(IT.CONTADOR) from ITENS_ENTRADA_PRODUTO IT
    where IT.IDFILIAL = new.IDFILIAL
      and IT.IDENTRADA = new.IDENTRADA
    into :VCONTADOR;

  if (VCONTADOR is null) then
    new.CONTADOR = 1;
  else
    new.CONTADOR = :VCONTADOR+1;
end
^

/* Trigger: ITENS_LANCHONETE_BF_INSER */
CREATE TRIGGER ITENS_LANCHONETE_BF_INSER FOR ITENS_LANCHONETE
ACTIVE BEFORE INSERT POSITION 0
AS
  declare variable vIDCONTADOR integer;
begin
  select max(IT.IDCONTADOR)  from ITENS_LANCHONETE IT
    where IT.IDFILIAL = new.IDFILIAL
      and IT.IDPEDIDO = new.IDPEDIDO
      and IT.IDMESA = new.IDMESA
    into :VIDCONTADOR;

   if (:VIDCONTADOR is null) then VIDCONTADOR = 1;

   VIDCONTADOR = :VIDCONTADOR+1;

   new.IDCONTADOR = :VIDCONTADOR;
end
^

/* Trigger: MANIFESTO_NFE_BI0 */
CREATE TRIGGER MANIFESTO_NFE_BI0 FOR MANIFESTO_NFE
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
   if (NEW.CNPJ is null) then
   begin
        select CLR_DIG(F.CNPJ)  from FILIAL F
           where F.IDFILIAL = new.IDFILIAL
         into new.CNPJ;
   end
end
^

/* Trigger: MDFE_BD0 */
CREATE TRIGGER MDFE_BD0 FOR MDFE
ACTIVE BEFORE DELETE POSITION 0
AS
begin
   delete from REBOQUE R
      where R.IDFILIAL = old.IDFILIAL
        and R.IDPEDIDO = old.IDPEDIDO;

   delete from MDFE_DOCUMENTO R
      where R.IDFILIAL = old.IDFILIAL
        and R.IDPEDIDO = old.IDPEDIDO;

   delete from MDEFE_LOCAL_CARREGAMENTO R
      where R.IDFILIAL = old.IDFILIAL
        and R.IDPEDIDO = old.IDPEDIDO;

   delete from MDEFE_LOCAL_DESCARREGAMENTO R
      where R.IDFILIAL = old.IDFILIAL
        and R.IDPEDIDO = old.IDPEDIDO;
end
^

/* Trigger: MOVTOFUNCIONARIO_AD0 */
CREATE TRIGGER MOVTOFUNCIONARIO_AD0 FOR MOVTOFUNCIONARIO
ACTIVE AFTER DELETE POSITION 0
AS
begin
   if (not old.IDMOVTOCAIXA is null) then
   begin
       delete from MOVTOCAIXA M
          where M.IDFILIAL = old.IDFILIAL
            and M.IDMOVTOCAIXA = old.IDMOVTOCAIXA;
   end
end
^

/* Trigger: MOVTOFUNCIONARIO_BI0 */
CREATE TRIGGER MOVTOFUNCIONARIO_BI0 FOR MOVTOFUNCIONARIO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
declare variable vIDMOVTOCAIXA integer;
declare variable vGERAR_MOVTO varchar(1);
declare variable vIDCAIXA integer;
declare variable vIDCENTROCUSTO integer;
declare variable vNOMEFUNCIONARIO varchar(60);
begin

   select F.FUNCIONARIO_GERAR_MOVTOCAIXA, F.FUNCIONARIO_DEF_IDCAIXA, F.FUNCIONARIO_DEF_IDCENTROCUSTO from FILIAL F
     where F.IDFILIAL = new.IDFILIAL
    into :VGERAR_MOVTO, :VIDCAIXA, :VIDCENTROCUSTO;

   if (:VGERAR_MOVTO = 'S') then
   begin
       if (new.TIPOOPERACAO = 'D') then
       begin
        select F.NOME from FUNCIONARIO F
          where F.IDFILIAL = new.IDFILIAL
            and F.IDFUNCIONARIO = new.IDFUNCIONARIO
          into :vNOMEFUNCIONARIO;

         if (not exists (select M.IDMOVTOCAIXA from MOVTOCAIXA M
                            where M.IDFILIAL = new.IDFILIAL
                              and M.IDMOVTOCAIXA = new.IDMOVTOCAIXA)) then begin
    
            select cast(max(M.IDMOVTOCAIXA) as integer)+1 from MOVTOCAIXA M
              where M.IDFILIAL = new.IDFILIAL
                into vIDMOVTOCAIXA;
                if (vIDMOVTOCAIXA is null) then vIDMOVTOCAIXA = 1;


                new.IDMOVTOCAIXA = :VIDMOVTOCAIXA;

                insert into MOVTOCAIXA (IDFILIAL    ,  IDMOVTOCAIXA ,  DOCUMENTO   , DESCRICAOHISTORICO, IDCENTROCUSTO, DTEMISSAO,
                                        DTMOVIMENTO, IDCAIXA, VALORMOVTO, TIPOOPERACAO, COMPLEMENTOHISTORICO)
                                values (new.IDFILIAL, :vIDMOVTOCAIXA, 'DOC.F' || new.IDCONTROLE, new.HISTORICO, :VIDCENTROCUSTO, current_date,
                                        new.DTMOVIMENTO, :vIDCAIXA, new.VALOR, 'D', :VNOMEFUNCIONARIO);
    
    
         end
         else begin    -- SE EXISTIR
             update MOVTOCAIXA M
                set M.DESCRICAOHISTORICO = new.HISTORICO,
                    M.IDCENTROCUSTO = :VIDCENTROCUSTO,
                    M.DTMOVIMENTO = new.DTMOVIMENTO,
                    M.IDCAIXA = :VIDCAIXA,
                    M.VALORMOVTO = new.VALOR,
                    M.COMPLEMENTOHISTORICO = :VNOMEFUNCIONARIO
              where M.IDFILIAL = new.IDFILIAL
                and M.IDMOVTOCAIXA = new.IDMOVTOCAIXA;
         end
       end
       else begin
          if (not new.IDMOVTOCAIXA is null) then
          begin
             delete from MOVTOCAIXA M
               where M.IDFILIAL = new.IDFILIAL
                 and M.IDMOVTOCAIXA = new.IDMOVTOCAIXA;
          end
       end
   end 
   else begin
          if (not new.IDMOVTOCAIXA is null) then
          begin
             delete from MOVTOCAIXA M
               where M.IDFILIAL = new.IDFILIAL
                 and M.IDMOVTOCAIXA = new.IDMOVTOCAIXA;
          end
   end
end
^

/* Trigger: NOTA_BD0 */
CREATE TRIGGER NOTA_BD0 FOR NOTA
ACTIVE BEFORE DELETE POSITION 0
AS
begin
   delete from ITENSNOTA IT
     where IT.IDFILIAL = old.IDFILIAL
       and IT.IDNOTA   = old.IDNOTA
       and IT.TIPONOTA = old.TIPONOTA;
end
^

/* Trigger: NOTA_BI_VERIFICA_PROTOCOLO */
CREATE TRIGGER NOTA_BI_VERIFICA_PROTOCOLO FOR NOTA
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
   if (new.IDFOLHA = 99) then
   begin
       if (new.PROTOCOLO = '0') then
       begin
          update PEDIDO P
             set P.NFE_ENVIADA = NULL,
                 P.ANDROID_JA_ENVIOU = NULL,
                 P.NFE_MOTIVO = 'SEM CONEXAO INTERNET'
           where P.IDFILIAL = new.IDFILIAL
             and P.IDPEDIDO = new.IDPEDIDO
             and P.IDFOLHA = new.IDFOLHA;
       end
   end
end
^

/* Trigger: NOTA_BU0 */
CREATE TRIGGER NOTA_BU0 FOR NOTA
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
   if (new.KIT is null) then
   begin
      if (exists(select IT.IDFILIAL from ITENSPEDIDO IT
           where IT.IDFILIAL = new.IDFILIAL
              and IT.IDPEDIDO = new.IDPEDIDO
              and IT.IDFOLHA = new.IDFOLHA
             and exists(select first 1 K.IDFILIAL from KIT_PRODUTO K
                                 where K.IDFILIAL = IT.IDFILIAL
                                   and K.IDPRODUTO = IT.IDPRODUTO))) then
      begin
         new.KIT = 'S';
      end
   end

   if (new.TIPO_NOTA = 'V') then
   begin
       if (new.KIT is null) then
       begin
           select sum(IT.VALOR_IPI), sum(IT.VALOR_PIS), sum(IT.VALOR_COFINS) from ITENSPEDIDO IT
             where IT.IDFILIAL = new.IDFILIAL
               and IT.IDPEDIDO = new.IDPEDIDO
               and IT.IDFOLHA = new.IDFOLHA
             into new.VALOR_IPI, new.VALOR_PIS, new.VALOR_CONFINS;
       end
       else begin
           select sum(IT.VALOR_IPI), sum(IT.VALOR_PIS), sum(IT.VALOR_COFINS) from ITENSNOTA IT
             where IT.IDFILIAL = new.IDFILIAL
               and IT.IDPEDIDO = new.IDPEDIDO
               and IT.IDFOLHA = new.IDFOLHA
               and IT.IDNOTA = new.IDNOTA
             into new.VALOR_IPI, new.VALOR_PIS, new.VALOR_CONFINS;
       end
   end
   else begin
       select sum(IT.VALOR_IPI), sum(IT.VALOR_PIS), sum(IT.VALOR_COFINS) from ITENSNOTA IT
         where IT.IDFILIAL = new.IDFILIAL
           and IT.IDPEDIDO = new.IDPEDIDO
           and IT.IDFOLHA = new.IDFOLHA
           and IT.IDNOTA = new.IDNOTA
         into new.VALOR_IPI, new.VALOR_PIS, new.VALOR_CONFINS;
   end


end
^

/* Trigger: ORDEM_REQUISICAO_BF_INSERT */
CREATE TRIGGER ORDEM_REQUISICAO_BF_INSERT FOR ORDEM_REQUISICAO
ACTIVE BEFORE INSERT POSITION 0
AS
  declare variable vCODIGO integer;
begin
    select max(O.IDREQUISICAO)+1 from ORDEM_REQUISICAO O
      where O.IDFILIAL = new.IDFILIAL
        and O.IDORDEM = new.IDORDEM
     into vCODIGO;
    if (vCODIGO is null) then vCODIGO = 1;

    new.IDREQUISICAO = vCODIGO;
end
^

/* Trigger: PAGAR_BU0 */
CREATE TRIGGER PAGAR_BU0 FOR PAGAR
ACTIVE BEFORE UPDATE POSITION 0
as
declare variable vIDPARCIAL integer;
declare variable vVALORDIF numeric(15,2);
begin
   if ((new.F_PARCIAL = 'S'))
   then begin
        select max(P.IDPARCIAL)+1 from PAGAR P
             where P.IDFILIAL = new.IDFILIAL
               and P.IDPAGAR = new.IDPAGAR
               and P.IDFORNECEDOR = new.IDFORNECEDOR
               and P.IDORDEM = new.IDORDEM
           into :VIDPARCIAL;

        vVALORDIF = new.VALORDOCUMENTO-new.VALORPAGAMENTO;



        INSERT INTO PAGAR (IDFILIAL, IDFORNECEDOR, IDPAGAR,
                           IDORDEM, IDPARCIAL, DATAEMISSAO, DATAVENCIMENTO,
                           DATAPAGAMENTO, VALORDOCUMENTO, VALORJUROS, VALORPAGAMENTO,
                           IDCENTROCUSTO, IDMOVTOCAIXA, COMPLEMENTOHISTORICO,
                           IDFORMAPAGTO, IDCAIXA, IDENTRADA, DOCUMENTO,
                           SITUACAOREGISTRO, IDMOVTOFUNCIONARIO,
                           PARCELA, F_PARCIAL)
         VALUES (new.IDFILIAL, new.IDFORNECEDOR, new.IDPAGAR, new.IDORDEM, :VIDPARCIAL, NEW.DATAEMISSAO,
                 new.DATAVENCIMENTO, new.DATAPAGAMENTO, new.VALORDOCUMENTO-(:VVALORDIF), new.VALORJUROS, new.VALORPAGAMENTO,
                 new.IDCENTROCUSTO, null, new.COMPLEMENTOHISTORICO, new.IDFORMAPAGTO, NEW.IDCAIXA, new.IDENTRADA,
                 new.DOCUMENTO, new.SITUACAOREGISTRO, new.IDMOVTOFUNCIONARIO, new.PARCELA, 'N');

                 new.VALORDOCUMENTO = :VVALORDIF;
                 new.VALORPAGAMENTO = null;
                 new.F_PARCIAL = null;
                 new.DATAPAGAMENTO = null;
   end
end
^

/* Trigger: PAIS_BI */
CREATE TRIGGER PAIS_BI FOR PAIS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.IDPAIS IS NULL) THEN
    NEW.IDPAIS = GEN_ID(GEN_PAIS_ID,1);
END
^

/* Trigger: PAIS_BU0 */
CREATE TRIGGER PAIS_BU0 FOR PAIS
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
    update SPED_0150 S
      set S.COD_PAIS = new.COD_PAIS
    where S.COD_PAIS = old.COD_PAIS;
end
^

/* Trigger: PEDIDOPALM_AI0 */
CREATE TRIGGER PEDIDOPALM_AI0 FOR PEDIDOPALM
ACTIVE AFTER INSERT POSITION 0
AS
begin
   if (new.retransmitir is null) then
   begin
       if (new.total_pedido = 0) then Exit;
       INSERT INTO pedidopalm_aux (IDFILIAL, IDREPRESENTANTE, IDPEDIDOPALM, IDPEDIDO, CNPJ, IDPEDIDOCLIENTE, DTEMISSAO, HREMISSAO, DESCONTO1, DESCONTO2, DESCONTO3, DESCONTO4, IDFORMAPAGTO, NATOPERACAO, SITPEDIDO, IDPORTADOR, IDCONDICAOPAGTO, IDTRANSPORTADORA, DTENTREGA, IDTABELAPRECO, OBSERVACAO, IDCLIENTE, DATAPEDIDO, OBS1, OBS2, TOTAL_PEDIDO, TOTAL_DESCONTO, TOTAL_COM_DECONTO, NRSERIE, PARCELA, IDCONSIGNACAO, PEDIDO_INCOSISTENTE, retransmitir, NMRAZAO, NMFANTASIA, ENDERECO, CEP, BAIRRO, IDCIDADE, TIPOCLIENTE, IE, CPF, RG, FONE, FAX, CELULAR, EMAIL, ALTERADO, IDATIVIDADE, IDCONVENIO, IDREGIAO, CONTRIBUINTE, CLIENTE_CONTRIBUINTE, OBS_EXTENSO, PRAZO)
                       VALUES (new.IDFILIAL, new.IDREPRESENTANTE, new.IDPEDIDOPALM, new.IDPEDIDO, new.CNPJ, new.IDPEDIDOCLIENTE, new.DTEMISSAO, new.HREMISSAO, new.DESCONTO1, new.DESCONTO2, new.DESCONTO3, new.DESCONTO4, new.IDFORMAPAGTO, new.NATOPERACAO, new.SITPEDIDO, new.IDPORTADOR, new.IDCONDICAOPAGTO, new.IDTRANSPORTADORA, new.DTENTREGA, new.IDTABELAPRECO, new.OBSERVACAO, new.IDCLIENTE, new.DATAPEDIDO, new.OBS1, new.OBS2, new.TOTAL_PEDIDO, new.TOTAL_DESCONTO, new.TOTAL_COM_DECONTO, new.NRSERIE, new.PARCELA, new.IDCONSIGNACAO, new.PEDIDO_INCOSISTENTE, new.retransmitir, new.NMRAZAO, new.NMFANTASIA, new.ENDERECO, new.CEP, new.BAIRRO, new.IDCIDADE, new.TIPOCLIENTE, new.IE, new.CPF, new.RG, new.FONE,new.FAX,new.CELULAR,new.EMAIL,new.ALTERADO, new.IDATIVIDADE,new.IDCONVENIO,new.IDREGIAO, new.CONTRIBUINTE, new.CLIENTE_CONTRIBUINTE, new.OBS_EXTENSO, NEW.PRAZO);
   end
end
^

/* Trigger: PEDIDOPALM_AUX_BU0 */
CREATE TRIGGER PEDIDOPALM_AUX_BU0 FOR PEDIDOPALM_AUX
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
   if ((new.retransmitir = 'S') and (old.retransmitir is null)) then
   begin
       INSERT INTO pedidopalm (IDFILIAL, IDREPRESENTANTE, IDPEDIDOPALM, IDPEDIDO, CNPJ, IDPEDIDOCLIENTE, DTEMISSAO, HREMISSAO, DESCONTO1, DESCONTO2, DESCONTO3, DESCONTO4, IDFORMAPAGTO, NATOPERACAO, SITPEDIDO, IDPORTADOR, IDCONDICAOPAGTO, IDTRANSPORTADORA, DTENTREGA, IDTABELAPRECO, OBSERVACAO, IDCLIENTE, DATAPEDIDO, OBS1, OBS2, TOTAL_PEDIDO, TOTAL_DESCONTO, TOTAL_COM_DECONTO, NRSERIE, PARCELA, IDCONSIGNACAO, PEDIDO_INCOSISTENTE, RETRANSMITIR)
                       VALUES (new.IDFILIAL, new.IDREPRESENTANTE, new.IDPEDIDOPALM, new.IDPEDIDO, new.CNPJ, new.IDPEDIDOCLIENTE, new.DTEMISSAO, new.HREMISSAO, new.DESCONTO1, new.DESCONTO2, new.DESCONTO3, new.DESCONTO4, new.IDFORMAPAGTO, new.NATOPERACAO, new.SITPEDIDO, new.IDPORTADOR, new.IDCONDICAOPAGTO, new.IDTRANSPORTADORA, new.DTENTREGA, new.IDTABELAPRECO, new.OBSERVACAO, new.IDCLIENTE, new.DATAPEDIDO, new.OBS1, new.OBS2, new.TOTAL_PEDIDO, new.TOTAL_DESCONTO, new.TOTAL_COM_DECONTO, new.NRSERIE, new.PARCELA, new.IDCONSIGNACAO, new.PEDIDO_INCOSISTENTE, new.retransmitir);
       new.retransmitir = null;
   end
end
^

/* Trigger: PEDIDOS_IMPRESSO_BI0 */
CREATE TRIGGER PEDIDOS_IMPRESSO_BI0 FOR PEDIDOS_IMPRESSO
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   new.IDCONTROLE = gen_id(GEN_PEDIDOS_IMPRESSO_ID,1);
end
^

/* Trigger: PEDIDO_BF_ROMANIO */
CREATE TRIGGER PEDIDO_BF_ROMANIO FOR PEDIDO
ACTIVE BEFORE UPDATE POSITION 0
AS
  declare variable vIDCONTROLE integer;
begin
   if (new.IDROMANEIO is null) then
   begin
       if (exists(select first 1 IT.IDCONTROLE from ITENSROMANEIO it
                    where it.IDFILIAL = old.IDFILIAL
                      and it.IDPEDIDO = old.IDPEDIDO
                      and it.IDFOLHA = old.IDFOLHA)) then
       begin
         select first 1 IT.IDCONTROLE from ITENSROMANEIO it
                  where IT.IDFILIAL = old.IDFILIAL
                    and IT.IDPEDIDO = old.IDPEDIDO
                    and IT.IDFOLHA = old.IDFOLHA
          into :VIDCONTROLE;
    
           update RECEBER R
              set R.IDROMANEIO = :VIDCONTROLE
            where R.IDFILIAL = old.IDFILIAL
              and R.IDRECEBER = old.IDPEDIDO
              and R.IDFOLHA   = old.IDFOLHA;
        
           update PEDIDO P
              set P.IDROMANEIO = :VIDCONTROLE
            where P.IDFILIAL = old.IDFILIAL
              and P.IDPEDIDO = old.IDPEDIDO
              and P.IDFOLHA  = old.IDFOLHA;
        
           update DEVOLUCAO P
              set P.IDROMANEIO = :VIDCONTROLE
            where P.IDFILIAL = old.IDFILIAL
              and P.IDPEDIDO = old.IDPEDIDO
              and P.IDFOLHA  = old.IDFOLHA;
    
       end
   end 
end
^

/* Trigger: PEDIDO_BF_UPDATE */
CREATE TRIGGER PEDIDO_BF_UPDATE FOR PEDIDO
ACTIVE BEFORE UPDATE POSITION 0
AS
begin
   if (new.ORCAMENTO_VENDA <> old.ORCAMENTO_VENDA) then
   begin
      update ITENSPEDIDO IT
         set IT.PODE_TRANSFORMA_VENDA = '*'
       where IT.IDFILIAL = new.IDFILIAL
         and IT.IDPEDIDO = new.IDPEDIDO
         and IT.IDFOLHA  = new.IDFOLHA;
   end

   if (old.nfe_motivo = 'DPEC') then
      if (new.nfe_motivo <> 'Autorizado o uso da NF-e') then
         new.nfe_motivo = 'DPEC';


   if (new.NFE_ENVIADA = 'S') then begin
      new.LOTE_NFE = 'N';
   end

   if (new.ANDROID_JA_ENVIOU = 'S') then
      if (new.VALIDADAS = 'S') then
           new.NFE_MOTIVO = 'Autorizado o uso da NF-e';

   if (new.NFE_MOTIVO = 'Autorizado o uso da NF-e') then begin
      if (new.NFE_ENVIADA <> 'S') then
         new.NFE_ENVIADA = 'S';

      if (new.validadas <> 'S') then
          new.validadas = 'S';

   end


   if (coalesce(new.NOTAFISCAL,0) <= 0) then begin
--      new.VALIDADAS    = null;
      new.NFE_MOTIVO   = null;
      new.NFE_IMPRESSA = null;
      new.NFE_ENVIADA  = null;
   end
end
^

/* Trigger: PEDIDO_BI0 */
CREATE TRIGGER PEDIDO_BI0 FOR PEDIDO
ACTIVE BEFORE INSERT POSITION 0
AS
begin
   new.DATA_HORA_INCLUSAO = current_timestamp;
end
^

/* Trigger: PEDIDO_BU0 */
CREATE TRIGGER PEDIDO_BU0 FOR PEDIDO
ACTIVE BEFORE UPDATE POSITION 0
AS
declare variable vIDCFOPCUPOM integer;
begin
   if (new.COO > 0) then
   begin
      select F.DEF_IDCFOP_CUPOM from FILIAL F
         where F.IDFILIAL = new.IDFILIAL
         into :VIDCFOPCUPOM;
      if (:VIDCFOPCUPOM > 0) then
      begin
         new.IDCFOP = :VIDCFOPCUPOM;
      end
   end
end
^

/* Trigger: PERMISSOES_BF_INSERT */
CREATE TRIGGER PERMISSOES_BF_INSERT FOR PERMISSOES
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  new.USR_ITENS_INSERT = 'N';
  new.USR_ITENS_ALTERAR = 'N';
  new.USR_ITENS_DELETE = 'N';
end
^

/* Trigger: PRODUCAO_BI0 */
CREATE TRIGGER PRODUCAO_BI0 FOR PRODUCAO_CESTA
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  if (new.QTDE_ENTRADA is null) then
    new.QTDE_ENTRADA = 0;

  if (new.QTDE_SAIDA is null) then
    new.QTDE_SAIDA = 0;
end
^

/* Trigger: PRODUTO_AF_INSERT */
CREATE TRIGGER PRODUTO_AF_INSERT FOR PRODUTO
ACTIVE AFTER INSERT POSITION 0
AS
begin

  if (not(exists(select UP.IDPRODUTO from UNIDADEPRODUTO UP
       where UP.IDFILIAL = new.IDFILIAL
         and UP.IDPRODUTO = new.IDPRODUTO
         and UP.IDUNIDADEMEDIDA = new.IDUNIDADEMEDIDA))) then begin

      insert into UNIDADEPRODUTO (IDFILIAL, IDPRODUTO, IDUNIDADEMEDIDA)
            values (new.IDFILIAL, new.IDPRODUTO, new.IDUNIDADEMEDIDA);

  end
end
^

/* Trigger: PRODUTO_BF_ATUALIZA_NCM */
CREATE TRIGGER PRODUTO_BF_ATUALIZA_NCM FOR PRODUTO
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
     if (exists(select T.NCM from TIPI T
            where T.NCM = new.CLASSIFICACAO_FISCAL)) then
     begin
            new.NCM_INVALIDO = null;
     end
     else begin
            new.NCM_INVALIDO = '*';
     end
end
^

/* Trigger: PRODUTO_BU0 */
