Ir para conteúdo
  • Cadastre-se

Making Software Fernando

Membros
  • Total de ítens

    9
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Making Software Fernando's Achievements

  1. Prezados, bom dia. Estou passando por uma situação bem estranha com o Delphi 11.1. Quando acesso as listagens do sistema, a última coluna aparece toda branca e ao rolar o scroll ela não atualiza as informações, ficando completamente confusa a visualização, como se aquela coluna tivesse travado a atualização visual. (Imagem no anexo para exemplificar melhor o ocorrido) Gostaria de saber se alguém passou por essa mesma situação e se encontraram alguma solução? Fiz tentativas alterando as opções do DBGrid, adicionando um novo, mas sem sucesso. Quando compilo em Delphis anteriores, 10.4 por exemplo, os mesmos DBGrids não apresentam o problema.
  2. Prezados, boa tarde Agradeço a colaboração. ACBr foi atualizado com as correções necessárias referentes a esse tópico, quem estiver com o mesmo problema confirme se estão atualizados.
  3. Boa tarde Italo, Disponha, sigo a disposição. Agradeço pela atenção. Boa tarde Italo, Joia, muito obrigado.
  4. Confirmado e o provedor se mantem Tiplan. Está sendo feito "apenas" a atualização da versão da ABRASF. Alguns esclarecimentos apresentados no treinamento: 01/07/2022: - O ambiente de homologação será atualizado para a versão 2.03. O endereço do webservice de homologação é https://americanahomologacao.nfe.com.br/nfse/wsnacional2/nfse.asmx - Os manuais atualizados estarão disponíveis no menu Manuais de ajuda. O endereço é https://americanahomologacao.nfe.com.br/Ajuda/manuais.aspx - Estamos trabalhando para finalizar a edição dos vídeos dos treinamentos e encaminhar para a Prefeitura nessa mesma data. 01/09/2022: - O ambiente de produção será atualizado para a versão 2.03. O endereço do webservice de produção será https://nfse.americana.sp.gov.br/nfse/wsnacional2/nfse.asmx - Os manuais atualizados estarão disponíveis no menu Manuais de ajuda. Suporte para questões técnicas disponibilizado: [email protected]
  5. Boa tarde Italo, Referente as URLs serão as seguintes (conforme disponibilizado no Treinamento agora pela tarde): Homologação (01/07/2022): https://americanahomologacao.nfe.com.br/nfse/wsnacional2/nfse.asmx Manuais (01/07/2022): https://americanahomologacao.nfe.com.br/Ajuda/manuais.aspx Produção (01/09/2022): https://nfse.americana.sp.gov.br/nfse/wsnacional2/nfse.asmx Quanto ao provedor, não encontrei nada mencionando a mudança do atual, e está participando o Tiplan Suporte no Treinamento. Então acredito fielmente que continue o mesmo. Qualquer novidade até o fim do treinamento, atualizo aqui.
  6. Prezados, bom dia Recebemos um comunicado da Prefeitura Municipal de Americana informando que a partir de 01/09/2022 será utilizada a Nova Versão do Sistema da Nota Fiscal de Serviços Eletrônica (NFS-e) – Modelo Nacional ABRASF Versão 2.03. Dessa forma, as emissões feitas atualmente nesse município deveram seguir o novo Layout. Como iniciará em 01/07/2022 o Ambiente de Testes, gostaria de saber se já existe algo para esse novo formato? Visto que nas pesquisas aqui no fórum encontrei o ABRASF 2.03 mas para outros municípios, que talvez sejam interessantes. (Ex: Sorocaba). Estarei acompanhando também um Treinamento (WebService) liberado pela própria Prefeitura Municipal de Americana para captar quaisquer informações interessantes na adaptação do Componente, seguem links para quem tenha interesse também: Obs: previsão de duração de 60 minutos e uma turma por dia, às 14h. Dia 28/06/2022 – Horário 14:00 – Acesso pelo Link abaixo: https://us06web.zoom.us/j/81028473768?pwd=MnhZSDFGeDg4eTR3Y1d1OEJuNkpjQT09 Dia 29/06/2022 – Horário 14:00 – Acesso pelo Link abaixo: https://us06web.zoom.us/j/86928446774?pwd=R0w4empTN3VRS09Jak15MVhyN2IwUT09 Agradeço desde já a atenção. Comunicado Nova Versao do Sistema da NFSe (6).doc nfse_abrasf.pdf
  7. Boa tarde, disponha Analisando aqui realmente a Unit não está reconhecendo o Segmento O para o seu caso. No segundo procedimento onde é inserido o próprio Segmento O acaba não ocorrendo esse processo pois a função atualmente aceita apenas o Segmento O no Banco Itaú. (E no seu caso o retorno é do Banco do Brasil) procedure TPagForR.LerSegmentoO(I: Integer); begin if ((Copy(FArquivoTXT.Strings[i], 8, 1) + Copy(FArquivoTXT.Strings[i], 14, 1)) <> '3O') then Exit; FPagFor.Lote.Last.SegmentoO.New; FPagFor.Lote.Last.SegmentoO.Last.CodMovimento := TInstrucaoMovimento(StrToInt(Copy(FArquivoTXT.Strings[i], 15, 3))); case FPagFor.Geral.Banco of pagItau: begin FPagFor.Lote.Last.SegmentoO.Last.CodigoBarras := Copy(FArquivoTXT.Strings[i], 18, 48); FPagFor.Lote.Last.SegmentoO.Last.NomeConcessionaria := Copy(FArquivoTXT.Strings[i], 66, 30); FPagFor.Lote.Last.SegmentoO.Last.DataVencimento := StringToDateTime(Copy(FArquivoTXT.Strings[i], 96, 2)+'/'+Copy(FArquivoTXT.Strings[i], 98, 2)+'/'+Copy(FArquivoTXT.Strings[i], 100, 4)); FPagFor.Lote.Last.SegmentoO.Last.QuantidadeMoeda := StrToInt(Copy(FArquivoTXT.Strings[i], 107, 15)) / 100000000; FPagFor.Lote.Last.SegmentoO.Last.ValorPagamento := StrToInt(Copy(FArquivoTXT.Strings[i], 122, 15)) / 100; FPagFor.Lote.Last.SegmentoO.Last.DataPagamento := StringToDateTime(Copy(FArquivoTXT.Strings[i], 137, 2)+'/'+Copy(FArquivoTXT.Strings[i], 139, 2)+'/'+Copy(FArquivoTXT.Strings[i], 141, 4)); FPagFor.Lote.Last.SegmentoO.Last.ValorPago := StrToInt(Copy(FArquivoTXT.Strings[i], 145, 15))/100; FPagFor.Lote.Last.SegmentoO.Last.NotaFiscal := StrToInt(Copy(FArquivoTXT.Strings[i], 163, 9)); FPagFor.Lote.Last.SegmentoO.Last.SeuNumero := Copy(FArquivoTXT.Strings[i], 175, 20); FPagFor.Lote.Last.SegmentoO.Last.NossoNumero := Copy(FArquivoTXT.Strings[i], 216, 15); FPagFor.Lote.Last.SegmentoO.Last.CodOcorrencia := Trim(Copy(FArquivoTXT.Strings[i], 231, 10)); FPagFor.Lote.Last.SegmentoO.Last.DescOcorrencia := DescricaoRetornoItau(FPagFor.Lote.Last.SegmentoO.Last.CodOcorrencia); end; end; {opcionais segmento O} LerSegmentoZ(FPagFor.Lote.Last.SegmentoO.Last.SegmentoZ, i); end; Isso é um dos pontos, o segundo é o fato de no começo dessa função ter uma condição verificando se a linha lida contém o "3O" ao concatenar a posição 8 e 14, e essa condição acaba sendo FALSA nas linhas opcionais (Segmento Z), pois ao concatenar acaba sendo "3Z". Deveria nessa condição também ter uma verificação para checar se está sendo lido algum Segmento Opcional do Segmento O, como é o caso do Z. Com tudo isso, cheguei na conclusão de que referente ao Segmento O ainda não está completo quanto ao processamento de Retorno, sendo necessária algumas atualizações. Por ser uma solução recente é comum não estar completo, e conforme o uso da comunidade vamos acertando os detalhes. Estou confirmando se não deixei nada passar, mas acredito que seja isso mesmo conforme o que analisei da Unit ACBrPagForLerTxt.
  8. Olá mlgoncalves, consegui sim. Acabei não detalhando aqui mas precisei fazer uma mudança na lógica da Unit, e para ela valer acabei tendo que criar o arquivo da Unit em outra pasta sem ser a do SVN, pois minhas mudanças eram ignoradas quando eu fazia direto no arquivo da pasta do SVN. (Mesmo sem dar o Update, que acaba alterando o arquivo) Após criar o arquivo nessa outra pasta, importei para o meu projeto e esse arquivo começou a valer no lugar do original, que era exatamente o que eu precisava. (Pois esse meu arquivo estava com a correção) Vou deixar aqui o arquivo novo já com as mudanças que resolveram o meu problema. Após atualizar o cliente me deu o feedback que tudo voltou a funcionar corretamente no momento de processar o retorno. As minhas alterações estão marcadas com o comentário "//Velosys". Nas linhas: > linha 689: Adicionada verificação se o SegmentoJ existe antes de tentar incluir informações nele, pois quando não tinha Segmento J no arquivo ainda assim a função tentava incluir informações nele e causava "Access Violation". > linha 286: Por conta do Número da Conta do Favorecido em alguns dos meus casos estourar o máximo aceito pelo Int, precisei alterar para Int64. > linha 298: Mesma situação da linha 286. Espero que isso consiga te ajudar. Fico a disposição. ACBrPagForLerTxt.pas
  9. Bom dia, Ao utilizar o LerTXT do componente ACBrPagFor me deparei com um problema na Unit ACBrPagForLerTxt quando é feito o processamento do Segmento A do Arquivo de Retorno. Nos casos do Segmento A é incluso o Segmento B que possui algumas informações, assim como em outros Segmentos. Na leitura dos outros Segmentos (J e N) está faltando uma verificação se o Registro Pai existe, e acaba tentando inserir o Segmento B neles também, porém não existem e acaba apresentando o erro. Vou utilizar como exemplo a Leitura do Segmento J: (Observações feitas entre **** ****) procedure TPagForR.LerSegmentoJ(I: Integer); var mOk:boolean; x:integer; begin if ((Copy(FArquivoTXT.Strings[i], 8, 1) + Copy(FArquivoTXT.Strings[i], 14, 1)) <> '3J') and ((Copy(FArquivoTXT.Strings[i], 8, 1) + Copy(FArquivoTXT.Strings[i], 14, 1)) <> '3B') and ((Copy(FArquivoTXT.Strings[i], 8, 1) + Copy(FArquivoTXT.Strings[i], 14, 1)) <> '3C') and ((Copy(FArquivoTXT.Strings[i], 8, 1) + Copy(FArquivoTXT.Strings[i], 14, 1)) <> '3Z') then Exit; if ((Copy(FArquivoTXT.Strings[i], 18, 2) <> '52') and (Copy(FArquivoTXT.Strings[i], 18, 2) <> '99')) and ((Copy(FArquivoTXT.Strings[i], 8, 1) + Copy(FArquivoTXT.Strings[i], 14, 1)) <> '3B') and ((Copy(FArquivoTXT.Strings[i], 8, 1) + Copy(FArquivoTXT.Strings[i], 14, 1)) <> '3C') and ((Copy(FArquivoTXT.Strings[i], 8, 1) + Copy(FArquivoTXT.Strings[i], 14, 1)) <> '3Z') then begin FPagFor.Lote.Last.SegmentoJ.New; FPagFor.Lote.Last.SegmentoJ.Last.CodMovimento := StrToInMovimento(mOk, Copy(FArquivoTXT.Strings[i], 15, 3)); FPagFor.Lote.Last.SegmentoJ.Last.CodigoBarras := Copy(FArquivoTXT.Strings[i], 18, 44); FPagFor.Lote.Last.SegmentoJ.Last.NomeCedente := Copy(FArquivoTXT.Strings[i], 62, 30); FPagFor.Lote.Last.SegmentoJ.Last.DataVencimento := StringToDateTime(Copy(FArquivoTXT.Strings[i], 92, 2)+'/'+Copy(FArquivoTXT.Strings[i], 94, 2)+'/'+Copy(FArquivoTXT.Strings[i], 96, 4)); case FPagFor.Geral.Banco of pagItau, pagSantander, pagSicred, pagBancoCECRED, pagBradesco: begin FPagFor.Lote.Last.SegmentoJ.Last.ValorTitulo := StrToInt(Copy(FArquivoTXT.Strings[i], 100, 15)) / 100; FPagFor.Lote.Last.SegmentoJ.Last.Desconto := StrToInt(Copy(FArquivoTXT.Strings[i], 115, 15)) / 100; FPagFor.Lote.Last.SegmentoJ.Last.Acrescimo := StrToInt(Copy(FArquivoTXT.Strings[i], 130, 15)) / 100; FPagFor.Lote.Last.SegmentoJ.Last.DataPagamento := StringToDateTime(Copy(FArquivoTXT.Strings[i], 145, 2)+'/'+Copy(FArquivoTXT.Strings[i], 147, 2)+'/'+Copy(FArquivoTXT.Strings[i], 149, 4)); FPagFor.Lote.Last.SegmentoJ.Last.ValorPagamento := StrToInt(Copy(FArquivoTXT.Strings[i], 153, 15)) / 100; FPagFor.Lote.Last.SegmentoJ.Last.QtdeMoeda := StrToInt(Copy(FArquivoTXT.Strings[i], 168, 15)) / 100000; FPagFor.Lote.Last.SegmentoJ.Last.ReferenciaSacado := Copy(FArquivoTXT.Strings[i], 183, 20); case FPagFor.Geral.Banco of pagSicred, pagBancoCECRED, pagBradesco : FPagFor.Lote.Last.SegmentoJ.Last.NossoNumero := Copy(FArquivoTXT.Strings[i], 203, 20); else FPagFor.Lote.Last.SegmentoJ.Last.NossoNumero := Copy(FArquivoTXT.Strings[i], 216, 15) end; FPagFor.Lote.Last.SegmentoJ.Last.CodOcorrencia := Trim(Copy(FArquivoTXT.Strings[i], 231, 10)); if (FPagFor.Geral.Banco = pagItau) then FPagFor.Lote.Last.SegmentoJ.Last.DescOcorrencia := DescricaoRetornoItau(FPagFor.Lote.Last.SegmentoJ.Last.CodOcorrencia); if POS(FPagFor.Lote.Last.SegmentoJ.Last.CodOcorrencia, PAGAMENTO_LIBERADO_AVISO) = 0 then begin FPagFor.Registro0.Aviso.New; FPagFor.Registro0.Aviso.Last.CodigoRetorno := FPagFor.Lote.Last.SegmentoJ.Last.CodOcorrencia; FPagFor.Registro0.Aviso.Last.MensagemRetorno := FPagFor.Lote.Last.SegmentoJ.Last.DescOcorrencia; FPagFor.Registro0.Aviso.Last.Segmento := 'J'; FPagFor.Registro0.Aviso.Last.SegmentoFilho := ''; FPagFor.Registro0.Aviso.Last.SeuNumero := FPagFor.Lote.Last.SegmentoJ.Last.ReferenciaSacado; end; end; end; end; **** Nesse ponto abaixo é feita tentativa de inserir os segmentos opcionais, porém, não existe nenhum Segmento J preparado pois estou processando apenas o Segmento A. Com isso, é gerado um erro por não existir o registro. Acaba entrando nesse código pois reconhece no arquivo o Segmento B que existe também no Segmento A. Tentei colocar aqui uma condição "if (FPagFor.Lote.Last.SegmentoJ.Count > 0) then" mas por algum motivo minhas mudanças não estão sendo reconhecidas no código local e não consegui testar essa solução. **** {opcionais segmento J} LerSegmentoJ52(FPagFor.Lote.Last.SegmentoJ.Last.SegmentoJ52, i); LerSegmentoJ99(FPagFor.Lote.Last.SegmentoJ.Last.SegmentoJ99, i); LerSegmentoB(FPagFor.Lote.Last.SegmentoJ.Last.SegmentoB, i); LerSegmentoC(FPagFor.Lote.Last.SegmentoJ.Last.SegmentoC, i); LerSegmentoZ(FPagFor.Lote.Last.SegmentoJ.Last.SegmentoZ, i); case FPagFor.Geral.Banco of pagItau: begin for x := 0 to FPagFor.Lote.Last.SegmentoJ.Last.SegmentoB.Count - 1 do begin if POS(FPagFor.Lote.Last.SegmentoJ.Last.SegmentoB.Items[x].CodOcorrencia, PAGAMENTO_LIBERADO_AVISO) = 0 then begin FPagFor.Registro0.Aviso.New; FPagFor.Registro0.Aviso.Last.CodigoRetorno := FPagFor.Lote.Last.SegmentoJ.Last.SegmentoB.Items[x].CodOcorrencia; FPagFor.Registro0.Aviso.Last.MensagemRetorno := FPagFor.Lote.Last.SegmentoJ.Last.SegmentoB.Items[x].DescOcorrencia; FPagFor.Registro0.Aviso.Last.Segmento := 'J'; FPagFor.Registro0.Aviso.Last.SegmentoFilho := 'B'; FPagFor.Registro0.Aviso.Last.SeuNumero := FPagFor.Lote.Last.SegmentoJ.Last.ReferenciaSacado; end; end; for x := 0 to FPagFor.Lote.Last.SegmentoJ.Last.SegmentoC.Count - 1 do begin if POS(FPagFor.Lote.Last.SegmentoJ.Last.SegmentoC.Items[x].CodOcorrencia, PAGAMENTO_LIBERADO_AVISO) = 0 then begin FPagFor.Registro0.Aviso.New; FPagFor.Registro0.Aviso.Last.CodigoRetorno := FPagFor.Lote.Last.SegmentoJ.Last.SegmentoC.Items[x].CodOcorrencia; FPagFor.Registro0.Aviso.Last.MensagemRetorno := FPagFor.Lote.Last.SegmentoJ.Last.SegmentoC.Items[x].DescOcorrencia; FPagFor.Registro0.Aviso.Last.Segmento := 'J'; FPagFor.Registro0.Aviso.Last.SegmentoFilho := 'C'; FPagFor.Registro0.Aviso.Last.SeuNumero := FPagFor.Lote.Last.SegmentoJ.Last.ReferenciaSacado; end; end; end; end; end; Gostaria de um auxilio principalmente para eu conseguir checar se essa solução é viável, pois infelizmente não consegui testar o código já que mesmo mudando e rodando o sistema ele passa no código como se fosse o antigo ainda, ignorando minhas alterações locais. Vou continuar fazendo os testes aqui e qualquer novidade atualizo no tópico. Agradeço desde já e fico a disposição para passar mais detalhes sobre o ocorrido e chegarmos numa solução.
×
×
  • 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.

The popup will be closed in 10 segundos...