public RendicionHojaRuta GetRendicionHojaRuta(Int32 AgenciaID) { RendicionHojaRuta _rendicion = new RendicionHojaRuta(); List <PlanillaArrastre> _lstPlanillaArrastre = IoC.GetObjectDominio <IPlanillaArrastreDominio>().GetPlanilllaArrastrePendienteRendir(AgenciaID); List <PlanillaArrastreHojaRuta> _lstPlanillaArrastreHojaRuta = IoC.GetObjectDominio <IPlanillaArrastreDominio>().GetPlanillaArrastreHojaRutaPendienteRendir(AgenciaID); foreach (PlanillaArrastre p in _lstPlanillaArrastre) { _rendicion.RendicionHojaRutaPlanillaArrastres.Add(new RendicionHojaRutaPlanillaArrastre() { PlanillaArrastreID = p.PlanillaArrastreID, PlanillaArrastre = p }); } foreach (PlanillaArrastreHojaRuta p in _lstPlanillaArrastreHojaRuta) { _rendicion.RendicionHojaRutaDetalles.Add(new RendicionHojaRutaDetalle() { PlanillaArrastreHojaRutaID = p.PlanillaArrastreHojaRutaID, PlanillaArrastreHojaRuta = p }); } return(_rendicion); }
public Int32 GuardarRendicionHojaRuta(Int32 AgenciaID, Int32 UnidadNegocioID, Int32 UsuarioID) { RendicionHojaRuta _rendicion = GetRendicionHojaRuta(AgenciaID); IUsuarios Usuario = UsuariosFactory.GetUsuario(); Usuario.UsuarioID = UsuarioID; Usuario.Consultar(); RendicionHojaRuta _rendicionHR = null; if (_rendicion.RendicionHojaRutaPlanillaArrastres.Count == 0 && _rendicion.RendicionHojaRutaDetalles.Count == 0) { throw new DatosInvalidosException("No hay comprobantes a rendir"); } using (System.Transactions.TransactionScope transaccion = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required, new System.Transactions.TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted })) { // Guardo la rendición IRendicionHojaRutaRepositorio _repositorioRendicionHR = IoC.GetObjectRepositorio <IRendicionHojaRutaRepositorio>(); _rendicionHR = new RendicionHojaRuta() { Fecha = DateTime.Now, AgenciaID = AgenciaID }; _rendicionHR = _repositorioRendicionHR.Insert(_rendicionHR); IRendicionHojaRutaPlanillaArrastreRepositorio _repositorioPlanillasArrastre = IoC.GetObjectRepositorio <IRendicionHojaRutaPlanillaArrastreRepositorio>(); foreach (RendicionHojaRutaPlanillaArrastre p in _rendicion.RendicionHojaRutaPlanillaArrastres) { _repositorioPlanillasArrastre.Insert(new RendicionHojaRutaPlanillaArrastre() { RendicionHojaRutaID = _rendicionHR.RendicionHojaRutaID, PlanillaArrastreID = p.PlanillaArrastreID }); } IRendicionHojaRutaDetalleRepositorio _repositorioRendicionHRDetalle = IoC.GetObjectRepositorio <IRendicionHojaRutaDetalleRepositorio>(); foreach (RendicionHojaRutaDetalle hr in _rendicion.RendicionHojaRutaDetalles) { _repositorioRendicionHRDetalle.Insert(new RendicionHojaRutaDetalle() { RendicionHojaRutaID = _rendicionHR.RendicionHojaRutaID, PlanillaArrastreHojaRutaID = hr.PlanillaArrastreHojaRutaID }); } // Emito la guía de rendición Int32 guiaID = EmitirGuiaRendicion(AgenciaID, UnidadNegocioID, Usuario, _rendicionHR.RendicionHojaRutaID); // Obtengo el número de rendición IAgenciaNroRendicionHojaRutaRepositorio _nroRendicionRepositorio = IoC.GetObjectRepositorio <IAgenciaNroRendicionHojaRutaRepositorio>(); AgenciaNroRendicionHojaRuta _nroRendicion = _nroRendicionRepositorio.GetOne(a => a.AgenciaID == AgenciaID); if (_nroRendicion == null) { _nroRendicion = new AgenciaNroRendicionHojaRuta() { AgenciaID = AgenciaID, UltimoNroRendicion = 0 }; _nroRendicionRepositorio.Insert(_nroRendicion); } _nroRendicion.UltimoNroRendicion++; _nroRendicionRepositorio.Update(_nroRendicion); // Actualizo la rendición con el número y id de la guía _rendicionHR.NroRendicion = _nroRendicion.UltimoNroRendicion; _rendicionHR.GuiaID = guiaID; _repositorioRendicionHR.Update(_rendicionHR); // Margo las planillas y hojas de ruta que están en la rendición como rendida IPlanillaArrastreDominio _planillaArrastreDominio = IoC.GetObjectDominio <IPlanillaArrastreDominio>(); foreach (Entidades.RendicionHojaRutaPlanillaArrastre p in _rendicion.RendicionHojaRutaPlanillaArrastres) { _planillaArrastreDominio.MarcarPlanillaArrastreRendida(p.PlanillaArrastre); } foreach (Entidades.RendicionHojaRutaDetalle hr in _rendicion.RendicionHojaRutaDetalles) { _planillaArrastreDominio.MarcarPlanillaArrastreHojaRutaRendida(hr.PlanillaArrastreHojaRuta); } // Completo las transacción transaccion.Complete(); return(guiaID); } }