예제 #1
0
        private void tsMenuItemCambiarAListo_Click(object sender, EventArgs e)
        {
            txtbxMensajes.Text = "";
            txtbxMensajes.Refresh();

            if (dgvFacturas.RowCount == 0)
            {
                txtbxMensajes.Text = "No hay documentos para procesar. Verifique los criterios de búsqueda.";
            }
            else
            {
                try
                {
                    ProcesaCfdi proc = new ProcesaCfdi(lblUsuario.Text);
                    proc.Progreso += new ProcesaCfdi.LogHandler(reportaProgreso);

                    var listaSeleccionadaPorUsuario = filtraListaSeleccionada(listaDeFacturas); //Filtra cfdiTransacciones sólo con docs marcados
                    proc.ProcesaCambioDeStatus(listaSeleccionadaPorUsuario, mainController);

                    filtrarFacturas();
                }
                catch (Exception gr)
                {
                    reportaProgreso(0, gr.Message);
                }
            }
        }
예제 #2
0
        private async void tsButtonConsultaTimbre_Click(object sender, EventArgs e)
        {
            int errores = 0;

            txtbxMensajes.Text = "";

            Parametros Param = new Parametros(DatosConexionDB.Elemento.Intercompany);

            Param.ExtDefault = this.tabCfdi.SelectedTab.Name;
            ServiciosOse     = new WebServicesOSE(Param.URLwebServPAC);

            if (!Param.ultimoMensaje.Equals(string.Empty))
            {
                txtbxMensajes.Text = Param.ultimoMensaje;
                errores++;
            }
            if (regla.CfdiTransacciones.RowCount == 0)
            {
                txtbxMensajes.Text = "No hay documentos para procesar. Verifique los criterios de búsqueda.";
                errores++;
            }
            if (!filtraListaSeleccionada()) //Filtra cfdiTransacciones sólo con docs marcados
            {
                txtbxMensajes.Text = ultimoMensaje;
                errores++;
            }
            if (errores == 0)
            {
                HabilitarVentana(false, false, false, false, false, false);
                ProcesaCfdi proc = new ProcesaCfdi(DatosConexionDB.Elemento, Param);
                proc.TrxVenta = regla.CfdiTransacciones;

                proc.Progreso += new ProcesaCfdi.LogHandler(reportaProgreso);

                pBarProcesoActivo.Visible = true;

                if (this.tabCfdi.SelectedTab.Name.Equals("tabFacturas"))
                {
                    await proc.ProcesaConsultaStatusAsync(ServiciosOse);
                }
                else
                {
                    txtbxMensajes.Text = "Presione el tab FACTURAS y luego el botón Consulta." + Environment.NewLine;
                }

                //Actualiza la pantalla
                Parametros Cia = new Parametros(DatosConexionDB.Elemento.Intercompany);   //Carga configuración desde xml
                HabilitarVentana(Cia.emite, Cia.anula, Cia.imprime, Cia.publica, Cia.envia, true);
                AplicaFiltroYActualizaPantalla(this.tabCfdi.SelectedTab.Name);
                progressBar1.Value        = 0;
                pBarProcesoActivo.Visible = false;
            }
        }
