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); } } } }
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); } } } }
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(); } }