Jump to content
Fivewin Brasil

Ariston Santos

Membros
  • Posts

    500
  • Joined

  • Last visited

  • Days Won

    11

Posts posted by Ariston Santos

  1. Nos PCs (local) uso DBFCDX mesmo. No servidor de hospedagem (BD remoto) uso MySQL. Nos dispositivos dos vendedores externos (Android) uso SqlLite (nativo).

    A atualização dos dispositivos dos vendedores externos é feita dessa forma:

    • Envio do DBF local para o MySQL remoto via SQLRdd;

    • A partir dos dispositivos acesso uma página em php que obtém os dados do MySQL via JSON e salvo no SqlLite.

    Deu trabalho, mas funciona.

  2. Citando Rochinha e Jackson.

    Até tentei aprender Lazarus mas parei porque não foi necessário mudar de linguagem. Para não ter que sair do Fivewin fiz o seguinte:

    • Para gerenciamento de NF[C]-e e boletos estou usando o ACBrMonitorPLUS. Muito bom! Não tenho problemas;

    • Para desenvolvimento para Android estou usando o Basic4Android (www.b4x.com). Paguei os US$ 25,00 do Google Play Developer Console para poder disponibilizar meu App na PlayStore, assim meus clientes podem baixar/atualizar o SISCOMDroid sem nenhum problema. Também tem o B4I (Basic4ios) que é 0800, mas eu ainda não quis aprender.

    Como podem ver, dá para fazer tudo sem ter que sair do Fivewin. Só não estou usando FiveTouch porque o Sr. Linhares demorou demais no lançamento e meus clientes tinham pressa. Agora que já domino o B4A, não dá mais para tentar outra ferramenta.

  3. Testei novamente e baixou sem problema. A bronca deve ser somente no PC de quem não está conseguindo baixar. Tentem outro navegador, ou até mesmo copiando e colando o link na barra de endereços.

    http://www.arsoft-ap.com.br/fd456406745d816a45cae554c788e754/08dc2d813326fd8ac79eb734d96b56ff/sisponto_completo.zip

     

  4. Já tentou com RICHEDIT. Acho que dá pra salvar em BLOB (Memo) ?

    #include "Richedit.ch"
    FUNCTION TESTRICH()
       local oDlg, oRich
       local hRichDLL
       local lSyntaxHL := .f.
    
       hOldRes := GetResources()
       hRichDLL := LoadLibrary( "riched20.dll" )
    
       DEFINE DIALOG oDlg NAME "Test"
       oRich = TRichEdit():Redefine( 100, { || "" }, oDlg )
       oRich:lHighLight = .f.
       oRich:lreadonly := .t.
    
       REDEFINE BUTTON ID 110 ;
          ACTION oRich:SetText( MemoRead( "TestRich.prg" ) )
    
       REDEFINE CHECKBOX lSyntaxHL ID 115 OF oDlg ;
          ON CHANGE ( oRich:lHighLight := lSyntaxHL,;
                      oRich:SetText( oRich:GetText() ) )
    
       REDEFINE BUTTON ID 120 ;
          ACTION oRich:LoadFromRTFFile( cGetFile( "RTF file (*.rtf) | *.rtf" ) )
    
       REDEFINE BUTTON ID 130 ;
          ACTION oRich:SaveToRTFFile( cGetFile( "RTF file (*.rtf) | *.rtf",;
                                      "Please write a filename", "test" ) )
    
       REDEFINE BUTTON ID 998 ACTION ( oRich:GoToLine( 10 ), oRich:SetFocus() )
    
       ACTIVATE DIALOG oDlg CENTERED ON INIT SetResources(hRichDLL)
       FreeLibrary( hRichDLL )
       SetResources(hOldRes)
    
    RETURN NIL

     

  5. Também já passei por isso. Lembro que na época os cabos da rede do cliente passavam por baixo do balcão e alguns estavam aparecendo e os funcionários pisavam nos cabos e acabou rompendo um dos fios de um dos cabos da rede. Por incrível que pareça a rede não parou de funcionar mas gerou um problema igual ao do colega.

    Depois que trocamos os cabos a rede ficou bem mais rápida e o problema desapareceu.

    Além disso, sempre segui a dica do Kapiaba, que deve ser levada em conta: Depois de gravar os dados e antes do DBUNLOCK() dê um DBCOMMIT() para forçar a gravação em disco.

  6. Eu faço assim mas só testei na Bematech MP-??? TH. Vê se funciona na sua impressora.

       FOR NX := 1 TO nQtdVia // Imprimir várias vias
          PRINTER oPrn TO "NOME_DA_IMPRESSORA" NAME "Trabalho de impressão"
          oPrn:SetPage( 256 )
          DEFINE FONT oFont NAME "Courier New" SIZE 0,-12 BOLD OF oPrn
          DEFINE FONT oFnt2 NAME "Courier New" SIZE 0, -8 BOLD OF oPrn
          nWidt := oFnt2:nWidth + (oFnt2:nWidth/4)
          nFtHi := oFnt2:nHeight
          nPgHi := (60*nFtHi) * 1.3 // Altura da página: (60*Altira da fonte) * 1.3 (Testado na BEMATECH MP 2500)
          oPrn:SetSize( 1000, nPgHi)
    
          mL := 1 // Linha inicial
    	  nTckCol := 3 // Tabulação - 3 espaços
          oPrn:StartPage()
          oPrn:SayBitmap(mL*nFtHi, nWidt*(nTckCol+2), ".\bitmaps\logomarca.bmp", 40 * nWidt, (mL+6) * nFtHi)
          mL += 8
          FOR Y = 1 TO LEN(mLista) // mLista é um array contendo o que deve ser impresso
            oPrn:Say(mL*nFtHi, 000, SPACE(nTckCol)+mLista[Y], oFnt2 )
            mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF
          NEXT
          IF lAssina // Se deve incluir uma assinatura
             mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF
             oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+"----------------------------------------", oFnt2 )
             mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF
             oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+" ", oFnt2 )
             mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF
             oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+" ", oFnt2 )
             mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF
             oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+"___/___/___    _________________________", oFnt2 )
             mL ++ ; IF (mL*nFtHi) >= (60 * nFtHi) ; oPrn:EndPage() ; oPrn:StartPage() ; mL := 1 ; ENDIF
             oPrn:Say(mL*nFtHi,000, SPACE(nTckCol)+"Data           Cliente                  ", oFnt2 )
          ENDIF
          oPrn:Say(mL*nFtHi,000, "_", oFnt2 )
          oPrn:EndPage()
          oPrn:Preview()
          RELEASE FONT oFont, oFnt2
       NEXT
       // Para corrigir o BUG do papel extreito
       SysRefresh()
       PRINTER oPrn2 NAME "BugFix"
       oPrn2:SetPage( 9 )
       oPrn2:End()

     

  7. Eu uso assim ha muito tempo e nunca tive problema:

    cPasta := "\\SERVIDOR\MEUPROGRAMA\DADOS" // Endereço da pasta compartilhada. Pode ser por IP. Ex: \\192.168.0.100\MEUPROGRAMA\DADOS
    SET DEFAULT TO &(cPasta)
    USE ARQUIVO.DBF SHARED NEW // Em rede é sempre bom abrir compartilhado
    OrdListClear()
    OrdListAdd("ARQUIVO.CDX","CHAVE01","CHAVE02")
    SET ORDER TO TAG CHAVE01 IN &("ARQUIVO.CDX")
    * ou ARQUIVO->(DBSETORDER(1))
    XBROWSE()
    CLOSE ARQUIVO.DBF

     

  8. Não é pago.

    O ACBrMonitorPLUS é totalmente free e a equipe disponibiliza uma atualização a cada três meses.

    O que é pago é o SAC que custa R$ 120,00 mensais podendo ser cancelado e renovado sem nenhuma burocracia. Quando eu preciso de atualizações urgentes pago pelo suporte apenas pelo tempo que eu precisar. Raramente preciso do suporte.

    Eu uso o ACBrMonitorPLUS desde que foi lançada a NF-e e NFC-e e agora estou usando para boleto. Nunca tive problemas e espero continuar não tendo (kkk).

  9. FUNCTION UnicodeToStr(_cStr, lTiraAcento)
       LOCAL _cNewStr := _cStr
       LOCAL aConvert := {}
       AADD(aConvert, {"á", "\u00e1"})
       AADD(aConvert, {"à", "\u00e0"})
       AADD(aConvert, {"â", "\u00e2"})
       AADD(aConvert, {"ã", "\u00e3"})
       AADD(aConvert, {"ä", "\u00e4"})
       AADD(aConvert, {"Á", "\u00c1"})
       AADD(aConvert, {"À", "\u00c0"})
       AADD(aConvert, {"Â", "\u00c2"})
       AADD(aConvert, {"Ã", "\u00c3"})
       AADD(aConvert, {"Ä", "\u00c4"})
       AADD(aConvert, {"é", "\u00e9"})
       AADD(aConvert, {"è", "\u00e8"})
       AADD(aConvert, {"ê", "\u00ea"})
       AADD(aConvert, {"ê", "\u00ea"})
       AADD(aConvert, {"É", "\u00c9"})
       AADD(aConvert, {"È", "\u00c8"})
       AADD(aConvert, {"Ê", "\u00ca"})
       AADD(aConvert, {"Ë", "\u00cb"})
       AADD(aConvert, {"í", "\u00ed"})
       AADD(aConvert, {"ì", "\u00ec"})
       AADD(aConvert, {"î", "\u00ee"})
       AADD(aConvert, {"ï", "\u00ef"})
       AADD(aConvert, {"Í", "\u00cd"})
       AADD(aConvert, {"Ì", "\u00cc"})
       AADD(aConvert, {"Î", "\u00ce"})
       AADD(aConvert, {"Ï", "\u00cf"})
       AADD(aConvert, {"ó", "\u00f3"})
       AADD(aConvert, {"ò", "\u00f2"})
       AADD(aConvert, {"ô", "\u00f4"})
       AADD(aConvert, {"õ", "\u00f5"})
       AADD(aConvert, {"ö", "\u00f6"})
       AADD(aConvert, {"Ó", "\u00d3"})
       AADD(aConvert, {"Ò", "\u00d2"})
       AADD(aConvert, {"Ô", "\u00d4"})
       AADD(aConvert, {"Õ", "\u00d5"})
       AADD(aConvert, {"Ö", "\u00d6"})
       AADD(aConvert, {"ú", "\u00fa"})
       AADD(aConvert, {"ù", "\u00f9"})
       AADD(aConvert, {"û", "\u00fb"})
       AADD(aConvert, {"ü", "\u00fc"})
       AADD(aConvert, {"Ú", "\u00da"})
       AADD(aConvert, {"Ù", "\u00d9"})
       AADD(aConvert, {"Û", "\u00db"})
       AADD(aConvert, {"ç", "\u00e7"})
       AADD(aConvert, {"Ç", "\u00c7"})
       AADD(aConvert, {"ñ", "\u00f1"})
       AADD(aConvert, {"Ñ", "\u00d1"})
       AADD(aConvert, {"&", "\u0026"})
       AADD(aConvert, {"'", "\u0027"})
       FOR nX := 1 TO LEN(aConvert)
          IF aConvert[nX,2] $ _cNewStr
             _cNewStr := STRTRAN(_cNewStr, aConvert[nX,2], aConvert[nX,1])
          ENDIF
       NEXT
    RETURN(IIF(lTiraAcento,TiraAcentos(_cNewStr),_cNewStr))
    *------------------------------------------------------------------------------------------------
    FUNCTION TiraAcentos(cStr)
       LOCAL cStrNew := "", nX, aAcento, aLetras
       aAcento := {"Æ","Â"," ","µ","…","·","‚","","ˆ","Ò","¡","Ö","¢","à","ä","å","“","â","£","é","","š","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ù","ç","‡","Ç","€","§","¦","º","°","ª"}
       aLetras := {"a","A","a","A","a","A","e","E","e","E","i","I","o","O","o","O","o","O","u","U","u","U","a","A","a","A","a","A","e","E","e","E","i","I","o","O","o","O","o","O","u","U","u","U"," ","c","c","C","C",".",".",".",".","."}
       FOR nX := 1 TO LEN(aAcento)
           cStrNew := STRTRAN(cStr,aAcento[nX],aLetras[nX])
           cStr := cStrNew
       NEXT
       IF EMPTY(cStrNew)
       	cStrNew := cStr
       ENDIF
    RETURN(cStrNew)
    *------------------------------------------------------------------------------------------------

     

  10. * Função para obter NCM do site da Receita Federal
    
    function BuscaNCM( _NCM, _oDlg )
       LOCAL cHtml := "", nLeng := LEN(ALLTRIM( ClearChar(_NCM, {"."}) )), lNCMOk := .F.
       if empty(_NCM) ; return .F. ; endif
       IF nLeng < 8 .AND. nLeng > 0
          SysRefresh() ; MsgAlert("O código do NCM deve conter 8 Caracteres","Aviso")
          RETURN .F.
       ENDIF
       url := "http://www4.receita.fazenda.gov.br/simulador/PesquisarNCM.jsp?codigo="+LEFT(_NCM,2)+"&codigoCapitulo="+LEFT(_NCM,2)+"&codigoPosicao=&button=Exibir+NCMs"
       try
    		oUrl:=TUrl():New( url ) // From tip.lib
    		oHttp := TipClientHttp():New( oUrl , .f. ) // From tip.lib
       catch
          SysRefresh() ; MsgAlert("Erro ao tentar criar o objeto Http","Aviso")
       	return .f.
       end try
    
    	Try
    		oHttp:Open()
    		cHtml := oHttp:ReadAll() // Baixa todo o conteúdo do site.
    	Catch oErr
          SysRefresh() ; MsgAlert("Erro ao tentar conectar o objeto Http","Aviso")
    		RETURN .f.
    	End
    	oHttp:Close()
    	DeleteUrlCacheEntry(url) // Lipar Cache
    
       IF Empty(cHtml)
          SysRefresh() ; MsgAlert("Conteúdo vazio","Aviso")
          RETURN .F.
       ENDIF
    
       cHtml := "["+UnicodeToStr(cHtml, .t.)+"]"
       
       IF "codNCM.value='"+_NCM+"'" $ cHtml
          MsgInfo("NCM válido","Ok")      
          lNCMOk := .T.
       ELSE
          MsgAlert("NCM inválido","Aviso")      
       ENDIF
       
    	if _oDlg <> nil ; _oDlg:Update() ; endif
    RETURN(lNCMOk)

     

  11. Mestres,

    Estou fazendo testes de comunicação com os WebServices do SNGPC e só o ambiente de produção responde. Alguém sabe me informar se o ambiente de homologação está desativado ou mudou de endereço?

    Produção responde: 

    http://sngpc.anvisa.gov.br/webservice/sngpc.asmx?WSDL HTTP/1.1

    Homologação não responde:

    http://homologacao.anvisa.gov.br/sngpc/webservice/sngpc.asmx?WSDL HTTP/1.1

     

×
×
  • Create New...