예제 #3
0
        /// <summary>
        /// Genera XMLs masivamente
        /// </summary>
        /// <param name="e"></param>
        private async void toolStripButton2_Click(object sender, EventArgs e)
        {
            int errores = 0;

            txtbxMensajes.Text = "";
            //datos o parametos de conexion de la base de datos
            Parametros Param = new Parametros(DatosConexionDB.Elemento.Intercompany);

            //tabCfdi es un control tabcontrol que divide la pantalla en partes
            //cada parte es referenicado por un pestaña
            Param.ExtDefault = this.tabCfdi.SelectedTab.Name;
            //crae un direccion unica de red donde un cliente puede cominicarse con un servicio endpoint
            ServiciosOse = new WebServicesOSE(Param.URLwebServPAC);

            //ServiciosOse.TimbraYEnviaASunat()


            if (!Param.ultimoMensaje.Equals(string.Empty))
            {
                txtbxMensajes.Text = Param.ultimoMensaje;
                errores++;
            }
            if (regla.CfdiTransacciones.RowCount == 0)
            {
                txtbxMensajes.Text = "No hay documentos para generar. Verifique los criterios de búsqueda.";
                errores++;
            }
            if (!filtraListaSeleccionada()) //Filtra cfdiTransacciones sólo con docs marcados
            {
                txtbxMensajes.Text = ultimoMensaje;
                errores++;
            }
            if (errores == 0 && !ExistenTransaccionesAMedioContabilizar(regla.CfdiTransacciones))
            {
                HabilitarVentana(false, false, false, false, false, false);
                ProcesaCfdi proc = new ProcesaCfdi(DatosConexionDB.Elemento, Param);
                proc.TrxVenta           = regla.CfdiTransacciones;
                proc.Progreso          += new ProcesaCfdi.LogHandler(reportaProgreso);
                tsPbProcesoActivo.Style = ProgressBarStyle.Marquee;

                //    await proc.GeneraResumenXmlAsync(ServiciosOse, EstructuraDocsOse);
                //else
                if (this.tabCfdi.SelectedTab.Name.Equals("tabFacturas"))
                {
                    await proc.GeneraDocumentoXmlAsync(ServiciosOse);
                }
            }
            //Actualiza la pantalla
            HabilitarVentana(Param.emite, Param.anula, Param.imprime, Param.publica, Param.envia, true);
            AplicaFiltroYActualizaPantalla(this.tabCfdi.SelectedTab.Name);
            progressBar1.Value      = 0;
            tsPbProcesoActivo.Style = ProgressBarStyle.Blocks;
        }
예제 #4
0
        /// <summary>
        /// Generar PDF
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void tsBtnGeneraPDF_Click(object sender, EventArgs e)
        {
            int errores = 0;

            txtbxMensajes.Text = "";

            Parametros Param = new Parametros(DatosConexionDB.Elemento.Intercompany);

            Param.ExtDefault = this.tabCfdi.SelectedTab.Name;
            ServiciosOse     = new WebServicesOSE(Param.URLwebServPAC);

            if (!Param.ultimoMensaje.Equals(string.Empty))
            {
                txtbxMensajes.Text = Param.ultimoMensaje;
                errores++;
            }
            if (regla.CfdiTransacciones.RowCount == 0)
            {
                txtbxMensajes.Text = "No hay documentos para generar. Verifique los criterios de búsqueda.";
                errores++;
            }
            if (!filtraListaSeleccionada()) //Filtra cfdiTransacciones sólo con docs marcados
            {
                txtbxMensajes.Text = ultimoMensaje;
                errores++;
            }
            if (errores == 0)
            {
                pBarProcesoActivo.Visible = true;
                HabilitarVentana(false, false, false, false, false, false);
                ProcesaCfdi proc = new ProcesaCfdi(DatosConexionDB.Elemento, Param);
                proc.TrxVenta             = regla.CfdiTransacciones;
                proc.Progreso            += new ProcesaCfdi.LogHandler(reportaProgreso);
                pBarProcesoActivo.Visible = true;

                if (!this.tabCfdi.SelectedTab.Name.Equals("tabResumen"))
                {
                    await proc.ProcesaObtienePDFAsync(ServiciosOse);
                }

                //cfdFacturaPdfWorker _bw = new cfdFacturaPdfWorker(DatosConexionDB.Elemento, Param);
                //_bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_Completed);
                //_bw.ProgressChanged += new ProgressChangedEventHandler(bw_Progress);
                //object[] arguments = { regla.CfdiTransacciones };
                //_bw.RunWorkerAsync(arguments);
                //Actualiza la pantalla
                HabilitarVentana(Param.emite, Param.anula, Param.imprime, Param.publica, Param.envia, true);
                AplicaFiltroYActualizaPantalla(this.tabCfdi.SelectedTab.Name);
                progressBar1.Value        = 0;
                pBarProcesoActivo.Visible = false;
            }
        }
