protected void btnEnviarSinAplicar_Click(object sender, System.EventArgs e) { AdministrarCertificados objAdministrarCertificados = new AdministrarCertificados(); DataTable dtCertificados = new DataTable(); DataTable dtNovedad = new DataTable(); DataTable dtNovedades = new DataTable(); double valor = 0; string cedulaNovedad = ""; try { //Pregunta si ya se encuentra un id y un causal seleccionado if (txtIdNovedad.Text != "" && ddlSinAplicar.SelectedValue.ToString() != "") { //se pasa la novedad de retiro del mismo tercero a sin aplicar int localidad = (Session["localidad"].ToString() == "") ? 0 : int.Parse(Session["localidad"].ToString()); //Lista las novedades pendientes segun los parametros enviados DataTable dt = AdministrarNovedades.ConsultarNovedadesArchivoEnviada(localidad, 0, 0, 1, 1); //Recorre el dt con las novedades pendientes foreach (DataRow row in dt.Rows) { //entra solo si el id que se esta recorriendo es igual al cargado en el txt if (row["Id"].ToString() == txtIdNovedad.Text) { //asigna en una variable la cedula cedulaNovedad = row["Documento"].ToString(); } } foreach (DataRow row in dt.Rows) { /*Pregunta si el documento que se esta recorriendo es igual a la cedula del registro pendiente por * por enviar a sin aplicar y si el tipo de novedad es retiro */ if (row["Documento"].ToString() == cedulaNovedad && row["Tipo Novedad"].ToString() == "RETIRO") { //Se ammarra este retiro y se envia a sin aplicar al igual que el anterior AdministrarNovedades.ActualizarDePendienteASinAplicar(int.Parse(row["Id"].ToString()), 0, ddlSinAplicar.SelectedValue.ToString()); } } //Se envia novedad a sin aplicar AdministrarNovedades.ActualizarDePendienteASinAplicar(int.Parse(txtIdNovedad.Text), 0, ddlSinAplicar.SelectedValue.ToString()); //Se consulta la novedad enviada a sin aplicar dtNovedad = AdministrarNovedades.ConsultarNovedadPorTercero("0", "0", "0", txtIdNovedad.Text); if (dtNovedad.Rows.Count != 0) { //Se asigna a variable el valor de la novedad valor = double.Parse(dtNovedad.Rows[0]["nov_Valor"].ToString()); //Consulta certificados por los cuales posiblemente se genero la novedad enviada a sin aplicar dtCertificados = AdministrarNovedades.ConsultarCertificadoPorPagaduriaArchivo(dtNovedad.Rows[0]["ter_Id"].ToString(), dtNovedad.Rows[0]["arcpag_Id"].ToString(), txtIdNovedad.Text); //Se consulta la novedad enviada a sin aplicar dtNovedades = AdministrarNovedades.ConsultarNovedadPorTercero(dtNovedad.Rows[0]["ter_Id"].ToString(), dtNovedad.Rows[0]["arcpag_Id"].ToString(), "2", "0"); if (dtNovedades.Rows.Count != 0) { valor -= double.Parse(dtNovedades.Rows[0]["nov_Valor"].ToString()); } int i = 0; //Envia los certificados consultados a no aplicar hasta que el valor se reduzca a 0 while (valor > 0 && i < dtCertificados.Rows.Count) { valor -= double.Parse(dtCertificados.Rows[i]["cer_PrimaTotal"].ToString()); objAdministrarCertificados.ActualizarEstadoNegocioDevolucion("NO APLICO", int.Parse(dtCertificados.Rows[i]["cer_Id"].ToString())); i++; } } ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + "Novedades pendiente enviada a sin aplicar" + "');", true); ddlAnio_SelectedIndexChanged(sender, e); } } catch { ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + "HA OCURRIDO UN ERROR AL TRATA DE ENVIAR LA NOVEDAD A SIN APLICAR" + "');", true); } }
public void RealizarReversion(DataTable dtInformacionCertificado) { DAOPagos objPagos = new DAOPagos(); DataTable dtConsultarInformacionAnteriorPagosReversion = new DataTable(); DataTable dtBorradoDeDatos = new DataTable(); //Consultar las aplicaciones de los clientes que van para reversion, las cuales son mayores al inicio de vigencia del certificado dtConsultarInformacionAnteriorPagosReversion = ConsultarInformacionAnteriorPagosReversion(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), DateTime.Parse(dtInformacionCertificado.Rows[0]["cer_VigenciaDesde"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString())); DataTable dtCertificadoAnterior = new DataTable(); //Pregunta si el certificado que se esta recorriendo ya posee un certificado anterior if (dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString() != "") { //Consulta el certificado con el cer_Id que se envie como parametro dtCertificadoAnterior = objPagos.ConsultarCertificado(double.Parse(dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString())); } //Actualiza el estado de negocio del certificado recorrido a "NO APLICO" objPagos.ActualizarEstadoNegocioDevolucion("NO APLICO", double.Parse(dtInformacionCertificado.Rows[0]["cer_Id"].ToString())); //------------------------------------ //Actualiza la novedad a no aplico nov_Estado = 0 AdministrarCertificados objAdministrarCertificados = new AdministrarCertificados(); AdministrarNovedades objAdministrarNovedades = new AdministrarNovedades(); DataTable dtArchivo = new DataTable(); dtArchivo = objAdministrarCertificados.ConsultarIdArchivo(int.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString()), int.Parse(dtInformacionCertificado.Rows[0]["convenio"].ToString())); DataTable dtNovedadActual = new DataTable(); dtNovedadActual = objAdministrarCertificados.ConsultarNovedadActual(int.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dtArchivo.Rows[0]["arcpag_Id"].ToString()), 0); if (dtNovedadActual.Rows.Count != 0) { AdministrarNovedades.ActualizarDePendienteASinAplicar(int.Parse(dtNovedadActual.Rows[0]["nov_Id"].ToString()), 0, "1"); } //------------------------------------- //Pregunta si el certificado que se esta recorriendo ya posee un certificado anterior if (dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString() != "") { //Si posee un certificado anterior se pasara a "VIGENTE", con el fin de que este vuelva a activarse, ya que el actual se actualizo a "NO APLICO" objPagos.ActualizarEstadoNegocioDevolucion("VIGENTE", double.Parse(dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString())); //Crea novedad //SI TENIA CERTIFICADO ANTERIOR DUPLICAR LA ULTIMA NOVEDAD APLICADA Y PONER EN DEV_ESTADO=1 Y ENVIADA=0 if (dtNovedadActual.Rows.Count != 0) { DataTable dtNovedadAnterior = AdministrarNovedades.ConsultarNovedadPorTercero("0", "0", "0", dtNovedadActual.Rows[0]["nov_Id"].ToString()); AdministrarNovedades.InsertarNovedades(int.Parse(dtNovedadActual.Rows[0]["Cedula"].ToString()), dtNovedadActual.Rows[0]["TipoNovedad"].ToString(), 1, int.Parse(dtNovedadActual.Rows[0]["Pagaduria"].ToString()), int.Parse(dtNovedadActual.Rows[0]["Convenio"].ToString()), int.Parse(dtNovedadActual.Rows[0]["Archivo"].ToString()), int.Parse(dtNovedadActual.Rows[0]["Valor"].ToString()), 0, int.Parse(dtNovedadAnterior.Rows[0]["nov_Mes"].ToString()), int.Parse(dtNovedadAnterior.Rows[0]["nov_Anio"].ToString())); } } else { //Crea novedad de retiro //SI NO TIENE CERTIFICADO ANTERIOR CREAR UNA NOVEDAD DE RETIRO if (dtNovedadActual.Rows.Count != 0) { DataTable dtNovedadAnterior = AdministrarNovedades.ConsultarNovedadPorTercero("0", "0", "0", dtNovedadActual.Rows[0]["nov_Id"].ToString()); AdministrarNovedades.InsertarNovedades(int.Parse(dtNovedadAnterior.Rows[0]["ter_Id"].ToString()), "R", 1, int.Parse(dtNovedadAnterior.Rows[0]["paga_Id"].ToString()), int.Parse(dtNovedadAnterior.Rows[0]["con_Id"].ToString()), int.Parse(dtNovedadAnterior.Rows[0]["arcpag_Id"].ToString()), 0, 0, int.Parse(dtNovedadAnterior.Rows[0]["nov_Mes"].ToString()), int.Parse(dtNovedadAnterior.Rows[0]["nov_Anio"].ToString())); } } /*Pregunta si el tipo movimiento es un ingreso y si es diferente de coversión, todo esto con el fin de*/ if (int.Parse(dtInformacionCertificado.Rows[0]["TipoMovimiento"].ToString()) == 53 && int.Parse(dtInformacionCertificado.Rows[0]["casesp_Id"].ToString()) != 2) { //Pregunta si el certificado nuevo ya tenia algun pago if (dtConsultarInformacionAnteriorPagosReversion.Rows.Count > 0) { //Recorre el foreach para actualizar las aplicaciones realizadas a devolución de prima foreach (DataRow dt in dtConsultarInformacionAnteriorPagosReversion.Rows) { //Actualizar aplicaciones a devolución segun su pago_Id enviado como parametro objPagos.ActualizarDepIdParaReversion(double.Parse(dt["aplPago_Id"].ToString()), 1); } } } else { //Recorre el dt con los pagos que van para reversión foreach (DataRow dt in dtConsultarInformacionAnteriorPagosReversion.Rows) { //Actualiza las aplicaciones necesarias al estado reversión objPagos.ActualizarReversionYBorradoDeAplicacion(double.Parse(dt["aplPago_Id"].ToString()), 0); } int recorre = 0; //Recorre el dt con todos los pagos mayores al inicio de vigencia foreach (DataRow dt in dtConsultarInformacionAnteriorPagosReversion.Rows) { //if (recorre == 0) //{ //Consulta las aplicaciones que hay por cada uno de los pagos mayores al inicio de vigencia DataTable dtConsultarInformacionAnteriorPagosReversionPagoId = new DataTable(); dtConsultarInformacionAnteriorPagosReversionPagoId = objPagos.ConsultarInformacionAnteriorPagosReversionPagoId(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), DateTime.Parse(dtInformacionCertificado.Rows[0]["cer_VigenciaDesde"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString()), double.Parse(dt["pago_Id"].ToString())); /*Llena dt con la misma informacion de dtConsultarInformacionAnteriorPagosReversionPagoId, todo esto con el fin de realizar * una funcionalidad diferente */ dtBorradoDeDatos = dtConsultarInformacionAnteriorPagosReversionPagoId; //Crea variable y la iguala a 0 double pagos = 0; //Recorre el dt con cada unas de las aplicaciones realizadas por pago foreach (DataRow dt2 in dtConsultarInformacionAnteriorPagosReversionPagoId.Rows) { //Suma los valores de estas aplicaciones pagos += int.Parse(dt2["aplPago_Valor"].ToString()); } try { //Recorre el while siempre y cuando el pago aun tenga un valor mayor a 0 while (pagos > 0) { DataTable dtProductoARealizarPago = new DataTable(); double valorAplicar = 0; //Pregunta si ya posee un certificado anterior if (dtCertificadoAnterior.Rows.Count > 0) { //Consulta el producto al cual se le debe hacer la reversión y se le envia el producto de su certificado anterior objPagos.ActualizarConvenioCertificado(double.Parse(dtInformacionCertificado.Rows[0]["cer_IdAnterior"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString())); dtProductoARealizarPago = objPagos.ConsultarProductoParaPagoReversion(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), double.Parse(dtCertificadoAnterior.Rows[0]["pro_Id"].ToString())); } else { //Consulta el producto al cual se le debe hacer la reversión y se le envia el producto de su certificado actual dtProductoARealizarPago = objPagos.ConsultarProductoParaPagoReversion(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString())); } if (double.Parse(dtProductoARealizarPago.Rows[0]["VALOR APLICAR"].ToString()) > 0) { //Asigna en una variable el valor que se debe aplicar, traido desde dtProductoARealizarPago valorAplicar = double.Parse(dtProductoARealizarPago.Rows[0]["VALOR APLICAR"].ToString()); //pregunta si el pago es menor a lo que se le debe pagar, en caso de ser asi el valor a aplicar es igual a la variable pago if (pagos < double.Parse(dtProductoARealizarPago.Rows[0]["VALOR APLICAR"].ToString())) { valorAplicar = pagos; } //Pregunta si el certificado que se esta recorriendo es un caso de conversion if (int.Parse(dtInformacionCertificado.Rows[0]["casesp_Id"].ToString()) == 2) { //Ingresa la aplicacion y le asigna a esta el mismo rec_Id del certificado anterior this.IngresarAplicacionPagoCliente(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dt["pago_Id"].ToString()), int.Parse(dtProductoARealizarPago.Rows[0]["pro_Id"].ToString()), Convert.ToDateTime(dtProductoARealizarPago.Rows[0]["VIGENCIA APLICAR"].ToString()), 0, valorAplicar, int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), 1, double.Parse(dtConsultarInformacionAnteriorPagosReversionPagoId.Rows[0]["pago_Recibo"].ToString()), double.Parse(dtProductoARealizarPago.Rows[0]["CER_ID"].ToString())); } else { //Ingresa la aplicacion y le asigna a esta el rec_Id calculado por el sistema this.IngresarAplicacionPagoCliente(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dt["pago_Id"].ToString()), int.Parse(dtProductoARealizarPago.Rows[0]["pro_Id"].ToString()), Convert.ToDateTime(dtProductoARealizarPago.Rows[0]["VIGENCIA APLICAR"].ToString()), 0, valorAplicar, int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), 0, double.Parse(dtConsultarInformacionAnteriorPagosReversionPagoId.Rows[0]["pago_Recibo"].ToString()), double.Parse(dtProductoARealizarPago.Rows[0]["CER_ID"].ToString())); } //Le resta a la variable pago, el valor que se aplico anteriormente pagos -= double.Parse(dtProductoARealizarPago.Rows[0]["VALOR APLICAR"].ToString()); } else { valorAplicar = pagos; //Ingresa la aplicacion y le asigna a esta el rec_Id calculado por el sistema this.IngresarAplicacionPagoCliente(double.Parse(dtInformacionCertificado.Rows[0]["Cedula"].ToString()), int.Parse(dt["pago_Id"].ToString()), int.Parse(dtInformacionCertificado.Rows[0]["Producto"].ToString()), DateTime.Today, 1, valorAplicar, int.Parse(dtInformacionCertificado.Rows[0]["Convenio"].ToString()), 0, double.Parse(dtConsultarInformacionAnteriorPagosReversionPagoId.Rows[0]["pago_Recibo"].ToString()), double.Parse(dtInformacionCertificado.Rows[0]["cer_Id"].ToString())); //Le resta a la variable pago, el valor que se aplico anteriormente pagos -= valorAplicar; } } } catch { } /*Recorre el dtBorradoDeDatos que es igual a dtConsultarInformacionAnteriorPagosReversionPagoId, esto con el fin * de eliminar las aplicaciones ya que no son requeridas luego de realizar toda la funcionalidad anterior*/ foreach (DataRow dt3 in dtBorradoDeDatos.Rows) { //Borra las aplicaciones correspondientes luego de realizar la funcionalidad anterior objPagos.ActualizarReversionYBorradoDeAplicacion(double.Parse(dt3["aplPago_Id"].ToString()), 1); recorre = 1; } //} } } }