SET SQL DIALECT 3;
SET NAMES UTF8;
SET TERM ^ ;

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0032','PRODUTOS','CADASTROS','FLG_TAMANHO','PERMITE REPETIR TAMANHO NA GRADE','SIM','SIM;NAO','N')

^

update configuracao set valor = 'SIM'
where (campo = 'FLG_TAMANHO') and (cod_tela = 'SG_0032')
and exists (select codigo from empresa where ((nivel <> 15) and (nivel <> 23) and (nivel <> 24) and (nivel <> 25) and (nivel <> 27)
and (nivel <> 30) and (nivel <> 33) and (nivel <> 34) and (nivel <> 39) and (nivel <> 43) and (nivel <> 46) and (nivel <> 54)
and (nivel <> 58) and (nivel <> 68) and (nivel <> 67) and (nivel <> 106) and (nivel <> 112) and (nivel <> 114) and (nivel <> 118)))

^

ALTER TABLE PARAMETROS
    ADD IMPRESSORA_PADRAO VARCHAR(200)

^

ALTER TABLE END_CLI
ADD CONSTRAINT FK_END_CLI1
FOREIGN KEY (COD_CLI)
REFERENCES CLIENTE(CODIGO)
ON DELETE CASCADE 

^

ALTER TABLE PROD_LOTE
   ADD VLR_PMC numeric(15,2),
   ADD COD_ANVISA varchar(40)

^

CREATE OR ALTER procedure P_PROD_LOTE (
    OPERACAO integer,
    CODIGO integer,
    COD_PROD integer,
    COD_EMPRESA integer,
    NUM_LOTE varchar(40),
    DT_CADASTRO date,
    DT_VALIDADE date,
    ESTOQUE numeric(15,3),
    VLR_PMC numeric(15,2),
    COD_ANVISA varchar(40))
as
begin 
if (operacao = 1) then 
insert into PROD_LOTE (CODIGO,COD_PROD,COD_EMPRESA,NUM_LOTE,DT_CADASTRO,DT_VALIDADE,ESTOQUE,VLR_PMC,COD_ANVISA)
values (:CODIGO,:COD_PROD,:COD_EMPRESA,:NUM_LOTE,:DT_CADASTRO,:DT_VALIDADE,:ESTOQUE,:VLR_PMC,:COD_ANVISA);
if (operacao = 2) then 
update PROD_LOTE set 
COD_PROD = :COD_PROD, 
COD_EMPRESA = :COD_EMPRESA, 
NUM_LOTE = :NUM_LOTE, 
DT_CADASTRO = :DT_CADASTRO, 
DT_VALIDADE = :DT_VALIDADE, 
ESTOQUE = :ESTOQUE,
VLR_PMC = :VLR_PMC,
COD_ANVISA = : COD_ANVISA
where (CODIGO = :CODIGO); 
if (operacao = 3) then 
delete from PROD_LOTE 
where (CODIGO = :CODIGO);
suspend; 
end

============================================================
     ATUALIZABANCO VAI AT  AQUI - 27 DE ABRIL DE 2022 - (1.0.0.26)
============================================================


ALTER TABLE PRODUTO
    ADD PORC_FCP NUMERIC(15,2)

^

CREATE OR ALTER procedure P_PRODUTO (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    COD_GRUPO integer,
    COD_FORNECEDOR integer,
    MARCA varchar(200),
    UNIDADE_ESTOQUE varchar(10),
    UNIDADE_CONVERSAO varchar(10),
    QTD_EMBALAGEM numeric(15,4),
    PORC_LUCRO_V numeric(15,2),
    PORC_LUCRO_P numeric(15,2),
    PORC_ICMS_ISS numeric(15,2),
    PORC_COMISSAO integer,
    COD_CST varchar(10),
    ESTOQUE_INICIAL numeric(15,3),
    ESTOQUE_MINIMO numeric(15,3),
    ESTOQUE_ATUAL numeric(15,3),
    ESTOQUE_FISCAL numeric(15,3),
    COD_TRIB integer,
    COD_TRIB_ENT integer,
    SIT_TRIB varchar(2),
    DT_CADASTRO date,
    FLG_ATIVADO char(1),
    FLG_ESTOQUE char(1),
    FLG_TIPO char(1),
    LOCALIZACAO varchar(60),
    OBSERVACAO varchar(100),
    OBSERVACAO2 varchar(100),
    DT_ALTERACAO date,
    TEMPO_REAL time,
    NCM varchar(20),
    COD_CSOSN integer,
    CONV_PRECO numeric(15,3),
    CST_PIS varchar(3),
    CST_COFINS varchar(3),
    COD_SUBGRUPO integer,
    COD_SUBSUBGRUPO integer,
    ESTOQUE1 numeric(15,3),
    ESTOQUE2 numeric(15,3),
    ESTOQUE3 numeric(15,3),
    ESTOQUE4 numeric(15,3),
    ESTOQUE5 numeric(15,3),
    PORC_PIS numeric(15,2),
    PORC_COFINS numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    DT_VALIDADE date,
    PORC_IPI numeric(15,2),
    PORC_MVA numeric(15,2),
    PESO_BRUTO numeric(15,3),
    PESO_LIQUIDO numeric(15,3),
    FOTO varchar(200),
    ANEXO varchar(100),
    COD_ANP varchar(10),
    LOCALIZACAO2 varchar(60),
    ETIQUETA integer,
    COD_CEST varchar(7),
    COD_EMPRESA integer,
    PORC_DESC numeric(15,2),
    FLG_DESC char(1),
    ESTOQUE_MAXIMO numeric(15,3),
    ESTOQUE_DEMANDA_MEDIA numeric(15,3),
    ESTOQUE_TEMPO_RESUPRI numeric(15,3),
    ESTOQUE_INTERVALO_RESUPRI numeric(15,3),
    COD_DESP integer,
    COD_MARCA integer,
    FLG_SITE char(1),
    FLG_BALANCA char(1),
    SITE_COMPRIMENTO numeric(15,2),
    SITE_LARGURA numeric(15,2),
    SITE_ALTURA numeric(15,2),
    SITE_DESCRICAO varchar(9999),
    SITE_SYNC char(1),
    SITE_COD integer,
    PORC_REDBASE numeric(15,2),
    PONTOS numeric(15,4),
    LOCALIZACAO21 varchar(60),
    LOCALIZACAO22 varchar(60),
    LOCALIZACAO31 varchar(60),
    LOCALIZACAO32 varchar(60),
    LOCALIZACAO41 varchar(60),
    LOCALIZACAO42 varchar(60),
    LOCALIZACAO51 varchar(60),
    LOCALIZACAO52 varchar(60),
    PORC_FCP numeric(15,2))
as
begin
if (OPERACAO = 1) then 
insert into PRODUTO (CODIGO,NOME,COD_GRUPO,COD_FORNECEDOR,MARCA,UNIDADE_ESTOQUE,UNIDADE_CONVERSAO,QTD_EMBALAGEM,PORC_LUCRO_V,PORC_LUCRO_P,PORC_ICMS_ISS,PORC_COMISSAO,
COD_CST,ESTOQUE_INICIAL,ESTOQUE_MINIMO,ESTOQUE_ATUAL,ESTOQUE_FISCAL,COD_TRIB,COD_TRIB_ENT,SIT_TRIB,DT_CADASTRO,FLG_ATIVADO,FLG_ESTOQUE,FLG_TIPO,LOCALIZACAO,OBSERVACAO,
OBSERVACAO2,DT_ALTERACAO,TEMPO_REAL,NCM,COD_CSOSN,CONV_PRECO,CST_PIS,CST_COFINS,COD_SUBGRUPO,COD_SUBSUBGRUPO,ESTOQUE1,ESTOQUE2,ESTOQUE3,ESTOQUE4,ESTOQUE5,PORC_PIS,PORC_COFINS,
OBS_ADICIONAL,DT_VALIDADE,PORC_IPI,PORC_MVA,PESO_BRUTO,PESO_LIQUIDO,FOTO,ANEXO,COD_ANP,LOCALIZACAO2,ETIQUETA,COD_CEST,COD_EMPRESA,PORC_DESC,FLG_DESC,ESTOQUE_MAXIMO,ESTOQUE_DEMANDA_MEDIA,
ESTOQUE_TEMPO_RESUPRI,ESTOQUE_INTERVALO_RESUPRI,COD_DESP,COD_MARCA,FLG_SITE,FLG_BALANCA,SITE_COMPRIMENTO,SITE_LARGURA,SITE_ALTURA,SITE_DESCRICAO,SITE_SYNC,SITE_COD,PORC_REDBASE,PONTOS,
LOCALIZACAO21,LOCALIZACAO22,LOCALIZACAO31,LOCALIZACAO32,LOCALIZACAO41,LOCALIZACAO42,LOCALIZACAO51,LOCALIZACAO52, PORC_FCP)
values (:CODIGO,:NOME,:COD_GRUPO,:COD_FORNECEDOR,:MARCA,:UNIDADE_ESTOQUE,:UNIDADE_CONVERSAO,:QTD_EMBALAGEM,:PORC_LUCRO_V,:PORC_LUCRO_P,:PORC_ICMS_ISS,:PORC_COMISSAO,:COD_CST,:ESTOQUE_INICIAL,:ESTOQUE_MINIMO,
:ESTOQUE_ATUAL,:ESTOQUE_FISCAL,:COD_TRIB,:COD_TRIB_ENT,:SIT_TRIB,:DT_CADASTRO,:FLG_ATIVADO,:FLG_ESTOQUE,:FLG_TIPO,:LOCALIZACAO,:OBSERVACAO,:OBSERVACAO2,:DT_ALTERACAO,:TEMPO_REAL,:NCM,:COD_CSOSN,
:CONV_PRECO,:CST_PIS,:CST_COFINS,:COD_SUBGRUPO,:COD_SUBSUBGRUPO,:ESTOQUE1,:ESTOQUE2,:ESTOQUE3,:ESTOQUE4,:ESTOQUE5,:PORC_PIS,:PORC_COFINS,:OBS_ADICIONAL,:DT_VALIDADE,:PORC_IPI,:PORC_MVA,:PESO_BRUTO,
:PESO_LIQUIDO,:FOTO,:ANEXO,:COD_ANP,:LOCALIZACAO2,:ETIQUETA,:COD_CEST,
:COD_EMPRESA,:PORC_DESC,:FLG_DESC,:ESTOQUE_MAXIMO,:ESTOQUE_DEMANDA_MEDIA,:ESTOQUE_TEMPO_RESUPRI,:ESTOQUE_INTERVALO_RESUPRI,:COD_DESP,:COD_MARCA,:FLG_SITE,:FLG_BALANCA,
:SITE_COMPRIMENTO,:SITE_LARGURA,:SITE_ALTURA,:SITE_DESCRICAO,:SITE_SYNC,:SITE_COD,:PORC_REDBASE,:PONTOS,:LOCALIZACAO21,:LOCALIZACAO22,:LOCALIZACAO31,:LOCALIZACAO32,:LOCALIZACAO41,
:LOCALIZACAO42,:LOCALIZACAO51,:LOCALIZACAO52,:PORC_FCP);
if (OPERACAO = 2) then 
update PRODUTO set 
NOME = :NOME,
COD_GRUPO = :COD_GRUPO,
COD_FORNECEDOR = :COD_FORNECEDOR,
MARCA = :MARCA,
UNIDADE_ESTOQUE = :UNIDADE_ESTOQUE,
UNIDADE_CONVERSAO = :UNIDADE_CONVERSAO,
QTD_EMBALAGEM = :QTD_EMBALAGEM,
PORC_LUCRO_V = :PORC_LUCRO_V,
PORC_LUCRO_P = :PORC_LUCRO_P,
PORC_ICMS_ISS = :PORC_ICMS_ISS,
PORC_COMISSAO = :PORC_COMISSAO,
COD_CST = :COD_CST,
ESTOQUE_INICIAL = :ESTOQUE_INICIAL,
ESTOQUE_MINIMO = :ESTOQUE_MINIMO,
ESTOQUE_ATUAL = :ESTOQUE_ATUAL,
ESTOQUE_FISCAL = :ESTOQUE_FISCAL,
COD_TRIB = :COD_TRIB,
COD_TRIB_ENT = :COD_TRIB_ENT,
SIT_TRIB = :SIT_TRIB,
DT_CADASTRO = :DT_CADASTRO,
FLG_ATIVADO = :FLG_ATIVADO,
FLG_ESTOQUE = :FLG_ESTOQUE,
FLG_TIPO = :FLG_TIPO,
LOCALIZACAO = :LOCALIZACAO,
OBSERVACAO = :OBSERVACAO,
OBSERVACAO2 = :OBSERVACAO2,
DT_ALTERACAO = :DT_ALTERACAO,
TEMPO_REAL = :TEMPO_REAL,
NCM = :NCM,
COD_CSOSN = :COD_CSOSN,
CONV_PRECO = :CONV_PRECO,
CST_PIS = :CST_PIS,
CST_COFINS = :CST_COFINS,
COD_SUBGRUPO = :COD_SUBGRUPO,
COD_SUBSUBGRUPO = :COD_SUBSUBGRUPO,
ESTOQUE1 = :ESTOQUE1,
ESTOQUE2 = :ESTOQUE2,
ESTOQUE3 = :ESTOQUE3,
ESTOQUE4 = :ESTOQUE4,
ESTOQUE5 = :ESTOQUE5,
PORC_PIS = :PORC_PIS,
PORC_COFINS = :PORC_COFINS,
OBS_ADICIONAL = :OBS_ADICIONAL,
DT_VALIDADE = :DT_VALIDADE,
PORC_IPI = :PORC_IPI,
PORC_MVA = :PORC_MVA,
PESO_BRUTO = :PESO_BRUTO,
PESO_LIQUIDO = :PESO_LIQUIDO,
FOTO = :FOTO,
ANEXO = :ANEXO,
COD_ANP = :COD_ANP,
LOCALIZACAO2 = :LOCALIZACAO2,
ETIQUETA = :ETIQUETA,
COD_CEST = :COD_CEST,
COD_EMPRESA = :COD_EMPRESA,
PORC_DESC = :PORC_DESC,
FLG_DESC = :FLG_DESC,
ESTOQUE_MAXIMO = :ESTOQUE_MAXIMO,
ESTOQUE_DEMANDA_MEDIA = :ESTOQUE_DEMANDA_MEDIA,
ESTOQUE_TEMPO_RESUPRI = :ESTOQUE_TEMPO_RESUPRI,
ESTOQUE_INTERVALO_RESUPRI = :ESTOQUE_INTERVALO_RESUPRI,
COD_DESP = :COD_DESP,
COD_MARCA = :COD_MARCA,
FLG_SITE = :FLG_SITE,
FLG_BALANCA = :FLG_BALANCA,
SITE_COMPRIMENTO = :SITE_COMPRIMENTO,
SITE_LARGURA = :SITE_LARGURA,
SITE_ALTURA = :SITE_ALTURA,
SITE_DESCRICAO = :SITE_DESCRICAO,
SITE_SYNC = :SITE_SYNC,
SITE_COD = :SITE_COD,
PORC_REDBASE = :PORC_REDBASE,
PONTOS = :PONTOS ,
LOCALIZACAO21 = :LOCALIZACAO21,
LOCALIZACAO22 = :LOCALIZACAO22,
LOCALIZACAO31 = :LOCALIZACAO31,
LOCALIZACAO32 = :LOCALIZACAO32,
LOCALIZACAO41 = :LOCALIZACAO41,
LOCALIZACAO42 = :LOCALIZACAO42,
LOCALIZACAO51 = :LOCALIZACAO51,
LOCALIZACAO52 = :LOCALIZACAO52,
PORC_FCP = :PORC_FCP
where (CODIGO = :CODIGO);
if (OPERACAO = 3) then
delete from PRODUTO
where (CODIGO = :CODIGO);
suspend;
end

^

CREATE TABLE MARKETPLACE (
    CODIGO INTEGER NOT NULL,
    NOME VARCHAR(40),
    CNPJ VARCHAR(20),
    NOME_PAG VARCHAR(40),
    CNPJ_PAG VARCHAR(20))

^

ALTER TABLE MARKETPLACE
ADD CONSTRAINT PK_MARKETPLACE
PRIMARY KEY (CODIGO)

^

create or alter procedure P_MARKETPLACE (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(40),
    CNPJ varchar(20),
    NOME_PAG varchar(40),
    CNPJ_PAG varchar(20))
as
begin 
if (operacao = 1) then 
insert into MARKETPLACE (CODIGO,NOME,CNPJ,NOME_PAG,CNPJ_PAG)
values (:CODIGO,:NOME,:CNPJ,:NOME_PAG,:CNPJ_PAG);
if (operacao = 2) then
update MARKETPLACE set
NOME = :NOME,
CNPJ = :CNPJ,
NOME_PAG = :NOME_PAG,
CNPJ_PAG = :CNPJ_PAG
where (CODIGO = :CODIGO);
if (operacao = 3) then
delete from MARKETPLACE
where (CODIGO = :CODIGO);
suspend; 
end

^

CREATE trigger trg_marketplace for marketplace
active before insert position 0
AS 
declare variable cod integer; 
begin   
select max(CODIGO) from MARKETPLACE into :cod;
if (cod is null) then cod = 0; 
new.codigo = cod + 1;
end

^

ALTER TABLE MOVTO
    ADD CODMARKET INTEGER

^	
	
CREATE OR ALTER procedure P_MOVTO (
    OPERACAO integer,
    CODIGO integer,
    FLG_CODMOV integer,
    DATA date,
    NOTA_FISCAL integer,
    SERIE integer,
    CUPOM_FISCAL integer,
    NRO_ECF integer,
    DATA_SAIDA date,
    COD_CLI integer,
    COD_FOR integer,
    COD_FUNC integer,
    COD_TRIB integer,
    COD_END_CLI integer,
    VLR_DESC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_FRETE numeric(15,2),
    PORC_FRETE numeric(15,3),
    VLR_TOTAL numeric(15,2),
    TOTAL_NF numeric(15,2),
    TIPO_RECEB integer,
    OBSERV1 varchar(200),
    OBSERV2 varchar(100),
    OBSERV3 varchar(100),
    TRANS_NOME varchar(60),
    TRANS_END varchar(60),
    TRANS_CIDADE varchar(60),
    TRANS_CIDADEUF varchar(2),
    TRANS_PLACA varchar(10),
    TRANS_PLACAUF varchar(2),
    TRANS_FRETE integer,
    TRANS_CNPJ_CPF varchar(20),
    TRANS_IE_RG varchar(20),
    CODREC_DEVOLUCAO integer,
    COD_CAIXA integer,
    FLG_CANCEL char(1),
    MOTIVO_CANCEL varchar(60),
    NF_DATA date,
    NF_DATA_SAIDA date,
    NF_HORA time,
    NF_CPF varchar(20),
    PLACA varchar(10),
    DATA_ENTREGA date,
    FLG_ABERTO char(1),
    VLR_DINH numeric(15,2),
    VLR_CHVISTA numeric(15,2),
    VLR_CHPRE numeric(15,2),
    VLR_CARTAO numeric(15,2),
    NFE_NRO integer,
    NFE_STATUS varchar(60),
    NFE_CAMINHO varchar(60),
    NFE_CHAVE varchar(60),
    NFE_OBSERV varchar(60),
    VLR_DEBITO numeric(15,2),
    VLR_PRAZO numeric(15,2),
    VLR_OUTROS numeric(15,2),
    COD_EMPRESA integer,
    NOME_VEICULO varchar(200),
    VOL_QUANT varchar(20),
    VOL_ESPECIE varchar(20),
    VOL_MARCA varchar(20),
    VOL_NRO varchar(20),
    VOL_BRUTO varchar(20),
    VOL_LIQUIDO varchar(20),
    NFE_REF1 varchar(60),
    NFE_REF2 varchar(60),
    NFE_REF3 varchar(60),
    COD_MAO_OBRA integer,
    SAT_NRO integer,
    SAT_STATUS varchar(20),
    SAT_CAMINHO varchar(60),
    SAT_CHAVE varchar(60),
    DT_COMISSAO date,
    NF_NOME varchar(60),
    COD_CONVENIO integer,
    COD_MESA integer,
    COD_PARCELA integer,
    FLG_PRECO char(1),
    LOCAL_DESEMB varchar(200),
    UF_DESEMB varchar(2),
    NRO_DI varchar(20),
    DT_DI date,
    COD_EXPORT integer,
    COD_FABRIC integer,
    TP_TRANS integer,
    NFE_REF4 varchar(60),
    VLR_IMPORT numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    FLG_PROCEDE char(1),
    ROMANEIO_NRO integer,
    ROMANEIO_DATA date,
    TOKEN varchar(256),
    CODMARKET integer)
as
begin 
if (operacao = 1) then  
insert into MOVTO (CODIGO,FLG_CODMOV,DATA,NOTA_FISCAL,SERIE,CUPOM_FISCAL,NRO_ECF,DATA_SAIDA,COD_CLI,COD_FOR,COD_FUNC,COD_TRIB,COD_END_CLI,VLR_DESC,VLR_ACRES,VLR_FRETE,PORC_FRETE, 
VLR_TOTAL,TOTAL_NF,TIPO_RECEB,OBSERV1,OBSERV2,OBSERV3,TRANS_NOME,TRANS_END,TRANS_CIDADE,TRANS_CIDADEUF,TRANS_PLACA,TRANS_PLACAUF,TRANS_FRETE,TRANS_CNPJ_CPF,TRANS_IE_RG,CODREC_DEVOLUCAO,
COD_CAIXA,FLG_CANCEL,MOTIVO_CANCEL,NF_DATA,NF_DATA_SAIDA,NF_HORA,NF_CPF,PLACA,DATA_ENTREGA,FLG_ABERTO,VLR_DINH,VLR_CHVISTA,VLR_CHPRE,VLR_CARTAO,NFE_NRO,NFE_STATUS,NFE_CAMINHO, 
NFE_CHAVE,NFE_OBSERV,VLR_DEBITO,VLR_PRAZO,VLR_OUTROS,COD_EMPRESA,NOME_VEICULO,VOL_QUANT,VOL_ESPECIE,VOL_MARCA,VOL_NRO,VOL_BRUTO,VOL_LIQUIDO,NFE_REF1,NFE_REF2,NFE_REF3,COD_MAO_OBRA,SAT_NRO,SAT_STATUS,SAT_CAMINHO,SAT_CHAVE, 
DT_COMISSAO,NF_NOME,COD_CONVENIO,COD_MESA,COD_PARCELA,FLG_PRECO,LOCAL_DESEMB,UF_DESEMB,NRO_DI,DT_DI,COD_EXPORT,COD_FABRIC,TP_TRANS,NFE_REF4,VLR_IMPORT,OBS_ADICIONAL,FLG_PROCEDE,ROMANEIO_NRO,ROMANEIO_DATA,TOKEN, CODMARKET)
values (:CODIGO,:FLG_CODMOV,:DATA,:NOTA_FISCAL,:SERIE,:CUPOM_FISCAL,:NRO_ECF,:DATA_SAIDA,:COD_CLI,:COD_FOR,:COD_FUNC,:COD_TRIB,:COD_END_CLI,:VLR_DESC,:VLR_ACRES,:VLR_FRETE, 
:PORC_FRETE,:VLR_TOTAL,:TOTAL_NF,:TIPO_RECEB,:OBSERV1,:OBSERV2,:OBSERV3,:TRANS_NOME,:TRANS_END,:TRANS_CIDADE,:TRANS_CIDADEUF,:TRANS_PLACA,:TRANS_PLACAUF,:TRANS_FRETE, 
:TRANS_CNPJ_CPF,:TRANS_IE_RG,:CODREC_DEVOLUCAO,:COD_CAIXA,:FLG_CANCEL,:MOTIVO_CANCEL,:NF_DATA,:NF_DATA_SAIDA,:NF_HORA,:NF_CPF,:PLACA,:DATA_ENTREGA,:FLG_ABERTO, 
:VLR_DINH,:VLR_CHVISTA,:VLR_CHPRE,:VLR_CARTAO,:NFE_NRO,:NFE_STATUS,:NFE_CAMINHO,:NFE_CHAVE,:NFE_OBSERV,:VLR_DEBITO,:VLR_PRAZO,:VLR_OUTROS,:COD_EMPRESA,:NOME_VEICULO, 
:VOL_QUANT,:VOL_ESPECIE,:VOL_MARCA,:VOL_NRO,:VOL_BRUTO,:VOL_LIQUIDO,:NFE_REF1,:NFE_REF2,:NFE_REF3,:COD_MAO_OBRA,:SAT_NRO,:SAT_STATUS,:SAT_CAMINHO,:SAT_CHAVE,:DT_COMISSAO,:NF_NOME,:COD_CONVENIO,:COD_MESA,:COD_PARCELA,:FLG_PRECO,  
:LOCAL_DESEMB,:UF_DESEMB,:NRO_DI,:DT_DI,:COD_EXPORT,:COD_FABRIC,:TP_TRANS,:NFE_REF4,:VLR_IMPORT,:OBS_ADICIONAL,:FLG_PROCEDE,:ROMANEIO_NRO,:ROMANEIO_DATA,:TOKEN,:CODMARKET);
if (operacao = 2) then  
update MOVTO set  
FLG_CODMOV = :FLG_CODMOV,  
DATA = :DATA, 
NOTA_FISCAL = :NOTA_FISCAL, 
SERIE = :SERIE,   
CUPOM_FISCAL = :CUPOM_FISCAL, 
NRO_ECF = :NRO_ECF, 
DATA_SAIDA = :DATA_SAIDA, 
COD_CLI = :COD_CLI,
COD_FOR = :COD_FOR, 
COD_FUNC = :COD_FUNC,  
COD_TRIB = :COD_TRIB, 
COD_END_CLI = :COD_END_CLI, 
VLR_DESC = :VLR_DESC,  
VLR_ACRES = :VLR_ACRES, 
VLR_FRETE = :VLR_FRETE, 
PORC_FRETE = :PORC_FRETE, 
VLR_TOTAL = :VLR_TOTAL, 
TOTAL_NF = :TOTAL_NF, 
TIPO_RECEB = :TIPO_RECEB, 
OBSERV1 = :OBSERV1, 
OBSERV2 = :OBSERV2,
OBSERV3 = :OBSERV3, 
TRANS_NOME = :TRANS_NOME, 
TRANS_END = :TRANS_END, 
TRANS_CIDADE = :TRANS_CIDADE, 
TRANS_CIDADEUF = :TRANS_CIDADEUF, 
TRANS_PLACA = :TRANS_PLACA,
TRANS_PLACAUF = :TRANS_PLACAUF,  
TRANS_FRETE = :TRANS_FRETE, 
TRANS_CNPJ_CPF = :TRANS_CNPJ_CPF, 
TRANS_IE_RG = :TRANS_IE_RG,
CODREC_DEVOLUCAO = :CODREC_DEVOLUCAO,
COD_CAIXA = :COD_CAIXA, 
FLG_CANCEL = :FLG_CANCEL,
MOTIVO_CANCEL = :MOTIVO_CANCEL,
NF_DATA = :NF_DATA, 
NF_DATA_SAIDA = :NF_DATA_SAIDA,
NF_HORA = :NF_HORA, 
NF_CPF = :NF_CPF,  
PLACA = :PLACA,
DATA_ENTREGA = :DATA_ENTREGA, 
FLG_ABERTO = :FLG_ABERTO, 
VLR_DINH = :VLR_DINH,
VLR_CHVISTA = :VLR_CHVISTA, 
VLR_CHPRE = :VLR_CHPRE,  
VLR_CARTAO = :VLR_CARTAO, 
NFE_NRO = :NFE_NRO, 
NFE_STATUS = :NFE_STATUS, 
NFE_CAMINHO = :NFE_CAMINHO,
NFE_CHAVE = :NFE_CHAVE,
NFE_OBSERV = :NFE_OBSERV,
VLR_DEBITO = :VLR_DEBITO, 
VLR_PRAZO = :VLR_PRAZO,
VLR_OUTROS = :VLR_OUTROS, 
COD_EMPRESA = :COD_EMPRESA,
NOME_VEICULO = :NOME_VEICULO,
VOL_QUANT = :VOL_QUANT, 
VOL_ESPECIE = :VOL_ESPECIE, 
VOL_MARCA = :VOL_MARCA, 
VOL_NRO = :VOL_NRO, 
VOL_BRUTO = :VOL_BRUTO, 
VOL_LIQUIDO = :VOL_LIQUIDO,
NFE_REF1 = :NFE_REF1,
NFE_REF2 = :NFE_REF2,
NFE_REF3 = :NFE_REF3, 
COD_MAO_OBRA = :COD_MAO_OBRA, 
SAT_NRO = :SAT_NRO,
SAT_STATUS = :SAT_STATUS,
SAT_CAMINHO = :SAT_CAMINHO,
SAT_CHAVE = :SAT_CHAVE, 
DT_COMISSAO = :DT_COMISSAO, 
NF_NOME = :NF_NOME, 
COD_CONVENIO = :COD_CONVENIO, 
COD_MESA = :COD_MESA,
COD_PARCELA = :COD_PARCELA, 
FLG_PRECO = :FLG_PRECO, 
LOCAL_DESEMB  = :LOCAL_DESEMB,
UF_DESEMB = :UF_DESEMB,
NRO_DI = :NRO_DI, 
DT_DI = :DT_DI, 
COD_EXPORT = :COD_EXPORT, 
COD_FABRIC = :COD_FABRIC,
TP_TRANS = :TP_TRANS, 
NFE_REF4 = :NFE_REF4,
VLR_IMPORT = :VLR_IMPORT, 
OBS_ADICIONAL = :OBS_ADICIONAL,
FLG_PROCEDE = :FLG_PROCEDE,
ROMANEIO_NRO = :ROMANEIO_NRO, 
ROMANEIO_DATA = :ROMANEIO_DATA,
TOKEN = :TOKEN,
CODMARKET = :CODMARKET
where (CODIGO = :CODIGO); 
if (operacao = 3) then  
delete from MOVTO 
where (CODIGO = :CODIGO); 
suspend; 
end
^
============================================================
     ATUALIZABANCO VAI AT  AQUI - 29 DE ABRIL DE 2022 - (1.0.0.27)
============================================================

ALTER TABLE PAGAR
    ADD CRED_DEB CHAR(1) CHARACTER SET NONE NOT NULL
^

update pagar set cred_deb = 'D' where saldo > 0

^

create or alter procedure P_PAGAR (
    OPERACAO integer,
    CODIGO integer,
    PARCELA integer,
    CODMOV integer,
    COD_FOR integer,
    DT_COMPRA date,
    DT_VENCTO date,
    VLR_PARC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_DESC numeric(15,2),
    SALDO numeric(15,2),
    HISTORICO varchar(100),
    DOCUMENTO integer,
    SERIE varchar(3),
    COD_BANCO integer,
    COD_CAIXA integer,
    COD_DESP integer,
    COD_EMPRESA integer,
    CRED_DEB char(1))
as
begin
  IF (OPERACAO = 1) THEN
    INSERT INTO PAGAR (CODIGO,PARCELA,CODMOV,COD_FOR,DT_COMPRA,DT_VENCTO,VLR_PARC,VLR_ACRES,VLR_DESC,SALDO,HISTORICO,DOCUMENTO,SERIE,COD_BANCO,COD_CAIXA,COD_DESP,COD_EMPRESA,CRED_DEB)
    VALUES (:CODIGO,:PARCELA,:CODMOV,:COD_FOR,:DT_COMPRA,:DT_VENCTO,:VLR_PARC,:VLR_ACRES,:VLR_DESC,:SALDO,:HISTORICO,:DOCUMENTO,:SERIE,:COD_BANCO,:COD_CAIXA,:COD_DESP,:COD_EMPRESA,:CRED_DEB);

  IF (OPERACAO = 2) THEN
    UPDATE PAGAR SET
    PARCELA = :PARCELA,
    CODMOV = :CODMOV,
    COD_FOR = :COD_FOR,
    DT_COMPRA = :DT_COMPRA,
    DT_VENCTO = :DT_VENCTO,
    VLR_PARC = :VLR_PARC,
    VLR_ACRES = :VLR_ACRES,
    VLR_DESC = :VLR_DESC,
    SALDO = :SALDO,
    HISTORICO = :HISTORICO,
    DOCUMENTO = :DOCUMENTO,
    SERIE = :SERIE,
    COD_BANCO = :COD_BANCO,
    COD_CAIXA = :COD_CAIXA,
    COD_DESP = :COD_DESP,
    COD_EMPRESA = :COD_EMPRESA,
    CRED_DEB =: CRED_DEB
    WHERE (CODIGO = :CODIGO);

  IF (OPERACAO = 3) THEN
    DELETE FROM PAGAR
    WHERE (CODIGO = :CODIGO);

  suspend;
end

^

ALTER TABLE PAG_PAGAR
    ADD CRED_DEB CHAR(1) CHARACTER SET NONE NOT NULL
^

update pag_pagar set cred_deb = 'C'

^


create or alter procedure P_PAGPAGAR (
    OPERACAO integer,
    CODPAG integer,
    ORDEM integer,
    VLR_ACRES numeric(15,2),
    VLR_DESC numeric(15,2),
    VLR_PAGTO numeric(15,2),
    DT_PAGTO date,
    COD_FUNC integer,
    COD_CAIXA_PAGTO integer,
    HISTORICO varchar(100),
    VLR_DINH numeric(15,2),
    VLR_CHVISTA numeric(15,2),
    VLR_CHPRE numeric(15,2),
    VLR_CARTAO numeric(15,2),
    COD_EMPRESA integer,
    TIPO_RECEB integer,
    VLR_PIX numeric(15,2),
    CRED_DEB char(1))
