Exemplo n.º 1
0
        /// <summary>
        /// Obtiene los registros de asientos tipo VT de ingresos a partir de un archivo Excel.
        /// </summary>
        /// <param name="dtAsientos">Tabla en la que se volcará la información de los asientos a generar.</param>
        /// <param name="archivo">Ruta y nombre del archivo Excel que contiene la información del reporte de ingresos para obtener los asientos.</param>
        public void ObtenerAsientosVTIngresos(Procesos.TD.Asiento.LISTA_ASIENTODataTable dtAsientos, string archivo)
        {
            Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("es-PE");
            CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;

            try
            {
                Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
                ExcelApplication app   = new ExcelApplication();
                ExcelWorkBook    wb    = app.OpenWorkBook(archivo, ExcelMode.Full);
                ExcelWorkSheet   sheet = wb.GetSheet(1);

                String    fechaAsiento = sheet.GetString("G3"); //convertir a fecha
                DataTable dt           = sheet.LeerTabla("B", "I", 5, sheet.ObtenerUltimaFilaTabla("B", 6), true);

                /*String factura = sheet.GetString("G2");
                 * string[] partesFactura = ObtenerPartesFactura(factura);
                 * string numeros = partesFactura[0];
                 * string letras = partesFactura[1];
                 */
                ParametrosDA parametrosDA       = new ParametrosDA();
                DataTable    dtParametroRUC     = parametrosDA.ObtenerValoresParametros(ConstantesING.TABLA_TIPO_DOCUMENTO, ConstantesING.TIPO_DOCUMENTO_RUC);
                String       tipoDocumentoSunat = dtParametroRUC.Rows[0]["CAMPO1"].ToString();

                //int correlativoFactura = Convert.ToInt32(numeros);

                wb.Close();
                app.Close();
                Hashtable ht = new Hashtable();
                foreach (DataRow dr in dt.Rows)
                {
                    string fondo = dr["Fondo"].ToString().Trim();
                    if (!ht.ContainsKey(fondo))
                    {
                        Asiento.LISTA_ASIENTORow row = dtAsientos.NewLISTA_ASIENTORow();

                        //string numeroFactura = letras + correlativoFactura.ToString().PadLeft(numeros.Length, '0');
                        //correlativoFactura++;
                        object total = dt.Compute("SUM(Ingresos)", "Fondo = '" + fondo + "'");
                        //object totalImpuesto = dt.Compute("SUM(IGV)", "Fondo = '" + fondo + "'");
                        object totalPN = dt.Compute("SUM(Ingresos)", "Fondo = '" + fondo + "' and TipoPersona = 'PN'");
                        //object impuestoPN = dt.Compute("SUM(IGV)", "Fondo = '" + fondo + "' and TipoPersona = 'PN'");
                        object totalPJ = dt.Compute("SUM(Ingresos)", "Fondo = '" + fondo + "' and TipoPersona = 'PJ'");
                        //object impuestoPJ = dt.Compute("SUM(IGV)", "Fondo = '" + fondo + "' and TipoPersona = 'PJ'");
                        //object subtotal = Convert.ToDecimal(total) - Convert.ToDecimal(totalImpuesto);
                        object igv = dt.Compute("SUM(IGV)", "Fondo = '" + fondo + "'");
                        row.TIPO_ASIENTO  = "VT_ING";
                        row.UUID          = "";
                        row.ESTADO        = "";
                        row.FONDO         = fondo;
                        row.FECHA_PROCESO = DateTime.ParseExact(fechaAsiento, "dd/MM/yyyy", CultureInfo.InvariantCulture).Date;
                        row.ID_OPERACION  = "";
                        row.MONEDA        = dr["Moneda"].ToString() == "SOL" ? "PEN" : "USD";
                        row.TOTAL         = total == null || total == DBNull.Value ? 0 : Decimal.Round(Convert.ToDecimal(total), 2);
                        row.MONTO1        = total == null || total == DBNull.Value ? 0 : Decimal.Round(Convert.ToDecimal(total), 2);


                        //row.MONTO2 = totalImpuesto == null || totalImpuesto == DBNull.Value ? 0 : Convert.ToDecimal(totalImpuesto);
                        //row.MONTO3 = totalPN == null || totalPN == DBNull.Value ? 0 : Convert.ToDecimal(totalPN);
                        //row.MONTO4 = totalPJ == null || totalPJ == DBNull.Value ? 0 : Convert.ToDecimal(totalPJ);
                        row.MONTO2 = totalPN == null || totalPN == DBNull.Value ? 0 : Decimal.Round(Convert.ToDecimal(totalPN), 2);
                        row.MONTO3 = totalPJ == null || totalPJ == DBNull.Value ? 0 : row.MONTO1 - row.MONTO2;
                        row.MONTO4 = 0;
                        row.MONTO5 = 0;
                        //ABRIR EN CASO SE JUNTEN LOS MONTO 3 Y MONTO4
                        row.REFERENCIA  = "";// numeroFactura;
                        row.REFERENCIA1 = tipoDocumentoSunat;
                        //row.MONTO3 = subtotal == null || subtotal == DBNull.Value ? 0 : Convert.ToDecimal(subtotal);

                        row.TEXTO1 = row.FECHA_PROCESO.ToString("MM");
                        row.TEXTO2 = row.FECHA_PROCESO.ToString("yyyy");

                        DataTable dtFondo = parametrosDA.ObtenerValoresParametros(ConstantesING.FONDO, fondo);
                        row.TIPO_DOCUMENTO = ConstantesING.TIPO_DOCUMENTO_RUC;
                        row.CODIGO_CLIENTE = dtFondo.Rows[0]["CAMPO2"].ToString();
                        row.RAZON_SOCIAL   = dtFondo.Rows[0]["CAMPO3"].ToString();

                        row.DIRECCION       = ConfigurationSettings.AppSettings[ConstantesING.DIRECCION_FONDOS];
                        row.DISTRITO        = ConfigurationSettings.AppSettings[ConstantesING.DISTRITO_FONDOS];
                        row.PROVINCIA       = ConfigurationSettings.AppSettings[ConstantesING.PROVINCIA_FONDOS];
                        row.DEPARTAMENTO    = ConfigurationSettings.AppSettings[ConstantesING.DEPARTAMENTO_FONDOS];
                        row.CODIGO_PAIS     = ConstantesING.CODIGO_PERU;
                        row.CORREO          = ConfigurationSettings.AppSettings[ConstantesING.CORREO_FONDOS];
                        row.ID_PAIS         = ConfigurationSettings.AppSettings[ConstantesING.ID_PAIS_FONDOS];
                        row.ID_DEPARTAMENTO = ConfigurationSettings.AppSettings[ConstantesING.ID_DEPARTAMENTO_FONDOS];
                        row.ID_CIUDAD       = ConfigurationSettings.AppSettings[ConstantesING.ID_CIUDAD_FONDOS];
                        row.ID_DISTRITO     = ConfigurationSettings.AppSettings[ConstantesING.ID_DISTRITO_FONDOS];
                        row.UBIGEO          = ConfigurationSettings.AppSettings[ConstantesING.UBIGEO_FONDOS];

                        row.IGVF   = Decimal.ToDouble(Decimal.Round(Convert.ToDecimal(igv), 2));
                        row.TOTALF = Decimal.ToDouble(row.TOTAL);
                        row.SUBF   = row.TOTALF - row.IGVF;

                        dtAsientos.AddLISTA_ASIENTORow(row);
                        ht.Add(fondo, fondo);
                    }
                }

                da.Server   = INGFondos.Constants.Conexiones.ServidorSAP;
                da.Database = INGFondos.Constants.Conexiones.BaseDeDatosSAP;
                da.ListarControlAsiento(dtAsientos, "VT_ING", DateTime.ParseExact(fechaAsiento, "dd/MM/yyyy", CultureInfo.InvariantCulture).Date);
                da.Server   = INGFondos.Constants.Conexiones.ServidorOperaciones;
                da.Database = INGFondos.Constants.Conexiones.BaseDeDatosOperaciones;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                Thread.CurrentThread.CurrentCulture = originalCulture;
            }
        }
