public void EnviarDocumentos(DataTable _t, string _crystal, string _tipoDoc, string _tipo, string _rutaDoc, string _mailRemitente, string _password)
        {
            var _facturas = (from item in _t.AsEnumerable()
                             where item.Field <string>("Tipo de documento") == _tipoDoc &&
                             item.Field <string>("DocType") == _tipo &&
                             item.Field <bool>("Enviar") == true
                             select item);

            if (_facturas.Count() > 0)
            {
                string _numfactura        = "";
                string _mailDestinatarios = "";
                try
                {
                    DataTable _facturasI = _facturas.CopyToDataTable();

                    ReportDocument  docFacturasI;
                    Tables          CrTables;
                    TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
                    TableLogOnInfo  crtableLogoninfo  = new TableLogOnInfo();
                    ConnectionInfo  crConnectionInfo  = new ConnectionInfo();

                    docFacturasI = new ReportDocument();
                    docFacturasI.Load(_crystal);
                    crConnectionInfo.ServerName   = "192.168.2.100";
                    crConnectionInfo.DatabaseName = "SBOCPEJ";
                    crConnectionInfo.UserID       = "sa";
                    crConnectionInfo.Password     = "******";
                    CrTables = docFacturasI.Database.Tables;

                    foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
                    {
                        crtableLogoninfo = CrTable.LogOnInfo;
                        crtableLogoninfo.ConnectionInfo = crConnectionInfo;
                        CrTable.ApplyLogOnInfo(crtableLogoninfo);
                    }

                    foreach (DataRow item in _facturasI.Rows)
                    {
                        //Obetenemos DocEntry para enviar a crystal
                        docFacturasI.SetParameterValue("DocKey@", item.Field <string>("DocEntry"));
                        _numfactura = item.Field <Int32>("DocNum").ToString();
                        //ruta donde se generará el PDF de la factura
                        string _rutaPDF = _rutaDoc + item.Field <string>("EDocNum") + ".pdf";

                        //caseda de correos destinatarios
                        _mailDestinatarios = item.Field <string>("E_Mail");

                        //generacion del PDF de la factura
                        docFacturasI.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, _rutaPDF);


                        //Buscar XML de la factura
                        string _rutaXML = "";

                        if ((item.Field <DateTime>("Fecha").Month != DateTime.Now.Month && item.Field <DateTime>("Fecha").Year != DateTime.Now.Year) ||
                            (item.Field <DateTime>("Fecha").Month != DateTime.Now.Month && item.Field <DateTime>("Fecha").Year == DateTime.Now.Year))
                        {
                            _rutaXML = "\\\\192.168.2.100\\xml\\" + item.Field <DateTime>("Fecha").Month + "-" + item.Field <DateTime>("Fecha").Year + "\\" + item.Field <string>("EDocNum") + ".xml";
                        }
                        else if (item.Field <DateTime>("Fecha").Month == DateTime.Now.Month && item.Field <DateTime>("Fecha").Year == DateTime.Now.Year)
                        {
                            _rutaXML = "\\\\192.168.2.100\\xml\\" + item.Field <string>("EDocNum") + ".xml";
                        }
                        if (!string.IsNullOrEmpty(_rutaXML))
                        {
                            if (!string.IsNullOrEmpty(_rutaPDF))
                            {
                                SendMail co = new SendMail();
                                if (co.EnviarPEJ(_mailRemitente, _mailDestinatarios, _rutaPDF, _rutaXML, _password))
                                {
                                    this.RegistraEnviado(_numfactura, "Enviado", Usuario, _tipoDoc, "");
                                }
                            }
                            else
                            {
                                MessageBox.Show("Error: No se encontro el archivo PDF.", "HalcoNET", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                        else
                        {
                            MessageBox.Show("Error: No se encontro el archivo XML.", "HalcoNET", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    docFacturasI.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al enviar factura: " + _numfactura + "\r\nE-Mail: " + _mailDestinatarios + "\r\nDescripción del error: " + ex.Message + "\r\nInnerException: " + ex.InnerException.Message, "HalcoNET", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    string[] docs = Directory.GetFiles(_rutaDoc, "*.pdf");
                    foreach (string f in docs)
                    {
                        File.Delete(f);
                    }
                }
            }
        }
Exemple #2
0
        public void EnviarDocumentos(DataTable _t, string _crystal, string _tipoDoc, string _tipo, string _rutaDoc, string _mailJefa)
        {
            var _facturas = (from item in _t.AsEnumerable()
                             where item.Field <string>("Tipo de documento") == _tipoDoc &&
                             item.Field <string>("DocType") == _tipo &&
                             item.Field <bool>("Enviar") == true
                             select item);

            if (_facturas.Count() > 0)
            {
                string _numfactura  = "";
                string _mailCliente = "";
                try
                {
                    DataTable _facturasI = _facturas.CopyToDataTable();

                    ReportDocument  docFacturasI;
                    Tables          CrTables;
                    TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
                    TableLogOnInfo  crtableLogoninfo  = new TableLogOnInfo();
                    ConnectionInfo  crConnectionInfo  = new ConnectionInfo();

                    docFacturasI = new ReportDocument();
                    docFacturasI.Load(_crystal);
                    crConnectionInfo.ServerName   = "192.168.2.100";
                    crConnectionInfo.DatabaseName = "SBO-DistPJ";
                    crConnectionInfo.UserID       = "sa";
                    crConnectionInfo.Password     = "******";
                    CrTables = docFacturasI.Database.Tables;

                    foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
                    {
                        crtableLogoninfo = CrTable.LogOnInfo;
                        crtableLogoninfo.ConnectionInfo = crConnectionInfo;
                        CrTable.ApplyLogOnInfo(crtableLogoninfo);
                    }

                    foreach (DataRow item in _facturasI.Rows)
                    {
                        docFacturasI.SetParameterValue("DocKey@", item.Field <string>("DocEntry"));
                        _numfactura = item.Field <Int32>("DocNum").ToString();
                        string _rutaPDF = _rutaDoc + item.Field <string>("EDocNum") + ".pdf";
                        _mailCliente = item.Field <string>("U_Correo");
                        docFacturasI.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, _rutaPDF);
                        string _rutaXML = "";
                        if (item.Field <DateTime>("Fecha").Year != DateTime.Now.Year ||
                            (item.Field <DateTime>("Fecha").Month != DateTime.Now.Month && item.Field <DateTime>("Fecha").Year == DateTime.Now.Year))
                        {
                            _rutaXML = "\\\\192.168.2.100\\xml\\" + item.Field <DateTime>("Fecha").Month + "-" + item.Field <DateTime>("Fecha").Year + "\\" + item.Field <string>("EDocNum") + ".xml";
                        }
                        else if (item.Field <DateTime>("Fecha").Month == DateTime.Now.Month && item.Field <DateTime>("Fecha").Year == DateTime.Now.Year)
                        {
                            _rutaXML = "\\\\192.168.2.100\\xml\\" + item.Field <string>("EDocNum") + ".xml";
                        }
                        if (!string.IsNullOrEmpty(_rutaXML))
                        {
                            if (!string.IsNullOrEmpty(_rutaPDF))
                            {
                                SendMail co   = new SendMail();
                                int      acum = 0;
                                if (co.Enviar(_mailJefa, _mailCliente, _rutaPDF, _rutaXML)) /// retornar bol para saber estatus de envío
                                {
                                    acum = ActualizarContador();                            // actualizar solo si se envio ---- si es false Error al enviar doc "cancelar proceso"
                                    this.RegistraEnviado(_numfactura, "Enviado", Usuario, _tipoDoc, "");
                                    toolMensajes.Text = "Correos enviados el día de hoy: " + acum;
                                    if (acum > 180)
                                    {
                                        toolMensajes.BackColor = Color.Red;
                                        toolMensajes.ForeColor = Color.White;
                                    }
                                    /// guargar indicador de que la factura se envio
                                }
                                else
                                {
                                    // MessageBox.Show("Error: No se envió el correo.", "HalcoNET", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                    GetContador();
                                }
                            }
                            else
                            {
                                MessageBox.Show("Error: No se encontro el archivo PDF.", "HalcoNET", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                        else
                        {
                            MessageBox.Show("Error: No se encontro el archivo XML.", "HalcoNET", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                    docFacturasI.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error al enviar factura: " + _numfactura + "\r\nE-Mail: " + _mailCliente + "\r\nDescripción del error: " + ex.Message + "\r\nInnerException: " + ex.InnerException.Message, "HalcoNET", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    string[] docs = Directory.GetFiles(_rutaDoc, "*.pdf");
                    foreach (string f in docs)
                    {
                        File.Delete(f);
                    }
                }
            }
        }
Exemple #3
0
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                string _CardCode = string.Empty;
                string _Docnum   = string.Empty;
                bool   fist      = false;

                _CardCode = dgvEncabezado.CurrentRow.Cells[(int)ColumasEncabezado.Cliente].Value.ToString();
                _Docnum   = dgvDetalle.CurrentRow.Cells[(int)ColumnasDetalle.Factura].Value.ToString();

                string       _mensaje = string.Empty;
                DialogResult _result  = System.Windows.Forms.DialogResult.No;

                foreach (DataRow item in detalle.Rows)
                {
                    if (item.Field <string>("ExistP1") == "N" && item.Field <bool>("Prorroga1") == true)
                    {
                        string _aux = ExcecuteNonQuery(9, dateTimePicker1.Value, string.Empty, string.Empty, item.Field <int>("DocEntry"), item.Field <int>("Factura"), "P1", DateTime.Now);
                        _mensaje += "Factura: " + item.Field <int>("Factura") + " Estado: " + _aux + "\r\n";
                        _result   = System.Windows.Forms.DialogResult.Yes;
                    }
                    if (item.Field <string>("ExistP2") == "N" && item.Field <bool>("Prorroga2") == true)
                    {
                        string _aux = ExcecuteNonQuery(9, dateTimePicker1.Value, string.Empty, string.Empty, item.Field <int>("DocEntry"), item.Field <int>("Factura"), "P2", DateTime.Now);
                        _mensaje += "Factura: " + item.Field <int>("Factura") + " Estado: " + _aux + "\r\n";
                        _result   = System.Windows.Forms.DialogResult.Yes;
                    }
                    //SI EXISTE ALGUN CLIENTE EN JURIDICO
                    if (item.Field <string>("ExistJ1") == "N" && item.Field <bool>("Juridico") == true)
                    {
                        string _aux = ExcecuteNonQuery(9, dateTimePicker1.Value, string.Empty, string.Empty, item.Field <int>("DocEntry"), item.Field <int>("Factura"), "J1", DateTime.Now);
                        _mensaje += "Factura: " + item.Field <int>("Factura") + " Estado: " + _aux + "\r\n";
                        _result   = System.Windows.Forms.DialogResult.Yes;
                    }

                    if (item.Field <string>("ExistRE") == "N" && item.Field <bool>("Reclamación") == true)
                    {
                        string clientes = string.Empty;

                        int countClientes = 0;
                        if (_result == System.Windows.Forms.DialogResult.No)
                        {
                            var qry = (from fa in detalle.AsEnumerable()
                                       where fa.Field <string>("ExistRE") == "N" && fa.Field <bool>("Reclamación") == true
                                       select fa.Field <string>("CardCode")).Distinct();

                            countClientes = qry.Count();

                            foreach (string r in qry)
                            {
                                clientes += r + "\r\n";
                            }

                            if (!fist)
                            {
                                _result = MessageBox.Show("Se enviarán los siguientes clientes a Reclamación\r\n" + clientes + "¿Desea continuar?", "HalcoNET", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                            }
                        }
                        fist = true;

                        if (_result == System.Windows.Forms.DialogResult.Yes)
                        {
                            string _aux = ExcecuteNonQuery(9, dateTimePicker1.Value, string.Empty, string.Empty, item.Field <int>("DocEntry"), item.Field <int>("Factura"), "RE", item.Field <DateTime>("Fecha siniestro"));
                            _mensaje += "Factura: " + item.Field <int>("Factura") + " Estado: " + _aux + "\r\n";
                        }
                    }
                }

                string clientesMail = string.Empty;
                var    qryMail      = (from fa in detalle.AsEnumerable()
                                       where fa.Field <string>("ExistRE") == "N" && fa.Field <bool>("Reclamación") == true
                                       select new
                {
                    CardCode = fa.Field <string>("CardCode"),
                    CardName = fa.Field <string>("CardName")
                }).Distinct();

                foreach (DataRow r in qryMail.ToDataTable().Rows)
                {
                    Clases.CrearPDF pdf  = new Clases.CrearPDF();
                    string          file = pdf.ToPDFAtradius(r.Field <string>("CardCode"), "Cliente a reclamación:\r\n" + r.Field <string>("CardCode") + " - " + r.Field <string>("CardName") + "\r\n\r\nFacturas a reclamación");

                    string subj = "ATRADIUS - Reclamación - " + r.Field <string>("CardCode") + " - " + r.Field <string>("CardName");

                    SendMail mail = new SendMail();
                    string   _correosDestinatarios = System.Configuration.ConfigurationSettings.AppSettings["CorreosAtradius"].ToString();
                    if (file != string.Empty)
                    {
                        mail.Enviar(file, _correosDestinatarios, "*****@*****.**", @"<b>---</b>", subj, true);
                    }
                }

                if (_result == System.Windows.Forms.DialogResult.Yes)
                {
                    var dialogTypeName = "System.Windows.Forms.PropertyGridInternal.GridErrorDlg";
                    var dialogType     = typeof(Form).Assembly.GetType(dialogTypeName);

                    var dialog = (Form)Activator.CreateInstance(dialogType, new PropertyGrid());

                    dialog.Text = "HalcoNET";

                    dialogType.GetProperty("Details").SetValue(dialog, _mensaje, null);
                    dialogType.GetProperty("Message").SetValue(dialog, "Operación completada. De click en el boton 'Detalles' para mayor información.", null);

                    var result = dialog.ShowDialog();

                    button1_Click(sender, e);

                    int indexEncabezado = 0;
                    foreach (DataGridViewRow item in dgvEncabezado.Rows)
                    {
                        if (item.Cells[(int)ColumasEncabezado.Cliente].Value.ToString() == _CardCode)
                        {
                            indexEncabezado = item.Index;
                        }
                    }

                    dgvEncabezado.CurrentCell = dgvEncabezado.Rows[indexEncabezado].Cells[(int)ColumasEncabezado.Cliente];

                    int indexDetalle = 0;
                    foreach (DataGridViewRow item in dgvDetalle.Rows)
                    {
                        if (item.Cells[(int)ColumnasDetalle.Factura].Value.ToString() == _Docnum)
                        {
                            indexDetalle = item.Index;
                        }
                    }

                    dgvDetalle.CurrentCell = dgvDetalle.Rows[indexDetalle].Cells[(int)ColumnasDetalle.Factura];
                }
            }
            catch (Exception ex)
            {
                var dialogTypeName = "System.Windows.Forms.PropertyGridInternal.GridErrorDlg";
                var dialogType     = typeof(Form).Assembly.GetType(dialogTypeName);

                var dialog = (Form)Activator.CreateInstance(dialogType, new PropertyGrid());

                dialog.Text = "HalcoNET";
                dialogType.GetProperty("Details").SetValue(dialog, ex.Message, null);
                dialogType.GetProperty("Message").SetValue(dialog, "Error inesperado", null);

                var result = dialog.ShowDialog();
            }
        }