예제 #5
0
        private void tsBtnCorrigeRechazo_Click(object sender, EventArgs e)
        {
            int errores = 0;

            txtbxMensajes.Text = "";

            Parametros Param = new Parametros(DatosConexionDB.Elemento.Intercompany);

            Param.ExtDefault = this.tabCfdi.SelectedTab.Name;

            if (!Param.ultimoMensaje.Equals(string.Empty))
            {
                txtbxMensajes.Text = Param.ultimoMensaje;
                errores++;
            }
            if (regla.CfdiTransacciones.RowCount == 0)
            {
                txtbxMensajes.Text = "No hay documentos para procesar. Verifique los criterios de búsqueda.";
                errores++;
            }
            if (!filtraListaSeleccionada()) //Filtra cfdiTransacciones sólo con docs marcados
            {
                txtbxMensajes.Text = ultimoMensaje;
                errores++;
            }
            if (errores == 0)
            {
                HabilitarVentana(false, false, false, false, false, false);
                ProcesaCfdi proc = new ProcesaCfdi(DatosConexionDB.Elemento, Param);
                proc.TrxVenta = regla.CfdiTransacciones;

                proc.Progreso          += new ProcesaCfdi.LogHandler(reportaProgreso);
                tsPbProcesoActivo.Style = ProgressBarStyle.Marquee;

                if (this.tabCfdi.SelectedTab.Name.Equals("tabFacturas"))
                {
                    proc.ReiniciaStatusDeComprobanteRechazadoPorServicioImpuestos();
                }
                else
                {
                    txtbxMensajes.Text = "Presione el tab FACTURAS y luego el botón Reiniciar Status." + Environment.NewLine;
                }

                //Actualiza la pantalla
                Parametros Cia = new Parametros(DatosConexionDB.Elemento.Intercompany);   //Carga configuración desde xml
                HabilitarVentana(Cia.emite, Cia.anula, Cia.imprime, Cia.publica, Cia.envia, true);
                AplicaFiltroYActualizaPantalla(this.tabCfdi.SelectedTab.Name);
                progressBar1.Value      = 0;
                tsPbProcesoActivo.Style = ProgressBarStyle.Blocks;
            }
        }
예제 #6
0
        /// <summary>
        /// Genera XMLs masivamente
        /// </summary>
        /// <param name="e"></param>
        private async void toolStripButton2_Click(object sender, EventArgs e)
        {
            int errores = 0;

            txtbxMensajes.Text = "";

            Parametros Param = new Parametros(DatosConexionDB.Elemento.Intercompany);

            Param.ExtDefault = this.tabCfdi.SelectedTab.Name;
            ServiciosOse     = new WebServicesOSE(Param.URLwebServPAC);

            if (!Param.ultimoMensaje.Equals(string.Empty))
            {
                txtbxMensajes.Text = Param.ultimoMensaje;
                errores++;
            }
            if (regla.CfdiTransacciones.RowCount == 0)
            {
                txtbxMensajes.Text = "No hay documentos para generar. Verifique los criterios de búsqueda.";
                errores++;
            }
            if (!filtraListaSeleccionada()) //Filtra cfdiTransacciones sólo con docs marcados
            {
                txtbxMensajes.Text = ultimoMensaje;
                errores++;
            }
            if (errores == 0 && !ExistenTransaccionesAMedioContabilizar(regla.CfdiTransacciones))
            {
                HabilitarVentana(false, false, false, false, false, false);
                ProcesaCfdi proc = new ProcesaCfdi(DatosConexionDB.Elemento, Param);
                proc.TrxVenta             = regla.CfdiTransacciones;
                proc.Progreso            += new ProcesaCfdi.LogHandler(reportaProgreso);
                pBarProcesoActivo.Visible = true;

                if (this.tabCfdi.SelectedTab.Name.Equals("tabResumen"))
                {
                    await proc.GeneraResumenXmlAsync(ServiciosOse, EstructuraDocsOse);
                }
                else
                {
                    await proc.GeneraDocumentoXmlAsync(ServiciosOse);
                }
            }
            //Actualiza la pantalla
            HabilitarVentana(Param.emite, Param.anula, Param.imprime, Param.publica, Param.envia, true);
            AplicaFiltroYActualizaPantalla(this.tabCfdi.SelectedTab.Name);
            progressBar1.Value        = 0;
            pBarProcesoActivo.Visible = false;
        }