Exemplo n.º 2
0
        //OT 8372-PSC001
        //public void generarArchivo(string rutaArchivo, string rutaArchivoDestino)
        public void generarArchivoXFondo(string rutaArchivo, string rutaArchivoDestino)
        {
            StringBuilder sbLinea;

            sbLinea = new StringBuilder("");

            //StreamWriter sw = null;

            string path = rutaArchivo;

            System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

            ExcelApplication excelApplication = new ExcelApplication();
            ExcelWorkBook    wb = excelApplication.OpenWorkBook(path, ExcelMode.Full);

            try
            {
                ConveniosPlanEmpleadorDA conveniosPlanEmpleadorDA = new ConveniosPlanEmpleadorDA();
                string    codigosEmpresas   = "COD_EMP_CON";
                DataTable dtCodigosEmpresas = conveniosPlanEmpleadorDA.ObtenerTablaGeneral(codigosEmpresas);
                int       numeroEmpresas    = dtCodigosEmpresas.Rows.Count;

                object[] row;
                int      rowIndex;

                string    codigoParticipacion;
                string    nombreFondo;
                DataRow[] drFondo;
                DataTable dtFondosDepositos;
                DataRow[] drFondoDeposito;
                string    idFondo;
                string    codigoTablatablaGeneralDepositos = "FONDO_EQUIV";
                string    mes  = "";
                string    anio = "";

                string    estadoFondos = "ACT";
                DataTable dtFondos     = conveniosPlanEmpleadorDA.ListarFondos(estadoFondos);

                //OT 8372 INI

                DataTable dtRegistrosHoja;//almacena el contenido de una hoja del excel

                #region Definir las columnas del DataTable dtRegistrosHoja

                dtRegistrosHoja = new DataTable();

                dtRegistrosHoja.Columns.Add("CODIGO_PARTICIPACION", typeof(string));
                dtRegistrosHoja.Columns.Add("NOMBRE_FONDO", typeof(string));
                dtRegistrosHoja.Columns.Add("MONTO_APORTE", typeof(decimal));

                #endregion

                //OT 8372 FIN

                if (numeroEmpresas == 0)
                {
                    //no hay empresas
                }
                else
                {
                    string   periodo;
                    string[] periodoElementos;
                    string   tipoMovimiento = "I";
                    string   tipoAporte     = ""; //"P"
                    double   montoAporte;
                    string   montoAporteCadena;
                    string   nombreEmpresa;
                    bool     existenRegistrosHoja = true;
                    string   codigoEmpresa        = "";
                    string   constanteCP          = "CP_";

                    // int numeroHojas = numeroEmpresas * 2 + 1;
                    int numeroHojas = 0;
                    //OT 6891 inicio
                    int cantidadHojas = wb.GetSheetCount();
                    if (cantidadHojas == 3)
                    {
                        numeroHojas = wb.GetSheetCount();
                    }
                    else
                    {
                        numeroHojas = numeroEmpresas * 2 + 1;
                    }

                    //for (int i = 1; i <= numeroEmpresas; i++)
                    for (int i = 1; i <= numeroHojas; i++)
                    {
                        //ExcelWorkSheet sheet = wb.GetSheet(i + 1);
                        //Toma a partir de la 4ta hoja porque las 3 primeras son plantillas vacías.
                        //ExcelWorkSheet sheet = wb.GetSheet(i + 1);
                        //Toma a partir de la 4ta hoja porque las 3 primeras son plantillas vacías.
                        // OT 6891
                        ExcelWorkSheet sheet = null;
                        if (cantidadHojas == 3)
                        {
                            sheet = wb.GetSheet(i);
                        }
                        else
                        {
                            sheet = wb.GetSheet(i + 1);
                        }
                        // OT 6891 fin

                        nombreEmpresa = sheet.getName();


                        if (nombreEmpresa.StartsWith(constanteCP))
                        {
                            //StreamWriter sw = new StreamWriter(rutaArchivoDestino + "\\" + "PCP_" + nombreEmpresa + "_" + anio + mes + ".txt");



                            StreamWriter sw = null;
                            String       estadoCabecera;

                            //if (i == 1)
                            //{
                            periodo          = sheet.GetString("B8").Substring(4, 10);
                            periodoElementos = periodo.Split('/');

                            anio = periodoElementos[2].Trim();
                            mes  = periodoElementos[1].Trim();
                            //}

                            codigoEmpresa = sheet.GetString("B1").Trim();
                            DataTable dtDetalleConvenio = conveniosPlanEmpleadorDA.ObtenerDetalleConvenios(codigoEmpresa, Convert.ToInt32(mes), Convert.ToInt32(anio));

                            rowIndex = 13;//13
                            //row = sheet.GetRow(rowIndex++, 'B', 'J'); //OT 6134
                            row = sheet.GetRow(rowIndex++, 'B', 'E');


                            int cont = 0;

                            while (row[0] != null)
                            {
                                //if (row[8].ToString().Trim() == "EFE")
                                //if (row[3].ToString().Trim() == "EFE")
                                estadoCabecera = ObtienePestañaEmpresa(wb, nombreEmpresa.Substring(constanteCP.Length), numeroHojas, row[0].ToString().Substring(0, 8));


                                if (estadoCabecera == "EFE")
                                {
                                    if (existenRegistrosHoja)
                                    {
                                        codigoEmpresa = sheet.GetString("B1").Trim();
                                        //OT 8372 INI
                                        //sw = new StreamWriter(rutaArchivoDestino + "\\" + "PCP_" + nombreEmpresa.Substring(3, nombreEmpresa.Length - 3) + "_" + codigoEmpresa + "_" + anio + mes + ".txt");
                                        //OT 8372 FIN
                                        existenRegistrosHoja = false;
                                    }

                                    //codigoParticipacion = row[1].ToString().Trim();
                                    codigoParticipacion = row[0].ToString().Trim();
                                    //nombreFondo = row[7].ToString().Trim();//OT 6134
                                    nombreFondo = row[1].ToString().Trim();
                                    //montoAporte = Convert.ToDouble(row[6].ToString().Trim()); //OT 6134
                                    montoAporte = Convert.ToDouble(row[2].ToString().Trim()); //OT 6134

                                    //OT 8372 INI

                                    #region Agregar un registro al DataTable dtRegistrosHoja

                                    DataRow newRegistroHoja = dtRegistrosHoja.NewRow();

                                    newRegistroHoja["CODIGO_PARTICIPACION"] = codigoParticipacion;
                                    newRegistroHoja["NOMBRE_FONDO"]         = nombreFondo;
                                    newRegistroHoja["MONTO_APORTE"]         = montoAporte;

                                    dtRegistrosHoja.Rows.Add(newRegistroHoja);

                                    #endregion

                                    #region Se comenta código: El procesamiento de los registros ahora se hará al terminar de leer los registros de toda la hoja

                                    /*
                                     *                              string filtro = "CODIGO = '" + codigoParticipacion + "' AND FONDO = '" + nombreFondo + "' AND MONTO_CONCEPTO = " + montoAporte.ToString();
                                     *                              DataRow[] dDetalleConvenio = dtDetalleConvenio.Select(filtro, "ID_CONVENIO");
                                     *                              //Decimal idConvenio =0;
                                     * Decimal idConvenioDetalle = 0;
                                     * foreach (DataRow dr in dDetalleConvenio)
                                     *                              {
                                     *                                      //if (idConvenio == 0|| idConvenio > 0 && idConvenio == Convert.ToDecimal(dr["ID_CONVENIO"]))
                                     *  if (idConvenioDetalle == 0 || idConvenioDetalle > 0 && idConvenioDetalle == Convert.ToDecimal(dr["ID_CONVENIO_DETALLE"]))
                                     *  {
                                     *      idConvenioDetalle = Convert.ToDecimal(dr["ID_CONVENIO_DETALLE"]);
                                     *
                                     *      sbLinea.Append(codigoParticipacion.Replace("-", "").Trim());
                                     *                                          drFondo = dtFondos.Select("NOMBRE = '" + nombreFondo + "'");
                                     *                                          dtFondosDepositos = conveniosPlanEmpleadorDA.ObtenerTablaGeneralDepositos(codigoTablatablaGeneralDepositos);
                                     *                                          idFondo = drFondo[0]["ID"].ToString();
                                     *                                          drFondoDeposito = dtFondosDepositos.Select("DESCRIPCION_CORTA = '" + idFondo + "'");
                                     *                                          sbLinea.Append(drFondoDeposito[0]["LLAVE_TABLA"].ToString());
                                     *
                                     *                                          sbLinea.Append(anio + mes);
                                     *                                          sbLinea.Append(tipoMovimiento);
                                     *
                                     *                                          tipoAporte = dr["CODIGO_CONCEPTO"].ToString().Trim();
                                     *                                          sbLinea.Append(tipoAporte);
                                     *
                                     *                                          montoAporte = Convert.ToDouble(dr["MONTO_CONCEPTO"]);
                                     *                                          montoAporteCadena = montoAporte.ToString("000000.00");
                                     *                                          montoAporteCadena = montoAporteCadena.Replace(".", "");
                                     *                                          sbLinea.Append(montoAporteCadena);
                                     *
                                     *                                          sw.WriteLine(sbLinea);
                                     *                                          sbLinea.Length = 0;
                                     *                                      }
                                     *                                      else
                                     *                                              break;
                                     *                              }
                                     *
                                     *                          for (int j = dtDetalleConvenio.Rows.Count - 1; j >= 0; --j)
                                     *                          {
                                     *                                  DataRow drDetalleConvenio = dtDetalleConvenio.Rows[j];
                                     *                                  if (idConvenioDetalle == Convert.ToDecimal(drDetalleConvenio["ID_CONVENIO_DETALLE"]))
                                     *                                    dtDetalleConvenio.Rows.Remove(drDetalleConvenio);
                                     *                          }
                                     */
                                    #endregion
                                    //OT 8372 FIN
                                }



                                //row = sheet.GetRow(rowIndex++, 'B', 'J');//OT 6134
                                row  = sheet.GetRow(rowIndex++, 'B', 'E');
                                cont = cont + 1;
                            }

                            //OT 8372 INI

                            #region Procesar todos los registros de la hoja almacenadas en el DataTable dtRegistrosHoja

                            //Obtener los fondos que aparecen en el DataTable dtRegistrosHoja
                            var ListaFondos = (from DataRow dRow in dtRegistrosHoja.Rows
                                               select dRow["NOMBRE_FONDO"]).Distinct();

                            if (ListaFondos != null)
                            {
                                string filtroXNombreFondo;

                                foreach (var objNombreFondo in ListaFondos)
                                {
                                    filtroXNombreFondo = "NOMBRE_FONDO = '" + objNombreFondo + "'";
                                    DataRow[] dRegistrosXFondo = dtRegistrosHoja.Select(filtroXNombreFondo, "CODIGO_PARTICIPACION");

                                    //Crear un archivo plano .txt por cada fondo

                                    //OT 8372-PSC001 INICIO

                                    /*
                                     * sw = new StreamWriter(rutaArchivoDestino + "\\" + "PCP_" + nombreEmpresa.Substring(3, nombreEmpresa.Length - 3)
                                     + "_" + codigoEmpresa + "_" + objNombreFondo + "_" + anio + mes + ".txt");
                                     */
                                    sw = new StreamWriter(rutaArchivoDestino + "\\" + "PCP_" + "F" + "_" + objNombreFondo + "._"
                                                          + nombreEmpresa.Substring(3, nombreEmpresa.Length - 3)
                                                          + "_" + codigoEmpresa + "_" + anio + mes + ".txt");

                                    //OT 8372-PSC001 FIN

                                    foreach (var dRegistroXFondo in dRegistrosXFondo)
                                    {
                                        #region procesar un registro

                                        string filtro = "CODIGO = '" + dRegistroXFondo["CODIGO_PARTICIPACION"]
                                                        + "' AND FONDO = '" + dRegistroXFondo["NOMBRE_FONDO"]
                                                        + "' AND MONTO_CONCEPTO = " + dRegistroXFondo["MONTO_APORTE"].ToString();
                                        DataRow[] dDetalleConvenio = dtDetalleConvenio.Select(filtro, "ID_CONVENIO");
                                        //Decimal idConvenio =0;
                                        Decimal idConvenioDetalle = 0;
                                        foreach (DataRow dr in dDetalleConvenio)
                                        {
                                            //if (idConvenio == 0|| idConvenio > 0 && idConvenio == Convert.ToDecimal(dr["ID_CONVENIO"]))
                                            if (idConvenioDetalle == 0 || idConvenioDetalle > 0 && idConvenioDetalle == Convert.ToDecimal(dr["ID_CONVENIO_DETALLE"]))
                                            {
                                                idConvenioDetalle = Convert.ToDecimal(dr["ID_CONVENIO_DETALLE"]);

                                                sbLinea.Append(dRegistroXFondo["CODIGO_PARTICIPACION"].ToString().Replace("-", "").Trim());
                                                drFondo           = dtFondos.Select("NOMBRE = '" + dRegistroXFondo["NOMBRE_FONDO"] + "'");
                                                dtFondosDepositos = conveniosPlanEmpleadorDA.ObtenerTablaGeneralDepositos(codigoTablatablaGeneralDepositos);
                                                idFondo           = drFondo[0]["ID"].ToString();
                                                drFondoDeposito   = dtFondosDepositos.Select("DESCRIPCION_CORTA = '" + idFondo + "'");
                                                sbLinea.Append(drFondoDeposito[0]["LLAVE_TABLA"].ToString());

                                                sbLinea.Append(anio + mes);
                                                sbLinea.Append(tipoMovimiento);

                                                tipoAporte = dr["CODIGO_CONCEPTO"].ToString().Trim();
                                                sbLinea.Append(tipoAporte);

                                                montoAporte       = Convert.ToDouble(dr["MONTO_CONCEPTO"]);
                                                montoAporteCadena = montoAporte.ToString("000000.00");
                                                montoAporteCadena = montoAporteCadena.Replace(".", "");
                                                sbLinea.Append(montoAporteCadena);

                                                sw.WriteLine(sbLinea);
                                                sbLinea.Length = 0;
                                            }
                                            else
                                            {
                                                break;
                                            }
                                        }

                                        for (int j = dtDetalleConvenio.Rows.Count - 1; j >= 0; --j)
                                        {
                                            DataRow drDetalleConvenio = dtDetalleConvenio.Rows[j];
                                            if (idConvenioDetalle == Convert.ToDecimal(drDetalleConvenio["ID_CONVENIO_DETALLE"]))
                                            {
                                                dtDetalleConvenio.Rows.Remove(drDetalleConvenio);
                                            }
                                        }

                                        #endregion
                                    }

                                    if (sw != null)
                                    {
                                        sw.Close();
                                    }
                                }

                                dtRegistrosHoja.Rows.Clear();
                            }

                            #endregion

                            //OT 8372 FIN

                            if (cont > 0)
                            {
                                if (sw != null)
                                {
                                    sw.Close();
                                }
                            }
                            existenRegistrosHoja = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                wb.Close();
                excelApplication.Close();
                System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
            }
        }
        public void Procesar()
        {
            ExcelApplication excelApplication = new ExcelApplication();
            CargaContratoDA  da = new CargaContratoDA();
            SqlConnection    cn = GetConnection();

            cn.Open();

            SqlTransaction trans         = cn.BeginTransaction(IsolationLevel.ReadUncommitted);
            int            cucanterior   = 0;
            int            idanterior    = 0;
            string         prmVidaAhorro = "";
            string         prmCUC        = "";

            try
            {
                // Abriendo el archivo que contiene la información
                excelApplication.OpenWorkBook(sourcePath, ExcelMode.Full);
                ExcelWorkSheet sheet = excelApplication.GetWorkBook(1).GetSheet(1);

                //Obtiene los prospectos vacios
                CargaContratoDA cargaContratoDA = new CargaContratoDA();
                DataTable       dtProspectos    = cargaContratoDA.ObtenerListaProspectosVacios();

                // Obteniendo la información del archivo
                int      rowIndex = 6;
                object[] row      = sheet.GetRow(rowIndex++, 'C', 'Z', 4);
                int      contador = 0;
                //OT 6891 inicio
                DataTable dtCodVida       = ObtenerCodigoEmpresas_Vida();
                string    DSC_VIDA_AHORRO = "";
                if (dtCodVida.Rows.Count > 0)
                {
                    DataRow row1 = dtCodVida.Rows[0];
                    //Obtiene nombre de la empresa Vida Ahorro
                    DSC_VIDA_AHORRO = Convert.ToString(row1["DESCRIPCION_LARGA"]);
                }


                DataTable dtPlanVidaAhorro     = ObtenerPlanVidaAhorro();
                string    DSC_PLAN_VIDA_AHORRO = "";
                if (dtPlanVidaAhorro.Rows.Count > 0)
                {
                    DataRow row2 = dtPlanVidaAhorro.Rows[0];
                    //Obtiene nombre de la empresa Vida Ahorro
                    DSC_PLAN_VIDA_AHORRO = Convert.ToString(row2["VALOR"]);
                }


                while (row[0] != null)
                {
                    try
                    {
                        int idProspecto     = Convert.ToInt32(sheet.GetString(string.Format("B{0}", rowIndex - 1))) - 44670000;
                        int codigoProspecto = Convert.ToInt32(sheet.GetString(string.Format("B{0}", rowIndex - 1)));

                        //Leer datos del Partícipe



                        ParticipeTD.ParticipeRow drParticipe = new ParticipeTD().Participe.NewParticipeRow();
                        drParticipe.IDENTIFICADOR = Convert.ToInt32(sheet.GetString(string.Format("B{0}", rowIndex - 1))) - 44670000;
                        drParticipe.CODIGO        = Convert.ToInt32(sheet.GetString(string.Format("B{0}", rowIndex - 1)));
                        // Ini - traer el CUC del Participe OT 6891
                        prmCUC = drParticipe.CODIGO.ToString();
                        // Fin  - traer el CUC del Participe OT 6891
                        drParticipe.TIPO_PERSONA     = row[71].ToString();
                        drParticipe.NOMBRE1          = row[2].ToString();
                        drParticipe.NOMBRE2          = row[3] == null ? "" : row[3].ToString();
                        drParticipe.NOMBRE3          = row[4] == null ? "" : row[4].ToString();
                        drParticipe.APELLIDO_PATERNO = row[5].ToString();
                        drParticipe.APELLIDO_MATERNO = row[6].ToString();
                        drParticipe.SEXO             = row[72].ToString();
                        drParticipe.FECHA_NACIMIENTO = Convert.ToDateTime(row[8]);

                        drParticipe.TIPO_DOCUMENTO        = row[73].ToString();
                        drParticipe.NUMERO_DOCUMENTO      = row[10].ToString();
                        drParticipe.TIPO_FIRMA            = row[74].ToString();
                        drParticipe.TIPO_PARTICIPE        = row[75].ToString();
                        drParticipe.ESTADO_CIVIL          = row[76].ToString();
                        drParticipe.CODIGO_AGENCIA_ORIGEN = row[77] == null ? "" : row[77].ToString();
                        drParticipe.TIPO_PERSONERIA       = row[78] == null ? "" : row[78].ToString();
                        drParticipe.SENAS_PARTICULARES    = row[16] == null ? "" : row[16].ToString();
                        drParticipe.FLAG_RELACION_SURA    = "N";
                        drParticipe.NACIONALIDAD          = row[80].ToString();
                        drParticipe.PROFESION             = row[18] == null ? "" : row[18].ToString();
                        drParticipe.COMPANIA                   = row[19] == null ? "" : row[19].ToString();
                        drParticipe.CARGO                      = row[20] == null ? "" : row[20].ToString();
                        drParticipe.NUMERO_HIJOS               = row[21] == null ? 0 : Convert.ToInt32(row[21]);
                        drParticipe.LUGAR_NACIMIENTO           = row[81] == null ? null : row[81].ToString();
                        drParticipe.PAIS_RESIDENCIA            = row[82].ToString();
                        drParticipe.NIVEL_CARGO                = row[83] == null ? null : row[83].ToString();
                        drParticipe.GRADO_INSTRUCCION          = row[84] == null ? null : row[84].ToString();
                        drParticipe.CAPACIDAD_LEGAL            = row[85] == null ? null : row[85].ToString();
                        drParticipe.FLAG_CORRESPONDENCIA_EMAIL = row[27] == null ? "" : row[27].ToString();
                        drParticipe.FLAG_MEDIO_CONSULTAS       = row[28] == null ? "" : row[28].ToString();
                        drParticipe.FLAG_MEDIO_OPERACIONES     = row[29] == null ? "" : row[29].ToString();
                        drParticipe.TIPO_ATRIBUCION            = row[100] == null ? null : row[100].ToString();

                        drParticipe.USUARIO = codigoUsuario;
                        //INI OT 6891
                        // Tabla telefono
                        ParticipeTD.TelefonoRow drTelefono = new ParticipeTD().Telefono.NewTelefonoRow();
                        drTelefono.NUMERO = row[31] == null ? "" : row[31].ToString();


                        //Tabla correo electronico
                        ParticipeTD.Correo_EletronicoRow drCorreo = new ParticipeTD().Correo_Eletronico.NewCorreo_EletronicoRow();
                        drCorreo.CORREO = row[30] == null ? "" : row[30].ToString();

                        ParticipeTD.BoletinesRow drboletin = new ParticipeTD().Boletines.NewBoletinesRow();
                        drboletin.BOLETIN = row[32].ToString();

                        // Tabla direccion
                        ParticipeTD.DireccionRow drDireccion = new ParticipeTD().Direccion.NewDireccionRow();
                        string pais = "";
                        pais = row[105].ToString();
                        if (row[103].Equals("") || row[103].Equals(null) || pais.Length > 5)
                        {
                            drDireccion.DEPARTAMENTO = 0;
                        }
                        else
                        {
                            drDireccion.DEPARTAMENTO = Convert.ToInt32(row[103]);
                        }
                        string ciud = "";
                        ciud = row[105].ToString();
                        if (row[104].Equals("") || row[104].Equals(null) || ciud.Length > 5)
                        {
                            drDireccion.CIUDAD = 0;
                        }
                        else
                        {
                            drDireccion.CIUDAD = Convert.ToInt32(row[104]);
                        }
                        string dist = "";
                        dist = row[105].ToString();
                        if (row[105].Equals("") || row[105].Equals(null) || dist.Length > 5)
                        {
                            drDireccion.DISTRITO = 0;
                        }
                        else
                        {
                            drDireccion.DISTRITO = Convert.ToInt32(row[105]);
                        }
                        //  drDireccion.CIUDAD = Convert.ToInt32(row[104]);
                        //****
                        // drDireccion.DISTRITO = Convert.ToInt32(row[105]);
                        drDireccion.TIPO_VIA       = row[106] == null ? "" : row[106].ToString();
                        drDireccion.NOMBRE_VIA     = row[37] == null ? "" : row[37].ToString();
                        drDireccion.NU_IND_DEP     = row[38] == null ? "" : row[38].ToString();
                        drDireccion.UBICACION      = row[40] == null ? "" : row[40].ToString();
                        drDireccion.TIPO_UBICACION = row[107] == null ? "" : row[107].ToString();


                        //fin OT 6891


                        //Leer datos del Fondo

                        ParticipeTD.FondoRow drFondo = new ParticipeTD().Fondo.NewFondoRow();
                        drFondo.ID_FONDO = Convert.ToInt32(row[87]);
                        //OT5012 INI
                        drFondo.FECHA = Convert.ToDateTime(row[43]);

                        //Leer datos del documento
                        ParticipeTD.DocumentoRow drDocumento = new ParticipeTD().Documento.NewDocumentoRow();
                        //OT5012 FIN

                        drDocumento.TIPO          = row[86].ToString();
                        drDocumento.FECHA         = Convert.ToDateTime(row[43]);
                        drDocumento.DESCRIPCION   = row[44] == null ? "" : row[44].ToString();
                        drDocumento.CODIGO_IMAGEN = row[45] == null ? "" : row[45].ToString();

                        //Inicio  OT 6891
                        // Cuenta Participacion
                        CuentaParticipacionTD.CUENTA_PARTICIPACIONRow drCuentaParticipacion = new CuentaParticipacionTD().CUENTA_PARTICIPACION.NewCUENTA_PARTICIPACIONRow();
                        drCuentaParticipacion.VIDA_AHORRO = row[109] == null ? "" : row[109].ToString();
                        drCuentaParticipacion.CODIGO      = prmCUC;
                        drCuentaParticipacion.ETIQUETA    = DSC_VIDA_AHORRO;
                        prmVidaAhorro = drCuentaParticipacion.VIDA_AHORRO;
                        drCuentaParticipacion.USUARIO_CREACION = codigoUsuario;
                        drCuentaParticipacion.CODIGO_PLAN      = DSC_PLAN_VIDA_AHORRO;
                        // Fin  OT 6891

                        ParticipeTD.ParticipeRow drParticipeAsociado = null;


                        //Leer partícipe asociado
                        if (drParticipe.TIPO_PERSONA.Equals("MAN") && cucanterior != codigoProspecto)
                        {
                            drParticipeAsociado = new ParticipeTD().Participe.NewParticipeRow();

                            drParticipeAsociado.TIPO_PERSONA = "NAT";

                            drParticipeAsociado.NOMBRE1          = row[47].ToString();
                            drParticipeAsociado.NOMBRE2          = row[48] == null ? "" : row[48].ToString();
                            drParticipeAsociado.NOMBRE3          = row[49] == null ? "" : row[49].ToString();
                            drParticipeAsociado.APELLIDO_PATERNO = row[50].ToString();
                            drParticipeAsociado.APELLIDO_MATERNO = row[51].ToString();
                            drParticipeAsociado.SEXO             = row[72].ToString();
                            drParticipeAsociado.FECHA_NACIMIENTO = Convert.ToDateTime(row[53]);
                            drParticipeAsociado.TIPO_DOCUMENTO   = row[73].ToString();
                            drParticipeAsociado.NUMERO_DOCUMENTO = row[55].ToString();
                            drParticipeAsociado.TIPO_FIRMA       = "IND";
                            drParticipeAsociado.TIPO_PARTICIPE   = row[91].ToString();

                            drParticipeAsociado.ESTADO_CIVIL          = row[92].ToString();
                            drParticipeAsociado.CODIGO_AGENCIA_ORIGEN = ""; //
                            drParticipeAsociado.TIPO_PERSONERIA       = ""; //

                            drParticipeAsociado.SENAS_PARTICULARES = "";    //
                            drParticipeAsociado.FLAG_RELACION_SURA = "N";
                            drParticipeAsociado.NACIONALIDAD       = row[94].ToString();
                            drParticipeAsociado.PROFESION          = row[61] == null ? "" : row[61].ToString();
                            drParticipeAsociado.COMPANIA           = row[62] == null ? "" : row[62].ToString();
                            drParticipeAsociado.CARGO             = row[63] == null ? "" : row[63].ToString();
                            drParticipeAsociado.NUMERO_HIJOS      = row[64] == null ? 0 : Convert.ToInt32(row[64]);
                            drParticipeAsociado.LUGAR_NACIMIENTO  = row[95].ToString();
                            drParticipeAsociado.PAIS_RESIDENCIA   = row[96].ToString();
                            drParticipeAsociado.NIVEL_CARGO       = row[96].ToString();
                            drParticipeAsociado.GRADO_INSTRUCCION = row[99].ToString();
                            drParticipeAsociado.CAPACIDAD_LEGAL   = row[99].ToString();

                            drParticipeAsociado.USUARIO = codigoUsuario;
                        }
                        //Partícipes NAT
                        if (row[71].ToString().Equals("NAT"))
                        {
                            cargaContratoDA.registrarParticipe(drParticipe, drFondo, drDocumento, drCorreo, drTelefono, drboletin, drDireccion, cn, trans);
                            // OT 6891 INICIO
                            if (prmVidaAhorro.Equals("S"))
                            {
                                cargaContratoDA.RegistrarCuentaParticipacion_x_Participe(drCuentaParticipacion, prmCUC, codigoUsuario, cn, trans);
                            }
                            // FIN OT 6891 FIN
                            DataTable dtPersona = cargaContratoDA.ObtenerPersona(drParticipe, cn, trans);

                            if (dtPersona.Rows.Count == 0)
                            {
                                cargaContratoDA.registrarPersona(drParticipe, cn, trans);
                            }
                            else
                            {
                                cargaContratoDA.ActualizarPersona(drParticipe, cn, trans, "N");
                                cargaContratoDA.ActualizarParticipeXDocumento(drParticipe, cn, trans, "N");
                            }
                        }
                        //Partícipes MAN
                        else
                        {
                            //Registra dos prospectos
                            if (codigoProspecto != cucanterior)
                            {
                                String contrasenaCifrada = "";
                                String claveEncriptada   = cargaContratoDA.ObtenerClaveEncriptada(cn, trans);

                                String areaModificacion = "OPE";
                                String flagVerOperacion = "S";
                                String flagAccesoWeb    = "S";

                                contrasenaCifrada = obtenerContrasenaCifrada(claveEncriptada);
                                cargaContratoDA.registrarProspectos(drParticipe, contrasenaCifrada, areaModificacion, flagVerOperacion, flagAccesoWeb, cn, trans); //TITULAR

                                contrasenaCifrada = obtenerContrasenaCifrada(claveEncriptada);
                                cargaContratoDA.registrarProspectos(drParticipeAsociado, contrasenaCifrada, areaModificacion, flagVerOperacion, flagAccesoWeb, cn, trans); //ASOCIADO
                                /*CARGA DE LA PERSONA DEL ASOCIADO*/
                                DataTable dtPersona = cargaContratoDA.ObtenerPersona(drParticipeAsociado, cn, trans);
                                if (dtPersona.Rows.Count == 0)
                                {
                                    cargaContratoDA.registrarPersona(drParticipeAsociado, cn, trans);
                                }
                                else
                                {
                                    cargaContratoDA.ActualizarPersona(drParticipeAsociado, cn, trans, "S");
                                    cargaContratoDA.ActualizarParticipeXDocumento(drParticipeAsociado, cn, trans, "S");
                                }
                                int idParticipe         = drParticipe.CODIGO - 44670000;
                                int idProspectoTitular  = drParticipe.IDENTIFICADOR;
                                int idProspectoAsociado = drParticipeAsociado.IDENTIFICADOR;
                                cargaContratoDA.actualizarParticipe(drParticipe, cn, trans); //REGISTRO DEL PARTICIPE MANCOMUNO
                                /*CARGA DE LA PERSONA DEL TITULAR*/
                                dtPersona = cargaContratoDA.ObtenerPersona(drParticipe, cn, trans);
                                if (dtPersona.Rows.Count == 0)
                                {
                                    cargaContratoDA.registrarPersona(drParticipe, cn, trans);
                                }
                                else
                                {
                                    cargaContratoDA.ActualizarPersona(drParticipe, cn, trans, "N");
                                    cargaContratoDA.ActualizarParticipeXDocumento(drParticipe, cn, trans, "N");
                                }
                                //REGISTRAMOS LA RELACION ENTRE EL TITULAR Y EL ASOCIADO
                                decimal porcentajeTitular  = decimal.MinValue;
                                decimal porcentajeAsociado = decimal.MinValue;

                                if (row[86] != null && row[86].ToString().Equals("DIS"))
                                {
                                    porcentajeTitular  = Convert.ToDecimal(row[101]) * 100;
                                    porcentajeAsociado = Convert.ToDecimal(row[102]) * 100;
                                    if (porcentajeTitular + porcentajeAsociado != 100)
                                    {
                                        throw new Exception("La suma de los porcentajes debe sumar 100%.");
                                    }

                                    cargaContratoDA.registrarParticipeXparticipe(idProspecto, idProspecto, codigoUsuario, porcentajeTitular, cn, trans);
                                }
                                cargaContratoDA.registrarParticipeXparticipe(idProspecto, idProspectoAsociado, codigoUsuario, porcentajeAsociado, cn, trans);
                            }
                            //OT5012 INI
                            cargaContratoDA.registrarFondos(drFondo, idProspecto, codigoUsuario, cn, trans);
                            //OT5012 FIN
                        }
                        // FIN OT 6891
                        //sheet.SetValue(string.Format("B{0}",rowIndex-1),codigoProspecto);
                        cucanterior = codigoProspecto;
                        idanterior  = idProspecto;

                        row = sheet.GetRow(rowIndex++, 'C', 'Z', 4);
                        contador++;
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(string.Format("Error en la línea {0}. Detalle " + ex.Message, rowIndex - 1));
                    }
                }

                trans.Commit();
                excelApplication.GetWorkBook(1).Save();
                excelApplication.Show();
            }
            catch (Exception ex)
            {
                trans.Rollback();
                excelApplication.GetWorkBook(1).Close();
                excelApplication.Close();
                throw ex;
            }
            finally
            {
                trans.Dispose();
                cn.Close();
                excelApplication.Close();
            }
        }
Exemplo n.º 4
0
        //OT 8372-PSC001
        public void generarArchivoUnico(string rutaArchivo, string rutaArchivoDestino)
        {
            StringBuilder sbLinea;

            sbLinea = new StringBuilder("");

            //StreamWriter sw = null;

            string path = rutaArchivo;

            System.Globalization.CultureInfo oldCI = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");

            ExcelApplication excelApplication = new ExcelApplication();
            ExcelWorkBook    wb = excelApplication.OpenWorkBook(path, ExcelMode.Full);

            try
            {
                ConveniosPlanEmpleadorDA conveniosPlanEmpleadorDA = new ConveniosPlanEmpleadorDA();
                string    codigosEmpresas   = "COD_EMP_CON";
                DataTable dtCodigosEmpresas = conveniosPlanEmpleadorDA.ObtenerTablaGeneral(codigosEmpresas);
                int       numeroEmpresas    = dtCodigosEmpresas.Rows.Count;

                object[] row;
                int      rowIndex;

                string    codigoParticipacion;
                string    nombreFondo;
                DataRow[] drFondo;
                DataTable dtFondosDepositos;
                DataRow[] drFondoDeposito;
                string    idFondo;
                string    codigoTablatablaGeneralDepositos = "FONDO_EQUIV";
                string    mes  = "";
                string    anio = "";

                string    estadoFondos = "ACT";
                DataTable dtFondos     = conveniosPlanEmpleadorDA.ListarFondos(estadoFondos);

                if (numeroEmpresas == 0)
                {
                    //no hay empresas
                }
                else
                {
                    string   periodo;
                    string[] periodoElementos;
                    string   tipoMovimiento = "I";
                    string   tipoAporte     = ""; //"P"
                    double   montoAporte;
                    string   montoAporteCadena;
                    string   nombreEmpresa;
                    bool     existenRegistrosHoja = true;
                    string   codigoEmpresa        = "";
                    string   constanteCP          = "CP_";

                    // int numeroHojas = numeroEmpresas * 2 + 1;
                    int numeroHojas = 0;
                    //OT 6891 inicio
                    int cantidadHojas = wb.GetSheetCount();
                    if (cantidadHojas == 3)
                    {
                        numeroHojas = wb.GetSheetCount();
                    }
                    else
                    {
                        numeroHojas = numeroEmpresas * 2 + 1;
                    }

                    //for (int i = 1; i <= numeroEmpresas; i++)
                    for (int i = 1; i <= numeroHojas; i++)
                    {
                        //ExcelWorkSheet sheet = wb.GetSheet(i + 1);
                        //Toma a partir de la 4ta hoja porque las 3 primeras son plantillas vacías.
                        //ExcelWorkSheet sheet = wb.GetSheet(i + 1);
                        //Toma a partir de la 4ta hoja porque las 3 primeras son plantillas vacías.
                        // OT 6891
                        ExcelWorkSheet sheet = null;
                        if (cantidadHojas == 3)
                        {
                            sheet = wb.GetSheet(i);
                        }
                        else
                        {
                            sheet = wb.GetSheet(i + 1);
                        }
                        // OT 6891 fin

                        nombreEmpresa = sheet.getName();


                        if (nombreEmpresa.StartsWith(constanteCP))
                        {
                            //StreamWriter sw = new StreamWriter(rutaArchivoDestino + "\\" + "PCP_" + nombreEmpresa + "_" + anio + mes + ".txt");



                            StreamWriter sw = null;
                            String       estadoCabecera;

                            //if (i == 1)
                            //{
                            periodo          = sheet.GetString("B8").Substring(4, 10);
                            periodoElementos = periodo.Split('/');

                            anio = periodoElementos[2].Trim();
                            mes  = periodoElementos[1].Trim();
                            //}

                            codigoEmpresa = sheet.GetString("B1").Trim();
                            DataTable dtDetalleConvenio = conveniosPlanEmpleadorDA.ObtenerDetalleConvenios(codigoEmpresa, Convert.ToInt32(mes), Convert.ToInt32(anio));

                            rowIndex = 13;//13
                            //row = sheet.GetRow(rowIndex++, 'B', 'J'); //OT 6134
                            row = sheet.GetRow(rowIndex++, 'B', 'E');


                            int cont = 0;

                            while (row[0] != null)
                            {
                                //if (row[8].ToString().Trim() == "EFE")
                                //if (row[3].ToString().Trim() == "EFE")
                                estadoCabecera = ObtienePestañaEmpresa(wb, nombreEmpresa.Substring(constanteCP.Length), numeroHojas, row[0].ToString().Substring(0, 8));


                                if (estadoCabecera == "EFE")
                                {
                                    if (existenRegistrosHoja)
                                    {
                                        codigoEmpresa = sheet.GetString("B1").Trim();

                                        //OT 8372-PSC001 INICIO

                                        //sw = new StreamWriter(rutaArchivoDestino + "\\" + "PCP_" + nombreEmpresa.Substring(3, nombreEmpresa.Length - 3) + "_" + codigoEmpresa + "_" + anio + mes + ".txt");
                                        sw = new StreamWriter(rutaArchivoDestino + "\\" + "PCP_" + "T" + "_"
                                                              + nombreEmpresa.Substring(3, nombreEmpresa.Length - 3) + "_" + codigoEmpresa + "_" + anio + mes + ".txt");

                                        //OT 8372-PSC001 FIN

                                        existenRegistrosHoja = false;
                                    }

                                    //codigoParticipacion = row[1].ToString().Trim();
                                    codigoParticipacion = row[0].ToString().Trim();
                                    //nombreFondo = row[7].ToString().Trim();//OT 6134
                                    nombreFondo = row[1].ToString().Trim();
                                    //montoAporte = Convert.ToDouble(row[6].ToString().Trim()); //OT 6134
                                    montoAporte = Convert.ToDouble(row[2].ToString().Trim()); //OT 6134

                                    string    filtro           = "CODIGO = '" + codigoParticipacion + "' AND FONDO = '" + nombreFondo + "' AND MONTO_CONCEPTO = " + montoAporte.ToString();
                                    DataRow[] dDetalleConvenio = dtDetalleConvenio.Select(filtro, "ID_CONVENIO");
                                    //Decimal idConvenio =0;
                                    Decimal idConvenioDetalle = 0;
                                    foreach (DataRow dr in dDetalleConvenio)
                                    {
                                        //if (idConvenio == 0|| idConvenio > 0 && idConvenio == Convert.ToDecimal(dr["ID_CONVENIO"]))
                                        if (idConvenioDetalle == 0 || idConvenioDetalle > 0 && idConvenioDetalle == Convert.ToDecimal(dr["ID_CONVENIO_DETALLE"]))
                                        {
                                            idConvenioDetalle = Convert.ToDecimal(dr["ID_CONVENIO_DETALLE"]);

                                            sbLinea.Append(codigoParticipacion.Replace("-", "").Trim());
                                            drFondo           = dtFondos.Select("NOMBRE = '" + nombreFondo + "'");
                                            dtFondosDepositos = conveniosPlanEmpleadorDA.ObtenerTablaGeneralDepositos(codigoTablatablaGeneralDepositos);
                                            idFondo           = drFondo[0]["ID"].ToString();
                                            drFondoDeposito   = dtFondosDepositos.Select("DESCRIPCION_CORTA = '" + idFondo + "'");
                                            sbLinea.Append(drFondoDeposito[0]["LLAVE_TABLA"].ToString());

                                            sbLinea.Append(anio + mes);
                                            sbLinea.Append(tipoMovimiento);

                                            tipoAporte = dr["CODIGO_CONCEPTO"].ToString().Trim();
                                            sbLinea.Append(tipoAporte);

                                            montoAporte       = Convert.ToDouble(dr["MONTO_CONCEPTO"]);
                                            montoAporteCadena = montoAporte.ToString("000000.00");
                                            montoAporteCadena = montoAporteCadena.Replace(".", "");
                                            sbLinea.Append(montoAporteCadena);

                                            sw.WriteLine(sbLinea);
                                            sbLinea.Length = 0;
                                        }
                                        else
                                        {
                                            break;
                                        }
                                    }

                                    for (int j = dtDetalleConvenio.Rows.Count - 1; j >= 0; --j)
                                    {
                                        DataRow drDetalleConvenio = dtDetalleConvenio.Rows[j];
                                        if (idConvenioDetalle == Convert.ToDecimal(drDetalleConvenio["ID_CONVENIO_DETALLE"]))
                                        {
                                            dtDetalleConvenio.Rows.Remove(drDetalleConvenio);
                                        }
                                    }
                                }

                                //row = sheet.GetRow(rowIndex++, 'B', 'J');//OT 6134
                                row  = sheet.GetRow(rowIndex++, 'B', 'E');
                                cont = cont + 1;
                            }

                            if (cont > 0)
                            {
                                if (sw != null)
                                {
                                    sw.Close();
                                }
                            }
                            existenRegistrosHoja = true;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                wb.Close();
                excelApplication.Close();
                System.Threading.Thread.CurrentThread.CurrentCulture = oldCI;
            }
        }
Exemplo n.º 5
0
        public void Procesar()
        {
            ExcelApplication            excelApplication = new ExcelApplication();
            CargarRetencionPagoFlujosDA da = new CargarRetencionPagoFlujosDA();
            SqlConnection cn = GetConnection();

            cn.Open();

            SqlTransaction trans       = cn.BeginTransaction(IsolationLevel.ReadUncommitted);
            DateTime       fechaActual = DateTime.Now;


            try
            {
                // Abriendo el archivo que contiene la información
                excelApplication.OpenWorkBook(sourcePath, ExcelMode.Full);
                ExcelWorkSheet sheet = excelApplication.GetWorkBook(1).GetSheet(1);

                // Obteniendo la información del archivo
                int rowIndex = 2;
                //object[] row = sheet.GetRow(rowIndex++, 'A', 'C', 4);
                object[] row = sheet.GetRow(rowIndex++, 'A', 'C');

                while (row[0] != null)
                {
                    try
                    {
                        int idOperacion = Convert.ToInt32(sheet.GetString(string.Format("A{0}", rowIndex - 1)));
                        int idParticipe = Convert.ToInt32(sheet.GetString(string.Format("B{0}", rowIndex - 1)));
                        //decimal montoRetencion = Convert.ToDecimal(sheet.GetString(string.Format("C{0}", rowIndex - 1)));
                        String  montoRetencionCadena = Convert.ToDecimal(sheet.GetString(string.Format("C{0}", rowIndex - 1))).ToString("0.00000000");
                        decimal montoRetencion       = Convert.ToDecimal(montoRetencionCadena);

                        PagoFlujosTD.PagoFlujosRow drPagoFlujos = new PagoFlujosTD().PagoFlujos.NewPagoFlujosRow();
                        drPagoFlujos.ID_OPERACION     = idOperacion;
                        drPagoFlujos.ID_PARTICIPE     = idParticipe;
                        drPagoFlujos.RETENCION        = montoRetencion;
                        drPagoFlujos.FECHA            = fechaActual;
                        drPagoFlujos.USUARIO_CREACION = codigoUsuario;

                        da.registrarPagoFlujos(drPagoFlujos, cn, trans);
                        row = sheet.GetRow(rowIndex++, 'A', 'C');
                    }
                    catch (Exception ex)
                    {
                        throw new Exception(string.Format("Error en la línea {0}. Detalle " + ex.Message, rowIndex - 1));
                    }
                    //excelApplication.GetWorkBook(1).Save();
                    //excelApplication.Show();
                }
                trans.Commit();
            }
            catch (Exception ex)
            {
                trans.Rollback();
                excelApplication.GetWorkBook(1).Close();
                excelApplication.Close();
                throw ex;
            }
            finally
            {
                trans.Dispose();
                cn.Close();
                excelApplication.Close();
            }
        }