/// <summary> /// Obtiene los registros de asientos tipo PD de retenciones generadas. /// </summary> /// <param name="dtAsientos">Tabla en la que se volcará la información de los asientos a generar.</param> /// <param name="fechaInicio">Fecha de inicio de la consulta.</param> /// <param name="fechaFin">Fecha de fin de la consulta.</param> public void ObtenerAsientosPDRetenciones(Procesos.TD.Asiento.LISTA_ASIENTODataTable dtAsientos, DateTime fechaInicio, DateTime fechaFin) { try { SqlConnection cn = GetConnection(); SqlCommand cmd = new SqlCommand("dbo.FMPR_OBT_RETENCIONES_X_MONEDA", cn); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandTimeout = 1000; SqlParameter prmFechaInicio = cmd.Parameters.Add("@fechaInicio", SqlDbType.Date); prmFechaInicio.Value = fechaInicio; SqlParameter prmFechaFin = cmd.Parameters.Add("@fechaFin", SqlDbType.Date); prmFechaFin.Value = fechaFin; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); foreach (DataRow dr in dt.Rows) { dtAsientos.ImportRow(dr); } } catch (Exception ex) { throw ex; } }
/// <summary> /// Obtiene los asientos generados de un tipo de asiento determinado y completa las información de los UUID y estados registrados. /// </summary> /// <param name="dtAsientos">Tabla que contiene la data de los asientos a generar.</param> /// <param name="tipoAsiento">Indica el tipo de asiento que se desea verificar su generación previa.</param> /// <param name="fecha">Indica la fecha de consulta de los asientos.</param> public void ListarControlAsiento(Procesos.TD.Asiento.LISTA_ASIENTODataTable dtAsientos, string tipoAsiento, DateTime fecha) { SqlConnection cn = GetConnection(); SqlCommand cmd = new SqlCommand("dbo.FMPR_LIS_CONTROL_ASIENTO", cn); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandTimeout = 1000; SqlParameter prmTipoAsiento = cmd.Parameters.Add("@tipoAsiento", SqlDbType.VarChar); prmTipoAsiento.Value = tipoAsiento; SqlParameter prmFechaInicio = cmd.Parameters.Add("@fechaInicio", SqlDbType.Date); prmFechaInicio.Value = fecha; SqlParameter prmFechaFin = cmd.Parameters.Add("@fechaFin", SqlDbType.Date); prmFechaFin.Value = fecha; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); foreach (DataRow dr in dt.Rows) { DataRow[] drAsientos = dtAsientos.Select("MONEDA = '" + dr["MONEDA"] + "' AND FECHA_PROCESO = '#" + fecha.ToString("dd/MM/yyyy") + "#' AND FONDO = '" + dr["FONDO"] + "'"); drAsientos[0]["UUID"] = dr["UUID"]; drAsientos[0]["ESTADO"] = dr["ESTADO"]; drAsientos[0]["DESCRIPCION_ERROR"] = dr["DESCRIPCION_ERROR"]; } }
/// <summary> /// Obtiene los registros de asientos tipo VT y PD de comisiones anticipadas. /// </summary> /// <param name="dtAsientos">Tabla en la que se volcará la información de los asientos a generar.</param> /// <param name="fechaInicio">Fecha de inicio de la consulta.</param> /// <param name="fechaFin">Fecha de fin de la consulta.</param> public void ObtenerAsientosVTComisiones(Procesos.TD.Asiento.LISTA_ASIENTODataTable dtAsientos, DateTime fechaInicio, DateTime fechaFin, bool sapActivo) { try { SqlConnection cn = GetConnection(); SqlCommand cmd = new SqlCommand("dbo.FMPR_OBT_COMISIONES_ANTICIPADAS", cn); cmd.CommandType = CommandType.StoredProcedure; cmd.CommandTimeout = 1000; SqlParameter prmFechaInicio = cmd.Parameters.Add("@fechaInicio", SqlDbType.Date); prmFechaInicio.Value = fechaInicio; SqlParameter prmFechaFin = cmd.Parameters.Add("@fechaFin", SqlDbType.Date); prmFechaFin.Value = fechaFin; SqlParameter prmSapActivo = cmd.Parameters.Add("@SAP_ACTIVO", SqlDbType.VarChar); prmSapActivo.Value = sapActivo ? "S" : "N"; //SqlParameter prmBoletaTexto = cmd.Parameters.Add("@boletaTexto", SqlDbType.VarChar); //prmBoletaTexto.Value = boletaTexto; //SqlParameter prmBoletaNumero = cmd.Parameters.Add("@boletaNumero", SqlDbType.VarChar); //prmBoletaNumero.Value = boletaNumero; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); foreach (DataRow dr in dt.Rows) { dtAsientos.ImportRow(dr); } } catch (Exception ex) { throw ex; } }
/// <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; } }
//OT7999 FIN /// <summary> /// Obtiene los registros de asientos tipo PD de retenciones generadas. /// </summary> /// <param name="dtAsientos">Tabla en la que se volcará la información de los asientos a generar.</param> /// <param name="fechaInicio">Fecha de inicio de la consulta.</param> /// <param name="fechaFin">Fecha de fin de la consulta.</param> public void ObtenerAsientosPDRetenciones(Procesos.TD.Asiento.LISTA_ASIENTODataTable dtAsientos, DateTime fechaInicio, DateTime fechaFin) { da.ObtenerAsientosPDRetenciones(dtAsientos, fechaInicio, fechaFin); }