Jump to content
Fivewin Brasil

jfaguiar

Membros
  • Posts

    1,287
  • Joined

  • Last visited

  • Days Won

    21

Posts posted by jfaguiar

  1. Exemplo:

    Se tiver duplicatas use assim:

    LoadTVoNFePag(oNFe,"1","15",VTOTLIQ+nTOTIPI+nVLICMSS+nVALFRET)

    E se não tiver duplicatas, no caso de devoluções, remessas, use essa function que resolve:

    LoadTVoNFePag(oNFe,"0","90",0)

    FUNCTION LoadTVoNFePag( oNFe,cIndPag,ctPag,nTotPag )
    local cString := ""
    local nItem :=  0
    oItem := TVoNFePag()
    WITH OBJECT oItem
       //:IndPag   := cIndPag  // "1"   0 - pagamento à vista; 1 - pagamento à prazo, 2 - outros.
       :tPag     := ctPag    // "01"  01=Dinheiro; 02=Cheque; 03=Cartão de Crédito; 04=Cartão de Débito; 05=Crédito Loja; 10=Vale Alimentação; 11=Vale Refeição; 12=Vale Presente; 13=Vale Combustível; 15=Boleto Bancário; 90=Sem Pagamento; 99=Outros.
       :vPag     := nTotPag
       //:vTroco   := 0
    END
    oNFe:AddItem( oItem )
    Return(nil)

  2. Boa noite.

    Você já experimentou o MrBoleto?

    Eu também gero meus cnab pelo meu próprio sistema através de um configurador, onde cadastro todos os dados do manual do banco e depois uma rotina minha ler e gera o .rem. Baixei há uns 20 dias o demo utilizando a classe mrboleto trabalhado pelo grande Kapiaba e parece que resolve tudo, no que diz respeito a impressão boletos. Fiz algumas alterações na classe para adequar as nomenclaturas às novas exigências, tipo trocar Cedente por Beneficiário, sacado por pagador, dentre outras e parece bem satisfatório. 

     

  3.  

    Boa Tarde a Todos,

    Desculpem a ignorância, mas como faço para inserir duplicatas pela TVONFe2g, pois com o ONFe:SetValue( "cobr", "nDup", nCoddup ) só é lançada uma e não sei como inserir.

    se Alguém puder me ajudar, agradeço muito, pois só falta isso.

     

    Se estiver usando a Flexdocs com a classe do dr. Gilmer, adapte essa função pra carregar as tags que funciona:

    FUNCTION LoadDuplicatas( oNFe,nTOTNF,cUFDES)
    local nQTDDEUP := 0
    DbSelectArea("TBCOBR") // sua tabela de contas a receber
    SEEK STR(nNFISCAL,7)
    WHILE RECSEQ=nNFISCAL .AND. !EOF()  
       ++ nQTDDEUP
       oItem := TVoNfeCobr()   // TVoNFeDupl()
       WITH OBJECT oItem         
          IF nQTDDEUP = 1 
             // Fatura
             :nFat  := RECSEQ
             :vOrig := nTOTNF
             IF cUFDES == "SP"
                IF DATE() >= CTOD("03/09/18")
                   :vDesc := 0.001
                ENDIF
             ELSE
                :vDesc := 0.001
             ENDIF
             :vLiq  := nTOTNF
          ENDIF
          // Duplicata
          :nDup  := RECPARC       // Numero da Duplicata
          :dVenc := RECDVEN       // Data de vencimento
          :vDup  := RECVAL        // Valor Duplicata
       END
       oNFe:AddItem( oItem )   
       DbSkip()
    ENDDO
    Return(nil)
    *****************************************************************************
     

  4.  
    Rogério, este trem sismou com a minha cara... kkkkkkkkkkkkkk
     
    usando a sua:
     
    
    #include "hbclass.ch"
    #include "C:\HARUPDF\harupdf.ch"
    #include "C:\HARUPDF\hbzebra.ch"
     
     
    
    C:\HARUPDF\hbhpdf.lib                +
    C:\HARUPDF\hbzebra.Lib               +
    C:\HARUPDF\libharu.lib               +
     
    Lembrando, que estou usando a última versão xHarbour de 06/03/2015 bcc582 e as minhas libs, são mais modernas que as sua.
     
    Trem dificil sô...
     
    Obg. abs.

    Olá Kapiaba. Conseguiiiiiiiiiiii

    Baixei as libs de harupdf e consegui compilar em xharbour 13.07!!

     

  5.  

    Boa noite 

    Eu uso o mrboleto para o Banco do Brasil, Caixa Economica, Bradesco,Itau, Santander,Safra sem problemas.

    O arquivo Remessa gerado pelo layout de cada Banco.

    Bom dia amigo. Você está compilando em xharbour ou harbour? Baisei o  exemplo de https://www.4shared.com/rar/9C6kVfDkce/MRBoleto.html?, alterei para a minha versão de xharbour (13.07), mas não funcionou. Verifiquei que algumas libs não existem na pasta LIB de xharbour. 

    Se você tiver um exemplo em xharbour por aí me ajudaria muito.

     

     

     

     

    MRBOLETO não selve?

     

  6.  

    Márcio, quais erros te ocorrem, lembre-se que este exemplo, foi compilado com FWH13.06 e xHarbour última versão e BCC582, Para BCC55, tem que mudar CXB.BAT e CXB.LNK

    Bom dia Kapiaba.

    Também alterei os cxb  para a minha versão (fwh1307) mas não funcionou. Alguém tem alguma novidade por í?

  7.  

    Bom amigos.

    Alguém tem um exemplo em xharbour? Tentei compilar esse exemplo de  http://www.4shared.com/rar/9C6kVfDkce/MRBoleto.html? , mas dar erro. Alterei o projeto direitinho para a minha versão e paths, mas não foi.

     

     

  8.  

    Se tiver pensando em uma situação em que seu desenvolvimento torna-se apenas gerar um arquivo do tipo INI e submeter a um interpretador, pense no ACBR. Sei que estará utilizando ferramenta externa ao seus sistema, porém,  as atualizações de sua competência serão em relação as alterações do banco e mais poderá instalar o ACBR no servidor ao invés de cpu a cpu.

    []s,

    Boa noite Jorge. Como funciona o acbr, é uma Dll? E como funciona o esquema de licenças? Na cobrebem é uma para cada cedente. Desde já agradeço.

     

    Se tiver pensando em uma situação em que seu desenvolvimento torna-se apenas gerar um arquivo do tipo INI e submeter a um interpretador, pense no ACBR. Sei que estará utilizando ferramenta externa ao seus sistema, porém,  as atualizações de sua competência serão em relação as alterações do banco e mais poderá instalar o ACBR no servidor ao invés de cpu a cpu.

    []s,

     

     

  9. Bom dia Amigos.

    Alguém saberia me dizer qual a melhor solução para impressão de boletos bancários em xHarbour?

    Tenho alguns sistemas com a solução da Cobrebem, mas está muito caro o que a torna inviável.

     

    Desde já agradeço.

     

     

     

  10. Boa noite amigos.

    Alguém tem algum exemplo de edição de checkbox numa coluna de TxBrowse()

    Desde já gradeço as colaborações. 

          oBrw := TxBrowse():New(oDlg)
          oBrw:nTop  := 40 // 8
          oBrw:nLeft := 4
          oBrw:nbottom := 135
          oBrw:nRight:= nWidthLb + 3 // 6 em pixel
          //oBrw:nTop  := nTopBrw //  2.5     //  160
          //oBrw:nLeft := nLeftBrw  //   0.700    // em pixel
          //oBrw:nbottom := nBottomBrw //  200   // 225

          oBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY // LINESTYLE_BLACK por array
          oBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY // LINESTYLE_BLACK
          oBrw:nMarqueeStyle    := MARQSTYLE_HIGHLCELL
          oBrw:cAlias := Alias()
          oBrw:lAllowColSwapping   := .f.
          oBrw:lColDividerComplete := .t.
          oBrw:lHScroll            := .f.
          oBrw:lFastEdit           := .t.
          //oBrw:nFreeze             :=  9
          oBRW:nRowHeight:= 18
          //
          aCols := oBrw:AddCol()
          oBrw:aCols[1]:bStrData     := { || TBALUNO->CODIGO}
          oBrw:aCols[1]:cHeader      := "Código"
          oBrw:aCols[1]:bClrEdit     := oBrw:bClrStd
          oBrw:aCols[1]:nWidth       := 100
          //

          aCols := oBrw:AddCol()
          oBrw:aCols[1]:bStrData     := { || TBALUNO->DATANAS}
          oBrw:aCols[1]:cHeader      := "Data Nascimento"
          oBrw:aCols[1]:bClrEdit     := oBrw:bClrStd
          oBrw:aCols[1]:bOnPostEdit  := { | oCol, xVal, nKey | If( nKey == VK_RETURN, TBALUNO->DATANAS := xVal,) }
          oBrw:aCols[1]:nEditType    := EDIT_GET
          oBrw:aCols[1]:nWidth       := 110
           //
          aCols := oBrw:AddCol()
          oBrw:aCols[3]:bStrData     := { || TBALUNO->POSGRAD}   // Este aqui é um campo lógico
          oBrw:aCols[3]:cHeader      := "Pós Grad"
          oBrw:aCols[3]:bClrEdit     := oBrw:bClrStd
          oBrw:aCols[3]:bOnPostEdit  :=  { | oCol, xVal, nKey | If( nKey == VK_RETURN, TBALUNO->POSGRAD := xVal,) }
          oBrw:aCols[3]:nEditType    := EDIT_GET
          oBrw:aCols[3]:nWidth       := 120

     

  11.  

    Uso as variáveis muito bem classificadas. Todas STATIC ou LOCAL. Se tiver alguma PRIVATE é por mero esquecimento de declarar como LOCAL.

    Fiz alguns testes com samples do fivewin e noto que essa alocação de memória contínua se repete em todos executáveis.

    Em resumo: o tamanho de memória utilizada mostrado no gerenciador de processos do windows só aumenta. Nunca diminui.

    Em relação à sugestão do Kapaiaba em chamar a função HB_GCALL() para esvaziar a memória, apesar de ser teoricamente ideal, não funciona.

    O o método End() já chama essa função toda vez que uma dialog é fechada pelo método "oDialog:End()".

    B_GCALL libera blocos de memória não usados pelo EXE, porém, o que parece estar acontecendo é que esses blocos não estão sendo marcados como LIXO para que a função HB_GCALL limpe.

    E agora? O que fazer?

    Também costumo declarar as variáveis locais e private. Porém tenho dúvidas com relação as variáveis Static, qual a vantagem e quando devo utilizá-las?

  12.  

    Bom dia, Pessoal 

    Dia 01/08/2018 finalmente  começa a vigorar o prazo maximo da nfe 4.0

    Ou seja não tem mais volta.

    Tenho percebido muitos erros no Sefaz, sera que teremos muitas surpresas no dia 01, afinal de contas não é tao facil atualizar os clientes caso venha aparecer alguma novidade.

    Essa semana mesmo sem avisar nada veio o erro do GTIN, fora os problemas com campo forma de Pagamento

    Alguem tenha alguma dica de alguma coisa que possa travar todo o sistema  ?.

    Abraço a todos

    .

     

    Pode crer. Esse GTIN também me pegou de surpresa! E se eu estivesse em Cancún?

  13. Olá Kapiaba.

    Não me xinga se eu estiver errado, mas " Release oDlg* " não resolve isso?

    Tenta também usar essas functions como "STATIC FUNCTION" quando elas só forem chamadas do mesmo prg onde a mesma se encontra.

     

  14.  

    A Flexdocs tem o cancelamento por evento

    http://www.flexdocs.com.br/guianfe/WS.canc.cancelaEvento.html

    este permite passar a diferença de fuso, quando não enviado ela passa o padrão (windows).

     

     

     

    E o suporte é ótimo. Grande Flexdocs!

     

    A Flexdocs tem o cancelamento por evento

    http://www.flexdocs.com.br/guianfe/WS.canc.cancelaEvento.html

    este permite passar a diferença de fuso, quando não enviado ela passa o padrão (windows).

     

     

     

     

     

  15.  

    Usa o ACBr pra saber qual o item pelo menos ou muda.

    Aki ta tranquilo, tb tenho vários clientes e não estou tendo dificuldades

    Fiz o sistema qdo da o erro imprimir seja qual for GTIN NCM imprime e como no retorno já vem o Item ai o cliente vai e arruma.

    Éh rsrsrs se eu tivesse fazendo referência da tag cEan a um campo da tabela de produtos era só deixar o abacaxi para o cliente, mas eu estava enviando como SPACE(13).

     

    use tag                         
     :cEAN     := If(Prod->Gtn_Prod, "SEM GTIN", Prod->Bar_Prod)

    acho que usou somente a tag :cEANTrib coloque a outra tag tb

     

  16.  

    889 - Rejeição: Obrigatória a informação do GTIN para o produto

    Boa tarde Pessoal 

    Começou agora a tarde esse erro na nota fiscal eletronica

    Nao passa nada

    Alguem poderia dar uma dica se realmente precisa colocar o codigo gtin 


     

    Boa noite meus amigos.

    Hoje após as 15:00 também passei por esse problema e tive que atualizar o sistema em vários clientes de um minuto para o outro e os demais ficaram para amanhã. Entretanto, surpresas como essa não estão sendo novidade por parte da famigerada Sefaz, haja visto a questão do grupo <fat> com as tags <vOrig> e <vLiq> que só passaram a ser validadas em 01/07/2018, pegando-nos todos de surpresa. Aliás, eu quase perco clientes de longos anos por causa disso, de modo que tive que retornar a versão 3.10 da NF-e para desempacar o faturamento. ESSES CARAS DA SEFAZ NÃO PASSAM DE UM BANDO DE IRRESPONSÁVEIS!!!

  17.  

    pessoal veja se alguém pode me ajudar,não sei aonde esta errado comparei com varios xml

    erro da flexdocs "Campos do grupo fatura não informado" mais eles estão ai tudo certo

    
    
    -<cobr>
    
    
    -<fat>
    
    <nFat>46605</nFat>
    
    <vOrig>42.90</vOrig>
    
    <vLiq>42.90</vLiq>
    
    </fat>
    
    
    -<dup>
    
    <nDup>001</nDup>
    
    <dVenc>2018-07-25</dVenc>
    
    <vDup>42.90</vDup>
    
    </dup>
    
    </cobr>
    
    
    -<pag>
    
    
    -<detPag>
    
    <indPag>1</indPag>
    
    <tPag>15</tPag>
    
    <vPag>42.90</vPag>
    
    </detPag>
    
    </pag>

     

    A flexdocs me orientou a informar :vDesc := 0.001, quando não houver descontos. Caso seja para um destinatário de SP essa tag só será obrigatória a partir  de 03/09/2018.

  18. Boa tarde amigos. 

    Tenho essa função nos meus sistemas e gostaria de saber se tem algum parâmetro para cópia oculta.

    Obrigado

    function Mmail(cTo,cSentBy,cEmailHeader,cEmailNotes,cANEXO1)

    // Modificada por João Freire de Aguiar
    DEFAULT lEXIBE := .F.
    oOutLook := TOleAuto():New("Outlook.Application")
    oMailItem := oOutLook:Invoke("CreateItem", 0)
    oMailitem:to:=cTo
    // oMailItem:Recipients:Add( "tdsperth@outlook.com" )
    oMailitem:CC:= cSentBy
    oMailItem:Subject := cEmailHeader
    oMailItem:Body := cEmailNotes
    if ! empty(cANEXO1)
       IF VALTYPE(cANEXO1) == "C"
          oMailItem:Attachments:Add(cANEXO1)
       ELSEIF VALTYPE(cANEXO1) == "A"
          FOR _i := 1 TO LEN(cANEXO1)
              oMailItem:Attachments:Add(  cANEXO1[_i]  )
          NEXT
       ENDIF
    endif
    oMailItem:display(.T.)
    RETURN(nil)

  19. Bom dia.

    Estou tentando acessar o web service da Semasa para baixar uma tabela com lista de pontos de coletas e tá embassado rsrsrs

    Este token funciona como um login name , de modo que se eu estiver utilizando um navegador, o insiro e me retorna um arquivo com essa lista.

    Toda ajuda será bem vinda.

    thanks

    FUNCTION RecebeServicos()
    Local oServerWS, cUrl
    Local token := "ababababababababa"

    cUrl:= "http://servicos.semasa.sp.gov.br/IServiceWebDRS/ServicosDRS.asmx?op=ReceberServicos" // Retornou 685 linhas
    cSoap := "http://ws.semasa.sp.gov.br/ReceberServicos"

    Try
        oServerWS := CreateObject( 'MSXML2.ServerXMLHTTP.5.0' )
    Catch oError
        try
            oServerWS := CreateObject( 'MSXML2.ServerXMLHTTP.6.0' )
        catch oError
            try
                oServerWS := CreateObject("Microsoft.XMLHTTP")
            catch oError
                ? e:Description
                return nil
            end
        END
    end

    TRY
        //oServerWS:setOption( 3, 'CURRENT_USER\MY\'+token )
        oServerWS:open('GET', cUrl, .f.)
        oServerWS:setRequestHeader('SOAPAction', cSoap )
        oServerWS:setRequestHeader('Content-Type'    , 'text/xml; charset=utf-8')    // Obtém ou define o valor de cabeçalho de Content-type HTTP.
        oServerWS:send()
    CATCH
        ? "Não conseguiu enviar solicitação para requisição dos dados do CNPJ"
        return .t.
    END

    // Verifica o status do request. Exibe erro se houver
    IF oServerWS:Status != 200 // OK
        MsgStop( Alltrim(STR(oServerWS:Status)) +" - "+ oServerWS:StatusText , "Erro")
        RETURN NIL
    ENDIF

    WHILE oServerWS:readyState != 4
        oServerWS:waitForResponse(1000)
    ENDDO

    txt:=  oServerWS:responseText

    ? txt
    Arq_1:=ALLTRIM(txt)

    ARR0:=HB_ATokens( Arq_1, CHR(10) )

    xbrowse(ARR0)

    RETURN Nil
    ****************************************************************************
     

     

×
×
  • Create New...