CREATE OR ALTER PROCEDURE SPU_NFS (
    ESTABELECIMENTO_CODIGO INTEGER,
    IND_FINAL CHAR(1),
    NUMERO_NOTAFISCAL INTEGER,
    SERIE VARCHAR(3),
    EMPRESA_CODIGO INTEGER,
    NATUREZA INTEGER,
    DATA_SAIDA DATE,
    HORA_SAIDA VARCHAR(5),
    DATA_EMISSAO DATE,
    HORA_EMISSAO VARCHAR(5),
    CONTROLE INTEGER,
    SITUACAO INTEGER,
    CFOP_CODIGO VARCHAR(5),
    CFOP_DESCRICAO VARCHAR(60),
    CFOP_OPCIONAL VARCHAR(5),
    USUARIO_CODIGO INTEGER,
    USUARIO_DATA DATE,
    STATUSEXCLUSAO CHAR(1),
    EMPRESA_RAZAOSOCIAL VARCHAR(50),
    EMPRESA_CNPJ VARCHAR(14),
    EMPRESA_IE VARCHAR(20),
    EMPRESA_ENDERECO VARCHAR(200),
    EMPRESA_NUMERO VARCHAR(20),
    EMPRESA_BAIRRO VARCHAR(20),
    EMPRESA_CIDADE VARCHAR(40),
    EMPRESA_CEP VARCHAR(8),
    EMPRESA_UF VARCHAR(2),
    REPRESENTANTE_CODIGO INTEGER,
    REPRESENTANTE_COMISSAO NUMERIC(10,5),
    SUFRAMA VARCHAR(9),
    CHAVE_ACESSO VARCHAR(44),
    TIPO CHAR(1),
    CLASSIFICACAO VARCHAR(10),
    XML CHAR(2),
    DANFE CHAR(1),
    PAGAMENTO CHAR(1),
    UF_EMBARQUE CHAR(2),
    LOCAL_EMBARQUE VARCHAR(60),
    RECIBO VARCHAR(20),
    PROTOCOLO VARCHAR(20),
    PROTOCOLO_CANCELAMENTO VARCHAR(20),
    MOTIVO_CANCELAMENTO VARCHAR(50),
    MODELO CHAR(2),
    ESPECIE1 VARCHAR(5),
    FORMULARIO_INICIAL INTEGER,
    FORMULARIO_FINAL INTEGER,
    SPED CHAR(1),
    FISCAL_CFOP_CODIGO VARCHAR(5),
    BASECALCULO_ICMS NUMERIC(10,5),
    BASECALCULO_ICMS_SUBST NUMERIC(10,5),
    VALOR_ICMS NUMERIC(10,5),
    VALOR_ICMS_SUBST NUMERIC(10,5),
    VALOR_IPI NUMERIC(10,5),
    VALOR_ISSQN NUMERIC(10,5),
    VALOR_FRETE NUMERIC(10,5),
    VALOR_SEGURO NUMERIC(10,5),
    VALOR_PIS NUMERIC(10,5),
    VALOR_COFINS NUMERIC(10,5),
    VALOR_CSLL NUMERIC(10,5),
    RETENCAO_BASE_CALCULO_IRRF NUMERIC(10,2),
    RETENCAO_BASE_CALCULO_INSS NUMERIC(10,2),
    VALOR_DESCONTO NUMERIC(10,5),
    VALOR_ACRESCIMO NUMERIC(10,5),
    VALOR_OUTROSCUSTOS NUMERIC(10,5),
    VALOR_TOTAL_PRODUTO NUMERIC(10,5),
    VALOR_TOTAL_NF NUMERIC(10,5),
    RETENCAO_VALOR_PIS NUMERIC(10,5),
    RETENCAO_VALOR_COFINS NUMERIC(10,5),
    RETENCAO_VALOR_INSS NUMERIC(10,5),
    RETENCAO_VALOR_ISSQN NUMERIC(10,5),
    RETENCAO_VALOR_IRRF NUMERIC(10,5),
    RETENCAO_VALOR_CSLL NUMERIC(10,5),
    VALOR_PARCELAS NUMERIC(10,5),
    VALOR_CONTABIL NUMERIC(10,2),
    VALOR_ESTORNO NUMERIC(15,2),
    VENCIMENTO_DAE_DIFAL DATE,
    TRANSPORTADORA_CODIGO INTEGER,
    FRETE INTEGER,
    PLACA VARCHAR(8),
    PLACA_UF VARCHAR(2),
    VOLUMES INTEGER,
    ESPECIE VARCHAR(30),
    MARCA VARCHAR(10),
    PESO_BRUTO NUMERIC(10,5),
    PESO_LIQUIDO NUMERIC(10,5),
    CUBAGEM NUMERIC(10,4),
    NUMERO VARCHAR(10),
    OBSERVACAO01 VARCHAR(130),
    OBSERVACAO02 VARCHAR(130),
    OBSERVACAO03 VARCHAR(130),
    OBSERVACAO04 VARCHAR(130),
    OBSERVACAO05 VARCHAR(130),
    OBSERVACAO06 VARCHAR(130),
    OBSERVACAO07 VARCHAR(130),
    OBSERVACAO08 VARCHAR(130),
    OBSERVACAO09 VARCHAR(130),
    OBSERVACAO10 VARCHAR(130),
    OBSERVACAO11 VARCHAR(130),
    OBSERVACAO12 VARCHAR(130),
    OBSERVACAO13 VARCHAR(130),
    OBSERVACAO14 VARCHAR(130),
    OBSERVACAO15 VARCHAR(130),
    ACUMULA_ITEM CHAR(1),
    TIPO_DOC CHAR(1),
    SPED_PISCOF CHAR(1),
    GC_WEB INTEGER,
    PDV_CAIXA_ID INTEGER = 0,
    CANAL_VENDAS_ID INTEGER = 0,
    CORRETOR_ID INTEGER = 0)