as
begin  
IF (OPERACAO = 1) THEN  
INSERT INTO PAG_PAGAR (CODPAG,ORDEM,VLR_ACRES,VLR_DESC,VLR_PAGTO,DT_PAGTO,COD_FUNC,COD_CAIXA_PAGTO,HISTORICO,VLR_DINH,VLR_CHVISTA,VLR_CHPRE,VLR_CARTAO,COD_EMPRESA,TIPO_RECEB,VLR_PIX,CRED_DEB)  
VALUES (:CODPAG,:ORDEM,:VLR_ACRES,:VLR_DESC,:VLR_PAGTO,:DT_PAGTO,:COD_FUNC,:COD_CAIXA_PAGTO,:HISTORICO,:VLR_DINH,:VLR_CHVISTA,:VLR_CHPRE,:VLR_CARTAO,:COD_EMPRESA,:TIPO_RECEB,:VLR_PIX,:CRED_DEB); 
IF (OPERACAO = 2) THEN 
UPDATE PAG_PAGAR SET 
ORDEM = :ORDEM,  
VLR_ACRES = :VLR_ACRES, 
VLR_DESC = :VLR_DESC,  
VLR_PAGTO = :VLR_PAGTO, 
DT_PAGTO = :DT_PAGTO,  
COD_FUNC = :COD_FUNC, 
COD_CAIXA_PAGTO = :COD_CAIXA_PAGTO, 
HISTORICO = :HISTORICO, 
VLR_DINH = :VLR_DINH, 
VLR_CHVISTA = :VLR_CHVISTA, 
VLR_CHPRE = :VLR_CHPRE,
VLR_CARTAO = :VLR_CARTAO, 
COD_EMPRESA = :COD_EMPRESA, 
TIPO_RECEB = :TIPO_RECEB,
VLR_PIX = :VLR_PIX,
CRED_DEB = :CRED_DEB  
WHERE (CODPAG = :CODPAG) 
AND (ORDEM = :ORDEM); 
IF (OPERACAO = 3) THEN 
DELETE FROM PAG_PAGAR 
WHERE (CODPAG = :CODPAG)
AND (ORDEM = :ORDEM);
suspend; 
end
^

============================================================
     ATUALIZABANCO VAI AT  AQUI - 27 DE JUNHO DE 2022 - (1.0.0.28)
============================================================


ALTER TABLE FINANC_MOVTO
    ADD COD_EMPRESA INTEGER

^

ALTER TABLE FINANC_MOVTO
ADD CONSTRAINT FK_FINANC_MOVTO_7
FOREIGN KEY (COD_EMPRESA)
REFERENCES EMPRESA(CODIGO)

^

CREATE OR ALTER procedure P_FINANC_MOVTO (
    OPERACAO integer,
    COD_CONTA integer,
    CODIGO integer,
    DATA date,
    FLG_E_S char(1),
    VALOR numeric(15,2),
    COD_CCUSTO integer,
    NRO_CHEQUE integer,
    HISTORICO varchar(60),
    COD_CONTA_MOVTO integer,
    COD_MOVTO integer,
    DATA_VENCTO date,
    DATA_PAGTO date,
    COD_CHEQUE integer,
    COD_CARTAO integer,
    COD_REC integer,
    COD_PAG integer,
    COD_ORDEM integer,
    COD_CAIXA integer,
    COD_MOV integer,
    COD_EMPRESA integer)
as
begin 
IF (OPERACAO = 1) THEN 
INSERT INTO FINANC_MOVTO 
VALUES(:COD_CONTA,:CODIGO,:DATA,:FLG_E_S,:VALOR,:COD_CCUSTO,:NRO_CHEQUE,:HISTORICO,:COD_CONTA_MOVTO,:COD_MOVTO,:DATA_VENCTO,:DATA_PAGTO,:COD_CHEQUE,:COD_CARTAO,:COD_REC,:COD_PAG,:COD_ORDEM,:COD_CAIXA,:COD_MOV,:COD_EMPRESA);
IF (OPERACAO = 2) THEN 
UPDATE FINANC_MOVTO SET
DATA = :DATA,
FLG_E_S = :FLG_E_S,
VALOR = :VALOR,
COD_CCUSTO = :COD_CCUSTO,
NRO_CHEQUE = :NRO_CHEQUE,
HISTORICO = :HISTORICO,
COD_CONTA_MOVTO = :COD_CONTA_MOVTO,
COD_MOVTO = :COD_MOVTO,
DATA_VENCTO = :DATA_VENCTO,
DATA_PAGTO = :DATA_PAGTO,
COD_CHEQUE = :COD_CHEQUE,
COD_CARTAO = :COD_CARTAO,
COD_REC = :COD_REC, 
COD_PAG = :COD_PAG,
COD_ORDEM = :COD_ORDEM,
COD_CAIXA = :COD_CAIXA,
COD_MOV = :COD_MOV,
COD_EMPRESA = :COD_EMPRESA
WHERE (COD_CONTA = :COD_CONTA)
AND (CODIGO = :CODIGO);
IF (OPERACAO = 3) THEN 
DELETE FROM FINANC_MOVTO
WHERE (COD_CONTA = :COD_CONTA)
AND (CODIGO = :CODIGO);
suspend;
end

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','FINALIZACAO DE VENDA','SAIDAS','OUTRO_CLI','PERMITE INFORMAR CONTAS A RECEBER PARA DIVERSOS CLIENTES','NAO','SIM;NAO','N')

^

update RDB$FIELDS set
RDB$FIELD_LENGTH = 200,
RDB$CHARACTER_LENGTH = 200
where RDB$FIELD_NAME = 'RDB$6443'

^

update RDB$FIELDS set
RDB$FIELD_LENGTH = 200,
RDB$CHARACTER_LENGTH = 200
where RDB$FIELD_NAME = 'RDB$6416'

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','VENDAS','SAIDAS','ETIQUETA','LAYOUT PARA ETIQUETA DE BALANCA','NULL','NULL;2[CCCCCC]VVVVVX;200[CCCC]VVVVVX;2[CCCCC]0VVVVVX;2[CCCC]00VVVVVX;2[CCCCCC]PPPPPX;200[CCCC]PPPPPX;2[CCCCC]0PPPPPX;2[CCCC]00PPPPPX','N')

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0000','CONSOLIDACAO','SAIDAS','FLG_TELA','TELA DE CONSOLIDACAO A SER USADA','SG_0045','SG_0045;SG_0059','S')

^

update configuracao set valor = 'SG_0059'
where (campo = 'FLG_TELA') and (cod_tela = 'SG_0000')
and exists (select codigo from empresa where ((nivel = 10) or (nivel = 13) or (nivel = 26) or (nivel = 32) 
or (nivel = 63) or (nivel = 74) or (nivel = 90) or (nivel = 91) or (nivel = 134) or (nivel = 142) or (nivel = 156)))

^

ALTER TABLE PAG_REC ALTER COLUMN DT_CADASTRO
SET DEFAULT current_timestamp

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0098','ENVIO DE XML','UTILITARIOS','DOACAO','PERMITIR DOACAO DE SAT','SIM','SIM;NAO','N')

^

CREATE DESCENDING INDEX MOVTO_IDX5 ON MOVTO (DATA)

^

CREATE INDEX MOVTO_IDX1 ON MOVTO (DATA)

^

CREATE INDEX MOVTO_IDX6 ON MOVTO (NOTA_FISCAL)

^

CREATE DESCENDING INDEX MOVTO_IDX7 ON MOVTO (NOTA_FISCAL)

^

CREATE INDEX MOVTO_IDX8 ON MOVTO (SAT_NRO)

^

CREATE DESCENDING INDEX MOVTO_IDX9 ON MOVTO (SAT_NRO)

^

CREATE INDEX CLIENTE_IDX1 ON CLIENTE (NOME)

^

CREATE INDEX CLIENTE_IDX1 ON CLIENTE (NOME)

^

CREATE INDEX CLIENTE_IDX2 ON CLIENTE (FANTASIA)

^

CREATE INDEX FORNECEDOR_IDX1 ON FORNECEDOR (NOME)

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0011','BAIXA','CONTAS A RECEBER','EXTRATO','UTILIZAR NOVO EXTRATO DE PAGAMENTO','NAO','SIM;NAO','N')

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','IMPRESSAO VENDA','SAIDAS','EXTRATO','UTILIZAR NOVO EXTRATO DE VENDA','NAO','SIM;NAO','N')

^

update configuracao set valor = 'SIM'
where (campo = 'EXTRATO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where ((nivel = 11) or (nivel = 25) or (nivel = 28) or (nivel = 29) or (nivel = 30) 
or (nivel = 36) or (nivel = 45) or (nivel = 47)  or (nivel = 106) or (nivel = 113) or (nivel = 146) or (nivel = 154) or (nivel = 157) 
or (cnpj = '15.141.668/0001-26') or (cnpj = '30.115.259/0001-49')))
^
============================================================
     ATUALIZABANCO VAI AT  AQUI - 26 DE JULHO DE 2022 - (1.0.0.29)
============================================================

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0000','CONFIGURACOES','PRINCIPAL','WIN_PTBR','USAR PESQUISA COM COLLATE','SIM','SIM;NAO','S')

^

CREATE OR ALTER trigger trg_financ_movto for financ_movto
active after insert position 0
AS
declare variable cod_transf_e integer;
begin
select a.cod_ccusto from despesa a 
where (a.flg_tipo = 'E') and (a.flg_ativado = 'S') and (a.flg_transf = 'S') 
into :cod_transf_e; 
if (new.flg_e_s = 'S') then  
update financ_saldo s set 
s.vl_saida_lanc    = s.vl_saida_lanc    + new.valor, 
s.saldo_atual_lanc = s.saldo_atual_lanc - new.valor 
where (s.cod_conta = new.cod_conta); 
if ((new.flg_e_s = 'S') and (new.data_pagto is not null)) then 
update financ_saldo s set 
s.vl_saida_conc    = s.vl_saida_conc    + new.valor, 
s.saldo_atual_conc = s.saldo_atual_conc - new.valor 
where (s.cod_conta = new.cod_conta);  
if (new.flg_e_s = 'E') then 
update financ_saldo s set 
s.vl_entrada_lanc  = s.vl_entrada_lanc  + new.valor,
s.saldo_atual_lanc = s.saldo_atual_lanc + new.valor 
where (s.cod_conta = new.cod_conta);
if ((new.flg_e_s = 'E') and (new.data_pagto is not null)) then 
update financ_saldo s set  
s.vl_entrada_conc  = s.vl_entrada_conc  + new.valor, 
s.saldo_atual_conc = s.saldo_atual_conc + new.valor  
where (s.cod_conta = new.cod_conta); 
if ((new.flg_e_s = 'S') and (new.cod_conta_movto is not null)) then 
insert into financ_movto  
values(new.COD_CONTA_movto,0,new.DATA,'E',new.VALOR,new.COD_CCUSTO,new.NRO_CHEQUE,new.HISTORICO,new.COD_CONTA,new.CODIGO,new.DATA_VENCTO,new.DATA_PAGTO,new.COD_CHEQUE,new.COD_CARTAO,new.COD_REC,new.COD_PAG,new.COD_ORDEM,new.COD_CAIXA,new.COD_MOV,new.COD_EMPRESA);
end

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','RELATORIO DE VENDA','SAIDAS','FLG_DRE','TIPO DE FILTRO A SER USADO','PAGAR','PAGAR;FINANCEIRO','N')

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('PRODUTO','PRODUTOS','CADASTROS','PESQ_UM','PESQUISA APENAS UM PRODUTO POR VEZ','NAO','SIM;NAO','S')

^

update configuracao set valor = 'SIM'
where (campo = 'PESQ_UM') and (cod_tela = 'PRODUTO')
and exists (select codigo from empresa where ((nivel = 2) or (nivel = 10) or (nivel = 23) or (nivel = 34) or (nivel = 39) or (nivel = 51) 
or (nivel = 53) or (nivel = 58) or (nivel = 68) or (nivel = 81) or (nivel = 90) or (nivel = 91) or (nivel = 92) or (nivel = 93)  
or (nivel = 98) or (nivel = 99) or (nivel = 101) or (nivel = 102) or (nivel = 106) or (nivel = 108) or (nivel = 111) or (nivel = 112)
or (nivel = 118) or (nivel = 119) or (nivel = 136) or (nivel = 156)))

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('PRODUTO','PRODUTOS','CADASTROS','DENSIDADE','DENSIDADE DA ETIQUETA','7','1;2;3;4;5;6;7;8;9;10;11;12;13;14;15','N')

^

CREATE TABLE HORAS_TRABALHO (
    CODIGO INTEGER NOT NULL,
    COD_CLI INTEGER NOT NULL,
    HR_INICIO TIME NOT NULL,
    HR_FIM TIME NOT NULL,
    HR_ALMOCO TIME NOT NULL,
    PRECO_HORA NUMERIC(15,2) NOT NULL,
    VLR_TOTAL NUMERIC(15,2) NOT NULL,
    HORAS_TOTAL TIME NOT NULL,
    OBSERVACAO VARCHAR(60),
    DATA DATE NOT NULL,
    DATA_CADASTRO DATE DEFAULT current_timestamp NOT NULL)

^

ALTER TABLE HORAS_TRABALHO
ADD CONSTRAINT PK_HORAS_TRABALHO
PRIMARY KEY (CODIGO)

^

ALTER TABLE HORAS_TRABALHO
ADD CONSTRAINT FK_HORAS_TRABALHO_1
FOREIGN KEY (COD_CLI)
REFERENCES CLIENTE(CODIGO)
ON DELETE CASCADE

^

create or alter procedure P_HORAS_TRABALHO(
    OPERACAO INTEGER,
    CODIGO INTEGER,
    COD_CLI INTEGER,
    HR_INICIO TIME,
    HR_FIM TIME,
    HR_ALMOCO TIME,
    PRECO_HORA NUMERIC(15,2),
    VLR_TOTAL NUMERIC(15,2),
    HORAS_TOTAL TIME,
    OBSERVACAO VARCHAR(60),
    DATA DATE,
    DATA_CADASTRO DATE)
as
begin
  if (operacao = 1) then
     insert into HORAS_TRABALHO (CODIGO,COD_CLI,HR_INICIO,HR_FIM,HR_ALMOCO,PRECO_HORA,VLR_TOTAL,HORAS_TOTAL,OBSERVACAO,DATA,DATA_CADASTRO)
     values (:CODIGO,:COD_CLI,:HR_INICIO,:HR_FIM,:HR_ALMOCO,:PRECO_HORA,:VLR_TOTAL,:HORAS_TOTAL,:OBSERVACAO,:DATA,:DATA_CADASTRO);

  if (operacao = 2) then
     update HORAS_TRABALHO set
     COD_CLI = :COD_CLI,
     HR_INICIO = :HR_INICIO,
     HR_FIM = :HR_FIM,
     HR_ALMOCO = :HR_ALMOCO,
     PRECO_HORA = :PRECO_HORA,
     VLR_TOTAL = :VLR_TOTAL,
     HORAS_TOTAL = :HORAS_TOTAL,
     OBSERVACAO = :OBSERVACAO,
     DATA = :DATA,
     DATA_CADASTRO = :DATA_CADASTRO
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from HORAS_TRABALHO
     where (CODIGO = :CODIGO);

  suspend;
end

^

CREATE OR ALTER TRIGGER TRG_HORAS_TRABALHO FOR HORAS_TRABALHO
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE COD INTEGER;
begin
   SELECT MAX(CODIGO) FROM HORAS_TRABALHO
   INTO :COD;

  IF (COD IS NULL) THEN COD = 0;

  NEW.CODIGO = COD + 1;
end

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','VENDAS','SAIDAS','FLG_ABERTO','BLOQUEAR VENDA ABERTA EM OUTRO TERMINAL','SIM','SIM;NAO','N')

^

update configuracao set valor = 'NAO'
where (campo = 'FLG_ABERTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where ((nivel = 4) or (nivel = 34) or (nivel = 59) or (nivel = 114)))

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','IMPRESSAO VENDA','SAIDAS','FLG_LINHA','QUANTIDADE DE LINHAS DO ITEM','1','1;2','N')

^

ALTER TABLE PARAMETROS
    ADD FLG_UPDATE CHAR(1)

^

update parametros set flg_update = 'N'
^
=================================================================
 ATUALIZABANCO VAI AT  AQUI - 13 DE OUTUBRO DE 2022 - (1.0.0.30)
=================================================================

CREATE TABLE MOVIT_TOKEN (
    CODIGO INTEGER NOT NULL,
    CODMOV INTEGER NOT NULL,
    ITEM INTEGER NOT NULL,
    TOKEN VARCHAR(200) NOT NULL,
    DATA_CADASTRO TIMESTAMP DEFAULT current_timestamp NOT NULL)

^

ALTER TABLE MOVIT_TOKEN
ADD CONSTRAINT PK_MOVIT_TOKEN
PRIMARY KEY (CODIGO)

^

ALTER TABLE MOVIT_TOKEN
ADD CONSTRAINT UNQ1_MOVIT_TOKEN
UNIQUE (TOKEN)

^

CREATE trigger trg_movit_token for movit_token
active before insert position 0
AS
declare variable cod integer;
begin
 select max(CODIGO) from MOVIT_TOKEN into :cod;
if (cod is null) then cod = 0;
new.codigo = cod + 1;
end

^

ALTER TABLE PARAMETROS
    ADD CAMINHO_EXE VARCHAR(100)

^
CREATE TABLE MOVIT_EXP (
    CODIGO          INTEGER NOT NULL,
    CODMOV          INTEGER NOT NULL,
    ITEM            INTEGER NOT NULL,
    NRO_EXP         INTEGER NOT NULL,
    DATA            DATE NOT NULL,
    QUANT_BALCAO    NUMERIC(15,2),
    QUANT_ENTREGA   NUMERIC(15,2),
    QUANT_RETIRADA  NUMERIC(15,2),
    ROMANEIO_NRO    INTEGER,
    ROMANEIO_DATA   DATE,
    OBSERVACAO      VARCHAR(60)
)

^

ALTER TABLE MOVIT_EXP
ADD CONSTRAINT PK_MOVIT_EXP
PRIMARY KEY (CODIGO)
^
ALTER TABLE MOVIT_EXP ADD CONSTRAINT FK_MOVIT_EXP_1 FOREIGN KEY (CODMOV) REFERENCES MOVIT(CODMOV) ON DELETE CASCADE;
^
ALTER TABLE MOVIT_EXP
ADD CONSTRAINT FK_MOVIT_EXP_2
FOREIGN KEY (ITEM)
REFERENCES MOVIT(ITEM)
ON DELETE CASCADE

^

CREATE OR ALTER TRIGGER TRG_MOVIT_EXP FOR MOVIT_EXP
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE COD INTEGER;
begin
   SELECT MAX(CODIGO) FROM MOVIT_EXP
   INTO :COD;

  IF (COD IS NULL) THEN COD = 0;

  NEW.CODIGO = COD + 1;
end

^

create or alter procedure P_MOVIT_EXP (
    OPERACAO integer,
    CODIGO integer,
    CODMOV integer,
    ITEM integer,
    NRO_EXP integer,
    DATA date,
    QUANT_BALCAO numeric(15,2),
    QUANT_ENTREGA numeric(15,2),
    QUANT_RETIRADA numeric(15,2),
    ROMANEIO_NRO integer,
    ROMANEIO_DATA date,
    OBSERVACAO varchar(60))
as
begin
  if (operacao = 1) then
    insert into movit_exp (codigo,codmov,item,nro_exp,data,quant_balcao,quant_entrega,quant_retirada,romaneio_nro,romaneio_data,observacao)
    values (:codigo,:codmov,:item,:nro_exp,:data,:quant_balcao,:quant_entrega,:quant_retirada,:romaneio_nro,:romaneio_data,:observacao);

  if (operacao = 2) then
    update movit_exp set
    codmov = :codmov,
    item = :item,
    nro_exp = :nro_exp,
    data = :data,
    quant_balcao = :quant_balcao,
    quant_entrega = :quant_entrega,
    quant_retirada = :quant_retirada,
    romaneio_nro = :romaneio_nro,
    romaneio_data = :romaneio_data,
    observacao = :observacao
    where (codigo = :codigo);

  if (operacao = 3) then
    delete from movit_exp
    where (codigo = :codigo);

  suspend;
end

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0011','BAIXA','CONTAS A RECEBER','FLG_PERDIDO','EXIBIR PARCELAS PERDIDAS NA BAIXA','NAO','SIM;NAO','N')

^

update configuracao set valor = 'SIM'
where (campo = 'FLG_PERDIDO') and (cod_tela = 'SG_0011')
and exists (select codigo from empresa where ((nivel = 8) or (nivel = 34) or (nivel = 127) or (cnpj = '24.526.940/0001-87')))


^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0118','DASHBOARD','GERENCIAL','FLG_SERIE','SERIE A SER EXIBIDA NOS GRAFICO','AMBAS','AMBAS;0;52','N')

^

update configuracao set valor = '52'
where (campo = 'FLG_SERIE') and (cod_tela = 'SG_0118')
and exists (select codigo from empresa where ((cnpj = '24.526.940/0001-87')))

^

create or alter procedure P_PAGAR (
    OPERACAO integer,
    CODIGO integer,
    PARCELA integer,
    CODMOV integer,
    COD_FOR integer,
    DT_COMPRA date,
    DT_VENCTO date,
    VLR_PARC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_DESC numeric(15,2),
    SALDO numeric(15,2),
    HISTORICO varchar(100),
    DOCUMENTO varchar(20),
    SERIE varchar(3),
    COD_BANCO integer,
    COD_CAIXA integer,
    COD_DESP integer,
    COD_EMPRESA integer,
    CRED_DEB char(1))
as
begin
  IF (OPERACAO = 1) THEN
    INSERT INTO PAGAR (CODIGO,PARCELA,CODMOV,COD_FOR,DT_COMPRA,DT_VENCTO,VLR_PARC,VLR_ACRES,VLR_DESC,SALDO,HISTORICO,DOCUMENTO,SERIE,COD_BANCO,COD_CAIXA,COD_DESP,COD_EMPRESA,CRED_DEB)
    VALUES (:CODIGO,:PARCELA,:CODMOV,:COD_FOR,:DT_COMPRA,:DT_VENCTO,:VLR_PARC,:VLR_ACRES,:VLR_DESC,:SALDO,:HISTORICO,:DOCUMENTO,:SERIE,:COD_BANCO,:COD_CAIXA,:COD_DESP,:COD_EMPRESA,:CRED_DEB);

  IF (OPERACAO = 2) THEN
    UPDATE PAGAR SET
    PARCELA = :PARCELA,
    CODMOV = :CODMOV,
    COD_FOR = :COD_FOR,
    DT_COMPRA = :DT_COMPRA,
    DT_VENCTO = :DT_VENCTO,
    VLR_PARC = :VLR_PARC,
    VLR_ACRES = :VLR_ACRES,
    VLR_DESC = :VLR_DESC,
    SALDO = :SALDO,
    HISTORICO = :HISTORICO,
    DOCUMENTO = :DOCUMENTO,
    SERIE = :SERIE,
    COD_BANCO = :COD_BANCO,
    COD_CAIXA = :COD_CAIXA,
    COD_DESP = :COD_DESP,
    COD_EMPRESA = :COD_EMPRESA,
    CRED_DEB =: CRED_DEB
    WHERE (CODIGO = :CODIGO);

  IF (OPERACAO = 3) THEN
    DELETE FROM PAGAR
    WHERE (CODIGO = :CODIGO);

  suspend;
end

^

update RDB$FIELDS set
RDB$FIELD_TYPE = 37,
RDB$FIELD_LENGTH = 20,
RDB$CHARACTER_LENGTH = 20,
RDB$CHARACTER_SET_ID = 0,
RDB$COLLATION_ID = 0
where RDB$FIELD_NAME = 'RDB$900'

==================================================================
 ATUALIZABANCO VAI AT  AQUI - 16 DE NOVEMBRO DE 2022 - (1.0.0.32)
==================================================================

update configuracao set valor = 'SIM'
where (campo = 'EXTRATO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where ((nivel = 9) or (nivel = 52) or (nivel = 55) 
or (nivel = 91) or (nivel = 135) or (nivel = 115) or (nivel = 153) or (nivel = 154) 
or (cnpj = '27.613.297/0001-17') or (cnpj = '46.918.568/0001-97') or (cnpj = '55.862.031/0001-43')))

^

ALTER TABLE FUNCIONARIO
ADD COD_EMPRESA INTEGER

^

ALTER TABLE FUNCIONARIO
ADD CONSTRAINT FK_FUNCIONARIO_1
FOREIGN KEY (COD_EMPRESA)
REFERENCES EMPRESA(CODIGO)

^

create or alter procedure P_FUNCIONARIO (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    APELIDO varchar(20),
    CPF varchar(20),
    RG varchar(20),
    DT_NASC date,
    ENDERECO varchar(60),
    BAIRRO varchar(60),
    COD_CID varchar(60),
    CEP varchar(10),
    FONE varchar(20),
    CELULAR varchar(20),
    E_MAIL varchar(60),
    CARGO varchar(60),
    FLG_ACESSO char(1),
    SENHA varchar(15),
    OBSERVACAO varchar(100),
    DT_ADMISSAO date,
    DT_DEMISSAO date,
    NIVEL integer,
    PORC_COMISSAO numeric(15,2),
    PORC_COMISSAO_P numeric(15,2),
    VLR_META numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    COD_EMPRESA integer)
as
begin
  if (operacao = 1) then
    insert into funcionario (codigo,nome,apelido,cpf,rg,dt_nasc,endereco,bairro,cod_cid,cep,fone,celular,e_mail,cargo,flg_acesso,senha,observacao,dt_admissao,dt_demissao,nivel,porc_comissao,porc_comissao_p,vlr_meta,obs_adicional,cod_empresa)
    values (:codigo,:nome,:apelido,:cpf,:rg,:dt_nasc,:endereco,:bairro,:cod_cid,:cep,:fone,:celular,:e_mail,:cargo,:flg_acesso,:senha,:observacao,:dt_admissao,:dt_demissao,:nivel,:porc_comissao,:porc_comissao_p,:vlr_meta,:obs_adicional,:cod_empresa);

  if (operacao = 2) then
    update funcionario set
    nome = :nome,
    apelido = :apelido,
    cpf = :cpf,
    rg = :rg,
    dt_nasc = :dt_nasc,
    endereco = :endereco,
    bairro = :bairro,
    cod_cid = :cod_cid,
    cep = :cep,
    fone = :fone,
    celular = :celular,
    e_mail = :e_mail,
    cargo = :cargo,
    flg_acesso = :flg_acesso,
    senha = :senha,
    observacao = :observacao,
    dt_admissao = :dt_admissao,
    dt_demissao = :dt_demissao,
    nivel = :nivel,
    porc_comissao = :porc_comissao,
    porc_comissao_p = :porc_comissao_p,
    vlr_meta = :vlr_meta,
    obs_adicional = :obs_adicional,
    cod_empresa = :cod_empresa
    where (codigo = :codigo);

  if (operacao = 3) then
    delete from funcionario
    where (codigo = :codigo);

  suspend;
end

^

update RDB$FIELDS set
RDB$FIELD_LENGTH = 100,
RDB$CHARACTER_LENGTH = 100
where RDB$FIELD_NAME = 'RDB$6415'

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0098','ENVIO DE XML','UTILITARIOS','EMAIL','E-MAIL PARA ENVIAR XML DE DOACAO','','','N')

^

update configuracao a set a.valor = 'contato@notadobem.com.br'
where (a.campo = 'EMAIL') and (a.cod_tela = 'SG_0098')
and exists (select b.cod_tela from configuracao b where (b.campo = 'DOACAO') and (b.cod_tela = 'SG_0098') and (b.valor = 'SIM'))

^
==================================================================
 ATUALIZABANCO VAI ATÉ AQUI - 16 DE DEZEMBRO DE 2022 - (1.0.0.33)
==================================================================
^

ALTER TABLE MIT_PRODUCAO
    ADD NOME_FOR VARCHAR(60)

^

CREATE OR ALTER procedure P_MIT_PRODUCAO (
    OPERACAO integer,
    CODMOV integer,
    ITEM integer,
    COD_MAT integer,
    QUANT_AUSAR numeric(15,3),
    QUANT_USADA numeric(15,3),
    PR_CUSTO numeric(15,2),
    NOME_FOR varchar(60))
as
begin
  if (operacao = 1) then
     insert into MIT_PRODUCAO (CODMOV,ITEM,COD_MAT,QUANT_AUSAR,QUANT_USADA,PR_CUSTO,NOME_FOR)
     values (:CODMOV,:ITEM,:COD_MAT,:QUANT_AUSAR,:QUANT_USADA,:PR_CUSTO,:NOME_FOR);

  if (operacao = 2) then
     update MIT_PRODUCAO set
     COD_MAT = :COD_MAT,
     QUANT_AUSAR = :QUANT_AUSAR,
     QUANT_USADA = :QUANT_USADA,
     PR_CUSTO = :PR_CUSTO,
     NOME_FOR = :NOME_FOR
     where (CODMOV = :CODMOV)
     and (ITEM = :ITEM);

  if (operacao = 3) then
     delete from MIT_PRODUCAO
     where (CODMOV = :CODMOV)
     and (ITEM = :ITEM);

  suspend;
end

^

update mit_producao a set a.nome_for = 
(select c.nome from produto b, fornecedor c
where b.cod_fornecedor = c.codigo
and a.cod_mat = b.codigo)

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0115','ORDEM PRODUCAO','ESTOQUE','FLG_LOTE','PERMITE CRIACAO DE LOTE','NAO','SIM;NAO','N')

^

ALTER TABLE MIT_PRODUCAO
    ADD COD_LOTE INTEGER

^

ALTER TABLE MIT_PRODUCAO
ADD CONSTRAINT FK_MIT_PRODUCAO_2
FOREIGN KEY (COD_LOTE)
REFERENCES PROD_LOTE(CODIGO)
ON DELETE CASCADE

^

CREATE OR ALTER procedure P_MIT_PRODUCAO (
    OPERACAO integer,
    CODMOV integer,
    ITEM integer,
    COD_MAT integer,
    QUANT_AUSAR numeric(15,3),
    QUANT_USADA numeric(15,3),
    PR_CUSTO numeric(15,2),
    NOME_FOR varchar(60),
    COD_LOTE integer)
as
begin
  if (operacao = 1) then
     insert into MIT_PRODUCAO (CODMOV,ITEM,COD_MAT,QUANT_AUSAR,QUANT_USADA,PR_CUSTO,NOME_FOR,COD_LOTE)
     values (:CODMOV,:ITEM,:COD_MAT,:QUANT_AUSAR,:QUANT_USADA,:PR_CUSTO,:NOME_FOR,:COD_LOTE);

  if (operacao = 2) then
     update MIT_PRODUCAO set
     COD_MAT = :COD_MAT,
     QUANT_AUSAR = :QUANT_AUSAR,
     QUANT_USADA = :QUANT_USADA,
     PR_CUSTO = :PR_CUSTO,
     NOME_FOR = :NOME_FOR,
     COD_LOTE = :COD_LOTE
     where (CODMOV = :CODMOV)
     and (ITEM = :ITEM);

  if (operacao = 3) then
     delete from MIT_PRODUCAO
     where (CODMOV = :CODMOV)
     and (ITEM = :ITEM);

  suspend;
end

^

ALTER TABLE CLIENTE
    ADD FLG_COMISSAO CHAR(1) DEFAULT 'S' NOT NULL,
    ADD PORC_DESC NUMERIC(15,2) DEFAULT 0 NOT NULL

^

CREATE OR ALTER procedure P_CLIENTE (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    FANTASIA varchar(60),
    COD_END integer,
    FONE varchar(20),
    FAX varchar(20),
    CELULAR varchar(20),
    CX_POSTAL varchar(10),
    E_MAIL varchar(60),
    CONTATO varchar(20),
    TIPO_PESSOA char(1),
    CNPJ_CPF varchar(20),
    IE_RG varchar(20),
    DT_CADASTRO date,
    DT_INATIVO date,
    DT_NASC date,
    DT_BLOQUEIO date,
    FLG_BLOQUEIO varchar(20),
    OBS_BLOQUEIO varchar(200),
    OBSERVACAO1 varchar(100),
    OBSERVACAO2 varchar(100),
    RESP_NOME varchar(60),
    RESP_BAIRRO varchar(60),
    RESP_ENDERECO varchar(60),
    RESP_CODCID integer,
    RESP_CEP varchar(10),
    RESP_FONE varchar(20),
    RESP_RG varchar(20),
    RESP_CPF varchar(20),
    RESP_DTNASC date,
    RESP_OBSERV varchar(100),
    PROFISSAO varchar(60),
    LIMITE numeric(15,2),
    OBS_COBRANCA varchar(200),
    FLG_RECEBER char(1),
    COD_EMPRESA integer,
    FLG_LIGAR char(1),
    COD_FUNC integer,
    FOTO varchar(200),
    FLG_FECHAMENTO integer,
    DIAS_PAGTO integer,
    FLG_CLASSIFICA char(1),
    TIPO_FECHAMENTO char(1),
    FLG_JUROS char(1),
    E_MAIL_NFE varchar(60),
    DATA_COBRANCA date,
    DATA_VISITA date,
    COD_CONVENIO integer,
    SENHA varchar(20),
    COD_REGIAO integer,
    FLG_PRAZO varchar(1),
    FLG_NFP char(1),
    SITE_SYNC char(1),
    SITE_COD integer,
    OBS_ADICIONAL varchar(9999),
    FLG_COMISSAO char(1),
    PORC_DESC numeric(15,2))
