// Genero la cuota anual para un nuevo profesional private void GeneraCuotaAnual(Modelo_Entidades.Profesional oProfesional) { oCtaCte = oProfesional.CtaCte; Modelo_Entidades.Boleta oBoleta = new Modelo_Entidades.Boleta(); Modelo_Entidades.Movimiento oMovimiento = new Modelo_Entidades.Movimiento(); oLog_Cuota = new Modelo_Entidades.Auditoria_Cuota(); oMovimiento.fecha = DateTime.Now; Modelo_Entidades.Anual oAnual = new Modelo_Entidades.Anual(); if (oProfesional.Tipo_Matricula.descripcion == "Relación de Dependencia") { oMovimiento.importe = Math.Round(cCuota.ObtenerValor_Tipo_Couta(oAnual).Valor() * 0.7, 2); // EL PORCENTAJE ESTÁ HARKODEADO, DE TODAS FORMAS ESE ES EL VALOR QUE ANUALMENTE EL COLEGIO DISPONE } else { oMovimiento.importe = Math.Round(cCuota.ObtenerValor_Tipo_Couta(oAnual).Valor(), 2); } oMovimiento.descripcion = "Cuota anual año " + DateTime.Now.Year.ToString(); oAnual.descripcion = "Cuota anual año " + DateTime.Now.Year.ToString(); oAnual.estado = false; oAnual.Profesional = oProfesional; cCuota.AgregarCuota(oAnual); #region Audito la cuota oLog_Cuota.estado = false; oLog_Cuota.descripcion = "Cuota anual año " + DateTime.Now.Year.ToString(); oLog_Cuota.Profesional_dni = oProfesional.dni; oLog_Cuota.usuario = miUsuario.nombre_apellido; oLog_Cuota.fecha = DateTime.Now; oLog_Cuota.accion = "Agregado de cuota anual al profesional " + oProfesional.nombre_apellido; cAuditoria.AuditarCuota(oLog_Cuota); #endregion oMovimiento.fecha = DateTime.Now; oMovimiento.CtaCte = oProfesional.CtaCte; oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Deudor(); oMovimiento.Comprobante = oBoleta; cMovimiento.Alta(oMovimiento); oProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte.saldo = oCtaCte.saldo - Convert.ToDecimal(oMovimiento.importe); cCtaCte.Modificacion(oCtaCte); }
// 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; } }
// Modificar a una cta cte public void Modificacion(Modelo_Entidades.CtaCte oCtaCte) { oModelo_Entidades.ApplyCurrentValues("CtasCtes", oCtaCte); oModelo_Entidades.SaveChanges(); }
// Liquido las OI private void Liquidar_OI() { // Lo 1º que hago es eliminar la liquidación anterior foreach (Modelo_Entidades.Liquidacion oLiq in cLiquidacion.ObtenerLiquidaciones()) { if (oOI.numero == oLiq.Expediente.numero) { cLiquidacion.EliminarLiquidacion(oLiq); } } #region Liquidación del OI // Faltaria validar los datos del OI (con un metodo) decimal monto_obra_definitivo = cExpediente.CalcularTotalaLiquidar_OI(nud_monto_obra_OI.Value); monto_obra = monto_obra_definitivo; if (chk_anteproyecto.Checked == true) // Verifica si esta tildado { // Liquido el anteproyecto (10%) Modelo_Entidades.Liquidacion NuevaLiquidacion_a = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_a.tarea = "Anteproyecto"; NuevaLiquidacion_a.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de anteproyecto NuevaLiquidacion_a.importe = monto_obra; NuevaLiquidacion_a.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_a); oOI.Liquidaciones.Add(NuevaLiquidacion_a); } else { // Liquido el anteproyecto (10%) Modelo_Entidades.Liquidacion NuevaLiquidacion_a = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_a.tarea = "Anteproyecto"; NuevaLiquidacion_a.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de anteproyecto NuevaLiquidacion_a.importe = 0; NuevaLiquidacion_a.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_a); oOI.Liquidaciones.Add(NuevaLiquidacion_a); } if (chk_proyecto_sin_anteproyecto.Checked == true) // Verifica si esta tildado { // Liquido el proyecto sin el anteproyecto (45%) Modelo_Entidades.Liquidacion NuevaLiquidacion_b = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_b.tarea = "Proyecto sin anteproyecto"; NuevaLiquidacion_b.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de anteproyecto NuevaLiquidacion_b.importe = monto_obra; NuevaLiquidacion_b.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_b); oOI.Liquidaciones.Add(NuevaLiquidacion_b); } else { // Liquido el proyecto sin el anteproyecto (45%) Modelo_Entidades.Liquidacion NuevaLiquidacion_b = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_b.tarea = "Proyecto sin anteproyecto"; NuevaLiquidacion_b.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de anteproyecto NuevaLiquidacion_b.importe = 0; NuevaLiquidacion_b.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_b); oOI.Liquidaciones.Add(NuevaLiquidacion_b); } if (chk_proyecto.Checked == true) // Verifica si esta tildado { // Liquido el proyecto (55%) Modelo_Entidades.Liquidacion NuevaLiquidacion_c = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_c.tarea = "Proyecto de la obra"; NuevaLiquidacion_c.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Proyecto de la obra NuevaLiquidacion_c.importe = monto_obra; NuevaLiquidacion_c.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_c); oOI.Liquidaciones.Add(NuevaLiquidacion_c); } else { // Liquido el proyecto (55%) Modelo_Entidades.Liquidacion NuevaLiquidacion_c = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_c.tarea = "Proyecto de la obra"; NuevaLiquidacion_c.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Proyecto de la obra NuevaLiquidacion_c.importe = 0; NuevaLiquidacion_c.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_c); oOI.Liquidaciones.Add(NuevaLiquidacion_c); } if (chk_conduccion_tecnica.Checked == true) // Verifica si esta tildado { // Liquido la conducción técnica (45%) Modelo_Entidades.Liquidacion NuevaLiquidacion_d = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_d.tarea = "Conducción técnica de la obra"; NuevaLiquidacion_d.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Conducción técnica de la obra NuevaLiquidacion_d.importe = monto_obra; NuevaLiquidacion_d.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_d); oOI.Liquidaciones.Add(NuevaLiquidacion_d); } else { // Liquido la conducción técnica (45%) Modelo_Entidades.Liquidacion NuevaLiquidacion_d = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_d.tarea = "Conducción técnica de la obra"; NuevaLiquidacion_d.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Conducción técnica de la obra NuevaLiquidacion_d.importe = 0; NuevaLiquidacion_d.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_d); oOI.Liquidaciones.Add(NuevaLiquidacion_d); } if (chk_administracion.Checked == true) // Verifica si esta tildado { // Liquido la Administración a cargo del comitente (13.5%) Modelo_Entidades.Liquidacion NuevaLiquidacion_e = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_e.tarea = "Administración a cargo del comitente"; NuevaLiquidacion_e.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Administración a cargo del comitente NuevaLiquidacion_e.importe = monto_obra; NuevaLiquidacion_e.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_e); oOI.Liquidaciones.Add(NuevaLiquidacion_e); } else { // Liquido la Administración a cargo del comitente (13.5%) Modelo_Entidades.Liquidacion NuevaLiquidacion_e = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_e.tarea = "Administración a cargo del comitente"; NuevaLiquidacion_e.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Administración a cargo del comitente NuevaLiquidacion_e.importe = 0; NuevaLiquidacion_e.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_e); oOI.Liquidaciones.Add(NuevaLiquidacion_e); } if (chk_trámites.Checked == true) // Verifica si esta tildado { // Liquido los trámites (0.2%) (es sobre el monto de obra) Modelo_Entidades.Liquidacion NuevaLiquidacion_f = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_f.tarea = "Trámites"; NuevaLiquidacion_f.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Trámites NuevaLiquidacion_f.importe = nud_monto_obra_OI.Value; NuevaLiquidacion_f.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_f); oOI.Liquidaciones.Add(NuevaLiquidacion_f); } else { // Liquido los trámites (0.2%) (es sobre el monto de obra) Modelo_Entidades.Liquidacion NuevaLiquidacion_f = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_f.tarea = "Trámites"; NuevaLiquidacion_f.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Trámites NuevaLiquidacion_f.importe = 0; NuevaLiquidacion_f.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_f); oOI.Liquidaciones.Add(NuevaLiquidacion_f); } if (chk_representacion_tecnica.Checked == true) // Verifica si esta tildado { // Liquido la representación técnica de la obra (13.5% + 45%) Modelo_Entidades.Liquidacion NuevaLiquidacion_g = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_g.tarea = "Representación técnica de la obra"; NuevaLiquidacion_g.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Representación técnica de la obra NuevaLiquidacion_g.importe = monto_obra; NuevaLiquidacion_g.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_g); oOI.Liquidaciones.Add(NuevaLiquidacion_g); } else { // Liquido la representación técnica de la obra (13.5% + 45%) Modelo_Entidades.Liquidacion NuevaLiquidacion_g = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_g.tarea = "Representación técnica de la obra"; NuevaLiquidacion_g.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Representación técnica de la obra NuevaLiquidacion_g.importe = 0; NuevaLiquidacion_g.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_g); oOI.Liquidaciones.Add(NuevaLiquidacion_g); } if (chk_direccion_de_la_obra.Checked == true) // Verifica si esta tildado { // Liquido la dirección de la obra (45%) Modelo_Entidades.Liquidacion NuevaLiquidacion_h = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_h.tarea = "Dirección de la obra"; NuevaLiquidacion_h.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Dirección de la obra NuevaLiquidacion_h.importe = monto_obra; NuevaLiquidacion_h.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_h); oOI.Liquidaciones.Add(NuevaLiquidacion_h); } else { // Liquido la dirección de la obra (45%) Modelo_Entidades.Liquidacion NuevaLiquidacion_h = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_h.tarea = "Dirección de la obra"; NuevaLiquidacion_h.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion de Dirección de la obra NuevaLiquidacion_h.importe = 0; NuevaLiquidacion_h.Expediente = oOI; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_h); oOI.Liquidaciones.Add(NuevaLiquidacion_h); } #endregion // Limpio la grilla dgv_liquidaciones_OI.DataSource = null; // LLeno el binding con los datos que traigo de las entidades BsLiquidaciones_OI.DataSource = cExpediente.LiquidarExpediente(oOI); // Asigno el binding a la grilla dgv_liquidaciones_OI.DataSource = BsLiquidaciones_OI; // Asigno el binding a la grilla dgv_liquidaciones_OI.Columns[0].Visible = false; dgv_liquidaciones_OI.Columns[1].HeaderText = "Tarea"; dgv_liquidaciones_OI.Columns[2].HeaderText = "Cantidad"; dgv_liquidaciones_OI.Columns[3].HeaderText = "Importe"; dgv_liquidaciones_OI.Columns[4].Visible = false; int i_2 = 0; double suma_2 = 0; while (i_2 < dgv_liquidaciones_OI.Rows.Count) { if (dgv_liquidaciones_OI.Rows[i_2] != null) { suma_2 = Convert.ToDouble(dgv_liquidaciones_OI.Rows[i_2].Cells[3].Value) + suma_2; } i_2++; } txt_total_a_liquidar.Text = suma_2.ToString(); txt_aportes_al_cie.Text = ((suma_2) * 0.05).ToString(); txt_aportes_a_caja.Text = ((suma_2) * 0.23).ToString(); txt_total_aportes.Text = (((suma_2) * 0.05) + ((suma_2) * 0.23)).ToString(); InhabilitarTxts(); #region Agregado del saldo a la cta cte del profesional oProfesional = ((Modelo_Entidades.Profesional)dgv_profesionales.CurrentRow.DataBoundItem); if (cMovimiento.BuscarMovimientoPorDescExpte(oOI.numero) != null) // quiere decir que está, por lo que se tiene que modificar { oMovimiento = cMovimiento.BuscarMovimientoPorDescExpte(oOI.numero); // Lo 1º es sumar el saldo anterior, para que no se siga restando oCtaCte = oProfesional.CtaCte; oCtaCte.saldo = oCtaCte.saldo + Convert.ToDecimal(oMovimiento.importe); // Luego, hago los 2 cambios que afectan al movimiento oMovimiento.fecha = DateTime.Now; oMovimiento.importe = ((suma_2) * 0.05); //oMovimiento.descripcion = "Débito del expediente número " + oOI.numero.ToString(); //oMovimiento.CtaCte = oProfesional.CtaCte; //oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Deudor(); //oMovimiento.Comprobante = oBoleta; cMovimiento.ModificarMovimiento(oMovimiento); //oProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte.saldo = oCtaCte.saldo - Convert.ToDecimal(((suma_2) * 0.05)); cCtaCte.Modificacion(oCtaCte); } else { oMovimiento = new Modelo_Entidades.Movimiento(); oBoleta = new Modelo_Entidades.Boleta(); oMovimiento.fecha = DateTime.Now; oMovimiento.importe = ((suma_2) * 0.05); oMovimiento.descripcion = "Débito del expediente número " + oOI.numero.ToString(); oMovimiento.CtaCte = oProfesional.CtaCte; oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Deudor(); oMovimiento.Comprobante = oBoleta; cMovimiento.Alta(oMovimiento); oProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte = oProfesional.CtaCte; oCtaCte.saldo = oCtaCte.saldo - Convert.ToDecimal(((suma_2) * 0.05)); cCtaCte.Modificacion(oCtaCte); } #endregion }
// Liquido los HM private void Liquidar_HM() { // Defino las variables propias del HM oHM.dias_de_campo = nud_dias_campo_HM.Value; oHM.dias_de_gabinete = nud_dias_gabinete_HM.Value; // Lo 1º que hago es eliminar la liquidación anterior foreach (Modelo_Entidades.Liquidacion oLiq in cLiquidacion.ObtenerLiquidaciones()) { if (oHM.numero == oLiq.Expediente.numero) { cLiquidacion.EliminarLiquidacion(oLiq); } } #region Liquidación del HM // Agrego las liquidaciones para que luego pueda modificar sus valores y luegos ponerlas en el datagridview según sea la solapa Modelo_Entidades.Liquidacion NuevaLiquidacion_4 = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_4.tarea = "Dias de campo liquidados"; NuevaLiquidacion_4.cantidad = nud_dias_campo_HM.Value; NuevaLiquidacion_4.importe = 0.7m; // Esta hardcodeado, pero hay que ponerlo para que lo puedan editar en un cuadro grande con los valores de cada una de las posibles liquidaciones de todas las tareas NuevaLiquidacion_4.Expediente = oHM; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_4); oHM.Liquidaciones.Add(NuevaLiquidacion_4); Modelo_Entidades.Liquidacion NuevaLiquidacion_5 = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_5.tarea = "Dias de campo liquidados"; NuevaLiquidacion_5.cantidad = nud_dias_gabinete_HM.Value; NuevaLiquidacion_5.importe = 0.3m; // Esta hardcodeado, pero hay que ponerlo para que lo puedan editar en un cuadro grande con los valores de cada una de las posibles liquidaciones de todas las tareas NuevaLiquidacion_5.Expediente = oHM; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_5); oHM.Liquidaciones.Add(NuevaLiquidacion_5); // Calculo la estrategia dgv_liquidaciones_HM.DataSource = cExpediente.LiquidarExpediente(oHM); // Finalmente muestro la grilla con los datos // Limpio la grilla dgv_liquidaciones_HM.DataSource = null; // LLeno el binding con los datos que traigo de las entidades BsLiquidaciones_HM.DataSource = oHM.Liquidaciones; // Asigno el binding a la grilla dgv_liquidaciones_HM.DataSource = BsLiquidaciones_HM; dgv_liquidaciones_HM.Columns[0].Visible = false; dgv_liquidaciones_HM.Columns[1].HeaderText = "Tarea"; dgv_liquidaciones_HM.Columns[2].HeaderText = "Cantidad"; dgv_liquidaciones_HM.Columns[3].HeaderText = "Importe"; dgv_liquidaciones_HM.Columns[4].Visible = false; #endregion int i_1 = 0; double suma_1 = 0; while (i_1 < dgv_liquidaciones_HM.Rows.Count) { if (dgv_liquidaciones_HM.Rows[i_1] != null) { suma_1 = Convert.ToDouble(dgv_liquidaciones_HM.Rows[i_1].Cells[3].Value) + suma_1; } i_1++; } txt_total_a_liquidar.Text = suma_1.ToString(); txt_aportes_al_cie.Text = ((suma_1) * 0.05).ToString(); txt_aportes_a_caja.Text = ((suma_1) * 0.23).ToString(); txt_total_aportes.Text = (((suma_1) * 0.05) + ((suma_1) * 0.23)).ToString(); InhabilitarTxts(); #region Agregado del saldo a la cta cte del profesional oProfesional = (Modelo_Entidades.Profesional)dgv_profesionales.CurrentRow.DataBoundItem; if (cMovimiento.BuscarMovimientoPorDescExpte(oHM.numero) != null) // quiere decir que está, por lo que se tiene que modificar { oMovimiento = cMovimiento.BuscarMovimientoPorDescExpte(oHM.numero); // Lo 1º es sumar el saldo anterior, para que no se siga restando oCtaCte = oProfesional.CtaCte; oCtaCte.saldo = oCtaCte.saldo + Convert.ToDecimal(oMovimiento.importe); // Luego, hago los 2 cambios que afectan al movimiento oMovimiento.fecha = DateTime.Now; oMovimiento.importe = ((suma_1) * 0.05); //oMovimiento.descripcion = "Débito del expediente número " + oHM.numero.ToString(); //oMovimiento.CtaCte = oProfesional.CtaCte; //oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Deudor(); //oMovimiento.Comprobante = oBoleta; cMovimiento.ModificarMovimiento(oMovimiento); //oProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte.saldo = oCtaCte.saldo - Convert.ToDecimal(((suma_1) * 0.05)); cCtaCte.Modificacion(oCtaCte); } else { oMovimiento = new Modelo_Entidades.Movimiento(); oBoleta = new Modelo_Entidades.Boleta(); oMovimiento.fecha = DateTime.Now; oMovimiento.importe = ((suma_1) * 0.05); oMovimiento.descripcion = "Débito del expediente número " + oHM.numero.ToString(); oMovimiento.CtaCte = oProfesional.CtaCte; oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Deudor(); oMovimiento.Comprobante = oBoleta; cMovimiento.Alta(oMovimiento); oProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte = oProfesional.CtaCte; oCtaCte.saldo = oCtaCte.saldo - Convert.ToDecimal(((suma_1) * 0.05)); cCtaCte.Modificacion(oCtaCte); } #endregion }
// Liquido las FE private void Liquidar_FE() { decimal coeficiente_k; // Lo 1º que hago es eliminar la liquidación anterior foreach (Modelo_Entidades.Liquidacion oLiq in cLiquidacion.ObtenerLiquidaciones()) { if (oFE.numero == oLiq.Expediente.numero) { cLiquidacion.EliminarLiquidacion(oLiq); } } oFE.dias_de_campo = nud_dias_campo_FE.Value; oFE.dias_de_gabinete = nud_dias_campo_FE.Value; oFE.hps = nud_num_hp_FE.Value; oFE.bocas = nud_num_bocas_FE.Value; oFE.motores = nud_num_motores_FE.Value; // Hago los calculos necesarios para obtener el monto de obra coeficiente_k = cExpediente.CalcularCoeficienteK(oFE.hps, oFE.bocas, oFE.motores); #region Liquidación del FE // Agrego las liquidaciones para que luego pueda modificar sus valores y luegos ponerlas en el datagridview según sea la solapa // Liquidacion con respecto a los dias de campo Modelo_Entidades.Liquidacion NuevaLiquidacion_1 = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_1.tarea = "Dias de campo liquidados"; NuevaLiquidacion_1.cantidad = nud_dias_campo_FE.Value; NuevaLiquidacion_1.importe = 0.4m; // Esta hardcodeado, pero hay que ponerlo para que lo puedan editar en un cuadro grande con los valores de cada una de las posibles liquidaciones de todas las tareas NuevaLiquidacion_1.Expediente = oFE; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_1); oFE.Liquidaciones.Add(NuevaLiquidacion_1); // Liquidacion con respecto a los dias de gabinete Modelo_Entidades.Liquidacion NuevaLiquidacion_2 = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_2.tarea = "Dias de campo liquidados"; NuevaLiquidacion_2.cantidad = nud_dias_gabinete_FE.Value; NuevaLiquidacion_2.importe = 0.3m; // Esta hardcodeado, pero hay que ponerlo para que lo puedan editar en un cuadro grande con los valores de cada una de las posibles liquidaciones de todas las tareas NuevaLiquidacion_2.Expediente = oFE; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_2); oFE.Liquidaciones.Add(NuevaLiquidacion_2); // Liquidación con respecto al trabajo en si Modelo_Entidades.Liquidacion NuevaLiquidacion_3 = new Modelo_Entidades.Liquidacion(); NuevaLiquidacion_3.tarea = "Liquidación básica"; NuevaLiquidacion_3.cantidad = 1; // Es siempre 1, ya que existe solo 1 liqudiacion NuevaLiquidacion_3.importe = (oFE.hps * coeficiente_k * 1290) + (oFE.bocas * 290); // Estan hardcodeados, pero hay que ponerlo para que lo puedan editar en un cuadro grande con los valores de cada una de las posibles liquidaciones de todas las tareas NuevaLiquidacion_3.Expediente = oFE; cLiquidacion.AgregarLiquidacion(NuevaLiquidacion_3); oFE.Liquidaciones.Add(NuevaLiquidacion_3); // Calculo la estrategia, y la derivo a la liquidación dgv_liquidaciones_FE.DataSource = cExpediente.LiquidarExpediente(oFE); // Limpio la grilla dgv_liquidaciones_FE.DataSource = null; // LLeno el binding con los datos que traigo de las entidades BsLiquidaciones_FE.DataSource = oFE.Liquidaciones; // Asigno el binding a la grilla dgv_liquidaciones_FE.DataSource = BsLiquidaciones_FE; dgv_liquidaciones_FE.Columns[0].Visible = false; dgv_liquidaciones_FE.Columns[1].HeaderText = "Tarea"; dgv_liquidaciones_FE.Columns[2].HeaderText = "Cantidad"; dgv_liquidaciones_FE.Columns[3].HeaderText = "Importe"; dgv_liquidaciones_FE.Columns[4].Visible = false; #endregion int i = 0; double suma = 0; while (i < dgv_liquidaciones_FE.Rows.Count) { if (dgv_liquidaciones_FE.Rows[i] != null) { suma = Convert.ToDouble(dgv_liquidaciones_FE.Rows[i].Cells[3].Value) + suma; } i++; } txt_total_a_liquidar.Text = suma.ToString(); txt_aportes_al_cie.Text = ((suma) * 0.05).ToString(); txt_aportes_a_caja.Text = ((suma) * 0.23).ToString(); txt_total_aportes.Text = (((suma) * 0.05) + ((suma) * 0.23)).ToString(); InhabilitarTxts(); #region Agregado del saldo a la cta cte del profesional oProfesional = (Modelo_Entidades.Profesional)dgv_profesionales.CurrentRow.DataBoundItem; if (cMovimiento.BuscarMovimientoPorDescExpte(oFE.numero) != null) // quiere decir que está, por lo que se tiene que modificar { oMovimiento = cMovimiento.BuscarMovimientoPorDescExpte(oFE.numero); // Lo 1º es sumar el saldo anterior, para que no se siga restando oCtaCte = oProfesional.CtaCte; oCtaCte.saldo = oCtaCte.saldo + Convert.ToDecimal(oMovimiento.importe); // Luego, hago los 2 cambios que afectan al movimiento oMovimiento.fecha = DateTime.Now; oMovimiento.importe = ((suma) * 0.05); //oMovimiento.descripcion = "Débito del expediente número " + oFE.numero.ToString(); //oMovimiento.CtaCte = oProfesional.CtaCte; //oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Deudor(); //oMovimiento.Comprobante = oBoleta; cMovimiento.ModificarMovimiento(oMovimiento); //oProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte.saldo = oCtaCte.saldo - Convert.ToDecimal(((suma) * 0.05)); cCtaCte.Modificacion(oCtaCte); } else { oMovimiento = new Modelo_Entidades.Movimiento(); oBoleta = new Modelo_Entidades.Boleta(); oMovimiento.fecha = DateTime.Now; oMovimiento.importe = ((suma) * 0.05); oMovimiento.descripcion = "Débito del expediente número " + oFE.numero.ToString(); oMovimiento.CtaCte = oProfesional.CtaCte; oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Deudor(); oMovimiento.Comprobante = oBoleta; cMovimiento.Alta(oMovimiento); oProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte = oProfesional.CtaCte; oCtaCte.saldo = oCtaCte.saldo - Convert.ToDecimal(((suma) * 0.05)); cCtaCte.Modificacion(oCtaCte); } #endregion }
// Genero la cuota bimensual para un nuevo profesional private void GeneraCuotaBimensual(Modelo_Entidades.Profesional oProfesional, int mes) { int numero = mes; switch (numero) { case 1: numero = 1; break; case 2: numero = 1; break; case 3: numero = 2; break; case 4: numero = 2; break; case 5: numero = 3; break; case 6: numero = 3; break; case 7: numero = 4; break; case 8: numero = 4; break; case 9: numero = 5; break; case 10: numero = 5; break; case 11: numero = 6; break; case 12: numero = 6; break; } oCtaCte = oProfesional.CtaCte; Modelo_Entidades.Boleta oBoleta = new Modelo_Entidades.Boleta(); Modelo_Entidades.Movimiento oMovimiento = new Modelo_Entidades.Movimiento(); oLog_Cuota = new Modelo_Entidades.Auditoria_Cuota(); oMovimiento.fecha = DateTime.Now; Modelo_Entidades.Bimensual oBimensual = new Modelo_Entidades.Bimensual(); // Esto verifica si el profesional pagó la anual, no la genere las cuotas bimensuales y el que esté en relación de dependencia, la 5° y 6° cuota no las pague oMovimiento.importe = Math.Round(cCuota.ObtenerValor_Tipo_Couta(oBimensual).Valor(), 2); oMovimiento.descripcion = "Cuota " + numero.ToString() + "/" + DateTime.Now.Year.ToString(); oBimensual.descripcion = "Cuota " + numero.ToString() + "/" + DateTime.Now.Year.ToString(); oBimensual.estado = false; oBimensual.Profesional = oProfesional; cCuota.AgregarCuota(oBimensual); #region Audito la cuota oLog_Cuota.estado = false; oLog_Cuota.descripcion = "Cuota " + numero.ToString() + "/" + DateTime.Now.Year.ToString(); oLog_Cuota.Profesional_dni = oProfesional.dni; oLog_Cuota.usuario = miUsuario.nombre_apellido; oLog_Cuota.fecha = DateTime.Now; oLog_Cuota.accion = "Agregado de cuota bimensual al profesional " + oProfesional.nombre_apellido; cAuditoria.AuditarCuota(oLog_Cuota); #endregion oMovimiento.fecha = DateTime.Now; oMovimiento.CtaCte = oProfesional.CtaCte; oMovimiento.Tipo_Movimiento = cTipo_Movimiento.ObtenerMov_Deudor(); oMovimiento.Comprobante = oBoleta; cMovimiento.Alta(oMovimiento); oProfesional.CtaCte.Movimientos.Add(oMovimiento); oCtaCte.saldo = oCtaCte.saldo - Convert.ToDecimal(oMovimiento.importe); }
// Al hacer click en guardar private void btn_guardar_Click(object sender, EventArgs e) { if (ValidarObligatorios() == true) { try { #region Datos personales del profesional oProfesional.Tipo_Documento = (Modelo_Entidades.Tipo_Documento)cmb_tiposdoc.SelectedItem; oProfesional.dni = Convert.ToInt32(txt_numero.Text); oProfesional.nombre_apellido = txt_nombreapellido.Text; oProfesional.fecha_nacimiento = Convert.ToDateTime(txt_fechanacimiento.Text); if (rbtn_masculino.Checked == true) { oProfesional.sexo = "Masculino"; } else { oProfesional.sexo = "Femenino"; } if (modo == "Alta") { oDireccion = new Modelo_Entidades.Direccion(); oDireccion.direccion = txt_direccion.Text; oDireccion.Localidad = (Modelo_Entidades.Localidad)cmb_localidades.SelectedItem; oProfesional.Direcciones.Add(oDireccion); oDireccionE = new Modelo_Entidades.Direccion(); oDireccionE.direccion = txt_direccion.Text; oDireccionE.Localidad = (Modelo_Entidades.Localidad)cmb_localidades.SelectedItem; oProfesional.Direcciones.Add(oDireccionE); } else { oDireccion = oProfesional.Direcciones.ElementAt(0); oDireccion.Localidad = (Modelo_Entidades.Localidad)cmb_localidades.SelectedItem; oDireccion.direccion = txt_direccion.Text; oProfesional.Direcciones.ElementAt(0).Equals(oDireccion); oDireccionE = oProfesional.Direcciones.ElementAt(1); oDireccionE.Localidad = (Modelo_Entidades.Localidad)cmb_localidadesE.SelectedItem; oDireccionE.direccion = txt_direccionE.Text; oProfesional.Direcciones.ElementAt(1).Equals(oDireccionE); } oProfesional.telefono = Convert.ToInt32(txt_telfijo.Text); oProfesional.celular = Convert.ToInt32(txt_celular.Text); oProfesional.email1 = txt_emailpricipal.Text; oProfesional.email2 = txt_emailalternativo.Text; #endregion #region Matrícula del profesional oProfesional.Tipo_Matricula = (Modelo_Entidades.Tipo_Matricula)cmb_tipomatricula.SelectedItem; if (oProfesional.Tipo_Matricula.descripcion == "Relación de Dependencia") { oProfesional.lugar_trabajo = txt_lugartrabajo.Text; } if (oProfesional.Tipo_Matricula.descripcion == "Reciprocidad de Matrícula") { oProfesional.Colegio = (Modelo_Entidades.Colegio)cmb_colegios.SelectedItem; oProfesional.convenio_año = Convert.ToInt32(txt_año.Text); } if (modo == "Alta") { // Cuando se matricula, le pongo el estado no habilitado. Se va a habilitar cuando pague. oProfesional.Estado = cEstado.ObtenerEstadoNoHabilitado(); // Doy de alta el 1º historial Modelo_Entidades.Historial oHistorial = new Modelo_Entidades.Historial(); oHistorial.estado = (cEstado.ObtenerEstadoHabilitado()).descripcion; oHistorial.tipo_matricula = ((Modelo_Entidades.Tipo_Matricula)cmb_tipomatricula.SelectedItem).descripcion; oHistorial.fecha = DateTime.Now; oHistorial.observaciones = "Alta en el CIE del profesional"; oProfesional.Historiales.Add(oHistorial); } #endregion #region Contabilidad del profesional if (modo == "Alta") { // Doy de alta a la cta cte Modelo_Entidades.CtaCte oCtaCte = new Modelo_Entidades.CtaCte(); oCtaCte.saldo = 0; oCtaCte.Profesional = oProfesional; oProfesional.CtaCte = oCtaCte; } #endregion #region Observaciones del profesional oProfesional.observaciones = txt_observaciones.Text; oProfesional.titulo_a_mostrar = cmb_tituloamostrar.SelectedValue.ToString(); #endregion #region Títulos del profesional #endregion if (modo == "Alta") { cProfesional.Alta(oProfesional); int mes = DateTime.Now.Month; if (mes == 1 || mes == 2) { GeneraCuotaAnual(oProfesional); GeneraCuotaBimensual(oProfesional, mes); } else { GeneraCuotaBimensual(oProfesional, mes); } cCtaCte.Modificacion(oCtaCte); MessageBox.Show("El profesional se ha agregado correctamente"); } else { cProfesional.Modificacion(oProfesional); MessageBox.Show("El profesional se ha modificado correctamente"); } this.DialogResult = DialogResult.OK; } catch (Exception Exc) { MessageBox.Show(Exc.Message.ToString()); } } }