AS
BEGIN
UPDATE TBNFS SET
ESTABELECIMENTO_CODIGO = :ESTABELECIMENTO_CODIGO,
IND_FINAL              = :IND_FINAL,
NUMERO_NOTAFISCAL      = :NUMERO_NOTAFISCAL,
SERIE                  = :SERIE,
EMPRESA_CODIGO         = :EMPRESA_CODIGO,
NATUREZA               = :NATUREZA,
DATA_SAIDA             = :DATA_SAIDA,
HORA_SAIDA             = :HORA_SAIDA,
DATA_EMISSAO           = :DATA_EMISSAO,
HORA_EMISSAO           = :HORA_EMISSAO,
SITUACAO               = :SITUACAO,
CFOP_CODIGO            = :CFOP_CODIGO,
CFOP_DESCRICAO         = :CFOP_DESCRICAO,
CFOP_OPCIONAL          = :CFOP_OPCIONAL,
USUARIO_CODIGO         = :USUARIO_CODIGO,
USUARIO_DATA           = :USUARIO_DATA,
STATUSEXCLUSAO         = :STATUSEXCLUSAO,
EMPRESA_RAZAOSOCIAL    = :EMPRESA_RAZAOSOCIAL,
EMPRESA_CNPJ           = :EMPRESA_CNPJ,
EMPRESA_IE             = :EMPRESA_IE,
EMPRESA_ENDERECO       = :EMPRESA_ENDERECO,
EMPRESA_NUMERO         = :EMPRESA_NUMERO,
EMPRESA_BAIRRO         = :EMPRESA_BAIRRO,
EMPRESA_CIDADE         = :EMPRESA_CIDADE,
EMPRESA_CEP            = :EMPRESA_CEP,
EMPRESA_UF             = :EMPRESA_UF,
REPRESENTANTE_CODIGO   = :REPRESENTANTE_CODIGO,
REPRESENTANTE_COMISSAO = :REPRESENTANTE_COMISSAO,
SUFRAMA       = :SUFRAMA,
CHAVE_ACESSO  = :CHAVE_ACESSO,
TIPO          = :TIPO,
XML           = :XML,
DANFE         = :DANFE,
PAGAMENTO     = :PAGAMENTO,
UF_EMBARQUE   = :UF_EMBARQUE,
LOCAL_EMBARQUE= :LOCAL_EMBARQUE,
RECIBO        = :RECIBO,
PROTOCOLO     = :PROTOCOLO,
PROTOCOLO_CANCELAMENTO = :PROTOCOLO_CANCELAMENTO,
MOTIVO_CANCELAMENTO    = :MOTIVO_CANCELAMENTO,
MODELO                 = :MODELO,
ESPECIE                = :ESPECIE1,
FORMULARIO_INICIAL     = :FORMULARIO_INICIAL,
FORMULARIO_FINAL       = :FORMULARIO_FINAL,
SPED                   = :SPED,
FISCAL_CFOP_CODIGO     = :FISCAL_CFOP_CODIGO,
ACUMULA_ITEM = :ACUMULA_ITEM,
TIPO_DOC = :TIPO_DOC,
CLASSIFICACAO = :CLASSIFICACAO,
SPED_PISCOF = :SPED_PISCOF,
PDV_CAIXA_ID            = :PDV_CAIXA_ID,
CANAL_VENDAS_ID         = :CANAL_VENDAS_ID,
CORRETOR_ID             = :CORRETOR_ID
WHERE CONTROLE= :CONTROLE;