as
begin 
if (operacao = 1) then 
insert into CLIENTE (CODIGO,NOME,FANTASIA,COD_END,FONE,FAX,CELULAR,CX_POSTAL,E_MAIL,CONTATO,TIPO_PESSOA,CNPJ_CPF,IE_RG,DT_CADASTRO, 
DT_INATIVO,DT_NASC,DT_BLOQUEIO,FLG_BLOQUEIO,OBS_BLOQUEIO,OBSERVACAO1,OBSERVACAO2,RESP_NOME,RESP_BAIRRO,RESP_ENDERECO,RESP_CODCID,RESP_CEP,RESP_FONE,RESP_RG,RESP_CPF, 
RESP_DTNASC,RESP_OBSERV,PROFISSAO,LIMITE,OBS_COBRANCA,FLG_RECEBER,COD_EMPRESA,FLG_LIGAR,COD_FUNC,FOTO,FLG_FECHAMENTO,DIAS_PAGTO,FLG_CLASSIFICA,TIPO_FECHAMENTO,FLG_JUROS,E_MAIL_NFE, 
DATA_COBRANCA,DATA_VISITA,COD_CONVENIO,SENHA,COD_REGIAO,FLG_PRAZO,FLG_NFP,SITE_SYNC,SITE_COD,OBS_ADICIONAL,FLG_COMISSAO,PORC_DESC)
values (:CODIGO,:NOME,:FANTASIA,:COD_END,:FONE,:FAX,:CELULAR,:CX_POSTAL,:E_MAIL,:CONTATO,:TIPO_PESSOA,:CNPJ_CPF,:IE_RG,:DT_CADASTRO,:DT_INATIVO,:DT_NASC,:DT_BLOQUEIO, 
:FLG_BLOQUEIO,:OBS_BLOQUEIO,:OBSERVACAO1,:OBSERVACAO2,:RESP_NOME,:RESP_BAIRRO,:RESP_ENDERECO,:RESP_CODCID,:RESP_CEP,:RESP_FONE,:RESP_RG,:RESP_CPF,:RESP_DTNASC, 
:RESP_OBSERV,:PROFISSAO,:LIMITE,:OBS_COBRANCA,:FLG_RECEBER,:COD_EMPRESA,:FLG_LIGAR,:COD_FUNC,:FOTO,:FLG_FECHAMENTO,:DIAS_PAGTO,:FLG_CLASSIFICA,:TIPO_FECHAMENTO,:FLG_JUROS,:E_MAIL_NFE, 
:DATA_COBRANCA,:DATA_VISITA,:COD_CONVENIO,:SENHA,:COD_REGIAO,:FLG_PRAZO,:FLG_NFP,:SITE_SYNC,:SITE_COD,:OBS_ADICIONAL,:FLG_COMISSAO,:PORC_DESC);
if (operacao = 2) then  
update CLIENTE set 
NOME = :NOME,
FANTASIA = :FANTASIA, 
COD_END = :COD_END,
FONE = :FONE, 
FAX = :FAX, 
CELULAR = :CELULAR,
CX_POSTAL = :CX_POSTAL,  
E_MAIL = :E_MAIL,
CONTATO = :CONTATO, 
TIPO_PESSOA = :TIPO_PESSOA,
CNPJ_CPF = :CNPJ_CPF, 
IE_RG = :IE_RG, 
DT_CADASTRO = :DT_CADASTRO,
DT_INATIVO = :DT_INATIVO, 
DT_NASC = :DT_NASC,  
DT_BLOQUEIO = :DT_BLOQUEIO, 
FLG_BLOQUEIO = :FLG_BLOQUEIO, 
OBS_BLOQUEIO = :OBS_BLOQUEIO, 
OBSERVACAO1 = :OBSERVACAO1,  
OBSERVACAO2 = :OBSERVACAO2, 
RESP_NOME = :RESP_NOME, 
RESP_BAIRRO = :RESP_BAIRRO, 
RESP_ENDERECO = :RESP_ENDERECO, 
RESP_CODCID = :RESP_CODCID, 
RESP_CEP = :RESP_CEP, 
RESP_FONE = :RESP_FONE,
RESP_RG = :RESP_RG,   
RESP_CPF = :RESP_CPF,  
RESP_DTNASC = :RESP_DTNASC, 
RESP_OBSERV = :RESP_OBSERV, 
PROFISSAO = :PROFISSAO, 
LIMITE = :LIMITE, 
OBS_COBRANCA = :OBS_COBRANCA,  
FLG_RECEBER = :FLG_RECEBER, 
COD_EMPRESA = :COD_EMPRESA, 
FLG_LIGAR = :FLG_LIGAR, 
COD_FUNC = :COD_FUNC, 
FOTO = :FOTO, 
FLG_FECHAMENTO =:FLG_FECHAMENTO, 
DIAS_PAGTO = :DIAS_PAGTO, 
FLG_CLASSIFICA = :FLG_CLASSIFICA, 
TIPO_FECHAMENTO = :TIPO_FECHAMENTO, 
FLG_JUROS = :FLG_JUROS, 
E_MAIL_NFE = :E_MAIL_NFE, 
DATA_COBRANCA = :DATA_COBRANCA,
DATA_VISITA = :DATA_VISITA, 
COD_CONVENIO = :COD_CONVENIO,
SENHA = :SENHA,  
COD_REGIAO = :COD_REGIAO,
FLG_PRAZO = :FLG_PRAZO,
FLG_NFP = :FLG_NFP,
SITE_SYNC = :SITE_SYNC, 
SITE_COD  = :SITE_COD, 
OBS_ADICIONAL = :OBS_ADICIONAL,
FLG_COMISSAO = :FLG_COMISSAO,
PORC_DESC = :PORC_DESC
where (CODIGO = :CODIGO);
if (operacao = 3) then 
delete from CLIENTE 
where (CODIGO = :CODIGO); 
suspend;
end

^

ALTER TABLE CARTAO
    ADD FLG_ES CHAR(1) NOT NULL,
    ADD DIA_FECHA INTEGER NOT NULL,
    ADD DIA_VENCE INTEGER NOT NULL

^

UPDATE CARTAO
SET FLG_ES = 'E',
    DIA_FECHA = 0,
    DIA_VENCE = 0

^

CREATE OR ALTER procedure P_CARTAO (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    TAXA numeric(15,2),
    PRAZO integer,
    ANTECIPA numeric(15,2),
    FLG_ATIVADO char(1),
    FLG_ES char(1),
    DIA_FECHA integer,
    DIA_VENCE integer)
as
begin
if (operacao = 1) then
   insert into CARTAO (CODIGO,NOME,TAXA,PRAZO,ANTECIPA,FLG_ATIVADO,FLG_ES,DIA_FECHA,DIA_VENCE)
  values (:CODIGO,:NOME,:TAXA,:PRAZO,:ANTECIPA,:FLG_ATIVADO,:FLG_ES,:DIA_FECHA,:DIA_VENCE);
  if (operacao = 2) then
update CARTAO set
NOME = :NOME,
TAXA = :TAXA,
PRAZO = :PRAZO,
ANTECIPA = :ANTECIPA,
FLG_ATIVADO = :FLG_ATIVADO,
FLG_ES = :FLG_ES,
DIA_FECHA = :DIA_FECHA,
DIA_VENCE = :DIA_VENCE
where (CODIGO = :CODIGO);
if (operacao = 3) then
delete from CARTAO
where (CODIGO = :CODIGO);
suspend;
end

^

ALTER TABLE MOV_CARTAO
    ADD CODPAG INTEGER,
    ADD ORDPAG INTEGER

^

CREATE OR ALTER procedure P_MOVCARTAO (
    OPERACAO integer,
    CODIGO integer,
    COD_CARTAO integer,
    CODMOV integer,
    CODREC integer,
    ORDREC integer,
    PARCELA varchar(10),
    DT_EMISSAO date,
    DT_VENCTO date,
    DT_PAGTO date,
    VLR_PARC numeric(15,2),
    VLR_DESC numeric(15,2),
    VLR_LIQUIDO numeric(15,2),
    OBSERVACAO varchar(60),
    AGRUPA char(1),
    VLR_ANTECIPA numeric(15,2),
    CODPAG integer,
    ORDPAG integer)
as
begin
  if (operacao = 1) then
     insert into MOV_CARTAO (CODIGO,COD_CARTAO,CODMOV,CODREC,ORDREC,PARCELA,DT_EMISSAO,DT_VENCTO,DT_PAGTO,VLR_PARC,VLR_DESC,VLR_LIQUIDO,OBSERVACAO,AGRUPA,VLR_ANTECIPA,CODPAG,ORDPAG)
     values (:CODIGO,:COD_CARTAO,:CODMOV,:CODREC,:ORDREC,:PARCELA,:DT_EMISSAO,:DT_VENCTO,:DT_PAGTO,:VLR_PARC,:VLR_DESC,:VLR_LIQUIDO,:OBSERVACAO,:AGRUPA,:VLR_ANTECIPA,:CODPAG,:ORDPAG);

  if (operacao = 2) then
     update MOV_CARTAO set
     COD_CARTAO = :COD_CARTAO,
     CODMOV = :CODMOV,
     CODREC = :CODREC,
     ORDREC = :ORDREC,
     PARCELA = :PARCELA,
     DT_EMISSAO = :DT_EMISSAO,
     DT_VENCTO = :DT_VENCTO,
     DT_PAGTO = :DT_PAGTO,
     VLR_PARC = :VLR_PARC,
     VLR_DESC = :VLR_DESC,
     VLR_LIQUIDO = :VLR_LIQUIDO,
     OBSERVACAO = :OBSERVACAO,
     AGRUPA = :AGRUPA,
     VLR_ANTECIPA = :VLR_ANTECIPA,
     CODPAG = :CODPAG,
     ORDPAG = :ORDPAG
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from MOV_CARTAO
     where (CODIGO = :CODIGO);

  suspend;
end

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','VENDAS','SAIDAS','COMPOSICAO','CARREGAR ITENS DA COMPOSICAO','NAO','SIM;NAO','N')

^

