ACBr revision 25950 (27/06/2022 10:42:53)
Retorno do Log na consulta do NFSe/Lote:
Método Executado: ConsultarNFSe
Parâmetros de Envio
Num. Ini. NFSe:
Num. Fin. NFSe:
Data Inicial : 27/06/2022
Data Final : 27/06/2022
Parâmetros de Retorno
Sucesso : True
Erro(s):
Código : X999
Mensagem: Erro de Conexão: '27/03:00' is not a valid integer value
Correção:
---------
NFS-e Numero....: 666
Cod. Verificacao: 746212305
Prestador.......:
Tomador.........:
---------------------------------------------------------------------------------
Trecho do XML de retorno da prefeitura de Fortaleza:
<DataEmissaoRps>2022-06-27-03:00</DataEmissaoRps>
<NaturezaOperacao>1</NaturezaOperacao>
<OptanteSimplesNacional>2</OptanteSimplesNacional>
<IncentivadorCultural>2</IncentivadorCultural>
<Competencia>2022-06-27-03:00</Competencia>
O problema esta na unidade ACBrUtil.DateTime, na função AjustarData.
A função ParseDataHora da mesma unit, faz a chamada substituindo "-" por "/"
xData := AjustarData(StringReplace(xData, '-', '/', [rfReplaceAll]));
Trecho da função AjustarData
function AjustarData(const DataStr: string): string;
var
Ano, Mes, Dia, i: Integer;
xData: string;
begin
xData := DataStr;
i := Pos('/', xData);
if i = 0 then
begin
Result := xData;
end
else
begin
if i = 5 then
begin
xData := copy(xData, 1, 10); //alterado para utilizar os 10 primeiros digitos
Ano := StrToInt(Copy(xData, 1, 4));
xData := Copy(xData, 6, Length(xData));
i := Pos('/', xData);
Mes := StrToInt(Copy(xData, 1, i-1));
Dia := StrToInt(Copy(xData, i+1, Length(xData)));
Result := FormatFloat('0000', Ano) + '/' +
FormatFloat('00', Mes) + '/' +
FormatFloat('00', Dia);
end
Como a posição da "/" = 5, o código pega o Ano = 2022, o mês = 06, porém o Dia ele retornava "27/03:00", retornando a exceção na primeira NFSe lida no arquivo.
Ao acrescentar a linha:
xData := copy(xData, 1, 10); //utilizar os 10 primeiros digitos
A leitura voltou ao normal, na consulta por NFSe e Lote.
bom dia, quando vc gerar um CFe sem identificar o CONSUMIDOR, não informe a tag <entrega>,
Ao tentar validar o seu xml, retorna o seguinte:
Submetendo ao XSD do layout 0.07 ...
'' viola a restrição minLength de '2'.
Falha da análise do elemento 'xLgr' com valor ''.
'' viola a restrição minLength de '1'.
Falha da análise do elemento 'nro' com valor ''.
'' viola a restrição minLength de '1'.
Falha da análise do elemento 'xBairro' com valor ''.
'' viola a restrição length de '2'.
Falha da análise do elemento 'UF' com valor ''.
ou seja, as tags referentes ao CLIENTE só devem ser preenchidas se o cliente for identificado, e os dados do endereço são obrigatórios.
Você poderia validar o xml antes de enviar ao equipamento.
Bom dia, eu sei que vc já deve ter encontrado a resposta, apenas para registro: Este código é encontrado no Anexo 3 – Tabela de credenciadoras de cartão de débito ou crédito, na página 292 do Manual 2.24.04 (Especificação Técnica de Requisitos).
e deve ser informado na hora de lançar os pagamentos:
if cdsPgto.FieldByName('tipo_pagamento').AsString = 'CARTAO' then
begin
case dmNFCe.cdsPgto.FieldByName('credito').AsInteger of
1 : cMP := mpCartaodeCredito;
2 : cMP := mpCartaodeDebito;
end;
{-- preencher com o código do anexo 3 (página 292 manual 2.24.4) ----}
cAdmC := dmNFCe.cdsPgto.FieldByName('codAdmC').AsString;
{--------------------------------------------------------------------}
end
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.