Ir para conteúdo
  • Cadastre-se

RibaSoft

Membros
  • Total de ítens

    148
  • Registro em

  • Última visita

  • Days Won

    1

Posts postados por RibaSoft

  1. Olá a todos.

    Estou tentando imprimir eventos do MDFe, uso o mesmo padrão tanto no NFe, NFCe, CTe e todos funcionam porém ao tentar com o MDFe ele retorna vazio com mensagem de "cancelamento" mesmo sendo um evento de encerramento. Se eu uso o método auxM.EventoMDFe.LerXML funciona perfeitamente, mas se uso o auxM.EventoMDFe.LerXMLFromString não funciona.

    Acabei de zerar o ACBr e o Lazarus do me PC e continua da mesma forma, estou desde sedo procurando nos tópicos e não achei nada que resolvesse.

    var
      auxXML: string;
      auxM: TACBrMDFe;
      auxI: TACBrMDFeDAMDFeRL;
    begin
      DataModulo.OpenSQL('SELECT XML FROM MDF_EVENTOS WHERE ID = 1);
      auxXML := DataModulo.Query.FieldByName('XML').AsString;

      try
        auxM := TACBrMDFe.Create(nil);
        auxM.EventoMDFe.LerXMLFromString(auxXML);

        try
          auxI := TACBrMDFeDAMDFeRL.Create(nil);
          auxM.DAMDFE := auxI;
          auxM.ImprimirEvento;
        finally
          FreeAndNil(auxI);
        end;
        
      finally
        FreeAndNil(auxM);
      end;
    end;

  2. Caso interesse á alguem fiz para funcionar no lazarus

    procedure TFormOrcamento.DBGridDadosMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer);
    var
      C, L, auxID: integer;
      auxB: TBookMark;
    begin
      //Pega a Coluna e a Linha pela posição X, Y
      (Sender as TDBGrid).MouseToCell(X, Y, C, L);

      if(L < 1)then Exit;

      try
        //Marca a posição do dataset
        auxB := DataSourceDados.DataSet.GetBookmark;

        //Desabilita controles para não ficar oscilando
        DataSourceDados.DataSet.DisableControls;

        //Vai para a linha desejada
        DataSourceDados.DataSet.RecNo := L;

        //Pega a informação
        auxID := DataSourceDados.DataSet.FieldByName('ID').AsInteger;

        //Adiciona a informação ao Hint
        (Sender as TDBGrid).Hint := 'ID: ' + IntToStr(auxID);

        //Mostra o Hint
        Application.ActivateHint(Mouse.CursorPos);
      finally
        //Volta para a posição inicial
        DataSourceDados.DataSet.GotoBookmark(auxB);

        //Limpa a marcação
        DataSourceDados.DataSet.FreeBookmark(auxB);

        //Reabilida controles
        DataSourceDados.DataSet.EnableControls;
      end;
    end;  

    • Curtir 1
  3. Boa noite, graças a DEUS descobri, não sei exatamente o porque mas deu certo.

    Agradeço a explicação de ambos, não conhecia o "TNFe" da "pcnNFE", fico grato pelo conhecimento, mas como o "Record" já estava pronto deixei com ele mesmo, nas proximas vezes usarei o "TNFe".

    Então... usando o exemplo do @Fabrício G. Araújo, rodou normal e o meu dava erro, dai de pois de varios testes descobri que tirando o "bcOutros: Pag[I].TBAND := 99;" do case o erro parou.

    Dai ficou assim e funciona perfeitamente...

    if (Pag[I].TPAG = 3) or (Pag[I].TPAG = 4) then
            case auxNF.NotasFiscais.Items[0].NFe.pag[I].tBand of
              bcVisa: Pag[I].TBAND := 1;
              bcMasterCard: Pag[I].TBAND := 2;
              bcAmericanExpress: Pag[I].TBAND := 3;
              bcSorocred: Pag[I].TBAND := 4;
              bcDinersClub: Pag[I].TBAND := 5;
              bcElo: Pag[I].TBAND := 6;
              bcHipercard: Pag[I].TBAND := 7;
              bcAura: Pag[I].TBAND := 8;
              bcCabal: Pag[I].TBAND := 9;
              bcAlelo: Pag[I].TBAND := 10;
              bcBanesCard: Pag[I].TBAND := 11;
              bcCalCard: Pag[I].TBAND := 12;
              bcCredz: Pag[I].TBAND := 13;
              bcDiscover: Pag[I].TBAND := 14;
              bcGoodCard: Pag[I].TBAND := 15;
              bcGreenCard: Pag[I].TBAND := 16;
              bcHiper: Pag[I].TBAND := 17;
              bcJcB: Pag[I].TBAND := 18;
              bcMais: Pag[I].TBAND := 19;
              bcMaxVan: Pag[I].TBAND := 20;
              bcPolicard: Pag[I].TBAND := 21;
              bcRedeCompras: Pag[I].TBAND := 22;
              bcSodexo: Pag[I].TBAND := 23;
              bcValeCard: Pag[I].TBAND := 24;
              bcVerocheque: Pag[I].TBAND := 25;
              bcVR: Pag[I].TBAND := 26;
              bcTicket: Pag[I].TBAND := 27;
              else
                Pag[I].TBAND := 99;
            end;

    Se alguem puder explicar pq esse "bcOutros" deu problema nesse contexto fico muito feliz pois gosto de aprender td nos minimos detalhes, mas o problema já está resolvido e da minha porte pode fechar o tópico se necessário, muito obrigado mesmo pela dedicação de vcs. DEUS abençoe.

  4. @Fabrício G. AraújoMuito obrigado pela sua boa vontade em me ajudar, esse Pag[I].TPAG é um "Pag: array of TPagamentos;" e T pagamentos é

    "TPagamentos = record
        TPAG: integer;
        TBAND: integer;
        VPAG: currency;
        CAUT: string;
      end;"

    onde armazeno os dados extraidos do xml para depois inseri-los no banco de dados.

    Eu Determino o tamanho do array assim:

    C := auxNF.NotasFiscais.Items[0].NFe.pag.Count;
        {$Hints off}
        SetLength(Pag, C);
        {$Hints on}       

    o auxNF é "auxNF: TACBrNFe;" eu gosto de criar todos os componentes em tempo de execução.

    esse codigo funcionar normalmente quando a tag "TBand" existe dentro da tag "Tpag", só dá problema quando a tag "TBAnd" não existe.

    E o erro e "access" é exatamente na linha "case auxNF.NotasFiscais.Items[0].NFe.pag.Items[I].tBand of" ou seja quando tento ler a informação tBand, não chega a ir na linha onde meu array está.

    Fico muito grato pela atenção, eu estava em um grupo de Lazarus tentando ajudar o máximo de gente possivel, mas o pessoal começou a abusar muito, tipo querendo se aproveitar da minha boa vontade, eu só peço ajuda depois de muito tentar e realmente não conseguir. e entendo pq as vezes o pessoal não quer ajudar ou dá uns "coice" por aq. 😢

  5. Então..

    Logo após esse meu codigo esta exatamente assim dentro de um for ou seja o mesmo "I" que passa no ...Items[I].tPag da violation no ...Items[I].tBand e só dá esse problema quando no xml o tband esta ausente.

    case auxNF.NotasFiscais.Items[0].NFe.pag.Items[I].tPag of
            fpDinheiro: Pag[I].TPAG := 1;
            fpCheque: Pag[I].TPAG := 2;
            fpCartaoCredito: Pag[I].TPAG := 3;
            fpCartaoDebito: Pag[I].TPAG := 4;
            fpCreditoLoja: Pag[I].TPAG := 5;
            fpValeAlimentacao: Pag[I].TPAG := 10;
            fpValeRefeicao: Pag[I].TPAG := 11;
            fpValePresente: Pag[I].TPAG := 12;
            fpValeCombustivel: Pag[I].TPAG := 13;
            fpBoletoBancario: Pag[I].TPAG := 15;
            fpDepositoBancario: Pag[I].TPAG := 16;
            fpPagamentoInstantaneo: Pag[I].TPAG := 17;
            fpTransfBancario: Pag[I].TPAG := 18;
            fpProgramaFidelidade: Pag[I].TPAG := 19;
            fpSemPagamento: Pag[I].TPAG := 90;
            else
              Pag[I].TPAG := 0;
          end;

    if (Pag[I].TPAG = 3) or (Pag[I].TPAG = 4) then
            case auxNF.NotasFiscais.Items[0].NFe.pag.Items[I].tBand of
              bcVisa: Pag[I].TBAND := 1;
              bcMasterCard: Pag[I].TBAND := 2;
              bcAmericanExpress: Pag[I].TBAND := 3;
              bcSorocred: Pag[I].TBAND := 4;
              bcDinersClub: Pag[I].TBAND := 5;
              bcElo: Pag[I].TBAND := 6;
              bcHipercard: Pag[I].TBAND := 7;
              bcAura: Pag[I].TBAND := 8;
              bcCabal: Pag[I].TBAND := 9;
              bcAlelo: Pag[I].TBAND := 10;
              bcBanesCard: Pag[I].TBAND := 11;
              bcCalCard: Pag[I].TBAND := 12;
              bcCredz: Pag[I].TBAND := 13;
              bcDiscover: Pag[I].TBAND := 14;
              bcGoodCard: Pag[I].TBAND := 15;
              bcGreenCard: Pag[I].TBAND := 16;
              bcHiper: Pag[I].TBAND := 17;
              bcJcB: Pag[I].TBAND := 18;
              bcMais: Pag[I].TBAND := 19;
              bcMaxVan: Pag[I].TBAND := 20;
              bcPolicard: Pag[I].TBAND := 21;
              bcRedeCompras: Pag[I].TBAND := 22;
              bcSodexo: Pag[I].TBAND := 23;
              bcValeCard: Pag[I].TBAND := 24;
              bcVerocheque: Pag[I].TBAND := 25;
              bcVR: Pag[I].TBAND := 26;
              bcTicket: Pag[I].TBAND := 27;
              bcOutros: Pag[I].TBAND := 99;
            end; 

  6. Olá à todos, depois de muito tentar não consegui achar uma solução,  ao importar um xml de nfe pelo componente acbrnfe, da access violation em um xml de TPAG = 3 "Cartão de Crédito" que não possui a tag TBand.

    Tentei usar o if assigned(auxNF.NotasFiscais.Items[0].NFe.pag.Items[I].tBand)then antes de tentar acessar o valor de tBand mas ele não aceita, tem alguma forma correta de verificar se essa tag existe antes de tentar acessá-la?

  7. Olá, estou com um problema de Vazamento de memória no preview do Fortes Report, estou usando o lazarus 2.4.6, windows 10x64.

    Esse vazamento não ocorria antigamente, ao menos eu nunca tinha percebido, começou a ocorrer depois que formatei o pc e passei do windows 11 para o windows 10.

    Pesquisei bastante na net, e achei pessoas relatando isso a muito tempo atraz, mas sem solução e alguns desistindo do fortes.

    O vamento se encontra exatamente aq...

    SentToPrinter := False;
      with TRLPreviewForm.Create(nil) do
      begin
        Preview.Pages := APages;
        if DefaultZoomFactor = ZoomFactorFullWidth then
          Preview.ZoomFullWidth
        else if DefaultZoomFactor = ZoomFactorFullPage then
          Preview.ZoomFullPage
        else if DefaultZoomFactor = ZoomFactorMultiplePages then
          Preview.ZoomMultiplePages
        else if DefaultZoomFactor > 0 then
          Preview.ZoomFactor := DefaultZoomFactor;
        UpdateComboBoxZoom;
        Position := APosition;
        WindowState := AWindowState;
        BorderIcons := ABorderIcons;
        HelpFile := AHelpFile;
        HelpContext := AHelpContext;
        if ACaption <> '' then
          Caption := ACaption;
        FormStyle := AFormStyle;
        if AShowModal then
          ShowModal
        else if Visible then
          BringToFront
        else
          Show;
      end;

    no RLPreviewForm

    image.thumb.png.d7f5e033dc4a786ab29d3dbc2351c8b0.png

    image.png.20ab13e3087cc50ab5ebc77fef97d12c.png

    obs. já reinstalei o Fortes e uso o tortoise pelo link https://github.com/fortesinformatica/fortesreport-ce/trunk

    Desde já agradeços a todos que puderem me ajudar.

  8. Olá a todos, dei uma boa pesquisada e não achei nada a respeito, nem no site do FPDF em PHP, pelo contrário, oq vi foi comentárioos de que não dava pra fazer, ou gente que tentou e não conseguiu.

    Para negrito existe a procedure SetFont, porém como proceder dentro de uma frase (String), onde somente uma palavra deve ser negrita?

    Eu costumo utilizar a procedure MultiCell, para paragrafos com multiplas linhas, e o SetFont antes de cada multicell, mas como fazer no meio sem perder a identação?

    Perdoem minha leiguisse 🫣

    • Curtir 1
  9. 1 hora atrás, armando.boza disse:

    Essa opção eu não testei, mas se estraga as mensagens traduzidas ai já não resolve.

    Tentei ajustar a codificação das units mas mesmo assim não obtive sucesso.

    Vc testou com o Demo tb?

    Então, o problema é que o comportamento difere para strings escritas diretas no codigo e strings passadas pelos Edits, dai criei um teste e usei conforme o Demo, dai só obtive sucesso, da forma que mensionei.

    Mas pelo que entendi o Juliomar vai dar uma olhada pra gente. 🤗.

    • Curtir 1
  10. Aqui também estou brigando com a acentuação, a unica forma que da certo é ir em

    projeto >> opções de projeto >> Adiçoes e Sobreposiçoes 

    e clicar em "Usar codificação do sistema", o problema é que dai bagunça algumas mensagens traduzidas do lazarus tipo "não" fica "n?o"

    Estou usando windows11x64 com lazarus 2.4.6

    • Curtir 1
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.