update configuracao set valor = 'SIM'
where (campo = 'COMPOSICAO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (cnpj = '43.462.214/0001-92') or (cnpj = '55.862.031/0001-43'))

^

CREATE SEQUENCE GEN_LOG

^

execute block as
  declare variable x integer;
begin
  SELECT max(codigo) from log into x;
  execute statement 'set generator GEN_LOG to ' || x;
end

^

DROP TRIGGER TRG_LOG

^

CREATE DESCENDING INDEX MOVTO_IDX6
ON MOVTO (CODIGO)

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','VENDAS','SAIDAS','PREVIEW','MOSTRAR PREVIEW','SIM','SIM;NAO','N')

^

update configuracao set valido = 'SG_0015;SG_0024;SG_0035;SG_0057;SG_0088;SG_0114;SG_0134'
where cod_tela = 'VENDA' and campo = 'FLG_TELA'

^

ALTER TABLE MOVIT_EXP 
ADD STATUS VARCHAR(20)

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','IMPRESSAO VENDA','SAIDAS','FLG_CAMPO','CAMPO A EXIBIR NA IMPRESSAO','CODIGO','CODIGO;COD_BARRA','S')

^

update configuracao set valor = 'COD_BARRA'
where (campo = 'FLG_CAMPO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (nivel = 112) or (nivel = 114) or (nivel = 154))

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','IMPRESSAO VENDA','SAIDAS','EXIBE_SALDO','EXIBIR SALDO EM ABERTO NA IMPRESSAO','NAO','SIM;NAO','S')

^

update configuracao set valor = 'SIM'
where (campo = 'EXIBE_SALDO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (nivel = 45) or (cnpj = '40.143.403/0001-04'))

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('COMPRA','LANCAMENTOS','ENTRADAS','MEIA_NOTA','HABILITAR NOTA PARCIAL','SIM','SIM;NAO','S')

^

update configuracao set valor = 'NAO'
where (campo = 'MEIA_NOTA') and (cod_tela = 'COMPRA')
and exists (select codigo from empresa where (nivel = 20) or (nivel = 139) or (nivel = 154))

^

CREATE OR ALTER procedure P_MOVTO (
    OPERACAO integer,
    CODIGO integer,
    FLG_CODMOV integer,
    DATA date,
    NOTA_FISCAL integer,
    SERIE integer,
    CUPOM_FISCAL integer,
    NRO_ECF integer,
    DATA_SAIDA date,
    COD_CLI integer,
    COD_FOR integer,
    COD_FUNC integer,
    COD_TRIB integer,
    COD_END_CLI integer,
    VLR_DESC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_FRETE numeric(15,2),
    PORC_FRETE numeric(15,3),
    VLR_TOTAL numeric(15,2),
    TOTAL_NF numeric(15,2),
    TIPO_RECEB integer,
    OBSERV1 varchar(400),
    OBSERV2 varchar(100),
    OBSERV3 varchar(100),
    TRANS_NOME varchar(60),
    TRANS_END varchar(60),
    TRANS_CIDADE varchar(60),
    TRANS_CIDADEUF varchar(2),
    TRANS_PLACA varchar(10),
    TRANS_PLACAUF varchar(2),
    TRANS_FRETE integer,
    TRANS_CNPJ_CPF varchar(20),
    TRANS_IE_RG varchar(20),
    CODREC_DEVOLUCAO integer,
    COD_CAIXA integer,
    FLG_CANCEL char(1),
    MOTIVO_CANCEL varchar(60),
    NF_DATA date,
    NF_DATA_SAIDA date,
    NF_HORA time,
    NF_CPF varchar(20),
    PLACA varchar(10),
    DATA_ENTREGA date,
    FLG_ABERTO char(1),
    VLR_DINH numeric(15,2),
    VLR_CHVISTA numeric(15,2),
    VLR_CHPRE numeric(15,2),
    VLR_CARTAO numeric(15,2),
    NFE_NRO integer,
    NFE_STATUS varchar(60),
    NFE_CAMINHO varchar(60),
    NFE_CHAVE varchar(60),
    NFE_OBSERV varchar(60),
    VLR_DEBITO numeric(15,2),
    VLR_PRAZO numeric(15,2),
    VLR_OUTROS numeric(15,2),
    COD_EMPRESA integer,
    NOME_VEICULO varchar(400),
    VOL_QUANT varchar(20),
    VOL_ESPECIE varchar(20),
    VOL_MARCA varchar(20),
    VOL_NRO varchar(20),
    VOL_BRUTO varchar(20),
    VOL_LIQUIDO varchar(20),
    NFE_REF1 varchar(60),
    NFE_REF2 varchar(60),
    NFE_REF3 varchar(60),
    COD_MAO_OBRA integer,
    SAT_NRO integer,
    SAT_STATUS varchar(20),
    SAT_CAMINHO varchar(60),
    SAT_CHAVE varchar(60),
    DT_COMISSAO date,
    NF_NOME varchar(60),
    COD_CONVENIO integer,
    COD_MESA integer,
    COD_PARCELA integer,
    FLG_PRECO char(1),
    LOCAL_DESEMB varchar(200),
    UF_DESEMB varchar(2),
    NRO_DI varchar(20),
    DT_DI date,
    COD_EXPORT integer,
    COD_FABRIC integer,
    TP_TRANS integer,
    NFE_REF4 varchar(60),
    VLR_IMPORT numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    FLG_PROCEDE char(1),
    ROMANEIO_NRO integer,
    ROMANEIO_DATA date,
    TOKEN varchar(256),
    CODMARKET integer)
as
begin
if (operacao = 1) then
insert into MOVTO (CODIGO,FLG_CODMOV,DATA,NOTA_FISCAL,SERIE,CUPOM_FISCAL,NRO_ECF,DATA_SAIDA,COD_CLI,COD_FOR,COD_FUNC,COD_TRIB,COD_END_CLI,VLR_DESC,VLR_ACRES,VLR_FRETE,PORC_FRETE,
VLR_TOTAL,TOTAL_NF,TIPO_RECEB,OBSERV1,OBSERV2,OBSERV3,TRANS_NOME,TRANS_END,TRANS_CIDADE,TRANS_CIDADEUF,TRANS_PLACA,TRANS_PLACAUF,TRANS_FRETE,TRANS_CNPJ_CPF,TRANS_IE_RG,CODREC_DEVOLUCAO,
COD_CAIXA,FLG_CANCEL,MOTIVO_CANCEL,NF_DATA,NF_DATA_SAIDA,NF_HORA,NF_CPF,PLACA,DATA_ENTREGA,FLG_ABERTO,VLR_DINH,VLR_CHVISTA,VLR_CHPRE,VLR_CARTAO,NFE_NRO,NFE_STATUS,NFE_CAMINHO,
NFE_CHAVE,NFE_OBSERV,VLR_DEBITO,VLR_PRAZO,VLR_OUTROS,COD_EMPRESA,NOME_VEICULO,VOL_QUANT,VOL_ESPECIE,VOL_MARCA,VOL_NRO,VOL_BRUTO,VOL_LIQUIDO,NFE_REF1,NFE_REF2,NFE_REF3,COD_MAO_OBRA,SAT_NRO,SAT_STATUS,SAT_CAMINHO,SAT_CHAVE,
DT_COMISSAO,NF_NOME,COD_CONVENIO,COD_MESA,COD_PARCELA,FLG_PRECO,LOCAL_DESEMB,UF_DESEMB,NRO_DI,DT_DI,COD_EXPORT,COD_FABRIC,TP_TRANS,NFE_REF4,VLR_IMPORT,OBS_ADICIONAL,FLG_PROCEDE,ROMANEIO_NRO,ROMANEIO_DATA,TOKEN, CODMARKET)
values (:CODIGO,:FLG_CODMOV,:DATA,:NOTA_FISCAL,:SERIE,:CUPOM_FISCAL,:NRO_ECF,:DATA_SAIDA,:COD_CLI,:COD_FOR,:COD_FUNC,:COD_TRIB,:COD_END_CLI,:VLR_DESC,:VLR_ACRES,:VLR_FRETE,
:PORC_FRETE,:VLR_TOTAL,:TOTAL_NF,:TIPO_RECEB,:OBSERV1,:OBSERV2,:OBSERV3,:TRANS_NOME,:TRANS_END,:TRANS_CIDADE,:TRANS_CIDADEUF,:TRANS_PLACA,:TRANS_PLACAUF,:TRANS_FRETE,
:TRANS_CNPJ_CPF,:TRANS_IE_RG,:CODREC_DEVOLUCAO,:COD_CAIXA,:FLG_CANCEL,:MOTIVO_CANCEL,:NF_DATA,:NF_DATA_SAIDA,:NF_HORA,:NF_CPF,:PLACA,:DATA_ENTREGA,:FLG_ABERTO,
:VLR_DINH,:VLR_CHVISTA,:VLR_CHPRE,:VLR_CARTAO,:NFE_NRO,:NFE_STATUS,:NFE_CAMINHO,:NFE_CHAVE,:NFE_OBSERV,:VLR_DEBITO,:VLR_PRAZO,:VLR_OUTROS,:COD_EMPRESA,:NOME_VEICULO,
:VOL_QUANT,:VOL_ESPECIE,:VOL_MARCA,:VOL_NRO,:VOL_BRUTO,:VOL_LIQUIDO,:NFE_REF1,:NFE_REF2,:NFE_REF3,:COD_MAO_OBRA,:SAT_NRO,:SAT_STATUS,:SAT_CAMINHO,:SAT_CHAVE,:DT_COMISSAO,:NF_NOME,:COD_CONVENIO,:COD_MESA,:COD_PARCELA,:FLG_PRECO, 
:LOCAL_DESEMB,:UF_DESEMB,:NRO_DI,:DT_DI,:COD_EXPORT,:COD_FABRIC,:TP_TRANS,:NFE_REF4,:VLR_IMPORT,:OBS_ADICIONAL,:FLG_PROCEDE,:ROMANEIO_NRO,:ROMANEIO_DATA,:TOKEN,:CODMARKET);
if (operacao = 2) then 
update MOVTO set 
FLG_CODMOV = :FLG_CODMOV,
DATA = :DATA, 
NOTA_FISCAL = :NOTA_FISCAL,
SERIE = :SERIE,
CUPOM_FISCAL = :CUPOM_FISCAL, 
NRO_ECF = :NRO_ECF, 
DATA_SAIDA = :DATA_SAIDA,
COD_CLI = :COD_CLI, 
COD_FOR = :COD_FOR,
COD_FUNC = :COD_FUNC,
COD_TRIB = :COD_TRIB,
COD_END_CLI = :COD_END_CLI,
VLR_DESC = :VLR_DESC,
VLR_ACRES = :VLR_ACRES,
VLR_FRETE = :VLR_FRETE,
PORC_FRETE = :PORC_FRETE,
VLR_TOTAL = :VLR_TOTAL,
TOTAL_NF = :TOTAL_NF,
TIPO_RECEB = :TIPO_RECEB,
OBSERV1 = :OBSERV1,
OBSERV2 = :OBSERV2,
OBSERV3 = :OBSERV3,
TRANS_NOME = :TRANS_NOME,
TRANS_END = :TRANS_END,
TRANS_CIDADE = :TRANS_CIDADE,
TRANS_CIDADEUF = :TRANS_CIDADEUF,
TRANS_PLACA = :TRANS_PLACA,
TRANS_PLACAUF = :TRANS_PLACAUF,
TRANS_FRETE = :TRANS_FRETE,
TRANS_CNPJ_CPF = :TRANS_CNPJ_CPF,
TRANS_IE_RG = :TRANS_IE_RG,
CODREC_DEVOLUCAO = :CODREC_DEVOLUCAO,
COD_CAIXA = :COD_CAIXA,
FLG_CANCEL = :FLG_CANCEL,
MOTIVO_CANCEL = :MOTIVO_CANCEL,
NF_DATA = :NF_DATA,
NF_DATA_SAIDA = :NF_DATA_SAIDA,
NF_HORA = :NF_HORA,
NF_CPF = :NF_CPF,
PLACA = :PLACA,
DATA_ENTREGA = :DATA_ENTREGA,
FLG_ABERTO = :FLG_ABERTO,
VLR_DINH = :VLR_DINH,
VLR_CHVISTA = :VLR_CHVISTA,
VLR_CHPRE = :VLR_CHPRE,
VLR_CARTAO = :VLR_CARTAO,
NFE_NRO = :NFE_NRO,
NFE_STATUS = :NFE_STATUS,
NFE_CAMINHO = :NFE_CAMINHO,
NFE_CHAVE = :NFE_CHAVE,
NFE_OBSERV = :NFE_OBSERV,
VLR_DEBITO = :VLR_DEBITO,
VLR_PRAZO = :VLR_PRAZO,
VLR_OUTROS = :VLR_OUTROS,
COD_EMPRESA = :COD_EMPRESA,
NOME_VEICULO = :NOME_VEICULO,
VOL_QUANT = :VOL_QUANT,
VOL_ESPECIE = :VOL_ESPECIE,
VOL_MARCA = :VOL_MARCA,
VOL_NRO = :VOL_NRO,
VOL_BRUTO = :VOL_BRUTO,
VOL_LIQUIDO = :VOL_LIQUIDO,
NFE_REF1 = :NFE_REF1,
NFE_REF2 = :NFE_REF2,
NFE_REF3 = :NFE_REF3,
COD_MAO_OBRA = :COD_MAO_OBRA,
SAT_NRO = :SAT_NRO,
SAT_STATUS = :SAT_STATUS,
SAT_CAMINHO = :SAT_CAMINHO,
SAT_CHAVE = :SAT_CHAVE,
DT_COMISSAO = :DT_COMISSAO,
NF_NOME = :NF_NOME,
COD_CONVENIO = :COD_CONVENIO,
COD_MESA = :COD_MESA,
COD_PARCELA = :COD_PARCELA,
FLG_PRECO = :FLG_PRECO,
LOCAL_DESEMB  = :LOCAL_DESEMB,
UF_DESEMB = :UF_DESEMB, 
NRO_DI = :NRO_DI,
DT_DI = :DT_DI,
COD_EXPORT = :COD_EXPORT,
COD_FABRIC = :COD_FABRIC,
TP_TRANS = :TP_TRANS,
NFE_REF4 = :NFE_REF4,
VLR_IMPORT = :VLR_IMPORT,
OBS_ADICIONAL = :OBS_ADICIONAL,
FLG_PROCEDE = :FLG_PROCEDE,
ROMANEIO_NRO = :ROMANEIO_NRO,
ROMANEIO_DATA = :ROMANEIO_DATA,
TOKEN = :TOKEN,
CODMARKET = :CODMARKET
where (CODIGO = :CODIGO);
if (operacao = 3) then
delete from MOVTO
where (CODIGO = :CODIGO);
suspend;
end

^

    CREATE OR ALTER procedure P_MOVTO (
    OPERACAO integer,
    CODIGO integer,
    FLG_CODMOV integer,
    DATA date,
    NOTA_FISCAL integer,
    SERIE integer,
    CUPOM_FISCAL integer,
    NRO_ECF integer,
    DATA_SAIDA date,
    COD_CLI integer,
    COD_FOR integer,
    COD_FUNC integer,
    COD_TRIB integer,
    COD_END_CLI integer,
    VLR_DESC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_FRETE numeric(15,2),
    PORC_FRETE numeric(15,3),
    VLR_TOTAL numeric(15,2),
    TOTAL_NF numeric(15,2),
    TIPO_RECEB integer,
    OBSERV1 varchar(400),
    OBSERV2 varchar(100),
    OBSERV3 varchar(100),
    TRANS_NOME varchar(60),
    TRANS_END varchar(60),
    TRANS_CIDADE varchar(60),
    TRANS_CIDADEUF varchar(2),
    TRANS_PLACA varchar(10),
    TRANS_PLACAUF varchar(2),
    TRANS_FRETE integer,
    TRANS_CNPJ_CPF varchar(20),
    TRANS_IE_RG varchar(20),
    CODREC_DEVOLUCAO integer,
    COD_CAIXA integer,
    FLG_CANCEL char(1),
    MOTIVO_CANCEL varchar(60),
    NF_DATA date,
    NF_DATA_SAIDA date,
    NF_HORA time,
    NF_CPF varchar(20),
    PLACA varchar(10),
    DATA_ENTREGA date,
    FLG_ABERTO char(1),
    VLR_DINH numeric(15,2),
    VLR_CHVISTA numeric(15,2),
    VLR_CHPRE numeric(15,2),
    VLR_CARTAO numeric(15,2),
    NFE_NRO integer,
    NFE_STATUS varchar(60),
    NFE_CAMINHO varchar(60),
    NFE_CHAVE varchar(60),
    NFE_OBSERV varchar(60),
    VLR_DEBITO numeric(15,2),
    VLR_PRAZO numeric(15,2),
    VLR_OUTROS numeric(15,2),
    COD_EMPRESA integer,
    NOME_VEICULO varchar(400),
    VOL_QUANT varchar(20),
    VOL_ESPECIE varchar(20),
    VOL_MARCA varchar(20),
    VOL_NRO varchar(20),
    VOL_BRUTO varchar(20),
    VOL_LIQUIDO varchar(20),
    NFE_REF1 varchar(60),
    NFE_REF2 varchar(60),
    NFE_REF3 varchar(60),
    COD_MAO_OBRA integer,
    SAT_NRO integer,
    SAT_STATUS varchar(20),
    SAT_CAMINHO varchar(60),
    SAT_CHAVE varchar(60),
    DT_COMISSAO date,
    NF_NOME varchar(60),
    COD_CONVENIO integer,
    COD_MESA integer,
    COD_PARCELA integer,
    FLG_PRECO char(1),
    LOCAL_DESEMB varchar(200),
    UF_DESEMB varchar(2),
    NRO_DI varchar(20),
    DT_DI date,
    COD_EXPORT integer,
    COD_FABRIC integer,
    TP_TRANS integer,
    NFE_REF4 varchar(60),
    VLR_IMPORT numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    FLG_PROCEDE char(1),
    ROMANEIO_NRO integer,
    ROMANEIO_DATA date,
    TOKEN varchar(256),
    CODMARKET integer)
as
begin
if (operacao = 1) then
insert into MOVTO (CODIGO,FLG_CODMOV,DATA,NOTA_FISCAL,SERIE,CUPOM_FISCAL,NRO_ECF,DATA_SAIDA,COD_CLI,COD_FOR,COD_FUNC,COD_TRIB,COD_END_CLI,VLR_DESC,VLR_ACRES,VLR_FRETE,PORC_FRETE,
VLR_TOTAL,TOTAL_NF,TIPO_RECEB,OBSERV1,OBSERV2,OBSERV3,TRANS_NOME,TRANS_END,TRANS_CIDADE,TRANS_CIDADEUF,TRANS_PLACA,TRANS_PLACAUF,TRANS_FRETE,TRANS_CNPJ_CPF,TRANS_IE_RG,CODREC_DEVOLUCAO,
COD_CAIXA,FLG_CANCEL,MOTIVO_CANCEL,NF_DATA,NF_DATA_SAIDA,NF_HORA,NF_CPF,PLACA,DATA_ENTREGA,FLG_ABERTO,VLR_DINH,VLR_CHVISTA,VLR_CHPRE,VLR_CARTAO,NFE_NRO,NFE_STATUS,NFE_CAMINHO,
NFE_CHAVE,NFE_OBSERV,VLR_DEBITO,VLR_PRAZO,VLR_OUTROS,COD_EMPRESA,NOME_VEICULO,VOL_QUANT,VOL_ESPECIE,VOL_MARCA,VOL_NRO,VOL_BRUTO,VOL_LIQUIDO,NFE_REF1,NFE_REF2,NFE_REF3,COD_MAO_OBRA,SAT_NRO,SAT_STATUS,SAT_CAMINHO,SAT_CHAVE,
DT_COMISSAO,NF_NOME,COD_CONVENIO,COD_MESA,COD_PARCELA,FLG_PRECO,LOCAL_DESEMB,UF_DESEMB,NRO_DI,DT_DI,COD_EXPORT,COD_FABRIC,TP_TRANS,NFE_REF4,VLR_IMPORT,OBS_ADICIONAL,FLG_PROCEDE,ROMANEIO_NRO,ROMANEIO_DATA,TOKEN, CODMARKET)
values (:CODIGO,:FLG_CODMOV,:DATA,:NOTA_FISCAL,:SERIE,:CUPOM_FISCAL,:NRO_ECF,:DATA_SAIDA,:COD_CLI,:COD_FOR,:COD_FUNC,:COD_TRIB,:COD_END_CLI,:VLR_DESC,:VLR_ACRES,:VLR_FRETE,
:PORC_FRETE,:VLR_TOTAL,:TOTAL_NF,:TIPO_RECEB,:OBSERV1,:OBSERV2,:OBSERV3,:TRANS_NOME,:TRANS_END,:TRANS_CIDADE,:TRANS_CIDADEUF,:TRANS_PLACA,:TRANS_PLACAUF,:TRANS_FRETE,
:TRANS_CNPJ_CPF,:TRANS_IE_RG,:CODREC_DEVOLUCAO,:COD_CAIXA,:FLG_CANCEL,:MOTIVO_CANCEL,:NF_DATA,:NF_DATA_SAIDA,:NF_HORA,:NF_CPF,:PLACA,:DATA_ENTREGA,:FLG_ABERTO,
:VLR_DINH,:VLR_CHVISTA,:VLR_CHPRE,:VLR_CARTAO,:NFE_NRO,:NFE_STATUS,:NFE_CAMINHO,:NFE_CHAVE,:NFE_OBSERV,:VLR_DEBITO,:VLR_PRAZO,:VLR_OUTROS,:COD_EMPRESA,:NOME_VEICULO,
:VOL_QUANT,:VOL_ESPECIE,:VOL_MARCA,:VOL_NRO,:VOL_BRUTO,:VOL_LIQUIDO,:NFE_REF1,:NFE_REF2,:NFE_REF3,:COD_MAO_OBRA,:SAT_NRO,:SAT_STATUS,:SAT_CAMINHO,:SAT_CHAVE,:DT_COMISSAO,:NF_NOME,:COD_CONVENIO,:COD_MESA,:COD_PARCELA,:FLG_PRECO, 
:LOCAL_DESEMB,:UF_DESEMB,:NRO_DI,:DT_DI,:COD_EXPORT,:COD_FABRIC,:TP_TRANS,:NFE_REF4,:VLR_IMPORT,:OBS_ADICIONAL,:FLG_PROCEDE,:ROMANEIO_NRO,:ROMANEIO_DATA,:TOKEN,:CODMARKET);
if (operacao = 2) then 
update MOVTO set 
FLG_CODMOV = :FLG_CODMOV,
DATA = :DATA, 
NOTA_FISCAL = :NOTA_FISCAL,
SERIE = :SERIE,
CUPOM_FISCAL = :CUPOM_FISCAL, 
NRO_ECF = :NRO_ECF, 
DATA_SAIDA = :DATA_SAIDA,
COD_CLI = :COD_CLI, 
COD_FOR = :COD_FOR,
COD_FUNC = :COD_FUNC,
COD_TRIB = :COD_TRIB,
COD_END_CLI = :COD_END_CLI,
VLR_DESC = :VLR_DESC,
VLR_ACRES = :VLR_ACRES,
VLR_FRETE = :VLR_FRETE,
PORC_FRETE = :PORC_FRETE,
VLR_TOTAL = :VLR_TOTAL,
TOTAL_NF = :TOTAL_NF,
TIPO_RECEB = :TIPO_RECEB,
OBSERV1 = :OBSERV1,
OBSERV2 = :OBSERV2,
OBSERV3 = :OBSERV3,
TRANS_NOME = :TRANS_NOME,
TRANS_END = :TRANS_END,
TRANS_CIDADE = :TRANS_CIDADE,
TRANS_CIDADEUF = :TRANS_CIDADEUF,
TRANS_PLACA = :TRANS_PLACA,
TRANS_PLACAUF = :TRANS_PLACAUF,
TRANS_FRETE = :TRANS_FRETE,
TRANS_CNPJ_CPF = :TRANS_CNPJ_CPF,
TRANS_IE_RG = :TRANS_IE_RG,
CODREC_DEVOLUCAO = :CODREC_DEVOLUCAO,
COD_CAIXA = :COD_CAIXA,
FLG_CANCEL = :FLG_CANCEL,
MOTIVO_CANCEL = :MOTIVO_CANCEL,
NF_DATA = :NF_DATA,
NF_DATA_SAIDA = :NF_DATA_SAIDA,
NF_HORA = :NF_HORA,
NF_CPF = :NF_CPF,
PLACA = :PLACA,
DATA_ENTREGA = :DATA_ENTREGA,
FLG_ABERTO = :FLG_ABERTO,
VLR_DINH = :VLR_DINH,
VLR_CHVISTA = :VLR_CHVISTA,
VLR_CHPRE = :VLR_CHPRE,
VLR_CARTAO = :VLR_CARTAO,
NFE_NRO = :NFE_NRO,
NFE_STATUS = :NFE_STATUS,
NFE_CAMINHO = :NFE_CAMINHO,
NFE_CHAVE = :NFE_CHAVE,
NFE_OBSERV = :NFE_OBSERV,
VLR_DEBITO = :VLR_DEBITO,
VLR_PRAZO = :VLR_PRAZO,
VLR_OUTROS = :VLR_OUTROS,
COD_EMPRESA = :COD_EMPRESA,
NOME_VEICULO = :NOME_VEICULO,
VOL_QUANT = :VOL_QUANT,
VOL_ESPECIE = :VOL_ESPECIE,
VOL_MARCA = :VOL_MARCA,
VOL_NRO = :VOL_NRO,
VOL_BRUTO = :VOL_BRUTO,
VOL_LIQUIDO = :VOL_LIQUIDO,
NFE_REF1 = :NFE_REF1,
NFE_REF2 = :NFE_REF2,
NFE_REF3 = :NFE_REF3,
COD_MAO_OBRA = :COD_MAO_OBRA,
SAT_NRO = :SAT_NRO,
SAT_STATUS = :SAT_STATUS,
SAT_CAMINHO = :SAT_CAMINHO,
SAT_CHAVE = :SAT_CHAVE,
DT_COMISSAO = :DT_COMISSAO,
NF_NOME = :NF_NOME,
COD_CONVENIO = :COD_CONVENIO,
COD_MESA = :COD_MESA,
COD_PARCELA = :COD_PARCELA,
FLG_PRECO = :FLG_PRECO,
LOCAL_DESEMB  = :LOCAL_DESEMB,
UF_DESEMB = :UF_DESEMB, 
NRO_DI = :NRO_DI,
DT_DI = :DT_DI,
COD_EXPORT = :COD_EXPORT,
COD_FABRIC = :COD_FABRIC,
TP_TRANS = :TP_TRANS,
NFE_REF4 = :NFE_REF4,
VLR_IMPORT = :VLR_IMPORT,
OBS_ADICIONAL = :OBS_ADICIONAL,
FLG_PROCEDE = :FLG_PROCEDE,
ROMANEIO_NRO = :ROMANEIO_NRO,
ROMANEIO_DATA = :ROMANEIO_DATA,
TOKEN = :TOKEN,
CODMARKET = :CODMARKET
where (CODIGO = :CODIGO);
if (operacao = 3) then
delete from MOVTO
where (CODIGO = :CODIGO);
suspend;
end
^

ALTER TABLE CONTABILISTA
  ADD COD_EMPRESA integer

^

ALTER TABLE CONTABILISTA
  ADD CONSTRAINT fk_COD_EMPRESA FOREIGN KEY (COD_EMPRESA)
  REFERENCES EMPRESA (CODIGO)

^

ALTER TABLE CONTABILISTA
  ADD FLG_ATIVO char(1)

^

UPDATE CONTABILISTA SET FLG_ATIVO = 'S'

^

CREATE OR ALTER procedure P_CONTABILISTA (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    CPF varchar(20),
    CRC varchar(20),
    CNPJ varchar(20),
    ENDERECO varchar(60),
    NRO_END integer,
    BAIRRO varchar(60),
    COD_CIDADE integer,
    CEP varchar(10),
    TELEFONE varchar(20),
    CELULAR varchar(20),
    E_MAIL varchar(60),
    OBSERVACAO varchar(100),
    E_MAIL2 varchar(60),
    E_MAIL3 varchar(60),
    E_MAIL4 varchar(60),
    COD_EMPRESA integer,
    FLG_ATIVO char(1))
as
begin
  if (operacao = 1) then
     insert into CONTABILISTA (CODIGO,NOME,CPF,CRC,CNPJ,ENDERECO,NRO_END,BAIRRO,COD_CIDADE,CEP,TELEFONE,CELULAR,E_MAIL,OBSERVACAO,E_MAIL2,E_MAIL3,E_MAIL4,COD_EMPRESA,FLG_ATIVO)
     values (:CODIGO,:NOME,:CPF,:CRC,:CNPJ,:ENDERECO,:NRO_END,:BAIRRO,:COD_CIDADE,:CEP,:TELEFONE,:CELULAR,:E_MAIL,:OBSERVACAO,:E_MAIL2,:E_MAIL3,:E_MAIL4, :COD_EMPRESA, :FLG_ATIVO);

  if (operacao = 2) then
     update CONTABILISTA set
     NOME = :NOME,
     CPF = :CPF,
     CRC = :CRC,
     CNPJ = :CNPJ,
     ENDERECO = :ENDERECO,
     NRO_END = :NRO_END,
     BAIRRO = :BAIRRO,
     COD_CIDADE = :COD_CIDADE,
     CEP = :CEP,
     TELEFONE = :TELEFONE,
     CELULAR = :CELULAR,
     E_MAIL = :E_MAIL,
     OBSERVACAO = :OBSERVACAO,
     E_MAIL2 = :E_MAIL2,
     E_MAIL3 = :E_MAIL3,
     E_MAIL4 = :E_MAIL4,
     COD_EMPRESA = :COD_EMPRESA,
     FLG_ATIVO = :FLG_ATIVO
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from CONTABILISTA
     where (CODIGO = :CODIGO);

  suspend;
end

^

update contabilista set FLG_ATIVO = 'S'

^

update RDB$RELATION_FIELDS set
RDB$NULL_FLAG = NULL
where (RDB$FIELD_NAME = 'COD_EMPRESA') and
(RDB$RELATION_NAME = 'CONTABILISTA')

^

update RDB$RELATION_FIELDS set
RDB$NULL_FLAG = 1
where (RDB$FIELD_NAME = 'FLG_ATIVO') and
(RDB$RELATION_NAME = 'CONTABILISTA')

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','VENDAS','SAIDAS','DIAS_ABERTO','BLOQUEAR VENDA DE CLIENTE COM MAIS DE (X) DIAS EM ABERTO','999999','','N')

^

update configuracao set valor = '90'
where (campo = 'DIAS_ABERTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (nivel = 8))

^

update configuracao set valor = '10'
where (campo = 'DIAS_ABERTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (nivel = 136))

^

update configuracao set valor = '30'
where (campo = 'DIAS_ABERTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (nivel = 129))


^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','RELATORIO DE VENDA','SAIDAS','DRE_CMV','CALCULAR CMV','NAO','SIM;NAO','N')

^

update configuracao set valor = 'SIM'
where (campo = 'DRE_CMV') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where ((nivel = 58) or (nivel = 89) or cnpj = ('06.000.808/0001-55') or cnpj = ('41.390.901/0001-14')))

^

CREATE TABLE MIT_CONSUMO (
    CODIGO      INTEGER NOT NULL,
    COD_PROD    INTEGER NOT NULL,
    COD_FOR     INTEGER NOT NULL,
    COD_FUNC    INTEGER NOT NULL,
    FLG_E_S     CHAR(1) NOT NULL,
    DATA        DATE NOT NULL,
    DOCUMENTO   INTEGER,
    QUANT       NUMERIC(15,3) NOT NULL,
    VLR_UNIT    NUMERIC(15,3) NOT NULL,
    VLR_TOTAL   NUMERIC(15,2) NOT NULL,
    OBSERVACAO  VARCHAR(100)
);

^

ALTER TABLE MIT_CONSUMO ADD CONSTRAINT PK_MIT_CONSUMO PRIMARY KEY (CODIGO);

^

ALTER TABLE MIT_CONSUMO ADD CONSTRAINT FK_MIT_CONSUMO_1 FOREIGN KEY (COD_PROD) REFERENCES PRODUTO (CODIGO);

^

ALTER TABLE MIT_CONSUMO ADD CONSTRAINT FK_MIT_CONSUMO_2 FOREIGN KEY (COD_FOR) REFERENCES FORNECEDOR (CODIGO);

^

ALTER TABLE MIT_CONSUMO ADD CONSTRAINT FK_MIT_CONSUMO_3 FOREIGN KEY (COD_FUNC) REFERENCES FUNCIONARIO (CODIGO);

^

CREATE OR ALTER TRIGGER TRG_MIT_CONSUMO FOR MIT_CONSUMO
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable cod integer;
begin
  select max(CODIGO) from MIT_CONSUMO into :cod;
  if (cod is null) then cod = 0;
  new.codigo = cod + 1;
end

^

create or alter procedure P_MIT_CONSUMO (
    OPERACAO integer,
    CODIGO integer,
    COD_PROD integer,
    COD_FOR integer,
    COD_FUNC integer,
    FLG_E_S char(1),
    DATA date,
    DOCUMENTO integer,
    QUANT numeric(15,3),
    VLR_UNIT numeric(15,3),
    VLR_TOTAL numeric(15,2),
    OBSERVACAO varchar(100))
as
begin
  if (operacao = 1) then
     insert into MIT_CONSUMO (CODIGO,COD_PROD,COD_FOR,COD_FUNC,FLG_E_S,DATA,DOCUMENTO,QUANT,VLR_UNIT,VLR_TOTAL,OBSERVACAO)
     values (:CODIGO,:COD_PROD,:COD_FOR,:COD_FUNC,:FLG_E_S,:DATA,:DOCUMENTO,:QUANT,:VLR_UNIT,:VLR_TOTAL,:OBSERVACAO);

  if (operacao = 2) then
     update MIT_CONSUMO set
     COD_PROD = :COD_PROD,
     COD_FOR = :COD_FOR,
     COD_FUNC = :COD_FUNC,
     FLG_E_S = :FLG_E_S,
     DATA = :DATA,
     DOCUMENTO = :DOCUMENTO,
     QUANT = :QUANT,
     VLR_UNIT = :VLR_UNIT,
     VLR_TOTAL = :VLR_TOTAL,
     OBSERVACAO = :OBSERVACAO
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from MIT_CONSUMO
     where (CODIGO = :CODIGO);

  suspend;
end;

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0026','FECHAMENTO DE CAIXA','CAIXA','FLG_CEGAS','FUNCIONARIO QUE FECHA CAIXA AS CEGAS','9','1;2;3;4;5;6;7;8;9','N')

^

update RDB$FIELDS set
RDB$FIELD_TYPE = 37,
RDB$FIELD_LENGTH = 20,
RDB$CHARACTER_LENGTH = 20,
RDB$CHARACTER_SET_ID = 0,
RDB$COLLATION_ID = 0
where RDB$FIELD_NAME = 'RDB$2299'

^

create or alter procedure P_RECEBER (
    OPERACAO integer,
    CODIGO integer,
    PARCELA integer,
    CODMOV integer,
    COD_CLI integer,
    DT_VENDA date,
    DT_VENCTO date,
    VLR_PARC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_DESC numeric(15,2),
    SALDO numeric(15,2),
    CRED_DEB char(10),
    HISTORICO varchar(100),
    CUPOM_FISCAL integer,
    DOCUMENTO varchar(20),
    SERIE varchar(3),
    COD_CAIXA integer,
    CB_NOSSO_NRO varchar(20),
    CB_DOC_NRO integer,
    FLG_BOLETO_DESC char(1),
    FLG_PERDIDO char(1),
    OBS_COBRANCA varchar(400),
    COD_EMPRESA integer,
    DT_BOLETO date,
    FLG_REMESSA char(1),
    BCO_BOLETO_DESC integer,
    BCO_BOLETO integer,
    COD_REPARCELA integer)
as
begin  
if (operacao = 1) then 
INSERT INTO RECEBER (CODIGO,PARCELA,CODMOV,COD_CLI,DT_VENDA,DT_VENCTO,VLR_PARC,VLR_ACRES,VLR_DESC,SALDO,CRED_DEB,HISTORICO,CUPOM_FISCAL,DOCUMENTO,SERIE,COD_CAIXA,CB_NOSSO_NRO,CB_DOC_NRO,
FLG_BOLETO_DESC,FLG_PERDIDO,OBS_COBRANCA,COD_EMPRESA,DT_BOLETO,FLG_REMESSA,BCO_BOLETO_DESC,BCO_BOLETO,COD_REPARCELA)
VALUES (:CODIGO,:PARCELA,:CODMOV,:COD_CLI,:DT_VENDA,:DT_VENCTO,:VLR_PARC,:VLR_ACRES,:VLR_DESC,:SALDO,:CRED_DEB,:HISTORICO,:CUPOM_FISCAL,:DOCUMENTO,:SERIE,:COD_CAIXA,:CB_NOSSO_NRO, 
:CB_DOC_NRO,:FLG_BOLETO_DESC,:FLG_PERDIDO,:OBS_COBRANCA,:COD_EMPRESA,:DT_BOLETO,:FLG_REMESSA,:BCO_BOLETO_DESC,:BCO_BOLETO,:COD_REPARCELA); 
if (operacao = 2) then 
UPDATE RECEBER SET 
PARCELA = :PARCELA, 
CODMOV = :CODMOV, 
COD_CLI = :COD_CLI, 
DT_VENDA = :DT_VENDA, 
DT_VENCTO = :DT_VENCTO, 
VLR_PARC = :VLR_PARC, 
VLR_ACRES = :VLR_ACRES, 
VLR_DESC = :VLR_DESC, 
SALDO = :SALDO, 
CRED_DEB = :CRED_DEB, 
HISTORICO = :HISTORICO, 
CUPOM_FISCAL = :CUPOM_FISCAL, 
DOCUMENTO = :DOCUMENTO,
SERIE = :SERIE, 
COD_CAIXA = :COD_CAIXA, 
CB_NOSSO_NRO = :CB_NOSSO_NRO, 
CB_DOC_NRO = :CB_DOC_NRO, 
FLG_BOLETO_DESC = :FLG_BOLETO_DESC, 
FLG_PERDIDO = :FLG_PERDIDO, 
OBS_COBRANCA = :OBS_COBRANCA, 
COD_EMPRESA = :COD_EMPRESA, 
DT_BOLETO = :DT_BOLETO, 
FLG_REMESSA = : FLG_REMESSA, 
BCO_BOLETO_DESC = :BCO_BOLETO_DESC, 
BCO_BOLETO = :BCO_BOLETO, 
COD_REPARCELA = :COD_REPARCELA
WHERE (CODIGO = :CODIGO); 
if (operacao = 3) then 
delete from RECEBER 
where (CODIGO = :CODIGO); 
suspend; 
end

^

ALTER TABLE END_CLI
ADD NRO_END VARCHAR(30)

^

create or alter procedure P_END_CLI (
    OPERACAO integer,
    CODIGO integer,
    COD_CLI integer,
    ENDERECO varchar(60),
    BAIRRO varchar(60),
    CEP varchar(10),
    COD_CID integer,
    FLG_PADRAO char(1),
    OBSERVACAO varchar(100),
    NRO_END varchar(30))
as
begin
  if (operacao = 1) then
     insert into END_CLI (CODIGO, COD_CLI, ENDERECO, BAIRRO, CEP, COD_CID, FLG_PADRAO, OBSERVACAO, NRO_END)
     values (:CODIGO, :COD_CLI, :ENDERECO, :BAIRRO, :CEP, :COD_CID, :FLG_PADRAO, :OBSERVACAO, :NRO_END);

  if (operacao = 2) then
     update END_CLI set
     COD_CLI = :COD_CLI,
     ENDERECO = :ENDERECO,
     BAIRRO = :BAIRRO,
     CEP = :CEP,
     COD_CID = :COD_CID,
     FLG_PADRAO = :FLG_PADRAO,
     OBSERVACAO = :OBSERVACAO,
     NRO_END = :NRO_END
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from END_CLI
     where (CODIGO = :CODIGO);

  suspend;
end

^
NOVA VERS O ALTER TABLE '1.0.1.0'
^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','RELATORIO DE VENDA','SAIDAS','FLG_DRE_REC','FILTRO A SER USADO NAS RECEITAS','VENDA','VENDA;FINANCEIRO','N')

^

update configuracao set campo = 'FLG_DRE_DESP', descricao = 'FILTRO A SER USADO NAS DESPESAS' where campo = 'FLG_DRE'

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','VENDAS','SAIDAS','DESCONTO','PEDIR SENHA CASO DESCONTO FOR MAIOR QUE','999999','','N')

^

update configuracao set valor = '999999'
where (campo = 'DESCONTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where ((nivel = 13) or (nivel = 21) or (nivel = 50) or
(nivel = 76) or (nivel = 91) or (nivel = 139) or (nivel = 34) or (nivel = 2) or (nivel = 23)
or (nivel = 25) or (nivel = 30)
or (nivel = 141) or (nivel = 156) or (nivel = 5) or (nivel = 10) or (nivel = 1) or (nivel = 90) or
cnpj = ('09.539.654/0001-62') or cnpj = ('43.877.063/0001-33')))

^

update configuracao set valor = '2'
where (campo = 'DESCONTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where ((nivel = 89)))                 

^

update configuracao set valor = '07'
where (campo = 'DESCONTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (cnpj =('08.665.560/0001-77'))) 

^

update configuracao set valor = '05'
where (campo = 'DESCONTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (cnpj =('15.490.269/0001-70')))  

^

update configuracao set valor = '10'
where (campo = 'DESCONTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where ((nivel = 54) or (nivel = 4) or cnpj =('08.280.511/0001-16')))

^

update configuracao set valor = '15'
where (campo = 'DESCONTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where ((nivel = 25)))                  

^

update configuracao set valor = '12'
where (campo = 'DESCONTO') and (cod_tela = 'VENDA')
and exists (select codigo from empresa where (cnpj =('12.921.232/0001-61')))  

^

ALTER TABLE MOVTO
ADD VLR_PIX NUMERIC(15,2)

^

ALTER TABLE MOVTO
ADD NFE_DADOS BLOB SUB_TYPE 0 SEGMENT SIZE 4096

^

CREATE OR ALTER procedure P_MOVTO (
    OPERACAO integer,
    CODIGO integer,
    FLG_CODMOV integer,
    DATA date,
    NOTA_FISCAL integer,
    SERIE integer,
    CUPOM_FISCAL integer,
    NRO_ECF integer,
    DATA_SAIDA date,
    COD_CLI integer,
    COD_FOR integer,
    COD_FUNC integer,
    COD_TRIB integer,
    COD_END_CLI integer,
    VLR_DESC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_FRETE numeric(15,2),
    PORC_FRETE numeric(15,3),
    VLR_TOTAL numeric(15,2),
    TOTAL_NF numeric(15,2),
    TIPO_RECEB integer,
    OBSERV1 varchar(400),
    OBSERV2 varchar(100),
    OBSERV3 varchar(100),
    TRANS_NOME varchar(60),
    TRANS_END varchar(60),
    TRANS_CIDADE varchar(60),
    TRANS_CIDADEUF varchar(2),
    TRANS_PLACA varchar(10),
    TRANS_PLACAUF varchar(2),
    TRANS_FRETE integer,
    TRANS_CNPJ_CPF varchar(20),
    TRANS_IE_RG varchar(20),
    CODREC_DEVOLUCAO integer,
    COD_CAIXA integer,
    FLG_CANCEL char(1),
    MOTIVO_CANCEL varchar(60),
    NF_DATA date,
    NF_DATA_SAIDA date,
    NF_HORA time,
    NF_CPF varchar(20),
    PLACA varchar(10),
    DATA_ENTREGA date,
    FLG_ABERTO char(1),
    VLR_DINH numeric(15,2),
    VLR_CHVISTA numeric(15,2),
    VLR_CHPRE numeric(15,2),
    VLR_CARTAO numeric(15,2),
    NFE_NRO integer,
    NFE_STATUS varchar(60),
    NFE_CAMINHO varchar(60),
    NFE_CHAVE varchar(60),
    NFE_OBSERV varchar(60),
    VLR_DEBITO numeric(15,2),
    VLR_PRAZO numeric(15,2),
    VLR_OUTROS numeric(15,2),
    COD_EMPRESA integer,
    NOME_VEICULO varchar(400),
    VOL_QUANT varchar(20),
    VOL_ESPECIE varchar(20),
    VOL_MARCA varchar(20),
    VOL_NRO varchar(20),
    VOL_BRUTO varchar(20),
    VOL_LIQUIDO varchar(20),
    NFE_REF1 varchar(60),
    NFE_REF2 varchar(60),
    NFE_REF3 varchar(60),
    COD_MAO_OBRA integer,
    SAT_NRO integer,
    SAT_STATUS varchar(20),
    SAT_CAMINHO varchar(60),
    SAT_CHAVE varchar(60),
    DT_COMISSAO date,
    NF_NOME varchar(60),
    COD_CONVENIO integer,
    COD_MESA integer,
    COD_PARCELA integer,
    FLG_PRECO char(1),
    LOCAL_DESEMB varchar(200),
    UF_DESEMB varchar(2),
    NRO_DI varchar(20),
    DT_DI date,
    COD_EXPORT integer,
    COD_FABRIC integer,
    TP_TRANS integer,
    NFE_REF4 varchar(60),
    VLR_IMPORT numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    FLG_PROCEDE char(1),
    ROMANEIO_NRO integer,
    ROMANEIO_DATA date,
    TOKEN varchar(256),
    CODMARKET integer
    )
as
begin
if (operacao = 1) then
insert into MOVTO (CODIGO,FLG_CODMOV,DATA,NOTA_FISCAL,SERIE,CUPOM_FISCAL,NRO_ECF,DATA_SAIDA,COD_CLI,COD_FOR,COD_FUNC,COD_TRIB,COD_END_CLI,VLR_DESC,VLR_ACRES,VLR_FRETE,PORC_FRETE,
VLR_TOTAL,TOTAL_NF,TIPO_RECEB,OBSERV1,OBSERV2,OBSERV3,TRANS_NOME,TRANS_END,TRANS_CIDADE,TRANS_CIDADEUF,TRANS_PLACA,TRANS_PLACAUF,TRANS_FRETE,TRANS_CNPJ_CPF,TRANS_IE_RG,CODREC_DEVOLUCAO,
COD_CAIXA,FLG_CANCEL,MOTIVO_CANCEL,NF_DATA,NF_DATA_SAIDA,NF_HORA,NF_CPF,PLACA,DATA_ENTREGA,FLG_ABERTO,VLR_DINH,VLR_CHVISTA,VLR_CHPRE,VLR_CARTAO,NFE_NRO,NFE_STATUS,NFE_CAMINHO,
NFE_CHAVE,NFE_OBSERV,VLR_DEBITO,VLR_PRAZO,VLR_OUTROS,COD_EMPRESA,NOME_VEICULO,VOL_QUANT,VOL_ESPECIE,VOL_MARCA,VOL_NRO,VOL_BRUTO,VOL_LIQUIDO,NFE_REF1,NFE_REF2,NFE_REF3,COD_MAO_OBRA,SAT_NRO,SAT_STATUS,SAT_CAMINHO,SAT_CHAVE,
DT_COMISSAO,NF_NOME,COD_CONVENIO,COD_MESA,COD_PARCELA,FLG_PRECO,LOCAL_DESEMB,UF_DESEMB,NRO_DI,DT_DI,COD_EXPORT,COD_FABRIC,TP_TRANS,NFE_REF4,VLR_IMPORT,OBS_ADICIONAL,FLG_PROCEDE,ROMANEIO_NRO,ROMANEIO_DATA,TOKEN, CODMARKET)
values (:CODIGO,:FLG_CODMOV,:DATA,:NOTA_FISCAL,:SERIE,:CUPOM_FISCAL,:NRO_ECF,:DATA_SAIDA,:COD_CLI,:COD_FOR,:COD_FUNC,:COD_TRIB,:COD_END_CLI,:VLR_DESC,:VLR_ACRES,:VLR_FRETE,
:PORC_FRETE,:VLR_TOTAL,:TOTAL_NF,:TIPO_RECEB,:OBSERV1,:OBSERV2,:OBSERV3,:TRANS_NOME,:TRANS_END,:TRANS_CIDADE,:TRANS_CIDADEUF,:TRANS_PLACA,:TRANS_PLACAUF,:TRANS_FRETE,
:TRANS_CNPJ_CPF,:TRANS_IE_RG,:CODREC_DEVOLUCAO,:COD_CAIXA,:FLG_CANCEL,:MOTIVO_CANCEL,:NF_DATA,:NF_DATA_SAIDA,:NF_HORA,:NF_CPF,:PLACA,:DATA_ENTREGA,:FLG_ABERTO,
:VLR_DINH,:VLR_CHVISTA,:VLR_CHPRE,:VLR_CARTAO,:NFE_NRO,:NFE_STATUS,:NFE_CAMINHO,:NFE_CHAVE,:NFE_OBSERV,:VLR_DEBITO,:VLR_PRAZO,:VLR_OUTROS,:COD_EMPRESA,:NOME_VEICULO,
:VOL_QUANT,:VOL_ESPECIE,:VOL_MARCA,:VOL_NRO,:VOL_BRUTO,:VOL_LIQUIDO,:NFE_REF1,:NFE_REF2,:NFE_REF3,:COD_MAO_OBRA,:SAT_NRO,:SAT_STATUS,:SAT_CAMINHO,:SAT_CHAVE,:DT_COMISSAO,:NF_NOME,:COD_CONVENIO,:COD_MESA,:COD_PARCELA,:FLG_PRECO, 
:LOCAL_DESEMB,:UF_DESEMB,:NRO_DI,:DT_DI,:COD_EXPORT,:COD_FABRIC,:TP_TRANS,:NFE_REF4,:VLR_IMPORT,:OBS_ADICIONAL,:FLG_PROCEDE,:ROMANEIO_NRO,:ROMANEIO_DATA,:TOKEN,:CODMARKET);
if (operacao = 2) then 
update MOVTO set 
FLG_CODMOV = :FLG_CODMOV,
DATA = :DATA, 
NOTA_FISCAL = :NOTA_FISCAL,
SERIE = :SERIE,
CUPOM_FISCAL = :CUPOM_FISCAL, 
NRO_ECF = :NRO_ECF, 
DATA_SAIDA = :DATA_SAIDA,
COD_CLI = :COD_CLI, 
COD_FOR = :COD_FOR,
COD_FUNC = :COD_FUNC,
COD_TRIB = :COD_TRIB,
COD_END_CLI = :COD_END_CLI,
VLR_DESC = :VLR_DESC,
VLR_ACRES = :VLR_ACRES,
VLR_FRETE = :VLR_FRETE,
PORC_FRETE = :PORC_FRETE,
VLR_TOTAL = :VLR_TOTAL,
TOTAL_NF = :TOTAL_NF,
TIPO_RECEB = :TIPO_RECEB,
OBSERV1 = :OBSERV1,
OBSERV2 = :OBSERV2,
OBSERV3 = :OBSERV3,
TRANS_NOME = :TRANS_NOME,
TRANS_END = :TRANS_END,
TRANS_CIDADE = :TRANS_CIDADE,
TRANS_CIDADEUF = :TRANS_CIDADEUF,
TRANS_PLACA = :TRANS_PLACA,
TRANS_PLACAUF = :TRANS_PLACAUF,
TRANS_FRETE = :TRANS_FRETE,
TRANS_CNPJ_CPF = :TRANS_CNPJ_CPF,
TRANS_IE_RG = :TRANS_IE_RG,
CODREC_DEVOLUCAO = :CODREC_DEVOLUCAO,
COD_CAIXA = :COD_CAIXA,
FLG_CANCEL = :FLG_CANCEL,
MOTIVO_CANCEL = :MOTIVO_CANCEL,
NF_DATA = :NF_DATA,
NF_DATA_SAIDA = :NF_DATA_SAIDA,
NF_HORA = :NF_HORA,
NF_CPF = :NF_CPF,
PLACA = :PLACA,
DATA_ENTREGA = :DATA_ENTREGA,
FLG_ABERTO = :FLG_ABERTO,
VLR_DINH = :VLR_DINH,
VLR_CHVISTA = :VLR_CHVISTA,
VLR_CHPRE = :VLR_CHPRE,
VLR_CARTAO = :VLR_CARTAO,
NFE_NRO = :NFE_NRO,
NFE_STATUS = :NFE_STATUS,
NFE_CAMINHO = :NFE_CAMINHO,
NFE_CHAVE = :NFE_CHAVE,
NFE_OBSERV = :NFE_OBSERV,
VLR_DEBITO = :VLR_DEBITO,
VLR_PRAZO = :VLR_PRAZO,
VLR_OUTROS = :VLR_OUTROS,
COD_EMPRESA = :COD_EMPRESA,
NOME_VEICULO = :NOME_VEICULO,
VOL_QUANT = :VOL_QUANT,
VOL_ESPECIE = :VOL_ESPECIE,
VOL_MARCA = :VOL_MARCA,
VOL_NRO = :VOL_NRO,
VOL_BRUTO = :VOL_BRUTO,
VOL_LIQUIDO = :VOL_LIQUIDO,
NFE_REF1 = :NFE_REF1,
NFE_REF2 = :NFE_REF2,
NFE_REF3 = :NFE_REF3,
COD_MAO_OBRA = :COD_MAO_OBRA,
SAT_NRO = :SAT_NRO,
SAT_STATUS = :SAT_STATUS,
SAT_CAMINHO = :SAT_CAMINHO,
SAT_CHAVE = :SAT_CHAVE,
DT_COMISSAO = :DT_COMISSAO,
NF_NOME = :NF_NOME,
COD_CONVENIO = :COD_CONVENIO,
COD_MESA = :COD_MESA,
COD_PARCELA = :COD_PARCELA,
FLG_PRECO = :FLG_PRECO,
LOCAL_DESEMB  = :LOCAL_DESEMB,
UF_DESEMB = :UF_DESEMB, 
NRO_DI = :NRO_DI,
DT_DI = :DT_DI,
COD_EXPORT = :COD_EXPORT,
COD_FABRIC = :COD_FABRIC,
TP_TRANS = :TP_TRANS,
NFE_REF4 = :NFE_REF4,
VLR_IMPORT = :VLR_IMPORT,
OBS_ADICIONAL = :OBS_ADICIONAL,
FLG_PROCEDE = :FLG_PROCEDE,
ROMANEIO_NRO = :ROMANEIO_NRO,
ROMANEIO_DATA = :ROMANEIO_DATA,
TOKEN = :TOKEN,
CODMARKET = :CODMARKET
where (CODIGO = :CODIGO);
if (operacao = 3) then
delete from MOVTO
where (CODIGO = :CODIGO);
suspend;
end

^

ALTER TABLE MOVIT
ADD OBS_ADICIONAL BLOB SUB_TYPE 1 SEGMENT SIZE 4096

^

ALTER TABLE END_CLI
ADD CONSTRAINT FK_END_CLI_1
FOREIGN KEY (COD_CLI)
REFERENCES CLIENTE(CODIGO)
ON DELETE CASCADE

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0000','CONFIGURACOES','PRINCIPAL','VALIDADE','MOSTRAR PRODUTOS A (X) DIAS DO VENCIMENTO AO ABRIR O SISTEMA','0','','N')

^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('VENDA','VENDAS','SAIDAS','CONSULTA','CONSULTAR VENDAS SEPARADAS POR EMPRESA','SIM','SIM;NAO','N')

^

CREATE TABLE TELAS_ACESSO (
    "INDEX"        VARCHAR(10),
    MENU           VARCHAR(30),
    MENU_PAI       VARCHAR(30),
    COD_FUNC       VARCHAR(30),
    NV_FUNC        VARCHAR(30),
    INCLUIR        VARCHAR(30),
    ALTERAR        VARCHAR(30),
    EXCLUIR        VARCHAR(30),
    CONSULTAR      VARCHAR(30),
    IMPRIMIR       VARCHAR(30),
    MENU_NOME      VARCHAR(40),
    NIVEL_CLIENTE  VARCHAR(30),
    ORDEM          INTEGER
);

^

delete from favoritos

^

CREATE TABLE STATUS_OS (
    CODIGO       INTEGER NOT NULL,
    STATUS       VARCHAR(30),
    COR          INTEGER,
    FLG_GRAFICO  CHAR(1) DEFAULT 'S'
);

^

ALTER TABLE STATUS_OS ADD CONSTRAINT PK_STATUS_OS PRIMARY KEY (CODIGO);

^

create or alter procedure P_STATUS_OS (
    OPERACAO integer,
    CODIGO integer,
    STATUS varchar(30),
    COR integer,
    FLG_GRAFICO char(1))
as
begin
  if (operacao = 1) then
     insert into status_os (CODIGO,STATUS,COR, FLG_GRAFICO)
     values (:CODIGO,:STATUS,:COR, :FLG_GRAFICO);

  if (operacao = 2) then
     update status_os set
     STATUS = :STATUS,
     COR = :COR,
     FLG_GRAFICO = :FLG_GRAFICO
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from status_os
     where (CODIGO = :CODIGO);

  suspend;
end

^

CREATE OR ALTER TRIGGER TRG_STATUS_OS FOR STATUS_OS
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable cod integer;
begin
  select max(CODIGO) from STATUS_OS into :cod;

  if (cod is null) then cod = 0;

  new.codigo = cod + 1;
end

^
ALTER TABLE MOVTO_OS
  ADD COD_STATUS     INTEGER

^
ALTER TABLE MOVTO_OS ADD CONSTRAINT FK_COD_STATUS FOREIGN KEY (COD_STATUS) REFERENCES STATUS_OS (CODIGO);

^

create or alter procedure P_MOVTO_OS (
    OPERACAO integer,
    CODIGO integer,
    CODMOV integer,
    NRO_OS integer,
    DATA_SAIDA date,
    MARCA varchar(60),
    MODELO varchar(60),
    ESNHEX varchar(60),
    FLG_BATERIA char(1),
    FLG_MESA char(1),
    FLG_CHIP char(1),
    FLG_CARTAO char(1),
    FLG_OPERADORA char(1),
    FLG_ESTADO char(1),
    GARANTIA integer,
    OBSERVACAO varchar(100),
    STATUS varchar(20),
    COD_PROD1 integer,
    COD_PROD2 integer,
    COD_PROD3 integer,
    FOTO1 varchar(200),
    FOTO2 varchar(200),
    FOTO3 varchar(200),
    FOTO4 varchar(200),
    FOTO5 varchar(200),
    COD_TECNICO integer,
    FOTO6 varchar(200),
    FOTO7 varchar(200),
    COD_STATUS integer)
as
begin
  if (operacao = 1) then
insert into MOVTO_OS (CODIGO,CODMOV,NRO_OS,DATA_SAIDA,MARCA,MODELO,ESNHEX,FLG_BATERIA,FLG_MESA,FLG_CHIP,FLG_CARTAO,FLG_OPERADORA,FLG_ESTADO,GARANTIA,OBSERVACAO,STATUS,COD_PROD1,
COD_PROD2,COD_PROD3,FOTO1,FOTO2,FOTO3,FOTO4,FOTO5,COD_TECNICO,FOTO6,FOTO7, COD_STATUS)
  values (:CODIGO,:CODMOV,:NRO_OS,:DATA_SAIDA,:MARCA,:MODELO,:ESNHEX,:FLG_BATERIA,:FLG_MESA,:FLG_CHIP,:FLG_CARTAO,:FLG_OPERADORA,:FLG_ESTADO,:GARANTIA,:OBSERVACAO,:STATUS,
:cod_prod1,:cod_prod2,:COD_PROD3,:FOTO1,:FOTO2,:FOTO3,:FOTO4,:FOTO5,:COD_TECNICO,:FOTO6,:FOTO7, :COD_STATUS);
 if (operacao = 2) then
 update MOVTO_OS set 
 CODMOV = :CODMOV, 
 NRO_OS = :NRO_OS,   
 DATA_SAIDA = :DATA_SAIDA,  
 MARCA = :MARCA, 
 MODELO = :MODELO,  
 ESNHEX = :ESNHEX, 
 FLG_BATERIA = :FLG_BATERIA, 
 FLG_MESA = :FLG_MESA, 
 FLG_CHIP = :FLG_CHIP,  
 FLG_CARTAO = :FLG_CARTAO, 
 FLG_OPERADORA = :FLG_OPERADORA, 
 FLG_ESTADO = :FLG_ESTADO, 
 GARANTIA = :GARANTIA, 
 OBSERVACAO = :OBSERVACAO, 
 STATUS = :STATUS, 
 COD_PROD1 = :cod_prod1, 
 COD_PROD2 = :cod_prod2, 
 COD_PROD3 = :cod_prod3, 
 FOTO1 = :FOTO1, 
 FOTO2 = :FOTO2, 
 FOTO3 = :FOTO3, 
 FOTO4 = :FOTO4, 
 FOTO5 = :FOTO5, 
 COD_TECNICO = :COD_TECNICO, 
 FOTO6 = :FOTO6, 
 FOTO7 = :FOTO7,
 COD_STATUS = :COD_STATUS
    WHERE (CODIGO = :CODIGO);
  if (operacao = 3) then
     delete from MOVTO_OS
     where (CODIGO = :CODIGO);
  suspend;
end

^
Insert INTO STATUS_OS (CODIGO, STATUS, COR)
Values(1,'Todos',536870912)
^
Insert INTO STATUS_OS (CODIGO, STATUS, COR)
Values(0,'Em aberto',536870912)
^
Insert INTO STATUS_OS (CODIGO, STATUS, COR)
Values(0,'Retirado',536870912)
^
Insert INTO STATUS_OS (CODIGO, STATUS, COR)
Values(0,'Orçamento',536870912)
^
Insert INTO STATUS_OS (CODIGO, STATUS, COR)
Values(0,'Pronto',536870912)

^
update MOVTO_OS set cod_status = 2 where status = 'Em aberto'
^
update MOVTO_OS set cod_status = 3 where status = 'Retirado'
^
update MOVTO_OS set cod_status = 4 where status = 'Orçamento'
^
update MOVTO_OS set cod_status = 5 where status = 'Pronto'
^

ALTER TABLE MOVTO
  ADD FLG_EXC CHAR(1)

^

create or alter procedure P_MOVTO (
    OPERACAO integer,
    CODIGO integer,
    FLG_CODMOV integer,
    DATA date,
    NOTA_FISCAL integer,
    SERIE integer,
    CUPOM_FISCAL integer,
    NRO_ECF integer,
    DATA_SAIDA date,
    COD_CLI integer,
    COD_FOR integer,
    COD_FUNC integer,
    COD_TRIB integer,
    COD_END_CLI integer,
    VLR_DESC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_FRETE numeric(15,2),
    PORC_FRETE numeric(15,3),
    VLR_TOTAL numeric(15,2),
    TOTAL_NF numeric(15,2),
    TIPO_RECEB integer,
    OBSERV1 varchar(400),
    OBSERV2 varchar(100),
    OBSERV3 varchar(100),
    TRANS_NOME varchar(60),
    TRANS_END varchar(60),
    TRANS_CIDADE varchar(60),
    TRANS_CIDADEUF varchar(2),
    TRANS_PLACA varchar(10),
    TRANS_PLACAUF varchar(2),
    TRANS_FRETE integer,
    TRANS_CNPJ_CPF varchar(20),
    TRANS_IE_RG varchar(20),
    CODREC_DEVOLUCAO integer,
    COD_CAIXA integer,
    FLG_CANCEL char(1),
    MOTIVO_CANCEL varchar(60),
    NF_DATA date,
    NF_DATA_SAIDA date,
    NF_HORA time,
    NF_CPF varchar(20),
    PLACA varchar(10),
    DATA_ENTREGA date,
    FLG_ABERTO char(1),
    VLR_DINH numeric(15,2),
    VLR_CHVISTA numeric(15,2),
    VLR_CHPRE numeric(15,2),
    VLR_CARTAO numeric(15,2),
    NFE_NRO integer,
    NFE_STATUS varchar(60),
    NFE_CAMINHO varchar(60),
    NFE_CHAVE varchar(60),
    NFE_OBSERV varchar(60),
    VLR_DEBITO numeric(15,2),
    VLR_PRAZO numeric(15,2),
    VLR_OUTROS numeric(15,2),
    COD_EMPRESA integer,
    NOME_VEICULO varchar(400),
    VOL_QUANT varchar(20),
    VOL_ESPECIE varchar(20),
    VOL_MARCA varchar(20),
    VOL_NRO varchar(20),
    VOL_BRUTO varchar(20),
    VOL_LIQUIDO varchar(20),
    NFE_REF1 varchar(60),
    NFE_REF2 varchar(60),
    NFE_REF3 varchar(60),
    COD_MAO_OBRA integer,
    SAT_NRO integer,
    SAT_STATUS varchar(20),
    SAT_CAMINHO varchar(60),
    SAT_CHAVE varchar(60),
    DT_COMISSAO date,
    NF_NOME varchar(60),
    COD_CONVENIO integer,
    COD_MESA integer,
    COD_PARCELA integer,
    FLG_PRECO char(1),
    LOCAL_DESEMB varchar(200),
    UF_DESEMB varchar(2),
    NRO_DI varchar(20),
    DT_DI date,
    COD_EXPORT integer,
    COD_FABRIC integer,
    TP_TRANS integer,
    NFE_REF4 varchar(60),
    VLR_IMPORT numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    FLG_PROCEDE char(1),
    ROMANEIO_NRO integer,
    ROMANEIO_DATA date,
    TOKEN varchar(256),
    CODMARKET integer,
    VLR_PIX numeric(15,2),
    NFE_DADOS blob sub_type 0 segment size 80,
    FLG_EXC char(1))
as
begin
if (operacao = 1) then
insert into MOVTO (CODIGO,FLG_CODMOV,DATA,NOTA_FISCAL,SERIE,CUPOM_FISCAL,NRO_ECF,DATA_SAIDA,COD_CLI,COD_FOR,COD_FUNC,COD_TRIB,COD_END_CLI,VLR_DESC,VLR_ACRES,VLR_FRETE,PORC_FRETE,
VLR_TOTAL,TOTAL_NF,TIPO_RECEB,OBSERV1,OBSERV2,OBSERV3,TRANS_NOME,TRANS_END,TRANS_CIDADE,TRANS_CIDADEUF,TRANS_PLACA,TRANS_PLACAUF,TRANS_FRETE,TRANS_CNPJ_CPF,TRANS_IE_RG,CODREC_DEVOLUCAO,
COD_CAIXA,FLG_CANCEL,MOTIVO_CANCEL,NF_DATA,NF_DATA_SAIDA,NF_HORA,NF_CPF,PLACA,DATA_ENTREGA,FLG_ABERTO,VLR_DINH,VLR_CHVISTA,VLR_CHPRE,VLR_CARTAO,NFE_NRO,NFE_STATUS,NFE_CAMINHO,
NFE_CHAVE,NFE_OBSERV,VLR_DEBITO,VLR_PRAZO,VLR_OUTROS,COD_EMPRESA,NOME_VEICULO,VOL_QUANT,VOL_ESPECIE,VOL_MARCA,VOL_NRO,VOL_BRUTO,VOL_LIQUIDO,NFE_REF1,NFE_REF2,NFE_REF3,COD_MAO_OBRA,SAT_NRO,SAT_STATUS,SAT_CAMINHO,SAT_CHAVE,
DT_COMISSAO,NF_NOME,COD_CONVENIO,COD_MESA,COD_PARCELA,FLG_PRECO,LOCAL_DESEMB,UF_DESEMB,NRO_DI,DT_DI,COD_EXPORT,COD_FABRIC,TP_TRANS,NFE_REF4,VLR_IMPORT,OBS_ADICIONAL,FLG_PROCEDE,ROMANEIO_NRO,ROMANEIO_DATA,TOKEN, CODMARKET, VLR_PIX, NFE_DADOS, FLG_EXC)
values (:CODIGO,:FLG_CODMOV,:DATA,:NOTA_FISCAL,:SERIE,:CUPOM_FISCAL,:NRO_ECF,:DATA_SAIDA,:COD_CLI,:COD_FOR,:COD_FUNC,:COD_TRIB,:COD_END_CLI,:VLR_DESC,:VLR_ACRES,:VLR_FRETE,
:PORC_FRETE,:VLR_TOTAL,:TOTAL_NF,:TIPO_RECEB,:OBSERV1,:OBSERV2,:OBSERV3,:TRANS_NOME,:TRANS_END,:TRANS_CIDADE,:TRANS_CIDADEUF,:TRANS_PLACA,:TRANS_PLACAUF,:TRANS_FRETE,
:TRANS_CNPJ_CPF,:TRANS_IE_RG,:CODREC_DEVOLUCAO,:COD_CAIXA,:FLG_CANCEL,:MOTIVO_CANCEL,:NF_DATA,:NF_DATA_SAIDA,:NF_HORA,:NF_CPF,:PLACA,:DATA_ENTREGA,:FLG_ABERTO,
:VLR_DINH,:VLR_CHVISTA,:VLR_CHPRE,:VLR_CARTAO,:NFE_NRO,:NFE_STATUS,:NFE_CAMINHO,:NFE_CHAVE,:NFE_OBSERV,:VLR_DEBITO,:VLR_PRAZO,:VLR_OUTROS,:COD_EMPRESA,:NOME_VEICULO,
:VOL_QUANT,:VOL_ESPECIE,:VOL_MARCA,:VOL_NRO,:VOL_BRUTO,:VOL_LIQUIDO,:NFE_REF1,:NFE_REF2,:NFE_REF3,:COD_MAO_OBRA,:SAT_NRO,:SAT_STATUS,:SAT_CAMINHO,:SAT_CHAVE,:DT_COMISSAO,:NF_NOME,:COD_CONVENIO,:COD_MESA,:COD_PARCELA,:FLG_PRECO,
:LOCAL_DESEMB,:UF_DESEMB,:NRO_DI,:DT_DI,:COD_EXPORT,:COD_FABRIC,:TP_TRANS,:NFE_REF4,:VLR_IMPORT,:OBS_ADICIONAL,:FLG_PROCEDE,:ROMANEIO_NRO,:ROMANEIO_DATA,:TOKEN,:CODMARKET,:VLR_PIX, :NFE_DADOS, :FLG_EXC);

if (operacao = 2) then
update MOVTO set
FLG_CODMOV = :FLG_CODMOV,
DATA = :DATA,
NOTA_FISCAL = :NOTA_FISCAL,
SERIE = :SERIE,
CUPOM_FISCAL = :CUPOM_FISCAL,
NRO_ECF = :NRO_ECF,
DATA_SAIDA = :DATA_SAIDA,
COD_CLI = :COD_CLI,
COD_FOR = :COD_FOR,
COD_FUNC = :COD_FUNC,
COD_TRIB = :COD_TRIB,
COD_END_CLI = :COD_END_CLI,
VLR_DESC = :VLR_DESC,
VLR_ACRES = :VLR_ACRES,
VLR_FRETE = :VLR_FRETE,
PORC_FRETE = :PORC_FRETE,
VLR_TOTAL = :VLR_TOTAL,
TOTAL_NF = :TOTAL_NF,
TIPO_RECEB = :TIPO_RECEB,
OBSERV1 = :OBSERV1,
OBSERV2 = :OBSERV2,
OBSERV3 = :OBSERV3,
TRANS_NOME = :TRANS_NOME,
TRANS_END = :TRANS_END,
TRANS_CIDADE = :TRANS_CIDADE,
TRANS_CIDADEUF = :TRANS_CIDADEUF,
TRANS_PLACA = :TRANS_PLACA,
TRANS_PLACAUF = :TRANS_PLACAUF,
TRANS_FRETE = :TRANS_FRETE,
TRANS_CNPJ_CPF = :TRANS_CNPJ_CPF,
TRANS_IE_RG = :TRANS_IE_RG,
CODREC_DEVOLUCAO = :CODREC_DEVOLUCAO,
COD_CAIXA = :COD_CAIXA,
FLG_CANCEL = :FLG_CANCEL,
MOTIVO_CANCEL = :MOTIVO_CANCEL,
NF_DATA = :NF_DATA,
NF_DATA_SAIDA = :NF_DATA_SAIDA,
NF_HORA = :NF_HORA,
NF_CPF = :NF_CPF,
PLACA = :PLACA,
DATA_ENTREGA = :DATA_ENTREGA,
FLG_ABERTO = :FLG_ABERTO,
VLR_DINH = :VLR_DINH,
VLR_CHVISTA = :VLR_CHVISTA,
VLR_CHPRE = :VLR_CHPRE,
VLR_CARTAO = :VLR_CARTAO,
NFE_NRO = :NFE_NRO,
NFE_STATUS = :NFE_STATUS,
NFE_CAMINHO = :NFE_CAMINHO,
NFE_CHAVE = :NFE_CHAVE,
NFE_OBSERV = :NFE_OBSERV,
VLR_DEBITO = :VLR_DEBITO,
VLR_PRAZO = :VLR_PRAZO,
VLR_OUTROS = :VLR_OUTROS,
COD_EMPRESA = :COD_EMPRESA,
NOME_VEICULO = :NOME_VEICULO,
VOL_QUANT = :VOL_QUANT,
VOL_ESPECIE = :VOL_ESPECIE,
VOL_MARCA = :VOL_MARCA,
VOL_NRO = :VOL_NRO,
VOL_BRUTO = :VOL_BRUTO,
VOL_LIQUIDO = :VOL_LIQUIDO,
NFE_REF1 = :NFE_REF1,
NFE_REF2 = :NFE_REF2,
NFE_REF3 = :NFE_REF3,
COD_MAO_OBRA = :COD_MAO_OBRA,
SAT_NRO = :SAT_NRO,
SAT_STATUS = :SAT_STATUS,
SAT_CAMINHO = :SAT_CAMINHO,
SAT_CHAVE = :SAT_CHAVE,
DT_COMISSAO = :DT_COMISSAO,
NF_NOME = :NF_NOME,
COD_CONVENIO = :COD_CONVENIO,
COD_MESA = :COD_MESA,
COD_PARCELA = :COD_PARCELA,
FLG_PRECO = :FLG_PRECO,
LOCAL_DESEMB  = :LOCAL_DESEMB,
UF_DESEMB = :UF_DESEMB,
NRO_DI = :NRO_DI,
DT_DI = :DT_DI,
COD_EXPORT = :COD_EXPORT,
COD_FABRIC = :COD_FABRIC,
TP_TRANS = :TP_TRANS,
NFE_REF4 = :NFE_REF4,
VLR_IMPORT = :VLR_IMPORT,
OBS_ADICIONAL = :OBS_ADICIONAL,
FLG_PROCEDE = :FLG_PROCEDE,
ROMANEIO_NRO = :ROMANEIO_NRO,
ROMANEIO_DATA = :ROMANEIO_DATA,
TOKEN = :TOKEN,
CODMARKET = :CODMARKET,
VLR_PIX = :VLR_PIX,
NFE_DADOS = :NFE_DADOS,
FLG_EXC = :FLG_EXC
where (CODIGO = :CODIGO);
if (operacao = 3) then
delete from MOVTO
where (CODIGO = :CODIGO);
suspend;
end

^

ALTER TABLE EMPRESA
ADD OBS_CFE VARCHAR(300)

^

ALTER TABLE CAIXA_OUTROS
ADD VLR_PIX NUMERIC(15,2)

^

create or alter procedure P_CAIXA_OUTROS (
    OPERACAO integer,
    CODIGO integer,
    FLG_E_S char(1),
    DATA date,
    DESCRICAO varchar(60),
    VALOR numeric(15,2),
    COD_CAIXA integer,
    COD_FUNC integer,
    COD_DESP integer,
    VLR_DINH numeric(15,2),
    VLR_CHVISTA numeric(15,2),
    VLR_CHPRE numeric(15,2),
    DT_COMISSAO date,
    VLR_CARTAO numeric(15,2),
    VLR_PIX numeric(15,2))
as
begin
if (operacao = 1) then
insert into caixa_outros (codigo,flg_e_s,data,descricao,valor,cod_caixa,cod_func,cod_desp,vlr_dinh,vlr_chvista,vlr_chpre,dt_comissao,vlr_cartao,vlr_pix)
values (:codigo,:flg_e_s,:data,:descricao,:valor,:cod_caixa,:cod_func,:cod_desp,:vlr_dinh,:vlr_chvista,:vlr_chpre,:dt_comissao,:vlr_cartao,:vlr_pix);
if (operacao = 2) then
update caixa_outros set
flg_e_s = :flg_e_s,
data = :data,
descricao = :descricao,
valor = :valor,
cod_caixa = :cod_caixa,
cod_func = :cod_func,
cod_desp = :cod_desp,
vlr_dinh = :vlr_dinh,
vlr_chvista = :vlr_chvista,
vlr_chpre = :vlr_chpre,
dt_comissao = :dt_comissao,
vlr_cartao = :vlr_cartao,
vlr_pix = :vlr_pix
where (codigo = :codigo);
if (operacao = 3) then
delete from caixa_outros
where (codigo = :codigo);
suspend;
end

^

update configuracao set valor = 'NAO'
where (campo = 'MEIA_NOTA') and (cod_tela = 'COMPRA')

^

update RDB$FIELDS set
RDB$FIELD_LENGTH = 60,
RDB$CHARACTER_LENGTH = 60
where RDB$FIELD_NAME = 'RDB$241'

^

CREATE OR ALTER procedure P_PROD_FOR (
    OPERACAO integer,
    CODIGO integer,
    COD_FOR integer,
    COD_PROD integer,
    COD_FORPROD varchar(60))
as
begin
  if (operacao = 1) then
     insert into PROD_FOR (CODIGO,COD_FOR,COD_PROD,COD_FORPROD)
     values (:CODIGO,:COD_FOR,:COD_PROD,:COD_FORPROD);

  if (operacao = 2) then
     update PROD_FOR set
     COD_FOR = :COD_FOR,
     COD_PROD = :COD_PROD,
     COD_FORPROD = :COD_FORPROD
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from PROD_FOR
     where (CODIGO = :CODIGO);

  suspend;
end

^

ALTER TABLE MOVIT_AUX 
   ADD NOME_PROD VARCHAR(100)

^

create or alter procedure P_MOVIT_AUX (
    OPERACAO integer,
    CODIGO integer,
    CODMOV integer,
    COD_PROD integer,
    QUANT numeric(15,3),
    VALOR numeric(15,2),
    NOME_PC varchar(60),
    ITEM integer,
    VLR_UNIT numeric(15,4),
    UNIDADE varchar(10),
    VLR_DESC numeric(15,4),
    NOME_PROD VARCHAR(100))
as
begin 
if (operacao = 1) then 
insert into MOVIT_AUX (CODIGO, CODMOV, COD_PROD, QUANT, VALOR,NOME_PC,ITEM,VLR_UNIT,UNIDADE,VLR_DESC,NOME_PROD)
values (:CODIGO, :CODMOV, :COD_PROD, :QUANT, :VALOR,:NOME_PC,:ITEM,:VLR_UNIT,:UNIDADE,:VLR_DESC,:NOME_PROD);
if (operacao = 2) then  
update MOVIT_AUX set 
CODMOV = :CODMOV,
COD_PROD = :COD_PROD, 
QUANT = :QUANT, 
VALOR = :VALOR,
NOME_PC = :NOME_PC, 
ITEM = :ITEM, 
VLR_UNIT = :VLR_UNIT, 
UNIDADE = :UNIDADE,
VLR_DESC = :VLR_DESC,
NOME_PROD = :NOME_PROD
where (CODIGO = :CODIGO); 
if (operacao = 3) then 
delete from MOVIT_AUX 
where (CODIGO = :CODIGO); 
suspend; 
end

^

update RDB$FIELDS set
RDB$FIELD_LENGTH = 100,
RDB$CHARACTER_LENGTH = 100
where RDB$FIELD_NAME = 'RDB$2491'

^

create or alter procedure P_FINANC_MOVTO (
    OPERACAO integer,
    COD_CONTA integer,
    CODIGO integer,
    DATA date,
    FLG_E_S char(1),
    VALOR numeric(15,2),
    COD_CCUSTO integer,
    NRO_CHEQUE integer,
    HISTORICO varchar(100),
    COD_CONTA_MOVTO integer,
    COD_MOVTO integer,
    DATA_VENCTO date,
    DATA_PAGTO date,
    COD_CHEQUE integer,
    COD_CARTAO integer,
    COD_REC integer,
    COD_PAG integer,
    COD_ORDEM integer,
    COD_CAIXA integer,
    COD_MOV integer,
    COD_EMPRESA integer)
as
begin 
IF (OPERACAO = 1) THEN 
INSERT INTO FINANC_MOVTO 
VALUES(:COD_CONTA,:CODIGO,:DATA,:FLG_E_S,:VALOR,:COD_CCUSTO,:NRO_CHEQUE,:HISTORICO,:COD_CONTA_MOVTO,:COD_MOVTO,:DATA_VENCTO,:DATA_PAGTO,:COD_CHEQUE,:COD_CARTAO,:COD_REC,:COD_PAG,:COD_ORDEM,:COD_CAIXA,:COD_MOV,:COD_EMPRESA);
IF (OPERACAO = 2) THEN 
UPDATE FINANC_MOVTO SET
DATA = :DATA,
FLG_E_S = :FLG_E_S,
VALOR = :VALOR,
COD_CCUSTO = :COD_CCUSTO,
NRO_CHEQUE = :NRO_CHEQUE,
HISTORICO = :HISTORICO,
COD_CONTA_MOVTO = :COD_CONTA_MOVTO,
COD_MOVTO = :COD_MOVTO,
DATA_VENCTO = :DATA_VENCTO,
DATA_PAGTO = :DATA_PAGTO,
COD_CHEQUE = :COD_CHEQUE,
COD_CARTAO = :COD_CARTAO,
COD_REC = :COD_REC, 
COD_PAG = :COD_PAG,
COD_ORDEM = :COD_ORDEM,
COD_CAIXA = :COD_CAIXA,
COD_MOV = :COD_MOV,
COD_EMPRESA = :COD_EMPRESA
WHERE (COD_CONTA = :COD_CONTA)
AND (CODIGO = :CODIGO);
IF (OPERACAO = 3) THEN 
DELETE FROM FINANC_MOVTO
WHERE (COD_CONTA = :COD_CONTA)
AND (CODIGO = :CODIGO);
suspend;
end

^


alter table CLIENTE
  ADD FLG_REGIME char(1);

^

update cliente set FLG_REGIME = 'S'

^

create or alter procedure P_CLIENTE (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    FANTASIA varchar(60),
    COD_END integer,
    FONE varchar(20),
    FAX varchar(20),
    CELULAR varchar(20),
    CX_POSTAL varchar(10),
    E_MAIL varchar(60),
    CONTATO varchar(20),
    TIPO_PESSOA char(1),
    CNPJ_CPF varchar(20),
    IE_RG varchar(20),
    DT_CADASTRO date,
    DT_INATIVO date,
    DT_NASC date,
    DT_BLOQUEIO date,
    FLG_BLOQUEIO varchar(20),
    OBS_BLOQUEIO varchar(200),
    OBSERVACAO1 varchar(100),
    OBSERVACAO2 varchar(100),
    RESP_NOME varchar(60),
    RESP_BAIRRO varchar(60),
    RESP_ENDERECO varchar(60),
    RESP_CODCID integer,
    RESP_CEP varchar(10),
    RESP_FONE varchar(20),
    RESP_RG varchar(20),
    RESP_CPF varchar(20),
    RESP_DTNASC date,
    RESP_OBSERV varchar(100),
    PROFISSAO varchar(60),
    LIMITE numeric(15,2),
    OBS_COBRANCA varchar(200),
    FLG_RECEBER char(1),
    COD_EMPRESA integer,
    FLG_LIGAR char(1),
    COD_FUNC integer,
    FOTO varchar(200),
    FLG_FECHAMENTO integer,
    DIAS_PAGTO integer,
    FLG_CLASSIFICA char(1),
    TIPO_FECHAMENTO char(1),
    FLG_JUROS char(1),
    E_MAIL_NFE varchar(60),
    DATA_COBRANCA date,
    DATA_VISITA date,
    COD_CONVENIO integer,
    SENHA varchar(20),
    COD_REGIAO integer,
    FLG_PRAZO varchar(1),
    FLG_NFP char(1),
    SITE_SYNC char(1),
    SITE_COD integer,
    OBS_ADICIONAL varchar(9999),
    FLG_COMISSAO char(1),
    PORC_DESC numeric(15,2),
    FLG_REGIME char(1))
as
begin 
if (operacao = 1) then 
insert into CLIENTE (CODIGO,NOME,FANTASIA,COD_END,FONE,FAX,CELULAR,CX_POSTAL,E_MAIL,CONTATO,TIPO_PESSOA,CNPJ_CPF,IE_RG,DT_CADASTRO, 
DT_INATIVO,DT_NASC,DT_BLOQUEIO,FLG_BLOQUEIO,OBS_BLOQUEIO,OBSERVACAO1,OBSERVACAO2,RESP_NOME,RESP_BAIRRO,RESP_ENDERECO,RESP_CODCID,RESP_CEP,RESP_FONE,RESP_RG,RESP_CPF, 
RESP_DTNASC,RESP_OBSERV,PROFISSAO,LIMITE,OBS_COBRANCA,FLG_RECEBER,COD_EMPRESA,FLG_LIGAR,COD_FUNC,FOTO,FLG_FECHAMENTO,DIAS_PAGTO,FLG_CLASSIFICA,TIPO_FECHAMENTO,FLG_JUROS,E_MAIL_NFE, 
DATA_COBRANCA,DATA_VISITA,COD_CONVENIO,SENHA,COD_REGIAO,FLG_PRAZO,FLG_NFP,SITE_SYNC,SITE_COD,OBS_ADICIONAL,FLG_COMISSAO,PORC_DESC, FLG_REGIME)
values (:CODIGO,:NOME,:FANTASIA,:COD_END,:FONE,:FAX,:CELULAR,:CX_POSTAL,:E_MAIL,:CONTATO,:TIPO_PESSOA,:CNPJ_CPF,:IE_RG,:DT_CADASTRO,:DT_INATIVO,:DT_NASC,:DT_BLOQUEIO, 
:FLG_BLOQUEIO,:OBS_BLOQUEIO,:OBSERVACAO1,:OBSERVACAO2,:RESP_NOME,:RESP_BAIRRO,:RESP_ENDERECO,:RESP_CODCID,:RESP_CEP,:RESP_FONE,:RESP_RG,:RESP_CPF,:RESP_DTNASC, 
:RESP_OBSERV,:PROFISSAO,:LIMITE,:OBS_COBRANCA,:FLG_RECEBER,:COD_EMPRESA,:FLG_LIGAR,:COD_FUNC,:FOTO,:FLG_FECHAMENTO,:DIAS_PAGTO,:FLG_CLASSIFICA,:TIPO_FECHAMENTO,:FLG_JUROS,:E_MAIL_NFE, 
:DATA_COBRANCA,:DATA_VISITA,:COD_CONVENIO,:SENHA,:COD_REGIAO,:FLG_PRAZO,:FLG_NFP,:SITE_SYNC,:SITE_COD,:OBS_ADICIONAL,:FLG_COMISSAO,:PORC_DESC, :FLG_REGIME);
if (operacao = 2) then  
update CLIENTE set 
NOME = :NOME,
FANTASIA = :FANTASIA, 
COD_END = :COD_END,
FONE = :FONE, 
FAX = :FAX, 
CELULAR = :CELULAR,
CX_POSTAL = :CX_POSTAL,  
E_MAIL = :E_MAIL,
CONTATO = :CONTATO, 
TIPO_PESSOA = :TIPO_PESSOA,
CNPJ_CPF = :CNPJ_CPF, 
IE_RG = :IE_RG, 
DT_CADASTRO = :DT_CADASTRO,
DT_INATIVO = :DT_INATIVO, 
DT_NASC = :DT_NASC,  
DT_BLOQUEIO = :DT_BLOQUEIO, 
FLG_BLOQUEIO = :FLG_BLOQUEIO, 
OBS_BLOQUEIO = :OBS_BLOQUEIO, 
OBSERVACAO1 = :OBSERVACAO1,  
OBSERVACAO2 = :OBSERVACAO2, 
RESP_NOME = :RESP_NOME, 
RESP_BAIRRO = :RESP_BAIRRO, 
RESP_ENDERECO = :RESP_ENDERECO, 
RESP_CODCID = :RESP_CODCID, 
RESP_CEP = :RESP_CEP, 
RESP_FONE = :RESP_FONE,
RESP_RG = :RESP_RG,   
RESP_CPF = :RESP_CPF,  
RESP_DTNASC = :RESP_DTNASC, 
RESP_OBSERV = :RESP_OBSERV, 
PROFISSAO = :PROFISSAO, 
LIMITE = :LIMITE, 
OBS_COBRANCA = :OBS_COBRANCA,  
FLG_RECEBER = :FLG_RECEBER, 
COD_EMPRESA = :COD_EMPRESA, 
FLG_LIGAR = :FLG_LIGAR, 
COD_FUNC = :COD_FUNC, 
FOTO = :FOTO, 
FLG_FECHAMENTO =:FLG_FECHAMENTO, 
DIAS_PAGTO = :DIAS_PAGTO, 
FLG_CLASSIFICA = :FLG_CLASSIFICA, 
TIPO_FECHAMENTO = :TIPO_FECHAMENTO, 
FLG_JUROS = :FLG_JUROS, 
E_MAIL_NFE = :E_MAIL_NFE, 
DATA_COBRANCA = :DATA_COBRANCA,
DATA_VISITA = :DATA_VISITA, 
COD_CONVENIO = :COD_CONVENIO,
SENHA = :SENHA,  
COD_REGIAO = :COD_REGIAO,
FLG_PRAZO = :FLG_PRAZO,
FLG_NFP = :FLG_NFP,
SITE_SYNC = :SITE_SYNC, 
SITE_COD  = :SITE_COD, 
OBS_ADICIONAL = :OBS_ADICIONAL,
FLG_COMISSAO = :FLG_COMISSAO,
PORC_DESC = :PORC_DESC,
FLG_REGIME = :FLG_REGIME
where (CODIGO = :CODIGO);
if (operacao = 3) then 
delete from CLIENTE 
where (CODIGO = :CODIGO); 
suspend;
end

^

alter table produto 
  ADD FLG_TRIBUTO char(1);

^

update produto set FLG_TRIBUTO = 'S';

^

create or alter procedure P_PRODUTO (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    COD_GRUPO integer,
    COD_FORNECEDOR integer,
    MARCA varchar(200),
    UNIDADE_ESTOQUE varchar(10),
    UNIDADE_CONVERSAO varchar(10),
    QTD_EMBALAGEM numeric(15,4),
    PORC_LUCRO_V numeric(15,2),
    PORC_LUCRO_P numeric(15,2),
    PORC_ICMS_ISS numeric(15,2),
    PORC_COMISSAO integer,
    COD_CST varchar(10),
    ESTOQUE_INICIAL numeric(15,3),
    ESTOQUE_MINIMO numeric(15,3),
    ESTOQUE_ATUAL numeric(15,3),
    ESTOQUE_FISCAL numeric(15,3),
    COD_TRIB integer,
    COD_TRIB_ENT integer,
    SIT_TRIB varchar(2),
    DT_CADASTRO date,
    FLG_ATIVADO char(1),
    FLG_ESTOQUE char(1),
    FLG_TIPO char(1),
    LOCALIZACAO varchar(60),
    OBSERVACAO varchar(100),
    OBSERVACAO2 varchar(100),
    DT_ALTERACAO date,
    TEMPO_REAL time,
    NCM varchar(20),
    COD_CSOSN integer,
    CONV_PRECO numeric(15,3),
    CST_PIS varchar(3),
    CST_COFINS varchar(3),
    COD_SUBGRUPO integer,
    COD_SUBSUBGRUPO integer,
    ESTOQUE1 numeric(15,3),
    ESTOQUE2 numeric(15,3),
    ESTOQUE3 numeric(15,3),
    ESTOQUE4 numeric(15,3),
    ESTOQUE5 numeric(15,3),
    PORC_PIS numeric(15,2),
    PORC_COFINS numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    DT_VALIDADE date,
    PORC_IPI numeric(15,2),
    PORC_MVA numeric(15,2),
    PESO_BRUTO numeric(15,3),
    PESO_LIQUIDO numeric(15,3),
    FOTO varchar(200),
    ANEXO varchar(100),
    COD_ANP varchar(10),
    LOCALIZACAO2 varchar(60),
    ETIQUETA integer,
    COD_CEST varchar(7),
    COD_EMPRESA integer,
    PORC_DESC numeric(15,2),
    FLG_DESC char(1),
    ESTOQUE_MAXIMO numeric(15,3),
    ESTOQUE_DEMANDA_MEDIA numeric(15,3),
    ESTOQUE_TEMPO_RESUPRI numeric(15,3),
    ESTOQUE_INTERVALO_RESUPRI numeric(15,3),
    COD_DESP integer,
    COD_MARCA integer,
    FLG_SITE char(1),
    FLG_BALANCA char(1),
    SITE_COMPRIMENTO numeric(15,2),
    SITE_LARGURA numeric(15,2),
    SITE_ALTURA numeric(15,2),
    SITE_DESCRICAO varchar(9999),
    SITE_SYNC char(1),
    SITE_COD integer,
    PORC_REDBASE numeric(15,2),
    PONTOS numeric(15,4),
    LOCALIZACAO21 varchar(60),
    LOCALIZACAO22 varchar(60),
    LOCALIZACAO31 varchar(60),
    LOCALIZACAO32 varchar(60),
    LOCALIZACAO41 varchar(60),
    LOCALIZACAO42 varchar(60),
    LOCALIZACAO51 varchar(60),
    LOCALIZACAO52 varchar(60),
    PORC_FCP numeric(15,2),
    FLG_TRIBUTO char(1))
as
begin
if (OPERACAO = 1) then
insert into PRODUTO (CODIGO,NOME,COD_GRUPO,COD_FORNECEDOR,MARCA,UNIDADE_ESTOQUE,UNIDADE_CONVERSAO,QTD_EMBALAGEM,PORC_LUCRO_V,PORC_LUCRO_P,PORC_ICMS_ISS,PORC_COMISSAO,
COD_CST,ESTOQUE_INICIAL,ESTOQUE_MINIMO,ESTOQUE_ATUAL,ESTOQUE_FISCAL,COD_TRIB,COD_TRIB_ENT,SIT_TRIB,DT_CADASTRO,FLG_ATIVADO,FLG_ESTOQUE,FLG_TIPO,LOCALIZACAO,OBSERVACAO,
OBSERVACAO2,DT_ALTERACAO,TEMPO_REAL,NCM,COD_CSOSN,CONV_PRECO,CST_PIS,CST_COFINS,COD_SUBGRUPO,COD_SUBSUBGRUPO,ESTOQUE1,ESTOQUE2,ESTOQUE3,ESTOQUE4,ESTOQUE5,PORC_PIS,PORC_COFINS,
OBS_ADICIONAL,DT_VALIDADE,PORC_IPI,PORC_MVA,PESO_BRUTO,PESO_LIQUIDO,FOTO,ANEXO,COD_ANP,LOCALIZACAO2,ETIQUETA,COD_CEST,COD_EMPRESA,PORC_DESC,FLG_DESC,ESTOQUE_MAXIMO,ESTOQUE_DEMANDA_MEDIA,
ESTOQUE_TEMPO_RESUPRI,ESTOQUE_INTERVALO_RESUPRI,COD_DESP,COD_MARCA,FLG_SITE,FLG_BALANCA,SITE_COMPRIMENTO,SITE_LARGURA,SITE_ALTURA,SITE_DESCRICAO,SITE_SYNC,SITE_COD,PORC_REDBASE,PONTOS,
LOCALIZACAO21,LOCALIZACAO22,LOCALIZACAO31,LOCALIZACAO32,LOCALIZACAO41,LOCALIZACAO42,LOCALIZACAO51,LOCALIZACAO52, PORC_FCP, FLG_TRIBUTO)
values (:CODIGO,:NOME,:COD_GRUPO,:COD_FORNECEDOR,:MARCA,:UNIDADE_ESTOQUE,:UNIDADE_CONVERSAO,:QTD_EMBALAGEM,:PORC_LUCRO_V,:PORC_LUCRO_P,:PORC_ICMS_ISS,:PORC_COMISSAO,:COD_CST,:ESTOQUE_INICIAL,:ESTOQUE_MINIMO,
:ESTOQUE_ATUAL,:ESTOQUE_FISCAL,:COD_TRIB,:COD_TRIB_ENT,:SIT_TRIB,:DT_CADASTRO,:FLG_ATIVADO,:FLG_ESTOQUE,:FLG_TIPO,:LOCALIZACAO,:OBSERVACAO,:OBSERVACAO2,:DT_ALTERACAO,:TEMPO_REAL,:NCM,:COD_CSOSN, 
:CONV_PRECO,:CST_PIS,:CST_COFINS,:COD_SUBGRUPO,:COD_SUBSUBGRUPO,:ESTOQUE1,:ESTOQUE2,:ESTOQUE3,:ESTOQUE4,:ESTOQUE5,:PORC_PIS,:PORC_COFINS,:OBS_ADICIONAL,:DT_VALIDADE,:PORC_IPI,:PORC_MVA,:PESO_BRUTO, 
:PESO_LIQUIDO,:FOTO,:ANEXO,:COD_ANP,:LOCALIZACAO2,:ETIQUETA,:COD_CEST,
:COD_EMPRESA,:PORC_DESC,:FLG_DESC,:ESTOQUE_MAXIMO,:ESTOQUE_DEMANDA_MEDIA,:ESTOQUE_TEMPO_RESUPRI,:ESTOQUE_INTERVALO_RESUPRI,:COD_DESP,:COD_MARCA,:FLG_SITE,:FLG_BALANCA,
:SITE_COMPRIMENTO,:SITE_LARGURA,:SITE_ALTURA,:SITE_DESCRICAO,:SITE_SYNC,:SITE_COD,:PORC_REDBASE,:PONTOS,:LOCALIZACAO21,:LOCALIZACAO22,:LOCALIZACAO31,:LOCALIZACAO32,:LOCALIZACAO41, 
:LOCALIZACAO42,:LOCALIZACAO51,:LOCALIZACAO52,:PORC_FCP, :FLG_TRIBUTO);
if (OPERACAO = 2) then
update PRODUTO set
NOME = :NOME,
COD_GRUPO = :COD_GRUPO,
COD_FORNECEDOR = :COD_FORNECEDOR,
MARCA = :MARCA,
UNIDADE_ESTOQUE = :UNIDADE_ESTOQUE,
UNIDADE_CONVERSAO = :UNIDADE_CONVERSAO,
QTD_EMBALAGEM = :QTD_EMBALAGEM,
PORC_LUCRO_V = :PORC_LUCRO_V,
PORC_LUCRO_P = :PORC_LUCRO_P,
PORC_ICMS_ISS = :PORC_ICMS_ISS,
PORC_COMISSAO = :PORC_COMISSAO,
COD_CST = :COD_CST,
ESTOQUE_INICIAL = :ESTOQUE_INICIAL,
ESTOQUE_MINIMO = :ESTOQUE_MINIMO, 
ESTOQUE_ATUAL = :ESTOQUE_ATUAL,
ESTOQUE_FISCAL = :ESTOQUE_FISCAL, 
COD_TRIB = :COD_TRIB,
COD_TRIB_ENT = :COD_TRIB_ENT,
SIT_TRIB = :SIT_TRIB,
DT_CADASTRO = :DT_CADASTRO,
FLG_ATIVADO = :FLG_ATIVADO,
FLG_ESTOQUE = :FLG_ESTOQUE,
FLG_TIPO = :FLG_TIPO,
LOCALIZACAO = :LOCALIZACAO,
OBSERVACAO = :OBSERVACAO,
OBSERVACAO2 = :OBSERVACAO2,
DT_ALTERACAO = :DT_ALTERACAO,
TEMPO_REAL = :TEMPO_REAL,
NCM = :NCM,
COD_CSOSN = :COD_CSOSN, 
CONV_PRECO = :CONV_PRECO,
CST_PIS = :CST_PIS,
CST_COFINS = :CST_COFINS,
COD_SUBGRUPO = :COD_SUBGRUPO,
COD_SUBSUBGRUPO = :COD_SUBSUBGRUPO,
ESTOQUE1 = :ESTOQUE1,
ESTOQUE2 = :ESTOQUE2,
ESTOQUE3 = :ESTOQUE3,
ESTOQUE4 = :ESTOQUE4,
ESTOQUE5 = :ESTOQUE5,
PORC_PIS = :PORC_PIS,
PORC_COFINS = :PORC_COFINS,
OBS_ADICIONAL = :OBS_ADICIONAL,
DT_VALIDADE = :DT_VALIDADE,
PORC_IPI = :PORC_IPI,
PORC_MVA = :PORC_MVA,
PESO_BRUTO = :PESO_BRUTO,
PESO_LIQUIDO = :PESO_LIQUIDO,
FOTO = :FOTO,
ANEXO = :ANEXO,
COD_ANP = :COD_ANP,
LOCALIZACAO2 = :LOCALIZACAO2,
ETIQUETA = :ETIQUETA,
COD_CEST = :COD_CEST,
COD_EMPRESA = :COD_EMPRESA,
PORC_DESC = :PORC_DESC,
FLG_DESC = :FLG_DESC,
ESTOQUE_MAXIMO = :ESTOQUE_MAXIMO,
ESTOQUE_DEMANDA_MEDIA = :ESTOQUE_DEMANDA_MEDIA,
ESTOQUE_TEMPO_RESUPRI = :ESTOQUE_TEMPO_RESUPRI,
ESTOQUE_INTERVALO_RESUPRI = :ESTOQUE_INTERVALO_RESUPRI,
COD_DESP = :COD_DESP,
COD_MARCA = :COD_MARCA,
FLG_SITE = :FLG_SITE,
FLG_BALANCA = :FLG_BALANCA,
SITE_COMPRIMENTO = :SITE_COMPRIMENTO,
SITE_LARGURA = :SITE_LARGURA,
SITE_ALTURA = :SITE_ALTURA,
SITE_DESCRICAO = :SITE_DESCRICAO,
SITE_SYNC = :SITE_SYNC,
SITE_COD = :SITE_COD,
PORC_REDBASE = :PORC_REDBASE,
PONTOS = :PONTOS,
LOCALIZACAO21 = :LOCALIZACAO21,
LOCALIZACAO22 = :LOCALIZACAO22,
LOCALIZACAO31 = :LOCALIZACAO31,
LOCALIZACAO32 = :LOCALIZACAO32,
LOCALIZACAO41 = :LOCALIZACAO41,
LOCALIZACAO42 = :LOCALIZACAO42,
LOCALIZACAO51 = :LOCALIZACAO51,
LOCALIZACAO52 = :LOCALIZACAO52,
PORC_FCP = :PORC_FCP,
FLG_TRIBUTO = :FLG_TRIBUTO
where (CODIGO = :CODIGO);
if (OPERACAO = 3) then
delete from PRODUTO 
where (CODIGO = :CODIGO);
suspend;
end

^

alter table TRIBUTO
  ADD DADOS_ADICIONAIS varchar(300),
  ADD FLG_CONSUMO char(1),  
  ADD FLG_ATIVADO char(1),
  ADD FLG_REGIME char(2);

^

create or alter procedure P_TRIBUTO (
    OPERACAO integer,
    CODIGO integer,
    CFOP_DENTRO varchar(7),
    CFOP_FORA varchar(7),
    FLG_ES char(1),
    NATUREZA varchar(60),
    FLG_TIPO integer,
    DADOS_ADICIONAIS varchar(300),
    FLG_CONSUMO char(1),
    FLG_ATIVADO char(1),
    FLG_REGIME char(2))
as
begin
  if (operacao = 1) then
     insert into TRIBUTO (CODIGO, CFOP_DENTRO, CFOP_FORA, FLG_ES, NATUREZA, FLG_TIPO, DADOS_ADICIONAIS, FLG_CONSUMO, FLG_ATIVADO, FLG_REGIME)
     values (:CODIGO, :CFOP_DENTRO, :CFOP_FORA, :FLG_ES, :NATUREZA, :FLG_TIPO, :DADOS_ADICIONAIS, :FLG_CONSUMO, :FLG_ATIVADO, :FLG_REGIME);

  if (operacao = 2) then
     update TRIBUTO set 
     CFOP_DENTRO = :CFOP_DENTRO,
     CFOP_FORA = :CFOP_FORA,
     FLG_ES = :FLG_ES,
     NATUREZA = :NATUREZA,
     FLG_TIPO = :FLG_TIPO,
     DADOS_ADICIONAIS = :DADOS_ADICIONAIS,
     FLG_CONSUMO = :FLG_CONSUMO,
     FLG_ATIVADO = :FLG_ATIVADO,
     FLG_REGIME = :FLG_REGIME
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from TRIBUTO
     where (CODIGO = :CODIGO);

  suspend;
end

^

update RDB$FIELDS set
RDB$FIELD_LENGTH = 2000,
RDB$CHARACTER_LENGTH = 2000
where RDB$FIELD_NAME = 'RDB$7526'

^

CREATE OR ALTER procedure P_TRIBUTO (
    OPERACAO integer,
    CODIGO integer,
    CFOP_DENTRO varchar(7),
    CFOP_FORA varchar(7),
    FLG_ES char(1),
    NATUREZA varchar(60),
    FLG_TIPO integer,
    DADOS_ADICIONAIS varchar(2000),
    FLG_CONSUMO char(1),
    FLG_ATIVADO char(1),
    FLG_REGIME char(2))
as
begin
  if (operacao = 1) then
     insert into TRIBUTO (CODIGO, CFOP_DENTRO, CFOP_FORA, FLG_ES, NATUREZA, FLG_TIPO, DADOS_ADICIONAIS, FLG_CONSUMO, FLG_ATIVADO, FLG_REGIME)
     values (:CODIGO, :CFOP_DENTRO, :CFOP_FORA, :FLG_ES, :NATUREZA, :FLG_TIPO, :DADOS_ADICIONAIS, :FLG_CONSUMO, :FLG_ATIVADO, :FLG_REGIME);

  if (operacao = 2) then
     update TRIBUTO set 
     CFOP_DENTRO = :CFOP_DENTRO,
     CFOP_FORA = :CFOP_FORA,
     FLG_ES = :FLG_ES,
     NATUREZA = :NATUREZA,
     FLG_TIPO = :FLG_TIPO,
     DADOS_ADICIONAIS = :DADOS_ADICIONAIS,
     FLG_CONSUMO = :FLG_CONSUMO,
     FLG_ATIVADO = :FLG_ATIVADO,
     FLG_REGIME = :FLG_REGIME
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from TRIBUTO
     where (CODIGO = :CODIGO);

  suspend;
end

^

create table TRIB_REGRAS (
    CODIGO integer primary key,
    COD_TRIB integer, 
    UF char(2),
    TIPO varchar(10),
    CFOP varchar(10),
    CST INTEGER,
    CSOSN INTEGER,
    ALIQUOTA numeric(15,2),
    BASE numeric(15,2),
    PORC_MVA numeric(15,2),
    PORC_REDBASE_ST numeric(15,2),
    ALIQUOTA_ST numeric(15,2),
    MODALIDADE varchar(30),
    PORC_REDBASE numeric(15,2),
    PORC_FCP numeric(15,2),
    FLG_FRETE_IPI char(1));

^

Alter Table trib_regras
    ADD constraint fk_COD_TRIB
    foreign key(COD_TRIB) references tributo (CODIGO);

^

Create or alter PROCEDURE P_TRIB_REGRAS(
    OPERACAO INTEGER,
    CODIGO INTEGER,
    COD_TRIB INTEGER,
    UF CHAR(2),
    TIPO VARCHAR(10),
    CFOP VARCHAR(10),
    CST Integer,
    CSOSN Integer,
    ALIQUOTA NUMERIC(15,2),
    BASE NUMERIC(15,2),
    PORC_MVA NUMERIC(15,2),
    PORC_REDBASE_ST NUMERIC(15,2),
    ALIQUOTA_ST NUMERIC(15,2),
    MODALIDADE VARCHAR(30),
    PORC_REDBASE NUMERIC(15,2),
    PORC_FCP NUMERIC(15,2),
    FLG_FRETE_IPI CHAR(1))
AS
begin 
if (operacao = 1) then 
insert into TRIB_REGRAS (CODIGO, COD_TRIB, UF, TIPO, CFOP, CST, CSOSN, ALIQUOTA, BASE, PORC_MVA, PORC_REDBASE_ST, ALIQUOTA_ST, MODALIDADE, PORC_REDBASE, PORC_FCP, FLG_FRETE_IPI)
values (:CODIGO, :COD_TRIB, :UF, :TIPO, :CFOP, :CST, :CSOSN, :ALIQUOTA, :BASE, :PORC_MVA, :PORC_REDBASE_ST, :ALIQUOTA_ST,:MODALIDADE, :PORC_REDBASE, :PORC_FCP, :FLG_FRETE_IPI);
if (operacao = 2) then  
update TRIB_REGRAS set
COD_TRIB = :COD_TRIB,
UF = :UF,
TIPO = :TIPO,
CFOP = :CFOP,
CST = :CST,
CSOSN = :CSOSN ,
ALIQUOTA = :ALIQUOTA,
BASE = :BASE,
PORC_MVA = :PORC_MVA,
PORC_REDBASE_ST = :PORC_REDBASE_ST,
ALIQUOTA_ST = :ALIQUOTA_ST,
MODALIDADE = :MODALIDADE,
PORC_REDBASE = :PORC_REDBASE,
PORC_FCP = :PORC_FCP,
FLG_FRETE_IPI = :FLG_FRETE_IPI
where (CODIGO = :CODIGO);
if (operacao = 3) then 
delete from TRIB_REGRAS
where (CODIGO = :CODIGO); 
suspend;
end

^

CREATE OR ALTER TRIGGER TRG_TRIB_REGRAS FOR TRIB_REGRAS
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable cod integer;
begin
 select max(CODIGO) from TRIB_REGRAS into :cod;
if (cod is null) then cod = 0;
new.codigo = cod + 1;
end

^

ALTER TABLE TRIB_REGRAS
    ADD PISCOF_ST CHAR(1),
	ADD ORIG_CST VARCHAR(50)

^	
	
CREATE OR ALTER procedure P_TRIB_REGRAS (
    OPERACAO integer,
    CODIGO integer,
    COD_TRIB integer,
    UF char(2),
    TIPO varchar(10),
    CFOP varchar(10),
    CST varchar(20),
    CSOSN varchar(20),
    ALIQUOTA numeric(15,2),
    BASE numeric(15,2),
    PORC_MVA numeric(15,2),
    PORC_REDBASE_ST numeric(15,2),
    ALIQUOTA_ST numeric(15,2),
    MODALIDADE varchar(30),
    PORC_REDBASE numeric(15,2),
    PORC_FCP numeric(15,2),
    FLG_FRETE_IPI char(1),
    PISCOF_ST char(1),
	ORIG_CST VARCHAR(50))
as
begin 
if (operacao = 1) then 
insert into TRIB_REGRAS (CODIGO, COD_TRIB, UF, TIPO, CFOP, CST, CSOSN, ALIQUOTA, BASE, PORC_MVA, PORC_REDBASE_ST, ALIQUOTA_ST, MODALIDADE, PORC_REDBASE, PORC_FCP, FLG_FRETE_IPI, PISCOF_ST, ORIG_CST)
values (:CODIGO, :COD_TRIB, :UF, :TIPO, :CFOP, :CST, :CSOSN, :ALIQUOTA, :BASE, :PORC_MVA, :PORC_REDBASE_ST, :ALIQUOTA_ST,:MODALIDADE, :PORC_REDBASE, :PORC_FCP, :FLG_FRETE_IPI, :PISCOF_ST, :ORIG_CST);
if (operacao = 2) then  
update TRIB_REGRAS set
COD_TRIB = :COD_TRIB,
UF = :UF,
TIPO = :TIPO,
CFOP = :CFOP,
CST = :CST,
CSOSN = :CSOSN ,
ALIQUOTA = :ALIQUOTA,
BASE = :BASE,
PORC_MVA = :PORC_MVA,
PORC_REDBASE_ST = :PORC_REDBASE_ST,
ALIQUOTA_ST = :ALIQUOTA_ST,
MODALIDADE = :MODALIDADE,
PORC_REDBASE = :PORC_REDBASE,
PORC_FCP = :PORC_FCP,
FLG_FRETE_IPI = :FLG_FRETE_IPI,
PISCOF_ST = :PISCOF_ST,
ORIG_CST = :ORIG_CST
where (CODIGO = :CODIGO);
if (operacao = 3) then 
delete from TRIB_REGRAS
where (CODIGO = :CODIGO); 
suspend;
end		
	
^

alter table movit
    ADD COD_TRIB_REGRA integer;

^

ALTER TABLE MOVIT
ADD CONSTRAINT FK_COD_TRIB_REGRA
FOREIGN KEY (COD_TRIB_REGRA) REFERENCES TRIB_REGRAS (CODIGO);

^

create or alter procedure P_MOVIT (
    OPERACAO integer,
    CODMOV integer,
    ITEM integer,
    COD_PROD integer,
    QUANT numeric(15,3),
    QUANT_NF numeric(15,3),
    VLR_UNIT numeric(15,4),
    PRECO_NF numeric(15,4),
    VLR_TOTAL numeric(15,2),
    TOTAL_NF numeric(15,2),
    PORC_QUANT numeric(15,2),
    PORC_PRECO numeric(15,2),
    UNIDADE varchar(10),
    COD_TRIB integer,
    COD_CFOP varchar(7),
    OBSERV varchar(100),
    BASE_ICMS numeric(15,2),
    TAXA_ICMS numeric(15,2),
    VLR_ICMS numeric(15,2),
    BASE_SUBST numeric(15,2),
    TAXA_SUBST numeric(15,2),
    VLR_SUBST numeric(15,2),
    VLR_IPI numeric(15,2),
    TAXA_IPI numeric(15,2),
    VLR_ISS numeric(15,2),
    TAXA_ISS numeric(15,2),
    DIFER_ICMS numeric(15,2),
    COD_VENDEDOR integer,
    COD_INSTALADOR integer,
    COD_UNID integer,
    OBSERV2 varchar(60),
    OBSERV3 varchar(60),
    OBSERV4 varchar(60),
    OBSERV5 varchar(60),
    OBSERV6 varchar(60),
    OBSERV7 varchar(60),
    COD_FORPROD integer,
    DATA date,
    VLR_IMPORT numeric(15,2),
    BASE_IMPORT numeric(15,2),
    COD_LOTE integer,
    COD_TRIB_REGRA integer)
as
begin  
 if (operacao = 1) then  
 insert into MOVIT (CODMOV,ITEM,COD_PROD,QUANT,QUANT_NF,VLR_UNIT,PRECO_NF,VLR_TOTAL,TOTAL_NF,PORC_QUANT,PORC_PRECO,UNIDADE,COD_TRIB,COD_CFOP,OBSERV,  
BASE_ICMS,TAXA_ICMS,VLR_ICMS,BASE_SUBST,TAXA_SUBST,VLR_SUBST,VLR_IPI,TAXA_IPI,VLR_ISS,TAXA_ISS,DIFER_ICMS,COD_VENDEDOR,COD_INSTALADOR,COD_UNID,OBSERV2,    
OBSERV3,OBSERV4,OBSERV5,OBSERV6,OBSERV7,COD_FORPROD,DATA,VLR_IMPORT,BASE_IMPORT,COD_LOTE, COD_TRIB_REGRA)
 values (:CODMOV,:ITEM,:COD_PROD,:QUANT,:QUANT_NF,:VLR_UNIT,:PRECO_NF,:VLR_TOTAL,:TOTAL_NF,:PORC_QUANT,:PORC_PRECO,:UNIDADE,:COD_TRIB,:COD_CFOP,   
:OBSERV,:BASE_ICMS,:TAXA_ICMS,:VLR_ICMS,:BASE_SUBST,:TAXA_SUBST,:VLR_SUBST,:VLR_IPI,:TAXA_IPI,:VLR_ISS,:TAXA_ISS,:DIFER_ICMS,:COD_VENDEDOR,:COD_INSTALADOR,    
:COD_UNID,:OBSERV2,:OBSERV3,:OBSERV4,:OBSERV5,:OBSERV6,:OBSERV7,:COD_FORPROD,:DATA,:VLR_IMPORT,:BASE_IMPORT,:COD_LOTE,:COD_TRIB_REGRA);
 if (operacao = 2) then  
update MOVIT set 
COD_PROD = :COD_PROD,
QUANT = :QUANT,
QUANT_NF = :QUANT_NF,
VLR_UNIT = :VLR_UNIT,
PRECO_NF = :PRECO_NF,
VLR_TOTAL = :VLR_TOTAL,
TOTAL_NF = :TOTAL_NF,
PORC_QUANT = :PORC_QUANT,
PORC_PRECO = :PORC_PRECO,
UNIDADE = :UNIDADE,
COD_TRIB = :COD_TRIB,
COD_CFOP = :COD_CFOP,
OBSERV = :OBSERV,
BASE_ICMS = :BASE_ICMS,
TAXA_ICMS = :TAXA_ICMS,
VLR_ICMS = :VLR_ICMS,
BASE_SUBST = :BASE_SUBST,
TAXA_SUBST = :TAXA_SUBST,
VLR_SUBST = :VLR_SUBST,
VLR_IPI = :VLR_IPI,
TAXA_IPI = :TAXA_IPI,
VLR_ISS = :VLR_ISS,
TAXA_ISS = :TAXA_ISS,
DIFER_ICMS = :DIFER_ICMS,
COD_VENDEDOR = :COD_VENDEDOR,
COD_INSTALADOR = :COD_INSTALADOR,
COD_UNID = :COD_UNID,
OBSERV2 = :OBSERV2,
OBSERV3 = :OBSERV3,
OBSERV4 = :OBSERV4,
OBSERV5 = :OBSERV5,
OBSERV6 = :OBSERV6,
OBSERV7 = :OBSERV7,
COD_FORPROD = :COD_FORPROD,
DATA = :DATA,
VLR_IMPORT = :VLR_IMPORT,
BASE_IMPORT = :BASE_IMPORT, 
COD_LOTE = :COD_LOTE,
COD_TRIB_REGRA = :COD_TRIB_REGRA
where (CODMOV = :CODMOV)
and (ITEM = :ITEM);
if (operacao = 3) then 
delete from MOVIT      
where (CODMOV = :CODMOV)  
and (ITEM = :ITEM);  
   suspend;    
   end

^

ALTER TABLE MOVIT
    ADD CST_ICMS VARCHAR(20),
    ADD CSOSN VARCHAR(20),
    ADD TAXA_MVA NUMERIC(15,2),
    ADD CST_PIS VARCHAR(10),
    ADD CST_COFINS VARCHAR(10),
    ADD TAXA_PIS NUMERIC(15,2),
    ADD TAXA_COFINS NUMERIC(15,2),
    ADD CST_IPI VARCHAR(10),
    ADD VLR_PIS NUMERIC(15,2),
    ADD VLR_COFINS NUMERIC(15,2),
    ADD RED_BASE_ICMS NUMERIC(15,2),
    ADD RED_BASE_SUBST NUMERIC(15,2),
    ADD TAXA_FCP_ICMS NUMERIC(15,2),
    ADD TAXA_FCP_SUBST NUMERIC(15,2),
    ADD BASE_PIS NUMERIC(15,2),
    ADD BASE_COFINS NUMERIC(15,2),
	ADD MOD_SUBST VARCHAR(30),
	ADD ORIG_CST VARCHAR(50),
	ADD PISCOF_ST CHAR(1) 
	
^	
	
CREATE OR ALTER procedure P_MOVIT (
    OPERACAO integer,
    CODMOV integer,
    ITEM integer,
    COD_PROD integer,
    QUANT numeric(15,3),
    QUANT_NF numeric(15,3),
    VLR_UNIT numeric(15,4),
    PRECO_NF numeric(15,4),
    VLR_TOTAL numeric(15,2),
    TOTAL_NF numeric(15,2),
    PORC_QUANT numeric(15,2),
    PORC_PRECO numeric(15,2),
    UNIDADE varchar(10),
    COD_TRIB integer,
    COD_CFOP varchar(7),
    OBSERV varchar(100),
    BASE_ICMS numeric(15,2),
    TAXA_ICMS numeric(15,2),
    VLR_ICMS numeric(15,2),
    BASE_SUBST numeric(15,2),
    TAXA_SUBST numeric(15,2),
    VLR_SUBST numeric(15,2),
    VLR_IPI numeric(15,2),
    TAXA_IPI numeric(15,2),
    VLR_ISS numeric(15,2),
    TAXA_ISS numeric(15,2),
    DIFER_ICMS numeric(15,2),
    COD_VENDEDOR integer,
    COD_INSTALADOR integer,
    COD_UNID integer,
    OBSERV2 varchar(60),
    OBSERV3 varchar(60),
    OBSERV4 varchar(60),
    OBSERV5 varchar(60),
    OBSERV6 varchar(60),
    OBSERV7 varchar(60),
    COD_FORPROD integer,
    DATA date,
    VLR_IMPORT numeric(15,2),
    BASE_IMPORT numeric(15,2),
    COD_LOTE integer,
    COD_TRIB_REGRA integer,
    CST_ICMS varchar(20),
    CSOSN varchar(20),
    TAXA_MVA numeric(15,2),
    CST_PIS varchar(10),
    CST_COFINS varchar(10),
    TAXA_PIS numeric(15,2),
    TAXA_COFINS numeric(15,2),
    CST_IPI varchar(10),
    VLR_PIS numeric(15,2),
    VLR_COFINS numeric(15,2),
    RED_BASE_ICMS numeric(15,2),
    RED_BASE_SUBST numeric(15,2),
    TAXA_FCP_ICMS numeric(15,2),
    TAXA_FCP_SUBST numeric(15,2),
    BASE_PIS numeric(15,2),
    BASE_COFINS numeric(15,2),
    MOD_SUBST varchar(30),
    ORIG_CST varchar(50),
    PISCOF_ST CHAR(1))
as
begin  
 if (operacao = 1) then  
 insert into MOVIT (CODMOV,ITEM,COD_PROD,QUANT,QUANT_NF,VLR_UNIT,PRECO_NF,VLR_TOTAL,TOTAL_NF,PORC_QUANT,PORC_PRECO,UNIDADE,COD_TRIB,COD_CFOP,OBSERV,  
BASE_ICMS,TAXA_ICMS,VLR_ICMS,BASE_SUBST,TAXA_SUBST,VLR_SUBST,VLR_IPI,TAXA_IPI,VLR_ISS,TAXA_ISS,DIFER_ICMS,COD_VENDEDOR,COD_INSTALADOR,COD_UNID,OBSERV2,    
OBSERV3,OBSERV4,OBSERV5,OBSERV6,OBSERV7,COD_FORPROD,DATA,VLR_IMPORT,BASE_IMPORT,COD_LOTE, COD_TRIB_REGRA,CST_ICMS,CSOSN,TAXA_MVA,CST_PIS,CST_COFINS,TAXA_PIS,TAXA_COFINS,CST_IPI,VLR_PIS,VLR_COFINS,RED_BASE_ICMS,RED_BASE_SUBST,TAXA_FCP_ICMS,TAXA_FCP_SUBST,BASE_PIS,BASE_COFINS,MOD_SUBST,ORIG_CST, PISCOF_ST)
 values (:CODMOV,:ITEM,:COD_PROD,:QUANT,:QUANT_NF,:VLR_UNIT,:PRECO_NF,:VLR_TOTAL,:TOTAL_NF,:PORC_QUANT,:PORC_PRECO,:UNIDADE,:COD_TRIB,:COD_CFOP,   
:OBSERV,:BASE_ICMS,:TAXA_ICMS,:VLR_ICMS,:BASE_SUBST,:TAXA_SUBST,:VLR_SUBST,:VLR_IPI,:TAXA_IPI,:VLR_ISS,:TAXA_ISS,:DIFER_ICMS,:COD_VENDEDOR,:COD_INSTALADOR,    
:COD_UNID,:OBSERV2,:OBSERV3,:OBSERV4,:OBSERV5,:OBSERV6,:OBSERV7,:COD_FORPROD,:DATA,:VLR_IMPORT,:BASE_IMPORT,:COD_LOTE,:COD_TRIB_REGRA,:CST_ICMS,:CSOSN,:TAXA_MVA,:CST_PIS,:CST_COFINS,:TAXA_PIS,:TAXA_COFINS,:CST_IPI,:VLR_PIS,:VLR_COFINS,:RED_BASE_ICMS,:RED_BASE_SUBST,:TAXA_FCP_ICMS,:TAXA_FCP_SUBST,:BASE_PIS,:BASE_COFINS,:MOD_SUBST,:ORIG_CST, :PISCOF_ST);
 if (operacao = 2) then  
update MOVIT set 
COD_PROD = :COD_PROD,
QUANT = :QUANT,
QUANT_NF = :QUANT_NF,
VLR_UNIT = :VLR_UNIT,
PRECO_NF = :PRECO_NF,
VLR_TOTAL = :VLR_TOTAL,
TOTAL_NF = :TOTAL_NF,
PORC_QUANT = :PORC_QUANT,
PORC_PRECO = :PORC_PRECO,
UNIDADE = :UNIDADE,
COD_TRIB = :COD_TRIB,
COD_CFOP = :COD_CFOP,
OBSERV = :OBSERV,
BASE_ICMS = :BASE_ICMS,
TAXA_ICMS = :TAXA_ICMS,
VLR_ICMS = :VLR_ICMS,
BASE_SUBST = :BASE_SUBST,
TAXA_SUBST = :TAXA_SUBST,
VLR_SUBST = :VLR_SUBST,
VLR_IPI = :VLR_IPI,
TAXA_IPI = :TAXA_IPI,
VLR_ISS = :VLR_ISS,
TAXA_ISS = :TAXA_ISS,
DIFER_ICMS = :DIFER_ICMS,
COD_VENDEDOR = :COD_VENDEDOR,
COD_INSTALADOR = :COD_INSTALADOR,
COD_UNID = :COD_UNID,
OBSERV2 = :OBSERV2,
OBSERV3 = :OBSERV3,
OBSERV4 = :OBSERV4,
OBSERV5 = :OBSERV5,
OBSERV6 = :OBSERV6,
OBSERV7 = :OBSERV7,
COD_FORPROD = :COD_FORPROD,
DATA = :DATA,
VLR_IMPORT = :VLR_IMPORT,
BASE_IMPORT = :BASE_IMPORT, 
COD_LOTE = :COD_LOTE,
COD_TRIB_REGRA = :COD_TRIB_REGRA,
CST_ICMS = :CST_ICMS,
CSOSN = :CSOSN,
TAXA_MVA = :TAXA_MVA,
CST_PIS = :CST_PIS,
CST_COFINS = :CST_COFINS,
TAXA_PIS = :TAXA_PIS,
TAXA_COFINS = :TAXA_COFINS,
CST_IPI = :CST_IPI,
VLR_PIS = :VLR_PIS,
VLR_COFINS = :VLR_COFINS,
RED_BASE_ICMS = :RED_BASE_ICMS,
RED_BASE_SUBST = :RED_BASE_SUBST,
TAXA_FCP_ICMS = :TAXA_FCP_ICMS,
TAXA_FCP_SUBST = :TAXA_FCP_SUBST,
BASE_PIS = :BASE_PIS,
BASE_COFINS = :BASE_COFINS,
MOD_SUBST = :MOD_SUBST,
ORIG_CST = :ORIG_CST,
PISCOF_ST = :PISCOF_ST
where (CODMOV = :CODMOV)
and (ITEM = :ITEM);
if (operacao = 3) then 
delete from MOVIT      
where (CODMOV = :CODMOV)  
and (ITEM = :ITEM);  
   suspend;    
   end

^

CREATE OR ALTER procedure P_MOVTO (
    OPERACAO integer,
    CODIGO integer,
    FLG_CODMOV integer,
    DATA date,
    NOTA_FISCAL integer,
    SERIE integer,
    CUPOM_FISCAL integer,
    NRO_ECF integer,
    DATA_SAIDA date,
    COD_CLI integer,
    COD_FOR integer,
    COD_FUNC integer,
    COD_TRIB integer,
    COD_END_CLI integer,
    VLR_DESC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_FRETE numeric(15,2),
    PORC_FRETE numeric(15,3),
    VLR_TOTAL numeric(15,2),
    TOTAL_NF numeric(15,2),
    TIPO_RECEB integer,
    OBSERV1 varchar(400),
    OBSERV2 varchar(100),
    OBSERV3 varchar(100),
    TRANS_NOME varchar(60),
    TRANS_END varchar(60),
    TRANS_CIDADE varchar(60),
    TRANS_CIDADEUF varchar(2),
    TRANS_PLACA varchar(10),
    TRANS_PLACAUF varchar(2),
    TRANS_FRETE integer,
    TRANS_CNPJ_CPF varchar(20),
    TRANS_IE_RG varchar(20),
    CODREC_DEVOLUCAO integer,
    COD_CAIXA integer,
    FLG_CANCEL char(1),
    MOTIVO_CANCEL varchar(60),
    NF_DATA date,
    NF_DATA_SAIDA date,
    NF_HORA time,
    NF_CPF varchar(20),
    PLACA varchar(10),
    DATA_ENTREGA date,
    FLG_ABERTO char(1),
    VLR_DINH numeric(15,2),
    VLR_CHVISTA numeric(15,2),
    VLR_CHPRE numeric(15,2),
    VLR_CARTAO numeric(15,2),
    NFE_NRO integer,
    NFE_STATUS varchar(60),
    NFE_CAMINHO varchar(60),
    NFE_CHAVE varchar(60),
    NFE_OBSERV varchar(60),
    VLR_DEBITO numeric(15,2),
    VLR_PRAZO numeric(15,2),
    VLR_OUTROS numeric(15,2),
    COD_EMPRESA integer,
    NOME_VEICULO varchar(400),
    VOL_QUANT varchar(20),
    VOL_ESPECIE varchar(20),
    VOL_MARCA varchar(20),
    VOL_NRO varchar(20),
    VOL_BRUTO varchar(20),
    VOL_LIQUIDO varchar(20),
    NFE_REF1 varchar(60),
    NFE_REF2 varchar(60),
    NFE_REF3 varchar(60),
    COD_MAO_OBRA integer,
    SAT_NRO integer,
    SAT_STATUS varchar(20),
    SAT_CAMINHO varchar(60),
    SAT_CHAVE varchar(60),
    DT_COMISSAO date,
    NF_NOME varchar(60),
    COD_CONVENIO integer,
    COD_MESA integer,
    COD_PARCELA integer,
    FLG_PRECO char(1),
    LOCAL_DESEMB varchar(200),
    UF_DESEMB varchar(2),
    NRO_DI varchar(20),
    DT_DI date,
    COD_EXPORT integer,
    COD_FABRIC integer,
    TP_TRANS integer,
    NFE_REF4 varchar(60),
    VLR_IMPORT numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    FLG_PROCEDE char(1),
    ROMANEIO_NRO integer,
    ROMANEIO_DATA date,
    TOKEN varchar(256),
    CODMARKET integer,
    VLR_PIX numeric(15,2),
    NFE_DADOS blob sub_type 0 segment size 80,
    FLG_EXC char(1),
    NFE_SERIE integer)
as
begin
if (operacao = 1) then
insert into MOVTO (CODIGO,FLG_CODMOV,DATA,NOTA_FISCAL,SERIE,CUPOM_FISCAL,NRO_ECF,DATA_SAIDA,COD_CLI,COD_FOR,COD_FUNC,COD_TRIB,COD_END_CLI,VLR_DESC,VLR_ACRES,VLR_FRETE,PORC_FRETE,
VLR_TOTAL,TOTAL_NF,TIPO_RECEB,OBSERV1,OBSERV2,OBSERV3,TRANS_NOME,TRANS_END,TRANS_CIDADE,TRANS_CIDADEUF,TRANS_PLACA,TRANS_PLACAUF,TRANS_FRETE,TRANS_CNPJ_CPF,TRANS_IE_RG,CODREC_DEVOLUCAO,
COD_CAIXA,FLG_CANCEL,MOTIVO_CANCEL,NF_DATA,NF_DATA_SAIDA,NF_HORA,NF_CPF,PLACA,DATA_ENTREGA,FLG_ABERTO,VLR_DINH,VLR_CHVISTA,VLR_CHPRE,VLR_CARTAO,NFE_NRO,NFE_STATUS,NFE_CAMINHO,
NFE_CHAVE,NFE_OBSERV,VLR_DEBITO,VLR_PRAZO,VLR_OUTROS,COD_EMPRESA,NOME_VEICULO,VOL_QUANT,VOL_ESPECIE,VOL_MARCA,VOL_NRO,VOL_BRUTO,VOL_LIQUIDO,NFE_REF1,NFE_REF2,NFE_REF3,COD_MAO_OBRA,SAT_NRO,SAT_STATUS,SAT_CAMINHO,SAT_CHAVE,
DT_COMISSAO,NF_NOME,COD_CONVENIO,COD_MESA,COD_PARCELA,FLG_PRECO,LOCAL_DESEMB,UF_DESEMB,NRO_DI,DT_DI,COD_EXPORT,COD_FABRIC,TP_TRANS,NFE_REF4,VLR_IMPORT,OBS_ADICIONAL,FLG_PROCEDE,ROMANEIO_NRO,ROMANEIO_DATA,TOKEN, CODMARKET, VLR_PIX, NFE_DADOS, FLG_EXC, NFE_SERIE)
values (:CODIGO,:FLG_CODMOV,:DATA,:NOTA_FISCAL,:SERIE,:CUPOM_FISCAL,:NRO_ECF,:DATA_SAIDA,:COD_CLI,:COD_FOR,:COD_FUNC,:COD_TRIB,:COD_END_CLI,:VLR_DESC,:VLR_ACRES,:VLR_FRETE,
:PORC_FRETE,:VLR_TOTAL,:TOTAL_NF,:TIPO_RECEB,:OBSERV1,:OBSERV2,:OBSERV3,:TRANS_NOME,:TRANS_END,:TRANS_CIDADE,:TRANS_CIDADEUF,:TRANS_PLACA,:TRANS_PLACAUF,:TRANS_FRETE,
:TRANS_CNPJ_CPF,:TRANS_IE_RG,:CODREC_DEVOLUCAO,:COD_CAIXA,:FLG_CANCEL,:MOTIVO_CANCEL,:NF_DATA,:NF_DATA_SAIDA,:NF_HORA,:NF_CPF,:PLACA,:DATA_ENTREGA,:FLG_ABERTO,
:VLR_DINH,:VLR_CHVISTA,:VLR_CHPRE,:VLR_CARTAO,:NFE_NRO,:NFE_STATUS,:NFE_CAMINHO,:NFE_CHAVE,:NFE_OBSERV,:VLR_DEBITO,:VLR_PRAZO,:VLR_OUTROS,:COD_EMPRESA,:NOME_VEICULO,
:VOL_QUANT,:VOL_ESPECIE,:VOL_MARCA,:VOL_NRO,:VOL_BRUTO,:VOL_LIQUIDO,:NFE_REF1,:NFE_REF2,:NFE_REF3,:COD_MAO_OBRA,:SAT_NRO,:SAT_STATUS,:SAT_CAMINHO,:SAT_CHAVE,:DT_COMISSAO,:NF_NOME,:COD_CONVENIO,:COD_MESA,:COD_PARCELA,:FLG_PRECO,
:LOCAL_DESEMB,:UF_DESEMB,:NRO_DI,:DT_DI,:COD_EXPORT,:COD_FABRIC,:TP_TRANS,:NFE_REF4,:VLR_IMPORT,:OBS_ADICIONAL,:FLG_PROCEDE,:ROMANEIO_NRO,:ROMANEIO_DATA,:TOKEN,:CODMARKET,:VLR_PIX, :NFE_DADOS, :FLG_EXC, :NFE_SERIE);

if (operacao = 2) then
update MOVTO set
FLG_CODMOV = :FLG_CODMOV,
DATA = :DATA,
NOTA_FISCAL = :NOTA_FISCAL,
SERIE = :SERIE,
CUPOM_FISCAL = :CUPOM_FISCAL,
NRO_ECF = :NRO_ECF,
DATA_SAIDA = :DATA_SAIDA,
COD_CLI = :COD_CLI,
COD_FOR = :COD_FOR,
COD_FUNC = :COD_FUNC,
COD_TRIB = :COD_TRIB,
COD_END_CLI = :COD_END_CLI,
VLR_DESC = :VLR_DESC,
VLR_ACRES = :VLR_ACRES,
VLR_FRETE = :VLR_FRETE,
PORC_FRETE = :PORC_FRETE,
VLR_TOTAL = :VLR_TOTAL,
TOTAL_NF = :TOTAL_NF,
TIPO_RECEB = :TIPO_RECEB,
OBSERV1 = :OBSERV1,
OBSERV2 = :OBSERV2,
OBSERV3 = :OBSERV3,
TRANS_NOME = :TRANS_NOME,
TRANS_END = :TRANS_END,
TRANS_CIDADE = :TRANS_CIDADE,
TRANS_CIDADEUF = :TRANS_CIDADEUF,
TRANS_PLACA = :TRANS_PLACA,
TRANS_PLACAUF = :TRANS_PLACAUF,
TRANS_FRETE = :TRANS_FRETE,
TRANS_CNPJ_CPF = :TRANS_CNPJ_CPF,
TRANS_IE_RG = :TRANS_IE_RG,
CODREC_DEVOLUCAO = :CODREC_DEVOLUCAO,
COD_CAIXA = :COD_CAIXA,
FLG_CANCEL = :FLG_CANCEL,
MOTIVO_CANCEL = :MOTIVO_CANCEL,
NF_DATA = :NF_DATA,
NF_DATA_SAIDA = :NF_DATA_SAIDA,
NF_HORA = :NF_HORA,
NF_CPF = :NF_CPF,
PLACA = :PLACA,
DATA_ENTREGA = :DATA_ENTREGA,
FLG_ABERTO = :FLG_ABERTO,
VLR_DINH = :VLR_DINH,
VLR_CHVISTA = :VLR_CHVISTA,
VLR_CHPRE = :VLR_CHPRE,
VLR_CARTAO = :VLR_CARTAO,
NFE_NRO = :NFE_NRO,
NFE_STATUS = :NFE_STATUS,
NFE_CAMINHO = :NFE_CAMINHO,
NFE_CHAVE = :NFE_CHAVE,
NFE_OBSERV = :NFE_OBSERV,
VLR_DEBITO = :VLR_DEBITO,
VLR_PRAZO = :VLR_PRAZO,
VLR_OUTROS = :VLR_OUTROS,
COD_EMPRESA = :COD_EMPRESA,
NOME_VEICULO = :NOME_VEICULO,
VOL_QUANT = :VOL_QUANT,
VOL_ESPECIE = :VOL_ESPECIE,
VOL_MARCA = :VOL_MARCA,
VOL_NRO = :VOL_NRO,
VOL_BRUTO = :VOL_BRUTO,
VOL_LIQUIDO = :VOL_LIQUIDO,
NFE_REF1 = :NFE_REF1,
NFE_REF2 = :NFE_REF2,
NFE_REF3 = :NFE_REF3,
COD_MAO_OBRA = :COD_MAO_OBRA,
SAT_NRO = :SAT_NRO,
SAT_STATUS = :SAT_STATUS,
SAT_CAMINHO = :SAT_CAMINHO,
SAT_CHAVE = :SAT_CHAVE,
DT_COMISSAO = :DT_COMISSAO,
NF_NOME = :NF_NOME,
COD_CONVENIO = :COD_CONVENIO,
COD_MESA = :COD_MESA,
COD_PARCELA = :COD_PARCELA,
FLG_PRECO = :FLG_PRECO,
LOCAL_DESEMB  = :LOCAL_DESEMB,
UF_DESEMB = :UF_DESEMB,
NRO_DI = :NRO_DI,
DT_DI = :DT_DI,
COD_EXPORT = :COD_EXPORT,
COD_FABRIC = :COD_FABRIC,
TP_TRANS = :TP_TRANS,
NFE_REF4 = :NFE_REF4,
VLR_IMPORT = :VLR_IMPORT,
OBS_ADICIONAL = :OBS_ADICIONAL,
FLG_PROCEDE = :FLG_PROCEDE,
ROMANEIO_NRO = :ROMANEIO_NRO,
ROMANEIO_DATA = :ROMANEIO_DATA,
TOKEN = :TOKEN,
CODMARKET = :CODMARKET,
VLR_PIX = :VLR_PIX,
NFE_DADOS = :NFE_DADOS,
FLG_EXC = :FLG_EXC,
NFE_SERIE = :NFE_SERIE
where (CODIGO = :CODIGO);
if (operacao = 3) then
delete from MOVTO
where (CODIGO = :CODIGO);
suspend;
end
^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0004','FUNCIONARIOS','CADASTROS','GRAVA_FINANC','GRAVAR LIVRO CAIXA NO FINANCEIRO','NAO','SIM;NAO','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0068','CONTROLE DOS CARTOES','GERENCIAL','GRAVA_FINANC','GRAVAR BAIXA DE CARTAO NO FINANCEIRO','NAO','SIM;NAO','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0011','BAIXA RECEBER','CONTAS A RECEBER','GRAVA_FINANC','GRAVAR BAIXA DE CONTA NO FINANCEIRO','NAO','SIM;NAO','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0013','BAIXA PAGAR','CONTAS A PAGAR','GRAVA_FINANC','GRAVAR BAIXA DE CONTA NO FINANCEIRO','NAO','NAO;UNICO;INDIVIDUAL','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0031','OUTROS LANCAMENTOS','CAIXA','GRAVA_FINANC','GRAVAR OUTROS LANCAMENTOS NO FINANCEIRO','NAO','SIM;NAO','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0026','FECHAMENTO','CAIXA','GRAVA_FINANC','GRAVAR FECHAMENTO DE CAIXA NO FINANCEIRO','NAO','SIM;NAO','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0020B','CONTROLE DOS CHEQUES','GERENCIAL','GRAVA_FINANC','GRAVAR BAIXA DE CHEQUE NO FINANCEIRO','NAO','SIM;NAO','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0020C','CONTROLE DOS CHEQUES','GERENCIAL','GRAVA_FINANC','GRAVAR TROCA DE CHEQUE NO FINANCEIRO','NAO','SIM;NAO','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0012D','REMESSA/RETORNO','CONTAS A RECEBER','GRAVA_FINANC','GRAVAR RETORNO DE BOLETO NO FINANCEIRO','NAO','SIM;NAO','N')
^
insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0068B','CONTROLE DOS CARTOES','GERENCIAL','GRAVA_FINANC','GRAVAR CSV NO FINANCEIRO','NAO','SIM;NAO','N')
^
update configuracao set nome_tela = 'BAIXA RECEBER' where campo = 'FLG_PERDIDO'
^
update configuracao set valor = 'SIM'
where (campo = 'GRAVA_FINANC') and (cod_tela = 'SG_0011')
and exists (select codigo from empresa where (nivel = 5) or (nivel = 10) or (nivel = 14)
or (nivel = 89) or (nivel = 154) or (cnpj = '15.507.360/0001-51'))
^
update configuracao set valor = 'INDIVIDUAL'
where (campo = 'GRAVA_FINANC') and (cod_tela = 'SG_0013')
and exists (select codigo from empresa where (nivel = 4) or (nivel = 8) or (nivel = 10)
or (nivel = 14) or (nivel = 89) or (nivel = 154) or (cnpj = '55.862.031/0001-43'))
^
update configuracao set valor = 'UNICO'
where (campo = 'GRAVA_FINANC') and (cod_tela = 'SG_0013')
and exists (select codigo from empresa where (nivel = 3) or (nivel = 24) or (nivel = 44)
or (nivel = 49) or (nivel = 79) or (nivel = 92))
^
update configuracao set valor = 'SIM'
where (campo = 'GRAVA_FINANC') and (cod_tela = 'SG_0026')
and exists (select codigo from empresa where (nivel <> 8) and (nivel <> 14) 
and (nivel <> 151) and (cnpj <> '55.862.031/0001-43'))
^
CREATE TABLE PIX (
    CODIGO       INTEGER NOT NULL,
    NOME         VARCHAR(60) NOT NULL,
    AGENCIA      INTEGER NOT NULL,
    DIG_AGENCIA  INTEGER NOT NULL,
    CONTA        INTEGER NOT NULL,
    DIG_CONTA    INTEGER NOT NULL,
    COD_BANCO    INTEGER NOT NULL,
    FLG_ATIVO    CHAR(1) NOT NULL,
    OBS          VARCHAR(100)
);

^

ALTER TABLE PIX ADD CONSTRAINT PK_PIX PRIMARY KEY (CODIGO);

^

create or alter procedure P_PIX (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    AGENCIA integer,
    DIG_AGENCIA integer,
    CONTA integer,
    DIG_CONTA integer,
    COD_BANCO integer,
    FLG_ATIVO char(1),
    OBS varchar(100))
as 
begin
  if (operacao = 1) then
     insert into PIX (CODIGO,NOME,AGENCIA,DIG_AGENCIA,CONTA,DIG_CONTA,COD_BANCO,FLG_ATIVO,OBS)
     values (:CODIGO,:NOME,:AGENCIA,:DIG_AGENCIA,:CONTA,:DIG_CONTA,:COD_BANCO,:FLG_ATIVO,:OBS);

  if (operacao = 2) then
     update PIX set
     NOME = :NOME,
     AGENCIA = :AGENCIA,
     DIG_AGENCIA = :DIG_AGENCIA,
     CONTA = :CONTA,
     DIG_CONTA = :DIG_CONTA,
     COD_BANCO = :COD_BANCO,
     FLG_ATIVO = :FLG_ATIVO,
     OBS = :OBS
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from PIX
     where (CODIGO = :CODIGO);

  suspend;
end

^

CREATE OR ALTER TRIGGER TRG_PIX FOR PIX
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable cod integer;
begin
  select max(codigo) from PIX into :cod;

  if (cod is null) then
    cod = 0;

  new.codigo = cod + 1;
end

^

CREATE TABLE MOV_PIX (
    CODIGO        INTEGER NOT NULL,
    COD_PIX       INTEGER NOT NULL,
    CODMOV        INTEGER,
    CODREC        INTEGER,
    ORDREC        INTEGER,
    PARCELA       VARCHAR(60) NOT NULL,
    DT_EMISSAO    DATE NOT NULL,
    DT_VENCTO     DATE NOT NULL,
    DT_PAGTO      DATE,
    VLR_PARC      NUMERIC(15,2) NOT NULL,
    VLR_DESC      NUMERIC(15,2),
    VLR_LIQUIDO   NUMERIC(15,2) NOT NULL,
    OBSERVACAO    VARCHAR(60),
    AGRUPA        CHAR(1),
    VLR_ANTECIPA  NUMERIC(15,2),
    CODPAG        INTEGER,
    ORDPAG        INTEGER
);

^

ALTER TABLE MOV_PIX ADD CONSTRAINT PK_MOV_PIX PRIMARY KEY (CODIGO);

^

ALTER TABLE MOV_PIX ADD CONSTRAINT FK_MOV_PIX1 FOREIGN KEY (COD_PIX) REFERENCES PIX (CODIGO);

^

CREATE OR ALTER TRIGGER TRG_MOVPIX FOR MOV_PIX
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable cod integer;
begin
  select max(codigo) from MOV_PIX into :cod;

  if (cod is null) then
    cod = 0;

  new.codigo = cod + 1;
end

^

create or alter procedure P_MOVPIX (
    OPERACAO integer,
    CODIGO integer,
    COD_PIX integer,
    CODMOV integer,
    CODREC integer,
    ORDREC integer,
    PARCELA varchar(10),
    DT_EMISSAO date,
    DT_VENCTO date,
    DT_PAGTO date,
    VLR_PARC numeric(15,2),
    VLR_DESC numeric(15,2),
    VLR_LIQUIDO numeric(15,2),
    OBSERVACAO varchar(60),
    AGRUPA char(1),
    VLR_ANTECIPA numeric(15,2),
    CODPAG integer,
    ORDPAG integer)
as
begin
if (operacao = 1) then
insert into MOV_PIX (CODIGO,COD_PIX,CODMOV,CODREC,ORDREC,PARCELA,DT_EMISSAO,DT_VENCTO,DT_PAGTO,VLR_PARC,VLR_DESC,VLR_LIQUIDO,OBSERVACAO,AGRUPA,VLR_ANTECIPA,CODPAG,ORDPAG)
values (:CODIGO,:COD_PIX,:CODMOV,:CODREC,:ORDREC,:PARCELA,:DT_EMISSAO,:DT_VENCTO,:DT_PAGTO,:VLR_PARC,:VLR_DESC,:VLR_LIQUIDO,:OBSERVACAO,:AGRUPA,:VLR_ANTECIPA,:CODPAG,:ORDPAG);
if (operacao = 2) then
update MOV_PIX set
COD_PIX = :COD_PIX,
CODMOV = :CODMOV,
CODREC = :CODREC,
ORDREC = :ORDREC,
PARCELA = :PARCELA,
DT_EMISSAO = :DT_EMISSAO,
DT_VENCTO = :DT_VENCTO,
DT_PAGTO = :DT_PAGTO,
VLR_PARC = :VLR_PARC,
VLR_DESC = :VLR_DESC,
VLR_LIQUIDO = :VLR_LIQUIDO,
OBSERVACAO = :OBSERVACAO,
AGRUPA = :AGRUPA,
VLR_ANTECIPA = :VLR_ANTECIPA,
CODPAG = :CODPAG,
ORDPAG = :ORDPAG
where (CODIGO = :CODIGO);
if (operacao = 3) then
delete from MOV_PIX
where (CODIGO = :CODIGO);
suspend;
end

^

ALTER TABLE PARAMETROS
ADD CAMINHO_NFE VARCHAR(200),
ADD CAMINHO_CFE VARCHAR(200),
ADD CAMINHO_NFCE VARCHAR(200),
ADD CAMINHO_VENDA VARCHAR(200),
ADD CAMINHO_OS VARCHAR(200)

^

alter table RECEBER
ADD COD_SIT integer;

^

create or alter procedure P_RECEBER (
    OPERACAO integer,
    CODIGO integer,
    PARCELA integer,
    CODMOV integer,
    COD_CLI integer,
    DT_VENDA date,
    DT_VENCTO date,
    VLR_PARC numeric(15,2),
    VLR_ACRES numeric(15,2),
    VLR_DESC numeric(15,2),
    SALDO numeric(15,2),
    CRED_DEB char(10),
    HISTORICO varchar(100),
    CUPOM_FISCAL integer,
    DOCUMENTO varchar(20),
    SERIE varchar(3),
    COD_CAIXA integer,
    CB_NOSSO_NRO varchar(20),
    CB_DOC_NRO integer,
    FLG_BOLETO_DESC char(1),
    FLG_PERDIDO char(1),
    OBS_COBRANCA varchar(400),
    COD_EMPRESA integer,
    DT_BOLETO date,
    FLG_REMESSA char(1),
    BCO_BOLETO_DESC integer,
    BCO_BOLETO integer,
    COD_REPARCELA integer,
    COD_SIT integer)
as
begin  
if (operacao = 1) then 
INSERT INTO RECEBER (CODIGO,PARCELA,CODMOV,COD_CLI,DT_VENDA,DT_VENCTO,VLR_PARC,VLR_ACRES,VLR_DESC,SALDO,CRED_DEB,HISTORICO,CUPOM_FISCAL,DOCUMENTO,SERIE,COD_CAIXA,CB_NOSSO_NRO,CB_DOC_NRO,
FLG_BOLETO_DESC,FLG_PERDIDO,OBS_COBRANCA,COD_EMPRESA,DT_BOLETO,FLG_REMESSA,BCO_BOLETO_DESC,BCO_BOLETO,COD_REPARCELA, COD_SIT)
VALUES (:CODIGO,:PARCELA,:CODMOV,:COD_CLI,:DT_VENDA,:DT_VENCTO,:VLR_PARC,:VLR_ACRES,:VLR_DESC,:SALDO,:CRED_DEB,:HISTORICO,:CUPOM_FISCAL,:DOCUMENTO,:SERIE,:COD_CAIXA,:CB_NOSSO_NRO, 
:CB_DOC_NRO,:FLG_BOLETO_DESC,:FLG_PERDIDO,:OBS_COBRANCA,:COD_EMPRESA,:DT_BOLETO,:FLG_REMESSA,:BCO_BOLETO_DESC,:BCO_BOLETO,:COD_REPARCELA, :COD_SIT);
if (operacao = 2) then 
UPDATE RECEBER SET 
PARCELA = :PARCELA, 
CODMOV = :CODMOV, 
COD_CLI = :COD_CLI, 
DT_VENDA = :DT_VENDA, 
DT_VENCTO = :DT_VENCTO, 
VLR_PARC = :VLR_PARC, 
VLR_ACRES = :VLR_ACRES, 
VLR_DESC = :VLR_DESC, 
SALDO = :SALDO, 
CRED_DEB = :CRED_DEB, 
HISTORICO = :HISTORICO, 
CUPOM_FISCAL = :CUPOM_FISCAL, 
DOCUMENTO = :DOCUMENTO,
SERIE = :SERIE, 
COD_CAIXA = :COD_CAIXA, 
CB_NOSSO_NRO = :CB_NOSSO_NRO, 
CB_DOC_NRO = :CB_DOC_NRO, 
FLG_BOLETO_DESC = :FLG_BOLETO_DESC, 
FLG_PERDIDO = :FLG_PERDIDO, 
OBS_COBRANCA = :OBS_COBRANCA, 
COD_EMPRESA = :COD_EMPRESA, 
DT_BOLETO = :DT_BOLETO, 
FLG_REMESSA = : FLG_REMESSA, 
BCO_BOLETO_DESC = :BCO_BOLETO_DESC, 
BCO_BOLETO = :BCO_BOLETO, 
COD_REPARCELA = :COD_REPARCELA,
COD_SIT = :COD_SIT
WHERE (CODIGO = :CODIGO); 
if (operacao = 3) then 
delete from RECEBER 
where (CODIGO = :CODIGO); 
suspend; 
end
^

insert into configuracao (cod_tela,nome_tela,menu,campo,descricao,valor,valido,flg_restrito)
values ('SG_0032','PRODUTOS','CADASTROS','FLG_SUBGRUPO','EXIBIR SUBGRUPO','NAO','SIM;NAO','N')
^
update configuracao set valor = 'SIM'
where (campo = 'FLG_SUBGRUPO') and (cod_tela = 'SG_0032')
and exists (select codigo from empresa where (nivel = 15) or (nivel = 25) or (nivel = 30)
or (nivel = 34) or (nivel = 92) or (cnpj = '43.858.266/0001-82'))

^


CREATE TABLE NFSE(
CODIGOVERIFICA VARCHAR(19) NOT NULL,
DESCSERVICO VARCHAR(4000) NOT NULL,
SERVICOPRESTADO VARCHAR(1000) NOT NULL,
VALORNOTA NUMERIC(15,2) NOT NULL,
VALORDEDUCOES NUMERIC(15,2) NOT NULL,
VALORBASECALCULO NUMERIC(15,2) NOT NULL,
ALIQUOTA NUMERIC(15,2) NOT NULL,
VALORISS NUMERIC(15,2) NOT NULL,
VALORCREDITO NUMERIC(15,2) NOT NULL,
LOCALEXECUCAO VARCHAR(50) NOT NULL,
RETIDONAFONTE VARCHAR(5) NOT NULL,
CPFCNPJPRESTADOR VARCHAR(20) NOT NULL,
NOMERAZAOPRESTADOR VARCHAR(120) NOT NULL,
ENDERECOPRESTADOR VARCHAR(120) NOT NULL,
CIDADEPRESTADOR VARCHAR(100) NOT NULL,
IMPRESTADOR VARCHAR(30) NOT NULL,
ESTADOPRESTADOR VARCHAR(2) NOT NULL,
TIPOTRIBUTACAO VARCHAR(100) NOT NULL,
NATUREZAOPERACAO VARCHAR(100) NOT NULL,
EMAILPRESTADOR VARCHAR(60) NOT NULL,
CPFCNPJTOMADOR VARCHAR(20) NOT NULL,
NOMERAZAOTOMADOR VARCHAR(120) NOT NULL,
ENDERECOTOMADOR VARCHAR(120) NOT NULL,
CIDADETOMADOR VARCHAR(100) NOT NULL,
IMTOMADOR VARCHAR(30),
IERGTOMADOR VARCHAR(30),
ESTADOTOMADOR VARCHAR(2) NOT NULL,
IERGPRESTADOR VARCHAR(30),
CEPPRESTADOR VARCHAR(10) NOT NULL,
EMAILTOMADOR VARCHAR(60),
CEPTOMADOR VARCHAR(10) NOT NULL,
DATAHORAEMISSAO TIMESTAMP NOT NULL,
DATAHORAEMISSAORPS TIMESTAMP NOT NULL,
MOTIVOCANCELAMENTO VARCHAR(500),
NUMERORPS VARCHAR(19) NOT NULL,
NUMERONFSE VARCHAR(19) NOT NULL,
TIPOMOVIMENTO VARCHAR(10),
CODMOV INTEGER,
STATUS VARCHAR(20) NOT NULL);
^

CREATE GENERATOR GEN_NFSE_ID;
^
GRANT ALL ON NFSE TO SYSDBA WITH GRANT OPTION;
^

ALTER TABLE MOVTO_OS
ADD PRAZO_OS VARCHAR(60)
^
create or alter procedure P_MOVTO_OS (
    OPERACAO integer,
    CODIGO integer,
    CODMOV integer,
    NRO_OS integer,
    DATA_SAIDA date,
    MARCA varchar(60),
    MODELO varchar(60),
    ESNHEX varchar(60),
    FLG_BATERIA char(1),
    FLG_MESA char(1),
    FLG_CHIP char(1),
    FLG_CARTAO char(1),
    FLG_OPERADORA char(1),
    FLG_ESTADO char(1),
    GARANTIA integer,
    OBSERVACAO varchar(100),
    STATUS varchar(20),
    COD_PROD1 integer,
    COD_PROD2 integer,
    COD_PROD3 integer,
    FOTO1 varchar(200),
    FOTO2 varchar(200),
    FOTO3 varchar(200),
    FOTO4 varchar(200),
    FOTO5 varchar(200),
    COD_TECNICO integer,
    FOTO6 varchar(200),
    FOTO7 varchar(200),
    COD_STATUS integer,
    PRAZO_OS varchar(60))
as
begin
  if (operacao = 1) then
insert into MOVTO_OS (CODIGO,CODMOV,NRO_OS,DATA_SAIDA,MARCA,MODELO,ESNHEX,FLG_BATERIA,FLG_MESA,FLG_CHIP,FLG_CARTAO,FLG_OPERADORA,FLG_ESTADO,GARANTIA,OBSERVACAO,STATUS,COD_PROD1,
COD_PROD2,COD_PROD3,FOTO1,FOTO2,FOTO3,FOTO4,FOTO5,COD_TECNICO,FOTO6,FOTO7, COD_STATUS, PRAZO_OS)
  values (:CODIGO,:CODMOV,:NRO_OS,:DATA_SAIDA,:MARCA,:MODELO,:ESNHEX,:FLG_BATERIA,:FLG_MESA,:FLG_CHIP,:FLG_CARTAO,:FLG_OPERADORA,:FLG_ESTADO,:GARANTIA,:OBSERVACAO,:STATUS,
:cod_prod1,:cod_prod2,:COD_PROD3,:FOTO1,:FOTO2,:FOTO3,:FOTO4,:FOTO5,:COD_TECNICO,:FOTO6,:FOTO7, :COD_STATUS, :PRAZO_OS);
 if (operacao = 2) then
 update MOVTO_OS set 
 CODMOV = :CODMOV, 
 NRO_OS = :NRO_OS,   
 DATA_SAIDA = :DATA_SAIDA,  
 MARCA = :MARCA, 
 MODELO = :MODELO,  
 ESNHEX = :ESNHEX, 
 FLG_BATERIA = :FLG_BATERIA, 
 FLG_MESA = :FLG_MESA, 
 FLG_CHIP = :FLG_CHIP,  
 FLG_CARTAO = :FLG_CARTAO, 
 FLG_OPERADORA = :FLG_OPERADORA, 
 FLG_ESTADO = :FLG_ESTADO, 
 GARANTIA = :GARANTIA, 
 OBSERVACAO = :OBSERVACAO, 
 STATUS = :STATUS, 
 COD_PROD1 = :cod_prod1, 
 COD_PROD2 = :cod_prod2, 
 COD_PROD3 = :cod_prod3, 
 FOTO1 = :FOTO1, 
 FOTO2 = :FOTO2, 
 FOTO3 = :FOTO3, 
 FOTO4 = :FOTO4, 
 FOTO5 = :FOTO5, 
 COD_TECNICO = :COD_TECNICO, 
 FOTO6 = :FOTO6, 
 FOTO7 = :FOTO7,
 COD_STATUS = :COD_STATUS,
 PRAZO_OS = :PRAZO_OS
    WHERE (CODIGO = :CODIGO);
  if (operacao = 3) then
     delete from MOVTO_OS
     where (CODIGO = :CODIGO);
  suspend;
end
^

ALTER TABLE MOVTO_OS
ADD PRAZO_OS VARCHAR(60)
^
create or alter procedure P_MOVTO_OS (
    OPERACAO integer,
    CODIGO integer,
    CODMOV integer,
    NRO_OS integer,
    DATA_SAIDA date,
    MARCA varchar(60),
    MODELO varchar(60),
    ESNHEX varchar(60),
    FLG_BATERIA char(1),
    FLG_MESA char(1),
    FLG_CHIP char(1),
    FLG_CARTAO char(1),
    FLG_OPERADORA char(1),
    FLG_ESTADO char(1),
    GARANTIA integer,
    OBSERVACAO varchar(100),
    STATUS varchar(20),
    COD_PROD1 integer,
    COD_PROD2 integer,
    COD_PROD3 integer,
    FOTO1 varchar(200),
    FOTO2 varchar(200),
    FOTO3 varchar(200),
    FOTO4 varchar(200),
    FOTO5 varchar(200),
    COD_TECNICO integer,
    FOTO6 varchar(200),
    FOTO7 varchar(200),
    COD_STATUS integer,
    PRAZO_OS varchar(60))
as
begin
  if (operacao = 1) then
insert into MOVTO_OS (CODIGO,CODMOV,NRO_OS,DATA_SAIDA,MARCA,MODELO,ESNHEX,FLG_BATERIA,FLG_MESA,FLG_CHIP,FLG_CARTAO,FLG_OPERADORA,FLG_ESTADO,GARANTIA,OBSERVACAO,STATUS,COD_PROD1,
COD_PROD2,COD_PROD3,FOTO1,FOTO2,FOTO3,FOTO4,FOTO5,COD_TECNICO,FOTO6,FOTO7, COD_STATUS, PRAZO_OS)
  values (:CODIGO,:CODMOV,:NRO_OS,:DATA_SAIDA,:MARCA,:MODELO,:ESNHEX,:FLG_BATERIA,:FLG_MESA,:FLG_CHIP,:FLG_CARTAO,:FLG_OPERADORA,:FLG_ESTADO,:GARANTIA,:OBSERVACAO,:STATUS,
:cod_prod1,:cod_prod2,:COD_PROD3,:FOTO1,:FOTO2,:FOTO3,:FOTO4,:FOTO5,:COD_TECNICO,:FOTO6,:FOTO7, :COD_STATUS, :PRAZO_OS);
 if (operacao = 2) then
 update MOVTO_OS set 
 CODMOV = :CODMOV, 
 NRO_OS = :NRO_OS,   
 DATA_SAIDA = :DATA_SAIDA,  
 MARCA = :MARCA, 
 MODELO = :MODELO,  
 ESNHEX = :ESNHEX, 
 FLG_BATERIA = :FLG_BATERIA, 
 FLG_MESA = :FLG_MESA, 
 FLG_CHIP = :FLG_CHIP,  
 FLG_CARTAO = :FLG_CARTAO, 
 FLG_OPERADORA = :FLG_OPERADORA, 
 FLG_ESTADO = :FLG_ESTADO, 
 GARANTIA = :GARANTIA, 
 OBSERVACAO = :OBSERVACAO, 
 STATUS = :STATUS, 
 COD_PROD1 = :cod_prod1, 
 COD_PROD2 = :cod_prod2, 
 COD_PROD3 = :cod_prod3, 
 FOTO1 = :FOTO1, 
 FOTO2 = :FOTO2, 
 FOTO3 = :FOTO3, 
 FOTO4 = :FOTO4, 
 FOTO5 = :FOTO5, 
 COD_TECNICO = :COD_TECNICO, 
 FOTO6 = :FOTO6, 
 FOTO7 = :FOTO7,
 COD_STATUS = :COD_STATUS,
 PRAZO_OS = :PRAZO_OS
    WHERE (CODIGO = :CODIGO);
  if (operacao = 3) then
     delete from MOVTO_OS
     where (CODIGO = :CODIGO);
  suspend;
end

^

ALTER TABLE PRODUTO
ADD PORC_OFERTA NUMERIC(15,2)
^
ALTER TABLE PROD_UNID
ADD PORC_OFERTA NUMERIC(15,2)
^
create or alter procedure P_PRODUTO (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    COD_GRUPO integer,
    COD_FORNECEDOR integer,
    MARCA varchar(200),
    UNIDADE_ESTOQUE varchar(10),
    UNIDADE_CONVERSAO varchar(10),
    QTD_EMBALAGEM numeric(15,4),
    PORC_LUCRO_V numeric(15,2),
    PORC_LUCRO_P numeric(15,2),
    PORC_ICMS_ISS numeric(15,2),
    PORC_COMISSAO integer,
    COD_CST varchar(10),
    ESTOQUE_INICIAL numeric(15,3),
    ESTOQUE_MINIMO numeric(15,3),
    ESTOQUE_ATUAL numeric(15,3),
    ESTOQUE_FISCAL numeric(15,3),
    COD_TRIB integer,
    COD_TRIB_ENT integer,
    SIT_TRIB varchar(2),
    DT_CADASTRO date,
    FLG_ATIVADO char(1),
    FLG_ESTOQUE char(1),
    FLG_TIPO char(1),
    LOCALIZACAO varchar(60),
    OBSERVACAO varchar(100),
    OBSERVACAO2 varchar(100),
    DT_ALTERACAO date,
    TEMPO_REAL time,
    NCM varchar(20),
    COD_CSOSN integer,
    CONV_PRECO numeric(15,3),
    CST_PIS varchar(3),
    CST_COFINS varchar(3),
    COD_SUBGRUPO integer,
    COD_SUBSUBGRUPO integer,
    ESTOQUE1 numeric(15,3),
    ESTOQUE2 numeric(15,3),
    ESTOQUE3 numeric(15,3),
    ESTOQUE4 numeric(15,3),
    ESTOQUE5 numeric(15,3),
    PORC_PIS numeric(15,2),
    PORC_COFINS numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    DT_VALIDADE date,
    PORC_IPI numeric(15,2),
    PORC_MVA numeric(15,2),
    PESO_BRUTO numeric(15,3),
    PESO_LIQUIDO numeric(15,3),
    FOTO varchar(200),
    ANEXO varchar(100),
    COD_ANP varchar(10),
    LOCALIZACAO2 varchar(60),
    ETIQUETA integer,
    COD_CEST varchar(7),
    COD_EMPRESA integer,
    PORC_DESC numeric(15,2),
    FLG_DESC char(1),
    ESTOQUE_MAXIMO numeric(15,3),
    ESTOQUE_DEMANDA_MEDIA numeric(15,3),
    ESTOQUE_TEMPO_RESUPRI numeric(15,3),
    ESTOQUE_INTERVALO_RESUPRI numeric(15,3),
    COD_DESP integer,
    COD_MARCA integer,
    FLG_SITE char(1),
    FLG_BALANCA char(1),
    SITE_COMPRIMENTO numeric(15,2),
    SITE_LARGURA numeric(15,2),
    SITE_ALTURA numeric(15,2),
    SITE_DESCRICAO varchar(9999),
    SITE_SYNC char(1),
    SITE_COD integer,
    PORC_REDBASE numeric(15,2),
    PONTOS numeric(15,4),
    LOCALIZACAO21 varchar(60),
    LOCALIZACAO22 varchar(60),
    LOCALIZACAO31 varchar(60),
    LOCALIZACAO32 varchar(60),
    LOCALIZACAO41 varchar(60),
    LOCALIZACAO42 varchar(60),
    LOCALIZACAO51 varchar(60),
    LOCALIZACAO52 varchar(60),
    PORC_FCP numeric(15,2),
    FLG_TRIBUTO char(1),
    PORC_OFERTA numeric(15,2))
as
begin
if (OPERACAO = 1) then
insert into PRODUTO (CODIGO,NOME,COD_GRUPO,COD_FORNECEDOR,MARCA,UNIDADE_ESTOQUE,UNIDADE_CONVERSAO,QTD_EMBALAGEM,PORC_LUCRO_V,PORC_LUCRO_P,PORC_ICMS_ISS,PORC_COMISSAO,
COD_CST,ESTOQUE_INICIAL,ESTOQUE_MINIMO,ESTOQUE_ATUAL,ESTOQUE_FISCAL,COD_TRIB,COD_TRIB_ENT,SIT_TRIB,DT_CADASTRO,FLG_ATIVADO,FLG_ESTOQUE,FLG_TIPO,LOCALIZACAO,OBSERVACAO,
OBSERVACAO2,DT_ALTERACAO,TEMPO_REAL,NCM,COD_CSOSN,CONV_PRECO,CST_PIS,CST_COFINS,COD_SUBGRUPO,COD_SUBSUBGRUPO,ESTOQUE1,ESTOQUE2,ESTOQUE3,ESTOQUE4,ESTOQUE5,PORC_PIS,PORC_COFINS,
OBS_ADICIONAL,DT_VALIDADE,PORC_IPI,PORC_MVA,PESO_BRUTO,PESO_LIQUIDO,FOTO,ANEXO,COD_ANP,LOCALIZACAO2,ETIQUETA,COD_CEST,COD_EMPRESA,PORC_DESC,FLG_DESC,ESTOQUE_MAXIMO,ESTOQUE_DEMANDA_MEDIA,
ESTOQUE_TEMPO_RESUPRI,ESTOQUE_INTERVALO_RESUPRI,COD_DESP,COD_MARCA,FLG_SITE,FLG_BALANCA,SITE_COMPRIMENTO,SITE_LARGURA,SITE_ALTURA,SITE_DESCRICAO,SITE_SYNC,SITE_COD,PORC_REDBASE,PONTOS,
LOCALIZACAO21,LOCALIZACAO22,LOCALIZACAO31,LOCALIZACAO32,LOCALIZACAO41,LOCALIZACAO42,LOCALIZACAO51,LOCALIZACAO52, PORC_FCP, FLG_TRIBUTO,PORC_OFERTA)
values (:CODIGO,:NOME,:COD_GRUPO,:COD_FORNECEDOR,:MARCA,:UNIDADE_ESTOQUE,:UNIDADE_CONVERSAO,:QTD_EMBALAGEM,:PORC_LUCRO_V,:PORC_LUCRO_P,:PORC_ICMS_ISS,:PORC_COMISSAO,:COD_CST,:ESTOQUE_INICIAL,:ESTOQUE_MINIMO,
:ESTOQUE_ATUAL,:ESTOQUE_FISCAL,:COD_TRIB,:COD_TRIB_ENT,:SIT_TRIB,:DT_CADASTRO,:FLG_ATIVADO,:FLG_ESTOQUE,:FLG_TIPO,:LOCALIZACAO,:OBSERVACAO,:OBSERVACAO2,:DT_ALTERACAO,:TEMPO_REAL,:NCM,:COD_CSOSN, 
:CONV_PRECO,:CST_PIS,:CST_COFINS,:COD_SUBGRUPO,:COD_SUBSUBGRUPO,:ESTOQUE1,:ESTOQUE2,:ESTOQUE3,:ESTOQUE4,:ESTOQUE5,:PORC_PIS,:PORC_COFINS,:OBS_ADICIONAL,:DT_VALIDADE,:PORC_IPI,:PORC_MVA,:PESO_BRUTO, 
:PESO_LIQUIDO,:FOTO,:ANEXO,:COD_ANP,:LOCALIZACAO2,:ETIQUETA,:COD_CEST,
:COD_EMPRESA,:PORC_DESC,:FLG_DESC,:ESTOQUE_MAXIMO,:ESTOQUE_DEMANDA_MEDIA,:ESTOQUE_TEMPO_RESUPRI,:ESTOQUE_INTERVALO_RESUPRI,:COD_DESP,:COD_MARCA,:FLG_SITE,:FLG_BALANCA,
:SITE_COMPRIMENTO,:SITE_LARGURA,:SITE_ALTURA,:SITE_DESCRICAO,:SITE_SYNC,:SITE_COD,:PORC_REDBASE,:PONTOS,:LOCALIZACAO21,:LOCALIZACAO22,:LOCALIZACAO31,:LOCALIZACAO32,:LOCALIZACAO41, 
:LOCALIZACAO42,:LOCALIZACAO51,:LOCALIZACAO52,:PORC_FCP, :FLG_TRIBUTO, :PORC_OFERTA);
if (OPERACAO = 2) then
update PRODUTO set
NOME = :NOME,
COD_GRUPO = :COD_GRUPO,
COD_FORNECEDOR = :COD_FORNECEDOR,
MARCA = :MARCA,
UNIDADE_ESTOQUE = :UNIDADE_ESTOQUE,
UNIDADE_CONVERSAO = :UNIDADE_CONVERSAO,
QTD_EMBALAGEM = :QTD_EMBALAGEM,
PORC_LUCRO_V = :PORC_LUCRO_V,
PORC_LUCRO_P = :PORC_LUCRO_P,
PORC_ICMS_ISS = :PORC_ICMS_ISS,
PORC_COMISSAO = :PORC_COMISSAO,
COD_CST = :COD_CST,
ESTOQUE_INICIAL = :ESTOQUE_INICIAL,
ESTOQUE_MINIMO = :ESTOQUE_MINIMO, 
ESTOQUE_ATUAL = :ESTOQUE_ATUAL,
ESTOQUE_FISCAL = :ESTOQUE_FISCAL, 
COD_TRIB = :COD_TRIB,
COD_TRIB_ENT = :COD_TRIB_ENT,
SIT_TRIB = :SIT_TRIB,
DT_CADASTRO = :DT_CADASTRO,
FLG_ATIVADO = :FLG_ATIVADO,
FLG_ESTOQUE = :FLG_ESTOQUE,
FLG_TIPO = :FLG_TIPO,
LOCALIZACAO = :LOCALIZACAO,
OBSERVACAO = :OBSERVACAO,
OBSERVACAO2 = :OBSERVACAO2,
DT_ALTERACAO = :DT_ALTERACAO,
TEMPO_REAL = :TEMPO_REAL,
NCM = :NCM,
COD_CSOSN = :COD_CSOSN, 
CONV_PRECO = :CONV_PRECO,
CST_PIS = :CST_PIS,
CST_COFINS = :CST_COFINS,
COD_SUBGRUPO = :COD_SUBGRUPO,
COD_SUBSUBGRUPO = :COD_SUBSUBGRUPO,
ESTOQUE1 = :ESTOQUE1,
ESTOQUE2 = :ESTOQUE2,
ESTOQUE3 = :ESTOQUE3,
ESTOQUE4 = :ESTOQUE4,
ESTOQUE5 = :ESTOQUE5,
PORC_PIS = :PORC_PIS,
PORC_COFINS = :PORC_COFINS,
OBS_ADICIONAL = :OBS_ADICIONAL,
DT_VALIDADE = :DT_VALIDADE,
PORC_IPI = :PORC_IPI,
PORC_MVA = :PORC_MVA,
PESO_BRUTO = :PESO_BRUTO,
PESO_LIQUIDO = :PESO_LIQUIDO,
FOTO = :FOTO,
ANEXO = :ANEXO,
COD_ANP = :COD_ANP,
LOCALIZACAO2 = :LOCALIZACAO2,
ETIQUETA = :ETIQUETA,
COD_CEST = :COD_CEST,
COD_EMPRESA = :COD_EMPRESA,
PORC_DESC = :PORC_DESC,
FLG_DESC = :FLG_DESC,
ESTOQUE_MAXIMO = :ESTOQUE_MAXIMO,
ESTOQUE_DEMANDA_MEDIA = :ESTOQUE_DEMANDA_MEDIA,
ESTOQUE_TEMPO_RESUPRI = :ESTOQUE_TEMPO_RESUPRI,
ESTOQUE_INTERVALO_RESUPRI = :ESTOQUE_INTERVALO_RESUPRI,
COD_DESP = :COD_DESP,
COD_MARCA = :COD_MARCA,
FLG_SITE = :FLG_SITE,
FLG_BALANCA = :FLG_BALANCA,
SITE_COMPRIMENTO = :SITE_COMPRIMENTO,
SITE_LARGURA = :SITE_LARGURA,
SITE_ALTURA = :SITE_ALTURA,
SITE_DESCRICAO = :SITE_DESCRICAO,
SITE_SYNC = :SITE_SYNC,
SITE_COD = :SITE_COD,
PORC_REDBASE = :PORC_REDBASE,
PONTOS = :PONTOS,
LOCALIZACAO21 = :LOCALIZACAO21,
LOCALIZACAO22 = :LOCALIZACAO22,
LOCALIZACAO31 = :LOCALIZACAO31,
LOCALIZACAO32 = :LOCALIZACAO32,
LOCALIZACAO41 = :LOCALIZACAO41,
LOCALIZACAO42 = :LOCALIZACAO42,
LOCALIZACAO51 = :LOCALIZACAO51,
LOCALIZACAO52 = :LOCALIZACAO52,
PORC_FCP = :PORC_FCP,
FLG_TRIBUTO = :FLG_TRIBUTO,
PORC_OFERTA = :PORC_OFERTA
where (CODIGO = :CODIGO);
if (OPERACAO = 3) then
delete from PRODUTO 
where (CODIGO = :CODIGO);
suspend;
end
^

ALTER TABLE PROD_UNID
ADD SITE_COD INTEGER
^

create or alter procedure P_PROD_UNID (
    OPERACAO integer,
    CODIGO integer,
    COD_PROD integer,
    COD_UNID integer,
    COD_COR integer,
    ESTOQUE numeric(15,3),
    ESTOQUE_FISCAL numeric(15,3),
    PR_CUSTO numeric(15,2),
    PR_VISTA numeric(15,2),
    PR_PRAZO numeric(15,2),
    COD_BARRA varchar(60),
    DATA date,
    ESTOQUE1 numeric(15,3),
    ESTOQUE2 numeric(15,3),
    ESTOQUE3 numeric(15,3),
    ESTOQUE4 numeric(15,3),
    ESTOQUE5 numeric(15,3),
    REFERENCIA varchar(20),
    SITE_COD integer,
    PORC_OFERTA numeric(15,2))
as
begin
  if (operacao = 1) then
     insert into PROD_UNID (CODIGO, COD_PROD, COD_UNID, COD_COR, ESTOQUE, ESTOQUE_FISCAL, PR_CUSTO, PR_VISTA, PR_PRAZO, COD_BARRA, DATA, ESTOQUE1, ESTOQUE2, ESTOQUE3, ESTOQUE4, ESTOQUE5, REFERENCIA, SITE_COD, PORC_OFERTA)
     values (:CODIGO, :COD_PROD, :COD_UNID, :COD_COR, :ESTOQUE, :ESTOQUE_FISCAL, :PR_CUSTO, :PR_VISTA, :PR_PRAZO, :COD_BARRA, :DATA, :ESTOQUE1, :ESTOQUE2, :ESTOQUE3, :ESTOQUE4, :ESTOQUE5, :REFERENCIA, :SITE_COD, :PORC_OFERTA);

  if (operacao = 2) then
     update PROD_UNID set
     COD_PROD = :COD_PROD,
     COD_UNID = :COD_UNID,
     COD_COR = :COD_COR,
     ESTOQUE = :ESTOQUE,
     ESTOQUE_FISCAL = :ESTOQUE_FISCAL,
     PR_CUSTO = :PR_CUSTO,
     PR_VISTA = :PR_VISTA,
     PR_PRAZO = :PR_PRAZO,
     COD_BARRA = :COD_BARRA,
     DATA = :DATA,
     ESTOQUE1 = :ESTOQUE1,
     ESTOQUE2 = :ESTOQUE2,
     ESTOQUE3 = :ESTOQUE3,
     ESTOQUE4 = :ESTOQUE4,
     ESTOQUE5 = :ESTOQUE5,
     REFERENCIA = :REFERENCIA,
     SITE_COD = : SITE_COD,
     PORC_OFERTA = :PORC_OFERTA
     where (CODIGO = :CODIGO);

  if (operacao = 3) then
     delete from PROD_UNID
     where (CODIGO = :CODIGO);

  suspend;
end

^

alter table movit_aux
add COD_UNID integer,
add COD_LOTE integer

^


create or alter procedure P_MOVIT_AUX (
    OPERACAO integer,
    CODIGO integer,
    CODMOV integer,
    COD_PROD integer,
    QUANT numeric(15,3),
    VALOR numeric(15,2),
    NOME_PC varchar(60),
    ITEM integer,
    VLR_UNIT numeric(15,4),
    UNIDADE varchar(10),
    VLR_DESC numeric(15,4),
    NOME_PROD varchar(100),
    COD_UNID integer,
    COD_LOTE integer)
as
begin 
if (operacao = 1) then 
insert into MOVIT_AUX (CODIGO, CODMOV, COD_PROD, QUANT, VALOR,NOME_PC,ITEM,VLR_UNIT,UNIDADE,VLR_DESC,NOME_PROD,COD_UNID,COD_LOTE)
values (:CODIGO, :CODMOV, :COD_PROD, :QUANT, :VALOR,:NOME_PC,:ITEM,:VLR_UNIT,:UNIDADE,:VLR_DESC,:NOME_PROD,:COD_UNID,:COD_LOTE);
if (operacao = 2) then  
update MOVIT_AUX set 
CODMOV = :CODMOV,
COD_PROD = :COD_PROD, 
QUANT = :QUANT, 
VALOR = :VALOR,
NOME_PC = :NOME_PC, 
ITEM = :ITEM, 
VLR_UNIT = :VLR_UNIT, 
UNIDADE = :UNIDADE,
VLR_DESC = :VLR_DESC,
NOME_PROD = :NOME_PROD,
COD_UNID = :COD_UNID,
COD_LOTE = :COD_LOTE
where (CODIGO = :CODIGO); 
if (operacao = 3) then 
delete from MOVIT_AUX 
where (CODIGO = :CODIGO); 
suspend; 
end


^

ALTER TABLE PRODUTO
ADD EXIBE_FICHA CHAR(1)
DEFAULT 'N' 

^

update produto set exibe_ficha = 'N'

^

create or alter procedure P_PRODUTO (
    OPERACAO integer,
    CODIGO integer,
    NOME varchar(60),
    COD_GRUPO integer,
    COD_FORNECEDOR integer,
    MARCA varchar(200),
    UNIDADE_ESTOQUE varchar(10),
    UNIDADE_CONVERSAO varchar(10),
    QTD_EMBALAGEM numeric(15,4),
    PORC_LUCRO_V numeric(15,2),
    PORC_LUCRO_P numeric(15,2),
    PORC_ICMS_ISS numeric(15,2),
    PORC_COMISSAO integer,
    COD_CST varchar(10),
    ESTOQUE_INICIAL numeric(15,3),
    ESTOQUE_MINIMO numeric(15,3),
    ESTOQUE_ATUAL numeric(15,3),
    ESTOQUE_FISCAL numeric(15,3),
    COD_TRIB integer,
    COD_TRIB_ENT integer,
    SIT_TRIB varchar(2),
    DT_CADASTRO date,
    FLG_ATIVADO char(1),
    FLG_ESTOQUE char(1),
    FLG_TIPO char(1),
    LOCALIZACAO varchar(60),
    OBSERVACAO varchar(100),
    OBSERVACAO2 varchar(100),
    DT_ALTERACAO date,
    TEMPO_REAL time,
    NCM varchar(20),
    COD_CSOSN integer,
    CONV_PRECO numeric(15,3),
    CST_PIS varchar(3),
    CST_COFINS varchar(3),
    COD_SUBGRUPO integer,
    COD_SUBSUBGRUPO integer,
    ESTOQUE1 numeric(15,3),
    ESTOQUE2 numeric(15,3),
    ESTOQUE3 numeric(15,3),
    ESTOQUE4 numeric(15,3),
    ESTOQUE5 numeric(15,3),
    PORC_PIS numeric(15,2),
    PORC_COFINS numeric(15,2),
    OBS_ADICIONAL varchar(3000),
    DT_VALIDADE date,
    PORC_IPI numeric(15,2),
    PORC_MVA numeric(15,2),
    PESO_BRUTO numeric(15,3),
    PESO_LIQUIDO numeric(15,3),
    FOTO varchar(200),
    ANEXO varchar(100),
    COD_ANP varchar(10),
    LOCALIZACAO2 varchar(60),
    ETIQUETA integer,
    COD_CEST varchar(7),
    COD_EMPRESA integer,
    PORC_DESC numeric(15,2),
    FLG_DESC char(1),
    ESTOQUE_MAXIMO numeric(15,3),
    ESTOQUE_DEMANDA_MEDIA numeric(15,3),
    ESTOQUE_TEMPO_RESUPRI numeric(15,3),
    ESTOQUE_INTERVALO_RESUPRI numeric(15,3),
    COD_DESP integer,
    COD_MARCA integer,
    FLG_SITE char(1),
    FLG_BALANCA char(1),
    SITE_COMPRIMENTO numeric(15,2),
    SITE_LARGURA numeric(15,2),
    SITE_ALTURA numeric(15,2),
    SITE_DESCRICAO varchar(9999),
    SITE_SYNC char(1),
    SITE_COD integer,
    PORC_REDBASE numeric(15,2),
    PONTOS numeric(15,4),
    LOCALIZACAO21 varchar(60),
    LOCALIZACAO22 varchar(60),
    LOCALIZACAO31 varchar(60),
    LOCALIZACAO32 varchar(60),
    LOCALIZACAO41 varchar(60),
    LOCALIZACAO42 varchar(60),
    LOCALIZACAO51 varchar(60),
    LOCALIZACAO52 varchar(60),
    PORC_FCP numeric(15,2),
    FLG_TRIBUTO char(1),
    PORC_OFERTA numeric(15,2),
    EXIBE_FICHA char(1)
    )
as
begin
if (OPERACAO = 1) then
insert into PRODUTO (CODIGO,NOME,COD_GRUPO,COD_FORNECEDOR,MARCA,UNIDADE_ESTOQUE,UNIDADE_CONVERSAO,QTD_EMBALAGEM,PORC_LUCRO_V,PORC_LUCRO_P,PORC_ICMS_ISS,PORC_COMISSAO,
COD_CST,ESTOQUE_INICIAL,ESTOQUE_MINIMO,ESTOQUE_ATUAL,ESTOQUE_FISCAL,COD_TRIB,COD_TRIB_ENT,SIT_TRIB,DT_CADASTRO,FLG_ATIVADO,FLG_ESTOQUE,FLG_TIPO,LOCALIZACAO,OBSERVACAO,
OBSERVACAO2,DT_ALTERACAO,TEMPO_REAL,NCM,COD_CSOSN,CONV_PRECO,CST_PIS,CST_COFINS,COD_SUBGRUPO,COD_SUBSUBGRUPO,ESTOQUE1,ESTOQUE2,ESTOQUE3,ESTOQUE4,ESTOQUE5,PORC_PIS,PORC_COFINS,
OBS_ADICIONAL,DT_VALIDADE,PORC_IPI,PORC_MVA,PESO_BRUTO,PESO_LIQUIDO,FOTO,ANEXO,COD_ANP,LOCALIZACAO2,ETIQUETA,COD_CEST,COD_EMPRESA,PORC_DESC,FLG_DESC,ESTOQUE_MAXIMO,ESTOQUE_DEMANDA_MEDIA,
ESTOQUE_TEMPO_RESUPRI,ESTOQUE_INTERVALO_RESUPRI,COD_DESP,COD_MARCA,FLG_SITE,FLG_BALANCA,SITE_COMPRIMENTO,SITE_LARGURA,SITE_ALTURA,SITE_DESCRICAO,SITE_SYNC,SITE_COD,PORC_REDBASE,PONTOS,
LOCALIZACAO21,LOCALIZACAO22,LOCALIZACAO31,LOCALIZACAO32,LOCALIZACAO41,LOCALIZACAO42,LOCALIZACAO51,LOCALIZACAO52, PORC_FCP, FLG_TRIBUTO,PORC_OFERTA,EXIBE_FICHA)
values (:CODIGO,:NOME,:COD_GRUPO,:COD_FORNECEDOR,:MARCA,:UNIDADE_ESTOQUE,:UNIDADE_CONVERSAO,:QTD_EMBALAGEM,:PORC_LUCRO_V,:PORC_LUCRO_P,:PORC_ICMS_ISS,:PORC_COMISSAO,:COD_CST,:ESTOQUE_INICIAL,:ESTOQUE_MINIMO,
:ESTOQUE_ATUAL,:ESTOQUE_FISCAL,:COD_TRIB,:COD_TRIB_ENT,:SIT_TRIB,:DT_CADASTRO,:FLG_ATIVADO,:FLG_ESTOQUE,:FLG_TIPO,:LOCALIZACAO,:OBSERVACAO,:OBSERVACAO2,:DT_ALTERACAO,:TEMPO_REAL,:NCM,:COD_CSOSN, 
:CONV_PRECO,:CST_PIS,:CST_COFINS,:COD_SUBGRUPO,:COD_SUBSUBGRUPO,:ESTOQUE1,:ESTOQUE2,:ESTOQUE3,:ESTOQUE4,:ESTOQUE5,:PORC_PIS,:PORC_COFINS,:OBS_ADICIONAL,:DT_VALIDADE,:PORC_IPI,:PORC_MVA,:PESO_BRUTO, 
:PESO_LIQUIDO,:FOTO,:ANEXO,:COD_ANP,:LOCALIZACAO2,:ETIQUETA,:COD_CEST,
:COD_EMPRESA,:PORC_DESC,:FLG_DESC,:ESTOQUE_MAXIMO,:ESTOQUE_DEMANDA_MEDIA,:ESTOQUE_TEMPO_RESUPRI,:ESTOQUE_INTERVALO_RESUPRI,:COD_DESP,:COD_MARCA,:FLG_SITE,:FLG_BALANCA,
:SITE_COMPRIMENTO,:SITE_LARGURA,:SITE_ALTURA,:SITE_DESCRICAO,:SITE_SYNC,:SITE_COD,:PORC_REDBASE,:PONTOS,:LOCALIZACAO21,:LOCALIZACAO22,:LOCALIZACAO31,:LOCALIZACAO32,:LOCALIZACAO41, 
:LOCALIZACAO42,:LOCALIZACAO51,:LOCALIZACAO52,:PORC_FCP, :FLG_TRIBUTO, :PORC_OFERTA, :EXIBE_FICHA);
if (OPERACAO = 2) then
update PRODUTO set
NOME = :NOME,
COD_GRUPO = :COD_GRUPO,
COD_FORNECEDOR = :COD_FORNECEDOR,
MARCA = :MARCA,
UNIDADE_ESTOQUE = :UNIDADE_ESTOQUE,
UNIDADE_CONVERSAO = :UNIDADE_CONVERSAO,
QTD_EMBALAGEM = :QTD_EMBALAGEM,
PORC_LUCRO_V = :PORC_LUCRO_V,
PORC_LUCRO_P = :PORC_LUCRO_P,
PORC_ICMS_ISS = :PORC_ICMS_ISS,
PORC_COMISSAO = :PORC_COMISSAO,
COD_CST = :COD_CST,
ESTOQUE_INICIAL = :ESTOQUE_INICIAL,
ESTOQUE_MINIMO = :ESTOQUE_MINIMO, 
ESTOQUE_ATUAL = :ESTOQUE_ATUAL,
ESTOQUE_FISCAL = :ESTOQUE_FISCAL, 
COD_TRIB = :COD_TRIB,
COD_TRIB_ENT = :COD_TRIB_ENT,
SIT_TRIB = :SIT_TRIB,
DT_CADASTRO = :DT_CADASTRO,
FLG_ATIVADO = :FLG_ATIVADO,
FLG_ESTOQUE = :FLG_ESTOQUE,
FLG_TIPO = :FLG_TIPO,
LOCALIZACAO = :LOCALIZACAO,
OBSERVACAO = :OBSERVACAO,
OBSERVACAO2 = :OBSERVACAO2,
DT_ALTERACAO = :DT_ALTERACAO,
TEMPO_REAL = :TEMPO_REAL,
NCM = :NCM,
COD_CSOSN = :COD_CSOSN, 
CONV_PRECO = :CONV_PRECO,
CST_PIS = :CST_PIS,
CST_COFINS = :CST_COFINS,
COD_SUBGRUPO = :COD_SUBGRUPO,
COD_SUBSUBGRUPO = :COD_SUBSUBGRUPO,
ESTOQUE1 = :ESTOQUE1,
ESTOQUE2 = :ESTOQUE2,
ESTOQUE3 = :ESTOQUE3,
ESTOQUE4 = :ESTOQUE4,
ESTOQUE5 = :ESTOQUE5,
PORC_PIS = :PORC_PIS,
PORC_COFINS = :PORC_COFINS,
OBS_ADICIONAL = :OBS_ADICIONAL,
DT_VALIDADE = :DT_VALIDADE,
PORC_IPI = :PORC_IPI,
PORC_MVA = :PORC_MVA,
PESO_BRUTO = :PESO_BRUTO,
PESO_LIQUIDO = :PESO_LIQUIDO,
FOTO = :FOTO,
ANEXO = :ANEXO,
COD_ANP = :COD_ANP,
LOCALIZACAO2 = :LOCALIZACAO2,
ETIQUETA = :ETIQUETA,
COD_CEST = :COD_CEST,
COD_EMPRESA = :COD_EMPRESA,
PORC_DESC = :PORC_DESC,
FLG_DESC = :FLG_DESC,
ESTOQUE_MAXIMO = :ESTOQUE_MAXIMO,
ESTOQUE_DEMANDA_MEDIA = :ESTOQUE_DEMANDA_MEDIA,
ESTOQUE_TEMPO_RESUPRI = :ESTOQUE_TEMPO_RESUPRI,
ESTOQUE_INTERVALO_RESUPRI = :ESTOQUE_INTERVALO_RESUPRI,
COD_DESP = :COD_DESP,
COD_MARCA = :COD_MARCA,
FLG_SITE = :FLG_SITE,
FLG_BALANCA = :FLG_BALANCA,
SITE_COMPRIMENTO = :SITE_COMPRIMENTO,
SITE_LARGURA = :SITE_LARGURA,
SITE_ALTURA = :SITE_ALTURA,
SITE_DESCRICAO = :SITE_DESCRICAO,
SITE_SYNC = :SITE_SYNC,
SITE_COD = :SITE_COD,
PORC_REDBASE = :PORC_REDBASE,
PONTOS = :PONTOS,
LOCALIZACAO21 = :LOCALIZACAO21,
LOCALIZACAO22 = :LOCALIZACAO22,
LOCALIZACAO31 = :LOCALIZACAO31,
LOCALIZACAO32 = :LOCALIZACAO32,
LOCALIZACAO41 = :LOCALIZACAO41,
LOCALIZACAO42 = :LOCALIZACAO42,
LOCALIZACAO51 = :LOCALIZACAO51,
LOCALIZACAO52 = :LOCALIZACAO52,
PORC_FCP = :PORC_FCP,
FLG_TRIBUTO = :FLG_TRIBUTO,
PORC_OFERTA = :PORC_OFERTA,
EXIBE_FICHA = :EXIBE_FICHA
where (CODIGO = :CODIGO);
if (OPERACAO = 3) then
delete from PRODUTO 
where (CODIGO = :CODIGO);
suspend;
end

^

update RDB$FIELDS set
RDB$FIELD_LENGTH = 400,
RDB$CHARACTER_LENGTH = 400
where RDB$FIELD_NAME = 'RDB$6844'
^

update movto set TIPO_RECEB = 7
where 
tipo_receb = 6
and exists (select codigo from empresa where cnpj = '17.827.707/0001-79')
^