예제 #1
0
        /// <summary>
        /// Handles the Click event of the btEnvio control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btEnvio_Click(object sender, EventArgs e)
        {
            var html   = txtEditor.Value;
            var emails = "";

            try
            {
                #region Enviar E-Mail

                _db = new BasesDatos("");
                if (Session["IDENTEMI"] != null)
                {
                    _db = new BasesDatos(Session["IDENTEMI"] != null ? Session["IDENTEMI"].ToString() : "CORE");
                }
                //log = new Log((Session["IDENTEMI"] != null ? Session["IDENTEMI"].ToString() : "CORE"));
                _db.Conectar();
                _db.CrearComando("select servidorSMTP,puertoSMTP,sslSMTP,userSMTP,passSMTP,dirdocs,emailEnvio,emailNotificacion from Par_ParametrosSistema");
                var dr1 = _db.EjecutarConsulta();

                while (dr1.Read())
                {
                    _servidor        = dr1[0].ToString();
                    _puerto          = Convert.ToInt32(dr1[1].ToString());
                    _ssl             = Convert.ToBoolean(dr1[2].ToString());
                    _emailCredencial = dr1[3].ToString();
                    _passCredencial  = dr1[4].ToString();
                    _rutaDoc         = dr1[5].ToString();
                    _emailEnviar     = dr1[6].ToString();
                    emails           = dr1[7].ToString();
                }
                _db.Desconectar();
            }
            catch (Exception)
            {
            }
            emails = tbEmail.Text.Trim(',');
            var asunto  = "";
            var mensaje = "";

            _em = new SendMail();

            _em.ServidorSmtp(_servidor, _puerto, _ssl, _emailCredencial, _passCredencial);
            try
            {
                if (emails.Length > 0)
                {
                    //string emir = "";
                    _db.Conectar();
                    _db.CrearComando(@"SELECT nombre,mensaje FROM Cat_Mensajes where nombre='MensajePortalWebTicket' ");
                    var drSum = _db.EjecutarConsulta();
                    if (drSum.Read())
                    {
                        mensaje = drSum[1].ToString();
                    }
                    _db.Desconectar();

                    asunto = "Solicitud de Soporte con el ticket: " + tbCodTick.Text + " Empresa: " + lbNombreEmp.Text + "";

                    _em.LlenarEmail(_emailEnviar, emails.Trim(','), "", "", asunto, mensaje);
                    try
                    {
                        _em.ReemplazarVariable("@RfcEmisor", _rucEmi);
                        _em.ReemplazarVariable("@Emisor", _razonEmi);
                        _em.ReemplazarVariable("@Username", lbNbC.Text);
                        _em.ReemplazarVariable("@FechaTicket", lbFchC.Text);
                        _em.ReemplazarVariable("@CodigoTicket", tbCodTick.Text);
                        _em.EnviarEmail();

                        _em = new SendMail();
                        _em.ServidorSmtp(_servidor, _puerto, _ssl, _emailCredencial, _passCredencial);
                        asunto  = "Solicitud de Soporte con el ticket: " + tbCodTick.Text + " Empresa: " + lbNombreEmp.Text + "";
                        mensaje = html + "<br/><br/> Correo del cliente: " + emails.Trim(',');
                        var datos = _postedAttachment != null?PostedFileToBytes(_postedAttachment) : null;

                        if (datos != null)
                        {
                            _em.Adjuntar(datos, _postedAttachment.FileName);
                        }
                        _em.LlenarEmail(_emailEnviar, "*****@*****.**", "", "", asunto, mensaje);
                        _em.EnviarEmail();

                        _db.Conectar();
                        _db.CrearComandoProcedimiento("PA_insertar_ticket");
                        _db.AsignarParametroProcedimiento("@CodigoTicket", DbType.String, tbCodTick.Text);
                        _db.AsignarParametroProcedimiento("@Fecha", DbType.DateTime, Convert.ToDateTime(lbFchC.Text));
                        _db.AsignarParametroProcedimiento("@NombreEmpleado", DbType.String, lbNbC.Text);
                        _db.AsignarParametroProcedimiento("@Email", DbType.String, tbEmail.Text);
                        _db.AsignarParametroProcedimiento("@Descripcion", DbType.String, Asunto0.Text);
                        _db.AsignarParametroProcedimiento("@Mensaje", DbType.String, html);
                        _db.AsignarParametroProcedimiento("@Archivo", DbType.String, "");
                        _db.EjecutarConsulta1();
                        _db.Desconectar();

                        (Master as SiteMaster).MostrarAlerta(this, "Se ha enviado notificación al HelpDesk con número de ticket \"" + tbCodTick.Text + "\".<br/>Por favor esté al pendiente de su correo electrónico.", 2, null, "window.location.href = '" + ResolveClientUrl("~/configuracion/Herramientas/helpdesk.aspx") + "';");
                    }
                    catch (Exception ex)
                    {
                        (Master as SiteMaster).MostrarAlerta(this, "No se Envio correctamente el Ticket" + "<br /><br />" + ex.Message, 4, null);
                        return;
                    }

                    #endregion
                }
                else
                {
                    (Master as SiteMaster).MostrarAlerta(this, "Una direccion de correo para levantar el ticket", 4, null);
                    return;
                }
            }
            catch (Exception ex)
            {
                (Master as SiteMaster).MostrarAlerta(this, "No se Envio correctamente el Ticket" + "<br /><br />" + ex.Message, 4, null);
                return;
            }
        }
