en delphi 7 no existen los widestringlist que se utilizan en Facturacion.Administrador.pas
los componentes jedi tienen un componente jclWidestring que contempla el widestringlist que se puede utilizar, pero no maneja el encoding UTF8 como lo hacen versiones
de delphi superiores
el xml no se crea en utf8 con este componente, por lo que no se puede timbrar.
se tiene que cambiar el procedimiento para salvar el archivo de la siguiente manera
procedure TAdministradorFacturas.GuardarArchivo(const aComprobante: IComprobanteFiscal;
const aArchivoDestino: TFileName);
var
{$IF CompilerVersion >= 20}
Writer: TStreamWriter;
{$ELSE}
Writer: TWideStringList;
{$IFEND}
const
_ENCABEZADO_XML = '<?xml version="1.0" encoding="utf-8"?>' + #13#10;
begin
{$IF CompilerVersion >= 20}
Writer := TStreamWriter.Create(aArchivoDestino, false, TEncoding.UTF8);
{$ELSE}
Writer := TWideStringList.create;
{$IFEND}
try
// Forzamos a que siempre se incluya el encabezado del XML
{$IF CompilerVersion >= 20}
Writer.Write(_ENCABEZADO_XML + aComprobante.XML);
{$ELSE}
writer.Text := _ENCABEZADO_XML + aComprobante.XML;
Writer.SaveToFile(aArchivoDestino,[foAnsiFile]);
ConvertANSIFileToUTF8File(aArchivoDestino,aArchivoDestino); // leemos el archivo y lo codificamos a utf8
{$IFEND}
finally
Writer.Free();
end;
end;
no es la mejor forma de hacerlo, pero fue la mas rapida.
espero que alguien tenga una forma mas practica
El sistema timbra perfectamente con ecodex