Jump to content
Fivewin Brasil

alex2002

Membros
  • Posts

    1,229
  • Joined

  • Last visited

  • Days Won

    24

Posts posted by alex2002

  1. 6 horas atrás, Jmsilva disse:

    Alex, o ideal e vc fazer um cadastro no Acbr, e free 30 Dias, opcional pagamento após. Você baixa a Dll e o fontes exemplos. Muito simples, em resumo a Dll faz leitura de arquivo ini, logo no seu sistema precisa gerar um arquivo ini com todos os dados, selecionar o boleto (é um method), após através method faz leitura do ini gera o boleto e o arquivo de remessa para banco. Na semana que vem vou fazer exemplos e te mando. 

    Blza, vou aguardar o seu exemplo.

    Um abraço,

    Alexandre Pereira

  2. Pessoal,

    Qual classe (free) vcs indicam para que eu possa gerar os boletos (preferencialmente em formato carnê)  e efetuar o registro dos mesmos? 

    Caso não seja possível registrar, pelo menos emitir dos principais bancos. O registro eu dou um jeito.

    Sinceramente não tenho mais paciência pra ficar desenhando isso não. Já fiz muito, acho que estou ficando velho rsrsrsrsrs

    E mais a mais, como diz o mestre Evandro: "Pra quê ficar reinventando  a roda?"


    Um abraço,

     

    Alexandre Pereira

  3. 5 minutos atrás, rochinha disse:

    Amiguinhos,

    kapiaba muitas das informações contidas num boleto podem sesr automatizadas quando voce fecha o pedido e lança as parcelas financeiras no seu arquivo financeiro.

    Numa tela como esta você pode apresentar os dados de um boleto existente para possível complemento de informação. 

    Para cadastro, imagine que fuçuários são preguicosos ao ponto de terem pavor de preencher estes documentos.

    Não sei se você vai colocar uma imagem de um boleto vazio como fundo desta tela, ficaria legal pois o boleto wysewyg ficaria perfeito na apresentação pré-impressão. e muitos dos campos ai teriam de ser suportados por combos para prevenir preguiça(erros de preenchimento) e invalidação do boleto.

    Não cheguei a completar a compilação do trecho que o Ladinilson postou para verificar a saida final, mas antes de criar a tela, programe a impressão com dados da empresa e proceda a homologação. Passando pela homologação junto ao banco(homologação: nome bonito que define: Você ir até um banco, enfrentar fila, pagar um boleto e o caixa lhe responder que o boleto é inválido ou não).

    Resumindo, acrescente a opção de Emitir Boleto deste Registro? e complete internamente todos os campos necessários e gere a impressão. Tudo ok? cliente satisfeito? fuçonários felizes, ai pare com tempo, abra uma breja, pegue um torresminho e começe a desenhar a tela.

    Alguns Fuçuário são chatos o bastante pra colocar tanta exigência que se um sistema pudesse ser baseado no que eles querem ver o sistema teria apenas uma dialogo e um botão no meio dizendo:

    Aperte aqui que eu faço o Resto.

    rsrsrsrs a última frase é fantástica, além de verdadeira é claro.

     

  4. Então,

    Eu adicionei o debugger.prg no meu projeto e retornou o erro faltando algumas funções:

     

    Error: Unresolved external '_HB_FUN_HB_TSTOSTR' referenced from P:\DESENV\CREDPLUS\OBJ\DEBUGGER.OBJ
    Error: Unresolved external '_HB_FUN_HB_PS' referenced from P:\DESENV\CREDPLUS\OBJ\DEBUGGER.OBJ
    Error: Unresolved external '_HB_FUN___DBGSENDMSG' referenced from P:\DESENV\CREDPLUS\OBJ\DEBUGGER.OBJ
     
    Mas acabei de colocar agora. Na verdade eu não sou muito adepto de debug, mas vou insistir.

    Um abraço,

    Alexandre Pereira
     
    ps: Uso o xHarbour e não o Harbour
     
  5. Bom dia pessoal,

    Depois de uns dois dias, consegui enfim usar o VSCODE para editar e compilar o meu projeto.

    Sinceramente, na minha opinião, o xDEV da um baile, pelo menos pra mim que ainda não me habituei com o VS. As teclas de aceleração do xDEV são melhores. Esse negócio de vc ficar dando, control setinha pedal e dois pulinhos definitivamente não é comigo. Me lembra a época do WordStar (saudosista, poucos aqui vão lembrar disso). Quanto ao versionador, também prefiro o SVN ao GIT. Acho que o controle dele mais fácil (pelo menos pra mim).

    Mas vamos nessa nova empreitada e vamos aprendendo, quem sabe outro dia eu não volte aqui e mude a minha opinião. Vixe, estou igual usuário com os paradigmas de mudanças rsrsrsrsrs.

    A propósito, tive que fazer um executável para compilar. Foi bom que voltei um pouco no tempo me lembrando da época que usava .BAT pra compilar (eca). Vou disponibilizar pra quem for fazer transição do xDEV para o VSCODE. Só vou terminar de ajustar mais algumas coisas e liberar o EXE pra galera.


    Um abraço,

    Alexandre Pereira 

  6. Já descobri.

    Na verdade a saída do harbour, sabiamente, para esta mensagem é no warning. Daí é só colocar "harbour .... 2>arq.log"

    Funciona.

    Um abraço,

    Alexandre Pereira

  7. 15 minutos atrás, emotta disse:

    Legal, eu preferi mudar minha estrutura mas ficou bem próxima ao que era o projeto do xDev também.

     

    Olha só, estou executando as instruções do xHarbour direto no meu executável.

    Como vc fez pra pegar o erro (caso tenha erro de compilação)?

    Estou colocando pra jogar o resultado dentro de um arquivo ( harbour .... > arq.log ) , mas não está vindo o erro, vem apenas o índice do harbour. E eu preciso do erro pra apresentar a linha que deu e tal.

    Se já tiver conseguido, da um toque aí.

    Um abraço,

    Alexandre Pereira

  8. Em 30/06/2020 at 10:07, emotta disse:

    Alexandre eu fiz o seguinte, criei um executavel que a partir da workspace lê um arquivo pre determinado com extensão .PRJ

    Nesse arquivo eu coloco os arquivos do projeto e faço a compilação executando o que executaria no .bat

    Faça algo assim q vc terá toda liberdade e é um executavel bem simples, não tem segredo, vc faz a seu gosto.  Não te mando o meu pq tem várias particularidades e vai te confundir mas a ideia é simples, vc faz um executavel que lê um arquivo com extensão .PRJ e neste PRJ ele pega cada PRG e compila e gera o executavel.

    No VSCODE vc coloca o seu build padrão para executar este executavel

     

    Pois é,

    Já estou fazendo isso, tinha pensado exatamente o que vc fez. Sendo assim, creio que é a melhor opção. Já estou terminando aqui.

    A propósito, como meu projeto tem mais de mil PRGs e RES, fiz de uma forma a aproveitar a estrutura do arquivo .xDev.

    Obrigado.

    Alexandre Pereira

     
    •  
  9. Pessoal, 

    Qual o maker vc estão usando para xHarbour com VsCode? 

    Entrei de cabeça no VsCODE, mas quero usar um maker que não precise ficar recompilando e que eu não precise editar .BATs pra incluir.

    Nos exemplos que vi, usa-se o hbmk2, mas vi que ele é do Harbour e no meu caso, eu ainda estou usando o xHarbour.

    Fala aí.

    Um abraço,


    Alexandre Pereira

     

  10. Aqui na Decla e também o Evandro na Skill, fazemos da seguinte forma:

    Criamos uma tabela chamada perfil, onde o cara apenas coloca o nome deste perfil e atribuimos um ID pra ele.

    Depois criamos a tabela acessos, onde temos em um array todas as opções do sistema onde podem ser acessadas (inclusive determinados botões) vinculadas a este perfil.

    Daí relacionamos o perfil ao usuário, e temos uma função que verifica se o perfil daquele usuário pode operar naquela opção escolhida. Com isso, o menu/botão fica congelado caso o usuário não possa ter acesso.

    Temos que usar assim até porque o sistema tem mais de 1.000 opções, imagina colocar um campo pra cada opção.

     

    Um abraço,

    Alexandre Pereira

  11. Olá pessoal, tem um amigo que está precisando da tabela de produtos de supermercado. Quem tiver e puder passar vai ajudar. Preciso no mínimo do código (EAN) e o nome, se tiver mais informações melhor.

    Um abraço,

    Alexandre Pereira

  12. O segredo da rotina é que no comando tradicional, vc da insert por insert.

    E pela sua rotina vc monta um insert múltiplo.

    Isso faz toda diferença.

    Em 2006, eu fiz um backup personalizado que gerava mais rápido que o MySQLDUMP e também restaurava mais rápido que o próprio MySQL. E a técnica usada foi justamente esta, de aumentar a quantidade de registro em um insert, também compactei strings e explodia na restauração. Assim o arquivo ficava bem menor que o atual SQL do dump. Além de certa forma criptografar o backup.

    Parabéns emotta.


    A propósito ele pode ficar ainda mais rápido (e menor) se você usar apenas um insert com várias inserções:

    insert into tabela (campoa, campob) values ( valora1, valorb1), (valora2, valorb2), (valora3, valorc3)....

    Dê uma olhada.

     

  13. Eu ainda uso a xDev. 

    Estou querendo migrar para o VSCODE simplesmente pelo fato dele ser mais compativel com Docker, Python, Node, etc.

    Até hoje ainda não migrei devido ao tamanho do projeto e não ter ninguém pra trocar uma ideia. Mas depois que li o seu tópico, acho que vou nessa também.

    Um abraço,

    Alexandre Pereira

  14. Olá,

    Vc pode usar a função abaixo para validar tanto o campo digitado quanto a comparação. Se for em SQL vc tem que criar esta função também no SQL para comparar.

    Um abraço,

    Alexandre Pereira

     

    ////////////////////////////DADOS DA FUNCAO////////////////////////////////////////////
    // NOME       : TiraAcentoUTF                                                        //
    // SINTESE    : Retirar acentos e cedilhas                                           //
    // PARAMETROS : <1> cTexto para retirar os acentos                                   //
    // RETORNO    : cTexto sem acentos ou cedilhas                                       //
    ///////////////////////////////////////////////////////////////////////////////////////
    function TiraAcentoUTF( cTexto )

    cTexto := StrTran(cTexto,"ã","a")
    cTexto := StrTran(cTexto,"ä","a")
    cTexto := StrTran(cTexto,"à","a")
    cTexto := StrTran(cTexto,"á","a")
    cTexto := StrTran(cTexto,"ª","a")
    cTexto := StrTran(cTexto,"â","a")
    cTexto := StrTran(cTexto,"¦","a")
    cTexto := StrTran(cTexto,"è","e")
    cTexto := StrTran(cTexto,"é","e")
    cTexto := StrTran(cTexto,"ê","e")
    cTexto := StrTran(cTexto,"ë","e")
    cTexto := StrTran(cTexto,"ì","i")
    cTexto := StrTran(cTexto,"í","i")
    cTexto := StrTran(cTexto,"î","i")
    cTexto := StrTran(cTexto,"ï","i")
    cTexto := StrTran(cTexto,"ò","o")
    cTexto := StrTran(cTexto,"§","o")
    cTexto := StrTran(cTexto,"õ","o")
    cTexto := StrTran(cTexto,"ö","o")
    cTexto := StrTran(cTexto,"ó","o")
    cTexto := StrTran(cTexto,"º","o")
    cTexto := StrTran(cTexto,"ô","o")
    cTexto := StrTran(cTexto,"õ","o")
    cTexto := StrTran(cTexto,"ø","o")
    cTexto := StrTran(cTexto,"ù","u")
    cTexto := StrTran(cTexto,"ú","u")
    cTexto := StrTran(cTexto,"ü","u")
    cTexto := StrTran(cTexto,"û","u")
    cTexto := StrTran(cTexto,"ç","c")
                                
                                         
    cTexto := StrTran(cTexto,"Ã","A")
    cTexto := StrTran(cTexto,"Ä","A")
    cTexto := StrTran(cTexto,"À","A")
    cTexto := StrTran(cTexto,"Á","A")
    cTexto := StrTran(cTexto,"Â","A")
    cTexto := StrTran(cTexto,"È","E")
    cTexto := StrTran(cTexto,"Ë","E")
    cTexto := StrTran(cTexto,"É","E")
    cTexto := StrTran(cTexto,"Ê","E")
    cTexto := StrTran(cTexto,"Ì","I")
    cTexto := StrTran(cTexto,"Í","I")
    cTexto := StrTran(cTexto,"Î","I")
    cTexto := StrTran(cTexto,"Ï","I")
    cTexto := StrTran(cTexto,"Ò","O")
    cTexto := StrTran(cTexto,"Õ","O")
    cTexto := StrTran(cTexto,"Ó","O")
    cTexto := StrTran(cTexto,"Ô","O")
    cTexto := StrTran(cTexto,"Ö","O")
    cTexto := StrTran(cTexto,"Ù","U")
    cTexto := StrTran(cTexto,"Ú","U")
    cTexto := StrTran(cTexto,"Ü","U")
    cTexto := StrTran(cTexto,"Û","U")
    cTexto := StrTran(cTexto,"Ç","C")

    cTexto := StrTran(cTexto,"«"," ")
    cTexto := StrTran(cTexto,"®"," ")
    cTexto := StrTran(cTexto,""," ")
    cTexto := StrTran(cTexto,"¬"," ")
    cTexto := StrTran(cTexto,"¯"," ")
    cTexto := StrTran(cTexto,"ý"," ")
    cTexto := StrTran(cTexto,","," ")
    cTexto := StrTran(cTexto,"'"," ")
    cTexto := StrTran(cTexto,"`"," ")
    cTexto := StrTran(cTexto,"/"," ")
    cTexto := StrTran(cTexto,"\"," ")
    return cTexto
     

×
×
  • Create New...