예제 #1
0
 public EOuput PresupuestoCuota([System.Xml.Serialization.XmlElementAttribute("ZfmWsCuota")] ZfmWsCuota consulta)
 {
     try
     {
         return(_sources.PresupuestoCuota(consulta, unknownHeaders, UsuarioSession));
     }
     catch (Exception ex)
     {
         throw _sources.HandleError(ex);
     }
 }
예제 #2
0
        public EOuput PresupuestoCuota(ZfmWsCuota consulta, SoapUnknownHeader[] unknownHeaders, User UsuarioSession)
        {
            #region Configuracion del envio de Mail
            string mailDestinatarios = ConfigurationManager.AppSettings["Emails"];
            string mailMensaje       = string.Empty;
            bool   mailError         = false;
            #endregion

            bool   requestError = false;
            string request      = string.Empty;
            string requestXml   = string.Empty;

            log.Debug("Entra " + ServiceLogName);

            try
            {
                #region Request to XML
                if (consulta != null)
                {
                    try
                    {
                        request    = ((XmlDocument)Functions.GenericToXmlDocument(consulta)).InnerXml;
                        requestXml = Functions.TransforXml(request);
                    }
                    catch (Exception ex)
                    {
                        log.Error("Error transformando request Xml: " + ex.Message);
                    }
                }
                else
                {
                    mailError    = true;
                    mailMensaje += "\n La solicitud recibida desde Economía se encuentra vacia, lo cual puede darse por las siguientes razones:" + "  " +
                                   "<br/> \n * No se ha enviado el objeto en el Body" +
                                   "<br/> \n * No se ha respetado la estructura del objeto" +
                                   "<br/> \n * No se ha enviado el objeto con el Namespace correspondiente" +
                                   "<br/> \n * No se han enviado los objetos con los prefijos correspondientes a causa de envio incorrecto o no envio del Namespace" +
                                   "<br/> \n";
                }
                #endregion

                #region Director Credenciales
                try
                {
                    if (!UsuarioSession.HasToken)
                    {
                        UsuarioSession = new UserLogged().GetTokenFromHeader(unknownHeaders, "token");
                    }

                    if (UsuarioSession != null &&
                        !string.IsNullOrEmpty(UsuarioSession.Entity) && UsuarioSession.Entity.Length > 0 &&
                        !string.IsNullOrEmpty(UsuarioSession.IP) && UsuarioSession.IP.Length > 0)
                    {
                        log.Info(ServiceLogName + " - Usuario CUIT: " + UsuarioSession.Entity + " IP: " + UsuarioSession.IP);
                    }
                    else
                    {
                        throw new Exception("Ocurrio un error al obtener las credenciales");
                    }
                }
                catch (Exception ex)
                {
                    log.Error("Error Director: " + ex.Message);
                }
                #endregion

                service.ZfmWsCuota ocuota = new service.ZfmWsCuota();

                //Asignacion CUIL e IP
                ocuota.ICuilUser = UsuarioSession.Entity;
                ocuota.IIpUser   = UsuarioSession.IP;

                #region Validacion Cabecera
                if (consulta != null && consulta.ICabecera != null)
                {
                    var validadorCabecera = new validadorLongitud <ICabecera>();

                    var erroresCabecera = validadorCabecera.validarLongitud(consulta.ICabecera);

                    log.Debug("Invoco --> validar longuitud ICabecera: " + consulta.ICabecera.ToString());

                    if (erroresCabecera.Count > 0)
                    {
                        mailError    = true;
                        mailMensaje += "\n Se produjo un error al recibir información desde Economía:" + "  ";
                        foreach (var item in erroresCabecera)
                        {
                            mailMensaje += "<br/> \n Se ha registrado un error en la longuitud del objeto Cabecera en el campo " +
                                           item.Nombre + " donde su longitud es " + item.Longitud + " y tendria que ser: " + item.LongitudEsperada;
                        }

                        log.ErrorFormat("Errores: " + mailMensaje);
                    }
                    else
                    {
                        ocuota.ICabecera                       = new service.ZdsCuotaCabecera();
                        ocuota.ICabecera.Fechaenvio            = consulta.ICabecera.Fechaenvio;
                        ocuota.ICabecera.Tipocomprobante       = consulta.ICabecera.Tipocomprobante;
                        ocuota.ICabecera.Ejercicio             = consulta.ICabecera.Ejercicio;
                        ocuota.ICabecera.Numerocomprobante     = consulta.ICabecera.Numerocomprobante;
                        ocuota.ICabecera.Periodo               = consulta.ICabecera.Periodo;
                        ocuota.ICabecera.Entidademisora        = consulta.ICabecera.Entidademisora;
                        ocuota.ICabecera.Entidademisora        = consulta.ICabecera.Entidademisora;
                        ocuota.ICabecera.Estado                = consulta.ICabecera.Estado;
                        ocuota.ICabecera.Fechaaplicacion       = consulta.ICabecera.Fechaaplicacion;
                        ocuota.ICabecera.Ejercicioactoadm      = consulta.ICabecera.Ejercicioactoadm;
                        ocuota.ICabecera.Numeroactoadm         = consulta.ICabecera.Numeroactoadm;
                        ocuota.ICabecera.Tipoactoadm           = consulta.ICabecera.Tipoactoadm;
                        ocuota.ICabecera.Fechaactoadm          = consulta.ICabecera.Fechaactoadm;
                        ocuota.ICabecera.Codigoconcepto        = consulta.ICabecera.Codigoconcepto;
                        ocuota.ICabecera.Descripcionconcepto   = consulta.ICabecera.Descripcionconcepto;
                        ocuota.ICabecera.Identificaciontramite = consulta.ICabecera.Identificaciontramite;
                    }
                }
                else
                {
                    mailError    = true;
                    mailMensaje += " <br/> \n  No se ha enviado el objeto ICabecera \n ";
                }
                #endregion

                #region Validacion Entradas Cuota
                if (consulta != null && consulta.ItEntradaCuota != null && consulta.ItEntradaCuota.Any())
                {
                    log.Debug("Invoco --> validar longuitud ItEntradaCuota: " + consulta.ItEntradaCuota.Count() + " Items");

                    var validadorEntraCredito = new validadorLongitud <IEntradaCuota>();

                    List <service.ZdsEntradasCuota> EntradasCuota = new List <service.ZdsEntradasCuota>();

                    foreach (var item in consulta.ItEntradaCuota)
                    {
                        var erroresEntradaCuota = validadorEntraCredito.validarLongitud(item);
                        //log.Debug("Invoco --> validar longuitud ITEntradaCuota: " + consulta.ItEntradaCuota.ToString());

                        if (erroresEntradaCuota.Count > 0)
                        {
                            mailError = true;
                            foreach (var item2 in erroresEntradaCuota)
                            {
                                mailMensaje += "<br/> \n Se ha registrado un error en la longuitud del objeto entrada cuota en el campo " +
                                               item2.Nombre + " donde su longuitud es " + item2.Longitud + " y tendria que ser: " + item2.LongitudEsperada;
                            }

                            log.ErrorFormat("Errores: " + mailMensaje);
                        }
                        else
                        {
                            var itemCuota = new service.ZdsEntradasCuota();
                            itemCuota.Sector                = item.Sector;
                            itemCuota.Subsector             = item.Subsector;
                            itemCuota.Caracter              = item.Caracter;
                            itemCuota.Jurisdiccion          = item.Jurisdiccion;
                            itemCuota.Subjurisdiccion       = item.Subjurisdiccion;
                            itemCuota.Entidad               = item.Entidad;
                            itemCuota.Saf                   = item.Saf;
                            itemCuota.Programa              = item.Programa;
                            itemCuota.Subprograma           = item.Subprograma;
                            itemCuota.Proyecto              = item.Proyecto;
                            itemCuota.Actividad             = item.Actividad;
                            itemCuota.Obra                  = item.Obra;
                            itemCuota.Inciso                = item.Inciso;
                            itemCuota.Principal             = item.Principal;
                            itemCuota.Parcial               = item.Parcial;
                            itemCuota.Subparcial            = item.Subparcial;
                            itemCuota.Procedencia           = item.Procedencia;
                            itemCuota.Fuente                = item.Fuente;
                            itemCuota.Compromisoinicial     = item.Compromisoinicial;
                            itemCuota.Compromisovigente     = item.Compromisovigente;
                            itemCuota.Compromisorestringido = item.Compromisorestringido;

                            itemCuota.Devengadoinicial1     = item.Devengadoinicial1;
                            itemCuota.Devengadovigente1     = item.Devengadovigente1;
                            itemCuota.Devengadorestringido1 = item.Devengadorestringido1;

                            itemCuota.Devengadoinicial2     = item.Devengadoinicial2;
                            itemCuota.Devengadovigente2     = item.Devengadovigente2;
                            itemCuota.Devengadorestringido2 = item.Devengadorestringido2;

                            itemCuota.Devengadoinicial3     = item.Devengadoinicial3;
                            itemCuota.Devengadovigente3     = item.Devengadovigente3;
                            itemCuota.Devengadorestringido3 = item.Devengadorestringido3;

                            itemCuota.Devengado1comprobante = item.Devengado1comprobante;
                            itemCuota.Devengado2comprobante = item.Devengado2comprobante;
                            itemCuota.Devengado3comprobante = item.Devengado3comprobante;

                            itemCuota.Compromisocomprobante = item.Compromisocomprobante;

                            EntradasCuota.Add(itemCuota);
                        }

                        if (!string.IsNullOrEmpty(item.Compromisoinicial) && item.Compromisoinicial.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Compromisoinicial" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Compromisovigente) && item.Compromisovigente.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Compromisovigente" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Compromisorestringido) && item.Compromisorestringido.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Compromisorestringido" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadoinicial1) && item.Devengadoinicial1.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadoinicial1" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadovigente1) && item.Devengadovigente1.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadovigente1" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadorestringido1) && item.Devengadorestringido1.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadorestringido1" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadoinicial2) && item.Devengadoinicial2.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadoinicial2" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadovigente2) && item.Devengadovigente2.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadovigente2" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadorestringido2) && item.Devengadorestringido2.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadorestringido2" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadoinicial3) && item.Devengadoinicial3.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadoinicial3" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadovigente3) && item.Devengadovigente3.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadovigente3" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengadorestringido3) && item.Devengadorestringido3.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengadorestringido3" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengado1comprobante) && item.Devengado1comprobante.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengado1comprobante" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengado2comprobante) && item.Devengado2comprobante.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengado2comprobante" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }

                        if (!string.IsNullOrEmpty(item.Devengado3comprobante) && item.Devengado3comprobante.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Devengado3comprobante" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }
                        if (!string.IsNullOrEmpty(item.Compromisocomprobante) && item.Compromisocomprobante.Contains(","))
                        {
                            mailError    = true;
                            mailMensaje += "<br/> \n Se ha registrado un error en el objeto entrada cuota en el campo " + " " +
                                           "Compromisocomprobante" + " contiene " + " " + "coma(,)" + " " + " en lugar de " + "punto(.)";
                        }
                    }

                    if (EntradasCuota != null && EntradasCuota.Count > 0)
                    {
                        ocuota.ItEntradaCuota = EntradasCuota.ToArray();
                    }
                }
                else
                {
                    //mailError = true;
                    //mailMensaje += " <br/> \n  No se ha enviado el objeto ITEntradaCuota \n ";
                }

                #endregion

                #region Envio mail con errores o hago la llamada a SAP
                //Envio de mail de errores
                if (mailError)
                {
                    throw new Exception(mailMensaje);
                }
                else
                {
                    using (var scope = new OperationContextScope(_service.InnerChannel))
                    {
                        string headerLanguage = ConfigurationManager.AppSettings["ZWS_CUOTALanguage"];

                        if (!string.IsNullOrEmpty(headerLanguage))
                        {
                            HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty();
                            requestMessage.Headers["Accept-Language"] = headerLanguage;
                            OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage;
                        }

                        //sobreescribimos la URL
                        _service.Endpoint.Address = new EndpointAddress(ConfigurationManager.AppSettings["ZWS_CUOTAService"]);

                        service.ZfmWsCuotaResponse oRespuesta = new service.ZfmWsCuotaResponse();

                        try
                        {
                            oRespuesta = _service.ZfmWsCuota(ocuota);

                            if (!oRespuesta.EOutput.Message.Equals("OK", StringComparison.InvariantCultureIgnoreCase))
                            {
                                throw new Exception("Error intente nuevamente invocar al servicio");
                            }
                        }
                        catch (Exception ex)
                        {
                            mailError    = true;
                            mailMensaje += ex.Message;
                            requestError = true;
                        }

                        log.Debug("Invoco --> Envio: ICabecera " + (ocuota.ICabecera != null ? ocuota.ICabecera.ToString() : "No enviado"));
                        log.Debug("Invoco --> Envio: ItEntradaCuota " + (ocuota.ItEntradaCuota != null && ocuota.ItEntradaCuota.Any() ? (ocuota.ItEntradaCuota.Count() + " Items") : "No enviado"));
                        //log.Debug("Request  :" + ((XmlDocument)Functions.GenericToXmlDocument(ocuota)).InnerXml);//ASOSA REQUEST OBJECT LOG

                        //log.Debug("Response :" + ((XmlDocument)Functions.GenericToXmlDocument(oRespuesta)).InnerXml);//ASOSA RESPONSE OBJECT LOG
                        log.Debug("PresupuestoCuota ok");
                    }
                }
                #endregion

                if (mailError)
                {
                    throw new Exception(mailMensaje);
                }
            }
            catch (Exception err)
            {
                log.Error("Error al invocar el servicio SAP: Presupuesto Cuota " + Environment.NewLine + err.Message + Environment.NewLine + err.StackTrace.ToString());

                #region Armado y envio del mail
                mailMensaje = "<br/> \n "
                              + "<br/> \n Error al invocar el servicio SAP: Presupuesto Cuota"
                              + "<br/> \n"
                              + err.Message
                              + "<br/> \n"
                              + "<br/> \n Datos del solicitante de Economia: "
                              + "<br/> \n CUIT: " + (UsuarioSession.Entity ?? "No Identificado") + " - IP: " + (UsuarioSession.IP ?? "No Identificado")
                              + "<br/> \n "
                              + "<br/> \n Datos enviados por Economia  :"
                              + "<br/> \n "
                              + "<br/><div style='width:400px'><textarea rows='20' cols='40' style='border:none;'>" + requestXml + "</textarea></div>";

                enviarMail(mailMensaje, mailDestinatarios, "Error Servicio SAP-ESIDIF: Presupuesto Cuota");
                #endregion
            }

            if (requestError)
            {
                throw new Exception("Error intente nuevamente");
            }
            return(respuesta);
        }