32 Replies Latest reply on Apr 15, 2009 4:27 AM by Dani R.

    SOAP Response

      Hi,

      Have sucessfully made the SOAP webservice call from PDF to my server.

      But I could not read the response from the server in ADOBE JS...

      var response = SOAP.request(
      {
      cURL: cURL,
      oRequest: { "http://services.test.com/message:Message": {Message : CNAMessage}},
      cAction: "http://services.test.com/Service/RouterInvocation",
      oAuthenticate: myAuthentication,
      cResponseStyle: SOAPMessageStyle.Message
      });
      var value = response[0].soapValue[0].soapValue;
      console.println("value = " + value);

      In my console - response[0] has no properties - This is the message I am getting...

      Please help me to read my response...

      Or Is there any wrong in my script?.

      Need help
        • 1. Re: SOAP Response
          Patrick Leckey Level 3
          Have you tried just iterating through response to see what it contains at all?
          • 2. Re: SOAP Response
            Level 1
            How to do that?. please give me the sample code.
            • 3. Re: SOAP Response
              Patrick Leckey Level 3
              If you're not sure how to iterate through JavaScript objects, you may want to consult a basic JavaScript reference. It is in no way specific to Acrobat, you can do it the same way with absolutely any JavaScript object.
              • 4. Re: SOAP Response
                Level 1
                OK. I got the script from the manual as you suggested..

                I was trying the below loop...but it did not run ... after placeing this script, it could not make SOAP connection...

                Please help me to explore the response object...

                var nChildren = response.length;
                for (var iChild = 0; iChild < nChildren; i++) {

                xfa.host.messageBox("After SOAP.request...XML: CNAMessage" + iChild )
                );
                • 5. Re: SOAP Response
                  Patrick Leckey Level 3
                  Have you done the most basic of JavaScript checks, like seeing what a typeof on the response object returns?
                  • 6. Re: SOAP Response
                    Level 1
                    Yes. I tried ..plz refer the below one..but still it says response[0] has no properties....

                    if (typeof response == "undefined")
                    xfa.host.messageBox("Inside IF");
                    else{
                    xfa.host.messageBox("Inside else");
                    if (typeof response == "object"){
                    xfa.host.messageBox("Inside object IF");
                    for ( var o in response ) {
                    var f = response[0].FirstName;
                    xfa.host.messageBox("Inside For" + f);
                    }
                    }
                    }
                    • 7. Re: SOAP Response
                      Patrick Leckey Level 3
                      > Yes. I tried

                      And what did it return?

                      > for ( var o in response ) {
                      > var f = response[0].FirstName;
                      > xfa.host.messageBox("Inside For" + f);
                      > }

                      I don't see the purpose of this code. Why are you using a for..in when you are statically calling a specific array element?
                      • 8. Re: SOAP Response
                        Level 1
                        It returns response[0] has no properties...
                        • 9. Re: SOAP Response
                          Patrick Leckey Level 3
                          "has no properties" is not a value that typeof will return. That is not possible.
                          • 10. Re: SOAP Response
                            Level 1
                            If I print the response as it - Im getting [object Aggregate]
                            • 11. Re: SOAP Response
                              Patrick Leckey Level 3
                              What return value are you getting when doing a typeof on your response variable?
                              • 12. Re: SOAP Response
                                Level 1
                                The typeof(response) returns as object
                                • 13. Re: SOAP Response
                                  Patrick Leckey Level 3
                                  Currently you have only been treating it as an array. Have you iterated through it as a normal object?
                                  • 14. Re: SOAP Response
                                    Level 1
                                    How to do that...if you have any script tell me....
                                    • 15. Re: SOAP Response
                                      Level 1
                                      Please can u help me on this...I could not find the script which ur talking...If you know please send it to me...this is really critical in my work...
                                      • 16. Re: SOAP Response
                                        Patrick Leckey Level 3
                                        The people on these forums volunteer their time to answer community questions for free. If you are on a deadline and have critical work due on short notice, as you seem to, call Adobe and log a Developer Support case.
                                        • 17. Re: SOAP Response
                                          To Saravanan:

                                          You can access the return value of the web method be using the following code: response[0].soapValue[0].soapValue;

                                          Probably the error is in the script it self (or the web service isn't document literal)

                                          To PDL:
                                          Either be a competent jerk or a lovable fool, not a fool and a jerk.
                                          • 18. Re: SOAP Response
                                            Patrick Leckey Level 3
                                            > response[0].soapValue[0].soapValue

                                            This will only work if you have a single namespace declared and then a single operation in that namespace. Definitely not suitable for production environments.

                                            Accessing the results by literal namespace and operation is documented in the JavaScript API Reference with an example. If these cannot be referenced on return it is because the SOAP message was not constructed properly, the web service can be document literal or RPC and still return valid namespaces in the response message.
                                            • 19. Re: SOAP Response
                                              Level 1
                                              And wouldn't it be easier if you add posted that previously instead of making snarky remarks?

                                              Anyway, if he was more than 1 ns e can iterate through them, but seeing that he has / had a problem accessing the return value in the first place i would say its a good way to start.

                                              Also, the odds of the Soap response not being constructed properly are slim (unless of course he builds the soap response manually, but theres no real reason to do that).

                                              Of course he could sniff (ex: Wireshark) the soap package to confirm if the response is well constructed.

                                              The documentation provided by Adobe is ill conceived at best and their response times are abysmal.
                                              Adobe has great aplications but no clue on how to run a enterprise support.
                                              • 20. Re: SOAP Response
                                                Patrick Leckey Level 3
                                                > And wouldn't it be easier if you add posted that previously

                                                No.

                                                > Of course he could sniff (ex: Wireshark) the soap package to confirm if the response is well constructed.

                                                Why would he need to do that? Just set SOAP.wireDump to true and it will output everything to the JavaScript console, request and response.

                                                > Also, the odds of the Soap response not being constructed properly are slim (unless of course he builds the soap response manually, but there's no real reason to do that).

                                                He's building the request manually for a reason he hasn't explained, if you read through the entire thread. Why would you assume he's not building the response manually?

                                                I also never said that the response was not being constructed properly. After asking several times (there are 3 threads from him on the same issue, you should read the others to get the full back story) he has still not posted much in terms of how he is actually constructing the SOAP request message or done any troubleshooting on the request itself. This depends entirely on whether he's using SOAP.connect or SOAP.request to send his webservice request. If he's using SOAP.request and hasn't read the documentation (as ill conceived as it may be to hide it in the API Reference under the "SOAP" objects "request" method) and hasn't read about the soapQName property in request objects, it is very likely that he is activating the webservice with empty parameters (unless he's declaring the namespace literally in each variable declaration). This would result in an empty response object, which from what I can piece together is what hes getting.

                                                > but no clue on how to run a enterprise support.

                                                Not even the least bit true in my experience.
                                                • 21. Re: SOAP Response
                                                  I have had the same error. i have done a WS using Eclipse and this is the xml<br /><br /><?xml version="1.0"?><br /><SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Body><prueba SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><value xsi:type="xsd:string">bla</value><br /></prueba><br /></SOAP-ENV:Body><br /></SOAP-ENV:Envelope><br /><br /><?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><pruebaResponse xmlns=""><ns1:pruebaReturn xmlns:ns1="http://wtp">Ha enviado el texto bla</ns1:pruebaReturn></pruebaResponse></soapenv:Body></soapenv:Envelope><br /><br />then, in javascript, I use this code to call to WS<br /><br />var mySOAPAction = "http://host/AxisWSTest/services/Converter?wsdl";<br /><br />var response = SOAP.request ({<br />cURL: "http://host/AxisWSTest/services/Converter?wsdl",<br />oRequest: echoStringRequest,<br />cAction: mySOAPAction<br />});<br /><br />and this for get the response<br /><br />var result = response[0].soapValue[0].soapValue; <br /><br />but I have this error TypeError: response[0] has no properties and if i do xfa.host.messageBox(""+response.length), i see an "undefined" message.<br /><br />Someone could help or have an idea? thanks in advance<br /><br />Daniel
                                                  • 22. Re: SOAP Response
                                                    Patrick Leckey Level 3
                                                    Your cAction parameter should not be pointing to the WSDL, it should be the name of the SOAP action your are calling.
                                                    • 23. Re: SOAP Response
                                                      Level 1
                                                      I forgot some code. This is the right code for the call to the WS

                                                      var valor = this.rawValue;
                                                      var echoStringRequest = {
                                                      prueba:{value:valor}
                                                      };

                                                      SOAP.wireDump = true;
                                                      var mySOAPAction = "http://172.26.121.118:8081/AxisWSTest/services/Converter";
                                                      var response = SOAP.request ({
                                                      cURL: "http://172.26.121.118:8081/AxisWSTest/services/Converter?wsdl",
                                                      oRequest: echoStringRequest,
                                                      cAction: mySOAPAction,
                                                      cResponseStyle: SOAPMessageStyle.Message
                                                      });

                                                      I have changed my cAction parameter and I receive the same xml with the right response but I have the same error when I try to get that response:

                                                      response[0] has no properties
                                                      • 24. Re: SOAP Response
                                                        Level 1
                                                        I have been trying this

                                                        var result = response["http://host:8081/AxisWSTest/services/Converter:pruebaResponse"]["pruebaReturn"] ;

                                                        but when I do xfa.host.messageBox(""+result); I receive "undefined"

                                                        It seems like I can get the response but it's empty. Why if in the xml response is the right value?
                                                        • 25. Re: SOAP Response
                                                          Patrick Leckey Level 3
                                                          What do you get when you for..in loop through the response variable?
                                                          • 26. Re: SOAP Response
                                                            Level 1
                                                            i have done these test with this code
                                                            for ( var o in response ) {
                                                            var f = response[o];
                                                            xfa.host.messageBox("--> " + f);
                                                            }

                                                            with this, it shows "object Aggregate" and if I show o parameter instead f, it show this message "http://host:8081/AxisWSTest/services/Converter:pruebaResponse" so it seems it gets the right value for respons[0]

                                                            if I change f value for f = response[o][0]; i get "undefined" message (I get the same message with any index, [1], [20],["pruebaReturn"],...)

                                                            and finally, I have tried a last test. i have written this new code

                                                            for(var x in response[o]){
                                                            xfa.host.messageBox("Response value " + response[o][x]);
                                                            xfa.host.messageBox("X parameter " + x);
                                                            }

                                                            For the first message, it shows "undefined" and for the second message
                                                            it shows "0in" but I don't know what means it.
                                                            • 27. Re: SOAP Response
                                                              Patrick Leckey Level 3
                                                              Have you tried changing the ResponseStyle to XML instead of JS? How about using the (much simpler) RPC method instead of the Request/Response method?
                                                              • 28. Re: SOAP Response
                                                                Level 1
                                                                Hi PDL<br /><br />At first, sorry but I was ill so I couldn't to response this post.<br /><br />I have found my error. This is the xml that I receive<br /><br /><?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><pruebaResponse xmlns="http://host:8081/AxisWSTest/services/Converter"><ns1:pruebaReturn xmlns:ns1="http://wtp">Ha enviado el texto dani</ns1:pruebaReturn></pruebaResponse></soapenv:Body></soapenv:Envelope><br /><br />My error was in this line<br /><br />var result = response["http://host:8081/AxisWSTest/services/Converter:pruebaResponse"]["pruebaReturn"] ;<br /><br />because I had to call to ["http://wtp:pruebaReturn"] using the xmlns:ns1 tag instead of ["pruebaReturn"]. Like this:<br /><br />var result = response["http://host:8081/AxisWSTest/services/Converter:pruebaResponse"]["http://wtp:pru ebaReturn"];<br /><br />With this new code, it works right<br /><br />Thanks for your help, PDL. Cheers<br /><br />Dani
                                                                • 29. Re: SOAP Response
                                                                  Dani R.

                                                                  Hi

                                                                   

                                                                  I have a new problems with my WS and the call for it from my XDP. This is my code.

                                                                   

                                                                  function buscarPersonaPorDni(dni, TablaPersona){   
                                                                      SOAP.wireDump = true;
                                                                      var valor = dni.rawValue;   
                                                                     
                                                                      var ws = Page1.Part.webservice.rawValue;
                                                                      var metodo = "http://host:8081/AxisWSTest/services/Converter:pruebaBean"
                                                                      var  x = "http://host:9080/eTrazaServidor/services/ETrazaWebServiceBO";
                                                                     
                                                                      var echoStringRequest = {
                                                                          "http://host:9080/eTrazaServidor/services/ETrazaWebServiceBO":{inputInteger:valor}
                                                                      };

                                                                   

                                                                      var response = SOAP.request ({
                                                                          cURL: ws+"?wsdl",
                                                                          oRequest: echoStringRequest,
                                                                          cAction: ws,
                                                                          cResponseStyle: SOAPMessageStyle.Message
                                                                      });
                                                                     
                                                                      var result = response[ws+":pruebaBeanResponse"]["http://wtp:pruebaBeanReturn"];
                                                                      //xfa.host.messageBox(""+result["http://wtp:nombre"]);

                                                                   

                                                                      TablaPersona.nombre.rawValue = result["http://wtp:nombre"];
                                                                  }

                                                                   

                                                                  First of the problems is in echoStringRequest. I can't initialize echoStringRequest variable with another variable like this


                                                                  var echoStringRequest = {
                                                                           ws:{inputInteger:valor}
                                                                  };

                                                                   

                                                                  I have to put the right url of my WS between " " like in the example or soap.request doesn't work. I think it's a syntactic error but I don't know where is it.

                                                                   

                                                                  The second problem is more difficult. Is in echoSTringRequest too, in variable "valor". In this example, my WS receive a String value and return another String  (or a java object) but in the right WS it needs to receive a java object.This is the java object.

                                                                   

                                                                  public class BuscarDatosOrganizacionPorDniBOInput extends WSBOInput {

                                                                        /**

                                                                        * idTipoDato.

                                                                        */

                                                                        private java.lang.Integer idTipoDato;

                                                                        /**

                                                                         * documento.

                                                                         */

                                                                         private java.lang.String documento;

                                                                  }

                                                                   

                                                                  I have tried using this javascript code

                                                                   

                                                                  function BuscarDatosOrganizacionPorDniBOInput(documento){
                                                                      this.idTipoDato = 1;
                                                                      this. documento = documento;
                                                                  }

                                                                  and var valor = BuscarDatosOrganizacionPorDniBOInput(dni.rawValue);

                                                                   

                                                                  but the sender xml was nil.

                                                                   

                                                                  Another try was using

                                                                   

                                                                  var valor = {
                                                                          soapType: "xsd:int",
                                                                          soapValue: "1"

                                                                          soapType: "xsd:String",
                                                                           soapValue: dni.rawValue
                                                                      };

                                                                   

                                                                  getting this error "SOAPError: The soapValue atributte have to be a logical ID or a String" (I had to translate, the original message is in spanish)

                                                                   

                                                                  with

                                                                  var valor = {
                                                                           soapType: "xsd:int",
                                                                           soapValue: "1"
                                                                       };

                                                                   

                                                                  the error is this

                                                                   

                                                                  <?xml version="1.0"?>
                                                                  <SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Body><ns0:9080/eTrazaServidor/services/ETrazaWebServiceBO SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://172.26.121.133"><inputInteger xsi:type="xsd:int">1</inputInteger>
                                                                  </ns0:9080/eTrazaServidor/services/ETrazaWebServiceBO>
                                                                  </SOAP-ENV:Body>
                                                                  </SOAP-ENV:Envelope>

                                                                   

                                                                  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header/><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server.generalException </faultcode><faultstring><![CDATA[org.xml.sax.SAXParseException: The element "" should have one of this atributte specifications: ">" o "/>". Message being parsed: ]]></faultstring></soapenv:Fault></soapenv:Body></soapenv:Envelope>

                                                                   

                                                                  SOAPError: org.xml.sax.SAXParseException: The element "" should have one of this atributte specifications: ">" o "/>". Message being parsed:

                                                                   

                                                                  The question is, how can I do for call to my WS sending a object like the java object that it expect?

                                                                   

                                                                  Thanks in advance

                                                                   

                                                                   

                                                                  Dani R.

                                                                  • 30. Re: SOAP Response
                                                                    Dani R. Level 1

                                                                    I have changed my code for this new code

                                                                     

                                                                    SOAP.wireDump = true;
                                                                     
                                                                        var valor = {
                                                                            soapName: "idTipoDato",
                                                                            soapType: "xsd:int",
                                                                            soapValue: "1",
                                                                            soapName: "documento",
                                                                            soapType: "xsd:string",
                                                                            soapValue: "71010784D"
                                                                        };
                                                                        var ws = Page1.Part.webservice.rawValue;
                                                                        var metodo = "http://host:8081/AxisWSTest/services/Converter:pruebaBean"
                                                                        var  x = "http://host:9080/eTrazaServidor/services/ETrazaWebServiceBO";
                                                                       
                                                                        var echoStringRequest = {
                                                                            "http://host:9080/eTrazaServidor/services/ETrazaWebServiceBO:buscarDatosOrganizacionPorDniB O":{BuscarDatosOrganizacionPorDniBOInput:valor}
                                                                        };

                                                                     

                                                                        var mySOAPAction = "http://host:8081/AxisWSTest/services/Converter";
                                                                        var response = SOAP.request ({
                                                                            cURL: ws+"?wsdl",
                                                                            oRequest: echoStringRequest,
                                                                            cAction: ws,
                                                                            cResponseStyle: SOAPMessageStyle.Message
                                                                        });

                                                                     

                                                                    and now I have this error

                                                                     

                                                                    <?xml version="1.0"?>
                                                                    <SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Body><ns0:buscarDatosOrganizacionPorDniBO SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://host:9080/eTrazaServidor/services/ETrazaWebServiceBO"><documento xsi:type="xsd:string">71010784D</documento>
                                                                    </ns0:buscarDatosOrganizacionPorDniBO>
                                                                    </SOAP-ENV:Body>
                                                                    </SOAP-ENV:Envelope>

                                                                     

                                                                    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Header/><soapenv:Body><soapenv:Fault><faultcode>soapenv:Server.generalException </faultcode><faultstring><![CDATA[org.xml.sax.SAXException: Bad types (class java.lang.String -> class es.trafico.etraza.ws.traza.neg.opera.expedientes.BuscarDatosOrganizacionPorDniBOInput) Message being parsed: ]]></faultstring></soapenv:Fault></soapenv:Body></soapenv:Envelope>

                                                                     

                                                                    SOAPError: org.xml.sax.SAXException: Bad types (class java.lang.String -> class es.trafico.etraza.ws.traza.neg.opera.expedientes.BuscarDatosOrganizacionPorDniBOInput) Message being parsed:

                                                                     

                                                                    I don't know why in sender xml it has only the "documento" value instead of "valor" value. Any idea?

                                                                     

                                                                    Thanks in advance

                                                                     

                                                                    Dani R.

                                                                    • 31. Re: SOAP Response
                                                                      wildcathoya Level 1

                                                                      I think you need to do the following to read the response object:

                                                                       

                                                                      var response = Net.SOAP.request(
                                                                      {
                                                                      cURL: cURL,
                                                                      oRequest: { "http://services.test.com/Service/:RouterInvocation": {Message : CNAMessage}},
                                                                      cAction: "http://services.test.com/Service/RouterInvocation",
                                                                      oAuthenticate: myAuthentication,
                                                                      cResponseStyle: SOAPMessageStyle.Message
                                                                      });
                                                                      var value = response["http://services.test.com/Service/:RouterInvocationResponse"]["RouterInvocationResult"];

                                                                       

                                                                      Note the boldface stuff in the oRequest parameter and the response array, and also the suffixes ("Response" and "Result") and the colon preceding the oRequest literal and the first index of the response array.

                                                                       

                                                                      I'm assuming that the web service method you're calling is "RouterInvocation."  If the method name is "message," then just substitute "message" where I wrote "RouterInvocation."  In either case, the oRequest. cAction, and response array indices should be identical, except for the colon in the oRequest string, and the Response and Result suffixes in the indices.

                                                                       

                                                                      This works for me.

                                                                       

                                                                      Bill Erickson

                                                                      • 32. Re: SOAP Response
                                                                        Dani R. Level 1

                                                                        Hi Bill

                                                                         

                                                                        At first, thanks for your response

                                                                         

                                                                        I could had to resolve one of my problems. I had to change the declaration of "valor" variable. This is my new code

                                                                         

                                                                         

                                                                                   SOAP.wireDump = true;           

                                                                                   

                                                                        var  valor = {

                                                                                                 idTipoDato : tipoDato,

                                                                                                 documento : dni

                                                                             };

                                                                                    var ws =  Page1.Part.webservice.rawValue;

                                                                                               

                                                                                    var  echoStringRequest = {                                     "http://host:9080/eTrazaServidor/services/ETrazaWebServiceBO:buscarDatosOrganizacionPorDniB O":{BuscarDatosOrganizacionPorDniBOInput:valor}

                                                                                    };

                                                                         

                                                                                    var  response = SOAP.request ({

                                                                                                 cURL: ws+"?wsdl",

                                                                                                 oRequest: echoStringRequest,

                                                                                                 cAction: ws,

                                                                                                 cResponseStyle: SOAPMessageStyle.Message

                                                                                    });

                                                                         

                                                                        For getting the response, I had write this code

                                                                         

                                                                         

                                                                        var result =  response["urn:ws.integration.core.comun.etraza.trafico.es:buscarDatosOrganizacionPorDniBO Response"]["buscarDatosOrganizacionPorDniBOReturn"];

                                                                         

                                                                        Is similar to your code and it works ok too

                                                                         

                                                                        But I have still another problem with my echoSTringRequest variable. I want to do some like this

                                                                                  var method = ws+":buscarDatosOrganizacionPorDniBO";

                                                                                   var  echoStringRequest = {

                                                                                      method:{BuscarDatosOrganizacionPorDniBOInput:valor}

                                                                                    };

                                                                         

                                                                        but I have this error

                                                                         

                                                                        WSWS3277E: Error: Could not resolve to an operation.  The message contains an element named "method", but this does not match any operation of the target port

                                                                         

                                                                        Any idea about this? I think it's a WAS error instead of a sintaxis error in my xdp

                                                                         

                                                                        Thanks in advance

                                                                         

                                                                        Dani R.