예제 #7
0
        /// <summary>
        /// Generar PDF
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void tsBtnGeneraPDF_Click(object sender, EventArgs e)
        {
            int errores = 0;

            txtbxMensajes.Text = "";

            Parametros Param = new Parametros(DatosConexionDB.Elemento.Intercompany);

            Param.ExtDefault = this.tabCfdi.SelectedTab.Name;
            ServiciosOse     = new WebServicesOSE(Param.URLwebServPAC);

            if (!Param.ultimoMensaje.Equals(string.Empty))
            {
                txtbxMensajes.Text = Param.ultimoMensaje;
                errores++;
            }
            if (regla.CfdiTransacciones.RowCount == 0)
            {
                txtbxMensajes.Text = "No hay documentos para generar. Verifique los criterios de búsqueda.";
                errores++;
            }
            if (!filtraListaSeleccionada()) //Filtra cfdiTransacciones sólo con docs marcados
            {
                txtbxMensajes.Text = ultimoMensaje;
                errores++;
            }
            if (errores == 0)
            {
                tsPbProcesoActivo.Style = ProgressBarStyle.Marquee;
                HabilitarVentana(false, false, false, false, false, false);
                ProcesaCfdi proc = new ProcesaCfdi(DatosConexionDB.Elemento, Param);
                proc.TrxVenta  = regla.CfdiTransacciones;
                proc.Progreso += new ProcesaCfdi.LogHandler(reportaProgreso);

                if (this.tabCfdi.SelectedTab.Name.Equals("tabFacturas"))
                {
                    await proc.ProcesaObtienePDFAsync(ServiciosOse);
                }

                HabilitarVentana(Param.emite, Param.anula, Param.imprime, Param.publica, Param.envia, true);
                AplicaFiltroYActualizaPantalla(this.tabCfdi.SelectedTab.Name);
                progressBar1.Value      = 0;
                tsPbProcesoActivo.Style = ProgressBarStyle.Blocks;
            }
        }
예제 #8
0
        private void tsButtonGenerarTxt_Click(object sender, EventArgs e)
        {
            int errores = 0;

            txtbxMensajes.Text = "";

            if (listaDeFacturas.Count == 0)
            {
                txtbxMensajes.Text = "No hay documentos para generar. Verifique los criterios de búsqueda.";
                errores++;
            }

            try
            {
                var listaSeleccionadaPorUsuario = filtraListaSeleccionada(listaDeFacturas); //Filtra cfdiTransacciones sólo con docs marcados
                if (errores == 0 && !ExistenTransaccionesAMedioContabilizar())
                {
                    HabilitarVentana(false, false, false, false, false, false, false);
                    ProcesaCfdi proc = new ProcesaCfdi(lblUsuario.Text);
                    proc.Progreso += new ProcesaCfdi.LogHandler(reportaProgreso);
                    //pBarProcesoActivo.Visible = true;

                    if (this.tabNotaFiscal.SelectedTab.Name.Equals("gpFactura"))
                    {
                        var serviciosPrefeitura = new WebServicesNfe();
                        proc.GeneraDocumentoTxt(listaSeleccionadaPorUsuario, mainController, serviciosPrefeitura);
                    }
                }
                //Actualiza la pantalla
                HabilitarVentana(true, false, false, false, false, true, true);
                filtrarFacturas();
                tsProgressBar1.Value = 0;
                //pBarProcesoActivo.Visible = false;
            }
            catch (Exception ex)
            {
                reportaProgreso(0, ex.Message);
            }
        }
