none
Invocador RRS feed

  • Pregunta

  • Buenos dias,

    Estoy armando un invocador que en base a una estructura XML debe de generar una respuesta positiva o no en base al reply

    Mi idea es cargar los datos en un archivo de EXCEL el cual al ejecutar este invocador lea el reply y me de la respuesta que debo obtener.

    El XML es asi:

    <ConsultaCondicionesDTO>
    <CodigoISOPais>BR</CodigoISOPais>
    <CodigoProducto>R0</CodigoProducto>
    <CodigoTarifa>32752</CodigoTarifa>
    <Anual>false</Anual>
    <Edad>51</Edad>
    <Agencia>0</Agencia>
    <Sucursal>0</Sucursal>
    <Idioma>es</Idioma>
    <TipoModalidad>NA</TipoModalidad>
    </ConsultaCondicionesDTO>

    Yo quiero que si el CDATA esta en la respuesta se escriba en el archivo TXT un testo y si el CDATA no esta en la respuesta escriba otro texto.

    Alguien me puede orientar con este tema

    Gracias


    lunes, 24 de octubre de 2016 13:29

Todas las respuestas

  • hola

    >>el cual al ejecutar este invocador lea el reply y me de la respuesta que debo obtener

    que es el "reply" ? que es lo que invocas? un servicio web, una query a la db

    >>si el CDATA esta en la respuesta se escriba en el archivo TXT un testo

    que cdata ? este debes estar dentro de un tag el cual debes localizar

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 24 de octubre de 2016 14:50
  • Me paso a explicar mejor lo que estoy armando y el problema que se me presenta:

    Yo estoy usando SOAP con el siguiente XML:

    <![CDATA[
    <ConsultaCondicionesDTO>
    <CodigoISOPais>AR</CodigoISOPais>
    <CodigoProducto>ZN</CodigoProducto>
    <CodigoTarifa>0</CodigoTarifa>
    <Anual>true</Anual>
    <Edad>30</Edad>
    <Agencia>0</Agencia>
    <Sucursal>0</Sucursal>
    <Idioma>es</Idioma>
    <TipoModalidad>NA</TipoModalidad>
    </ConsultaCondicionesDTO>
    ]]>

    El cual cuando encuentra coincidencia de los datos solicitados me devuelve una linea con descirpciones de servicios.

    El resultado devuelve lo siguiente cuando es exitosa la consulta:

    <GetPrintedBenefitsResult><![CDATA[<?xml version="1.0" encoding="utf-8"?><GrupoClausulasImpresasDTO

    Yo lo que necesito es en base a la respuesta de esta consulta si es exitosa generar un archivo de texto en el cual se guarde un comentario tipo Datos Encontrados

    Cuando la respuesta no es exitosa se devuelve de la siguiente manera:

    <GetPrintedBenefitsResult>&lt;?xml version="1.0" encoding="utf-8"?>&lt;GrupoClausulasImpresasDTO

    En este caso tambien necesito generar en el mismo TXT un comentario que dia Datos No Encontrados.

    Esto lo quiero realizar a traves de la carga de un XLSX con los datos de cada consulta y con un boton ejecutar las consultas de manera automatica y de manera masiva y una vez que termine de consultar todos los datos del archivo genere el TXT detallando que encontro en cada linea.

    Para esto arme el siguiente codigo pero por algun motivo que no me doy cuenta no logro generar el texto en base a las respuesta del servicio:

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }


            //VARIABLES
            string xPaisIso = string.Empty;
            string xProducto = string.Empty;
            string xTarifa = string.Empty;
            string xAnual = string.Empty;


            private void button1_Click(object sender, EventArgs e)
            {
                label1.Text = "";
                label3.Text = "";
                OpenFileDialog openFileDialog1 = new OpenFileDialog();

                openFileDialog1.InitialDirectory = "c:\\";
                openFileDialog1.Filter = "EXCEL|*.xls;*.xlsx";
                openFileDialog1.FilterIndex = 2;
                openFileDialog1.RestoreDirectory = true;

                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    try
                    {

                        string tempPath = "";


                        tempPath = openFileDialog1.FileName; // prints path


                        button1.Visible = true;
                        //button2.Visible = true;

                        label1.Text = "PROCESANDO....";


                        Excel.Application xlApp;
                        Excel.Workbook xlWorkBook;
                        Excel.Worksheet xlWorkSheet;
                        Excel.Range range;

                        //string str
                        int rCnt = 0;
                        //int cCnt = 0;

                        string flag = string.Empty;

                        xlApp = new Excel.Application();

                        xlWorkBook = xlApp.Workbooks.Open(tempPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
                        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

                        range = xlWorkSheet.UsedRange;
                        int cantLineas = range.Rows.Count;
                        int cantFilas = 0;
                        int total_CCPP = 0;
                        int total_SINCCPP = 0;
                        string[] respuesta_CCPP = new string[range.Rows.Count];
                        string[] respuesta_SINCCPP = new string[range.Rows.Count];
                        string[] msn_CCPP = new string[range.Rows.Count];
                        string[] msn_SINCCPP = new string[range.Rows.Count];



                        for (rCnt = 2; rCnt <= cantLineas; rCnt++)
                        {
                            object endCode = (range.Cells[rCnt, 1] as Excel.Range).Value2;

                            if (endCode != null)
                            {
                                xPaisIso = endCode.ToString();
                                if (!xPaisIso.Equals(string.Empty))
                                {
                                    if (!endCode.ToString().Equals(string.Empty))
                                        cantFilas++;
                                }
                            }
                        }

                        for (rCnt = 2; rCnt <= cantFilas; rCnt++)
                        {
                            xPaisIso = Convert.ToString((range.Cells[rCnt, 1] as Excel.Range).Value2);
                            xProducto = Convert.ToString((range.Cells[rCnt, 2] as Excel.Range).Value2);
                            xTarifa = Convert.ToString((range.Cells[rCnt, 3] as Excel.Range).Value2);
                            xAnual = Convert.ToString((range.Cells[rCnt, 4] as Excel.Range).Value2);

                            
                            WindowsFormsApplication2.ServiceReference1.ServicioClausulasWSSoapClient ws = new WindowsFormsApplication2.ServiceReference1.ServicioClausulasWSSoapClient();


                            string sistema_pass = "";
                            string sistema_usuario = "";
                            string param_xml;

                            param_xml = "<ConsultaCondicionesDTO>";

                            param_xml += "<CodigoISOPais>" + xPaisIso + "</CodigoISOPais>";
                            param_xml += "<CodigoProducto>" + xProducto + "</CodigoProducto>";
                            param_xml += "<CodigoTarifa>" + xTarifa + "</CodigoTarifa>";
                            param_xml += "<Anual>" + xAnual + "</Anual>";
                            param_xml += "<Edad>30</Edad>";
                            param_xml += "<Agencia>0</Agencia>";
                            param_xml += "<Sucursal>0</Sucursal>";
                            param_xml += "<Idioma>es</Idioma>";
                            param_xml += "<TipoModalidad />";

                            param_xml += "</ConsultaCondicionesDTO>";

                            XmlDocument xml = new XmlDocument();


                            try
                            {

                                string retorno = ws.GetPrintedBenefits(param_xml, sistema_usuario, sistema_pass);


                                xml.LoadXml(retorno);
                                
                                XmlNodeList RespuestaCCPP = xml.SelectNodes("CDATA");
                                if (RespuestaCCPP.Count >= 0)
                                {
                                    foreach (XmlNode con_respuesta in RespuestaCCPP)
                                    {

                                        msn_CCPP[rCnt] = "CUENTA CON CONDICIONES";
                                    }
                                    total_CCPP++;
                                }
                            }
                            catch (Exception ex)
                            {
                                label1.Text = "FALLO" + ex.Message;
                            }
                            //label1.Text = "PROCESO DE EMISION TERMINADO";
                            try
                            {
                                XmlNodeList Respuesta_SINCCPP = xml.SelectNodes("CDATA");
                                if (Respuesta_SINCCPP.Count == 0)
                                {
                                    foreach (XmlNode sin_respuesta in Respuesta_SINCCPP)
                                    {
                                        msn_SINCCPP[rCnt] = "NO POSEE CCPP";

                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                label1.Text = "FALLO LA EMISION" + ex.Message;
                            }
                            //}
                            ////button2.Visible = true;


                            if (total_CCPP >= 0)
                            {
                                try
                                {
                                    StreamWriter registro = new StreamWriter("C:\\Planilla\\REPORTE-CCPP" + DateTime.Now.ToString(" " + "dd-MM-yyyy" + " " + "HHmmss") + ".txt", true, Encoding.UTF8);

                                    registro.WriteLine("                             >>> CCPP <<<");
                                    registro.WriteLine("+-----------------------------------------------------------------------------------------------------------------");
                                    for (int i = 2; i < (total_CCPP + 2); i++)
                                    {
                                        registro.WriteLine("| " + msn_CCPP[i]);
                                    }
                                    registro.WriteLine("| TOTAL DE CCPP = " + ((cantLineas - 2) - total_SINCCPP).ToString());
                                    registro.WriteLine("+-----------------------------------------------------------------------------------------------------------------");
                                    registro.Close();
                                }
                                catch (Exception ex1)
                                {
                                    label1.Text += "FALLA EN LA GENERACION DEL REPORTE DE ERRORES: " + ex1.Message;
                                }
                            }

                            if (total_SINCCPP >= 0)
                            {
                                try
                                {
                                    StreamWriter registroSINCCPP = new StreamWriter("C:\\Planilla\\REPORTE-CCPP" + DateTime.Now.ToString(" " + "dd-MM-yyyy" + " " + "HHmmss") + ".txt", true, Encoding.UTF8);

                                    registroSINCCPP.WriteLine("                             >>> SIN CCPP <<<");
                                    registroSINCCPP.WriteLine("+-----------------------------------------------------------------------------------------------------------------");
                                    for (int i = 2; i < (total_SINCCPP + 2); i++)
                                    {
                                        registroSINCCPP.WriteLine("| " + msn_SINCCPP[i]);
                                    }
                                    registroSINCCPP.WriteLine("| TOTAL SIN CCPP = " + total_SINCCPP);
                                    registroSINCCPP.WriteLine("+-----------------------------------------------------------------------------------------------------------------");
                                    registroSINCCPP.WriteLine(" ");
                                    registroSINCCPP.WriteLine("FECHA Y HORA:" + DateTime.Now.ToString());
                                   
                                    registroSINCCPP.Close();


                                }
                                finally
                                {
                                    label3.Text += "CONSULTE EL REPORTE!!!!";
                                }

                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                    }
                }
            }
        }

    }

    Espero que esto aclare un poco el panorama y que alguien me pueda dar una ayuda.

    Saludos

    martes, 25 de octubre de 2016 12:44