Jump to content
Fivewin Brasil

Luiz Fernando

Membros
  • Posts

    3,368
  • Joined

  • Last visited

  • Days Won

    40

Posts posted by Luiz Fernando

  1. Ola Kapiaba, fiz igual seu exemplo, mais ele não chama o sistema

    function chamar_analise()
      if IsExeRunning("analise.exe")
         SHOWWINDOW( FINDWINDOW( 0, "analise.exe" ), 9 )
          SETFOREGROUNDWINDOW( FINDWINDOW( 0, "analise" ) )
          ? 'não acontece nada'
      else
         WinExec( cPath1+'fluxo\analise.exe' )
      endIf
    return .t.

     

  2.  

    Olá,

    Nos fontes que vi, não tem uma linha sequer de Harbour. Única semelhança é a extenção .prg. Aí vale menos a pena.

    Se nada se semelha a linguagem xbase, não seria muita mais vantagem investir em uma linguagem mais popular, tipo PHP por exemplo, entre várias outras que tem no mercado, digo isto devido ao grande material disponível para estudo, encontrar mão de obra para elaboração de projetos, não faz mais sentido andar em contramão com o mercado.

  3. Conheci o Alexandre no encontro em São Paulo em 2007, foram 12 anos de muito amizade, falávamos praticamente toda semana, realmente recebi esta notícia com muita tristeza, orando por ele, para sua família, que Deus ilumine o cominho do filho dele, o Pedrinho de quem ele amava tanto, dia de muita reflexão e oração.

  4. Colegas preciso monitorar um servidor de um cliente por um dia, tipo qdo ocorrer uma lentidão na rede, o usuário ira me informar a hora e minuto, dai preciso ver o que estava sendo processado no servidor naquele momento, será que é possível gravar o SHOW FULL PROCESSLIST 

     

    Obg

  5.  

    Luiz

    Bom dia

    A view é o resultado de um select já processado no banco de dados, ela fica armazenada no cache do mysql permitindo um acesso mais rápido.

    Att

    João Bosco

    Colega vc utiliza este recurso ai, realmente melhora em algo, pelo que pesquisei não consegui entender aonde esta a vantagem.

    Obg

  6. Pessoal obg pelas dicas acima, aqui uso muito subselect, o desempenho usando eles é coisa fantástica, meus insert hoje é tudo em massa, por exemplo, se tenho um pedido com 80 itens por exemplo, faço um único insert(quem me ajudou isto na época foi o Evandro)  , qdo digo travar, estou falando coisa de 50 segundos a 1 minuto, não é a ponto de reeniciar o serviço do mysql, o duro que num PDV 50 segundos é uma eternidade, relatorios , rotinas do dia a dia, fui dando tratamento nas rotinas, sugestão de compra por exemplo, de 6 minutos passei para 2 e depois com novos ajustes para 5 segundos, tudo tem como dar jeito, o duro qdo fazem coisas fora da rotina.

     

    Obg

  7. Pessoal já faz 7 anos que utilizo este banco de dados, durante este período com a ajuda do pessoal aqui fui customizando as rotinas que levava muito tempo para processar, tudo que demorava foi resolvido, mais as vezes numa rede de 30 terminais, um usuario por engano manda imprimir um relatorio com informações de 3 anos por exemplo, dai me trava a rede toda, sera que existe alguma forma de contornar isto.

     

    Obg 

  8. o Bloco K200 e K280 pelo que vi é muito simples, espero que seja realmente somente o que esta abaixo, ainda não mandei pro escritorio para validação.

    	gs_sped_txt+="|K200|"
    	
    	gs_sped_txt+=TABLE_K200_ESTOQUE_ESCRITURADO.COL_02_K200_DT_EST+"|"
    	gs_sped_txt+=TABLE_K200_ESTOQUE_ESCRITURADO.COL_03_K200_COD_ITEM+"|"
    	gs_sped_txt+=TABLE_K200_ESTOQUE_ESCRITURADO.COL_04_K200_QTD+"|"
    	gs_sped_txt+=TABLE_K200_ESTOQUE_ESCRITURADO.COL_05_K200_IND_EST+"|"
    	gs_sped_txt+=TABLE_K200_ESTOQUE_ESCRITURADO.COL_06_K200_COD_PART+"|"
    	
    	gs_sped_txt+=CR
    	gs_sped_txt+="|K280|"
    	
    	gs_sped_txt+=TABLE_K280_correcao_apontamento.COL_01_K280_REG+"|"
    	gs_sped_txt+=TABLE_K280_correcao_apontamento.COL_02_K280_DT_EST+"|"
    	gs_sped_txt+=TABLE_K280_correcao_apontamento.COL_03_K280_COD_ITEM+"|"
    	gs_sped_txt+=TABLE_K280_correcao_apontamento.COL_04_K280_QTD_COR_POS+"|"
    	gs_sped_txt+=TABLE_K280_correcao_apontamento.COL_05_K280_QTD_COR_NEG+"|"
    	gs_sped_txt+=TABLE_K280_correcao_apontamento.COL_06_K280_IND_EST+"|"
    	gs_sped_txt+=TABLE_K280_correcao_apontamento.COL_07_K280_COD_PART+"|"
    	
    	gs_sped_txt+=CR

     

  9.  

    Boa tarde Luiz.

    Essa dll vem junto com a mp2032. Você não tem ela?

     

     

    Ola, colega esta DLL e a sintaxe que estou usando foi um colega que me passou, nas compra das impressoras  mp4200 não vem nada, nem cd de instalação.

    Obs: estes terminais antes tinha impressora fiscal, usava a dll BEMAFI32.DLL, e funcionava normal, agora colocou SAT e foi trocado para impressoras não fiscais.

    Obg

     

  10.  

    Eu faço assim:

          cComando:=chr(27)+chr(118)+chr(140)
          Ret:=Bematech_ComandoTX(cComando,Len(cComando))

    No Help da DLL

    Esta função é utilizada no envio de comandos para a impressora, como por exemplo: comandos de Autenticação, comando para Acionamento de Gaveta, comandos para Habilitar Tabelas de Caracteres, etc .

     Parâmetros:

     Comando: STRING com o comando que deseja executar.

    Tamanho do Comando: INTEIRO com o tamanho do comando que será enviado.

     Exemplo:

     ' Exemplo em Visual Basic

    ' Comando para Acionar a Gaveta de Dinheiro

    sComando = chr( 27 ) + chr( 118 ) + chr( 140 )

    iRetorno = ComandoTX( sComando, Len( sComando )

    Colega usando a forma que postei e usando a sua forma da este erro aqui

    https://ibb.co/rMStWRH

    tem algum ideia do que pode ser

    obg

  11.  

    Tentou Chr(27)+Chr(118)+Chr(140)

    Está utilizando a Dll Mp2032 ?

     

    Colega estou usando sim, veja como estou fazendo a chamada, consegue enxergar algo de errado no codigo abaixo.

    function gaveta()
      abremp4000()
      bm_iniciaporta('COM7')
      bm_configuramodeloimpressora(7)
      syswait(0.01)
      Bm_BematechTX( chr( 27 ) + chr( 118 ) + chr( 140 ) )
      bm_fechaporta()
      closemp4000()
    return

    Rochinha e Kapiaba obg pelo retorno vou testar os comandos de vcs no cliente para ver se dar certo, e retorno aqui para dizer se deu certo.

  12.  

    Bom dia, Pessoal

    Ah um tempo atras postei esse tema e conseguir funcionar perfeitamente

    De uns tres meses para ca o aplicativo do google foi desativado parece que agora tem que pagar 

    Alguem poderia me dar uma dica se existe alguma outra forma de calcular a distancia entre dois pontos

    Essa rotina meu cliente colocava o endereco de entrega e o sistema conseguir calcular a distancia para poder fazer o calculo do frete


       cOrig := alltrim(End_Empr)+" - "+alltrim(Bai_Empr)+","+alltrim(Cid_Empr)+" - "+Est_Empr
       cDest := alltrim(End_Clie)+" - "+alltrim(Bai_Clie)+","+alltrim(Cid_Clie)+" - "+Est_Clie
       
        
        
        
        
        
        cUrl := "http://maps.googleapis.com/maps/api/distancematrix/json?origins="+cOrig+"&destinations="+cDest+"&mode=driving&language=pt-BR&sensor=false"
     

    Bom dia, nem pagando da certo, eles mudaram alguma coisa na API, referente a pegar lat. e long, informando o endereço, se vc já tiver esta informação e mandar direto o numero da certo. 

  13.  

    Ué, passe-o por referência dentro do programa principal:

     

    IF for isso

      nTipoRef := 3

    ENDIF

     

    Kapiaba qdo estou criando nunca irei saber se é 1 ou 3, este é o problema de passar como referencia, vou ter que mudar minha logica aqui, exatamente o que não queria, mais como não deve mais nenhuma sugestão mãos ao trabalho.

     oNfe := TVoNFe2g():New()
     oNFe:SetValue("ide"   , 'cUF'     , RetCodUFIBGE(aEmpresa[1,1]) )
     oNFe:SetValue("ide"   , 'cNF'     , strzero( val("10102"),8) )
     oNFe:SetValue("ide"   , 'natOp'   , aDetalhe[1,6])
     oNFe:SetValue("ide"   , 'mod'     , "55" )
     oNFe:SetValue("ide"   , 'serie'   , nSerie )
     oNFe:SetValue("ide"   , 'nNF'     , _notafiscal )     // Numero Nota Fiscal
     oNFe:SetValue("ide"   , 'dhEmi'   , _data )           // aDetalhe[1,7] )
     oNFe:SetValue("ide"   , 'dhSaiEnt' , _saida )         // aDetalhe[1,8] )   // data de saida
     oNFe:SetValue("ide"   , 'tpNF'    , aDetalhe[1,4] )   // 0-entrada  1-saida 
     

  14.  

     

    
    METHOD New(cPathNFe,nTipoRef,cModeloDoc) CLASS TVoNFe2G
    	   Local nPos
    	   #IFDEF __DOS__
          DEFAULT cPathNFe:=CurDir(CurDrive())
       #ELSE
          DEFAULT cPathNFe:=curdrive()+":\"+GetCurDir()
       #ENDIF
    	
       Default nTipoRef := 1, cModeloDoc:="55"  // Isso aqui?
    

    Sim Kapiaba, se eu alterar direto no default para 3 ira dar certo no caso de cupom fiscal referenciado, mais dai nos outros casos ira dar erro, mandar o valor junto ao method NEW terei que mudar a logica minha aqui, queria ver com os amigos se eles arrumaram alguma forma diferente de fazer isto.

    Obg
     

     

  15. Caso alguém precisar, as alterações foi coisa bem simples mesmo, ao envia os dados do item colocar o CST com o valor de 'S60' ao invés de '60'

     

       DATA vBCSTDest       INIT 0
       DATA vICMSSTDest     INIT 0
     

          ElseIf  cST == "60"
                aadd( axArray, {"ICMS60" , {}, 1  } ); nPos := len(axArray)
                aadd( axArray[nPos][2], {"orig"       , TVoNFeItem():New("N", 1, 1, 1 ,  ,,oItem:orig    ) }  )
                aadd( axArray[nPos][2], {"CST"        , TVoNFeItem():New("N", 1, 2, 2 ,  ,,oItem:cCST    ) }  )
                aadd( axArray[nPos][2], {"vBCSTRet"   , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vBCSTRet     ) }  )
                aadd( axArray[nPos][2], {"pST"        , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:pST     ) }  )
                aadd( axArray[nPos][2], {"vICMSSTRet" , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vICMSSTRet   ) }  )
                aadd( axArray[nPos][2], {"vBCFCPSTRet", TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vBCFCPSTRET )  }  )
                aadd( axArray[nPos][2], {"pFCPSTRet"  , TVoNFeItem():New("N", 0, 1, 6 ,2 ,,oItem:pFCPSTRET   )  }  )
                aadd( axArray[nPos][2], {"vFCPSTRet"  , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vFCPSTRET   )  }  )
                aadd( axArray[nPos][2], {"pRedBCEfet" , TVoNFeItem():New("N", 0, 1, 6 ,2 ,,oItem:pRedBCEfet   )  }  )
                aadd( axArray[nPos][2], {"vBCEfet"    , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vBCEfet   )  }  )
                aadd( axArray[nPos][2], {"pICMSEfet"  , TVoNFeItem():New("N", 0, 1, 6 ,2 ,,oItem:pICMSEfet   )  }  )
                aadd( axArray[nPos][2], {"vICMSEfet"  , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vICMSEfet   )  }  )
          ElseIf  cST == "S60"    // aqui gas
                oItem:cCST="60"
                aadd( axArray, {"ICMSST" , {}, 1  } ); nPos := len(axArray)
                aadd( axArray[nPos][2], {"orig"        , TVoNFeItem():New("N", 1, 1, 1 ,  ,,oItem:orig        ) }  )
                aadd( axArray[nPos][2], {"CST"         , TVoNFeItem():New("N", 1, 2, 2 ,  ,,oItem:cCST        ) }  )
                aadd( axArray[nPos][2], {"vBCSTRet"    , TVoNFeItem():New("N", 1, 1, 15,2 ,,oItem:vBCSTRet    ) }  )
                aadd( axArray[nPos][2], {"pST"         , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:pST         ) }  )
                aadd( axArray[nPos][2], {"vICMSSTRet"  , TVoNFeItem():New("N", 1, 1, 15,2 ,,oItem:vICMSSTRet  ) }  )
                aadd( axArray[nPos][2], {"vBCFCPSTRet" , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vBCFCPSTRET ) }  )
                aadd( axArray[nPos][2], {"pFCPSTRet"   , TVoNFeItem():New("N", 0, 1, 6 ,2 ,,oItem:pFCPSTRET   ) }  )
                aadd( axArray[nPos][2], {"vFCPSTRet"   , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vFCPSTRET   ) }  )
                aadd( axArray[nPos][2], {"pRedBCEfet"  , TVoNFeItem():New("N", 0, 1, 6 ,2 ,,oItem:pRedBCEfet  ) }  )
                aadd( axArray[nPos][2], {"vBCEfet"     , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vBCEfet     ) }  )
                aadd( axArray[nPos][2], {"pICMSEfet"   , TVoNFeItem():New("N", 0, 1, 6 ,2 ,,oItem:pICMSEfet   ) }  )
                aadd( axArray[nPos][2], {"vICMSEfet"   , TVoNFeItem():New("N", 0, 1, 15,2 ,,oItem:vICMSEfet   ) }  )
                aadd( axArray[nPos][2], {"vBCSTDest"   , TVoNFeItem():New("N", 1, 1, 15,2 ,,oItem:vBCSTDest   ) }  )
                aadd( axArray[nPos][2], {"vICMSSTDest" , TVoNFeItem():New("N", 1, 1, 15,2 ,,oItem:vICMSSTDest ) }  )

     

  16. Pessoal veja se alguém pode me ajudar, a classe nova do Gilmer a variavel nTipoRef esta como default com o valor de 1, como mudar ela para o valor 3

    ElseIf oItem:ClassName=="TVONFEREFNF"
      nPos:=ascan(::axNodes, {|x| x[1]=="ide" } )
      if nPos!=0
         Do Case
            Case ::nTipoRef==1
               AAdd(::axNodes[nPos,2],{"NFref"  , ::SetRefNfe(oItem) })
            Case ::nTipoRef==2
               AAdd(::axNodes[nPos,2],{"NFref"  , ::SetrefNF(oItem) })
            Case ::nTipoRef==3
               AAdd(::axNodes[nPos,2],{"NFref"  , ::SetrefECF(oItem) })
            Case ::nTipoRef==4
               AAdd(::axNodes[nPos,2],{"NFref"  , ::SetrefNFP(oItem) })
         EndCase

     

  17.  

    Amiguinhos,

    empresoft

    Eu não incluo a tag vTroco no XML pois dá erro de validação. Eu simplemente laço o valor que o cliente deu em dinheiro na tag pgto/MP/vMP e o SAT devolve o resultado com a tag vTroco preenchida com a diferença entre o valor dado e a soma dos itens.

    Simples assim rsrsrs, eu estava tentando alimentar a tag vTroco, fiz da forma que vc mencionou e deu certinho.

    obg

    Luiz Fernando

     

×
×
  • Create New...