Ver Mensaje Individual
  #11  
Antiguo 30-09-2024
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 4.214
Reputación: 24
newtron Va camino a la fama
Hola a tod@s.


Como he visto que alguno de vosotros pregunta cómo guardar el XML de la factura os pongo el código que he preparado (con ayuda de este mismo hilo). No tengo confirmado es si es correcto y todavía tengo dudas sobre cómo firmarlo pero esto crea el fichero.


Código Delphi [-]
  // Si es NO VERIFACTU Guardo y firmo el fichero XML
  if (RadioButton3.Checked) or (RadioButton5.Checked) then begin
    MyXML := TXMLDocument.Create(Application);
    parentXML := TXMLDocument.Create( Application );

    MyXML.Active := True;
    MyXML.Version:='1.0';
    MyXML.Encoding:='utf-8';

    parentXML.Active := True;
    parentXML.Version:='1.0';
    parentXML.Encoding:='utf-8';


    ARootNode := MyXML.CreateNode('RegistroAlta');
    AParentode := parentXML.CreateNode('RegistroAlta');

    MOPToSoapDomConvert := TOPtoSOAPDomConvert.Create(Application);

    MOPToSoapDomConvert.Encoding := 'utf-8';

    MOPToSoapDomConvert.Options :=
    [
    TSOAPConvertOption.soXXXXHdr,
    TSOAPConvertOption.soDontSendEmptyNodes,
    TSOAPConvertOption.soUTF8InHeader,
    TSOAPConvertOption.soSendUntyped,
    TSOAPConvertOption.soSendMultiRefObj,
    //TSOAPConvertOption.soSendMultiRefArray,
    TSOAPConvertOption.soTryAllSchema,
    TSOAPConvertOption.soRootRefNodesToBody,
    TSOAPConvertOption.soCacheMimeResponse,
    TSOAPConvertOption.soUTF8EncodeXML,
    TSOAPConvertOption.soSOAP12];
    newNode := Factura.RegistroAlta.ObjectToSOAP( ARootNode, AParentode, MOPToSoapDomConvert, 'RegistroAlta',
      Swdsl,'T',[ocoDontPrefixNode,ocoDontPutTypeAttr], RefId  );
    MyXML.DocumentElement := NewNode;
    // Crear un stream de cadena para almacenar el contenido XML
    StringStream := TStringStream.Create;
    try
      sAux:=CarpetaXML+FormatDateTime('YYYY',XSDateTime.AsDateTime)+'\';
      CreateDir(sAux);
      sAux:=sAux+FormatDateTime('MM',XSDateTime.AsDateTime)+'\';
      CreateDir(sAux);
      // Guardar el contenido XML en el stream
      MyXML.SaveToStream(StringStream);
      // Guardar el contenido del stream en un archivo
      sAux:=sAux+Factura.RegistroAlta.IDFactura.NumSerieFactura+'.XML';
      StringStream.SaveToFile(sAux);
    finally
      StringStream.Free;
      XSDateTime.Free;
    end;
  end;
__________________
Be water my friend.