-
Total de ítens
903 -
Registro em
-
Última visita
-
Days Won
1
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Antonio Gomes postou
-
ACBR-8746 NFSeX Ubá MG 3169901 - VersaTecnologia
Antonio Gomes replied to Antonio Gomes's tópico in ACBrNFSe
nao é uba o nome da pasta, mas 3169901 e está errado no ini, pq esse 201 ja é passado -
ACBR-8746 NFSeX Ubá MG 3169901 - VersaTecnologia
Antonio Gomes replied to Antonio Gomes's tópico in ACBrNFSe
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 -
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.
-
ACBR-8746 NFSeX Ubá MG 3169901 - VersaTecnologia
Antonio Gomes replied to Antonio Gomes's tópico in ACBrNFSe
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 -
ACBR-8746 NFSeX Ubá MG 3169901 - VersaTecnologia
Antonio Gomes replied to Antonio Gomes's tópico in ACBrNFSe
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. -
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;
-
NFC-e Reforma tributária - XML sem os campos
Antonio Gomes replied to - Caveiraman -'s tópico in ACBrNFe
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.- 10 replies
-
- reformatributaria
- ibs
-
(e 2 mais)
Tags:
-
NFC-e Reforma tributária - XML sem os campos
Antonio Gomes replied to - Caveiraman -'s tópico in ACBrNFe
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- 10 replies
-
- reformatributaria
- ibs
-
(e 2 mais)
Tags:
-
se vc ver a fundo, é uma ST piorada né.
-
ACBRNFe - Erro no loadFromFile com XML com tags da reforma tributária.
Antonio Gomes replied to valdomirojr's tópico in ACBrNFe
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. -
ACBRNFe - Erro no loadFromFile com XML com tags da reforma tributária.
Antonio Gomes replied to valdomirojr's tópico in ACBrNFe
tem cara de errado, nao? pq esse tem um codigo só, pelo menos ate ontem -
Se recolher o imposto o estado só vai dizer amém kkk pagou pq quis kkk
-
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...
-
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.
-
@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
-
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
-
1150 Rejeição: Valor do IBS do Item (vIBS) difere do calculado
Antonio Gomes replied to edfransil's tópico in ACBrNFe
é 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..? -
Isso ai mano, sigamos em 2026, muitas batalhas para quebrar/conquistar.
-
vibs ate onde vi é soma dos dois ibs uf e ibs mun, mas cara, salva esses calculos no banco, para evitar erros de arredondamentos.
-
Precisa amparar eles, que os dados são em fase beta, e se pestanejar pode ser que algum recolha o imposto..
-
1150 Rejeição: Valor do IBS do Item (vIBS) difere do calculado
Antonio Gomes replied to edfransil's tópico in ACBrNFe
Te perguntar, esses percentuais é valido ou fictos? Aquele efetivo ali por exemplo... -
NFe - Reimpressão causando erro "Argument out of range"
Antonio Gomes replied to Douglas Colombo's tópico in ACBrNFe
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..