예제 #9
0
        private void tsButtonCargaNumNFSe_Click(object sender, EventArgs e)
        {
            try
            {
                openFileDialog1.Filter      = "CSV files|*.csv"; // "Excel Files|*.xls|*.xlsx";
                openFileDialog1.Multiselect = false;
                DialogResult dr = openFileDialog1.ShowDialog();

                if (dr == DialogResult.OK)
                {
                    string[] filenames      = openFileDialog1.FileNames;
                    var      nombreArchivos = filenames
                                              .Select(y => new {
                        archivo = System.IO.Path.GetFileName(y),
                        carpeta = System.IO.Path.GetDirectoryName(y)
                    });
                    string nombreArchivo = nombreArchivos.Select(a => a.archivo).ToList().FirstOrDefault();
                    string carpetaOrigen = nombreArchivos.Select(a => a.carpeta).FirstOrDefault();

                    System.Globalization.CultureInfo culInfo = new System.Globalization.CultureInfo(configuracion.CulturaParaMontos);
                    LectorCSV csv = new LectorCSV(configuracion.CodigosServicioDflt);
                    csv.ProgressHandler += reportaProgreso;
                    var archivoCsv = csv.LeeArchivoCsv(carpetaOrigen, nombreArchivo, culInfo);

                    ProcesaCfdi proc = new ProcesaCfdi(lblUsuario.Text);
                    proc.Progreso += new ProcesaCfdi.LogHandler(reportaProgreso);

                    proc.ProcesaActualizacionDeNumeroFiscalE(archivoCsv, carpetaOrigen, nombreArchivo, mainController);

                    filtrarFacturas();
                }
            }
            catch (Exception ex)
            {
                reportaProgreso(0, ex.Message);
            }
        }
예제 #10
0
        private async void tsBtnMotivoRechazo_Click(object sender, EventArgs e)
        {
            int errores = 0;

            txtbxMensajes.Text = "";
            txtbxMensajes.Refresh();

            Parametros _param = new Parametros(DatosConexionDB.Elemento.Intercompany);

            ServiciosOse = new WebServicesOSE(_param.URLwebServPAC);
            if (!_param.ultimoMensaje.Equals(string.Empty))
            {
                txtbxMensajes.Text = _param.ultimoMensaje;
                errores++;
            }
            if (regla.CfdiTransacciones.RowCount == 0)
            {
                txtbxMensajes.Text = "No hay documentos para procesar. Verifique los criterios de búsqueda.";
                errores++;
            }
            if (!filtraListaSeleccionada()) //Filtra trxVenta sólo con docs marcados
            {
                txtbxMensajes.Text = ultimoMensaje;
                errores++;
            }
            if (tsTextBoxMotivoRechazo.Text.Equals(String.Empty))
            {
                txtbxMensajes.Text = "Ingrese el motivo de la baja.";
                errores++;
            }
            if (tsTextBoxMotivoRechazo.Text.Length > 100)
            {
                txtbxMensajes.Text = "El texto del motivo de rechazo es demasiado largo.";
                errores++;
            }

            if (errores == 0)
            {
                HabilitarVentana(false, false, false, false, false, false);
                ProcesaCfdi proc = new ProcesaCfdi(DatosConexionDB.Elemento, _param);
                proc.TrxVenta = regla.CfdiTransacciones;

                proc.Progreso += new ProcesaCfdi.LogHandler(reportaProgreso);

                pBarProcesoActivo.Visible = true;

                if (this.tabCfdi.SelectedTab.Name.Equals("tabFacturas"))
                {
                    await proc.ProcesaBajaComprobanteAsync(tsTextBoxMotivoRechazo.Text, ServiciosOse);
                }
                //await proc.ProcesaBajaComprobante(tsTextBoxMotivoRechazo.Text);
                else
                {
                    txtbxMensajes.Text = "Presione el tab FACTURAS y vuelva a intentar." + Environment.NewLine;
                }

                //Actualiza la pantalla
                //Parametros Cia = new Parametros(DatosConexionDB.Elemento.Intercompany);   //Carga configuración desde xml
                HabilitarVentana(_param.emite, _param.anula, _param.imprime, _param.publica, _param.envia, true);
                AplicaFiltroYActualizaPantalla(this.tabCfdi.SelectedTab.Name);
                progressBar1.Value           = 0;
                pBarProcesoActivo.Visible    = false;
                toolStripAuxRechazar.Visible = false;
            }
        }