[RESOLVIDO] EAI x NFe

Discussão em 'EMS , HCM e Totvs 11' iniciado por João, Julho 10, 2009.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. João

    João Sem Pontuação

    Bom dia,

    Alguém implantou alguma solução de NFe que não seja da Neogrid(Integrator) utilizando o EAI?
    Como deve ser feito?

    Obrigado.
    João
  2. pedro_lemes

    pedro_lemes Membro Participativo

    Joao,

    Existe a possibilidade de vc utilizar um software da propria receita.
    Nesse caso, o EMS gerara um arquivo pra voce que sera enviado a receita por meio do software da propria receita.
    Ao retornar o aceite, voce "puxa" ele pra dentro do EMS novamente.

    Nesse caso, avalie sua quantidade de NFs diaria, pois se forem muitas, nao é legal. Demanda muito trabalho.
  3. João

    João Sem Pontuação

    Pedro,

    É o seguinte, estamos implantando uma solução NFe p/ integrar com o Datasul, estou incluindo os dados de retorno na tabela "fila-eai", estou executando o adapter "axrut001", mas não está atualizando os dados da Nota no ERP.

    Então gostaria de saber, se alguém já passou por isso e o que deve ser feito p/ solucionar esse problema.

    Mesmo assim, obrigado pela atenção.

    JotaCe
  4. lisandro.severino

    lisandro.severino Sem Pontuação

    Boa noite João;

    sou programador progress e possuo uma solução de integração de Nfe X Datasul com base em flat file ou xml.

    O que posso lhe informar é que sem o neoGrid instalado no cliente este banco EAI não serve para nada, ou seja, este banco é unico e exclusivo para uso do NeoGrid.

    Mas para atualziar o retorno do SEFAZ ao datasul poderás seguir na linha de atualizar três tabelas..
    nota-fiscal, sit-nf-eletro e a ret-nf-eletro.

    de uma olhada na estrutura dessas tabelas para verificar......

    Abraço;
  5. João

    João Sem Pontuação

    Legal Lisandro.....

    Quais seriam essas informações que deverão ser gravadas nessas tabelas:
    * Protocolo: nota-fiscal.char-1,97,15 e ret-nf-eletro.cod-livre-1,1,15;
    * Situação: sit-nf-eletro.idi-sit-nf-eletro;
    * Mensagem de retorno: Tabela "ret-nf-eletro";

    Essas 2 situações, alguém chegou a utilizar:
    * "Em processamento no aplicativo de transmissão", 8,
    * "Em processamento na SEFAZ", 9,

    É necessário executar alguma(s) API(s)??? Estoque, contas a receber etc???

    Muito obrigado.
    João
  6. michel

    michel Membro Participativo

    Exemplo que tenho funcionando uma aplicação externa + o programa da receita, importo os xml da receita e salvo o protocolo, chave de acesso e numero da nota no uma base access o programa abaixo le o access a atualiza o restante, so tenho que alterar a nf-e para uso autorizado no ft0909 poderiar ser direto mais assim é melhor caso tenha situação como embalagem.

    /*DEFININDO AS VARIAVEIS*/
    DEF VAR ObjRecordSet AS COM-HANDLE NO-UNDO.
    DEF VAR ObjConnection AS COM-HANDLE NO-UNDO.
    DEF VAR ObjCommand AS COM-HANDLE NO-UNDO.
    DEF VAR ADO-USERID AS CHARACTER NO-UNDO.
    DEF VAR ADO-PASSWD AS CHARACTER NO-UNDO.
    DEF VAR ADO-QUERY AS CHARACTER NO-UNDO.
    DEF VAR ADO-STATUS AS CHARACTER NO-UNDO.
    DEF VAR ADO-RECCOUNT AS INTEGER NO-UNDO.
    DEF VAR ADO-NULL AS CHARACTER NO-UNDO.
    DEF VAR ADO-CURSOR AS INTEGER NO-UNDO.
    DEF VAR i AS INTEGER NO-UNDO.
    DEF VAR ADO-DRIVER AS CHARACTER NO-UNDO.
    DEF VAR ADO-CONNEC AS CHARACTER NO-UNDO.
    DEF VAR cQuery AS CHARACTER NO-UNDO.
    DEF VAR NOTA AS CHARACTER NO-UNDO.
    DEF VAR PROTOCOLO AS CHARACTER NO-UNDO.
    DEF VAR CHAVE AS CHARACTER NO-UNDO.

    /*CRIANDO AS INSTANCIAS PARA CONECTAR O ACCESS*/
    CREATE "ADODB.Connection" ObjConnection.
    CREATE "ADODB.RecordSet" ObjRecordSet.
    CREATE "ADODB.Command" ObjCommand.

    /*ESPECIFICA A CONSULTA QUE SERA REALIZADA NO BANCO ACCESS*/
    ASSIGN ADO-QUERY = "SELECT NOTA, NOME, CHAVE, PROTOCOLO, TRANSMISSAO FROM NFES WHERE TRANSMISSAO='PENDENTE'"
    ADO-DRIVER = "'DRIVER=" + CHR(123) + "Microsoft Access Driver (*.mdb)}"
    + ";DBQ=P:\NF-e\XML\DADOS.mdb" + "'"
    ADO-CONNEC = "Provider=MSDASQL.1;Persist Security Info=True"
    + ";Extended Properties=" + ADO-DRIVER.

    ObjConnection:OPEN(ADO-CONNEC, ADO-USERID, ADO-PASSWD, 0) NO-ERROR.

    ASSIGN ObjCommand:ActiveConnection = ObjConnection
    ObjCommand:CommandText = ADO-QUERY
    ObjCommand:CommandType = 1
    ObjConnection:CursorLocation = 3
    ObjRecordSet:CursorType = 1
    ObjRecordSet:LockType = 3
    ObjRecordSet = ObjCommand:EXECUTE(OUTPUT ADO-NULL,"",32)
    ADO-RECCOUNT = ObjRecordSet:RecordCount.

    DO TRANSACTION:
    IF (ADO-RECCOUNT > 0) AND NOT (ADO-RECCOUNT = ?) THEN DO:
    ObjRecordSet:MoveFirst NO-ERROR.

    DO WHILE ADO-CURSOR < ADO-RECCOUNT:

    /*IMPORTA OS DADOS DO ACCESS PARA AS VARIAVEIS DO PROGRESS*/
    ASSIGN NOTA = STRING(ObjRecordSet:FIELDS("NOTA"):VALUE, "9999999").
    ASSIGN PROTOCOLO = ObjRecordSet:FIELDS("PROTOCOLO"):VALUE.
    ASSIGN CHAVE = ObjRecordSet:FIELDS("CHAVE"):VALUE.

    /*FILTRA A TABELA DE NOTA FISCAL DENTRO DO BANCO DO PROGRESS*/
    FIND FIRST nota-fiscal
    WHERE nota-fiscal.cod-estab = "MTZ"
    AND nota-fiscal.serie = "4"
    AND nota-fiscal.nr-nota-fis = NOTA EXCLUSIVE-LOCK NO-WAIT NO-ERROR.

    IF AVAIL nota-fiscal THEN DO:

    /*ATUALIZA OS CAMPOS DENTRO DO CAMPO DO PROGRESS*/
    ASSIGN OVERLAY(nota-fiscal.char-1,97,15) = PROTOCOLO.
    ASSIGN OVERLAY(nota-fiscal.char-2,3,44) = CHAVE.

    MESSAGE "NF-e:" + NOTA + " COM A CHAVE: " + CHAVE + " E PROTOCOLO: " + PROTOCOLO + " FOI ATUALIZADO"
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

    END.

    ASSIGN ADO-CURSOR = ADO-CURSOR + 1.
    ObjRecordSet:MoveNext NO-ERROR.

    END.

    END.
    ELSE
    ASSIGN ADO-STATUS = "No records found.".

    END.

    ObjConnection:CLOSE NO-ERROR.

    RELEASE OBJECT ObjConnection NO-ERROR.
    RELEASE OBJECT ObjCommand NO-ERROR.
    RELEASE OBJECT ObjRecordSet NO-ERROR.

    ASSIGN ObjConnection = ? ObjCommand = ? ObjRecordSet = ?.




    /*ATUALIZANDO O RETORNO DAS NF-e PARA EMISSAO DOS E-MAIL - OBS. MUDA NO BANCO ACCESS A SITUAۂO DO CAMPO TRANSMISSAO=IMPORTADO*/

    CREATE "ADODB.Connection" ObjConnection.
    CREATE "ADODB.RecordSet" ObjRecordSet.
    CREATE "ADODB.Command" ObjCommand.

    ASSIGN ADO-QUERY = "UPDATE NFES SET TRANSMISSAO='IMPORTADO' WHERE TRANSMISSAO='PENDENTE' AND TIPONFE='SAIDA'"
    ADO-DRIVER = "'DRIVER=" + CHR(123) + "Microsoft Access Driver (*.mdb)}"
    + ";DBQ=P:\NF-e\XML\DADOS.mdb" + "'"
    ADO-CONNEC = "Provider=MSDASQL.1;Persist Security Info=True"
    + ";Extended Properties=" + ADO-DRIVER.

    ObjConnection:OPEN(ADO-CONNEC, ADO-USERID, ADO-PASSWD, 0) NO-ERROR.

    ASSIGN ObjCommand:ActiveConnection = ObjConnection
    ObjCommand:CommandText = ADO-QUERY
    ObjCommand:CommandType = 1
    ObjConnection:CursorLocation = 3
    ObjRecordSet:CursorType = 1
    ObjRecordSet:LockType = 3
    ObjRecordSet = ObjCommand:EXECUTE(OUTPUT ADO-NULL,"",32).

    DO TRANSACTION:

    IF (ADO-RECCOUNT > 0) AND NOT (ADO-RECCOUNT = ?) THEN DO:

    ObjRecordSet:MoveFirst NO-ERROR.
    DO WHILE ADO-CURSOR < ADO-RECCOUNT:

    END.

    ASSIGN ADO-CURSOR = ADO-CURSOR + 1.
    ObjRecordSet:MoveNext NO-ERROR.

    END.
    END.

    ObjConnection:CLOSE NO-ERROR.

    /* run ftp\ft0516aa.r */

    RELEASE OBJECT ObjConnection NO-ERROR.
    RELEASE OBJECT ObjCommand NO-ERROR.
    RELEASE OBJECT ObjRecordSet NO-ERROR.

    ASSIGN ObjConnection = ? ObjCommand = ? ObjRecordSet = ?.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página