Ejemplo n.º 1
0
        private void frmVisorSUNAT_Load(object sender, EventArgs e)
        {
            try
            {
                clsEntityDeclarant        declarante = new clsEntityDeclarant().cs_pxObtenerUnoPorId(new clsBaseConfiguracion().Cs_pr_Declarant_Id);
                clsEntitySummaryDocuments rd         = new clsEntitySummaryDocuments().cs_fxObtenerUnoPorId(this.id);
                txtDocumento.Text    = rd.Cs_tag_ID;
                txtFechaemision.Text = rd.Cs_tag_IssueDate;
                txtRazonsocial.Text  = declarante.Cs_pr_RazonSocial;
                txtRuc.Text          = declarante.Cs_pr_Ruc;
            }
            catch (Exception ex)
            {
                clsBaseMensaje.cs_pxMsg("Error visor Sunat", "Error al cargar el formulario");
                clsBaseLog.cs_pxRegistarAdd("frmVisorSUNAT_Load" + ex.ToString());
            }


            /*
             * rbtEnvío.Checked = true;
             * txtDocumentotipo.Text = clsBaseUtil.cs_fxComprobantesElectronicos_descripcion(cabecera.Invoice_InvoiceTypeCode);
             * txtRuc.Text = cabecera.AccountingSupplierParty_CustomerAssignedAccountID;
             * txtFechaemision.Text = cabecera.Invoice_IssueDate;
             * txtRazonsocial.Text = cabecera.AccountingCustomerParty_Party_PartyLegalEntity_RegistrationName;
             * txtSerienumero.Text = cabecera.Invoice_ID;
             * if (cabecera.comprobante_xml_envio.Length<=0)
             * {
             *  rbtRecepción.Enabled = false;
             *  btnDescargarXML_Recepción.Enabled = false;
             * }*/
        }
Ejemplo n.º 2
0
        //Metodo de cargar de comprobantes electronicaos en la grilla principal.
        private void cs_pxCargarDgvComprobanteselectronicos(string tipo, string estadocomprobantescc, string estadocomprobantesunat, string fechainicio, string fechafin)
        {
            //Limpiar la grilla.
            dgComprobantes.ItemsSource = null;
            dgComprobantes.Items.Clear();
            //Obtener los registros de boletas.
            registros     = new clsEntityDocument(localDB).cs_pxObtenerFiltroPrincipal(tipo, estadocomprobantesunat, estadocomprobantescc, fechainicio, fechafin, "'03','07','08'", true);
            lista_reporte = new List <ReporteDocumento>();
            //lista_reporte = new ObservableCollection<Reporte>();
            //Recorrer los registros para rellenar la grilla.
            if (registros != null)
            {
                foreach (var item in registros)
                {
                    itemRow                     = new ReporteDocumento();
                    itemRow.Id                  = item.Cs_pr_Document_Id;
                    itemRow.Tipo                = item.Cs_tag_InvoiceTypeCode;
                    itemRow.SerieNumero         = item.Cs_tag_ID;
                    itemRow.FechaEmision        = item.Cs_tag_IssueDate;
                    itemRow.FechaEnvio          = item.comprobante_fechaenviodocumento;
                    itemRow.Ruc                 = item.Cs_tag_AccountingCustomerParty_CustomerAssignedAccountID;
                    itemRow.RazonSocial         = item.Cs_tag_AccountingCustomerParty_Party_PartyLegalEntity_RegistrationName;
                    itemRow.Comentario          = item.Cs_pr_ComentarioSUNAT;
                    itemRow.ComunicacionBaja    = item.Cs_pr_ComunicacionBaja;
                    itemRow.ResumenDiario       = item.Cs_pr_Resumendiario;
                    itemRow.DocumentoReferencia = item.Cs_tag_BillingReference_DocumentTypeCode;
                    itemRow.TipoTexto           = clsBaseUtil.cs_fxComprobantesElectronicos_descripcion(item.Cs_tag_InvoiceTypeCode);
                    itemRow.EstadoSCC           = clsBaseUtil.cs_fxComprobantesEstadosSCC_descripcion(Convert.ToInt16(item.Cs_pr_EstadoSCC)).ToUpper();
                    if (item.Cs_pr_Resumendiario != "")
                    {
                        resumen = new clsEntitySummaryDocuments(localDB).cs_fxObtenerUnoPorId(item.Cs_pr_Resumendiario);
                        if (resumen != null)
                        {
                            /*Cambiado para que se muestre el estado del comprobante y ya no del resumen diario*/
                            //itemRow.EstadoSunat = clsBaseUtil.cs_fxComprobantesEstadosSUNAT_descripcion(Convert.ToInt16(resumen.Cs_pr_EstadoSUNAT)).ToUpper();
                            itemRow.EstadoSunat             = clsBaseUtil.cs_fxComprobantesEstadosSUNAT_descripcion(Convert.ToInt16(item.Cs_pr_EstadoSUNAT)).ToUpper();
                            itemRow.ResumenDiarioTexto      = resumen.Cs_tag_ID;
                            itemRow.ResumenDiarioFechaEnvio = resumen.Cs_tag_IssueDate;
                            itemRow.ResumenDiarioTicket     = resumen.Cs_pr_Ticket;
                        }
                        else
                        {
                            itemRow.EstadoSunat = clsBaseUtil.cs_fxComprobantesEstadosSUNAT_descripcion(Convert.ToInt16(item.Cs_pr_EstadoSUNAT)).ToUpper();
                        }
                    }
                    else
                    {
                        itemRow.EstadoSunat = clsBaseUtil.cs_fxComprobantesEstadosSUNAT_descripcion(Convert.ToInt16(item.Cs_pr_EstadoSUNAT)).ToUpper();
                    }
                    itemRow.fechadebaja = item.Cs_tag_FechaDeBaja;
                    lista_reporte.Add(itemRow);
                }
            }

            dgComprobantes.ItemsSource = lista_reporte;
        }
