// Cuando le doy a imprimir, también cobro la matrícula. Por ahora solo la cobra. No se realizó la impresión de la factura private void btn_imprimir_Click(object sender, EventArgs e) { switch (concepto) { case "Cuota": #region Cobro de cuota oCtaCte = miProfesional.CtaCte; Modelo_Entidades.Auditoria_Cuota oLog_Cuota; if (ListaCuotas.Count == 0) { MessageBox.Show("Debe seleccionar al menos 1 cuota para cobrar"); } else { foreach (Modelo_Entidades.Cuota oCuo in ListaCuotas) { #region Audito la cuota oLog_Cuota = new Modelo_Entidades.Auditoria_Cuota(); oLog_Cuota.estado = false; oLog_Cuota.descripcion = oCuo.descripcion; oLog_Cuota.Profesional_dni = oCuo.Profesional.dni; oLog_Cuota.usuario = miUsuario.nombre_apellido; oLog_Cuota.fecha = DateTime.Now; oLog_Cuota.accion = "Modificación de cuota al profesional " + oCuo.Profesional.nombre_apellido; cAuditoria.AuditarCuota(oLog_Cuota); #endregion oCuo.estado = true; } // 1º Creo un una nueva factura oFactura = new Modelo_Entidades.Factura(); int i = 0; double suma = 0; // 2º Cargo los datos de la factura oFactura.cantidad = 1; oFactura.descripcion = "Pago de cuotas"; oFactura.precio_unitario = 1; foreach (Modelo_Entidades.Movimiento oMov in ListaMovimientos) // Acá saldo a cada movimiento que genero la cuota, con otro movimiento igual, pero con distinto tipo y le coloco la misma factura { oMovimiento = new Modelo_Entidades.Movimiento(); oMovimiento.fecha = DateTime.Now; oMovimiento.importe = oMov.importe; oMovimiento.descripcion = oMov.descripcion; oMovimiento.CtaCte = miProfesional.CtaCte; oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Acreedor(); while (i < dgv_factura.Rows.Count) { if (dgv_factura.Rows[i] != null) { suma = Convert.ToDouble(dgv_factura.Rows[i].Cells[2].Value) + suma; } i++; } oFactura.importe = Convert.ToDecimal(suma); oFactura.total = Convert.ToDecimal(suma); oMovimiento.Comprobante = oFactura; cMovimiento.Alta(oMovimiento); oFactura.Movimientos.Add(oMovimiento); miProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte.saldo = oCtaCte.saldo + Convert.ToDecimal(oMov.importe); //miProfesional.CtaCte.saldo = miProfesional.CtaCte.saldo + Convert.ToDecimal(oMov.importe); // Sumo al saldo, cuando el profesional termina de pagar // Elimino todos los movimientos bimensuales del año que le cobré string año = oMov.descripcion.Substring(oMov.descripcion.Length - Math.Min(4, oMov.descripcion.Length)); if (oMov.descripcion.Contains("anual") == true) // Quiere decir que pagó la cuota anual { foreach (Modelo_Entidades.Movimiento oMovi in cMovimiento.ObtenerMovimientos()) { if (oMovi.descripcion.Contains("/") && oMovi.descripcion.Contains(año) && oMovi.CtaCte.id == miProfesional.CtaCte.id) // Pregunto por las cuotas de ese año que pagó { //miProfesional.CtaCte.saldo = miProfesional.CtaCte.saldo + Convert.ToDecimal(oMovi.importe); Modelo_Entidades.Cuota CuotaAEliminar = cCuota.ObtenerCuota(oMovi.descripcion, miProfesional.dni); if (CuotaAEliminar != null) // Solo resto cuando elimino la cuota { #region Audito la cuota oLog_Cuota = new Modelo_Entidades.Auditoria_Cuota(); oLog_Cuota.estado = false; oLog_Cuota.descripcion = CuotaAEliminar.descripcion; oLog_Cuota.Profesional_dni = CuotaAEliminar.Profesional.dni; oLog_Cuota.usuario = miUsuario.nombre_apellido; oLog_Cuota.fecha = DateTime.Now; oLog_Cuota.accion = "Eliminacíón de cuota bimensual al profesional " + CuotaAEliminar.Profesional.nombre_apellido; cAuditoria.AuditarCuota(oLog_Cuota); #endregion oCtaCte.saldo = oCtaCte.saldo + Convert.ToDecimal(oMovi.importe); // Sumo al saldo, ya que le estoy anulando la cuota cCuota.EliminarCuota(CuotaAEliminar); // Entonces debo eliminar las cuotas de ese año } cCtaCte.Modificacion(oCtaCte); } } } else { Modelo_Entidades.Cuota CuotaAEliminar = cCuota.ObtenerCuota(("Cuota anual año " + año), miProfesional.dni); if (CuotaAEliminar != null) // Solo resto cuando elimino la cuota { double valor = (cMovimiento.BuscarMovimientoPorCuotaYProf("Cuota anual año " + año, miProfesional.CtaCte.id).importe); #region Audito la cuota oLog_Cuota = new Modelo_Entidades.Auditoria_Cuota(); oLog_Cuota.estado = false; oLog_Cuota.descripcion = CuotaAEliminar.descripcion; oLog_Cuota.Profesional_dni = CuotaAEliminar.Profesional.dni; oLog_Cuota.usuario = miUsuario.nombre_apellido; oLog_Cuota.fecha = DateTime.Now; oLog_Cuota.accion = "Eliminacíón de cuota anual al profesional " + CuotaAEliminar.Profesional.nombre_apellido; cAuditoria.AuditarCuota(oLog_Cuota); #endregion oCtaCte.saldo = oCtaCte.saldo + Convert.ToDecimal(valor); // Sumo al saldo, ya que le estoy anulando la cuota cCuota.EliminarCuota(CuotaAEliminar); // Entonces debo eliminar las cuotas de ese año } cCtaCte.Modificacion(oCtaCte); } } // Después de cobrarle hago la verificación de si 1º no tiene deudas de otros años y 2º si tiene paga la 1º o la cuota anual del año en curso // El mayor es por los intereses. Además se podría colocar que el saldo debe ser mayor o igual a 0, pero el colegio no lo toma como requisito (&& miProfesional.CtaCte.saldo >= 0) if (((cCuota.ObtenerSiElProfPago(miProfesional, ("Cuota " + "1" + "/" + DateTime.Now.Year.ToString()), DateTime.Now.Year.ToString())) == true)) { miProfesional.Estado = cEstado.ObtenerEstadoHabilitado(); cProfesional.Modificacion(miProfesional); } txt_total.Text = suma.ToString(); FormularioImpresionRecibo = new FrmImprimirRecibo(oFactura.id); DialogResult DrLogin = FormularioImpresionRecibo.ShowDialog(); this.Close(); } #endregion break; case "Expediente": #region Cobro de expediente // Cambio el estado del expediente a pagado oExpediente.estado = "Pagado"; oExpediente.fecha_pago = DateTime.Now; oCtaCte = miProfesional.CtaCte; // 1º Creo un una nueva factura oFactura = new Modelo_Entidades.Factura(); int i_1 = 0; double suma_1 = 0; // 2º Cargo los datos de la factura oFactura.cantidad = 1; oFactura.descripcion = "Pago de expediente"; oFactura.precio_unitario = 1; Modelo_Entidades.Movimiento oMovi_expte = new Modelo_Entidades.Movimiento(); oMovi_expte.fecha = DateTime.Now; oMovi_expte.importe = oMovimiento.importe; oMovi_expte.descripcion = "Pago expediente número " + oExpediente.numero; oMovi_expte.CtaCte = miProfesional.CtaCte; oMovi_expte.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Acreedor(); while (i_1 < dgv_factura.Rows.Count) { if (dgv_factura.Rows[i_1] != null) { suma_1 = Convert.ToDouble(dgv_factura.Rows[i_1].Cells[2].Value) + suma_1; } i_1++; } oFactura.importe = Convert.ToDecimal(suma_1); oFactura.total = Convert.ToDecimal(suma_1); oMovi_expte.Comprobante = oFactura; cMovimiento.Alta(oMovi_expte); oFactura.Movimientos.Add(oMovi_expte); miProfesional.CtaCte.Movimientos.Add(oMovi_expte); oCtaCte.saldo = oCtaCte.saldo + Convert.ToDecimal(oMovi_expte.importe); FormularioImpresionRecibo = new FrmImprimirRecibo(oFactura.id); DialogResult DrLogin_1 = FormularioImpresionRecibo.ShowDialog(); this.Close(); #endregion break; } }