Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    903
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. nao é uba o nome da pasta, mas 3169901 e está errado no ini, pq esse 201 ja é passado
  2. Bom dia, @Italo Giurizzato Junior segue correções para versão 2.04 e reforma: Mudar sessão no INI: ACBrNFSeXServicos.ini [3169901] Nome=Uba UF=MG Provedor=VersaTecnologia Versao=2.04 Params=URLProducao:nfe.uba.mg.gov.br|URLHomologacao:homologacaouba.versatecnologia.com.br ProRecepcionar=http://nfe.uba.mg.gov.br/webservices/2.04/servicos HomRecepcionar=http://homologacaouba.versatecnologia.com.br/webservices/2.04/servicos ProNameSpace=http://nfe.uba.mg.gov.br/webservices/2.04/nfse_v204.xsd HomNameSpace=http://homologacaouba.versatecnologia.com.br/webservices/2.04/nfse_v204.xsd ProXMLNameSpace=http://nfe.uba.mg.gov.br/webservices/2.04/nfse_v204.xsd HomXMLNameSpace=http://homologacaouba.versatecnologia.com.br/webservices/2.04/nfse_v204.xsd E anexo a correção no gravar xml. VersaTecnologia.GravarXml.pas
  3. voce preencheu os dados de entrega mesmo sendo iguais ao endereco principal do remetente/destinatario, seria essa sua duvida? Se for, envia dados de entrega apenas se forem diferentes os endereços.
  4. Trocando ideia com um amigo, segundo ele o NBS atende, e o grupo novo de CST de PIS e cofins, pois eram coisas que nao existiam. CST vou normalizar agora
  5. So a cidade por hora, sobre a reforma, saiu novidade agora pouco, uns outros bugs ja estou corrigindo. Dado os fontes de ontem, as units que mandei: ACBrNFSeXProviderManager.pas e VersaTecnologia.LerXml.pas nao precisam sobrepor nem adicionar ao seu fonte, está ok já; uma tem o retorno da classe 204 nova, e a outra so um enter diferente na lerxml. No modelo base daqui, entrou apenas CST de pis e cofins, é a correção que vou aplicar, clientes com retenção.
  6. Voce precisa mexer antes mano, tudo que vc fez na primeira passada deve fazer parq conta seguinte, senao vira um balaio de gatos. Saca só como eu faço, as vezes na hora da segunda via, pode precisar de fazer em loop.. Codigo abaixo para voce abstrair. property Boleto: TACBrBoleto read FACbrBoleto write FACbrBoleto; LACBrTitulo : TACBrTitulo; TFuncBoleto.ConfigurarTipoCobranca(Boleto, FDSServBanc); Boleto.ListadeBoletos.Clear; LACBrTitulo := Boleto.CriarTituloNaLista; if (Boleto.ListadeBoletos.Count = 0) or (Boleto.ListadeBoletos.Count > 1) then raise Exception.Create('Erro no componente de boleto.' + #13 + sEntreEmContato); TFuncBoleto.AtribuirDadosAoTitulo(LACBrTitulo) class procedure TFuncBoleto.ConfigurarTipoCobranca(AACBrBoleto: TACBrBoleto; ADSServico: TDataSet); var S : string; LCertificadoCrt: string; LCertificadoKey: string; LCertificadoPFX: string; begin AACBrBoleto.Banco.OrientacoesBanco.Clear; AACBrBoleto.Banco.Numero := ADSServico.FieldByName('CAMARA_COMPENSACAO_BAN').AsInteger; AACBrBoleto.Banco.Digito := ADSServico.FieldByName('DV_CAMARA_COMP_BAN').AsInteger; AACBrBoleto.Banco.Nome := ADSServico.FieldByName('NOME_BAN').AsString; // banco do brasil if ADSServico.FieldByName('CAMARA_COMPENSACAO_BAN').AsInteger = 1 then begin AACBrBoleto.KeySoftwareHouse := 'xxxx cnpj seu '; // para webservice end; if ADSServico.FieldByName('TIPO_COBRANCA_ACBR_SER').AsInteger > 0 then // criado em 19/12/25-pode ser vazio no cliente AACBrBoleto.Banco.TipoCobranca := TACBrTipoCobranca(ADSServico.FieldByName('TIPO_COBRANCA_ACBR_SER').AsInteger) else begin // modo antigo, ate 19/12/2025 era assim AACBrBoleto.Banco.TipoCobranca := AACBrBoleto.GetTipoCobranca( ADSServico.FieldByName('CAMARA_COMPENSACAO_BAN').AsInteger, ADSServico.FieldByName('CARTEIRA_SER').AsString); case ADSServico.FieldByName('CAMARA_COMPENSACAO_BAN').AsInteger of 1: begin if ((ADSServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_BoletoApenas) or (ADSServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_HibridoBol_Pix)) then AACBrBoleto.Banco.TipoCobranca := TACBrTipoCobranca.cobBancoDoBrasilWS else if ADSServico.FieldByName('CAMARA_COMPENSACAO_SER').AsInteger = 5 then AACBrBoleto.Banco.TipoCobranca := cobBancoDoBrasilSICOOB else AACBrBoleto.Banco.TipoCobranca := cobBancoDoBrasil; { 001 } end; 104: begin if ADSServico.FieldByName('CAMARA_COMPENSACAO_SER').AsInteger = 1 then AACBrBoleto.Banco.TipoCobranca := cobCaixaSicob { 104 } else AACBrBoleto.Banco.TipoCobranca := cobCaixaEconomica; { 104 SIGCB } end; 237: begin case ADSServico.FieldByName('CAMARA_COMPENSACAO_SER').AsInteger of 2: AACBrBoleto.Banco.TipoCobranca := cobBradescoSICOOB; { 237 } 3: AACBrBoleto.Banco.TipoCobranca := cobBicBanco; { 237 } 4: AACBrBoleto.Banco.TipoCobranca := cobSafraBradesco; { 422 + 237 } else AACBrBoleto.Banco.TipoCobranca := cobBradesco; { 237 } end; end; 422: begin if ADSServico.FieldByName('CAMARA_COMPENSACAO_SER').AsInteger = 4 then AACBrBoleto.Banco.TipoCobranca := cobSafraBradesco { 422 + 237 } else begin AACBrBoleto.Banco.TipoCobranca := cobBancoSafra; { 422 } end; end; end; end; case AACBrBoleto.Banco.TipoCobranca of cobCaixaSicob: { 104 } begin AACBrBoleto.Banco.LayoutVersaoArquivo := 0; AACBrBoleto.Banco.LayoutVersaoLote := 30; end; cobCaixaEconomica: { 104 SIGCB } begin AACBrBoleto.Banco.LayoutVersaoArquivo := 50; AACBrBoleto.Banco.LayoutVersaoLote := 30; end; end; if (ADSServico.FieldByName('CAMARA_COMPENSACAO_BAN').AsInteger = 33) { santander } then AACBrBoleto.Banco.CasasDecimaisMoraJuros := 5 else AACBrBoleto.Banco.CasasDecimaisMoraJuros := 2; { 11/07/2024 - Erro 500, de falta de certificado, ordem correta dos parametros serem atribuidos Essas duas linhas devem ser aqui, pois elas mexem nas propertys abaixo, quando faz o OnSet de Certificado ou ChavePrivada ACBrBoleto.Configuracoes.WebService.ArquivoPFX Configuracoes.WebService.ArquivoCRT Configuracoes.WebService.ArquivoKEY } AACBrBoleto.Configuracoes.WebService.Certificado := ''; AACBrBoleto.Configuracoes.WebService.ChavePrivada := ''; if ((ADSServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_BoletoApenas) or (ADSServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_HibridoBol_Pix)) then begin TFuncContaServico.CertificadoNoHd(ADSServico, LCertificadoCrt, LCertificadoKey, LCertificadoPFX); if LCertificadoPFX <> '' then AACBrBoleto.Configuracoes.WebService.ArquivoPFX := LCertificadoPFX; if LCertificadoCrt <> '' then AACBrBoleto.Configuracoes.WebService.ArquivoCRT := LCertificadoCrt; if LCertificadoKey <> '' then AACBrBoleto.Configuracoes.WebService.ArquivoKEY := LCertificadoKey; // TNivelLog = (logNenhum, logSimples, logNormal, logCompleto, logParanoico); AACBrBoleto.Configuracoes.Arquivos.LogNivel := TNivelLog(ADSServico.FieldByName('NIVEL_LOG_SER').AsInteger); AACBrBoleto.Configuracoes.Arquivos.NomeArquivoLog := ''; AACBrBoleto.Configuracoes.Arquivos.PathGravarRegistro := ''; if AACBrBoleto.Configuracoes.Arquivos.LogNivel <> TNivelLog.logNenhum then begin AACBrBoleto.Configuracoes.Arquivos.NomeArquivoLog := 'LogExecucaoApiBoletoConta_' + ADSServico.FieldByName('CONTA_CORRENTE_SER').AsString; AACBrBoleto.Configuracoes.Arquivos.PathGravarRegistro := SDiretorioTempSistema; end; end; AACBrBoleto.Homologacao := False; case ADSServico.FieldByName('AMBIENTE_SER').AsInteger of 0: AACBrBoleto.Configuracoes.WebService.Ambiente := TTipoAmbienteWS.tawsProducao; 1: begin AACBrBoleto.Configuracoes.WebService.Ambiente := TTipoAmbienteWS.tawsHomologacao; AACBrBoleto.Homologacao := True; end; 2: AACBrBoleto.Configuracoes.WebService.Ambiente := TTipoAmbienteWS.tawsSandBox; end; AACBrBoleto.Configuracoes.WebService.Operacao := TOperacao.tpInclui; AACBrBoleto.Configuracoes.WebService.VersaoDF := ADSServico.FieldByName('API_VERSAO_DF_SER').AsString; // inter 1.2 AACBrBoleto.Configuracoes.WebService.SSLCryptLib := TSSLCryptLib(ADSServico.FieldByName('API_SSLCRYPTLIB_SER').AsInteger); // cryNone; AACBrBoleto.Configuracoes.WebService.SSLDgst := TSSLDgst(ADSServico.FieldByName('API_SSLDGST_SER').AsInteger); // dgstSHA1; AACBrBoleto.Configuracoes.WebService.SSLType := TSSLType(ADSServico.FieldByName('API_SSLTYPE_SER').AsInteger); // LT_TLSv1_2; AACBrBoleto.Configuracoes.WebService.SSLXmlSignLib := TSSLXmlSignLib(ADSServico.FieldByName('API_SSLXMLSIGNLIB_SER').AsInteger); // xsNone; // TSSLCryptLib = (cryNone, cryOpenSSL, cryCapicom, cryWinCrypt); AACBrBoleto.Configuracoes.WebService.SSLHttpLib := TSSLHttpLib(ADSServico.FieldByName('API_SSLHTTPLIB_SER').AsInteger); AACBrBoleto.Configuracoes.WebService.UseCertificateHTTP := ADSServico.FieldByName('API_USAR_CERTIFICADO_HTTP_SER').AsString = 'S'; AACBrBoleto.Configuracoes.WebService.TimeOut := ADSServico.FieldByName('WEBSERVICE_TIMEOUT_SER').AsInteger; if AACBrBoleto.Configuracoes.WebService.TimeOut <= 1000 then AACBrBoleto.Configuracoes.WebService.TimeOut := 10000; AACBrBoleto.Cedente.CedenteWS.IndicadorPix := ADSServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_HibridoBol_Pix; AACBrBoleto.Cedente.CedenteWS.ClientID := ADSServico.FieldByName('CLIENT_ID_SER').AsString; AACBrBoleto.Cedente.CedenteWS.ClientSecret := ADSServico.FieldByName('CLIENT_SECRET_SER').AsString; AACBrBoleto.Cedente.CedenteWS.KeyUser := ADSServico.FieldByName('KEY_USER_SER').AsString; AACBrBoleto.Cedente.CedenteWS.Scope := ADSServico.FieldByName('SCOPE_SER').AsString; // property IndicadorEmail: Boolean read FIndicadorEmail write FIndicadorEmail default False; // property IndicadorSMS: Boolean read FIndicadorSMS write FIndicadorSMS default False; case ADSServico.FieldByName('IDENTIFICACAO_SER').AsInteger of 1: AACBrBoleto.Cedente.CodigoCedente := ADSServico.FieldByName('AGENCIA_CCR').AsString + ADSServico.FieldByName('DV_AGENCIA_CCR').AsString; 2: AACBrBoleto.Cedente.CodigoCedente := ADSServico.FieldByName('NUM_CONTRATO_SER').AsString + ADSServico.FieldByName('DV_CONTRATO_SER').AsString; 3: AACBrBoleto.Cedente.CodigoCedente := ADSServico.FieldByName('CODIGO_CEDENTE_SER').AsString + ADSServico.FieldByName('DV_CEDENTE_SER').AsString; else raise Exception.Create('Tipo de cedente: ' + ADSServico.FieldByName('IDENTIFICACAO_SER').AsString + ' inválido no serviço bancário.' + #13 + 'Deve ser alguma opção:'#13 + '1-Agência;' + #13 + '2-Contrato ou' + #13 + '3-Código do cedente'); end; case ADSServico.FieldByName('TIPOEMISSAOBOLETO_SER').AsInteger of Resp_BancoEmite: AACBrBoleto.Cedente.ResponEmissao := tbBancoEmite; Resp_ClienteEmite: AACBrBoleto.Cedente.ResponEmissao := tbCliEmite; Resp_BancoReemite: AACBrBoleto.Cedente.ResponEmissao := tbBancoReemite; Resp_BancoNaoReemite: AACBrBoleto.Cedente.ResponEmissao := tbBancoNaoReemite; else raise Exception.Create('Tipo da emissão do boleto inválido: ' + ADSServico.FieldByName('TIPOEMISSAOBOLETO_SER').AsString + #13 + 'Favor verificar configuração do serviço bancário. (Valores validos: 1, 2 ,3 ou 4)'); end; case ADSServico.FieldByName('TIPO_CARTEIRA_SER').AsInteger of 1: AACBrBoleto.Cedente.TipoCarteira := tctSimples; 2: AACBrBoleto.Cedente.TipoCarteira := tctRegistrada; 3: AACBrBoleto.Cedente.TipoCarteira := tctEletronica; else AACBrBoleto.Cedente.TipoCarteira := tctSimples; end; if ADSServico.FieldByName('ESCRITURAL_TRADICIONAL_SER').AsString = 'E' then AACBrBoleto.Cedente.TipoDocumento := Escritural else AACBrBoleto.Cedente.TipoDocumento := Tradicional; if Length(ADSServico.FieldByName('CNPJ_CPF_CCR').AsString) > 11 then AACBrBoleto.Cedente.TipoInscricao := pJuridica // pFisica..pJuridica else AACBrBoleto.Cedente.TipoInscricao := pFisica; AACBrBoleto.Cedente.Nome := ADSServico.FieldByName('CEDENTE_NOME_CCR').AsString; AACBrBoleto.Cedente.CNPJCPF := ADSServico.FieldByName('CNPJ_CPF_CCR').AsString; AACBrBoleto.Cedente.Logradouro := ADSServico.FieldByName('CEDENTE_ENDERECO_CCR').AsString; AACBrBoleto.Cedente.NumeroRes := Trim(ADSServico.FieldByName('CEDENTE_NUM_ENDERECO_CCR').AsString); AACBrBoleto.Cedente.Bairro := Trim(ADSServico.FieldByName('CEDENTE_BAIRRO_CCR').AsString); AACBrBoleto.Cedente.CEP := TFuncoesString.SoNumero(ADSServico.FieldByName('CEDENTE_CEP_CCR').AsString); AACBrBoleto.Cedente.Telefone := Trim(ADSServico.FieldByName('CEDENTE_TELEFONE_CCR').AsString); if ADSServico.FieldByName('CEDENTE_CIDADE_CCR').AsInteger > 0 then begin AACBrBoleto.Cedente.Cidade := Trim(ADSServico.FieldByName('CEDENTE_NOMECIDADE').AsString); AACBrBoleto.Cedente.UF := Trim(ADSServico.FieldByName('CEDENTE_UFCIDADE').AsString); end; AACBrBoleto.Cedente.Conta := ADSServico.FieldByName('CONTA_CCR').AsString; AACBrBoleto.Cedente.ContaDigito := ADSServico.FieldByName('DV_CONTA_CCR').AsString; AACBrBoleto.Cedente.Agencia := ADSServico.FieldByName('AGENCIA_CCR').AsString; AACBrBoleto.Cedente.AgenciaDigito := ADSServico.FieldByName('DV_AGENCIA_CCR').AsString; AACBrBoleto.Cedente.Modalidade := Trim(ADSServico.FieldByName('MODALIDADE_SER').AsString); AACBrBoleto.Cedente.DigitoVerificadorAgenciaConta := ADSServico.FieldByName('DV_AGENCIA_CONTA_CCR').AsString; if ADSServico.FieldByName('LEIAUTE_SER').AsInteger = 1 then AACBrBoleto.LayoutRemessa := c240 else AACBrBoleto.LayoutRemessa := c400; AACBrBoleto.Cedente.CodigoCedente := Trim(ADSServico.FieldByName('CODIGO_CEDENTE_SER').AsString) + Trim(ADSServico.FieldByName('DV_CEDENTE_SER').AsString); AACBrBoleto.Cedente.CodigoTransmissao := ADSServico.FieldByName('CODIGO_TRANSMISSAO_SER').AsString; AACBrBoleto.Cedente.Convenio := ADSServico.FieldByName('NUM_CONTRATO_SER').AsString; // tcSimples,tcVinculada,tcCaucionada,tcDescontada,tcVendor { 0-Simples, 1-Vinculada, 2-Caucionada, 3-Descontada, 4-Vendor } S := Trim(ADSServico.FieldByName('CARACTERISTICA_TITULO_SER').AsString) + '0'; case S[1] of '0': AACBrBoleto.Cedente.CaracTitulo := tcSimples; // -Simples, '1': AACBrBoleto.Cedente.CaracTitulo := tcVinculada; '2': AACBrBoleto.Cedente.CaracTitulo := tcCaucionada; '3': AACBrBoleto.Cedente.CaracTitulo := tcDescontada; '4': AACBrBoleto.Cedente.CaracTitulo := tcVendor; end; end; class procedure TFuncBoleto.AtribuirDadosAoTitulo(var ATitulo: TACBrTitulo; AQryServico : TDataSet; ADataEmissaoTituloDataDocumento: TDate; ARem_Ocorrencia_Remban : Integer; ADocumentoRec : string; ANumeroSlip : string; ADVSlip : string; AVencimento : TDate; ATotalParcelas : Integer; AParcela : Integer; AEmpresaRec : Integer; ATipoAgrupamento : string; AAutoIncRec : Int64; AAutoIncAgrupamento : Int64; AValor : Currency; AFisicaJuridica : string; ACnpjCpf : string; ANome : string; AEndereco : string; ANumeroEndereco : string; AComplementoEndereco : string; ABairro : string; ACidade : string; AUF : string; ACEP : string; AEmail : string; ATelefone : string; AAvalista : string; ACnpjCpfAvalista : string; ALogradouroAvalista : string; ANumeroEnderecoAvalista : string; AComplementoAvalista : string; ABairroAvalista : string; ACidadeAvalista : string; AUFAvalista : string; ACepAvalista : string; AEmailAvalista : string; ATelefoneAvalista : string; AInscricaoNrAvalista : string; AObsTextoCedente : string; AConceder_Desconto_ate_rec : string; AVlr_Desconto_ate_rec : Currency; APerc_Desconto_boleto_rec : Currency; Aconsiderar_Desc_Ate_rec : TDate; APerc_Multa_Boleto_rec : Currency; AMulta_ValorFixo_rec : Currency; AMulta_Calc_rec : Currency; AJuro_Calc_rec : Currency; APerc_Juro_Boleto_rec : Currency; ACodigoSolicitacao : string); var L: Integer; begin case AQryServico.FieldByName('IND_VALOR_DIVERGENTE_SER').AsInteger of 0: ATitulo.TipoPagamento := tpAceita_Qualquer_Valor; 1: ATitulo.TipoPagamento := tpAceita_Valores_entre_Minimo_Maximo; 2: ATitulo.TipoPagamento := tpNao_Aceita_Valor_Divergente; 3: ATitulo.TipoPagamento := tpSomente_Valor_Minimo; else raise Exception.Create('Indicativo de valor divergente na conta inválido ou não parametrizado'); end; if AQryServico.FieldByName('ACEITE_SER').AsString = 'S' then ATitulo.Aceite := atSim else ATitulo.Aceite := atNao; if AQryServico.FieldByName('TIPODOCUMENTO_SER').AsInteger = 2 then ATitulo.TipoImpressao := tipCarne else ATitulo.TipoImpressao := tipNormal; if AQryServico.FieldByName('RESPONSABILIDADE_ENVIO_SER').AsInteger = 1 then ATitulo.CarteiraEnvio := tceBanco else // 0 zero ATitulo.CarteiraEnvio := tceCedente; ATitulo.LocalPagamento := AQryServico.FieldByName('LOCAL_PAGAMENTO_SER').AsString.Trim; ATitulo.EspecieDoc := AQryServico.FieldByName('ESPECIE_DOCUMENTO_SER').AsString.Trim; ATitulo.UsoBanco := AQryServico.FieldByName('USO_BANCO_SER').AsString; // banco inter 77 ATitulo.EspecieMod := AQryServico.FieldByName('MOEDA_SER').AsString; ATitulo.Carteira := AQryServico.FieldByName('CARTEIRA_SER').AsString; ATitulo.TotalParcelas := ATotalParcelas; ATitulo.Parcela := AParcela; ATitulo.DataAbatimento := 0; ATitulo.DataBaixa := 0; ATitulo.DataCredito := 0; ATitulo.DataDesconto := 0; ATitulo.DataMoraJuros := 0; ATitulo.DataOcorrencia := 0; ATitulo.DataProtesto := 0; ATitulo.PercentualMulta := 0; ATitulo.ValorAbatimento := 0; ATitulo.ValorDesconto := 0; ATitulo.ValorDespesaCobranca := 0; ATitulo.ValorIOF := 0; ATitulo.ValorMoraJuros := 0; ATitulo.ValorOutrasDespesas := 0; ATitulo.ValorOutrosCreditos := 0; ATitulo.MultaValorFixo := (AQryServico.FieldByName('REM_MULTA_VP_SER').AsString = 'F'); ATitulo.DataDocumento := ADataEmissaoTituloDataDocumento; ATitulo.DataProcessamento := Now; ATitulo.NossoNumero := ANumeroSlip; // Não pode somar o DV aqui ATitulo.NumeroDocumento := ADocumentoRec; ATitulo.Vencimento := AVencimento; ATitulo.ValorDocumento := AValor; ATitulo.DescricaoMotivoRejeicaoComando.Clear; ATitulo.MotivoRejeicaoComando.Clear; if (ATitulo.ACBrBoleto.Banco.Numero = 104) and (ATitulo.ACBrBoleto.LayoutRemessa = c240) then // caixa - nojento - 19 ATitulo.NumeroDocumento := ATitulo.ACBrBoleto.Banco.MontarCampoNossoNumero(ATitulo); if AQryServico.FieldByName('REM_PROTESTAR_SER').AsInteger = 1 then begin ATitulo.DataProtesto := AVencimento + AQryServico.FieldByName('REM_PROTESTAR_APOS_XDIAS_SER').AsInteger; ATitulo.TipoDiasProtesto := diCorridos; // , diUteis end else begin ATitulo.DataProtesto := 0; ATitulo.TipoDiasProtesto := diUteis; end; // baixar if AQryServico.FieldByName('REM_BAIXAR_DEVOLVER_SER').AsInteger = 1 then begin ATitulo.DataBaixa := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger; ATitulo.DataLimitePagto := AVencimento + AQryServico.FieldByName('REM_DIAS_BAIXAR_SER').AsInteger; end else begin ATitulo.DataBaixa := 0; end; // ****** numero que o acbr usa ATitulo.NossoNumeroCorrespondente := ACodigoSolicitacao; ATitulo.SeuNumero := TFuncBoleto.GerarSeuNumeroAML( AQryServico.FieldByName('BOLETO_ELETRONICO_SER').AsString, AEmpresaRec, AAutoIncRec, AAutoIncAgrupamento); // C6 // if ATitulo.NossoNumeroCorrespondente = '' then // ATitulo.NossoNumeroCorrespondente := ATitulo.SeuNumero; (* 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 ARem_Ocorrencia_Remban of 0: ATitulo.OcorrenciaOriginal.Tipo := toRemessaRegistrar; 1: ATitulo.OcorrenciaOriginal.Tipo := toRemessaBaixar; 2: ATitulo.OcorrenciaOriginal.Tipo := toRemessaConcederAbatimento; 3: ATitulo.OcorrenciaOriginal.Tipo := toRemessaCancelarAbatimento; 4: ATitulo.OcorrenciaOriginal.Tipo := toRemessaAlterarVencimento; 5: ATitulo.OcorrenciaOriginal.Tipo := toRemessaAlterarNumeroControle; 6: ATitulo.OcorrenciaOriginal.Tipo := toRemessaProtestar; 7: ATitulo.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtestoBaixa; 8: ATitulo.OcorrenciaOriginal.Tipo := toRemessaCancelarInstrucaoProtesto; 9: ATitulo.OcorrenciaOriginal.Tipo := toRemessaOutrasAlteracoes; else Raise Exception.Create('Código de ocorrência: ' + ARem_Ocorrencia_Remban.ToString + ' inválida.'); end; if AFisicaJuridica = 'J' then ATitulo.Sacado.Pessoa := pJuridica else if AFisicaJuridica = 'F' then ATitulo.Sacado.Pessoa := pFisica else ATitulo.Sacado.Pessoa := pOutras; ACnpjCpf := TFuncoesString.SoNumero(ACnpjCpf); ATitulo.Sacado.CNPJCPF := ACnpjCpf; ATitulo.Sacado.NomeSacado := ANome; ATitulo.Sacado.Logradouro := AEndereco; ATitulo.Sacado.Complemento := AComplementoEndereco; ATitulo.Sacado.Numero := ANumeroEndereco.Trim; ATitulo.Sacado.Bairro := ABairro; ATitulo.Sacado.CEP := ACEP; ATitulo.Sacado.Cidade := ACidade; ATitulo.Sacado.UF := AUF; ATitulo.Sacado.Email := AEmail; ATelefone := TFuncoesString.SoNumero(ATelefone); // banco inter, telefone precisa ser menor ou igual a 9 - acbr nao tem o ddd if (ATitulo.ACBrBoleto.Banco.Numero = 77) and (ATelefone.Length > 9) then ATelefone := Copy(ATelefone, ATelefone.Length - 9, 9); ATitulo.Sacado.Fone := ATelefone; if ((AQryServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_BoletoApenas) or (AQryServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_HibridoBol_Pix)) then begin // banco C6 if (ATitulo.ACBrBoleto.Banco.Numero = 336) then begin ATitulo.Sacado.NomeSacado := Copy(ATitulo.Sacado.NomeSacado, 1, 40); ATitulo.Sacado.Logradouro := Copy(ATitulo.Sacado.Logradouro, 1, 33 - ATitulo.Sacado.Numero.Length); ATitulo.Sacado.Complemento := Copy(ATitulo.Sacado.Complemento, 1, 24); ATitulo.Sacado.Bairro := Copy(ATitulo.Sacado.Bairro, 1, 24); ATitulo.Sacado.Cidade := Copy(ATitulo.Sacado.Cidade, 1, 40); ATitulo.Sacado.Email := Copy(ATitulo.Sacado.Email, 1, 200); end; end; // Avalista ACnpjCpfAvalista := TFuncoesString.SoNumero(ACnpjCpfAvalista); L := ACnpjCpfAvalista.Length; if (L > 0) and (L <= 11) then ATitulo.Sacado.SacadoAvalista.Pessoa := pFisica else if L > 11 then ATitulo.Sacado.SacadoAvalista.Pessoa := pJuridica else ATitulo.Sacado.SacadoAvalista.Pessoa := pNenhum; // santanter, deu erro na cl 242 ATitulo.Sacado.Avalista := AAvalista; ATitulo.Sacado.SacadoAvalista.CNPJCPF := ACnpjCpfAvalista; ATitulo.Sacado.SacadoAvalista.NomeAvalista := AAvalista; ATitulo.Sacado.SacadoAvalista.Logradouro := ALogradouroAvalista; ATitulo.Sacado.SacadoAvalista.Numero := ANumeroEnderecoAvalista; ATitulo.Sacado.SacadoAvalista.Complemento := AComplementoAvalista; ATitulo.Sacado.SacadoAvalista.Bairro := ABairroAvalista; ATitulo.Sacado.SacadoAvalista.Cidade := ACidadeAvalista; ATitulo.Sacado.SacadoAvalista.UF := AUFAvalista; ATitulo.Sacado.SacadoAvalista.CEP := ACepAvalista; ATitulo.Sacado.SacadoAvalista.Email := AEmailAvalista; ATitulo.Sacado.SacadoAvalista.Fone := ATelefoneAvalista; ATitulo.Sacado.SacadoAvalista.InscricaoNr := AInscricaoNrAvalista; // banco c6- na api, precisa ser 80 digitos em cadas linha if ((AQryServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_BoletoApenas) or (AQryServico.FieldByName('BOLETO_ELETRONICO_SER').AsString = Eletronico_HibridoBol_Pix)) then begin AObsTextoCedente := TFuncoesString.RemoverEspacoDuplo(AObsTextoCedente); AObsTextoCedente := TFuncoesString.RemoverQuebra(AObsTextoCedente); end; ATitulo.Mensagem.Text := AObsTextoCedente; ATitulo.Informativo.Text := ''; if (ATitulo.OcorrenciaOriginal.Tipo = toRemessaRegistrar) and (ATitulo.ACBrBoleto.Banco.Numero = 336) then // 28/02/2024 - banco C6 , estava indo 00 90 - cliente 260 begin ATitulo.Instrucao1 := '00'; ATitulo.Instrucao2 := '00'; ATitulo.Instrucao3 := ''; end else begin // Não pode passar, senao vai como valor para remessa, posicao 157 a 158 no cnab400 sicoob ATitulo.Instrucao1 := AQryServico.FieldByName('INSTRUCAO1_SER').AsString; ATitulo.Instrucao2 := AQryServico.FieldByName('INSTRUCAO2_SER').AsString; ATitulo.Instrucao3 := AQryServico.FieldByName('INSTRUCAO3_SER').AsString; end; // descontos ATitulo.ValorDesconto := 0; ATitulo.CodigoDesconto := TACBrCodigoDesconto.cdSemDesconto; ATitulo.TipoDesconto := TACBrTipoDesconto.tdNaoConcederDesconto; ATitulo.TipoDesconto2 := TACBrTipoDesconto.tdNaoConcederDesconto; ATitulo.TipoDesconto3 := TACBrTipoDesconto.tdNaoConcederDesconto; if (AConceder_Desconto_ate_rec = 'S') and ((AVlr_Desconto_ate_rec > 0) or (APerc_Desconto_boleto_rec > 0)) then begin { tdNaoConcederDesconto, tdValorFixoAteDataInformada, tdPercentualAteDataInformada, tdValorAntecipacaoDiaCorrido, tdValorAntecipacaoDiaUtil, tdPercentualSobreValorNominalDiaCorrido, tdPercentualSobreValorNominalDiaUtil, tdCancelamentoDesconto); } if AQryServico.FieldByName('REM_DESCONTO_VP_SER').AsString = 'P' then begin ATitulo.ValorDesconto := APerc_Desconto_boleto_rec; ATitulo.TipoDesconto := TACBrTipoDesconto.tdPercentualAteDataInformada; ATitulo.CodigoDesconto := TACBrCodigoDesconto.cdPercentual; end else if AQryServico.FieldByName('REM_DESCONTO_VP_SER').AsString = 'V' then begin ATitulo.ValorDesconto := AVlr_Desconto_ate_rec; ATitulo.TipoDesconto := TACBrTipoDesconto.tdValorFixoAteDataInformada; ATitulo.CodigoDesconto := TACBrCodigoDesconto.cdValorFixo; end; if ATitulo.ValorDesconto > 0 then begin ATitulo.DataDesconto := Aconsiderar_Desc_Ate_rec; end; end; { tratamento de juros/multa } // era 1 fixo os dias, ate 04/05/2025, foi mudado por causa do c6, so ele é zero, quando é api ATitulo.DataMoraJuros := ATitulo.Vencimento + AQryServico.FieldByName('REM_DIAS_JUROS_SER').AsInteger; ATitulo.DataMulta := ATitulo.Vencimento + AQryServico.FieldByName('REM_DIAS_MULTA_SER').AsInteger; ATitulo.CodigoMoraJuros := cjIsento; // cjValorDia, cjTaxaMensal, // indicação de multa, valor fixo só se for por valor ATitulo.MultaValorFixo := (AQryServico.FieldByName('REM_MULTA_VP_SER').AsString = 'F'); if AQryServico.FieldByName('REM_MULTA_VP_SER').AsString = 'P' then begin ATitulo.PercentualMulta := APerc_Multa_Boleto_rec; ATitulo.CodigoMulta := cmPercentual; end else if AQryServico.FieldByName('REM_MULTA_VP_SER').AsString = 'F' then begin if AMulta_ValorFixo_rec > 0 then ATitulo.PercentualMulta := AMulta_ValorFixo_rec else ATitulo.PercentualMulta := AMulta_Calc_rec; ATitulo.CodigoMulta := cmValorFixo; end; { Santander 1 = Valor por dia - Informar no campo o valor/dia a mora a ser cobrada. 2 = Taxa Mensal - Informar no campo taxa mensal o percentual a ser aplicado sobre valor do ATitulo que será calculado por dia de atraso. Tem 5 decimais 3 = Isento 4 = Utilizar comissão permanência do Banco por dia de atraso 5 = Tolerância valor por dia (cobrar juros a partir de) 6 = Tolerância taxa mensal (cobrar juros a partir de) * Para o código igual 4, o campo “taxa mensal” não deverá conter informação. } { Juro: 0-Isento (Usado p/Banco) 1-Valor por Dia (Usado p/Banco) 2-Taxa Mensal (Usado p/Banco) 3-Valor Mensal (Usado p/Banco) 4-Taxa Diaria V-Valor (Usado p/Pag Fácil) P-Percentual (Usado p/Pag Fácil) } if AQryServico.FieldByName('COD_MORAJUROS_REMESSA_SER').AsString <> '' then ATitulo.CodigoMora := AQryServico.FieldByName('COD_MORAJUROS_REMESSA_SER').AsString; // Indicacao de mora de juros cjValorDia, cjTaxaMensal, cjIsento, cjValorMensal, cjTaxaDiaria if AQryServico.FieldByName('REM_JURO_VP_SER').AsString = '1' then begin ATitulo.ValorMoraJuros := AJuro_Calc_rec; ATitulo.CodigoMoraJuros := cjValorDia; end else if AQryServico.FieldByName('REM_JURO_VP_SER').AsString = '2' then // taxa mensal begin // santander 33 ATitulo.ValorMoraJuros := APerc_Juro_Boleto_rec; ATitulo.CodigoMoraJuros := cjTaxaMensal; end else if AQryServico.FieldByName('REM_JURO_VP_SER').AsString = '3' then // Valor Mensal begin ATitulo.ValorMoraJuros := AJuro_Calc_rec; ATitulo.CodigoMoraJuros := cjValorMensal; end else if AQryServico.FieldByName('REM_JURO_VP_SER').AsString = '4' then // taxa diaria begin ATitulo.ValorMoraJuros := APerc_Juro_Boleto_rec / 30; ATitulo.ValorMoraJuros := TFuncoesNumero.RoundDCurrency(ATitulo.ValorMoraJuros, 2); ATitulo.CodigoMoraJuros := cjTaxaDiaria; end; // ATitulo.DataLimitePagto := FDSServBanc.FieldByName('REM_DIAS_BAIXAR_SER').AsString; end;
  7. Ah sim, embora eu ainda não tenha feito, pelo que vi no manual, o regular voce vai mandar quando o principal sofrer mutação ou haver venda pra orgao publico, onde o valor vai ter reducao ou diferimento, carece inúmeros estudos ainda, material fornecido é meio fraco por parte do orgao do estado.
  8. Não tem, mas revisa CST e Classtrib se chega certo, existem dados que fazem nao gerar as tags.. Lembre-se está programado para a NF do que tem e o que nao tem IBS/ CBS / IS, se stá no default LIBSCBS.CST := TCSTIBSCBS.cstNenhum - nao sai no xml
  9. se vc ver a fundo, é uma ST piorada né.
  10. kkk Eu quero ver eles conciliarem quando bater de contingencia, se tiver validação em um lado e nao no outro, vai ser lindo mesmo. O "estado/federação" está uma bagunça.
  11. tem cara de errado, nao? pq esse tem um codigo só, pelo menos ate ontem
  12. Se recolher o imposto o estado só vai dizer amém kkk pagou pq quis kkk
  13. Então vou conferir o meu também, pode ser desativação de API, embora o cliente esteja sem acesso até no portal do banco...
  14. Então, funcionava antes? Parece que o dia de ontem (05/01) inter estava com falha na PJ, é um caso a investigar, e hoje cedo cliente reportou que o agendamento de baixas de boleto não foi feito em nosso sistema.
  15. @Italo Giurizzato Junior Tudo em paz, bom ano novo ai.. Pode avaliar? Segue correção para atender ao XML da versão 2.04 Pasta Provedores: VersaTecnologia.GravarXml.pas VersaTecnologia.Provider.pas VersaTecnologia.LerXml.pas Pasta ACBRNFSeX: Url no inis ACBrNFSeXServicos.ini ACBrNFSeXServicosRTC.ini -> executar compila bat Pasta: ACBrNFSeX\Base\Provedores: ACBrNFSeXProviderManager.pas Alterado case para 2.04 Pasta Exemplos\ACBrDFe\Schemas\NFSe\VersaTecnologia\2.04 colar os arquivos xmldsig-core-schema20020212.xsd e nfse_v204.xsd AcbrNFSeX_3169901_2.04.zip
  16. Governo: Fabrica de dificuldade pra vender facilidade kkk tá osso mesmo, municipio parado aqui pedindo dados de comercio exterior para servico executado na cidade, enfim... CTé MG falhando, alíquota de CBS inválida, enfim, a segunda iria ser caos, bora tomar uma para aliviar. kkk
  17. uns 3 clientes reclamou que o pdf não abria, apos analisar via bloco de novas vi que era o retorno do http. Parece que não teve resposta 200 sei lá... Isso apareceu no cliente pq uso aquele comando de enviar o email, anexando o pdf
  18. é por isso que perguntei, na norma eu usei esses para testar, e no seu ali tá 0,5 ... achei que tinha algum percentual novo já sacou..?
  19. Isso ai mano, sigamos em 2026, muitas batalhas para quebrar/conquistar.
  20. vibs ate onde vi é soma dos dois ibs uf e ibs mun, mas cara, salva esses calculos no banco, para evitar erros de arredondamentos.
  21. Precisa amparar eles, que os dados são em fase beta, e se pestanejar pode ser que algum recolha o imposto..
  22. Te perguntar, esses percentuais é valido ou fictos? Aquele efetivo ali por exemplo...
  23. Então, ate onde sei, é esse link só https://portalsped.fazenda.mg.gov.br/spedmg/nfe/credenciamento/#:~:text=Para emissão da NF-e,/MG%2C conforme orientações acima.
  24. Mas se vc pensar para corrigir de fato, o for deve ser mantido, e deve ser alocado na funcao ali, ao inves do NFe, o vetor em TACBrNFe(FdmDanfe.DANFEClassOwner.ACBrNFe).NotasFiscais.Items[I] FdmDanfe.ImprimirDANFEPDF(TACBrNFe(FdmDanfe.DANFEClassOwner.ACBrNFe).NotasFiscais.Items[i]); Refaça o codigo e seu teste. E se entrar Nil ali vai dar erro, pq o ASsigned (nfe ) está no if, e voce usou ele no else..
×
×
  • 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...
The popup will be closed in 10 segundos...