Ejemplo n.º 1
0
        private static void lfEmailQuienFactura(string sNombreDB, int iNumeroPersona, int iNumeroEmpresa, List<string> listaContactos, List<string> listaArchivos, string sArchivo, string sReceptorNombre, string sReceptorRFC, string sEmisorNombre, string sEmisorRFC, string sSerieFolio, string sTipoComprobante, string sTotal)
        {
            DataTable dt = new DataTable();

            string sParametros = string.Concat(sNombreDB, "|", iNumeroPersona, "|", iNumeroEmpresa, "|", (listaContactos.Count > 0 ? listaContactos[0] : ""), "|", sArchivo, "|", sReceptorNombre, "|", sReceptorRFC, "|", sEmisorNombre, "|", sEmisorRFC, "|", sSerieFolio, "|", sTipoComprobante, "|", sTotal);
            string sQuery = string.Concat("USE [" + sNombreDB + "]  SELECT ISNULL(Correo_Electronico,0) FROM Persona WHERE Numero = ",
                                          iNumeroPersona.ToString(), " AND Numero_Empresa = ", iNumeroEmpresa.ToString(), "");
            SQLConection context = new SQLConection();
            dt = context.ExecuteQuery(sQuery);
            if (dt != null)
            {
                if (dt.Rows[0][0].ToString() != "0")
                {
                    foreach (DataRow item in dt.Rows)
                        listaContactos.Add(item[0].ToString());
                    listaArchivos.Add(@sArchivo);
                    listaArchivos.Add(@sArchivo.Replace(".xml", ".pdf"));
                    gfEmailSend(sNombreDB, listaContactos, listaArchivos, iNumeroEmpresa, sReceptorNombre, sReceptorRFC, sEmisorNombre, sEmisorRFC, sSerieFolio, sTipoComprobante, sTotal);
                }
            }
            else
            {

                BitacoraController.gfLogFacturaRegistroError("EnvioAlterno", sNombreDB, sParametros);
                FacturaController.gfEmailSend("Facturación la persona " + iNumeroPersona + " Empresa " + iNumeroEmpresa + "No tiene email o contactos " + sParametros, FacturaController.listaContactosIncidenciaEmail, "Notificación de Facturación", listaArchivos);

            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Función que envia correos electronicos acorde al cliente y empresa
        /// </summary>
        /// <param name="iNumeroPersona"></param>
        /// <param name="iNumeroPersona"></param>
        /// <param name="iNumeroEmpresa"></param>
        /// <param name="sArchivo"></param>
        /// <param name="sAquien"></param>
        /// <param name="iNumeroFactura"></param>
        /// <param name="iTipoFacturaNotaCredito"></param>
        /// <param name="sReceptorNombre"></param>
        /// <param name="sReceptorRFC"></param>
        /// <param name="sEmisorNombre"></param>
        /// <param name="sEmisorRFC"></param>
        /// <param name="sSerieFolio"></param>
        /// <param name="sTipoComprobante"></param>
        /// <param name="sTotal"></param>
        /// <returns></returns>
        public static int gfDatosCorreoCliente(string sNombreDB, int iNumeroPersona, int iNumeroEmpresa, string sArchivo, string sAquien, int iNumeroFactura, int iTipoFacturaNotaCredito, string sReceptorNombre, string sReceptorRFC, string sEmisorNombre, string sEmisorRFC, string sSerieFolio, string sTipoComprobante, string sTotal)
        {
            List<string> listaContactos = new List<string>();
            List<string> listaArchivos = new List<string>();
            int iRespuesta = -1;
            DataTable dt = new DataTable();
            SQLConection context = new SQLConection();

            string sMensajeEmail = string.Empty;
            try
            {
                if (System.Text.RegularExpressions.Regex.IsMatch(sAquien, "CONTACTOS"))
                {
                    string sQuery = string.Empty;
                    if (iTipoFacturaNotaCredito == 0)
                    {
                        sQuery = string.Concat(" USE [" + sNombreDB + "]  SELECT P.CORREO_ELECTRONICO ",
                                           " FROM CONTACTO  AS C ",
                                           " JOIN PERSONA AS P ",
                                           " ON C.NUMERO_CONTACTO_PERSONA = P.NUMERO ",
                                           " WHERE C.ENVIO_MAIL = 1  ",
                                           " AND C.EMPRESA = ", iNumeroEmpresa.ToString(), " ",
                                           " AND C.NUMERO_CLIENTE IN ( SELECT NUMERO_CLIENTE FROM FACTURA  ",
                                           " WHERE NUMERO = ", iNumeroFactura.ToString(), " AND NUMERO_EMPRESA = ", iNumeroEmpresa.ToString(), ") ");
                    }
                    else
                    {
                        sQuery = string.Concat(" USE [" + sNombreDB + "]  SELECT P.CORREO_ELECTRONICO ",
                                               " FROM CONTACTO  AS C ",
                                               " JOIN PERSONA AS P  ",
                                               " ON C.NUMERO_CONTACTO_PERSONA = P.NUMERO  ",
                                               " WHERE C.ENVIO_MAIL = 1   ",
                                               " AND C.EMPRESA = ", iNumeroEmpresa.ToString(), " ",
                                               " AND C.NUMERO_CLIENTE IN ( SELECT NUMERO_CLIENTE FROM NOTA_CREDITO ",
                                               " WHERE NUMERO = ", iNumeroFactura.ToString(), "  ",
                                               " AND   NUMERO_EMPRESA = ", iNumeroEmpresa.ToString(), ") ");
                    }

                    dt = context.ExecuteQuery(sQuery);
                    listaArchivos.Add(@sArchivo);
                    listaArchivos.Add(@sArchivo.Replace(".xml", ".pdf"));

                    if (dt.Rows.Count >= 1)
                    {
                        foreach (DataRow item in dt.Rows)
                            listaContactos.Add(item[0].ToString());
                    }
                    else
                    {
                        listaContactos.Clear();
                        lfEmailQuienFactura(sNombreDB, iNumeroPersona, iNumeroEmpresa, listaContactos, listaArchivos, @sArchivo, sReceptorNombre, sReceptorRFC, sEmisorNombre, sEmisorRFC, sSerieFolio, sTipoComprobante, sTotal);
                    }

                    gfEmailSend(sNombreDB, listaContactos, listaArchivos, iNumeroEmpresa, sReceptorNombre, sReceptorRFC, sEmisorNombre, sEmisorRFC, sSerieFolio, sTipoComprobante, sTotal);

                    iRespuesta = 1;
                }
                else
                    lfEmailQuienFactura(sNombreDB, iNumeroPersona, iNumeroEmpresa, listaContactos, listaArchivos, @sArchivo, sReceptorNombre, sReceptorRFC, sEmisorNombre, sEmisorRFC, sSerieFolio, sTipoComprobante, sTotal);
            }
            catch (Exception ex)
            {
                FacturaController.gfEmailSend("gfDatosCorreoCliente |" + ex.Message + "BaseDatos:" + sNombreDB + "|NumeroEmpresa:" + iNumeroEmpresa + "|NumeroFactura:" + iNumeroFactura, FacturaController.listaContactosIncidenciaEmail, "INCIDENCIA " + ex.Message);
                iRespuesta = -1;
            }
            return iRespuesta;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="listaContactos"></param>
        /// <param name="listaAdjuntos"></param>
        /// <param name="iNumeroEmpresa"></param>
        /// <param name="sReceptorNombre"></param>
        /// <param name="sReceptorRFC"></param>
        /// <param name="sEmisorNombre"></param>
        /// <param name="sEmisorRFC"></param>
        /// <param name="sSerieFolio"></param>
        /// <param name="sTipoComprobante"></param>
        /// <param name="sTotal"></param>
        private static void gfEmailSend(string sNombreDB, List<string> listaContactos, List<string> listaAdjuntos, int iNumeroEmpresa, string sReceptorNombre, string sReceptorRFC, string sEmisorNombre, string sEmisorRFC, string sSerieFolio, string sTipoComprobante, string sTotal)
        {
            string strMsg = string.Empty;
            string sQuery = string.Empty;
            DataTable dt = new DataTable();
            try
            {
                sQuery = string.Concat(" USE [" + sNombreDB + "] SELECT Servidor,Puerto,Mail,Contraseña,Ssl",
                                       " FROM Empresa ",
                                       " WHERE Numero = " + iNumeroEmpresa.ToString() + "");
                SQLConection context = new SQLConection();
                dt = context.ExecuteQuery(sQuery);
                //Servidor
                var EmailloginInfo = new NetworkCredential(dt.Rows[0]["Mail"].ToString(),
                                                           dt.Rows[0]["Contraseña"].ToString());
                var Emailmsg = new System.Net.Mail.MailMessage();
                var EmailsmtpClient = new SmtpClient(dt.Rows[0]["Servidor"].ToString(),
                                                     int.Parse(dt.Rows[0]["Puerto"].ToString()));
                Emailmsg.From = new MailAddress(dt.Rows[0]["Mail"].ToString());

                foreach (string contacto in listaContactos)
                    Emailmsg.To.Add(new MailAddress(contacto));

                foreach (string adjunto in listaAdjuntos)
                {
                    Attachment aadjunto = new Attachment(@adjunto);
                    Emailmsg.Attachments.Add(@aadjunto);
                }
                Emailmsg.Subject = "Notificación de Facturación";
                Emailmsg.IsBodyHtml = true;

                if (dt.Rows[0]["Mail"].ToString().ToUpper().Trim() == "*****@*****.**")
                {
                    strMsg = string.Concat("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'><html><head><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'><title>KONEXUS </title></head><body><table cellpadding='0' cellspacing='0' border='0' style='font-size:12px; font-family: Arial; line-height: 17px;' width='600'><tr><td width='50%' style='background-color: #874340; padding:10px;'><span style='color: #fff; font-size: 15px; font-weight: bold;'>",
                                                         sReceptorNombre, "</span><br/><span style='color:#fff' >", sReceptorRFC, "</span></td><td align='right' style='background-color:#f1f1f1; padding: 10px; font-size: 15px; font-weight: ",
                                                         "bold; color: #000'>KONEXUS</td></tr><tr><td colspan='2' height='5' style='line-height: 5px; font-size: 5px;'>&nbsp;</td></tr><tr><td colspan='2' style='padding: 10px; background-color: #ededed'> Le notificamos que ", sEmisorNombre, " (", sEmisorRFC, ") emitio para usted un Comprobante Fiscal Digital por Internet (CFDI) con las siguientes caracteristicas <br/> <br/> &bull;Serie y Folio: ", sSerieFolio, "<br/> &bull;",
                                                         "Fecha de Emision: ", DateTime.Now.ToShortDateString(), "<br/> &bull;Tipo de Comprobante: ", sTipoComprobante, " <br/> &bull;Monto Total: ", sTotal, "<br/> <br/> <h4>Favor de consultar los archivos adjuntos.</h4></td></tr><tr><td width='580' style='font-size:8px; font-family:Verdana; color:#959595; line-height: 10px; padding-bottom: 10px;' colspan='2'><p style='margin: 0px; padding-top: 10px;'><span style='font-size:10px;'>KONEXUS MX SA DE CV &bull; TODOS LOS DERECHOS RESERVADOS &bull; (55)5025.8895 &bull; [email protected] &bull;</span><br/><br/>Este mensaje está dirigido exclusivamente a las personas que tienen las direcciones de correo electrónico especificadas en los destinatarios dentro de su encabezado. Si por error usted ha recibido este mensaje, por ningún motivo debe revelar su contenido, copiarlo, distribuirlo o utilizarlo. Le solicitamos por favor comunique del error a la dirección de correo electrónico remitente y elimine dicho mensaje junto con cualquier documento adjunto que pudiera contener. Los derechos de privacidad y confidencialidad de la información en este mensaje no deben perderse por el hecho de haberse trasmitido erróneamente o por causas de interferencias en el funcionamiento de los sistemas de correo y canales de comunicación. En consideración a que los mensajes enviados de manera electrónica pueden ser interceptados y manipulados, la empresa y las entidades que lo integran no se hacen responsables si los mensajes llegan con demora, incompletos, eliminados o con algún programa malicioso denominado como virus informático. </p></td></tr></table></body></html>");
                }
                else
                {
                    strMsg = string.Concat("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'><html><head><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'><title>INTEGRASOFTWARE</title></head><body><table cellpadding='0' cellspacing='0' border='0' style='font-size:12px; font-family: Arial; line-height: 17px;' width='600'><tr><td width='50%' style='background-color: #28487a; padding:10px;'><span style='color: #fff; font-size: 15px; font-weight: bold;'>",
                                                                 sReceptorNombre, "</span><br/><span style='color:#fff' >", sReceptorRFC, "</span></td><td align='right' style='background-color:#f1f1f1; padding: 10px; font-size: 15px; font-weight: bold; color: #000'>INTEGRASOFTWARE</td></tr><tr><td colspan='2' height='5' style='line-height: 5px; font-size: 5px;'>&nbsp;</td></tr><tr><td colspan='2' style='padding: 10px; background-color: #ededed'> Le notificamos que ", sEmisorNombre, " (", sEmisorRFC, ") emitio para usted un Comprobante Fiscal Digital por Internet (CFDI) con las siguientes caracteristicas <br/> <br/> &bull;Serie y Folio: ", sSerieFolio, "<br/> &bull;",
                                                                 "Fecha de Emision: ", DateTime.Now.ToShortDateString(), "<br/> &bull;Tipo de Comprobante: ", sTipoComprobante, " <br/> &bull;Monto Total: ", sTotal, "<br/> <br/> <h4>Favor de consultar los archivos adjuntos.</h4></td></tr><tr><td width='580' style='font-size:8px; font-family:Verdana; color:#959595; line-height: 10px; padding-bottom: 10px;' colspan='2'><p style='margin: 0px; padding-top: 10px;'><span style='font-size:10px;'>",
                                                                 "Integra ERP Mexico D.F &bull; TODOS LOS DERECHOS RESERVADOS &bull; (55) 5207 3799 &bull; [email protected] &bull;</span><br/><br/>Este mensaje está dirigido exclusivamente a las personas que tienen las direcciones de correo electrónico especificadas en los destinatarios dentro de su encabezado. Si por error usted ha recibido este mensaje, por ningún motivo debe revelar su contenido, copiarlo, distribuirlo o utilizarlo. Le solicitamos por favor comunique del error a la dirección de correo electrónico remitente y elimine dicho mensaje junto con cualquier documento adjunto que pudiera contener. Los derechos de privacidad y confidencialidad de la información en este mensaje no deben perderse por el hecho de haberse trasmitido erróneamente o por causas de interferencias en el funcionamiento de los sistemas de correo y canales de comunicación. En consideración a que los mensajes enviados de manera electrónica pueden ser interceptados y manipulados, la empresa y las entidades que lo integran no se hacen responsables si los mensajes llegan con demora, incompletos, eliminados o con algún programa malicioso denominado como virus informático. </p></td></tr></table></body></html>");
                }

                Emailmsg.Body = strMsg;
                EmailsmtpClient.EnableSsl = false;
                EmailsmtpClient.UseDefaultCredentials = false;
                EmailsmtpClient.Credentials = EmailloginInfo;
                EmailsmtpClient.Send(Emailmsg);
            }
            catch (Exception ex)
            {
                strMsg = strMsg.Replace("000'>KONEXUS</td>", "000'>FACTURACION ELECTRONICA </td>");
                strMsg = strMsg.Replace("000'>INTEGRASOFTWARE</td>", "000'>FACTURACION ELECTRONICA </td>");
                strMsg = strMsg.Replace("background-color: #28487a", "background-color: #00b6c1");
                strMsg = strMsg.Replace("background-color: #874340", "background-color: #00b6c1");
                strMsg = strMsg.Replace("KONEXUS MX SA DE CV &bull; TODOS LOS DERECHOS RESERVADOS &bull; (55)5025.8895 &bull; [email protected] &bull;", "&bull; TODOS LOS DERECHOS RESERVADOS &bull;");
                strMsg = strMsg.Replace("Integra ERP Mexico D.F &bull; TODOS LOS DERECHOS RESERVADOS &bull; (55) 5207 3799 &bull; [email protected] &bull;", "&bull; TODOS LOS DERECHOS RESERVADOS &bull;");
                BitacoraController.gfLogFacturaRegistroError("EnvioAlterno", sNombreDB, iNumeroEmpresa.ToString() + "|" + ex.Message);
                FacturaController.gfEmailSend(strMsg, listaContactos, "Notificación de Facturación", listaAdjuntos);
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// gfValidaSiEsFacturaFisicaoMoral
        /// </summary>
        /// <param name="piNumeroFactura">Id factura</param>
        /// <param name="Numero_Empresa">Id Empresa</param>
        /// <param name="Numero_Cliente">Id  Cliente ,en facturación es a quien enviarle el mail </param>
        /// <param name="iTipoFacturaNotaCredito">0 Facturacion , 1 Nota de credito</param>
        /// <param name="Tipo_Documento">Es indispensable que sea Documento Electronico (-59) para el flujo básico de timbrar</param>
        /// <returns>Regresa si es con retenciónes (persona física ) o sin ellas (persona moral)</returns>
        public static decimal gfValidaSiEsFacturaFisicaoMoral(string sNombreDB, int piNumeroFactura, int Numero_Empresa, int Numero_Cliente, int iTipoFacturaNotaCredito, ref int Tipo_Documento)
        {
            DataTable dt = new DataTable();
            string sQuery = string.Empty;
            SQLConection context = new SQLConection();
            if (iTipoFacturaNotaCredito == 0)
                sQuery = "USE [" + sNombreDB + "] SELECT ISNULL(RET_ISR,-1) AS RESULTADO  , ISNULL(Tipo_Documento,0) AS Tipo_Documento  FROM FACTURA  WHERE Numero_Empresa = " + Numero_Empresa.ToString() + " AND  Numero = " + piNumeroFactura.ToString() + "";
            else
                sQuery = string.Concat("USE [", sNombreDB, "] SELECT  -1 AS RESULTADO  , ISNULL(Tipo_Docto_Nota,0) AS Tipo_Documento  FROM NOTA_CREDITO WHERE Numero_Empresa = ", Numero_Empresa.ToString(), " AND  Numero = ", piNumeroFactura.ToString(), "");

            dt = context.ExecuteQuery(sQuery);
            if (dt.Rows.Count > 0)
            {
                Tipo_Documento = (int)dt.Rows[0][1];
                return decimal.Parse(dt.Rows[0][0].ToString());
            }
            return 0;
        }
Ejemplo n.º 5
0
        public static string ImporteConLetraXML(string sMonedaXML, Decimal total, int bandera, int iTipo)
        {
            string sTipoMoneda = string.Empty;
            DataTable dt = new DataTable();
            SQLConection context = new SQLConection();
            switch (sMonedaXML.ToUpper())
            {
                case "110":
                    sTipoMoneda = "Dólar Americano";
                    break;
                case "109":
                    sTipoMoneda = "Peso Mexicano";
                    break;
                case "MXN":
                    sTipoMoneda = "Peso Mexicano";
                    break;
                default:
                    sTipoMoneda = string.Empty;
                    break;
            }
            dt = new DataTable();
            context = new SQLConection();
            dt = context.ExecuteQuery(" SELECT dbo.fn_ImporteLetras(" + 1 + ", " + total + ", '" + sTipoMoneda + "', " + bandera + ") ");

            if (dt.Rows.Count > 0)
                sTipoMoneda = dt.Rows[0][0].ToString();
            return sTipoMoneda;
        }
Ejemplo n.º 6
0
        public static DataTable import_to_string(string sNombreDB, int company, Decimal total, int bandera, int NumeroFactura, int iTipo)
        {
            DataTable dt = new DataTable();
            SQLConection context = new SQLConection();
            string sQuery = string.Empty;
            int iResultado = -1;
            string sTipoMoneda = string.Empty;

            if (iTipo == 0)
                sQuery = string.Concat(" USE [" + sNombreDB + "] SELECT ISNULL(Moneda,109) AS MONEDA FROM   FACTURA WHERE  Numero = " + NumeroFactura.ToString() + " AND    Numero_empresa = " + company.ToString() + "");
            else
                sQuery = string.Concat(" USE [" + sNombreDB + "] SELECT ISNULL(Clas_Moneda,109) AS MONEDA FROM   Nota_Credito WHERE  Numero =" + NumeroFactura.ToString() + " AND    Numero_Empresa = " + company.ToString() + "");

            dt = context.ExecuteQuery(sQuery);

            iResultado = Convert.ToInt32(dt.Rows[0][0]);

            switch (iResultado)
            {
                case 110:
                    sTipoMoneda = "Dólar Americano";
                    break;
                case 109:
                    sTipoMoneda = "Peso Mexicano";
                    break;
                default:
                    sTipoMoneda = string.Empty;
                    break;
            }
            dt = new DataTable();
            context = new SQLConection();
            dt = context.ExecuteQuery(" SELECT dbo.fn_ImporteLetras(" + company + ", " + total + ", '" + sTipoMoneda + "', " + bandera + ") ");
            return dt;
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Valida si el id de factura o nota de credito es realmente documento electronico 
 /// </summary>
 /// <param name="piNumeroFactura">id de factura o nota de credito </param>
 /// <param name="iNumeroCompania">id de de la empresa</param>
 /// <param name="iTipoFacturaNotaCredito">0 Factura , 1 Nota de credito </param>
 /// <returns></returns>
 public static int gfValidaSiEsFactura(string sNombreDB, int piNumeroFactura, string iNumeroCompania, int iTipoFacturaNotaCredito)
 {
     SQLConection context = new SQLConection();
     if (iTipoFacturaNotaCredito == 0)
         return int.Parse(context.ExecuteQuery("USE [" + sNombreDB + "] SELECT  ISNULL(COUNT(1),0) AS RES FROM FACTURA WHERE NUMERO = " + piNumeroFactura + " AND  TIPO_DOCUMENTO = -59 AND Numero_Empresa = " + iNumeroCompania + " ").Rows[0][0].ToString());
     else
         return int.Parse(context.ExecuteQuery("USE [" + sNombreDB + "] SELECT  ISNULL(COUNT(1),0) AS RES  FROM NOTA_CREDITO  WHERE NUMERO  = " + piNumeroFactura + " AND  Tipo_Docto_Nota = -59 AND  Numero_Empresa = " + iNumeroCompania + " ").Rows[0][0].ToString());
 }