public PagoCelular PagoCelularSemanal(Celular celular, DateTime desde, DateTime hasta, Guid operadorId)
        {
            PagoCelular nuevoPago = new PagoCelular();
            nuevoPago.Id = Guid.NewGuid();
            nuevoPago.Desde = desde.Date;
            nuevoPago.Hasta = hasta.Date;
            TimeSpan dias = hasta.Date - desde.Date;
            nuevoPago.Monto = celular.TiposCelulares.Monto * (dias.Days+1);
            nuevoPago.CelularId = celular.Id;
            nuevoPago.FechaAlta = _clock.Now;
            nuevoPago.OperadorAltaId =  operadorId;
            nuevoPago.SucursalAltaId = 1;

            return nuevoPago;
        }
        public PagoCelular AutoPago(Celular _celular, DateTime desde, DateTime hasta, Guid operadorId)
        {
            PagoCelular nuevoPago = new PagoCelular();
            nuevoPago = Uow.PagosCelulares.Listado().Where(p => p.CelularId == _celular.Id).OrderByDescending(pc => pc.FechaAlta).FirstOrDefault();
            var celular = Uow.Celulares.Obtener(c => c.Id == _celular.Id, c => c.TiposCelulares);
            if (nuevoPago == null)
            {
                nuevoPago = PagoCelularInicial(_celular,desde,hasta, operadorId);
            }
            else
            {
                nuevoPago = PagoCelularSemanal(_celular,desde,hasta,operadorId);
            }

            return nuevoPago;
        }
        public PagoCelular PagoCelularInicial(Celular celular,DateTime desde,DateTime hasta, Guid operadorId)
        {
            var _monto = celular.TiposCelulares.MontoInicial; //Ver Contexto
            //monto = celular.TiposCelulares.MontoInicial;
            PagoCelular nuevoPago = new PagoCelular();
            nuevoPago.Id = Guid.NewGuid();
            nuevoPago.Desde = desde;
            TimeSpan dias = hasta - desde;
            nuevoPago.Hasta = hasta;
            nuevoPago.Monto = _monto * (dias.Days+1);
            nuevoPago.CelularId = celular.Id;
            nuevoPago.FechaAlta = _clock.Now;
            nuevoPago.OperadorAltaId = operadorId;
            nuevoPago.SucursalAltaId=1;

            return nuevoPago;
        }
        public PagoCelular ActualizarNuevoPago(PagoCelular pago)
        {
            APagar.Clear();
            _pagoCelular = pago;

            APagar.Add(_pagoCelular);
            RefrescarDeuda();
            return _pagoCelular;
        }
 public void OnFechasSelected(PagoCelular pago)
 {
     if (FechasSelected != null)
         FechasSelected(this, pago);
 }
 public void Limpiar()
 {
     _limpiandoFiltros = true;
     _pagoCelular = new PagoCelular();
     FechaDesde = DateTime.Now;
     FechaHasta = DateTime.Now;
     Total = 0;
     Monto = 0;
     _limpiandoFiltros = false;
 }
 private void ucDetallePagosOnFechasSelected(object sender, PagoCelular pago)
 {
     DateTime hasta = (pago.Hasta ?? _clock.Now);//.AddDays(1);
     GenerarDeudaPago(pago.Desde, hasta);
     MontosAFavor();
 }
 private void LimpiarControles()
 {
     _chofer = null;
     _celular = null;
     _pagoCelular = null;
     ucEstadoCuentaChofer1.Limpiar();
     ucBuscardorChoferMovil.LimpiarFiltros();
     ucPagos1.Limpiar();
     ucDetallePagos.Limpiar();
     ucHistorialPagosChofer1.Limpiar();
     ucComentarios.Limpiar();
 }
        private void GenerarDeudaPago(DateTime? desde, DateTime? hasta)
        {
            if (!_limpiandoFiltros)
            {
                if (_celular != null)
                {
                    var pago = new PagoCelular();
                    pago = _iPagoCelularNegocio.AutoPago(_celular, desde ?? _clock.Now, hasta ?? _clock.Now, Context.OperadorActual.Id);
                    ucPagos1.ActualizarNuevoPago("Efectivo", pago.Monto);
                    ucDetallePagos.ActualizarNuevoPago(pago);
                    ucDetallePagos.ActualizarMonto(_celular);
                    _pagoCelular = pago;
                }

            }
        }
        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;
        }
 private void Eliminar(PagoCelular pago)
 {
     throw new NotImplementedException();
 }