UPDATE TBNFS_TOTAIS SET
BASECALCULO_ICMS       = :BASECALCULO_ICMS,
BASECALCULO_ICMS_SUBST = :BASECALCULO_ICMS_SUBST,
VALOR_ICMS             = :VALOR_ICMS,
VALOR_ICMS_SUBST       = :VALOR_ICMS_SUBST,
VALOR_IPI              = :VALOR_IPI,
VALOR_ISSQN            = :VALOR_ISSQN,
VALOR_FRETE            = :VALOR_FRETE,
VALOR_SEGURO           = :VALOR_SEGURO,
VALOR_PIS              = :VALOR_PIS,
VALOR_COFINS           = :VALOR_COFINS,
VALOR_DESCONTO         = :VALOR_DESCONTO,
VALOR_PARCELAS         = :VALOR_PARCELAS,
VALOR_ACRESCIMO        = :VALOR_ACRESCIMO,
VALOR_OUTROSCUSTOS     = :VALOR_OUTROSCUSTOS,
VALOR_TOTAL_PRODUTO    = :VALOR_TOTAL_PRODUTO,
VALOR_TOTAL_NF         = :VALOR_TOTAL_NF,
RETENCAO_VALOR_PIS     = :RETENCAO_VALOR_PIS,
RETENCAO_VALOR_COFINS  = :RETENCAO_VALOR_COFINS,
RETENCAO_VALOR_INSS    = :RETENCAO_VALOR_INSS,
RETENCAO_VALOR_ISSQN   = :RETENCAO_VALOR_ISSQN,
RETENCAO_VALOR_IRRF    = :RETENCAO_VALOR_IRRF,
VALOR_CSLL             = :VALOR_CSLL,
RETENCAO_VALOR_CSLL    = :RETENCAO_VALOR_CSLL,
RETENCAO_BASE_CALCULO_IRRF = :RETENCAO_BASE_CALCULO_IRRF,
RETENCAO_BASE_CALCULO_INSS = :RETENCAO_BASE_CALCULO_INSS,
VALOR_CONTABIL         = :VALOR_CONTABIL,
VALOR_ESTORNO          = :VALOR_ESTORNO,
VENCIMENTO_DAE_DIFAL   = :VENCIMENTO_DAE_DIFAL
WHERE NFS_CONTROLE     = :CONTROLE;

UPDATE TBNFS_TRANSPORTADORA SET
TRANSPORTADORA_CODIGO  = :TRANSPORTADORA_CODIGO,
CUBAGEM                = :CUBAGEM,
FRETE                  = :FRETE,
VOLUMES                = :VOLUMES,
ESPECIE                = :ESPECIE,
PESO_BRUTO             = :PESO_BRUTO,
PESO_LIQUIDO           = :PESO_LIQUIDO,
MARCA                  = :MARCA,
NUMERO                 = :NUMERO,
PLACA                  = :PLACA,
PLACA_UF               = :PLACA_UF
WHERE NFS_CONTROLE     = :CONTROLE;

UPDATE TBNFS_OBSERVACAO SET
OBSERVACAO01           = :OBSERVACAO01,
OBSERVACAO02           = :OBSERVACAO02,
OBSERVACAO03           = :OBSERVACAO03,
OBSERVACAO04           = :OBSERVACAO04,
OBSERVACAO05           = :OBSERVACAO05,
OBSERVACAO06           = :OBSERVACAO06,
OBSERVACAO07           = :OBSERVACAO07,
OBSERVACAO08           = :OBSERVACAO08,
OBSERVACAO09           = :OBSERVACAO09,
OBSERVACAO10           = :OBSERVACAO10,
OBSERVACAO11           = :OBSERVACAO11,
OBSERVACAO12           = :OBSERVACAO12,
OBSERVACAO13           = :OBSERVACAO13,
OBSERVACAO14           = :OBSERVACAO14,
OBSERVACAO15           = :OBSERVACAO15
WHERE NFS_CONTROLE = :CONTROLE;

END