Ir para conteúdo
  • Cadastre-se

Jéter Rabelo Ferreira

Membros
  • Total de ítens

    545
  • Registro em

  • Última visita

  • Days Won

    5

Tudo que Jéter Rabelo Ferreira postou

  1. Bom dia. Tenho cliente enviando arquivos remessa para o Bradesco e a extensão sempre foi .rem. Atenciosamente.
  2. Boa tarde. Dando um "Google" no seu problema, vi o seguinte: http://stackoverflow.com/questions/3520186/delphi-jpeg-error-53 Ítem 2 " Does it occur to a single jpeg image or with all jpegs you try? JPEG error #53 error will come due to Insufficient memory. If file is corrupted, this error may occur. So opening this image in paint or photoshop and re-saving it in jpeg can solve the problem." Resumindo: Falta de Memória ou Imagem Corrompida! Atenciosamente.
  3. Bom dia. O MySQL é CaseSensitive quando está instalado em sistemas Linux Like. Mas em ambientes Windows não. Atenciosamente.
  4. Bom dia. Faça o inverso que você faz para emitir uma NF-e. No meu caso, eu coloco os dados numa classe e depois no Banco de Dados. Segue abaixo minha rotina: function TACBrNFeConfig.CarregaNFe(Sender: TObject; ATerceiro: Boolean): Boolean; var loNF_Ref: TNotaFiscalReferenciada; loItem: TNotaFiscalIT; LoFat: TNotaFiscalFaturas; I: Integer; begin Result := False; if TACBrNFeConfig.GetInstance.AbrirXML(True) = '' then Exit; with Sender as TNotaFiscal do begin ClearValues; with FNFe.NotasFiscais.Items[0].NFe do begin NFeOK := True; PropriaTerceiro := iif(ATerceiro, tTerceiro, tPropria); EntradaSaida := iif(ATerceiro, tEntrada, tSaida); NaturezaOperacao := Ide.natOp; ControleNF := Ide.cNF; NumeroNF := Ide.nNF; NotaFiscalCFG.Modelo := IntToStr(Ide.modelo); NotaFiscalCFG.Serie := IntToStr(Ide.serie); Emissao.Data := Ide.dEmi; Emissao.Saida := Ide.dSaiEnt; Emissao.Contabil := Ide.dEmi; TipoPagamento := Ide.indPag; Empresa.Endereco.IBGE.Municipio := IntToStr(Ide.cMunFG); TipoNFe := Ide.finNFe; SCAN.DataHora := Ide.dhCont; SCAN.Motivo := Ide.xJust; for I := 0 to Ide.NFref.Count - 1 do begin if Ide.NFref.Items[I].refNFe <> '' then begin loNF_Ref := TNotaFiscalReferenciada.Create; Referenciada.Items[I].ChaveNFe := Ide.NFref.Items[I].refNFe; Referenciada.Add(loNF_Ref); end; end; // Emitente é sempre a EMPRESA Empresa.Clone(TUsuario.GetInstance.CentroCusto); // Origem if ATerceiro then begin if not TEmpresa.CNPJFilial(Dest.CNPJCPF) then raise Exception.Create('NF-e não é destinada a empresa!'); Destinatario.Tipo := tcfFornecedor; if Destinatario.GetRecord(FormatarCnpjCpf(Emit.CNPJCPF)) = 0 then begin with Destinatario do begin with Cadastro do begin RazaoSocial := Utf8ToAnsi(Emit.xNome); if Utf8ToAnsi(Emit.xFant) <> '' then Nome := Utf8ToAnsi(Emit.xFant) else Nome := Utf8ToAnsi(Emit.xNome); Inscricao := EMit.IE; Cnpj_Cpf := FormatarCnpjCpf(EMit.CNPJCPF); end; with Endereco do begin Endereco := Utf8ToAnsi(EMit.EnderEmit.xLgr); Numero := EMit.EnderEmit.nro; Complemento := Utf8ToAnsi(EMit.EnderEmit.xCpl); Bairro := Utf8ToAnsi(EMit.EnderEmit.xBairro); CEP := IntToStr(EMit.EnderEmit.CEP); FormatarCEP; IBGE.Municipio := IntToStr(EMit.EnderEmit.cMun); Cidade := Utf8ToAnsi(EMit.EnderEmit.xMun); UF := EMit.EnderEmit.UF; end; with Telefone do begin Telefone := FormatarFONE(EMit.EnderEmit.fone); end; if not Destinatario.PutRecord then begin MsgErro('O fornecedor não está cadastrado!' + CRLF + 'O sistema tentou cadastrar mas houve um erro.' + CRLF + 'Efetue o cadasto do fornecedor dessa NF-e' + CRLF + 'para prosseguir com a importação.'); Exit; end; end; end; end else begin if not TEmpresa.CNPJFilial(Emit.CNPJCPF) then raise Exception.Create('NF-e não é emissão própria!'); Destinatario.Tipo := tcfCliente; if Destinatario.GetRecord(FormatarCnpjCpf(Dest.CNPJCPF)) = 0 then begin with Destinatario do begin with Cadastro do begin RazaoSocial := Utf8ToAnsi(Dest.xNome); Nome := Utf8ToAnsi(Dest.xNome); if Length(OnlyNumber(Dest.CNPJCPF)) > 11 then begin FJ := 'J'; Inscricao := Dest.IE; end else begin FJ := 'F'; Inscricao := 'ISENTO'; end; Cnpj_Cpf := FormatarCnpjCpf(Dest.CNPJCPF); end; with Endereco do begin Endereco := Utf8ToAnsi(Dest.EnderDest.xLgr); Numero := Dest.EnderDest.nro; Complemento := Utf8ToAnsi(Dest.EnderDest.xCpl); Bairro := Utf8ToAnsi(Dest.EnderDest.xBairro); CEP := IntToStr(Dest.EnderDest.CEP); FormatarCEP; IBGE.Municipio := IntToStr(Dest.EnderDest.cMun); Cidade := Utf8ToAnsi(Dest.EnderDest.xMun); UF := Dest.EnderDest.UF; end; with Telefone do begin Telefone := FormatarFONE(Dest.EnderDest.fone); end; if not PutRecord then begin MsgErro('O Cliente não está cadastrado!' + CRLF + 'O sistema tentou cadastrar mas houve um erro.' + CRLF + 'Efetue o cadasto do cliente dessa NF-e' + CRLF + 'para prosseguir com a importação.'); Exit; end; end; end; end; // Produtos for I := 0 to Det.Count - 1 do begin loItem := TNotaFiscalIT.Create; with Det.Items[I], loItem do begin InfoAdicionais := StringReplace(Utf8ToAnsi(infAdProd), ';', #13#10, [rfReplaceAll]); NumeroOrdem := Prod.nItem; CFOP.ID := Prod.CFOP; with Produto do begin if not ATerceiro then ID := StrToInt(Prod.cProd) else ID := 0; Descricao := Utf8ToAnsi(Prod.xProd); Produto.NCM := Prod.NCM; end; EanTrib := Prod.cEANTrib; Unidade := Prod.uTrib; UnidadeTrib := Prod.uTrib; if Prod.qTrib > 0 then Quantidade := Prod.qTrib else Quantidade := Prod.qCom; QuantidadeTrib := Prod.qTrib; with Valor do begin Unitario := Prod.vUnCom; UnitarioTrib := Prod.vUnTrib; Desconto := Prod.vDesc; Produto := Prod.vProd; with Outros do begin Frete := Prod.vFrete; Seguro := Prod.vSeg; end; end; with Imposto, Valor do begin with ICMS do begin loItem.CST.ID := OrigToStr(Orig) + CSTICMSToStr(CST); Tributos.ICMS.Modalidade := modBC; Tributos.ICMS.ReducaoBase := pRedBC; Tributos.ICMS.Aliquota := pICMS; Tributos.ICMS.Valor := vICMS; Tributos.ICMS.BaseCalculo := vBC; // ST Tributos.ICMS_ST.Modalidade := modBCST; Tributos.ICMS_ST.ReducaoBase := pRedBCST; Tributos.ICMS_ST.Aliquota := pICMSST; Tributos.ICMS_ST.BaseCalculo := vBCST; Tributos.ICMS_ST.Valor := vICMSST; Tributos.ICMS_ST.IVA := pMVAST; if vBCSTRet > 0 then Tributos.ICMS_ST.BaseCalculo := vBCSTRet; if vICMSSTRet > 0 then Tributos.ICMS_ST.Valor := vICMSSTRet; end; with PIS do begin Tributos.PIS.SituacaoTributaria := CSTPISToStr(CST); Tributos.PIS.BaseCalculo := vBC; Tributos.PIS.Aliquota := pPIS; Tributos.PIS.Valor := vPIS; end; with COFINS do begin Tributos.COFINS.SituacaoTributaria := CSTCOFINSToStr(CST); Tributos.COFINS.BaseCalculo := vBC; Tributos.COFINS.Aliquota := pCOFINS; Tributos.COFINS.Valor := vCOFINS; end; with IPI do begin Tributos.IPI.SituacaoTributaria := CSTIPIToStr(CST); Tributos.IPI.BaseCalculo := vBC; Tributos.IPI.Aliquota := pIPI; Tributos.IPI.ValorIPI := vIPI; Tributos.IPI.QtdeUnidPadrao := qUnid; Tributos.IPI.ValorUnidade := vUnid; end; Total := Produto - Desconto + Tributos.ICMS_ST.Valor + Tributos.IPI.ValorIPI + Outros.Frete + Outros.Seguro; end; end; Produtos.Add(loItem); end; // Totais da NF Valor.Tributos.icms.baseCalculo := total.ICMStot.vBC; Valor.Tributos.ICMS.Valor := total.ICMStot.vICMS; Valor.Tributos.ICMS_ST.baseCalculo := total.ICMStot.vBCST; Valor.Tributos.ICMS_ST.Valor := total.ICMStot.vST; Valor.Produto := total.ICMStot.vProd; Valor.Outros.Frete := total.ICMStot.vFrete; Valor.Outros.Seguro := total.ICMStot.vSeg; Valor.Desconto := total.ICMStot.vDesc; Valor.Outros.Frete := total.ICMStot.vFrete; Valor.Outros.Seguro := total.ICMStot.vSeg; Valor.Tributos.IPI.ValorIPI := total.ICMStot.vIPI; Valor.Tributos.PIS.Valor := total.ICMStot.vPIS; Valor.Tributos.COFINS.Valor := total.ICMStot.vCOFINS; Valor.Outros.OutrasDespAcess := total.ICMStot.vOutro; Valor.Total := total.ICMStot.vNF; //Transportadora with Transp do begin case modFrete of mfContaEmitente: Frete := tfEmitente; mfContaDestinatario: Frete := tfDestinatario; mfContaTerceiros: Frete := tfTerceiros; mfSemFrete: Frete := tfTerceiros; end; with Transporta do begin Transportadora.Cadastro.Cnpj_Cpf := FormatarCnpjCpf(CNPJCPF); Transportadora.Cadastro.RazaoSocial := xNome; Transportadora.Cadastro.Inscricao := IE; Transportadora.Endereco.Endereco := xEnder; Transportadora.Endereco.Cidade := xMun; Transportadora.Endereco.UF := UF; end; if Vol.Count > 0 then begin with Vol.Items[0], Volumes do begin Quantidade := qVol; Especie := Utf8ToAnsi(esp); Marca := Utf8ToAnsi(marca); Numero := nVol; PesoBruto := PesoB; PesoLiquido := PesoL; end; end; end; for I := 0 to Cobr.Dup.Count - 1 do begin LoFat := TNotaFiscalFaturas.Create; LoFat.Fatura := Cobr.Dup.Items[I].nDup; LoFat.Data := Cobr.Dup.Items[I].dVenc; LoFat.Valor := Cobr.Dup.Items[I].vDup; Faturas.Add(LoFat); end; // Informações InfAdicionaisContribuinte.Text := StringReplace(Utf8ToAnsi(infAdic.infCpl), ';', crlf, [ rfReplaceAll]); InfAdicionaisFisco.Text := StringReplace(Utf8ToAnsi(infAdic.infAdFisco), ';', crlf, [ rfReplaceAll]); ChaveNFe := OnlyNumber(infNFe.ID); end; end; Result := True; end; Atenciosamente.
  5. Bom dia. Segue anexa uma imagem da configuração do meu sistema para envio de email's pelo GMail. Atenciosamente.
  6. E pra variar, MG está na lista.
  7. Bom dia. Coloque um ClientDataSet num form e crie os campos que desejar exibir do retorno Vincule o DataSet num DataSource e esse ao DBGrid Efetue a leitura do arquivo retorno, incluindo os registros no seu DataSet Pronto. Atenciosamente.
  8. Maicon, boa tarde. Tem como você efetuar os testes para verificar-mos se ficou tudo correto nessa unit? No aguardo. Atenciosamente.
  9. Boa tarde. Efetue o download do SVN: https://fortesreport.svn.sourceforge.net/svnroot/fortesreport/trunk Porém no Delphi 2007 o Fortes Não instala se não for feita uma modificação numa diretiva de compilação no arquivo RLMetaVCL.pas Na linha 608 do referido arquivo onde lê-se: {$if CompilerVersion >= 20} // delphi 2009 Coloque o seguinte: {$if CompilerVersion >= 18} // delphi 2007 Feito isso, OK. Atenciosamente.
  10. Boa tarde Juliana. Atualização testada e OK. Atenciosamente.
  11. Boa tarde Efetua a consulta de qualquer NF-e. Atenciosamente.
  12. Boa tarde. Eu informo os dados dessa forma:a.CodCedente // Sem o Digito e Agencia; with FACBrBoleto, Items[0] do begin ... Cedente.Agencia := Carteira.Banco.Agencia; Cedente.AgenciaDigito := Carteira.Banco.AgenciaDigito; Cedente.Conta := Carteira.Banco.ContaCorrente; Cedente.ContaDigito := Carteira.Banco.ContaCorrenteDigito; Cedente.CodigoCedente := Carteira.CodCedente // Sem o Digito e Agencia; ... end; Atenciosamente.
  13. Bom dia. O ACBr efetua a consulta no estado que originou a NF-e, e não no portal Nacional. Portanto, faça como te disse no post anterior, efetue a consulta no portal do estado de origem e verifique se a NF-e encontra-se cancelada lá. Atenciosamente.
  14. Juliana, bom dia Esse problema é "parecido" com o que "resolvemos" semana passada, que é a respeito da agência na impressão de boletos. Maicon, foram feitas algumas correções nessa unit semana passada. Você atualizou seus fontes e testou novamente? Atenciosamente.
  15. Bom dia. Consulte a NF-e em questão no portal NF-e do estado de emissão que a mesma deve estar cancelada. Alguns estados demoram a enviar a informação de cancelamento para o Portal Nacional. Atenciosamente.
  16. Boa noite. Ao efetuar a leitura do arquivo efetue um count na sua lista de boletos. Se ela retornar 0, é porque está vazia. Atenciosamente.
  17. Boa noite. Eu utilizo a unit disponível no SVN. Atenciosamente
  18. Rodrigo, bom dia. Só complementando a respeito do cancelamento fora do prazo: - Dentro de 24 horas: Ok - após 24 horas e menos que 7 dias: Pode ser cancelada, porém a Secretaria da Fazenda eventualmente poderá fazer uma "visitnha" na empresa para verificar o motivo. - Após 7 dias: Não pode mais ser cancelada. Atenciosamente
  19. Boa tarde. A forma que está especificando está correta. Mas, sem especificar qual a mensagem de erro, fica impossível de ajudar. Atenciosamente.
  20. Bom Dia Juliana. Segue unit corrigida conforme proposta por você. Impressão OK. Atenciosamente. ACBrCaixaEconomicaSICOB.pas ACBrCaixaEconomicaSICOB.pas
  21. Boa tarde. Segue abaixo: function EnviarEmail(Endereco: String; Assunto: String = ''; Texto: String = ''; stlAnexo: TStringList = nil; AEnviarDireto: boolean = False): Boolean; type TAttachAccessArray = array [0..0] of TMapiFileDesc; PAttachAccessArray = ^TAttachAccessArray; var MapiMessage: TMapiMessage; MError: Cardinal; Sender: TMapiRecipDesc; PRecip, Recipients: PMapiRecipDesc; Attachments: PAttachAccessArray; x: integer; begin Result := False; MapiMessage.nRecipCount := 1; GetMem( Recipients, MapiMessage.nRecipCount * Sizeof(TMapiRecipDesc) ); Attachments := nil; try with MapiMessage do begin { Assunto e Texto } ulReserved := 0; lpszSubject := PAnsichar(PChar( Assunto )); lpszNoteText := PAnsichar(PChar( Texto )); lpszMessageType := nil; lpszDateReceived := nil; lpszConversationID := nil; flFlags := 0; Sender.ulReserved := 0; Sender.ulRecipClass := MAPI_ORIG; Sender.lpszName := PAnsichar(PChar( '' )); Sender.lpszAddress := PAnsichar(PChar( '' )); Sender.ulEIDSize := 0; Sender.lpEntryID := nil; lpOriginator := @Sender; { Endereço } PRecip := Recipients; PRecip^.ulReserved := 0; PRecip^.ulRecipClass := MAPI_TO; PRecip^.lpszName := PAnsichar(PChar( Endereco )); PRecip^.lpszAddress := StrNew( PAnsichar(PChar('SMTP:' + Endereco ) )); PRecip^.ulEIDSize := 0; PRecip^.lpEntryID := nil; //Inc( PRecip ); lpRecips := Recipients; { Anexa os arquivos } if stlAnexo = nil then begin stlAnexo := TStringList.Create; stlAnexo.Clear; end; { Deleta do stlAnexo os arquivos que não existem } for x := 0 to stlAnexo.Count - 1 do if not FileExists( stlAnexo.Strings[x] ) then stlAnexo.Delete(x); { Anexa os arquivos } if stlAnexo.Count > 0 then begin GetMem(Attachments, SizeOf(TMapiFileDesc) * stlAnexo.Count); for x := 0 to stlAnexo.Count - 1 do begin Attachments[x].ulReserved := 0; Attachments[x].flFlags := 0; Attachments[x].nPosition := ULONG($FFFFFFFF); Attachments[x].lpszPathName := StrNew( PAnsichar(PChar(stlAnexo.Strings[x]) )); Attachments[x].lpszFileName := StrNew( PAnsichar(PChar( ExtractFileName(stlAnexo.Strings[x]) ) )); Attachments[x].lpFileType := nil; end; end {endif}; nFileCount := stlAnexo.Count; lpFiles := @Attachments^; end; { Enviando o e-mail } if not AEnviarDireto then MError := MapiSendMail(0, Application.Handle, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) else MError := MapiSendMail(0, Application.Handle, MapiMessage, MAPI_LOGON_UI or MAPI_NEW_SESSION or MAPI_SENT, 0); case MError of MAPI_E_USER_ABORT: ; { Mostra mensagem que o envio do e-mail foi abortado pelo usuário. Portanto, não será mostrado nada } SUCCESS_SUCCESS: Result := True; else MessageDlg( 'Ocorreu um erro inesperado!'#13'Código: ' + IntToStr(MError), mtError, [mbOk], 0); end; finally PRecip := Recipients; StrDispose( PRecip^.lpszAddress ); //Inc( PRecip ); FreeMem( Recipients, MapiMessage.nRecipCount * Sizeof(TMapiRecipDesc) ); for x := 0 to stlAnexo.Count - 1 do begin StrDispose( Attachments[x].lpszPathName ); StrDispose( Attachments[x].lpszFileName ); end; end; end; Atenciosamente
  22. Boa Tarde. No meu caso, eu utilizo o Fortes, fazendo dessa forma ACBrBoleto.ACBrBoletoFC.NomeArquivo := Path + Nomedoarquivo Complementando o Régys, quando se tem urgência numa coisa e não se acha a resposta, "quebre a cabeça" para descobrir, debugando o componente e etc, ou tenha um pouquinho de paciência. Atenciosamente.
  23. Juliana, bom dia. Fui testar a unit conforme solicitação. Resultado: Na linha 89 e 90 você definiu tamanhos fixos para: fpTamanhoAgencia := 5; fpTamanhoConta := 8; Eu li um post relatando problemas com espaços na geração de arquivos remessas, acho que foi por isso que você deve ter setado o campo Agencia como 5 Mas, ao setar o tamanho da agência como 5, o formatarnossonumero coloca um zero na frete, o que é compreensivel, mas a impressão do boleto sai incorreta (Imagem comparativa anexa). Comentei essa linha e deu certo Outra correção foi no método MontarCodigoBarras: - Não há mais necessidade da verificação do tamanho do nosso número. Segue anexa a unit modificada. Atenciosamente. ACBrCaixaEconomicaSICOB.pas
  24. Bom dia Não sei no caso do Bradesco, mas geralmente no extrato não aparece o nome do sacado, pois podem haver mais de 1 boleto e o valor do crédito na conta corrente é o total das liquidações. Solicite ao banco que te forneça a relação das liquidações de boletos (conhecida como francesinha). Caso queira, implemente no seu sistema a leitura do arquivo retorno e faça a leitura do mesmo no seu sistema, "pegando" todas as informações do referido arquivo. Atenciosamente. Jéter Rabelo Ferreira
  25. Boa tarde. Meus clientes somente utilizam CNAB400 A unit atual do Bradesco não tem o CNAB240 implementado. Caso você puder nos ajudar, poderia implementar essas rotinas. Atenciosamente, Jéter Rabelo Ferreira
×
×
  • 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...