Jump to content
Fivewin Brasil

gunafe

Membros
  • Posts

    599
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by gunafe

  1. Bom dia,

    Verifique na pasta onde voce colocou o exe pra testar a lib se existe o arquivo : PixQRCode.bmp

    Outra coisa, voce precisa passar os dados, ou seja, chave, nome, cidade e valor que o qrcode vai ser mostrado na dialog gerada e pode ser lido pelo aplicativo do banco;

    existe tambem a possibilidade de enviar via zap/email o codigo usado pra gerar o qrcode, onde o pagador pode copiar e colar no aplicativo do banco pra pagar o pix.

    Peço desculpas pela mensagem que aparece antes, era somente um teste de posicionamento que precisei mostrar na tela e esqueci de tirar, segue novo arquivo anexo já corrigido.

    A lib pode ser usada livremente para os testes necessarios por 20 dias, a partir dai, caso seja do interesse, posso liberar o uso sem restrição por uma pequena taxa.

    CODEPIX.lib

  2. Boa Noite,

    É gerado um bitmap do qrcode com os dados do pix a receber, que o pagador pode ler com o aplicativo do banco. Este qrcode é gravado no diretorio onde está seu exe, mas a cada novo pagamento, ele é superposto.  Basta compilar a lib junto com o exemplo que vou postar abaixo que voce vê como funciona:

    
    #include "FiveWin.ch"
    //------------------------------------------------
    Function Main()
    
       local t_CHAVE  := '+55DDDNUMERODOTELEFONE',;
             t_NOME   := 'NOMEDOBENEFICIARIO',;
             t_CIDADE := 'NOMEDACIDADE',;  // Ex.: RIO DE JANEIRO
             t_VALOR  := 10.00
    
    
       Pag_Pix( t_CHAVE, t_NOME, t_CIDADE, t_VALOR )
    
    Return Nil

     

  3. Bom dia,

    Pequena lib para gerar qrcode pix.

    modo de usar :  compilar a lib junto com seu sistema, xharbour + bcc7

    fazer a seguinte chamada : Pag_Pix( t_CHAVE, t_NOME, t_CIDADE, t_VALOR )

    onde:

            t_CHAVE  := '+55DDDNUMERODOTELEFONE' OU 'CNPJ/CPF' OU 'EMAIL' OU 'CHAVE ALEATORIA'
             t_NOME   := 'NOME DO RECEBEDOR'
             t_CIDADE := 'CIDADEDORECEBEDOR'
             t_VALOR  := VALOR DO PIX( EX.: 10.00 )

     

    CODEPIX.rar

  4. Bom dia a todos,

    Se algum colega do forum faz nota fiscal de serviços paulistana pode me dizer se conseguiu resolver a TAG assinatura? É que, mesmo fazendo a assinatura sempre que mando meu xml para weservice da prefeitura recebo a mensagem de erro abaixo:

    <Erro xmlns=""><Codigo>1206</Codigo><Descricao>Assinatura Digital do RPS incorreta - String verificada (56663072UNICA00000003803720190819TNN00000000000010000000000000000008494300000000000000)</Descricao><ChaveRPS><InscricaoPrestador>56663072</InscricaoPrestador><SerieRPS>UNICA</SerieRPS><NumeroRPS>38037</NumeroRPS></ChaveRPS></Erro><Erro xmlns=""><Codigo>1204</Codigo><Descricao>Valor Total de Serviços não confere com o enviado (0).</Descricao></Erro>

     

    Agradeço quem puder ajudar,

    Luiz Augusto

     

  5. Bom dia,

    eu uso desta forma:


    dbSelectArea( "Desp_pag" )
       //--------------------------------------------------------------------
       cPro := ( oPesq:oGet:Buffer )

          lAchou := .f.
          //--------------------------------------------------------------------
          // Busca pelo CAMPO NUM DOC a primeira Ocorrencia do Código Digitado
          //--------------------------------------------------------------------
          IF Desp_pag->( dbSeek( Left( cPro, oPesq:nPos - 1 ), .t. ) )
       
             lAchou := .t.
       
          EndIF

       // Filtra todos os Itens que satisfaçam a letra digitada
       cPro := IF( Valtype( tPesq ) = 'D', Dtos( tPesq ), Alltrim( tPesq ) )

       ordScope( 0, Rtrim( cPro ) )
       ordScope( 1, Rtrim( cPro ) )
       dbGotop()

       oLbx:Refresh()  // listbox
       xSetFocus( oLbx )

    o filtro só mostra no browse o que esta no OrdScope

  6. Bom dia,

    Procure por Cappta TEF, é uma empresa de São Paulo, faz a homologação via remoto, usando troca de arquivos ou API deles.  Eu integrei meu sistema via API criando uma dll de integração com a dll deles, já que via xharbour direto não estava conseguindo.  Qualquer dúvida, posta ai.

  7. Bom dia,

    Estes são os campos de retorno da função:

             //--------------------
             //  tratar txtNFe
             [resNFe]|NSU|chNFe|CNPJ|CPF|xNome|IE|dEmi|tpNF|vNF|digVal|dhRecibo|cSitNFe|cSitConf
             [resCanc]|NSU|chNFe|CNPJ|CPF|xNome|IE|dEmi|tpNF|vNF|digVal|dhRecibo|cSitNFe|cSitConf
             [resCCe]|NSU|chNFe|dhEvento|tpEvento|nSeqEvento|descEvento|xCorrecao|tpNF|dhRecibo
             //--------------------

    que voce pode tratar e copiar para um dbf e depois mostrar na tela com um browse; retorna também um xml, mas é mais simples trabalhar no txt que a função monta.

     

  8. Boa tarde Kapi, tudo tranquilo?

    Coloque esta linha no Main()

    SetUnhandledExceptionFilter( @GpfHandler() ) e, compile o prg abaixo junto com seu sistema

    
    // Error handler system adapted to FiveWin
    // ErrSysW.prg
    
    #include "FiveWin.ch"
    #include "error.ch"
    
    external _fwGenError   // Link FiveWin generic Error Objects Generator
    
    #define NTRIM(n)    ( LTrim( Str( n ) ) )
    
    #ifdef __CLIPPER__
       #define DLG_TITLE "FiveWin: The CA-Clipper for Windows Library"
    #else
       #ifdef __HARBOUR__
          #define DLG_TITLE "FiveWin for (x)Harbour"
          #command QUIT => ( PostQuitMessage( 0 ), __Quit() )
       #else
          #define DLG_TITLE "FiveWin for Xbase++"
       #endif
    #endif
    
    /*************
    *ErrorSys()
    *
    *Note:  automatically executes at startup
    */
    procedure ErrorSys()
        ErrorBlock( { | e | ErrorDialog( e ) } )
    Return
    
    procedure ErrorLink()
    Return
    
    /*************
    *   ErrorDialog()
    */
    //static function ErrorDialog( e ) // -> logical or quits App.
    Function ErrorDialog( e ) // -> logical or quits App.
    
       local oDlg, oLbx, oFont
       local lRet    // if lRet == nil -> default action: QUIT
       local n, j, cMessage, aStack := {}
       local oSay, hLogo
       local nButtons  := 1
       local cErrorLog := ""
       local aVersions := GetVersion()
       local aTasks
       local aRDDs, nTarget, uValue
       local oOldError
       local cRelation
       local lIsWinNT := IsWinNT()
    
       // by default, division by zero yields zero
       if ( e:genCode == EG_ZERODIV )
          return 0
       endif
    
       // for network open error, set NETERR() and subsystem default
       if ( e:genCode == EG_OPEN .and. ;
          ( e:osCode == 32 .or. e:osCode == 5 ) .and. ;
            e:canDefault )
          NetErr( .t. )
          return .f.       // Warning: Exiting!
       endif
    
       // for lock error during APPEND BLANK, set NETERR() and subsystem default
       if ( e:genCode == EG_APPENDLOCK .and. e:canDefault )
          NetErr( .t. )
          return .f.       // OJO SALIDA
       endif
    
       if Left( ProcName( 7 ), 10 ) == "ERRORDIALO"
          SET RESOURCES TO
          ErrorLevel( 1 )
          QUIT
       endif
    
       ErrorBlock( {|e| MsgStop( ErrorMessage(e) + " from Errorsys, line:" + ;
                                 Str( ProcLine( 1 ), 3 ) ), __quit() } )
    
       cErrorLog += "Application" + CRLF
       cErrorLog += "===========" + CRLF
       cErrorLog += "   Path and name: " + GetModuleFileName( GetInstance() )
    
       #ifdef __CLIPPER__
          cErrorLog += " (16 bits)" + CRLF
       #else
          cErrorLog += " (32 bits)" + CRLF
       #endif
    
       cErrorLog += "   Size: " + Transform( FSize( GetModuleFileName( ;
                    GetInstance() ) ), "9,999,999 bytes" ) + CRLF
       #ifdef __CLIPPER__
          cErrorLog += "   Max files handles permited: ( SetHandleCount() ) " + ;
                       Str( SetHandleCount(), 3 ) + CRLF
       #endif
    
       cErrorLog += "   Time from start: " + TimeFromStart() + CRLF
    
       cErrorLog += "   Error occurred at: " + ;
                    DToC( Date() ) + ", " + Time() + CRLF
    
       // Error object analysis
       cMessage   = "   Error description: " + ErrorMessage( e ) + CRLF
       cErrorLog += cMessage
    
       if ValType( e:Args ) == "A"
          cErrorLog += "   Args:" + CRLF
          for n = 1 to Len( e:Args )
             cErrorLog += "     [" + Str( n, 4 ) + "] = " + ValType( e:Args[ n ] ) + ;
                          "   " + cValToChar( e:Args[ n ] ) + CRLF
          next
       endif
    
       cErrorLog += CRLF + "Stack Calls" + CRLF
       cErrorLog += "===========" + CRLF
          n := 2    // we don't disscard any info again !
          while ( n < 74 )
              if ! Empty(ProcName( n ) )
                 AAdd( aStack, "   Called from " + Trim( ProcName( n ) ) + ;
                               "(" + NTRIM( ProcLine( n ) ) + ")" )
                 cErrorLog += ATail( aStack ) + CRLF
              endif
              n++
        end
    
       cErrorLog += CRLF + "System" + CRLF
       cErrorLog += "======" + CRLF
    
       #ifdef __CLIPPER__
          cErrorLog += "   CPU type: " + GetCPU() + CRLF
       #else
          cErrorLog += "   CPU type: " + GetCPU() + " " + ;
                       AllTrim( Str( GetCPUSpeed() ) ) + " Mhz" + CRLF
       #endif
    
       cErrorLog += "   Hardware memory: " + ;
                    cValToChar( Int( nExtMem() / ( 1024 * 1024 ) ) + 1 ) + ;
                    " megs" + CRLF + CRLF
    
       cErrorLog += "   Free System resources: " + AllTrim( Str( GetFreeSystemResources( 0 ) ) ) + " %" + CRLF + ;
                    "        GDI    resources: " + AllTrim( Str( GetFreeSystemResources( 1 ) ) ) + " %" + CRLF + ;
                    "        User   resources: " + AllTrim( Str( GetFreeSystemResources( 2 ) ) ) + " %" + CRLF + CRLF
    
       cErrorLog += "   Compiler version: " + Version() + CRLF
    
       #ifdef __CLIPPER__
          cErrorLog += "   Windows and MsDos versions: " + ;
                       AllTrim( Str( aVersions[ 1 ] ) ) + "." + ;
                       AllTrim( Str( aVersions[ 2 ] ) ) + ", " + ;
                       AllTrim( Str( aVersions[ 3 ] ) ) + "." + ;
                       AllTrim( Str( aVersions[ 4 ] ) ) + CRLF + CRLF
       #else
          cErrorLog += "   Windows version: " + ;
                       AllTrim( Str( aVersions[ 1 ] ) ) + "." + ;
                       AllTrim( Str( aVersions[ 2 ] ) ) + ", Build " + ;
                       AllTrim( Str( aVersions[ 3 ] ) ) + ;
                       " " + aVersions[ 5 ] + CRLF + CRLF
       #endif
    
       aTasks = GetTasks()
       cErrorLog += "   Windows total applications running: " + ;
                    AllTrim( Str( Len( aTasks ) ) ) + CRLF
       for n = 1 to Len( aTasks )
          cErrorLog += "    " + Str( n, 3 ) + " " + aTasks[ n ] + CRLF
       next
    
       // Warning!!! Keep here this code !!! Or we will be consuming GDI as
       // we don't generate the error but we were generating the bitmap
    
       hLogo = FWBitMap()
    
       if e:canRetry
          nButtons++
       endif
    
       if e:canDefault
          nButtons++
       endif
    
       cErrorLog += CRLF + "Variables in use" + CRLF + "================" + CRLF
       cErrorLog += "   Procedure     Type   Value" + CRLF
       cErrorLog += "   ==========================" + CRLF
    
       n := 2    // we don't disscard any info again !
       while ( n < 74 )
    
           if ! Empty( ProcName( n ) )
              cErrorLog += "   " + Trim( ProcName( n ) ) + CRLF
              for j = 1 to ParamCount( n )
                 cErrorLog += "     Param " + Str( j, 3 ) + ":    " + ;
                              ValType( GetParam( n, j ) ) + ;
                              "    " + cGetInfo( GetParam( n, j ) ) + CRLF
              next
              for j = 1 to LocalCount( n )
                 cErrorLog += "     Local " + Str( j, 3 ) + ":    " + ;
                              ValType( GetLocal( n, j ) ) + ;
                              "    " + cGetInfo( GetLocal( n, j ) ) + CRLF
              next
           endif
    
           n++
       end
    
       cErrorLog += CRLF + "Linked RDDs" + CRLF + "===========" + CRLF
       aRDDs = RddList( 1 )
       for n = 1 to Len( aRDDs )
          cErrorLog += "   " + aRDDs[ n ] + CRLF
       next
    
       cErrorLog += CRLF + "DataBases in use" + CRLF + "================" + CRLF
       for n = 1 to 255
          if ! Empty( Alias( n ) )
             cErrorLog += CRLF + Str( n, 3 ) + ": " + If( Select() == n,"=> ", "   " ) + ;
                          PadR( Alias( n ), 15 ) + Space( 20 ) + "RddName: " + ;
                          ( Alias( n ) )->( RddName() ) + CRLF
             cErrorLog += "     ==============================" + CRLF
             cErrorLog += "     RecNo    RecCount    BOF   EOF" + CRLF
             cErrorLog += "    " + Transform( ( Alias( n ) )->( RecNo() ), "99999" ) + ;
                          "      " + Transform( ( Alias( n ) )->( RecCount() ), "99999" ) + ;
                          "      " + cValToChar( ( Alias( n ) )->( BoF() ) ) + ;
                          "   " + cValToChar( ( Alias( n ) )->( EoF() ) ) + CRLF + CRLF
             cErrorLog += "     Indexes in use " + Space( 23 ) + "TagName" + CRLF
             for j = 1 to 15
                if ! Empty( ( Alias( n ) )->( IndexKey( j ) ) )
                   cErrorLog += Space( 8 ) + ;
                                If( ( Alias( n ) )->( IndexOrd() ) == j, "=> ", "   " ) + ;
                                PadR( ( Alias( n ) )->( IndexKey( j ) ), 35 ) + ;
                                ( Alias( n ) )->( OrdName( j ) ) + ;
                                CRLF
                endif
             next
             cErrorLog += CRLF + "     Relations in use" + CRLF
             for j = 1 to 8
                if ! Empty( ( nTarget := ( Alias( n ) )->( DbRSelect( j ) ) ) )
                   cErrorLog += Space( 8 ) + Str( j ) + ": " + ;
                                "TO " + ( Alias( n ) )->( DbRelation( j ) ) + ;
                                " INTO " + Alias( nTarget ) + CRLF
                   // uValue = ( Alias( n ) )->( DbRelation( j ) )
                   // cErrorLog += cValToChar( &( uValue ) ) + CRLF
                endif
             next
          endif
       next
    
       n = 1
       cErrorLog += CRLF + "Classes in use:" + CRLF
       cErrorLog += "===============" + CRLF
       while ! Empty( __ClassName( n ) )
          cErrorLog += "   " + Str( n, 3 ) + " " + __ClassName( n++ ) + CRLF
       end
    
       cErrorLog += CRLF + "Memory Analysis" + CRLF
       cErrorLog +=        "===============" + CRLF
    
       #ifdef __CLIPPER__
          cErrorLog += "   Static memory:" + CRLF
          cErrorLog += "      data segment: 64k" + CRLF
       #endif
    
       #ifdef __CLIPPER__
       cErrorLog += "      Initial size:       " + ;
                    LTrim( Str( nInitDSSize() ) ) + ;
                    " bytes  (SYMP=" + LTrim( Str( nSymPSize() ) ) + ;
                    ", Stack=" + LTrim( Str( nStackSize() ) ) + ;
                    ", Heap=" + LTrim( Str( nHeapSize() ) ) + ")" + CRLF
       cErrorLog += "      PRG Stack:          " + ;
                    LTrim( Str( 65535 - ( nStatics() * 14 ) - nInitDSSize() ) ) + ;
                    " bytes" + CRLF
       #endif
    
       #ifdef __CLIPPER__
          cErrorLog += "      " + LTrim( Str( nStatics() ) ) + " Static variables: " + ;
                       LTrim( Str( nStatics() * 14 ) ) + " bytes" + CRLF + CRLF
       #else
          cErrorLog += "      " + LTrim( Str( nStatics() ) ) + " Static variables" + ;
                       CRLF + CRLF
       #endif
    
       cErrorLog += "   Dynamic memory consume:" + CRLF
       cErrorLog += "      Actual  Value: " + Str( MemUsed() ) + " bytes" + CRLF
       cErrorLog += "      Highest Value: " + Str( MemMax() ) + " bytes" + CRLF
       // nSymNames() no longer returns a real value! 15/April/97
       /*
       cErrorLog += "   SYMBOLS segment" + CRLF
       cErrorLog += "      " + LTrim( Str( nSymNames() ) ) + " SymbolNames:   " + ;
                    LTrim( Str( nSymNames() * 16 ) ) + " bytes"
       */
    
       // Generates a file with an Error Log
    
       BEGIN SEQUENCE
          oOldError = ErrorBlock( { || DoBreak() } )
          MemoWrit( "Error.log", cErrorLog )
       END SEQUENCE
       ErrorBlock( oOldError )
    
       DEFINE DIALOG oDlg ;
          SIZE 300, 200 + If( lIsWinNT, 50, 0 ) ;
          TITLE DLG_TITLE
    
       @ 0, 0 SAY oSay PROMPT OemToAnsi( cMessage ) ;
          CENTERED OF oDlg FONT oFont SIZE 149, 20
    
       oSay:nStyle   = nOR( oSay:nStyle, 128 )   // SS_NOPREFIX
       oSay:nTop     =   3
       oSay:nLeft    =  22
       oSay:nBottom  =  25
       oSay:nRight   = 148
    
       @ 24,   6 SAY "&Stack List" OF oDlg FONT oFont PIXEL
    
       n = aStack[ 1 ]
    
       @ 33, 3 LISTBOX oLbx VAR n ITEMS aStack OF oDlg ;
          SIZE 145, 60 + If( lIsWinNT, 18, 0 ) PIXEL
    
       if nButtons == 1 .or. nButtons == 3
          @ 88 + If( lIsWinNT, 24, 0 ), 60 BUTTON "&Quit" OF oDlg ACTION oDlg:End() ;
             SIZE 30, 11 PIXEL FONT oFont DEFAULT
       else
          @ 88 + If( lIsWinNT, 24, 0 ), 37 BUTTON "&Quit" OF oDlg ACTION oDlg:End() ;
             SIZE 30, 11 PIXEL FONT oFont
       endif
    
       if e:CanRetry
          @ 88 + If( lIsWinNT, 24, 0 ), If( nButtons == 2, 82, 13 ) BUTTON "&Retry" ;
             OF oDlg ACTION ( lRet  := .t., oDlg:End() ) ;
             SIZE 30, 11 FONT oFont PIXEL
       endif
    
       if e:CanDefault
          @ 88 + If( lIsWinNT, 24, 0 ), 108 BUTTON "&Default"  OF oDlg ;
             ACTION ( lRet  := .f., oDlg:End() ) ;
             SIZE 30, 11 FONT oFont PIXEL
       endif
    
       @ 21, 100 BUTTON "See Error.log file" OF oDlg FONT oFont PIXEL ;
          SIZE 47, 10 ;
          ACTION WinExec( "Notepad.exe error.log" )
    
       ACTIVATE DIALOG oDlg CENTERED ;
          ON PAINT DrawBitmap( hDC, hLogo, 6, 6 )
    
       DeleteObject( hLogo )
    
       if lRet == nil .or. ( !LWRunning() .and. lRet )
          SET RESOURCES TO
          ErrorLevel( 1 )
          QUIT              // must be QUIT !!!
       endif
    
    return lRet
    //----------------------------------------------------------------------------//
    static function DoBreak()
    
       BREAK
    
    return nil
    //----------------------------------------------------------------------------//
    static func ErrorMessage( e )
    
    // start error message
        local cMessage := if( empty( e:OsCode ), ;
                              if( e:severity > ES_WARNING, "Error ", "Warning " ),;
                              "(DOS Error " + NTRIM(e:osCode) + ") " )
    
    // add subsystem name if available
        cMessage += if( ValType( e:SubSystem ) == "C",;
                        e:SubSystem()                ,;
                        "???" )
    
    // add subsystem's error code if available
        cMessage += if( ValType( e:SubCode ) == "N",;
                        "/" + NTRIM( e:SubCode )   ,;
                        "/???" )
    // add error description if available
      if ( ValType( e:Description ) == "C" )
            cMessage += "  " + e:Description
      endif
    
    // add either filename or operation
        cMessage += if( ! Empty( e:FileName ),;
                        ": " + e:FileName   ,;
                        if( !Empty( e:Operation ),;
                            ": " + e:Operation   ,;
                            "" ) )
    return cMessage
    //----------------------------------------------------------------------------//
    // returns extended info for a certain variable type
    static function cGetInfo( uVal )
    
       local cType := ValType( uVal )
    
       do case
          case cType == "C"
               return '"' + cValToChar( uVal ) + '"'
    
          case cType == "O"
               return "Class: " + uVal:ClassName()
    
          case cType == "A"
               return "Len: " + Str( Len( uVal ), 4 )
    
          otherwise
               return cValToChar( uVal )
       endcase
    
    Return nil
    //----------------------------------------------------------------------------//
    
    #include "hbexcept.ch"
    
    //----------------------------------------------------------------------------//
    Function GpfHandler( Exception )
    
       local cMsg, nCode, oError
    
       //  TraceLog( "GPF:", Exception )
       //  memowrit( "gpf.txt", valtoprg( Exception ) )
    
       IF Exception <> NIL
          nCode := Exception:ExceptionRecord:ExceptionCode
          SWITCH nCode
             CASE EXCEPTION_ACCESS_VIOLATION
                  cMsg := "EXCEPTION_ACCESS_VIOLATION - O thread tentou ler/escrever num endereço virtual ao qual não tinha acesso." 
                  EXIT
    
             CASE EXCEPTION_DATATYPE_MISALIGNMENT
                  cMsg := "EXCEPTION_DATATYPE_MISALIGNMENT - O thread tentou ler/escrever dados desalinhados em hardware que não oferece alinhamento. Por exemplo, valores de 16 bits precisam ser alinhados em limites de 2 bytes; valores de 32 bits em limites de 4 bytes, etc. "
                  EXIT
    
             CASE EXCEPTION_ARRAY_BOUNDS_EXCEEDED
    
                  cMsg := "EXCEPTION_ARRAY_BOUNDS_EXCEEDED - O thread tentou acessar um elemento de array fora dos limites e o hardware possibilita a checagem de limites."
                  EXIT
    
             CASE EXCEPTION_FLT_DENORMAL_OPERAND
                  cMsg := "EXCEPTION_FLT_DENORMAL_OPERAND - Um dos operandos numa operação de ponto flutuante está desnormatizado. Um valor desnormatizado é um que seja pequeno demais para poder ser representado no formato de ponto flutuante padrão."
                  EXIT
    
             CASE EXCEPTION_FLT_DIVIDE_BY_ZERO
                  cMsg := "EXCEPTION_FLT_DIVIDE_BY_ZERO - O thread tentou dividir um valor em ponto flutuante por um divisor em ponto flutuante igual a zero."
                  EXIT
    
             CASE EXCEPTION_FLT_INEXACT_RESULT
                  cMsg := "EXCEPTION_FLT_INEXACT_RESULT - O resultado de uma operação de ponto flutuante não pode ser representado como uma fração decimal exata."
                  EXIT
    
             CASE EXCEPTION_FLT_INVALID_OPERATION
                  cMsg := "EXCEPTION_FLT_INVALID_OPERATION - Qualquer operação de ponto flutuante não incluída na lista."
                  EXIT
    
             CASE EXCEPTION_FLT_OVERFLOW
                  cMsg := "EXCEPTION_FLT_OVERFLOW - O expoente de uma operação de ponto flutuante é maior que a magnitude permitida pelo tipo correspondente."
                  EXIT
    
             CASE EXCEPTION_FLT_STACK_CHECK
                  cMsg := 'EXCEPTION_FLT_STACK_CHECK - A pilha ficou desalinhada ("estourou" ou "ficou abaixo") como resultado de uma operação de ponto flutuante.'
                  EXIT
    
             CASE EXCEPTION_FLT_UNDERFLOW
                  cMsg := "EXCEPTION_FLT_UNDERFLOW - O expoente de uma operação de ponto flutuante é menor que a magnitude permitida pelo tipo correspondente."
                  EXIT
    
             CASE EXCEPTION_INT_DIVIDE_BY_ZERO
                  cMsg := "EXCEPTION_INT_DIVIDE_BY_ZERO - O thread tentou dividir um valor inteiro por um divisor inteiro igual a zero."
                  EXIT
    
             CASE EXCEPTION_INT_OVERFLOW
                  cMsg := "EXCEPTION_INT_OVERFLOW - O resultado de uma operação com inteiros causou uma transposição (carry) além do bit mais significativo do resultado."
                  EXIT
    
             CASE EXCEPTION_PRIV_INSTRUCTION
                  cMsg := "EXCEPTION_PRIV_INSTRUCTION - O thread tentou executar uma instrução cuja operação não é permitida no modo de máquina atual."
                  EXIT
    
             CASE EXCEPTION_IN_PAGE_ERROR
                  cMsg := "EXCEPTION_IN_PAGE_ERROR - O thread tentou acessar uma página que não estava presente e o sistema não foi capaz de carregar a página. Esta exceção pode ocorrer, por exemplo, se uma conexão de rede é perdida durante a execução do programa via rede."
                  EXIT
    
             CASE EXCEPTION_ILLEGAL_INSTRUCTION
                  cMsg := "EXCEPTION_ILLEGAL_INSTRUCTION - O thread tentou executar uma instrução inválida."
                  EXIT
    
             CASE EXCEPTION_NONCONTINUABLE_EXCEPTION
                  cMsg := "EXCEPTION_NONCONTINUABLE_EXCEPTION - O thread tentou continuar a execução após a ocorrência de uma exceção irrecuperável."
                  EXIT
    
             CASE EXCEPTION_STACK_OVERFLOW
                  cMsg := "EXCEPTION_STACK_OVERFLOW - O thread esgotou sua pilha (estouro de pilha)."
                  EXIT
    
             CASE EXCEPTION_INVALID_DISPOSITION
                  cMsg := "EXCEPTION_INVALID_DISPOSITION - Um manipulador (handle) de exceções retornou uma disposição inválida para o tratador de exceções. Uma exceção deste tipo nunca deveria ser encontrada em linguagens de médio/alto nível."
                  EXIT
    
             CASE EXCEPTION_GUARD_PAGE
                  cMsg := "CASE EXCEPTION_GUARD_PAGE"
                  EXIT
    
             CASE EXCEPTION_INVALID_HANDLE
                  cMsg := "EXCEPTION_INVALID_HANDLE"
                  EXIT
    
             CASE EXCEPTION_SINGLE_STEP
                  cMsg := "EXCEPTION_SINGLE_STEP Um interceptador de passos ou outro mecanismo de instrução isolada sinalizou que uma instrução foi executada."
                  EXIT
    
             CASE EXCEPTION_BREAKPOINT
                  cMsg := "EXCEPTION_BREAKPOINT - Foi encontrado um ponto de parada (breakpoint)."
                  EXIT
    
             DEFAULT
                cMsg := "UNKNOWN EXCEPTION (" + cStr( Exception:ExceptionRecord:ExceptionCode ) + ")"
          END
    
          //  IF cMsg <> NIL
          //     Tracelog( "GPF Intercepted!", cMsg )
          //     Alert( "GPF Intercepted!" + CRLF + cMsg )
          //  ENDIF
       ENDIF
    
       //  Throw( ErrorNew( "GPFHANDLER", 0, 0, ProcName(), "Erro de GPF", { cMsg, Exception, nCode }, Procfile(), Procname(), procline() ) )
    
       oError := ErrorNew( "GPFHANDLER", 0, 0, ProcName(), "Erro de GPF", { cMsg, Exception, nCode }, Procfile(), Procname(), procline() )
    
       ErrorDialog( oError )
       
    Return EXCEPTION_EXECUTE_HANDLER

    Eu uso em meus sistemas, espero que ajude,

    []´s

     

  9. Bom dia,

    Passe a URL em branco também, ou seja, informe assim:

    StrPathXMLVenda := 'nome do xml'
    StrPathRetornoWS := ''
    StrLinkQrCode := ''
    iNumColunas := 48
    iTipoNF := 1

    iRetorno := iCFImprimir_NFCe_Daruma( StrPathXMLVenda,;
    StrPathRetornoWS,;
    StrLinkQrCode,;
    iNumColunas,;
    iTipoNF )

    Assim vai funcionar corretamente.

    []´s
    Luiz Augusto

    São Jose dos Pinhais, PR

    Fivewin + xharbour

  10. Bom dia a todos,

    Não queria falar nada sobre o assunto, mas, diante da demonstração de total falta de..., bom, até me fugiu a palavra no momento, depois eu lembro. Vamos lá:

    Já esta em uso no amazonas, mato grosso e rio grande de sul( em testes ainda ), os outros é oficial até onde eu sei;

    É possivel desenvolver para o seu estado e usar, desde que tenha um servidor disponivel pra isso.

    A Daruma disponibilizou um ambiente de testes, o que significa que é possivel desenvolver a NFCe sem muito esforço e com um suporte de peso, não sei dos outros fabricantes quanto ao assunto, mas acho que eles também estão se mexendo.

    Então, eu ainda não fiz nenhum teste, somente me cadastrei e peguei uma chave para os testes, mas pelo que eu já vi, esse "papo" de lib pra mim não cola, até porque não é preciso nada disso, não é por estado, é nacional( vou checar esta informação ) o exemplo esta la, livre, pra quem quiser pegar, e olha que é um dos gigantes da automoção que disponibilizou, já que o campo de venda de ECF tende a diminuir com a NFCe, eles poderiam ter ficado quietos, mas não, mostraram a cara sem medo de perder espaço.

    Bom é isso, falei o que penso e se eu desenvolver a NFCe disponibilizo pra quem quiser.

    []´s

    Luiz Augusto

    São José dos Pinhais - PR

×
×
  • Create New...