
RibaSoft
-
Total de ítens
148 -
Registro em
-
Última visita
-
Days Won
1
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por RibaSoft
-
-
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; -
NFC modelo cupom válido
Mesma NFC modelo A4 inválido
-
Aconteceu o mesmo comigo aq, no formato cupom da certo, no formato a4 da esse mesmo erro alguém conseguiu resolver? parana aq tambem
-
Aq em Carlópolis / PR, tambem
-
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;-
1
-
-
@Fabrício G. Araújo A sim, vou dar uma olhada e refatorar o código, obrigado pela dica, fico muito contente com novos conhecimentos e melhores praticas de programação, DEUS abençoe
-
1
-
-
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.
-
Muito obrigado pela ajuda, vou testar as duas dicar e reporto aq o resultado de cada uma, DEUS abençoe a todos.
-
@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.
-
Sim, tem o Pag.count por isso no "Items[I].tPag" não da erro pois o pagamento existe, o problema é que mesmo sendo cartão de crédito e existindo o pagamento, a tag TBand não existe nesse pagamento nesses xmls dessa cliente.
-
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; -
Ta bom, muito obrigado por responder, achei mesmo estranho, vou revisar novamente pra tentar descobrir e aviso aq, DEUS abençoe
-
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?
-
Olá a todos é com grande alegria que venho informar que o problema de vazamento de memória do fortes foi corrigido aparentemente em 15 de dezembro de 2023. ja testei com o lazarus 3.2.2 e está td certo.
Da minha parte pode fechar o topico se necessário. DEUS abençoe a todos.
-
Olá, como não postaram aq a solução vou postar, pois passei pelo mesmo erro e cai aq.
No meu caso resolveu mudando o tipo de envio de ASincrono para Sincrono...
de auxNF.Enviar('1', True, False); para auxNF.Enviar('1', True, True);
DEUS abençoe a todos.
-
Mais um detalhe q obserei, até para impressão de NFe pelo componente do ACBr tambem esta dando vazamento, vou desistalar o lazarus e instalar novamente, qualquer coisa aviso aq.
-
Continuei testando e pesquisando, na verdade o problema está só nesse trecho "TRLPreviewForm.Create(nil)"
Mesmo colocando o Free no final o vazamento permanece
-
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
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.
-
Nossa Daniel, muiiito obrigado, agora o limite é a imaginação, muito obrigado mesmo, DEUS abençoe
-
1
-
-
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
-
1
-
-
Dai provisóriamente eu resolvi aq assim, alterando a função do arquivo fpdf.pas
Lembrando que todos meus arquivos estão setados como utf8
-
2
-
-
Uhuu, achei um caminho, em uses, declara "LConvEncoding"
dai as strings que for passar para o FPDF usa a função "UTF8ToCP1252('Endereço: ');"
E seta "PDF.SetUTF8(False);"
Dessa forma pode se usar os arquivos do lazarus codificado em utf8, tanto seu código quanto o "fpdf.pas"
-
1
-
-
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.
.
-
1
-
-
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
-
1
-
Impressão sem dados no Evento MDFe usando o ACBrMDFe.EventoMDFe.LerXMLFromString
em ACBrMDFe
Postado
Consegui descobrir aqui, eu estava pegando o retorno do evento de forma errada.
Estou usando esse agora e deu certo. "auxMDF.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML;".
Obrigado. Da minha parte pode fechar o Tópico.