Ejemplo n.º 1
0
        private void btnFormatoRide_Click(object sender, EventArgs e)
        {
            try
            {
                if (dbAyudaFacturas.iId == 0)
                {
                    ok.LblMensaje.Text = "No ha seleccionado ninguna factura.";
                    ok.ShowDialog();
                }

                else
                {
                    //OBTENGO EL LOGO
                    //-------------------------------------------------------------------------------------
                    logo = new Clases_Factura_Electronica.ClaseObtenerLogo();

                    if (logo.obtenerRutaLogo() == false)
                    {
                        ok = new VentanasMensajes.frmMensajeOK();
                        ok.LblMensaje.Text = logo.sRespuesta;
                        ok.ShowDialog();
                        return;
                    }

                    else
                    {
                        sRutaLogo = logo.sRespuesta;
                    }

                    //-------------------------------------------------------------------------------------

                    dtConsulta = new DataTable();
                    dtConsulta.Clear();

                    this.Cursor = Cursors.WaitCursor;

                    bRespuesta = conexion.GFun_Lo_Genera_Ride(dtConsulta, dbAyudaFacturas.iId);

                    if (bRespuesta == true)
                    {
                        //bRespuesta = ride.generarRide(dtConsulta, "", dbAyudaFacturas.iId);

                        //if (bRespuesta == false)
                        //{
                        //    ok.LblMensaje.Text = "Error al crear el reporte RIDE de la factura ";
                        //    ok.ShowDialog();
                        //}

                        if (sRutaLogo == "")
                        {
                            Bitmap My_Logo = Properties.Resources.SIN_LOGO;
                            var    ms      = new MemoryStream();

                            My_Logo.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                            Logo_Factura = ms.ToArray();
                        }

                        else
                        {
                            if (File.Exists(sRutaLogo))
                            {
                                Logo_Factura = File.ReadAllBytes(sRutaLogo);
                            }
                            else
                            {
                                Bitmap My_Logo = Properties.Resources.SIN_LOGO;
                                var    ms      = new MemoryStream();

                                My_Logo.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                                Logo_Factura = ms.ToArray();
                            }
                        }

                        Facturacion_Electronica.frmVistaPreviaFacturaElectronica vista = new frmVistaPreviaFacturaElectronica(dtConsulta, "", dbAyudaFacturas.iId, Logo_Factura);
                        vista.ShowDialog();
                    }

                    this.Cursor = Cursors.Default;
                }
            }

            catch (Exception ex)
            {
                catchMensaje.LblMensaje.Text = ex.Message;
                catchMensaje.ShowDialog();
                this.Cursor = Cursors.Default;
            }
        }
