public ActionResult Confirm(AbonoVM model) { bool exito = true; if (!(validations.IsValidReferenciaDeposito(model.Referencia, model.BancoId))) { //todo:Preguntar de esta validacion AddValidationMessage(enumMessageType.BRException, "La referencia especificada ya existe en el sistema. Favor de verificarla."); exito = false; } if (Convert.ToDateTime(model.FechaPago).CompareTo(DateTime.UtcNow.GetCurrentTime()) == 1) { AddValidationMessage(enumMessageType.BRException, "La fecha de depósito debe ser menor o igual a la fecha actual."); exito = false; } if (exito) { if (ModelState.IsValid) { PaycenterBR payCenterBR = new PaycenterBR(); model.CuentaId=payCenterBR.GetOrCreateCuentaPayCenter(PayCenterId, model.TipoCuenta,model.ProveedorId); Abono abono = new Abono { BancoId = model.BancoId, CuentaBancariaId = model.CuentaBancariaId, CuentaId = model.CuentaId, Status = (Int16)enumEstatusMovimiento.Procesando, FechaCreacion = DateTime.UtcNow.GetCurrentTime(), FechaPago = (DateTime)model.FechaPago, Monto = (Decimal)model.Monto, PayCenterId = PayCenterId, Referencia = model.Referencia, RutaFichaDeposito = model.RutaFichaDeposito, ProveedorId = (short)model.ProveedorId }; repository.Add(abono); EstadoCuentaBR estadoCuentaBR = new EstadoCuentaBR(repository.context); var movimiento = estadoCuentaBR.CrearMovimiento(PayCenterId, enumTipoMovimiento.Abono, model.AbonoId, model.CuentaId, (Decimal)model.Monto, enumMotivo.Deposito, PayCenterName); abono.Clave = movimiento.Clave; exito = repository.Save(); //Julius: Tuve que guardar otra vez para guardar el abonoId generado en la BD estadoCuentaBR.ActualizaReferenciaIdMovimiento(movimiento.MovimientoId, abono.AbonoId); repository.Save(); model.AbonoId = abono.AbonoId; AddValidationMessage(enumMessageType.Succeed, "Se ha registrado su depósito con éxito con clave " + movimiento.Clave + ". En breve será revisado y aplicado."); } } else { AddValidationMessage(enumMessageType.BRException, "No fue posible guardar el reporte de depósito."); } model.FechaCreacion = DateTime.UtcNow.GetCurrentTime(); return View(model); }
public ActionResult Report(ReporteDepositoVM model) { Succeed = true; if (PayCenterId <= 0) { //Preguntar de esta validación AddValidationMessage(enumMessageType.BRException, "No ha especificado un paycenter válido. Favor de especificarlo."); Succeed = false; } PayCentersRepository payCentersRepository = new PayCentersRepository(); if (!(validations.IsValidReferenciaDeposito(model.Referencia, model.BancoId))) { //Preguntar de esta validación AddValidationMessage(enumMessageType.BRException,"La referencia especificada ya existe en el sistema. Favor de verificarla."); Succeed = false; } if (Convert.ToDateTime(model.FechaPago).CompareTo(DateTime.UtcNow.GetCurrentTime()) == 1) { AddValidationMessage(enumMessageType.BRException, "La fecha de depósito debe ser menor o igual a la fecha actual."); Succeed = false; } if (Succeed) { model.PayCenterName = PayCenterName; AbonoVM abonoVM = new AbonoVM(); Mapper.Map(model, abonoVM); abonoVM.MontoString = ((decimal)model.Monto).ToString("C"); abonoVM.Status = (Int16)enumEstatusMovimiento.Procesando; abonoVM.PayCenterId = PayCenterId; abonoVM.PayCenterName = PayCenterName; abonoVM.FechaCreacion = DateTime.UtcNow.GetCurrentTime(); abonoVM.FechaPago = ((DateTime)model.FechaPago).GetCurrentTime(); abonoVM.ProveedorId = model.ProveedorId; return View("Confirm", abonoVM); } else { //model.CuentasDeposito = GetProveedoresByTipoCuenta(PayCenterName); LlenarBancos_Cuentas(); return View(model); } }
/// <summary> /// LLena el AbonoVM /// </summary> /// <param name="id">AbonoId</param> /// <returns></returns> private AbonoVM FillAbonoVM(int id) { Abono abono = repository.LoadById(id); if (abono == null) { return null; } //Me aseguro de obtener el abono tal y como estaba en la BD y sin cambios repository.context.Refresh(System.Data.Objects.RefreshMode.StoreWins, abono); BancosRepository bancosRepository = new BancosRepository(); var banco = bancosRepository.LoadById(abono.BancoId); //fill estatus movimientos int movimientoId = 0; var movimiento = abono.CuentaPayCenter.Movimientos.Where(x => x.CuentaId == abono.CuentaId && x.Motivo == enumMotivo.Deposito.GetHashCode() && x.PayCenterId == abono.PayCenterId && x.Id == abono.AbonoId).FirstOrDefault(); if (movimiento != null) { movimientoId = movimiento.MovimientoId; } else { this.AddValidationMessage(enumMessageType.BRException, "No existe el movimiento para el depósito."); } // var movimiento = estadoDeCuentaRepository.LoadById(movimientoId); AbonoVM abonoVM = new AbonoVM { AbonoId = id, Banco = banco.Nombre, CuentaBancaria = banco.CuentasBancarias.Where(x => x.CuentaId == abono.CuentaBancariaId).FirstOrDefault().NumeroCuenta, Status = abono.Status, //((enumEstatusMovimiento)abono.Status).ToString(), FechaCreacion = abono.FechaCreacion, FechaPago = abono.FechaPago, MontoString = abono.Monto.ToString("C"), PayCenterName = abono.PayCenter.UserName, Referencia = abono.Referencia, RutaFichaDeposito = abono.RutaFichaDeposito, TipoCuenta = (enumTipoCuenta)abono.CuentaPayCenter.TipoCuenta, HistorialEstatusVM = movimiento != null ? movimiento.Movimientos_Estatus.OrderByDescending(x => x.FechaCreacion).Select(x => new HistorialEstatusVM { Fecha = x.FechaCreacion.ToString(), Estatus = ((enumEstatusMovimiento)x.Status).ToString(), Comentarios = x.Comentarios, UserName = x.UserName }).ToList() : null, Clave = abono.Clave }; return abonoVM; }
public ViewResult Details(AbonoVM model) { //Aquí van las acciones del PayCenter y Staf para el depósito var id = model.AbonoId; var action = model.CambioEstatusVM.Estatus; string comentario = model.CambioEstatusVM.Comentario != null ? model.CambioEstatusVM.Comentario.TrimEnd() : null; Abono abono = repository.LoadById(id); if (id > 0) { var movimiento = abono.CuentaPayCenter.Movimientos.Where(x => x.Motivo == enumMotivo.Deposito.GetHashCode() && x.Id == abono.AbonoId).FirstOrDefault(); //validar que exista el moviento y sino mandar mensaje de error if (movimiento != null) { EstadoCuentaBR estadoCuentaBR = new EstadoCuentaBR(repository.context); //Asigno valor default en caso de que entre en ningún case de switch enumEstatusMovimiento nuevoEstatus = (enumEstatusMovimiento)movimiento.Status; switch (action) { case "Cancelar": nuevoEstatus = enumEstatusMovimiento.Cancelado; break; case "Aplicar": nuevoEstatus = enumEstatusMovimiento.Aplicado; break; case "Rechazar": nuevoEstatus = enumEstatusMovimiento.Rechazado; break; } abono.Status = (Int16)nuevoEstatus; movimiento = estadoCuentaBR.ActualizarMovimiento(movimiento.MovimientoId, nuevoEstatus, comentario); this.Succeed = estadoCuentaBR.Succeed; this.ValidationMessages = estadoCuentaBR.ValidationMessages; if (Succeed) { Succeed = repository.Save(); if (Succeed) { ModelState.Clear(); AddValidationMessage(enumMessageType.Succeed, "El reporte de depósito ha sido " + nuevoEstatus.ToString() + " correctamente"); //return Details(id); } else { //TODO: implemtar código que traiga mensajes del repositorio } } } else { this.AddValidationMessage(enumMessageType.BRException, "No se encontró el movimiento para el depósito."); } } else { this.AddValidationMessage(enumMessageType.BRException, "No existe el depósito."); } return Details(id); }