Erro ao gerar mais de um documento de entrada via execauto AJUDA:FA050NUM

Bom dia, estou tentando gerar mais de um documento de entrada via execauto e estou recebendo o erro a seguir quando gero o segundo documento:

--------------------------------------------------------------------------------
AJUDA:FA050NUM  
Número título já existe para este forne-cedor.

Tabela SF1 10/03/2021 10:24:05
                    - cTipo       :=N
                    - cFormul     :=N
                    - cNFiscal    :=010032021
                    - cSerie      :=1
                    - dDEmissao   :=10/03/2021
                    - cLoja       :=01
                    - cA100For    :=002453 < -- Invalido
                    - cEspecie    :=REC
--------------------------------------------------------------------------------

O primeiro documento é gerado corretamente, porém ao gerar o segundo, aparentemente a numeração que está tentando gerar o título é do primeiro documento.

Por exemplo, gerei o documento "1" e gerou o título para esse documento, então pego a próxima numeração para gerar o próximo documento, no caso "2", e quando gero ocorre que está referenciando ao documento "1".

Já tentei formulário próprio = Sim e Não. Já tentei enviar com F1_FORMUL = Sim e sem numero de documento. Inclusive gerando duas notas para fornecedores diferentes, gera o mesmo erro.

Segue trecho do código.

Begin Transaction

    // reinicia variáveis
    lMsErroAuto := .F.

    _cDoc := GetSxeNum("SF1", "F1_DOC")
    // confirma a sequencia
    ConfirmSX8()

    // dados do cabecalho da NF
    aAdd(_aCabAuto,{"F1_FILIAL" , xFilial("SF1") ,Nil})
    aAdd(_aCabAuto,{"F1_TIPO"   , _cTipoNota      ,Nil})
    aAdd(_aCabAuto,{"F1_FORMUL" , "N"             ,Nil})
    aAdd(_aCabAuto,{"F1_DOC"    , _cDoc          ,Nil})
    aAdd(_aCabAuto,{"F1_SERIE"  , _cSer          ,Nil})
    aAdd(_aCabAuto,{"F1_EMISSAO", dDataBase       ,Nil})
    aAdd(_aCabAuto,{"F1_FORNECE", _cCliente      ,Nil})
    aAdd(_aCabAuto,{"F1_LOJA"   , _cLoja         ,Nil})
    aAdd(_aCabAuto,{"F1_ESPECIE", "REC"          ,Nil})
    aAdd(_aCabAuto,{"F1_CONDPAG", _cCondPag      ,Nil})
    aAdd(_aCabAuto,{"F1_NATUREZ", _cNaturez      ,Nil})
    aAdd(_aCabAuto,{"F1_VEXIDRE", _cReportID     ,Nil})

    // ordena dados conforme dicionário
    _aCabAuto := FWVetByDic(_aCabAuto,'SF1',.F.)

    DbSelectArea("SF1")
    DbSelectArea("SD1")
    MsExecAuto({|x,y,z| MATA103(x,y,z)}, _aCabAuto, _aIteAuto, 3) // 3-inclusao

    // ocorreu erro
    If lMsErroAuto
        RollBackSX8()
        DisarmTransaction()
        MostraErro()
        _lRet := .F.
    Else
        _lRet := .T.
    EndIf
End Transaction

Grato!

compartilhar
  • Bom dia. Não entendi bem pq desse processo, pois se vc esta usando para importar uma nota para o seu banco de dados o teu campo F1_FORMUL, tem que ser obrigatoriamente N. Por favor explique melhor o pq dessa rotina. Pergunto pq até alguns meses atras era uma rotina minha que efetuava as importações de xml para o P12 e usava como base o que vc esta fazendo.

    Jose de Aguiar Ferreira Real Neto   10 de Mar de 2021
  • Segundo essa documentação da Totvs, vc não deve utilizar o controle de transações em rotinas automáticas. https://centraldeatendimento.totvs.com/hc/pt-br/articles/360020775851-MP-ADVPL-BEGIN-TRANSACTION.

    Everton Alves   10 de Mar de 2021
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags mata103 execauto advpl ou faça a sua própria pergunta.