Exemplo n.º 1
0
        public string guardarResultadoSAP(string resultadoSAP, string usuario, string negID)
        {
            try
            {
                string ArchivoXml     = resultadoSAP;
                string resultadoRCODE = "";

                //*****************************************************************
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(ArchivoXml);

                XmlNamespaceManager ns = new XmlNamespaceManager(xml.NameTable);
                ns.AddNamespace("soap-env", "http://schemas.xmlsoap.org/soap/envelope/");
                ns.AddNamespace("n0", "urn:sap-com:document:sap:rfc:functions");

                List <WS_RESULTADO> listaResultado = new List <WS_RESULTADO>();
                XmlNodeList         xnLista        = xml.SelectNodes("/soap-env:Envelope/soap-env:Body/n0:YCONSOLA_CARGA_WSResponse/IT_RESULTADO/item", ns);
                foreach (XmlNode item in xnLista)
                {
                    WS_RESULTADO datosResultado = new WS_RESULTADO
                    {
                        NEG_ID_CABECERA = Convert.ToDecimal(negID),
                        OK_CODE         = item["OK_CODE"].InnerText,
                        DESCRIPTION     = item["DESCRIPCION"].InnerText,
                        FECHA_RESPUESTA = DateTime.Now
                    };

                    XmlNodeList xnLista2 = xml.SelectNodes("/soap-env:Envelope/soap-env:Body/n0:YCONSOLA_CARGA_WSResponse", ns);
                    foreach (XmlNode item2 in xnLista2)
                    {
                        datosResultado.RCODE = item2["RCODE"].InnerText;
                        resultadoRCODE       = item2["RCODE"].InnerText;
                    }
                    listaResultado.Add(datosResultado);
                }
                //*****************************************************************

                //Instancia para guardar el resultado
                GestorDocumentalEnt data = new GestorDocumentalEnt();
                //Realizar el insert a la tabla de resultados.
                for (int i = 0; i < listaResultado.Count; i++)
                {
                    WS_RESULTADO dataResultado = new WS_RESULTADO
                    {
                        NEG_ID_CABECERA = listaResultado[i].NEG_ID_CABECERA,
                        RCODE           = listaResultado[i].RCODE,
                        OK_CODE         = listaResultado[i].OK_CODE,
                        DESCRIPTION     = listaResultado[i].DESCRIPTION,
                        FECHA_RESPUESTA = listaResultado[i].FECHA_RESPUESTA
                    };

                    data.AddToWS_RESULTADO(dataResultado);
                    data.SaveChanges();
                }

                WebServiceModel wsOp = new WebServiceModel();
                bool            resultadoValidacion = wsOp.validaAsignacionTareas(Convert.ToInt32(negID), 60);

                string resultadoFinal = "";
                switch (resultadoRCODE)
                {
                //Cuando es Cero(0), Significa que la factura ser guardo correctamente en SAP
                case "0":
                    if (resultadoValidacion)
                    {
                        wsOp.updateAsignacionTareas(1, Convert.ToInt32(negID), Convert.ToInt32(usuario), 60);
                        resultadoFinal = "La factura ha sido transmitida correctamente a SAP";
                    }
                    else
                    {
                        AsignacionTareas dataAsignacionOK = new AsignacionTareas
                        {
                            NegId           = Convert.ToDecimal(negID),
                            IdEtapa         = 60,
                            Usuario         = Convert.ToDecimal(usuario),
                            HoraInicio      = DateTime.Now,
                            HoraTerminacion = DateTime.Now,
                            IdEstado        = 30
                        };

                        data.AddToAsignacionTareas(dataAsignacionOK);
                        data.SaveChanges();

                        resultadoFinal = "La factura ha sido transmitida correctamente a SAP";
                    }
                    break;

                //Cuando el Noventa y Nueve(99), Significa que la factura no se guardo correctamente y arrojo errores.
                case "99":
                    if (resultadoValidacion)
                    {
                        wsOp.updateAsignacionTareas(2, Convert.ToInt32(negID), Convert.ToInt32(usuario), 60);
                        resultadoFinal = "La factura no ha sido transmitida correctamente a SAP";
                    }
                    else
                    {
                        AsignacionTareas dataAsignacionError = new AsignacionTareas
                        {
                            NegId           = Convert.ToDecimal(negID),
                            IdEtapa         = 60,
                            Usuario         = Convert.ToDecimal(usuario),
                            HoraInicio      = DateTime.Now,
                            HoraTerminacion = DateTime.Now,
                            IdEstado        = 141
                        };

                        data.AddToAsignacionTareas(dataAsignacionError);
                        data.SaveChanges();
                        resultadoFinal = "La factura no ha sido transmitida correctamente a SAP";
                    }
                    break;
                }

                return(resultadoFinal);
            }
            catch (Exception e)
            {
                LogRepository.registro("Error en TransmicionXMLController metodo guardarResultadoSAP " + e.Message + " stack trace " + e.StackTrace);
                throw e;
            }
        }
 /// <summary>
 /// Crea una nueve asignacion de tareas
 /// </summary>
 /// <param name="nueva"></param>
 public void Add(AsignacionTareas nueva)
 {
     basdat.AddToAsignacionTareas(nueva);
     basdat.SaveChanges();
 }