예제 #2
0
        /// <summary>
        /// Handles the Click event of the lbSubir control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        /// <exception cref="Exception">
        /// El comprobante no pudo generarse: El RFC receptor del comprobante (" + rfcReceptorXml + ") no se encuentra registrado en el portal.
        /// or
        /// El comprobante no pudo generarse: El RFC emisor del comprobante (" + rfcEmisorXml + ") es distinto al RFC del proveedor actual (" + rfcWeb + ")
        /// or
        /// No se pudo guardar el PDF en la ruta especificada. Causa: " + ex.Message
        /// or
        /// No existe ruta de PDF asignada para el comprobante.
        /// or
        /// El comprobante no pudo generarse: " + ws.ObtenerMensaje() + ". Para más información consulte la trama con ID " + id
        /// or
        /// El comprobante no pudo generarse: " + ws.ObtenerMensaje()
        /// </exception>
        /// <exception cref="System.Exception">No se pudo guardar el PDF en la ruta especificada. Causa:  + ex.Message
        /// or
        /// No existe ruta de PDF asignada para el comprobante.
        /// or
        /// El comprobante no pudo generarse:  + ws.ObtenerMensaje() + . Para más información consulte la trama con ID  + id
        /// or
        /// El comprobante no pudo generarse:  + ws.ObtenerMensaje()</exception>
        protected void lbSubir_Click(object sender, EventArgs e)
        {
            //[0] = XML
            //[1] = PDF
            //[2] = ORDEN_COMPRA
            //[3] = ADICIONALES
            var _recepBcc = "";

            if (Session["_files"] == null || ((Dictionary <int, object[]>)Session["_files"]).Count <= 0)
            {
                var msg    = "No se han cargado comprobantes";
                var metodo = MethodBase.GetCurrentMethod().Name;
                RegLog(msg, metodo);
                (Master as SiteMaster).MostrarAlerta(this, msg, 4, null);
            }
            else
            {
                var comprobantesFallidos = ((Dictionary <int, object[]>)Session["_files"]).Where(x => x.Value[0] == null || x.Value[1] == null).Select(x => x.Key).ToList();
                var msg = "";
                if (comprobantesFallidos.Count == 1)
                {
                    msg = "El comprobante " + comprobantesFallidos.FirstOrDefault() + " no tiene alguno de los archivos requeridos para ser procesado.";
                    var metodo = MethodBase.GetCurrentMethod().Name;
                    RegLog(msg, metodo);
                    (Master as SiteMaster).MostrarAlerta(this, msg, 4, null);
                }
                else if (comprobantesFallidos.Count > 1)
                {
                    var compFallidos = string.Join(", ", comprobantesFallidos.ToArray());
                    msg = "Los comprobantes " + compFallidos + " no tienen alguno de los archivos requeridos para ser procesados.";
                    var metodo = MethodBase.GetCurrentMethod().Name;
                    RegLog(msg, metodo);
                    (Master as SiteMaster).MostrarAlerta(this, msg, 4, null);
                }
                else
                {
                    var mensajeFallidos = new List <KeyValuePair <int, string> >();
                    foreach (var comprobante in ((Dictionary <int, object[]>)Session["_files"]))
                    {
                        try
                        {
                            var xml                 = PostedFileToBytes((HttpPostedFile)comprobante.Value[0]);
                            var pdf                 = (HttpPostedFile)comprobante.Value[1];
                            var orden               = (HttpPostedFile)comprobante.Value[2];
                            var bytesPdf            = PostedFileToBytes(pdf);
                            var bytesOrden          = PostedFileToBytes(orden);
                            var xDoc                = GetEntryXmlDoc(xml);
                            var archivosAdicionales = comprobante.Value[3];
                            var ws = new WsRecepcion {
                                Timeout = (1800 * 1000)
                            };
                            //var ddl = FindControl("ddlTipoProveedor" + comprobante.Key);
                            System.Web.UI.WebControls.DropDownList ddlTipoProveedor = null;
                            var idTipoProveedor = "";
                            var observaciones   = "";
                            try
                            {
                                var ddl = (System.Web.UI.WebControls.DropDownList)getControl(Page, "ddlTipoProveedor" + comprobante.Key);
                                idTipoProveedor = ddl.SelectedValue;
                            }
                            catch (Exception ex) { }
                            try
                            {
                                var tb = (System.Web.UI.WebControls.TextBox)getControl(Page, "tbObservaciones" + comprobante.Key);
                                observaciones = tb.Text;
                            }
                            catch (Exception ex) { }

                            DbDataReader dr;

                            var     idUserWs = _idUser;
                            XmlNode xmlNode;
                            if (Session["USERNAME"].ToString().StartsWith("PROVE", StringComparison.OrdinalIgnoreCase))
                            {
                                idUserWs = "999999999";
                                #region Validacion RFC Receptor

                                var rfcReceptorXml = "";
                                xmlNode = xDoc.GetElementsByTagName("cfdi:Receptor").Item(0);
                                if (xmlNode?.Attributes != null)
                                {
                                    try
                                    {
                                        rfcReceptorXml = xmlNode.Attributes["rfc"].Value;
                                    }
                                    catch { }
                                    if (string.IsNullOrEmpty(rfcReceptorXml))
                                    {
                                        try
                                        {
                                            rfcReceptorXml = xmlNode.Attributes["Rfc"].Value;
                                        }
                                        catch { }
                                    }
                                }

                                _dbe.Conectar();
                                _dbe.CrearComando("SELECT IDEEMI FROM Cat_Emisor WHERE RFCEMI = @rfc");
                                _dbe.AsignarParametroCadena("@rfc", rfcReceptorXml);
                                dr = _dbe.EjecutarConsulta();
                                if (!dr.Read())
                                {
                                    _dbe.Desconectar();
                                    throw new Exception("El comprobante no pudo generarse: El RFC receptor del comprobante (" + rfcReceptorXml + ") no se encuentra registrado en el portal.");
                                }
                                _dbe.Desconectar();

                                #endregion
                                #region Validacion RFC Proveedor

                                var rfcWeb = "";
                                _dbe.Conectar();
                                _dbe.CrearComando("SELECT id_Receptor FROM Cat_Proveedores WHERE userProveedor = @user");
                                _dbe.AsignarParametroCadena("@user", Session["USERNAME"].ToString());
                                dr = _dbe.EjecutarConsulta();
                                if (dr.Read())
                                {
                                    rfcWeb = dr["id_Receptor"].ToString();
                                    _dbe.Desconectar();
                                    var rfcEmisorXml = "";
                                    xmlNode = xDoc.GetElementsByTagName("cfdi:Emisor").Item(0);
                                    if (xmlNode?.Attributes != null)
                                    {
                                        try
                                        {
                                            rfcEmisorXml = xmlNode.Attributes["rfc"].Value;
                                        }
                                        catch { }
                                        if (string.IsNullOrEmpty(rfcEmisorXml))
                                        {
                                            try
                                            {
                                                rfcEmisorXml = xmlNode.Attributes["Rfc"].Value;
                                            }
                                            catch { }
                                        }
                                    }
                                    if (!rfcEmisorXml.Equals(rfcWeb, StringComparison.OrdinalIgnoreCase))
                                    {
                                        throw new Exception("El comprobante no pudo generarse: El RFC emisor del comprobante (" + rfcEmisorXml + ") es distinto al RFC del proveedor actual (" + rfcWeb + ")");
                                    }
                                }
                                _dbe.Desconectar();

                                #endregion
                            }
                            #region Validacion TipoDeComprobante != Pago

                            var tipoComprobante = "";
                            xmlNode = xDoc.DocumentElement;
                            if (xmlNode?.Attributes != null)
                            {
                                try
                                {
                                    tipoComprobante = xmlNode.Attributes["tipoDeComprobante"].Value;
                                }
                                catch { }
                                if (string.IsNullOrEmpty(tipoComprobante))
                                {
                                    try
                                    {
                                        tipoComprobante = xmlNode.Attributes["TipoDeComprobante"].Value;
                                    }
                                    catch { }
                                }
                            }
                            if (tipoComprobante.Equals("P", StringComparison.OrdinalIgnoreCase) || tipoComprobante.Equals("Pago", StringComparison.OrdinalIgnoreCase))
                            {
                                throw new Exception("El comprobante es de pago, para subir complementos utilice la página de Consulta de Documentos");
                            }

                            #endregion
                            var inner    = xDoc.OuterXml;
                            var base64   = ControlUtilities.EncodeStringToBase64(inner);
                            var response = ws.RecibeComprobante(base64, idUserWs, Session["IDENTEMI"].ToString(), true, pdf != null, bytesOrden != null ? Path.GetFileName(orden.FileName) : "");
                            if (response != null && response[0] != null && response[1] != null)
                            {
                                var id     = response[0].ToString();
                                var estado = false;
                                bool.TryParse(response[1].ToString(), out estado);
                                if (estado)
                                {
                                    var serverUrlPdf   = "";
                                    var serverUrlOrden = "";
                                    if (pdf != null || orden != null)
                                    {
                                        var sql = "";


                                        sql = "SELECT TOP 1 dirdocs, emailRecepBcc FROM Par_ParametrosSistema ORDER BY idparametro DESC";
                                        _dbe.Conectar();
                                        _dbe.CrearComando(sql);
                                        dr = _dbe.EjecutarConsulta();
                                        if (dr.Read())
                                        {
                                            var rootDir = dr["dirdocs"].ToString();
                                            _recepBcc = dr["emailRecepBcc"].ToString().Trim();
                                            rootDir   = rootDir.Replace("docus", "");
                                            _dbe.Desconectar();
                                            sql = @"SELECT PDFARC, ORDENARC FROM Dat_Archivos WHERE IDEFAC = @ID";
                                            _dbr.Conectar();
                                            _dbr.CrearComando(sql);
                                            _dbr.AsignarParametroCadena("@ID", id);
                                            dr = _dbr.EjecutarConsulta();
                                            if (dr.Read())
                                            {
                                                try
                                                {
                                                    serverUrlPdf   = rootDir + @"\" + (dr["PDFARC"].ToString());   //Server.MapPath("~/" + dr["PDFARC"]);
                                                    serverUrlOrden = rootDir + @"\" + (dr["ORDENARC"].ToString()); //Server.MapPath("~/" + dr["ORDENARC"]);
                                                    serverUrlPdf   = Path.GetFullPath(serverUrlPdf);
                                                    serverUrlOrden = Path.GetFullPath(serverUrlOrden);
                                                    try
                                                    {
                                                        File.WriteAllBytes(serverUrlPdf, bytesPdf);
                                                    }
                                                    catch
                                                    {
                                                        if (pdf != null)
                                                        {
                                                            pdf.SaveAs(serverUrlPdf);
                                                        }
                                                    }
                                                    try
                                                    {
                                                        File.WriteAllBytes(serverUrlOrden, bytesOrden);
                                                    }
                                                    catch
                                                    {
                                                        if (orden != null)
                                                        {
                                                            orden.SaveAs(serverUrlOrden);
                                                        }
                                                    }
                                                }
                                                catch (Exception ex)
                                                {
                                                    throw new Exception("No se pudo guardar el PDF en la ruta especificada. Causa: " + ex.Message);
                                                }
                                            }
                                            else
                                            {
                                                throw new Exception("No existe ruta de PDF asignada para el comprobante.");
                                            }
                                            _dbr.Desconectar();
                                        }
                                    }
                                    if (archivosAdicionales != null)
                                    {
                                        var listAdicionales = (List <object[]>)archivosAdicionales;
                                        _dbe.Conectar();
                                        _dbe.CrearComando(@"SELECT [dirdocs] FROM [Par_ParametrosSistema]");
                                        var _varSql = _dbe.Comando.CommandText;
                                        dr = _dbe.EjecutarConsulta();
                                        var _rutaDoc = "";

                                        while (dr.Read())
                                        {
                                            _rutaDoc = dr["dirdocs"].ToString().Trim();
                                        }
                                        _dbe.Desconectar();
                                        var rutaRuc    = "recepcion/" + (_rutaDoc.Contains(Session["IDENTEMI"].ToString()) ? Session["IDENTEMI"].ToString() : "") + "/";
                                        var subcarpeta = Control.Localization.Now.ToString("yyyy/MM/dd");
                                        subcarpeta = (_rutaDoc + rutaRuc + subcarpeta + "/ADICIONALES/" + id + "/").Replace("/", @"\");
                                        Directory.CreateDirectory(subcarpeta);
                                        foreach (var item in listAdicionales)
                                        {
                                            var bytes       = (byte[])item[0];
                                            var dataType    = (string)item[1];
                                            var fileName    = (string)item[2];
                                            var filePath    = subcarpeta + @"\" + fileName;
                                            var virtualPath = @"docus\" + filePath.Replace(_rutaDoc, "");
                                            File.WriteAllBytes(filePath, bytes);
                                            if (File.Exists(filePath))
                                            {
                                                _dbr.Conectar();
                                                _dbr.CrearComando("INSERT INTO Dat_ArchivosAdicionales (idComprobante,path,dataType) OUTPUT inserted.idArchivo VALUES (@idComprobante,@path,@dataType)");
                                                _dbr.AsignarParametroCadena("@idComprobante", id);
                                                _dbr.AsignarParametroCadena("@path", virtualPath);
                                                _dbr.AsignarParametroCadena("@dataType", dataType);
                                                dr = _dbr.EjecutarConsulta();
                                                if (dr.Read())
                                                {
                                                    // OK
                                                }
                                                _dbr.Desconectar();
                                            }
                                        }
                                    }
                                    if (response[2] != null)
                                    {
                                        try
                                        {
                                            var arrayMail = (object[])response[2];

                                            var _servidor        = (string)arrayMail[0];
                                            var _puerto          = (int)arrayMail[1];
                                            var _ssl             = (bool)arrayMail[2];
                                            var _emailCredencial = (string)arrayMail[3];
                                            var _passCredencial  = (string)arrayMail[4];
                                            var _emailEnviar     = (string)arrayMail[5];
                                            var emails           = (string)arrayMail[6];
                                            var _bcc             = (string)arrayMail[7];
                                            var _cc = (string)arrayMail[8]; // _recepBcc;
                                            if (string.IsNullOrEmpty(_cc))
                                            {
                                                _cc = _recepBcc;
                                            }
                                            else
                                            {
                                                _cc += "," + _recepBcc;
                                            }
                                            var asunto  = (string)arrayMail[9];
                                            var mensaje = (string)arrayMail[10];

                                            var _em = new SendMail();
                                            _em.ServidorSmtp(_servidor, _puerto, _ssl, _emailCredencial, _passCredencial);
                                            _em.LlenarEmail(_emailEnviar, emails, _bcc, _cc, asunto, mensaje);
                                            _em.Adjuntar(xml, ((HttpPostedFile)comprobante.Value[0]).FileName);
                                            _em.Adjuntar(bytesPdf, Path.GetFileName(serverUrlPdf));
                                            _em.Adjuntar(bytesOrden, Path.GetFileName(serverUrlOrden));
                                            if (archivosAdicionales != null)
                                            {
                                                var listAdicionales = (List <object[]>)archivosAdicionales;
                                                listAdicionales.ForEach(x => _em.Adjuntar((byte[])x[0], (string)x[2]));
                                            }
                                            _em.EnviarEmail();
                                        }
                                        catch (Exception ex)
                                        {
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(idTipoProveedor))
                                    {
                                        try
                                        {
                                            _dbr.Conectar();
                                            _dbr.CrearComando("UPDATE Dat_General SET id_TipoProveedor = @idProv WHERE idComprobante = @id");
                                            _dbr.AsignarParametroCadena("@idProv", idTipoProveedor);
                                            _dbr.AsignarParametroCadena("@id", id);
                                            _dbr.EjecutarConsulta1();
                                        }
                                        catch (Exception ex)
                                        {
                                        }
                                        finally
                                        {
                                            _dbr.Desconectar();
                                        }
                                    }
                                    try
                                    {
                                        _dbr.Conectar();
                                        _dbr.CrearComando("UPDATE Dat_General SET observaciones = @observaciones WHERE idComprobante = @id");
                                        _dbr.AsignarParametroCadena("@observaciones", observaciones);
                                        _dbr.AsignarParametroCadena("@id", id);
                                        _dbr.EjecutarConsulta1();
                                    }
                                    catch (Exception ex)
                                    {
                                    }
                                    finally
                                    {
                                        _dbr.Desconectar();
                                    }
                                }
                                else
                                {
                                    throw new Exception("El comprobante no pudo generarse: " + ws.ObtenerMensaje() + ". Para más información consulte la trama con ID " + id);
                                }
                            }
                            else
                            {
                                throw new Exception("El comprobante no pudo generarse: " + ws.ObtenerMensaje());
                            }
                        }
                        catch (Exception ex)
                        {
                            mensajeFallidos.Add(new KeyValuePair <int, string>(comprobante.Key, ex.Message));
                        }
                    }
                    if (mensajeFallidos.Count > 0)
                    {
                        var html = "<ul>";
                        foreach (var item in mensajeFallidos)
                        {
                            html += "<li><b>" + item.Key + "</b>: " + item.Value + "</li>";
                        }
                        html += "</ul>";
                        (Master as SiteMaster).MostrarAlerta(this, "Ocurrió uno o más errores al subir los comprobantes:<br>" + html, 4, null);
                    }
                    else
                    {
                        var urlDocus = "~/recepcion/Documentos.aspx";
                        (Master as SiteMaster).MostrarAlerta(this, "Todos los comprobantes se generaron con éxito", 2, null, "window.location.href = '" + ResolveClientUrl(urlDocus) + "';");
                    }
                    Session["_files"]   = new Dictionary <int, object[]>();
                    tbComprobantes.Text = "0";
                    CreateControls();
                }
            }
        }