Jump to content
Fivewin Brasil

Ariston Santos

Membros
  • Posts

    500
  • Joined

  • Last visited

  • Days Won

    11

Everything posted by Ariston Santos

  1. Amigo, Isso está certo? Você define mImpressora como local atribuindo o valor de PrgGetName() Local nLinI:=0, nColI:=0, nLinF:=0, nColF:=0,mImpressora:=PrnGetName() .. mas em seguida atribui "etiqueta" a mIMPRESSORA. mIMPRESSORA:="etiqueta" Isso torna a primeira atribuição desnecessária e mIMPRESSORA terá sempre o valor "etiqueta". O problema é se a impressora não estiver com este nome em "Dispositivos e Impressoras", no Windows. Creio que o único problema está sendo o nome da impressora.
  2. Quero participar mas não vou poder ir. Já pensaram na ideia de fazer a transmissão online? Talvez disponibilizando uma página onde apenas os cadastrados mediante o pagamento de uma taxa possam acessar e assistir ao evento? #ficaadica
  3. Você precisa baixar a versão trial e tentar programar seguindo as orientações de https://www.b4x.com/b4a.html Eu consegui desenvolver um App bem básico dentro do prazo de 30 dias e isso me deu segurança para comprar a versão full. Creio que você também conseguirá.
  4. 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.
  5. 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.
  6. 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
  7. Posso disponibilizar sim. Baixem deste link: Baixar código fonte do SISPONTO
  8. 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
  9. Tenho um programa de registro de ponto do funcionário que é por biometria. Se quiser o código fonte para adaptar, entre em contato por e-mail: ariston.ap@hotmail.com
  10. 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.
  11. 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()
  12. 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
  13. Deve estar faltando algum detalhe. Me adiciona no Skype Web (https://web.skype.com/pt-br/guest#) para a gente conversar. Skype: ariston.ap
  14. 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).
  15. Em "Boletos" > "Remessa e Retorno" você marcou a opção "[_] Ler dados cedente retorno" ?
  16. Só sei que isso é possível via TS. Se existe outra forma, não sei.
  17. Teste esse. Me avisa se ajudar. www.arsoft-ap.com.br/fd456406745d816a45cae554c788e754/sishotel_instalar.exe
  18. Que nome interessante: WannaCry (QuerChorar em Inglês)
  19. 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) *------------------------------------------------------------------------------------------------
  20. * 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)
  21. Assim fica complicado testar. Ô povo complicado esse do SNGPC. (kkk) Vou ver o que dá pra fazer. Obrigado.
  22. Eu não uso a DLL, apenas mostrei o "caminho das pedras" e teria declarado a função do mesmo jeito que você fez. Ao meu ver, está correta. Se você estiver testando com o emulador, verifique se as dlls estão atualizadas e tente descobrir se o emulador aceita essa nova função da DLL. Talvez precise baixar um emulador atualizado também.
  23. Veja se ajuda: http://bematechpartners.com.br/wp01/helponline/index.html?efetuaformapagamentonfceex.htm
  24. 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...