// Obtengo una liquidacion dada su descripcion public Modelo_Entidades.Liquidacion ObtenerLiquidacion(string desc) { Modelo_Entidades.Liquidacion oLiquidacion = oModelo_Entidades.Liquidaciones.ToList().Find(delegate(Modelo_Entidades.Liquidacion fLiquidacion) { return(fLiquidacion.tarea == desc); }); return(oLiquidacion); }
// Modifico un Liquidacion public void ModificarLiquidacion(Modelo_Entidades.Liquidacion oLiquidacion) { oModelo_Entidades.ApplyCurrentValues("Liquidaciones", oLiquidacion); oModelo_Entidades.SaveChanges(); }
// Agrego un Liquidacion public void AgregarLiquidacion(Modelo_Entidades.Liquidacion oLiquidacion) { oModelo_Entidades.AddToLiquidaciones(oLiquidacion); oModelo_Entidades.SaveChanges(); }
// Elimino a un Liquidacion public void EliminarLiquidacion(Modelo_Entidades.Liquidacion oLiquidacion) { oModelo_Entidades.DeleteObject(oLiquidacion); 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 }