Ejemplo n.º 2
0
        private async void btnReenviar_Click(object sender, EventArgs e)
        {
            iNumeroRegistros      = 0;
            iErrorGenerados       = 0;
            iErrorFirmados        = 0;
            iErrorEnviarSRI       = 0;
            iErrorConsultarXMLSRI = 0;
            iErrorEnviarMail      = 0;
            iEnviadosExitosamente = 0;

            Task <bool> task;
            bool        bConsulta;

            for (int i = 0; i < dgvDatos.Rows.Count; i++)
            {
                if (Convert.ToBoolean(dgvDatos.Rows[i].Cells["colMarca"].Value) == true)
                {
                    iNumeroRegistros++;
                }
            }

            if (dgvDatos.Rows.Count == 0)
            {
                ok = new VentanasMensajes.frmMensajeOK();
                ok.LblMensaje.Text = "No existen comprobantes electrónicos para procesar.";
                ok.ShowDialog();
                return;
            }

            else if (iNumeroRegistros == 0)
            {
                ok = new VentanasMensajes.frmMensajeOK();
                ok.LblMensaje.Text = "No hay registros seleccionados para procesar la información.";
                ok.ShowDialog();
                return;
            }

            else
            {
                if (conexionInternet() == false)
                {
                    ok = new VentanasMensajes.frmMensajeOK();
                    ok.LblMensaje.Text = "No hay una conexión a internet. Favor verifique la conectividad.";
                    ok.ShowDialog();
                    return;
                }

                else
                {
                    SiNo = new VentanasMensajes.frmMensajeSiNo();
                    SiNo.LblMensaje.Text = "¿Desea procesar los comprobantes electrónicos emitidos?";
                    SiNo.ShowDialog();

                    if (SiNo.DialogResult == DialogResult.OK)
                    {
                        this.Cursor = Cursors.WaitCursor;

                        buscarDirectorio();

                        //AQUI TRAER EL LOGO
                        //-----------------------------------------------------------------
                        logo = new Clases_Factura_Electronica.ClaseObtenerLogo();

                        if (logo.obtenerRutaLogo() == false)
                        {
                            ok = new VentanasMensajes.frmMensajeOK();
                            ok.LblMensaje.Text = logo.sRespuesta;
                            ok.ShowDialog();
                            return;
                        }

                        else
                        {
                            sRutaLogo = logo.sRespuesta;
                        }

                        //SE INSTANCIA EL LOGO EN MEMORIA PARA ENVIAR
                        if (sRutaLogo == "")
                        {
                            Bitmap My_Logo = Properties.Resources.SIN_LOGO;
                            var    ms      = new MemoryStream();

                            My_Logo.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                            Logo_Factura = ms.ToArray();
                        }

                        else
                        {
                            if (File.Exists(sRutaLogo))
                            {
                                Logo_Factura = File.ReadAllBytes(sRutaLogo);
                            }
                            else
                            {
                                Bitmap My_Logo = Properties.Resources.SIN_LOGO;
                                var    ms      = new MemoryStream();

                                My_Logo.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                                Logo_Factura = ms.ToArray();
                            }
                        }
                        //-----------------------------------------------------------------

                        //AQUI SE INICIA EL PROCESO DE SINCRONIZACION CON EL SRI
                        for (int i = 0; i < dgvDatos.Rows.Count; i++)
                        {
                            if (Convert.ToBoolean(dgvDatos.Rows[i].Cells["colMarca"].Value) == true)
                            {
                                sNumeroDocumento = "F" + dgvDatos.Rows[i].Cells["colEstablecimiento"].Value.ToString() +
                                                   dgvDatos.Rows[i].Cells["colPtoEmision"].Value.ToString() +
                                                   dgvDatos.Rows[i].Cells["colNumeroComprobante"].Value.ToString().PadLeft(9, '0');



                                //USANDO TASK ASYNC AWAIT

                                // PASO 1.- INVOCAR A FUNCION PARA PRIMERO GENERAR EL XML
                                task = new Task <bool>(() => generarXML(Convert.ToInt64(dgvDatos.Rows[i].Cells["colIdFactura"].Value)));
                                task.Start();
                                dgvDatos.Rows[i].Cells["colEstado"].Value = "Generando XML...";
                                bConsulta = await task;

                                if (bConsulta == true)
                                {
                                    dgvDatos.Rows[i].Cells["colEstado"].Value           = "XML Generado.";
                                    dgvDatos.Rows[i].Cells["colEstado"].Style.BackColor = Color.Lime;
                                }

                                else
                                {
                                    dgvDatos.Rows[i].Cells["colEstado"].Value           = "Error generar XML.";
                                    dgvDatos.Rows[i].Cells["colEstado"].Style.BackColor = Color.Red;
                                    goto retorna;
                                }

                                // PASO 2.- INVOCAR A FUNCION PARA FIRMAR EL XML
                                task = new Task <bool>(() => firmarArchivoXML(sNumeroDocumento));
                                task.Start();
                                dgvDatos.Rows[i].Cells["colEstado"].Value = "Firmando XML...";
                                bConsulta = await task;

                                if (bConsulta == true)
                                {
                                    dgvDatos.Rows[i].Cells["colEstado"].Value           = "XML Firmado.";
                                    dgvDatos.Rows[i].Cells["colEstado"].Style.BackColor = Color.Lime;
                                }

                                else
                                {
                                    dgvDatos.Rows[i].Cells["colEstado"].Value           = "Error firmar XML.";
                                    dgvDatos.Rows[i].Cells["colEstado"].Style.BackColor = Color.Red;
                                    goto retorna;
                                }

                                Thread.Sleep(3000);

                                //PASO 5.- ENVIAR AL CORREO ELECTRONICO DEL CLIENTE
                                task = new Task <bool>(() => enviarMailReenvio(i, Convert.ToInt64(dgvDatos.Rows[i].Cells["colIdFactura"].Value), sNumeroDocumento));
                                task.Start();
                                dgvDatos.Rows[i].Cells["colEstado"].Value = "Enviando al correo...";
                                bConsulta = await task;

                                if (bConsulta == true)
                                {
                                    dgvDatos.Rows[i].Cells["colEstado"].Value           = "Correo enviado.";
                                    dgvDatos.Rows[i].Cells["colEstado"].Style.BackColor = Color.Yellow;
                                }

                                else
                                {
                                    dgvDatos.Rows[i].Cells["colEstado"].Value           = "Error al enviar al correo.";
                                    dgvDatos.Rows[i].Cells["colEstado"].Style.BackColor = Color.Red;
                                    goto retorna;
                                }

                                dgvDatos.Rows[i].Cells["colMarca"].Value = false;
                            }

                            retorna : { }
                        }

                        this.Cursor            = Cursors.Default;
                        chkSeleccionar.Checked = false;
                        chkSeleccionar.Text    = "Seleccionar todos los registros";
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private async void btnReenviarFactura_Click(object sender, EventArgs e)
        {
            Task <bool> task;
            bool        bConsulta;

            if (conexionInternet() == false)
            {
                ok = new VentanasMensajes.frmMensajeNuevoOk();
                ok.lblMensaje.Text = "No hay una conexión a internet. Favor verifique la conectividad.";
                ok.ShowDialog();
                return;
            }

            SiNo = new VentanasMensajes.frmMensajeNuevoSiNo();
            SiNo.lblMensaje.Text = "¿Desea reenviar el comprobante seleccionado?";
            SiNo.ShowDialog();

            if (SiNo.DialogResult == DialogResult.OK)
            {
                this.Cursor = Cursors.WaitCursor;

                buscarDirectorio();

                //AQUI TRAER EL LOGO
                //-----------------------------------------------------------------
                logo = new Clases_Factura_Electronica.ClaseObtenerLogo();

                if (logo.obtenerRutaLogo() == false)
                {
                    this.Cursor        = Cursors.Default;
                    ok                 = new VentanasMensajes.frmMensajeNuevoOk();
                    ok.lblMensaje.Text = logo.sRespuesta;
                    ok.ShowDialog();
                    return;
                }

                else
                {
                    sRutaLogo = logo.sRespuesta;
                }

                //SE INSTANCIA EL LOGO EN MEMORIA PARA ENVIAR
                if (sRutaLogo == "")
                {
                    Bitmap My_Logo = Properties.Resources.SIN_LOGO;
                    var    ms      = new MemoryStream();

                    My_Logo.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    Logo_Factura = ms.ToArray();
                }

                else
                {
                    if (File.Exists(sRutaLogo))
                    {
                        Logo_Factura = File.ReadAllBytes(sRutaLogo);
                    }
                    else
                    {
                        Bitmap My_Logo = Properties.Resources.SIN_LOGO;
                        var    ms      = new MemoryStream();

                        My_Logo.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                        Logo_Factura = ms.ToArray();
                    }
                }
                //-----------------------------------------------------------------

                if (actualizarCorreo() == false)
                {
                    return;
                }

                string sNumeroDocumento = "F" + sSecuenciaFactura;

                //USANDO TASK ASYNC AWAIT

                // PASO 1.- INVOCAR A FUNCION PARA PRIMERO GENERAR EL XML
                task = new Task <bool>(() => generarXML(Convert.ToInt64(iIdFactura)));
                task.Start();
                lblEstadoReenvio.Text = "Generando XML.";
                bConsulta             = await task;

                if (bConsulta == true)
                {
                    lblEstadoReenvio.Text = "XML Generado.";
                }
                else
                {
                    lblEstadoReenvio.Text = "Error generar XML.";
                    return;
                }

                // PASO 2.- INVOCAR A FUNCION PARA FIRMAR EL XML
                task = new Task <bool>(() => firmarArchivoXML(sNumeroDocumento));
                task.Start();
                lblEstadoReenvio.Text = "Firmando XML";
                bConsulta             = await task;

                if (bConsulta == true)
                {
                    lblEstadoReenvio.Text = "XML Firmado.";
                }
                else
                {
                    lblEstadoReenvio.Text = "Error firmar XML.";
                    return;
                }

                Thread.Sleep(3000);

                //PASO 5.- ENVIAR AL CORREO ELECTRONICO DEL CLIENTE
                task = new Task <bool>(() => enviarMailReenvio(Convert.ToInt64(iIdFactura), sNumeroDocumento));
                task.Start();
                lblEstadoReenvio.Text = "Enviando al correo.";
                bConsulta             = await task;

                if (bConsulta == true)
                {
                    lblEstadoReenvio.Text = "Correo enviado.";
                    ok = new VentanasMensajes.frmMensajeNuevoOk();
                    ok.lblMensaje.Text = "Se ha enviado la factura éxitosamente.";
                    ok.ShowDialog();
                    this.Cursor = Cursors.Default;
                    limpiar();
                    return;
                }

                else
                {
                    lblEstadoReenvio.Text = "Error al enviar al correo.";
                    ok = new VentanasMensajes.frmMensajeNuevoOk();
                    ok.lblMensaje.Text = "Error al enviar la factura al correo.";
                    ok.ShowDialog();
                    this.Cursor = Cursors.Default;
                    return;
                }

                this.Cursor = Cursors.Default;
            }
        }