Ejemplo n.º 3
0
        private void btnSustituir_Click(object sender, EventArgs e)
        {
            string no_procesados   = String.Empty;
            string resumenes_exito = String.Empty;

            if (dgvResumendiario.Rows.Count > 0)
            {
                int count = 0;
                foreach (DataGridViewRow row in dgvResumendiario.Rows)
                {
                    if ((bool)row.Cells[1].Value == true)
                    {
                        /* if(row.Cells[11].ToString() == "0")
                         * {*/
                        count++;
                        /*  }*/

                        /*else
                         * {
                         *  no_procesados += row.Cells[2].ToString();
                         * }*/
                    }
                }
                if (no_procesados != "")
                {
                    MessageBox.Show("Los siguientes resumenes no pueden ser sustituidos o rectificados ya que no fueron enviados a SUNAT");
                }

                if (count > 0)
                {
                    if (MessageBox.Show("¿Está seguro que desea sustituir/rectificar los resumenes seleccionados?\n Los documentos asociados seran liberados y podra volverlos a agregar a resumen diario.", "¿Está seguro?", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                    {
                        foreach (DataGridViewRow row in dgvResumendiario.Rows)
                        {
                            if ((bool)row.Cells[1].Value == true)
                            {
                                bool exito = new clsEntitySummaryDocuments().cs_pxLiberarSustitutorioDocumento(row.Cells[0].Value.ToString());
                                if (exito)
                                {
                                    resumenes_exito += row.Cells[2].Value.ToString() + "\n";
                                }
                            }
                        }
                        if (resumenes_exito != "")
                        {
                            MessageBox.Show("Los siguientes resumenes fueron liberados con exito:\n" + resumenes_exito);
                        }
                        cs_pxCargarDgvResumenesFecha(dtpFechaInicio.Value.ToString("yyyy-MM-dd"), dtpFechaFin.Value.ToString("yyyy-MM-dd"));
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Genera un Resumen diario de boletas y sus NC y ND asociadas.
        /// </summary>
        /// <param name="Id">Id del resumen diario.</param>
        /// <returns>NombreTributo del archivo generado.</returns>
        public string cs_pxGenerarResumenRC(string Id)
        {
            string archivo_nombre_XML = string.Empty, archivo_nombre_ZIP = string.Empty, archivo_nombre_directorio = string.Empty;

            try
            {
                clsEntitySummaryDocuments SummaryDocuments = new clsEntitySummaryDocuments(localDB).cs_fxObtenerUnoPorId(Id);
                if (SummaryDocuments.Cs_pr_EstadoSUNAT != "1")
                {
                    string fila = string.Empty; fila = new clsNegocioCEResumenDiario(localDB).cs_pxGenerarXMLAString(Id);
                    #region Genera el nombre de archivo
                    archivo_nombre_XML        = declarante.Cs_pr_Ruc + "-" + "RC" + "-" + DateTime.Now.ToString("yyyy-MM-dd").Replace("-", "") + "-" + SummaryDocuments.Cs_tag_ID.Split('-')[2].Trim().ToString() + ".xml";
                    archivo_nombre_ZIP        = declarante.Cs_pr_Ruc + "-" + "RC" + "-" + DateTime.Now.ToString("yyyy-MM-dd").Replace("-", "") + "-" + SummaryDocuments.Cs_tag_ID.Split('-')[2].Trim().ToString() + ".zip";
                    archivo_nombre_directorio = declarante.Cs_pr_Ruc + "-" + "RC" + "-" + DateTime.Now.ToString("yyyy-MM-dd").Replace("-", "") + "-" + SummaryDocuments.Cs_tag_ID.Split('-')[2].Trim().ToString();
                    string documento_ruta = new clsBaseConfiguracion().cs_prRutadocumentosenvio + "/", documento_ruta_nombre = documento_ruta + archivo_nombre_directorio + "\\" + archivo_nombre_XML;
                    if (File.Exists(documento_ruta_nombre))
                    {
                        File.Delete(documento_ruta_nombre);
                    }
                    if (Directory.Exists(documento_ruta + archivo_nombre_directorio))
                    {
                        var dir = new DirectoryInfo(documento_ruta + archivo_nombre_directorio); dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; dir.Delete(true);
                    }
                    if (!Directory.Exists(documento_ruta + archivo_nombre_directorio))
                    {
                        Directory.CreateDirectory(documento_ruta + archivo_nombre_directorio);
                    }
                    if (!File.Exists(documento_ruta_nombre))
                    {
                        File.Create(documento_ruta_nombre).Close();
                    }
                    //StreamWriter sw1 = new StreamWriter(documento_ruta_nombre); sw1.WriteLine(fila); sw1.Close(); fila = string.Empty;
                    StreamWriter  sw1 = new StreamWriter(File.Open(documento_ruta_nombre, FileMode.OpenOrCreate), Encoding.GetEncoding("ISO-8859-1")); sw1.WriteLine(fila); sw1.Close(); fila = string.Empty;
                    DirectoryInfo x   = new DirectoryInfo(documento_ruta + archivo_nombre_directorio);
                    cs_prComprimirZIP(x);
                    #endregion
                }
                return(archivo_nombre_ZIP);
            }
            catch (Exception ex)
            {
                clsBaseLog.cs_pxRegistarAdd("clsNegocioCE cs_pxGenerarResumenRC" + ex.ToString());
                return(null);
            }
        }
Ejemplo n.º 5
0
        private void btnLiberar_Click(object sender, RoutedEventArgs e)
        {
            string no_procesados     = String.Empty;
            string resumenes_exito   = String.Empty;
            string resumenes_rechazo = string.Empty;

            try
            {
                List <string> seleccionados = new List <string>();
                foreach (var item in lista_reporte)
                {
                    //Si estan seleccionados
                    if (item.Check == true)
                    {
                        seleccionados.Add(item.Id);
                    }
                }

                if (seleccionados.Count > 0)
                {
                    if (System.Windows.Forms.MessageBox.Show("¿Está seguro que desea complementar los resumenes seleccionados?\n Los documentos asociados seran" +
                                                             " liberados y podra volverlos a agregar a resumen diario.", "¿Está seguro?", System.Windows.Forms.MessageBoxButtons.YesNo,
                                                             System.Windows.Forms.MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.Yes)
                    {
                        foreach (var item in lista_reporte)
                        {
                            //Si estan seleccionados
                            if (item.Check == true)
                            {
                                //Cristhian|07/02/2018|FEICONT2-588
                                /*Se agrega una validación para no liberar los resumenes diarios que han sido aceptados por la SUNAT*/
                                /*INICIO MODIFICACIóN*/
                                /*Se verifica que el codigo de sunat no sea 0 o 5 (Que es para consultar ticket)*/
                                if (item.EstadoSunatCodigo != "0" && item.EstadoSunatCodigo != "5")
                                {
                                    bool exito = new clsEntitySummaryDocuments(localDB).cs_pxLiberarSustitutorioDocumento(item.Id);
                                    if (exito)
                                    {
                                        resumenes_exito += item.Archivo + "\n";
                                    }
                                }
                                /*Caso contrario ya tiene el estado de rechazado o pendiente, y ya no se puede librerar*/
                                else
                                {
                                    /*Se anota el código del resumen diario que no fue liberado*/
                                    resumenes_rechazo += item.Archivo + "\n";
                                }

                                /*para eliminar los items del sumary document*/
                                if (item.EstadoSunatCodigo == "2")
                                {
                                    new clsEntitySummaryDocuments(localDB).cs_pxEliminarDocumento(item.Id, true);
                                }
                                /*FIN MODIFICACIóN*/
                            }
                        }

                        if (resumenes_exito != "")
                        {
                            System.Windows.Forms.MessageBox.Show("Los siguientes resumenes fueron liberados con exito:\n" + resumenes_exito);
                        }

                        //Cristhian|07/02/2018|FEICONT2-588
                        /*Se envia mensaje de rechazo*/
                        /*NUEVO INICIO*/
                        /*Si se tiene algun resumen diario que no fue liberado, entonces se muestra el mensaje*/
                        if (resumenes_rechazo != "")
                        {
                            System.Windows.Forms.MessageBox.Show("Los siguientes resumenes no fueron liberados:\n" + resumenes_rechazo + "Por que estan en proceso o fueron aceptados por SUNAT \n");
                        }
                        /*NUEVO FIN*/

                        refrescarGrilla();
                    }
                }
                else
                {
                    System.Windows.Forms.MessageBox.Show("Seleccione al menos un item");
                }
            }catch (Exception ex)
            {
                clsBaseLog.cs_pxRegistarAdd("liberarRD " + ex.ToString());
            }
        }
Ejemplo n.º 6
0
        private void frmResumendiarioOpciones_Load(object sender, EventArgs e)
        {
            try
            {
                clsEntityDeclarant        declarante = new clsEntityDeclarant().cs_pxObtenerUnoPorId(new clsBaseConfiguracion().Cs_pr_Declarant_Id);
                clsEntitySummaryDocuments rd         = new clsEntitySummaryDocuments().cs_fxObtenerUnoPorId(id_resumendiario);
                txtDocumento.Text    = rd.Cs_tag_ID;
                txtFechaemision.Text = rd.Cs_tag_IssueDate;
                txtRazonsocial.Text  = declarante.Cs_pr_RazonSocial;
                txtRuc.Text          = declarante.Cs_pr_Ruc;

                dgvComprobanteselectronicos.Rows.Clear();
                List <List <string> > registros = new clsEntityDocument().cs_pxObtenerPorResumenDiario(id_resumendiario);

                int numero_orden = 0;
                foreach (var item in registros)
                {
                    numero_orden++;
                    dgvComprobanteselectronicos.Rows.Add(
                        item[0].ToString().Trim(),                                             //ID
                        false,
                        numero_orden.ToString(),                                               //ID
                        clsBaseUtil.cs_fxComprobantesElectronicos_descripcion(item[3].Trim()), //Comprobantes
                        item[28].Trim(),                                                       //Estado SCC
                        item[27].Trim(),                                                       //Estado SUNAT
                        item[1].ToString().Trim(),                                             //Serie - número
                        item[2].ToString().Trim(),                                             //Fecha de emisión
                        item[21].ToString().Trim(),                                            //Ruc
                        item[23].ToString().Trim(),                                            //Razón social
                        item[28].ToString().Trim(),                                            //Razón social
                        item[27].ToString().Trim(),                                            //Razón social
                        item[35].ToString().Trim(),                                            //Fecha de envío
                        item[32].ToString().Trim(),                                            //Comentario de sunat
                        item[33].ToString().Trim()                                             //Incluido en resumen diario
                        );
                }

                foreach (DataGridViewRow row in dgvComprobanteselectronicos.Rows)
                {
                    switch (row.Cells[10].Value.ToString())
                    {
                    case "1":
                        row.Cells[4].Style.ForeColor = Color.Red;    //Pendiente (errores)
                        Seleccionar.ReadOnly         = false;
                        break;

                    case "2":
                        row.Cells[4].Style.ForeColor = Color.RoyalBlue;    //Pendiente (correcto)
                        break;

                    case "0":
                        row.Cells[4].Style.ForeColor = Color.Green;    //Enviado
                        break;
                    }
                    row.Cells[4].Value = clsBaseUtil.cs_fxComprobantesEstadosSCC_descripcion(Convert.ToInt16(row.Cells[10].Value)).ToUpper();
                    switch (row.Cells[11].Value.ToString())
                    {
                    case "0":
                        row.Cells[5].Style.ForeColor = Color.Green;    //Aceptado
                        break;

                    case "1":
                        row.Cells[5].Style.ForeColor = Color.Brown;    //Rechazado
                        break;

                    case "2":
                        row.Cells[5].Style.ForeColor = Color.Red;    //Sin respuesta
                        break;

                    case "3":
                        row.Cells[5].Style.ForeColor = Color.Salmon;    //Anulado
                        break;
                    }
                    row.Cells[5].Value = clsBaseUtil.cs_fxComprobantesEstadosSUNAT_descripcion(Convert.ToInt16(row.Cells[11].Value)).ToUpper();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al cargar items.Revise archivo de errores");
                clsBaseLog.cs_pxRegistarAdd("frmResumendiarioOpciones_Load " + ex.ToString());
            }
        }
Ejemplo n.º 7
0
        private void cs_pxCargarDgvResumenesFecha(string fechainicio, string fechafin)
        {
            dgvResumendiario.Rows.Clear();
            try
            {
                List <List <string> > registros = new clsEntitySummaryDocuments().cs_fxObtenerResumenesPorRangoFecha(fechainicio, fechafin);
                foreach (var item in registros)
                {
                    string fecha_de_envío = string.Empty;

                    /*if (item[9].Trim() == "2")//verifica estado sunat si es sin estado
                     * {
                     *  fecha_de_envío = DateTime.Now.ToString("yyyy-MM-dd");
                     * }
                     * else
                     * {*/
                    fecha_de_envío = item[3].Trim(); //reference date dia de lso docuemtnos dentro del resumen.
                                                     //}

                    dgvResumendiario.Rows.Add(
                        item[0].ToString().Trim(), //id
                        false,                     //checkbox
                        item[1].Trim(),            //tag id
                        item[2].Trim(),            //tag reference date
                        fecha_de_envío,
                        item[7],                   //ticket
                        "",
                        "",
                        item[10].ToString().Trim(), //comentario sunat cell 8
                        item[13].ToString().Trim(), //excepcion sunat cell- 9
                        item[8].ToString().Trim(),  //estado scc  cell - 10
                        item[9].ToString().Trim()   //estado sunat  cell - 11
                        );
                }

                foreach (DataGridViewRow row in dgvResumendiario.Rows)
                {
                    //para estado SCC
                    switch (row.Cells[10].Value.ToString())
                    {
                    case "1":
                        row.Cells[6].Style.ForeColor = Color.Red;    //Pendiente (errores)
                        Seleccionar.ReadOnly         = false;
                        break;

                    case "2":
                        row.Cells[6].Style.ForeColor = Color.RoyalBlue;    //Pendiente (correcto)
                        break;

                    case "0":
                        row.Cells[6].Style.ForeColor = Color.Green;    //Enviado
                        break;
                    }

                    row.Cells[6].Value = clsBaseUtil.cs_fxComprobantesEstadosSCC_descripcion(Convert.ToInt16(row.Cells[10].Value)).ToUpper();
                    switch (row.Cells[11].Value.ToString())
                    {
                    case "0":
                        row.Cells[7].Style.ForeColor = Color.Green;    //Aceptado
                        break;

                    case "1":
                        row.Cells[7].Style.ForeColor = Color.Brown;    //Rechazado
                        break;

                    case "2":
                        row.Cells[7].Style.ForeColor = Color.Red;    //Sin respuesta
                        break;

                    case "3":
                        row.Cells[7].Style.ForeColor = Color.Salmon;    //Anulado
                        break;

                    case "4":
                        row.Cells[7].Style.ForeColor = Color.Blue;    //En proceso //desde sunat
                        break;

                    case "5":
                        row.Cells[7].Style.ForeColor = Color.Green;    //Ticket a consultar
                        break;
                    }
                    row.Cells[7].Value = clsBaseUtil.cs_fxComprobantesEstadosSUNAT_descripcion(Convert.ToInt16(row.Cells[11].Value)).ToUpper();
                }
            }
            catch (Exception ex)
            {
                clsBaseLog.cs_pxRegistarAdd("cs_pxCargarDgvResumenesFecha" + ex.Message.ToString());
            }
        }