Ejemplo n.º 1
0
        // 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);
        }
Ejemplo n.º 2
0
 // Modifico un Liquidacion
 public void ModificarLiquidacion(Modelo_Entidades.Liquidacion oLiquidacion)
 {
     oModelo_Entidades.ApplyCurrentValues("Liquidaciones", oLiquidacion);
     oModelo_Entidades.SaveChanges();
 }
Ejemplo n.º 3
0
 // Agrego un Liquidacion
 public void AgregarLiquidacion(Modelo_Entidades.Liquidacion oLiquidacion)
 {
     oModelo_Entidades.AddToLiquidaciones(oLiquidacion);
     oModelo_Entidades.SaveChanges();
 }
Ejemplo n.º 4
0
 // Elimino a un Liquidacion
 public void EliminarLiquidacion(Modelo_Entidades.Liquidacion oLiquidacion)
 {
     oModelo_Entidades.DeleteObject(oLiquidacion);
     oModelo_Entidades.SaveChanges();
 }
Ejemplo n.º 5
0
        // 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
        }
Ejemplo n.º 6
0
        // 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
        }
Ejemplo n.º 7
0
        // 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
        }