Jump to content
Fivewin Brasil

Jorge Andrade

Membros
  • Posts

    843
  • Joined

  • Last visited

  • Days Won

    77

Posts posted by Jorge Andrade

  1. 18 minutos atrás, oribeiro disse:

    Pessoal,

    Vamos implementar essa DLL na aplicação no lugar do ACBrNFeMonitor?

    Estou tentando usar a Classe anexa, mas se não conseguir vou tentar usar diretamente a DLL.

    Estou compilando sem erro e consigo imprimir um XML assim:

       local nfe

       nfe := ACBrNFe():New()

       nfe:ConfigGravarValor("Principal", "LogNivel", "4")
       nfe:ConfigGravarValor("Principal", "LogPath",  "Logs")
       nfe:ConfigGravar()

       nfe:CarregarXML("nfe.xml")

       nfe:Imprimir("", 1, "", "True", "will.jpg", "", "")

       ?nfe:Nome
       ?nfe:Versao
     

    Daí tentei um comando que gera um retorno, mas a resposta está sempre em branco:

          nfe:=ACBrNFe():New()

          ? nfe:StatusServico()
     

    Alguma idéia?

     

     

    acbrlib.prg 15 kB · 1 download

    Te passei acima usando somente a dll.

  2. Vou dar um pitaco, embora faz tempo que não mexo com isso, mas posso dizer que, as diferenças entre os bancos, são as informações de agência, conta, carteira, nosso número, código de cliente, convênio e outros, então, o campo livre é o que cada banco usa para a composição da linha digitavel   e código de barras, no caso do Itaú, tenho quase certeza que o campo livre é composto por carteira (3) + nosso numero (8) + dac da agencia (1) + agencia (4) + conta (6) + dac da conta (1) + "000" , sendo que o cálculo do dac da agência é módulo 10 de agencia (4)  +conta (6) + carteira (3) + nosso numero.(8).

    Sei que não é isso que vc quer, mas se tem uma aplicação que gera o boleto, então é só implementar sua própria geração de arquivo e por sua vez impressão do boleto.

    []s,

  3. Boa noite galera. Só pra Pontuar, claro que se o cabo da cpu for desconectado aí não tem jeito, mas, nunca me atentei nas demais versões do windows, porém no 10, na opções de energia, avançado, tem uma opção sobre suspender a USB, que normalmente está em ativado e se desativar, aqueles cochilos por falta de atividade que ela tira para de  ocorrer, portanto, não custa nada verificar isso.

     

  4. Oscar, boa noite, tenho alguns comandos que podem te ajudar usando a DLL direto, embora eu seja um dos difusores da DLL, não a implementei pq estou focando no MOBILE, espero que te ajude.

     

    #define STR_LEN 256
    #include "hbclass.ch"
    #include "error.ch"

    //LOAD NA DLL
    xLib :=  LibLoad( "ACBrNFe32.dll" ) //DllLoad("ACBrNFe32.dll")

    IF xLib == nil
       ?"erro na carga da dll"
       INKEY(0)
    ENDIF   

    //INICIARLIZAR A DLL
    xInicializarDll := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "NFE_Inicializar","\MINHAPASTA\ACBrLib.ini")

    IF xInicializarDll <> 0
       ?"erro Inicializar Ini"
       INKEY(0)
    ENDIF   

    //CARREGAR ARQUIVO INI JÁ CRIADO ANTERIORMENTE
    //inicarregado := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "NFE_ConfigLer","\MINHAPASTA\ACBrLib.ini")

    DETERMIHNAR CERTIFICADO
    xRetornoStatusCertficado := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "NFE_ConfigGravarValor","ArquivoPFX", "\MINHAPASTA\CERTIFICADO.pfx")

    IF xRetornoStatusCertficado <> 0
       ?"erro de certificado"
       INKEY(0)
    ENDIF   

    //CARREGAR LOGO
    xRetornlogo := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "NFE_ConfigGravarValor","PathLogo", "MINHAPASTA\LOGO.bmp")

    //GRAVAR INI
    xRetorngravar := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "NFE_ConfigGravar","")

    //forma de emissao
     
    xRetorn4 := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "FormaEmissao", "0")

    //FORMA DE AMBIENTE
    xRetornFormaEmissao := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "Ambiente", "0")

    //PREPARAR EMISSAO
    xRetornNFE_Carregar := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "NFE_CarregarXML","\MINHAPASTA\nomedoxml.xml")

    //IMPRIMIR
    xRetornNFE_Imprimir := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "NFE_Imprimir",,1,,,,,)


    xRetornlimparmemoria := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "LimparLista")

    xRetornNFE_Finalizar := DllCall( "ACBrNFe32.dll",  "DC_CALL_STD" , "NFE_Finalizar")

     

    []s,

     

     

     

  5. Em 21/10/2019 at 09:41, Jmsilva disse:

    Jorge, Bom Dia!

    Consegui com o cadastro e contato do suporte via WhatsAPP baixar a dll para 15 dias de testes, valeu!

    O problema é que o cadastro "SAC Trial" não é liberado na hora, demora 24 horas no minimo!

    Ate momento consegui com sucesso a compilação da da classe que tem um BUG, agora simular um boleto, se vc ou alguém do grupo possuir alguma função com exemplos pronto com uso da solução boleto da ACBr e puder compartilhar agradeço! 

    Desculpe, andei afastado do grupo, mas se eu fosse vc, partiria pra suar direto a dll e nem precisa usar  classe, embora a classe facilita td.

  6. Beto

     

    Boa noite

     

    Por favor, entre em contato urgentíssimo comigo. Eu e o Munir estamos tentando falar contigo há dias e vc não retorna mensagens e nem ligação. Se alguém tiver contato com ele, ou souber onde ele mora, por favor, repasse o recado.

    []s,

     

     

     

  7.  

    Hasa boa noite

    Eu acho que o Cassiano tem, ficou de me passar e deve ter esquecido. Pq eu ganhei um desses qdo do evento do ACBRDAY 1, mas até hoje não tive tempo de testar.

    Mas, acho que ele fez pra windev, mas ia me passar e ajudar com o xharbour. Vou perguntar a ele qual o nick dele aqui.

     

    []s,

     

     

    Cometi um engano amigo, na verdade o Cassiano (Fladimir aqui no fórum) não desenvolveu para o IDBIO e sim para o CONTROL ID.

    []S,

     

  8.  

    Boa tarde, alguem teria exemplo em HARBOUR puro desse leitor de digitais?

    HASA

    Hasa boa noite

    Eu acho que o Cassiano tem, ficou de me passar e deve ter esquecido. Pq eu ganhei um desses qdo do evento do ACBRDAY 1, mas até hoje não tive tempo de testar.

    Mas, acho que ele fez pra windev, mas ia me passar e ajudar com o xharbour. Vou perguntar a ele qual o nick dele aqui.

     

    []s,

     

     

  9.  

    Jorge, ele subsititui todos os dados da tabela porque o comando fica trucado, se não mudar o caracter ele entende assim

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D'

    desta forma é como se fosse um replace all, como o Rogério Figueira citou anteriormente.

    Mas estou mudando como a sugestão dele mesmo, trocar o caracter antes do comando.

    Justamente amigo, o problema está no tipo de código (EBCDIC e ASCII), conforme citado, pois em DB2 vc pode usar os 2 caracteres, e no ASCII está trucando um quotes simples, como se fosse fechamento da instrução, embora eu acho que deveria dar erro na instrução, mas como vc postou que ela fica com aspas dupla, então pode, o correto e fazer igual ao colega.

  10. Não vejo muito como contornar isso, exceto se vc puder utilizar o código EBCDIC http://ascii-table.com/ebcdic-table.php,  onde há diferenças entre aspas simples = quotes e apóstrofe, que acredito deve dar problemas por não ser reconhecido pelo ASCII. Veja que num terminal IBM 3070 vc não teria este problema, mas na micro informática sim.

    Lembro que quando comecei com micro informatica e via o pessoal chamar o caracter "_" de underline (Linha baixa), eu ficava injuriado ahahahah, por mais que explicasse que era underscore (Carater baixo).

    Acho que vc vai ter que fazer como o amigo citou, trocar o caracter pelo acento agudo, isso se não provocar erro na instrução.

    []s,

     

    Boa tarde a todos.

    Voltei neste tópico porque descobrir o que esta acontecendo com o update

    Quando faço um update assim:

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D'AGUA',
      unifis = 'UN',
      clanbm = '01069000',
      WHERE sr_recno = '              1'

    a palavra lixa d'agua não consegue processar pois a aspa do texto interrompe o processo, causando erro no sql e faz com que o replace seja em toda a tabela.

    usando a função sr_startlog, vi que na sqlrdd ele salva o campo com 2 aspas simples, desta forma o sql reconhece como uma unica aspas no processo

    usando a rdd do sqlrdd e vendo no log, a linha de comando fica assim:

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D''AGUA',
      unifis = 'UN',
      clanbm = '01069000',
      WHERE sr_recno = '              1'

    Pergunto aos colegas que usam sql e até mesmo o sqlrdd a mais tempo que eu, como vocês fazem em caso como este, tem alguma opção no banco de dados que tem que ativar para tratar automaticamente a aspa simples, ou teria que tratar campo a campo, substituindo o ' por ''?

    estou usando o postgresql 9.5

     

     

     

    Boa tarde a todos.

    Voltei neste tópico porque descobrir o que esta acontecendo com o update

    Quando faço um update assim:

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D'AGUA',
      unifis = 'UN',
      clanbm = '01069000',
      WHERE sr_recno = '              1'

    a palavra lixa d'agua não consegue processar pois a aspa do texto interrompe o processo, causando erro no sql e faz com que o replace seja em toda a tabela.

    usando a função sr_startlog, vi que na sqlrdd ele salva o campo com 2 aspas simples, desta forma o sql reconhece como uma unica aspas no processo

    usando a rdd do sqlrdd e vendo no log, a linha de comando fica assim:

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D''AGUA',
      unifis = 'UN',
      clanbm = '01069000',
      WHERE sr_recno = '              1'

    Pergunto aos colegas que usam sql e até mesmo o sqlrdd a mais tempo que eu, como vocês fazem em caso como este, tem alguma opção no banco de dados que tem que ativar para tratar automaticamente a aspa simples, ou teria que tratar campo a campo, substituindo o ' por ''?

    estou usando o postgresql 9.5

     

    |

     

    Boa tarde a todos.

    Voltei neste tópico porque descobrir o que esta acontecendo com o update

    Quando faço um update assim:

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D'AGUA',
      unifis = 'UN',
      clanbm = '01069000',
      WHERE sr_recno = '              1'

    a palavra lixa d'agua não consegue processar pois a aspa do texto interrompe o processo, causando erro no sql e faz com que o replace seja em toda a tabela.

    usando a função sr_startlog, vi que na sqlrdd ele salva o campo com 2 aspas simples, desta forma o sql reconhece como uma unica aspas no processo

    usando a rdd do sqlrdd e vendo no log, a linha de comando fica assim:

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D''AGUA',
      unifis = 'UN',
      clanbm = '01069000',
      WHERE sr_recno = '              1'

    Pergunto aos colegas que usam sql e até mesmo o sqlrdd a mais tempo que eu, como vocês fazem em caso como este, tem alguma opção no banco de dados que tem que ativar para tratar automaticamente a aspa simples, ou teria que tratar campo a campo, substituindo o ' por ''?

    estou usando o postgresql 9.5

     

     

     

    Boa tarde a todos.

    Voltei neste tópico porque descobrir o que esta acontecendo com o update

    Quando faço um update assim:

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D'AGUA',
      unifis = 'UN',
      clanbm = '01069000',
      WHERE sr_recno = '              1'

    a palavra lixa d'agua não consegue processar pois a aspa do texto interrompe o processo, causando erro no sql e faz com que o replace seja em toda a tabela.

    usando a função sr_startlog, vi que na sqlrdd ele salva o campo com 2 aspas simples, desta forma o sql reconhece como uma unica aspas no processo

    usando a rdd do sqlrdd e vendo no log, a linha de comando fica assim:

    UPDATE sup0040
     SET
      codfis = ' 878',
      desfis = 'LIXA D''AGUA',
      unifis = 'UN',
      clanbm = '01069000',
      WHERE sr_recno = '              1'

    Pergunto aos colegas que usam sql e até mesmo o sqlrdd a mais tempo que eu, como vocês fazem em caso como este, tem alguma opção no banco de dados que tem que ativar para tratar automaticamente a aspa simples, ou teria que tratar campo a campo, substituindo o ' por ''?

    estou usando o postgresql 9.5

     

     

     

    Boa tarde pessoal

    Estou com um problema com o update no postgresql, ocorreram poucas vezes este ano, mas causa um grande estrago.

    o cliente altera um cadastro e no momento de salvar o postgresql salva todos os registros da tabela com o mesmo dado

    eu estou usando o postgre 9.5 com sqlrdd, e costumo usar assim:

    clSql  := UPDATE "sup0007" SET ;
                CodEmp = ::avCarrega[1]:cCodEmp ,;
                NomEmp = ::avCarrega[1]:cNomEmp ,;
                FanEmp = ::avCarrega[1]:cFanEmp ,;
                EndEmp = ::avCarrega[1]:cEndEmp ,;
                RedEmp = ::avCarrega[1]:cRedEmp ,;
                NumCep = ::avCarrega[1]:cNumCep ,;
                Bairro = ::avCarrega[1]:cBairro ,;
                TelEmp = ::avCarrega[1]:cTelEmp ,;
                TelEm2 = ::avCarrega[1]:cTelEm2 ,;
                Ativar = clAtivar ,;
                UltUsu = oCarVar:cUser ,;
                UltMod = date()        ,;
                Operad = oCarVar:cUser ,;
                Updated= date()         ;
                WHERE sr_recno = ? 

                  alParam := {::avCarrega[1]:SR_RECNO}
            SR_BeginTransaction()
            
            Try
            
                oSql := SR_GetConnection()
                 
                apCode := SR_SQLParse( clSql, @nErr, @nPos )
                cResu := SR_SQLCodeGen( apCode, alParam, oSql:nSystemID )
                nErr := oSql:Exec( cResu )

    este é um exemplo usando a sqlrdd pra converter o codigo, mas tenho outro caso que uso o comando direto no oSql:Exec sem passar pelo sr_sqlcodegen e também deu o problema.

    este comando acima, gera o comando abaixo para o postgre

    UPDATE 
      "sup0007"
     SET
      "codemp" = E'3000286',
      "nomemp" = E'CONTE COMIGO',
      "fanemp" = E'CONTE',
      "endemp" = E'RUA BEABA,98',
      "redemp" = ' ',
      "numcep" = E'89837-000',
      "bairro" = E'CENTRO',
      "telemp" = E'3999999',
      "telem2" = E'89999427',
      "ativar" = E'FF',
      "ultusu" = E'AUGUSTO',
      "ultmod" = E'2019-10-01',
      "operad" = E'AUGUSTO',
      "updated" = E'2019-10-01' WHERE "sr_recno" = 1595

    Não vejo erro no comando, isto ocorre muitas vezes em todo meu sistema, mas este erro ocorreu poucas vezes.

    Alguém tem ideia do que pode ser? Algo na Tabela, no banco, etc.

    Puts, sem erro fica dificil, mas substitui todos os dados ou cria vários registros iguais?

  11.  

    Obrigado a todos, os colegas, pelas respostas, mas o que preciso é só pegar o protocolo de autorização da sefaz, com uma rotina de dentro do sistema, sem entrar manualmente no site da sefaz, digitar uma chace, dizer que não sou robô, continuar, clicar sobre o protocolo e copiar e depois colar no meu sistema.

    Busco uma forma de com a chave da nota pegar automaticamente o protocolo e copiar no meu arquivo tudo automaticamente

    Crisvam, boa noite. Todas alternativas foram automáticas, ou seja, vc de posse da chave no seu sistema e melhor ainda do xml, vc consegue estas informações. Exceto se vc não armazena a chave de acesso e  o xml, para poder reaver estas informações.

    []s,

     

    []s,

  12.  

    Kapiaba, valeu.. isso eu vi... mas o contador do meu cliente insiste que a diferença de aliquota (DIFAL) sobre ICMS, eu tenho que somar no total da NFe..

    Não sei se isso é possível.. mas discutir com contador é foda;;;

     

    Até onde eu sei amigo, tributos com exceção de ST e IPI, demais não somam no total da nota. Tentando lembrar aqui se mais algum é feita a cobrança na fonte e não na apuração, inclusive o destaque deste é informado nos dados adicionais.

  13.  

    Rochinha, grato pela atenção. 

     

    Os meus também fazem isso, mas reclamam de ter que entrar no site da sefaz, copiar o protocolo e colar

     

    Rochinha, grato pela atenção. 

     

    Os meus também fazem isso, mas reclamam de ter que entrar no site da sefaz, copiar o protocolo e colar

    Mas vc tem a chave e o arquivo? pq na consulta pelo ACBR, ele é gravado no xml. Espero em breve postar algumas pesquisas e testes com as DLL's do ACBR, e isso irá facilitar esta consulta sem a necessidade de ter instalado o monitor.

  14.  

    Olá! como ficaria um SELECT, para exibir SEMENTE as linhas em que os campos CODIGO e a DATACADASTRO sejam idênticas

    Pseudo código:

    Select * from <nometabela> where codigo=codigo and datacadastro=datacadastro;

    
            CODIGO,TIPO,DATA,QTDE
    result: 1,'S',01/01/2020,  10
            1,'E',01/01/2020, 100
            
            5,'E', 10/01/2020, 20
            5,'S',10/01/2020,   5
            5,'S',10/01/2020,   3

    BLZ

     

    Com im put e pesquisa somente um uma tabela? Ou comparando duas tabelas, como se fosse um RELATION?

  15.  

    Sim, pelas exigências governamentais os documentos originais tem que ser armazenados em uma pasta segura e manter a integridade da assinatura. Então faço melhor, compacto os pdfs com senha e gravo no campo Binario da tabela. Isto porque uso Dicionario de dados do ADS com tabelas ADT.

    Giovany, Boa tarde, por favor, seria possível postar aqui ao menos a lógica de gravar o PFX na base de dados?

     

    []s,

  16.  

    Obrigado pelas respostas.

    O código 590 é anterior a 2012 e a SEFA recusa.

    Redação anterior dada ao Anexo Único pelo Ajuste SINIEF 03/10, efeitos de 01.10.10 até 30.11.12.

     

     

    Eu acho que o amigo acima, matou a charada, na verdade deve ser origem 5 e cst 90 = 590, que em simples nacional seria origem 5 e csosn = 900.

     

    []s.

     

     

  17.  

    O problema é como e onde conseguir a DLL, pq nos exemplos, especificamente a classe, faz a leitura, mas a DLL não está no repositório. O site deles não ajuda muito... pesquisei não encontrei. 

     

     

    O problema é como e onde conseguir a DLL, pq nos exemplos, especificamente a classe, faz a leitura, mas a DLL não está no repositório. O site deles não ajuda muito... pesquisei não encontrei. 

    É que as Dll's estão disponíveis para usuários SAC, leia msg em off.

     

    Quem quiser baixar as dll's usar este link:

    https://www.projetoacbr.com.br/forum/files/category/36-acbrlib/

    []s,

  18.  

    Caro Jorge Andrade, primeiro quero parabenizar pela sua parceria com AcBR para disponibilizar produto muito importante e legal para nosso universo (x)Harbour.

    A princípio preciso do AcBr Boletos, como manda o figurino estou fazendo os primeiros testes, apresentou a seguinte mensagem:  

    Compiling: ACBrBoletoDemo.prg...
    Linking: AcBrBol.exe...
    Error: Unresolved external '_hb_stackGetRecoverBase' referenced from C:\USERS\SILVA\DOCUMENTS\XAILER\PROJECTS\OBJ\DEBUGGER.OBJ
    1 Files, 0 Warnings, 1 Errors
    Compile time: 0.65s   Link time: 1.97s   Total time: 2.64s

    Também sentiu falta da função hb_dirBase() fiz assim:

    boleto:ConfigGravarValor("Principal", "LogPath", "c:\correio\" ) //hb_dirBase())

    compilando com xHarbour

    Obrigado! 

     

    Com relação a função ela realmente não existe no xHb e vc fez certo, porém eu não uso/compilo o debugger. Outra coisa amigo, não é parceria, está a disposição de todos e como é um código aberto, quem manja de Lazarus e Delphi, pode pegar os fontes e compilar, mas agradeço ao Gilmer permitir a divulgação.

    []s,

×
×
  • Create New...