private void CrearPDF(object sender, EventArgs e) { //función que crea el PDF de la factura clase_factcom factura = (clase_factcom)((ToolStripMenuItem)sender).Tag; this.Cursor = Cursors.WaitCursor; string base_imponible = ""; string iva = ""; string recargo = ""; string total_importe = ""; string detcod = "", detnom = "", detvia = "", detmun = "", detnif = "", detEMail = ""; string texto_cabecera = ""; string observaciones = ""; string texto_pie = ""; string serie = ""; string strQ = "SELECT * FROM FACTV_CABE WHERE Factura=" + factura.Factura + " AND Anyo=" + factura.Anyo + " AND Serie='" + factura.Serie + "'"; SqlDataReader myReader = null; try { //SqlDataReader myReader = null; SqlCommand myCommand = new SqlCommand(strQ, CnO); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { serie = myReader["Serie"].ToString(); base_imponible = myReader["BI1"].ToString(); iva = myReader["IVA1"].ToString(); recargo = myReader["RE1"].ToString(); total_importe = myReader["ImpteFactura"].ToString(); texto_cabecera = myReader["TextoCabe"].ToString(); observaciones = myReader["Observaciones"].ToString(); texto_pie = myReader["TextoPie"].ToString(); if (myReader["SubSerie"] != DBNull.Value) { SubSerie = myReader["SubSerie"].ToString(); } } //myReader.Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); return; } finally { myReader.Close(); } //datos del detallista strQ = "SELECT ProCod, ProNom, ProDom, ProPob, ProCop, ProCif, ProEMail FROM PROVEEDORES WHERE ProCod=" + factura.ProCod; try { SqlCommand myCommand = new SqlCommand(strQ, CnO); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { detcod = myReader["ProCod"].ToString(); detnom = myReader["ProNom"].ToString(); detvia = myReader["ProDom"].ToString(); detmun = myReader["ProCop"].ToString() + " " + myReader["ProPob"].ToString(); detnif = myReader["ProCif"].ToString(); detEMail = myReader["ProEMail"].ToString(); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); return; } finally { myReader.Close(); } /////// string gIdent = this.GetType().FullName + " " + System.Reflection.MethodBase.GetCurrentMethod().Name; GloblaVar.gUTIL.CartelTraza("ENTRADA a " + this.GetType().FullName); CrystalDecisions.CrystalReports.Engine.ReportDocument myReport; myReport = new Report_Factura_Carabal(); GloblaVar.gUTIL.ATraza(" Usuario " + frmPpal.USUARIO); switch (frmPpal.USUARIO) { case "1": myReport = new Report_Factura_Llorens(); break; case "2": if (SubSerie == "ASG") { myReport = new CR007(); } else { myReport = new Report_Factura_Carabal(); } break; case "5": myReport = new Report_Factura_Dialpesca(); break; case "8": myReport = new Report_Factura_Valpeix(); break; default: break; } CrystalDecisions.Shared.TableLogOnInfo tliActual; //leer cadena de conexión string server = GloblaVar.gREMOTO_SERVER; string database = GloblaVar.gREMOTO_BD; foreach (CrystalDecisions.CrystalReports.Engine.Table tbA in myReport.Database.Tables) { tliActual = tbA.LogOnInfo; tliActual.ConnectionInfo.ServerName = server; //"localhost\\SQLEXPRESS"; tliActual.ConnectionInfo.DatabaseName = database; //"OREMAPEREMdb"; tliActual.ConnectionInfo.UserID = ""; tliActual.ConnectionInfo.Password = ""; tliActual.ConnectionInfo.IntegratedSecurity = true; tbA.ApplyLogOnInfo(tliActual); } myReport.DataDefinition.RecordSelectionFormula = "{command.Factura}=" + factura.Factura + " and {command.Serie}='" + factura.Serie + "' and {command.Anyo}=" + factura.Anyo; myReport.SetParameterValue("idfactura", factura.Anyo + "/" + factura.Factura); myReport.SetParameterValue("serie", serie); myReport.SetParameterValue("base_imponible", Funciones.Formatea(base_imponible)); myReport.SetParameterValue("iva", Funciones.Formatea(iva)); myReport.SetParameterValue("recargo", Funciones.Formatea(recargo)); myReport.SetParameterValue("importe_total", Funciones.Formatea(total_importe)); myReport.SetParameterValue("datos_mayorista", frmPpal.DATOS_MAYORISTA); myReport.SetParameterValue("detnom", detnom); myReport.SetParameterValue("detcod", detcod); myReport.SetParameterValue("detvia", detvia); myReport.SetParameterValue("detmun", detmun); myReport.SetParameterValue("detnif", detnif); myReport.SetParameterValue("fecha", factura.FechaEmision); myReport.SetParameterValue("texto_cabecera", texto_cabecera); myReport.SetParameterValue("observaciones", observaciones); myReport.SetParameterValue("texto_pie", texto_pie); //crear factura en PDF string nomFactura = "", directorio = "", diskFileName = "", fecha = "", directorioFacturasPDF = ""; DateTime fechaEmision = Convert.ToDateTime(factura.FechaEmision); try { //damos formato a la fecha de emision de la factura fecha = fechaEmision.Year.ToString() + fechaEmision.Month.ToString().PadLeft(2, '0') + fechaEmision.Day.ToString().PadLeft(2, '0'); nomFactura = "Factura_" + fecha + "_" + factura.Factura.PadLeft(5, '0') + "_" + factura.Serie + ".pdf"; //comprueba si existe el directorio y si no lo crea directorioFacturasPDF = GloblaVar.gCERCLE_103; directorio = CrearDirectorio(@directorioFacturasPDF, detcod.PadLeft(5, '0')); diskFileName = directorio + "\\" + nomFactura; myReport.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, diskFileName); } catch (Exception ex) { MessageBox.Show("Error al crear la factura en PDF:\n\n" + ex.ToString()); return; } if (((ToolStripMenuItem)sender).Name == "Crear") { MessageBox.Show(nomFactura + " ha sido creada correctamente"); } else { //enviar factura por email if (!detEMail.Contains('@')) { MessageBox.Show("El detallista " + detnom + " con el código " + detcod + " no tiene un correo válido."); } else { if (CnO != null) { ConEDNSSMTP = ""; ConEMail = ""; ConAutPwd = ""; CargarDatosControlMayorista(); } if (!string.IsNullOrEmpty(ConEDNSSMTP) && !string.IsNullOrEmpty(ConEMail) && !string.IsNullOrEmpty(ConAutPwd)) { SmtpClient clienteCorreo = new SmtpClient(ConEDNSSMTP, 587); clienteCorreo.EnableSsl = true; clienteCorreo.DeliveryMethod = SmtpDeliveryMethod.Network; clienteCorreo.UseDefaultCredentials = false; clienteCorreo.Credentials = new NetworkCredential(ConEMail, ConAutPwd); try { MailMessage mensaje = new MailMessage(); mensaje.From = new MailAddress(ConEMail); mensaje.To.Add(detEMail.Trim()); mensaje.Subject = nomFactura; mensaje.SubjectEncoding = System.Text.Encoding.UTF8; mensaje.Body = "Factura adjunta"; mensaje.BodyEncoding = System.Text.Encoding.UTF8; using (Attachment adjunto = new Attachment(diskFileName)) { ContentDisposition contentDisposition = adjunto.ContentDisposition; contentDisposition.CreationDate = File.GetCreationTime(diskFileName); contentDisposition.ModificationDate = File.GetLastWriteTime(diskFileName); contentDisposition.ReadDate = File.GetLastAccessTime(diskFileName); mensaje.Attachments.Add(adjunto); clienteCorreo.Send(mensaje); mensaje = null; } MessageBox.Show(nomFactura + " enviada correctamente"); } catch (Exception ex) { MessageBox.Show("Error al enviar la factura:\n\n" + ex.ToString()); } } else { MessageBox.Show("El mayorista no tiene configurados los datos para enviar correos"); } } } this.Cursor = Cursors.Default; }
private void Proceso(string DetCPM) { ArrayList Detallistas = Obtener_Detallistas(DetCPM); //lectura de la lista if (Detallistas.Count == 0) { MessageBox.Show("No existen detallistas con la periodicidad de facturación seleccionada"); } else { this.Cursor = Cursors.WaitCursor; int facturas_creadas = 0; //int facturas_impresas = 0; //int facturas_correo = 0; string MEMORIA = ""; //aquí se almacenan los detalles del proceso para mostrar luego al usuario for (int x = 0; x < Detallistas.Count; x++) { clase_detallista prove = (clase_detallista)Detallistas[x]; string DetCod = prove.DetCod; //obtener lista de todos los albaranes sin facturar de este detallista x ArrayList Lista_albaranes = Obtener_Lista_Albaranes(DetCod); if (Lista_albaranes.Count == 0) { //MEMORIA += "No hay albaranes por facturar para el detallista " + DetCod + " - " + prove.DetNom + " \r\n"; //textBox_Memoria.Text = "No hay albaranes por facturar para el detallista " + DetCod + " - " + prove.DetNom + " \r\n"; //GloblaVar.gUTIL.ATraza(MEMORIA); } else { switch (DetCPM) { case "S": Serie = "AS"; if (frmPpal.USUARIO == "2") { Serie = "AW"; } break; case "Q": Serie = "AQ"; break; case "M": Serie = "AM"; if (frmPpal.USUARIO == "2") { Serie = "AN"; } break; case "D": Serie = "AD"; break; default: Serie = "AA"; break; } //1. Facturar string idFactura = ""; if (frmPpal.USUARIO == "8") { idFactura = Funciones.Facturar(DetCod, Serie, true, Lista_albaranes, CnO, dateTimePicker_FechaFactura.Text); } else { idFactura = Funciones.Facturar(DetCod, Serie, true, Lista_albaranes, CnO); } //string nomFactura = ""; //string fecha = DateTime.Today.Year.ToString() + DateTime.Today.Month.ToString().PadLeft(2, '0') + DateTime.Today.Day.ToString().PadLeft(2, '0'); //nomFactura = "Factura_" + fecha + "_" + idFactura.PadLeft(5, '0') + "_" + Serie; //MEMORIA += "Se ha creado la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + nomFactura + " \r\n"; //textBox_Memoria.Text = "Se ha creado la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + nomFactura + " \r\n"; //GloblaVar.gUTIL.ATraza(MEMORIA); //facturas_creadas++; //directorio string directorio = ""; //creación de PDF //2. Recopilar datos de factura, cliente, etc string anyo = DateTime.Today.Year.ToString(); string base_imponible = ""; string iva = ""; string recargo = ""; string total_importe = ""; string detcod = "", detnom = ""; string detvia = ""; string detmun = ""; string detnif = ""; string texto_cabecera = ""; string observaciones = ""; string texto_pie = ""; DateTime fechaEmision = DateTime.Today; string strQ = "SELECT * FROM FACTV_CABE WHERE Factura=" + idFactura + " AND Anyo=" + anyo + " AND Serie='" + Serie + "'"; SqlDataReader myReader = null; try { SqlCommand myCommand = new SqlCommand(strQ, CnO); myReader = myCommand.ExecuteReader(); while (myReader.Read()) { fechaEmision = Convert.ToDateTime(myReader["FechaEmision"].ToString()); base_imponible = myReader["BI1"].ToString(); iva = myReader["IVA1"].ToString(); recargo = myReader["RE1"].ToString(); total_importe = myReader["ImpteFactura"].ToString(); texto_cabecera = myReader["TextoCabe"].ToString(); observaciones = myReader["Observaciones"].ToString(); texto_pie = myReader["TextoPie"].ToString(); } //myReader.Close(); } catch (Exception ex) { MEMORIA += "Error al cargar los datos de la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + ex.ToString() + " \r\n"; textBox_Memoria.Text = "Error al cargar los datos de la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + ex.ToString() + " \r\n"; GloblaVar.gUTIL.ATraza(MEMORIA); //Vamos al siguiente detallista } finally { myReader.Close(); } base_imponible = Funciones.Formatea(base_imponible); iva = Funciones.Formatea(iva); recargo = Funciones.Formatea(recargo); total_importe = Funciones.Formatea(total_importe); //datos del detallista detcod = DetCod; detnom = prove.DetNom; detvia = prove.detvia; detmun = prove.DetCop + " " + prove.detmun; detnif = prove.DetNif; //Comenzamos a crear el Report CrystalDecisions.CrystalReports.Engine.ReportDocument myReport; myReport = new Report_Factura_Carabal(); switch (frmPpal.USUARIO) { case "1": myReport = new Report_Factura_Llorens(); break; case "2": myReport = new Report_Factura_Carabal(); break; case "5": myReport = new Report_Factura_Dialpesca(); break; case "8": myReport = new Report_Factura_Valpeix(); break; default: break; } CrystalDecisions.Shared.TableLogOnInfo tliActual; //leer cadena de conexión string server = GloblaVar.gREMOTO_SERVER; string database = GloblaVar.gREMOTO_BD; //string userid = "reports"; //string paswd = "crystal"; foreach (CrystalDecisions.CrystalReports.Engine.Table tbA in myReport.Database.Tables) { tliActual = tbA.LogOnInfo; tliActual.ConnectionInfo.ServerName = server; //"localhost\\SQLEXPRESS"; tliActual.ConnectionInfo.DatabaseName = database; //"OREMAPEREMdb"; tliActual.ConnectionInfo.UserID = ""; tliActual.ConnectionInfo.Password = ""; tliActual.ConnectionInfo.IntegratedSecurity = true; tbA.ApplyLogOnInfo(tliActual); } myReport.DataDefinition.RecordSelectionFormula = "{command.Factura}=" + idFactura + " and {command.Serie}='" + Serie + "' and {command.Anyo}=" + anyo; myReport.SetParameterValue("idfactura", anyo + "/" + idFactura); myReport.SetParameterValue("serie", Serie); myReport.SetParameterValue("base_imponible", base_imponible); myReport.SetParameterValue("iva", iva); myReport.SetParameterValue("recargo", recargo); myReport.SetParameterValue("importe_total", total_importe); myReport.SetParameterValue("datos_mayorista", frmPpal.DATOS_MAYORISTA); myReport.SetParameterValue("detnom", detnom); myReport.SetParameterValue("detcod", detcod); myReport.SetParameterValue("detvia", detvia); myReport.SetParameterValue("detmun", detmun); myReport.SetParameterValue("detnif", detnif); //myReport.SetParameterValue("fecha", DateTime.Today.ToShortDateString()); myReport.SetParameterValue("fecha", fechaEmision.ToShortDateString()); myReport.SetParameterValue("texto_cabecera", texto_cabecera); myReport.SetParameterValue("observaciones", observaciones); myReport.SetParameterValue("texto_pie", texto_pie); //myReport.SetParameterValue("total_pagina", "1"); //crystalReportViewer1.ReportSource = myReport; //crystalReportViewer1.ShowLastPage(); //int total_paginas = crystalReportViewer1.GetCurrentPageNumber(); ////string TotalPage = total_paginas.ToString(); //crystalReportViewer1.ShowFirstPage(); ////recargar el total páginas //// myReport.SetParameterValue("total_pagina", "/" + TotalPage); //string nombre_factura = "Factura_" + fecha + "_" + idFactura + "_" + SERIE + ".pdf"; //string DiskFileName = directorio + "\\" + nombre_factura; //myReport.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, DiskFileName); string nomFactura = "", diskFileName = "", directorioFacturasPDF = ""; string fecha = fechaEmision.Year.ToString() + fechaEmision.Month.ToString().PadLeft(2, '0') + fechaEmision.Day.ToString().PadLeft(2, '0'); try { nomFactura = "Factura_" + fecha + "_" + idFactura.PadLeft(5, '0') + "_" + Serie + ".pdf"; //comprueba si existe el directorio y si no lo crea directorioFacturasPDF = GloblaVar.gCERCLE_103; directorio = CrearDirectorio(@directorioFacturasPDF, DetCod.PadLeft(5, '0')); diskFileName = directorio + "\\" + nomFactura; myReport.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, diskFileName); myReport.Close(); myReport.Dispose(); GC.Collect(); } catch (Exception ex) { MEMORIA += "Error al crear la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + ex.ToString() + " \r\n"; textBox_Memoria.Text = "Error al crear la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + ex.ToString() + " \r\n"; GloblaVar.gUTIL.ATraza(MEMORIA); } MEMORIA += "Se ha creado la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + nomFactura + " \r\n"; textBox_Memoria.Text = "Se ha creado la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + nomFactura + " \r\n"; GloblaVar.gUTIL.ATraza(MEMORIA); facturas_creadas++; //comprobamos si este detallista tiene marcada la impresión if (prove.FPVImpresion.ToLower() == "true") { // myReport.PrintToPrinter(1, false, 0, total_paginas); // facturas_impresas++; } //comprobamos si tiene marcado el enviar correo //if (prove.FPVCorreo.ToLower() == "true") //{ // //comprobar si el e-mail del detallista tiene al menos una @ // if (prove.DetEMail.Contains('@') == false) // { // //MEMORIA += "El detallista " + prove.DetCod + " - " + prove.DetNom + " no tiene un correo válido. \r\n"; // //textBox_Memoria.Text = "El detallista " + prove.DetCod + " - " + prove.DetNom + " no tiene un correo válido. \r\n"; // //GloblaVar.gUTIL.ATraza(MEMORIA); // } // else // { // try // { // ////enviar correo // //SmtpClient Cliente = new SmtpClient(); // //Cliente.Host = ConEDNSSMTP; //"smtp.gmail.com"; // //Cliente.Port = 587; // //Cliente.Credentials = new NetworkCredential(ConEMail, ConAutPwd); // //Cliente.EnableSsl = true; // //string from = ConEMail; //nosotros // //string to = prove.DetEMail; //destino // //MailMessage Mensaje = new MailMessage(from, to); // //Mensaje.Body = "Adjuntamos factura."; // //Mensaje.BodyEncoding = System.Text.Encoding.UTF8; // //Mensaje.Subject = nomFactura; // //Mensaje.SubjectEncoding = System.Text.Encoding.UTF8; // //Attachment Adjunto = new Attachment(diskFileName); // //ContentDisposition disposition = Adjunto.ContentDisposition; // //disposition.CreationDate = File.GetCreationTime(diskFileName); // //disposition.ModificationDate = File.GetLastWriteTime(diskFileName); // //disposition.ReadDate = File.GetLastAccessTime(diskFileName); // //Mensaje.Attachments.Add(Adjunto); // //Cliente.Send(Mensaje); // facturas_correo++; // } // catch (Exception ex) // { // MEMORIA += "Error al enviar la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + ex.ToString() + " \r\n"; // textBox_Memoria.Text = "Error al enviar la factura del detallista " + DetCod + " - " + prove.DetNom + " : " + ex.ToString() + " \r\n"; // GloblaVar.gUTIL.ATraza(MEMORIA); // } // } //} } } MEMORIA += "Facturas creadas: " + facturas_creadas.ToString() + "\r\n"; //MEMORIA += "Facturas impresas: " + facturas_impresas.ToString() + "\r\n"; //MEMORIA += "Facturas enviadas por correo: " + facturas_correo.ToString() + "\r\n"; textBox_Memoria.Text = MEMORIA; } //fin de proceso this.Cursor = Cursors.Default; }