private void NuevoMontoAFavor()
        {
            if (ucPagos1.Total != _pagoCelular.Monto)
            {
                if (MessageBox.Show("Desea guardar el monto a favor?", "Monto a favor", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                {
                    var monto = ucPagos1.Total - _pagoCelular.Monto;
                    var montoAFavor = new ChoferMontoFavor();
                    montoAFavor.Id = Guid.NewGuid();
                    montoAFavor.ChoferId = _chofer.Id;
                    montoAFavor.FechaComprobante = _clock.Now;
                    montoAFavor.TipoComprobanteId = 1; //Monto a Favor
                    montoAFavor.Concepto = "Monto a favor";
                    montoAFavor.Importe = monto;
                    montoAFavor.ImpOcupado = 0;
                    montoAFavor.FechaAlta = _clock.Now;
                    montoAFavor.OperadorAltaId = Context.OperadorActual.Id;
                    montoAFavor.SucursalAltaId = Context.SucursalActual.Id;

                    Uow.ChoferesMontosFavor.Agregar(montoAFavor);
                }
            }
        }
        private void BtnEliminarPago_Click(object sender, EventArgs e)
        {
            var selectedRow = this.dgvhistorial.Rows[0];
            var pago = selectedRow.DataBoundItem as HistorialPagosChofer_Result;

            if (pago == null)
                return;

            var _pago = Uow.PagosCelulares.Obtener(p => p.Id ==pago.Id);
            //ANULO EL PAGO
            _pago.Anulada = true;
            _pago.FechaAnulacion = _clock.Now;
            //_pago.OperadorAutoriza= Operador autorizacion
            Uow.PagosCelulares.Modificar(_pago);

            //MODIFICAR CAJA Y CAJA MOVIMIENTO
            var caja = Uow.Cajas.Listado().Where(c => c.OperadorId == Context.OperadorActual.Id && c.FCierre == null).OrderByDescending(c => c.FechaAlta).FirstOrDefault();
            caja.Ingresos = (caja.Ingresos ?? 0) - (pago.Efectivo ?? 0) - (pago.Vales ?? 0);
            caja.Saldo = (caja.Saldo ?? 0) - (pago.Efectivo ?? 0) - (pago.Vales ?? 0);
            if (pago.Efectivo !=null)
            {
                caja.Efectivo -= pago.Efectivo;
            }
            if (pago.Vales != null)
            {
                caja.Vales -= pago.Vales;
            }

            caja.FechaModificacion = _clock.Now;
            caja.OperadorModificacionId = Context.OperadorActual.Id;
            caja.SucursalModificacionId = Context.SucursalActual.Id;

            Uow.Cajas.Modificar(caja);

            var cajaMovimiento = new CajaMovimiento();
            cajaMovimiento.Id = Guid.NewGuid();
            cajaMovimiento.CajaId = caja.Id;
            cajaMovimiento.TipoMovimientoCajaId = 1; //Pago de sistema
            cajaMovimiento.TipoComprobante = 3; //Anulacion Pago de sistema
            cajaMovimiento.ComprobanteId = pago.Id; //id del pago Celular
            cajaMovimiento.Senia = pago.Senia;
            if (pago.Senia > 0)
            {
                var choferMontoFavor =new ChoferMontoFavor();
                choferMontoFavor.Id = Guid.NewGuid();
                choferMontoFavor.ChoferId = pago.Chofer;
                choferMontoFavor.FechaAlta = DateTime.Now ;
                choferMontoFavor.FechaComprobante=DateTime.Now;
                choferMontoFavor.TipoComprobanteId = 1;
                choferMontoFavor.Concepto = "Monto a favor";
                choferMontoFavor.ImpOcupado = 0;
                choferMontoFavor.SucursalAltaId = Context.SucursalActual.Id;
                choferMontoFavor.OperadorAltaId = Context.OperadorActual.Id;
                choferMontoFavor.Importe = pago.Senia;

                Uow.ChoferesMontosFavor.Agregar(choferMontoFavor);

            }
            cajaMovimiento.Importe = pago.Monto;
            cajaMovimiento.ImpFac = (pago.Efectivo ?? 0) + (pago.Vales ?? 0);
            cajaMovimiento.Efectivo = pago.Efectivo;
            cajaMovimiento.Vales = pago.Vales;
            cajaMovimiento.FechaAlta = _clock.Now;
            cajaMovimiento.OperadorAltaId = Context.OperadorActual.Id;
            cajaMovimiento.SucursalAltaId = Context.SucursalActual.Id;

            Uow.CajaMovimientos.Agregar(cajaMovimiento);

            Uow.Commit();

            var _pagonuevo = Uow.PagosCelulares.Listado().Where(p => p.CelularId == _pago.CelularId && p.Anulada != true).OrderByDescending(g=>g.FechaAlta).FirstOrDefault();
            var celular = Uow.Celulares.Obtener(c => c.Id == _pago.CelularId);

            if (_pagonuevo != null)
            {
                //modifico fecha de proximo pago en el celular

                celular.FechaVencimientoPago = _pagonuevo.Hasta;
                celular.FechaProximoPago = (_pagonuevo.Hasta ?? DateTime.Now).AddDays(-2);
            }
            else
            {
                celular.FechaVencimientoPago = null;
                celular.FechaProximoPago = null;
                celular.FechaUltimoPago = null;
            }

            Uow.Celulares.Modificar(celular);
            Uow.Commit();

            MessageBox.Show("Pago eliminado correctamente");
            HistorialPagosChofer(_pago.ChoferId ?? Guid.Empty);

            //guardar comentario
            //ucComentarios.GenerarComentario(chofer.Id, "Pago del " + DesdeComent.ToString("dd/MM/yyyy") + " al " + HastaComent.ToString("dd/MM/yyyy") + ". Monto: $" + _pagoCelular.Monto);
            OnComentarioAdd("Pago anulado del " + _pago.Desde.ToString().Remove(10) + " hasta el " + _pago.Hasta.ToString().Remove(10));
        }
        private void CambioCelular(Celular celular)
        {
            var chofer = Uow.Choferes.Obtener(c => c.Id == _chofer.Id);
            chofer.CelularId = celular.Id;

            Uow.Choferes.Modificar(chofer);

            _celularAnterior.Baja = _clock.Now;
            Uow.Celulares.Modificar(_celularAnterior);
            var historialAnterior = Uow.ChoferCelulares.Listado().Where(c => c.CelularId == _celularAnterior.Id).FirstOrDefault();
            if (historialAnterior != null)
            {
                historialAnterior.Baja = _clock.Now;
                historialAnterior.FechaModificacion = _clock.Now;
                historialAnterior.OperadorModificacionId = Context.OperadorActual.Id;
                historialAnterior.SucursalModificacionId = Context.SucursalActual.Id;

                Uow.ChoferCelulares.Modificar(historialAnterior);
            }

            //Historial de ChoferCelular
            var historial = new ChoferCelular();
            historial.Choferid = _chofer.Id;
            historial.CelularId = _celularNuevo.Id;
            historial.Alta = _clock.Now;
            historial.FechaAlta = _clock.Now;
            historial.OperadorAltaId = Context.OperadorActual.Id;
            historial.SucursalAltaId = Context.SucursalActual.Id;
            Uow.ChoferCelulares.Agregar(historial);

            //Copiar las fechas de ultimos pagos

            _celularNuevo.FechaProximoPago = _celularAnterior.FechaProximoPago;
            _celularNuevo.FechaUltimoPago = _celularAnterior.FechaUltimoPago;
            _celularNuevo.FechaVencimientoPago = _celularAnterior.FechaVencimientoPago;

            Uow.Celulares.Modificar(_celularNuevo);

            //MontoAFavor
            TimeSpan diferenciaDias = (_celularAnterior.FechaVencimientoPago ?? _clock.Now) - _clock.Now;
            DiferenciaDias = diferenciaDias.Days;

            DiferenciaMonto = _celularAnterior.TiposCelulares.Monto - _celularNuevo.TiposCelulares.Monto;
            MontoAFavor = DiferenciaDias * DiferenciaMonto;

            var montoAFavor = new ChoferMontoFavor();
            montoAFavor.Id = Guid.NewGuid();
            montoAFavor.ChoferId = _chofer.Id;
            montoAFavor.FechaComprobante = _clock.Now;
            montoAFavor.TipoComprobanteId = 1;
            montoAFavor.Concepto = "Cambio de celular";
            montoAFavor.Importe = MontoAFavor;
            montoAFavor.ImpOcupado = 0;
            montoAFavor.FechaAlta = _clock.Now;
            montoAFavor.OperadorAltaId = Context.OperadorActual.Id;
            montoAFavor.SucursalAltaId = Context.SucursalActual.Id;

            Uow.ChoferesMontosFavor.Agregar(montoAFavor);

            //Generar PagoCelular
            var pagoCelular = new PagoCelular();
            pagoCelular.Id = Guid.NewGuid();
            pagoCelular.Desde = _clock.Now;
            pagoCelular.Hasta = _clock.Now;
            pagoCelular.CelularId = _celularNuevo.Id;
            pagoCelular.FechaAlta = _clock.Now;
            pagoCelular.OperadorAltaId = Context.OperadorActual.Id;
            pagoCelular.SucursalAltaId = Context.SucursalActual.Id;
            Uow.PagosCelulares.Agregar(pagoCelular);

            // _celular = celular;
            CelularNuevo = _celularNuevo.TiposCelulares.Tipo;
        }