Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    735
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. Sim seria. Já entrei em contato várias vezes lá ou pelo chat, dando ideia de colocar aquele local que a gente digita o boleto la em api, assim a gente incluia pelo menos o boleto de modo automático. A baixa estou um pouco mais atrasado que você, uso para baixar o nosso numero que vem no extrato. Alias, você pega ele também via programação para fazer a baixa?
  2. Isso não me parece arquivo de boleto, mas folha de pagamentos. Não?
  3. Jairo, você tem essa conta pro? Existe realmente essa opção de anexar um arquivo cnab240 ? Minha conta que tenho, é fisica e empresa MEI. Apos esse post, solicitei até um convite para essa conta pro. Pois, tenho real interesse nesse processo, inclusive, já tenho a unit pronta aqui replicando o boleto que crio manual. Caso exista o menu, tire print e me envie?
  4. Entenda essa parte do componente: {Montando Campo Livre} CampoLivre := PadLeft(trim(ACBrTitulo.ACBrBoleto.Cedente.Modalidade), 2, '0') + PadLeft(trim(ACBrTitulo.ACBrBoleto.Cedente.CodigoCedente), 7, '0') + PadLeft(Copy(ANossoNumero,1,8), 8, '0') + //7 Sequenciais + 1 do digito IntToStrZero(Max(1,ACBrTitulo.Parcela),3); Se vc mandar totalparcela = 1 e parcela = 1, seus problemas se acabam. Pense nisso. Fora disso, o total de parcelas tem que estar gravado no seu banco, porque se mandar recno ou recordcount, cada hora vai ser aleatório, banco de dados SQL não existe recno fisico do banco de dados, como era antigamente no clipper.
  5. Claro que pode, evite dores de cabeça para vc. Detalhe : Se quer trabalhar com numero de parcela do sicoob, grava tudo no seu banco de dados. Qual parcela é e quantas é, pq é usado na montagem do codigo de barras, ou pelo menos era. Por isso passo como 1, isso só funcionava no programa cedente deles, onde o cara digitava e mandava direto. Inutil isso de parcela, mando carne de clube direto aqui com parcela 1/1 para tudo.
  6. uai, mandar exorcizar então. as parcelas, vc botou 1 e 1 na parcela atual e na total ?
  7. Titulo.TotalParcelas := self.gcre.RecordCount; incrementa parcelas pelo dataset de receber em loop ? Se nao for carne: parcela := gcre.RecNo; manda isso com 1 e o TotalParcelas tambem. penso estar errado isso. E em que momento vc salva no banco de dados isso ? remessa era para enviar com dados ja gravados. Esqueci de colocar a chamda da funcao: note os parametros fixos, 1, 1> é parcela e total, nao uso carne, mesmo sendo carne, uso tudo como se fosse 1 parcela. TFuncBoleto.AtribuirDadosAoTitulo(Titulo, IBQryServBanc, IBDSPai.FieldByName('DATA_BOR').AsDateTime, IBDSPai.FieldByName('REM_OCORRENCIA_BOR').AsInteger, IBDSReceber.FieldByName('DOCUMENTO_REC').AsString, IBDSReceber.FieldByName('BOLETO_REC').AsString, // IBDSReceber.FieldByName('DV_BOLETO_REC').AsString, IBDSReceber.FieldByName('VENCIMENTO_REC').AsDateTime, 1, 1, IBDSReceber.FieldByName('EMPRESA_REC').AsInteger, IBDSReceber.FieldByName('CODIGO_REC').AsLargeInt, IBDSReceber.FieldByName('VALOR_REC').AsCurrency, IBDSReceber.FieldByName('FISJUR_CLI').AsString, CnpjCpf, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_CLI').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('ENDERECO_CLI').AsString), IBDSReceber.FieldByName('NUM_ENDERECO_CLI').AsString, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('COMPL_END_CLI').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('BAIRRO_CLI').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOMCID').AsString), IBDSReceber.FieldByName('ESTCID').AsString, SoDigito(IBDSReceber.FieldByName('CEP_CLI').AsString), IBDSReceber.FieldByName('EMAIL_COBRANCA_CLI').AsString, IBDSReceber.FieldByName('TELEFONE_CLI').AsString, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_AVALISTA').AsString), CnpjCpfAvalista, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('ENDERECO_AVALISTA').AsString), IBDSReceber.FieldByName('NUM_END_AVALISTA').AsString, TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('COMPL_END_AVALISTA').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('BAIRRO_AVALISTA').AsString), TFuncoesString.AnsiParaAscii(IBDSReceber.FieldByName('NOME_CID_AVALISTA').AsString), IBDSReceber.FieldByName('UF_CID_AVALISTA').AsString, SoDigito(IBDSReceber.FieldByName('CEP_AVALISTA').AsString), IBDSReceber.FieldByName('EMAIL_AVALISTA').AsString, IBDSReceber.FieldByName('TELEFONE_AVALISTA').AsString, IBDSReceber.FieldByName('IE_AVALISTA').AsString, IBDSReceber.FieldByName('TEXTO_LIVRE_BOLETO_REC').AsString);
  8. Esse tamanho voce nao precisa mexer... mas se mexer, tem que saber o tamanho correto pelo manual. Vamos la, se isso está ficando diferente depois, vc pode ter colocado o DV do nosso numero junto com o campo nosso numero. Na segunda impressão, se repassar para o componente somado, o componente usa parte ele apenas. Veja como uso para gerar tanto 1a via, quanto 2a via class procedure TFuncBoleto.AtribuirDadosAoTitulo(var ATituloNaLista: TACBrTitulo; AQryServico: TDataSet; ADataEmissaoTituloDataDocumento: TDate; Rem_Ocorrencia_Remban: Integer; ADocumentoRec: string; ANumeroSlip, ADVSlip: string; AVencimento: TDate; ATotalParcelas, AParcela: Integer; AEmpresaRec: Integer; AAutoIncRec: Int64; AValor: Currency; AFisicaJuridica, ACnpjCpf, ANome, AEndereco, ANumeroEndereco, AComplementoEndereco, ABairro, ACidade, AUF, ACEP, AEmail, ATelefone, AAvalista, ACnpjCpfAvalista, ALogradouroAvalista, ANumeroEnderecoAvalista, AComplementoAvalista, ABairroAvalista, ACidadeAvalista, AUFAvalista, ACepAvalista, AEmailAvalista, ATelefoneAvalista, AInscricaoNrAvalista, AObsTextoCedente: string ); var L: Integer; S: string; begin ATituloNaLista.EspecieDoc := AQryServico.FieldByName('ESPECIE_DOCUMENTO_SER').AsString; // banco inter 77 ATituloNaLista.UsoBanco := AQryServico.FieldByName('USO_BANCO_SER').AsString; if AQryServico.FieldByName('ACEITE_SER').AsString = 'S' then ATituloNaLista.Aceite := atSim else ATituloNaLista.Aceite := atNao; ATituloNaLista.LocalPagamento := AQryServico.FieldByName('LOCAL_PAGAMENTO_SER').AsString; if AQryServico.FieldByName('TIPODOCUMENTO_SER').AsInteger = 2 then ATituloNaLista.TipoImpressao := tipCarne else ATituloNaLista.TipoImpressao := tipNormal; // ATituloNaLista.Moeda := QryServico.FieldByName('MOEDA_SER').AsString; ATituloNaLista.Carteira := AQryServico.FieldByName('CARTEIRA_SER').AsString; if AQryServico.FieldByName('RESPONSABILIDADE_ENVIO_SER').AsInteger = 1 then ATituloNaLista.CarteiraEnvio := tceBanco else // 0 zero ATituloNaLista.CarteiraEnvio := tceCedente; // read fCarteiraEnvio write fCarteiraEnvio default tceCedente; ATituloNaLista.TotalParcelas := ATotalParcelas; ATituloNaLista.Parcela := AParcela; // Zeramentos, para ser preenchido posterior a essa funcao ATituloNaLista.DataAbatimento := 0; ATituloNaLista.DataBaixa := 0; ATituloNaLista.DataCredito := 0; ATituloNaLista.DataDesconto := 0; ATituloNaLista.DataMoraJuros := 0; ATituloNaLista.DataOcorrencia := 0; ATituloNaLista.DataProtesto := 0; ATituloNaLista.PercentualMulta := 0; ATituloNaLista.ValorAbatimento := 0; ATituloNaLista.ValorDesconto := 0; ATituloNaLista.ValorDespesaCobranca := 0; ATituloNaLista.ValorIOF := 0; ATituloNaLista.ValorMoraJuros := 0; ATituloNaLista.ValorOutrasDespesas := 0; ATituloNaLista.ValorOutrosCreditos := 0; ATituloNaLista.MultaValorFixo := (AQryServico.FieldByName('REM_MULTA_VP_SER').AsString = 'F'); // ATituloNaLista.OcorrenciaOriginal.CodigoBanco := ''; // ATituloNaLista.OcorrenciaOriginal.Descricao := ''; ATituloNaLista.DescricaoMotivoRejeicaoComando.Clear; ATituloNaLista.MotivoRejeicaoComando.Clear; ATituloNaLista.DataDocumento := ADataEmissaoTituloDataDocumento; ATituloNaLista.DataProcessamento := Now; ATituloNaLista.NossoNumero := ANumeroSlip; // aqui nosso numero ATituloNaLista.Vencimento := AVencimento; ATituloNaLista.NumeroDocumento := ADocumentoRec; if (TFuncBoleto.ACBrBoleto.Banco.Numero = 104) and (TFuncBoleto.ACBrBoleto.LayoutRemessa = c240) then // caixa - nojento - 19 ATituloNaLista.NumeroDocumento := ATituloNaLista.ACBrBoleto.Banco.MontarCampoNossoNumero(ATituloNaLista); if AQryServico.FieldByName('REM_PROTESTAR_SER').AsInteger = 1 then begin ATituloNaLista.DataProtesto := AVencimento + AQryServico.FieldByName('REM_PROTESTAR_APOS_XDIAS_SER').AsInteger; ATituloNaLista.TipoDiasProtesto := diCorridos; // , diUteis end else begin ATituloNaLista.DataProtesto := 0; ATituloNaLista.TipoDiasProtesto := diUteis; end; // baixar if AQryServico.FieldByName('REM_BAIXAR_DEVOLVER_SER').AsInteger = 1 then begin ATituloNaLista.DataBaixa := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger; ATituloNaLista.DataLimitePagto := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger; end else begin ATituloNaLista.DataBaixa := 0; end; // Identificador do titulo na empresa (* Historico Primeira versao que saiu, seu numero era composto como: Até 10/10/2016 era: Strzero( codigo_rec, 12 ) + Strzero(13,0) A partir de 11/10/2016 passou ser E+StrZero(empresa,4,0) + B + Strzero(codigo_rec, 12, 0) + Strzero(7,0) *) S := 'E' + StrZero(AEmpresaRec, 4, 0); // 5 S := S + 'B' + StrZero(AAutoIncRec, 12, 0); // 13 = 18 S := S + StringOfChar('0', 7); // completar 25 posicoes ATituloNaLista.SeuNumero := S; (* 0=Registrar remessa {Gerar primeira remessa} 1=Baixar {Pedido de Baixa} 2=Conceder Abatimento {Concessão de Abatimento} 3=Cancelar Abatimento {Cancelamento de Abatimento concedido} 4=Alterar Vencimento {Alteração de vencimento} 5=Alterar Numero Controle {Alteração de seu número} 6=Protestar {Pedido de protesto} 7=Cancelar Instrucao Protesto Baixa {Sustar protesto e baixar} 8=Cancelar Instrucao Protesto {Sustar protesto e manter na carteira} 9=Outras Ocorrencias {Alteração de Outros Dados} *) case Rem_Ocorrencia_Remban of 0: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaRegistrar; 1: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaBaixar; 2: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaConcederAbatimento; 3: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarAbatimento; 4: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarVencimento; 5: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaAlterarNumeroControle; 6: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaProtestar; 7: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtestoBaixa; 8: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtesto; 9: ATituloNaLista.OcorrenciaOriginal.Tipo := toRemessaOutrasAlteracoes; else TCaixasDeDialogo.Erro('Código de ocorrência: ' + Rem_Ocorrencia_Remban.ToString + ' inválida.', true); end; ATituloNaLista.ValorDocumento := AValor; if AFisicaJuridica = 'J' then ATituloNaLista.Sacado.Pessoa := pJuridica else if AFisicaJuridica = 'F' then ATituloNaLista.Sacado.Pessoa := pFisica else ATituloNaLista.Sacado.Pessoa := pOutras; ATituloNaLista.Sacado.CNPJCPF := ACnpjCpf; ATituloNaLista.Sacado.NomeSacado := ANome; ATituloNaLista.Sacado.Logradouro := AEndereco; ATituloNaLista.Sacado.Complemento := AComplementoEndereco; ATituloNaLista.Sacado.Numero := ANumeroEndereco; ATituloNaLista.Sacado.Bairro := ABairro; ATituloNaLista.Sacado.CEP := ACEP; ATituloNaLista.Sacado.Cidade := ACidade; ATituloNaLista.Sacado.UF := AUF; ATituloNaLista.Sacado.Email := AEmail; ATituloNaLista.Sacado.Fone := ATelefone; // Avalista L := Length(SoDigito(ACnpjCpfAvalista)); if L > 11 then ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pJuridica else if L > 0 then ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pFisica else ATituloNaLista.Sacado.SacadoAvalista.Pessoa := pOutras; ATituloNaLista.Sacado.Avalista := AAvalista; ATituloNaLista.Sacado.SacadoAvalista.CNPJCPF := ACnpjCpfAvalista; ATituloNaLista.Sacado.SacadoAvalista.NomeAvalista := AAvalista; ATituloNaLista.Sacado.SacadoAvalista.Logradouro := ALogradouroAvalista; ATituloNaLista.Sacado.SacadoAvalista.Numero := ANumeroEnderecoAvalista; ATituloNaLista.Sacado.SacadoAvalista.Complemento := AComplementoAvalista; ATituloNaLista.Sacado.SacadoAvalista.Bairro := ABairroAvalista; ATituloNaLista.Sacado.SacadoAvalista.Cidade := ACidadeAvalista; ATituloNaLista.Sacado.SacadoAvalista.UF := AUFAvalista; ATituloNaLista.Sacado.SacadoAvalista.CEP := ACepAvalista; ATituloNaLista.Sacado.SacadoAvalista.Email := AEmailAvalista; ATituloNaLista.Sacado.SacadoAvalista.Fone := ATelefoneAvalista; ATituloNaLista.Sacado.SacadoAvalista.InscricaoNr := AInscricaoNrAvalista; S := AObsTextoCedente; ATituloNaLista.Mensagem.Text := S; ATituloNaLista.Informativo.Text := ''; // Não pode passar, senao vai como valor para remessa, posicao 157 a 158 no cnab400 sicoob ATituloNaLista.Instrucao1 := ''; ATituloNaLista.Instrucao2 := ''; ATituloNaLista.Instrucao3 := ''; end; como fica gravado no programa: Não tem erro, até boleto de outro programa quando converto tenho feito reimpressão.
  9. dá uma olhada:
  10. Não era de CT-e... mesmo assim, analisando ali no fonte do AcbrMDFe.. eu penso que ao atribuir o retorno da função LerURLDeParams, com o ultimo parametro como sendo zero, se analisar o retorno da DblToVersaoMDFe, verá que tem um default no caso de uma falha que é ve100, e que por sua vez, já é o primeiro if, if d = 1.0 then, logo, por analogia, o que se espera de LerURLDeParams, já poderia ter entrado a versão... Concorda ou sem corda? Não veio fonte comentado, desculpa a insistência.
  11. Eu sinto um frio quando vejo post aqui do sicoob kkkk tenho varios clientes com remessa.. mas sobre seu problema esqueceu sim: PadRight(DigitoVerificadorAgenciaConta, 1, ' ')+ // 72 - Dígito verificador Ag/Conta (zero) no cedente: TACBrBoleto.Cedente.DigitoVerificadorAgenciaConta := ADataSetConfigServicoBanco.FieldByName('DV_AGENCIA_CONTA_CCR').AsString; Sugiro você criar esse campo no seu sistema, já foi dúvida de outros programadores também. Por hora, componente está correto... na duvida, posta a remessa, assim a gente pode ajudar. Confere ai se é essa posição 72 mesmo.
  12. Antonio Gomes

    charinset

    CharInSet, delphi novo, enjoado ao aplicar build all no fonte. Possivel remoção de warning e hint ACBrNFSe.pas
  13. Muitos vão achar chatisse, mas a variavel VersaoDFe ao aplicar build all, mostra sem valor... Segue fonte com linhas desnecessárias removidas. function TACBrMDFe.GetURLConsulta(const CUF: integer; const TipoAmbiente: TpcnTipoAmbiente; const Versao: Double): String; var VersaoDFe: TVersaoMDFe; ok: Boolean; begin VersaoDFe := DblToVersaoMDFe(ok, Versao); Result := LerURLDeParams('MDFe', CUFtoUF(CUF), TipoAmbiente, 'URL-ConsultaMDFe', 0); end; ACBrMDFe.pas
  14. Eu penso que poder ser liberado, para nós irmos ajudando no projeto...
  15. @EMBarbosa Precisa colocar um Result ? function TACBrInformacoes.Add(Obj: TACBrInformacao): Integer; begin inherited Add(Obj); end; Grato!
  16. o tamanho da conta nao está configurado no seu programa com apenas 6 digitos? Zero no final essa funcao não remove. é ilógico isso... antes dos numeros sei que é padrao remover.
  17. é porque ao colar aqui, removeu os colchetes: Quando fala em ARetornoLido, tem que tratar ela assim: ARetornoLido [i ] voce mexe na linha com isso. Ah: Um detalhe que não pode esquecer, antes tem que analisar no arquivo se é do itau isso e se tem um cpf na posicao, no meu caso, eu coloquei no bordero de retorno, um campo para marcar que e de pessoa fisica.
  18. Isso é treta doida do itau. mandam errado e pronto, nem perdi meu tempo pedindo eles para arrumar.
  19. se for retorno do itau, tem que mudar a posicao onde colocam o tipo de pessoa, pois o acbr interpreta como está la e tenta validar um cpf, sendo que é cnpj que espera pelo numero que o itau muda: o que eu faço aqui se é um retorno de pessoa fisica do itau: var ArquivoDeRetorno : TStream; LS : TStrings; ArquivoDeRetorno := TMemoryStream.Create; LS := TStringList.Create; // CONTEUDO DO ARQUIVO LS.Text := TBlobField(IBDSPai.FieldByName('ARQUIVO_RETORNO_BOR')).AsString; P := LS.Count - 1; if (IBDSPai.FieldByName('RETORNO_PESSOA_FISICA_BOR').AsString = 'S') then MudarRetornoPosicao2_FisicaJuridica(LS); LS.SaveToStream(ArquivoDeRetorno); procedure TFCadBorderoBancario.MudarRetornoPosicao2_FisicaJuridica(var ARetornoLido: TStrings); var Linha: string; I : Integer; begin for I := 0 to ARetornoLido.Count - 1 do begin Linha := ARetornoLido; // Mexer nas linhas que correspondem a titulos apenas - iniciados com 1 if (Copy(Linha, 1, 1) = '1') and (Copy(Linha, 2, 2) = '02') then begin Delete(Linha, 2, 2); Insert('01', Linha, 2); ARetornoLido := Linha; end; end; end; testa ai, pode ser o seu problema também...
  20. Entendi. vc parametrizar no seu programa, para aceitar esse campo, vai funcionar,: veja: na procedure: GerarRegistroHeader240 está assim: PadRight(DigitoVerificadorAgenciaConta, 1, ' ')+ // 72 - Dígito verificador Ag/Conta (zero) << aqui entra seu parametro, igual coloquei la em cima na procedure: TACBrBancoob.GerarRegistroTransacao240 está assim: PadLeft(ACBrBoleto.Cedente.ContaDigito , 1, '0') + //36 - Dígito da Conta Corrente ' '; //37 - DV Agência/COnta Brancos olha a tela, o parametro que pede no componente: vc repassa o valor direto como string, para permanecer como o usuario colocou: Cedente.DigitoVerificadorAgenciaConta := ADataSetConfigServicoBanco.FieldByName('DV_AGENCIA_CONTA_CCR').AsString;
  21. Uai? Qual banco? Qual tipo de pessoa?
  22. Ai ai, esses bancos piram a gente: Hearder do arquivo: Dígito Verificador da Ag/Conta: Preencher com zeros Header do lote: Dígito Verificador da Ag/Conta: Preencher com espaços em branco Estou anexando a planilha que solicitei a cooperativa hoje. LAYOUT PARA TROCA DE INFORMAÇÕES - ATUALIZADO.xls
×
×
  • 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...