Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    670
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. vc que programa a data de protesto. eu faço de acordo com a configuracao que o usuario tem na tela da conta corrente. if AQryServico.FieldByName('REM_PROTESTAR_SER').AsInteger = 1 then /// vai protestar??? 1-sim 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;
  2. por favor, fechem o topico, italo ja arrumou. 13/01/2020 -- pcnNFeW -- [*] Acrescentado a condição (OcorrenciasVICMSSubstituto > 0) para a geração das tags: vBCSTRET, pST, vICMSSubstituto e vICMSSTRET quando o CST for 60 e CSOSN for 500. Por: Italo Jurisato Junior
  3. Errata! ambos dá o erro, producao ou homologação.
  4. Crendeuspai.. não tem alternativa... bora lá..
  5. Rejeicao: Nao informada vBCSTRet, pST, vICMSSubstituto e vICMSSTRet Cliente é revenda, não veio ST na nota de compra, pois já veio como 060. Antigamente aceitava enviar tudo zerado, agora na versão mais atualizada não se aplica. pensei colocar o percentual 18 fixo em pST, para resolver, estamos colocando 1 centavo na venda. Empresa emissora: Simples nacional: Venda interna, MG -> MG, item comprado em compra MG. Estou pensando, se for comprado de um distribuidor, se vai ter ST igual a primeira compra da industria, penso que não... ST morre no primeiro.
  6. Lucas, ainda hoje em 2020 deparei com esse erro, isso porque quis enfeitar pavão e carregar xml de nf de compra do cliente... O que vc fez para resolver? Detalhe: Tem retorno da chamada do webservice.
  7. Property LayoutVersaoArquivo : Integer read fpLayoutVersaoArquivo; Property LayoutVersaoLote : Integer read fpLayoutVersaoLote; vc muda no acbrboleto... Posta aqui o manual com essa versao 87? Tenho aqui que até a 81.. muito estranho esse erro.
  8. faça como eu, não tente entender esses manuais, quem os faz não pensa na gente...
  9. @Juliana Tamizou essa modificação já foi discutida aqui, quanto a problema de algumas agencias que pede com zero, outras não: Luciano, veja se não é seu caso.
  10. O código de barras 2de5 precisa ter quantidade par de numeros. E tem casos, que dependendo do tamanho/altura não funciona. Como está sendo gerado esse número? A regra do código de barras de arrecadação foi obedecida ?
  11. sempre foi assim, vc que coloca isso no componente. Só passaram analisar a informação.. vai ver antigamente isso nao tinha relevancia para eles. vc tem planilha nova de janeiro? anexa ela aqui por favor.
  12. Eu pensei, olhei o fonte, e realmente, a linha digitavel não volta em codigo de barras, mas a barra vem para linha digitavel. Mas, penso que se tiver os dados da conta, volta. Pois o que diferencia são campos livres, fator de vencimento e o valor do titulo.
  13. pelo que pede no codigo fonte do componente, precisa de digito verificador de agencia e agencia conta também. Se for BB pelo sicoob, pede as mesmas coisas. function TACBrBancoBrasil.MontarCampoCodigoCedente ( const ACBrTitulo: TACBrTitulo ) : String; begin Result := ACBrTitulo.ACBrBoleto.Cedente.Agencia+'-'+ ACBrTitulo.ACBrBoleto.Cedente.AgenciaDigito+'/'+ IntToStr(StrToIntDef(ACBrTitulo.ACBrBoleto.Cedente.Conta,0)) +'-'+ ACBrTitulo.ACBrBoleto.Cedente.ContaDigito; end;
  14. 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?
  15. Isso não me parece arquivo de boleto, mas folha de pagamentos. Não?
  16. 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?
  17. 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.
  18. 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.
  19. uai, mandar exorcizar então. as parcelas, vc botou 1 e 1 na parcela atual e na total ?
  20. 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);
  21. 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.
  22. dá uma olhada:
  23. 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.
  24. 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.
×
×
  • 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.