public static Response<Infante> Post(this Infante request, Factory factory,IHttpRequest httpRequest) { request.CheckId(Operaciones.Create); factory.Execute(proxy=>{ if(request.IdTerceroFactura.HasValue && request.IdTerceroFactura.Value!=default(int)) { var tercero= proxy.FirstOrDefault<Tercero>(q=>q.Id==request.IdTerceroFactura.Value); tercero.AssertExists(request.IdTerceroFactura.Value); request.NombreTercero=tercero.Nombre; request.DocumentoTercero=tercero.Documento; request.DVTercero=tercero.DigitoVerificacion; request.TelefonoTercero= tercero.Telefono; request.MailTercero= tercero.Mail; } proxy.Create<Infante>(request); }); List<Infante> data = new List<Infante>(); data.Add(request); return new Response<Infante>(){ Data=data }; }
public static Response<PedidoItem> Get(this PedidoItem request,Factory factory, IAuthSession authSession) { try{ var data = factory.Execute(proxy=>{ var visitor = ReadExtensions.CreateExpression<PedidoItem>(); visitor.Where(r=>r.IdPedido==request.IdPedido); return proxy.Get(visitor); }); return new Response<PedidoItem>(){ Data=data }; } catch(Exception e){ ResponseStatus rs = new ResponseStatus(){ Message= e.Message, StackTrace=e.StackTrace, ErrorCode= e.ToString() }; return new Response<PedidoItem>(){ ResponseStatus=rs }; } }
public static Response<Pedido> Get(this Pedido request, Factory factory, IHttpRequest httpRequest) { var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; long? totalCount=null; ResponseStatus rs=null; var data = factory.Execute(proxy=>{ try { int id; if(int.TryParse(queryString["Id"], out id)){ if(id!=default(int)) return proxy.Get<Pedido>(r=>r.Id==id); } var predicate = PredicateBuilder.True<Pedido>(); string compania= queryString["NombreCompania"]; if(!compania.IsNullOrEmpty()) { predicate= predicate.AndAlso(r=>r.NombreCompania.Contains(compania)); } var visitor = ReadExtensions.CreateExpression<Pedido>(); visitor.Where(predicate); if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); //proxy.Count(predicate); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.PageSize; visitor.Select(); visitor.Limit(paginador.PageNumber.Value*rows, rows); } visitor.OrderByDescending(r=>r.Id); return proxy.Get(visitor); } catch(Exception e) { rs= new ResponseStatus(){ErrorCode="GetClienteError",Message=e.Message, StackTrace=e.StackTrace}; return new List<Pedido>(); } }); return new Response<Pedido>(){ Data=data, TotalCount=totalCount, ResponseStatus=rs==null? new ResponseStatus():rs }; }
private static int Main(string[] args) { try { var app = new Factory(new DefaultModuleConfiguration()).Build<IApp>(); app.Execute(args); return 0; } catch (Exception e) { System.Console.WriteLine(e); return 1; } }
public static Response<Pedido> Get(this Pedido request, Factory factory, IHttpRequest httpRequest) { return factory.Execute(proxy=>{ long? totalCount=null; var paginador= new Paginador(httpRequest); var visitor = ReadExtensions.CreateExpression<Pedido>(); var predicate = PredicateBuilder.True<Pedido>(); if(request.Consecutivo!=default(int)) { predicate= q=>q.Consecutivo==request.Consecutivo; } else { visitor.OrderByDescending(f=>f.Consecutivo); if(!request.NombreCliente.IsNullOrEmpty()){ predicate= q=>q.NombreCliente.StartsWith(request.NombreCliente); visitor.OrderBy(f=>f.NombreCliente); } if(!request.NitCliente.IsNullOrEmpty()){ predicate= predicate.AndAlso(q=>q.NitCliente.StartsWith(request.NitCliente)); visitor.OrderBy(f=>f.NitCliente); } } visitor.Where(predicate); if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.ResponsePageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } return new Response<Pedido>(){ Data=proxy.Get(visitor), TotalCount=totalCount }; }); }
public static Response<Contacto> Get(this Contacto request, Factory factory, IHttpRequest httpRequest) { return factory.Execute(proxy=>{ long? totalCount=null; var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; var visitor = ReadExtensions.CreateExpression<Contacto>(); var predicate = PredicateBuilder.True<Contacto>(); if(request.IdCliente!=default(int)) predicate= q=>q.IdCliente==request.IdCliente; else if(!request.Nombre.IsNullOrEmpty()) { predicate= q=>q.Nombre.StartsWith(request.Nombre) ; visitor.OrderBy(r=>r.Nombre); } var qs= queryString["Activo"]; bool activo; if(bool.TryParse(qs,out activo)){ predicate= predicate.AndAlso(q=>q.Activo==activo); } visitor.Where(predicate); if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.ResponsePageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } return new Response<Contacto>(){ Data=proxy.Get(visitor), TotalCount=totalCount }; }); }
public static AuthorizationResponse Get(this Authorization request, Factory factory, IRequestContext requestContext){ var httpRequest = requestContext.Get<IHttpRequest>(); IAuthSession session = httpRequest.GetSession(); if (!session.HasRole(RoleNames.Admin)) { request.UserId= int.Parse(session.UserAuthId); } List<AuthRole> roles = new List<AuthRole>(); List<string> permissions= new List<string>(); List<AuthRoleUser> aur= new List<AuthRoleUser>(); List<AuthRole> rol = new List<AuthRole>(); List<AuthPermission> per = new List<AuthPermission>(); List<AuthRolePermission> rol_per = new List<AuthRolePermission>(); factory.Execute(proxy=> { aur= proxy.Get<AuthRoleUser>(r=>r.IdUsuario==request.UserId ); rol= proxy.Get<AuthRole>(); //DAL.GetFromCache<AuthRole>(proxy); per= proxy.Get<AuthPermission>(); //DAL.GetFromCache<AuthPermission >(proxy); rol_per= proxy.Get<AuthRolePermission>(); //DAL.GetFromCache<AuthRolePermission >(proxy); }); foreach( var r in aur) { AuthRole ar= rol.First(x=>x.Id== r.IdAuthRole); roles.Add(ar); rol_per.Where(q=>q.IdAuthRole==ar.Id).ToList().ForEach(y=>{ AuthPermission up= per.First( p=> p.Id== y.IdAuthPermission); if( permissions.IndexOf(up.Name) <0) permissions.Add(up.Name); }) ; }; return new AuthorizationResponse(){ Permissions= permissions, Roles= roles }; }
public static Response<Infante> Get(this Infante request, Factory factory, IHttpRequest httpRequest) { long? totalCount=null; var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; var predicate=PredicateBuilder.True<Infante>(); var documento = queryString["Documento"]; if(! documento.IsNullOrEmpty()) { predicate= predicate.AndAlso(q=>q.Documento.StartsWith(documento)); } var nombres= queryString["Nombres"]; if(!nombres.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.Nombres.Contains(nombres)); var apellidos= queryString["Apellidos"]; if(!apellidos.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.Apellidos.Contains(apellidos)); var visitor = ReadExtensions.CreateExpression<Infante>(); visitor.Where(predicate); return factory.Execute(proxy=>{ if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.PageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } visitor.OrderByDescending(r=> new { r.Nombres, r.Apellidos}); return new Response<Infante>{ Data=proxy.Get(visitor), TotalCount= totalCount }; }); }
public static Response<Curso> Get(this Curso request, Factory factory, IHttpRequest httpRequest) { long? totalCount=null; var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; var predicate=PredicateBuilder.True<Curso>(); var qv = queryString["Fecha"]; if(! qv.IsNullOrEmpty()) { DateTime fecha; if (DateTime.TryParse(qv, out fecha) ) { var inicio= fecha.AddDays(-40); var fin = fecha.AddDays(40); predicate= predicate.AndAlso(q=>q.FechaInicio>=inicio && q.FechaInicio<=fin); } } var visitor = ReadExtensions.CreateExpression<Curso>(); visitor.Where(predicate); return factory.Execute(proxy=>{ if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.PageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } visitor.OrderByDescending(r=> r.FechaInicio ); return new Response<Curso>{ Data=proxy.Get(visitor), TotalCount= totalCount }; }); }
public static Response<Matricula> Post(this Matricula request, Factory factory,IHttpRequest httpRequest) { request.CheckId(Operaciones.Create); if( request.IdIngreso.HasValue && request.IdIngreso.Value==default(int)) request.IdIngreso=null; if( request.IdClase.HasValue && request.IdClase.Value==default(int)) request.IdClase=null; var mr = new MatriculaResponse (); var queryString= httpRequest.QueryString; factory.Execute(proxy=>{ proxy.Create<Matricula>(request); var data = proxy.Get<Matricula>(q=> q.Id== request.Id); bool crearItems; if (bool.TryParse( queryString["CrearItems"], out crearItems) && crearItems){ var tarifas = proxy.Get<Tarifa>(q=>q.IdSucursal== request.IdSucursal && q.IdCentro==request.IdCentro && q.Activo==true && q.IncluirEnMatricula==true); foreach(Tarifa tarifa in tarifas){ var mi = new MatriculaItem(){ IdMatricula=request.Id, IdTarifa= tarifa.Id, Valor= tarifa.Valor, Descripcion= tarifa.Descripcion }; proxy.Create<MatriculaItem>(mi); mr.MatriculaItemList.Add(mi); } mr.TarifaList= tarifas; } mr.Data=data; }); return mr; }
public static Response<Contacto> Post(this Contacto request, Factory factory, IHttpRequest httpRequest) { if(request.IdCliente==default(int)) throw HttpError.Unauthorized("Debe Indicar el IdCliente"); if(request.Nombre.IsNullOrEmpty() || request.Nombre.Trim()=="") throw HttpError.Unauthorized("Debe Indicar el Nombre del Contacto"); factory.Execute(proxy=>{ proxy.Create(request); }); List<Contacto> data = new List<Contacto>(); data.Add(request); return new Response<Contacto>(){ Data=data }; }
public static Response<Clase> Get(this Clase request, Factory factory, IHttpRequest httpRequest) { long? totalCount=null; var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; var predicate=PredicateBuilder.True<Clase>(); var qv = queryString["Activo"]; if(! qv.IsNullOrEmpty()) { bool activo; if (bool.TryParse(qv, out activo) ) predicate= predicate.AndAlso(q=>q.Activo==activo); } var visitor = ReadExtensions.CreateExpression<Clase>(); visitor.Where(predicate); return factory.Execute(proxy=>{ if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.PageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } visitor.OrderByDescending(r=> r.Nombre ); return new Response<Clase>{ Data=proxy.Get(visitor), TotalCount= totalCount }; }); }
public static Response<Pedido> Post(this Pedido request, Factory factory, IHttpRequest httpRequest) { factory.Execute(proxy=>{ var session = httpRequest.GetSession(); request.IdCreadoPor= int.Parse(session.UserAuthId); request.Id=0; request.FechaAceptacion=null; request.FechaEnvio=null; request.FechaAnulado=null; request.FechaCreacion=DateTime.Today; request.FechaActualizacion=request.FechaCreacion; request.IdAceptadoPor=null; request.IdAnuladoPor=null; request.IdEnviadoPor=null; var fp = proxy.CheckExistAndActivo<FormaPago>(request.IdFormaPago, f=>f.Descripcion); request.DescripcionFormaPago= fp.Descripcion; var contacto = proxy.CheckExistAndActivo<Contacto>(request.IdContacto, f=>f.Nombre); request.NombreContacto= contacto.Nombre; var ciudad = CheckCiudad(proxy, request); request.NombreCiudad= ciudad.Nombre; request.CodigoCiudad= ciudad.Codigo; var cliente= proxy.CheckExistAndActivo<Cliente>(contacto.IdCliente, f=>f.Nombre); request.NitCliente=cliente.Nit; request.NombreCliente= cliente.Nombre; using (proxy.AcquireLock(Consecutivo.GetLockKey(BL.Cotizacion), BL.LockSeconds)) { proxy.BeginDbTransaction(); request.Consecutivo= proxy.GetNext(BL.Cotizacion).Valor; proxy.Create(request); proxy.CommitDbTransaction(); } }); List<Pedido> data = new List<Pedido>(); data.Add(request); return new Response<Pedido>(){ Data=data }; }
public static Response<Pedido> Patch(this Pedido request, Factory factory, IHttpRequest httpRequest) { List<string> actions = new List<string>(new string[]{"ENVIAR","ACEPTAR","ANULAR"}); var action= httpRequest.PathInfo.Substring(httpRequest.PathInfo.LastIndexOf("/")+1).ToUpper(); if(actions.IndexOf(action)<0) throw HttpError.Unauthorized(string.Format("Operacion: '{0}' no autorizada en Ofertas", action)); var session = httpRequest.GetSession(); factory.Execute(proxy=>{ using (proxy.AcquireLock(request.GetLockKey(), BL.LockSeconds)) { var old = proxy.FirstOrDefaultById<Pedido>(request.Id); var userSesssion= httpRequest.GetSession(); if(!(old.IdCreadoPor== int.Parse(userSesssion.UserAuthId) || userSesssion.HasRole(BL.RoleCoordinador))) throw HttpError.Unauthorized(string.Format("Usuario '{0}' No puede ejecutar '{1}' en las ofertas creadas por:'{2}' ", userSesssion.UserName,action, old.NombreCreadoPor)); if( old==default(Pedido)){ throw HttpError.NotFound(string.Format("No existe Oferta con Id: '{0}'", request.Id)); } if(old.FechaAnulado.HasValue){ throw HttpError.Unauthorized(string.Format("Operacion:'{0}' No permitida. Oferta '{1}' Id:'{2} se encuentra anulada",action, request.Consecutivo, request.Id)); } request.PopulateWith(old); if(action=="ENVIAR") { if(old.FechaEnvio.HasValue) throw HttpError.Conflict("Oferta ya se encuentra en estado Enviada"); request.FechaEnvio=DateTime.Today; request.IdEnviadoPor= int.Parse(session.UserAuthId); } else if (action=="ACEPTAR") { if(old.FechaAceptacion.HasValue) throw HttpError.Conflict("Oferta ya se encuentra en estado Aceptada"); if(!old.FechaEnvio.HasValue) throw HttpError.Conflict("La Oferta primero debe ser enviada"); request.FechaAceptacion=DateTime.Today; request.IdAceptadoPor= int.Parse(session.UserAuthId); } else { request.FechaAnulado= DateTime.Today; request.IdAnuladoPor= int.Parse(session.UserAuthId); } proxy.Update(request, ev=>ev.Update( f=> new { f.FechaEnvio,f.FechaAceptacion,f.FechaAnulado, f.VigenteHasta, f.IdAceptadoPor, f.IdAnuladoPor, f.IdEnviadoPor }).Where(q=>q.Id==request.Id)); } }); List<Pedido> data = new List<Pedido>(); data.Add(request); return new Response<Pedido>(){ Data=data }; }
public static Response<Egreso> Put(this Egreso request, Factory factory, IAuthSession authSession) { // TODO : si cambio cambiar el Tercero y si el Nro. Dto viene vacio traer Numero del nuevo Tercero... request.ValidateAndThrowHttpError(Definiciones.CheckRequestBeforeUpdate); var idUsuario = int.Parse(authSession.UserAuthId); factory.Execute(proxy=>{ using(proxy.AcquireLock(request.GetLockKey(), Definiciones.LockSeconds)) { Egreso oldData= DAL.GetEgresoById(proxy, request.Id); oldData.AssertExists(request.Id); CheckOldAndNew(oldData, request, proxy, idUsuario ); request.Update(proxy); //Action<DALProxy> action=(p)=>request.Update(p); //Action<DALProxy> action= request.Update; //proxy.ExecuteUpdate(action,request,oldData); // me permite ejecutar con o sin triggers } }); List<Egreso> data = new List<Egreso>(); data.Add(request); return new Response<Egreso>(){ Data=data }; }
public static Response<Pedido> Put(this Pedido request, Factory factory, IHttpRequest httpRequest) { factory.Execute(proxy=>{ using (proxy.AcquireLock(request.GetLockKey(), BL.LockSeconds)) { var old = proxy.FirstOrDefaultById<Pedido>(request.Id); if( old==default(Pedido)){ throw HttpError.NotFound(string.Format("No existe Oferta con Id: '{0}'", request.Id)); } if(old.FechaEnvio.HasValue){ throw HttpError.Unauthorized(string.Format("Oferta '{0}' Id:'{1} No puede ser Actualizada. Estado:Enviado ", request.Consecutivo, request.Id)); } if(old.FechaAnulado.HasValue){ throw HttpError.Unauthorized(string.Format("Oferta '{0}' Id:'{1} No puede ser Actualizada. Estado:Anulado ", request.Consecutivo, request.Id)); } var userSesssion= httpRequest.GetSession(); if(!(old.IdCreadoPor== int.Parse(userSesssion.UserAuthId) || userSesssion.HasRole(BL.RoleCoordinador))) throw HttpError.Unauthorized(string.Format("Usuario '{0}' No puede actualizar las ofertas creadas por:'{1}' ", userSesssion.UserName, old.NombreCreadoPor)); request.FechaActualizacion= DateTime.Today; if(request.IdCiudadDestinatario!=default(int) && request.IdCiudadDestinatario!=old.IdCiudadDestinatario){ var ciudad = CheckCiudad(proxy, request); request.NombreCiudad= ciudad.Nombre; request.CodigoCiudad= ciudad.Codigo; } if(request.IdFormaPago!=default(int) && request.IdFormaPago!=old.IdFormaPago) { var fp = proxy.CheckExistAndActivo<FormaPago>(request.IdFormaPago, f=>f.Descripcion); request.DescripcionFormaPago= fp.Descripcion; } if(request.IdContacto!=default(int) && request.IdContacto!=old.IdContacto) { var contacto = proxy.CheckExistAndActivo<Contacto>(request.IdContacto, f=>f.Nombre); request.NombreContacto= contacto.Nombre; var cliente= proxy.CheckExistAndActivo<Cliente>(contacto.IdCliente, f=>f.Nombre); request.NitCliente=cliente.Nit; request.NombreCliente= cliente.Nombre; } proxy.Update(request,ev=>ev.Update(f=> new { f.IncluyeGastosEnvio, f.Observacion, f.CargoDestinatario, f.CelularDestinatario, f.DiasDeVigencia, f.DireccionDestinatario, f.FaxDestinatario, f.IdCiudadDestinatario,f.IdContacto, f.IdFormaPago,f.MailDestinatario, f.NitCliente, f.NombreDestinatario,f.TelefonoDestinatario, f.FechaActualizacion }).Where(q=>q.Id==request.Id) ); } }); List<Pedido> data = new List<Pedido>(); data.Add(request); return new Response<Pedido>(){ Data=data }; }
// TODO: No permitir Valor < 0 ??? confirmar .... seria una devolucion ? #region Post public static Response<ComprobanteEgreso> Post(this ComprobanteEgreso request, Factory factory, IAuthSession authSession) { if(request.IdTerceroReceptor==default(int)){ request.IdTerceroReceptor= request.IdTercero; } request.ValidateAndThrowHttpError(Operaciones.Create); var idUsuario = int.Parse(authSession.UserAuthId); request.Periodo= request.Fecha.ObtenerPeriodo(); factory.Execute(proxy=>{ var sucursal= request.CheckSucursal(proxy,idUsuario); var tercero =request.CheckTercero(proxy); Tercero tr = default(Tercero); if( request.IdTercero!=request.IdTerceroReceptor) tr= request.CheckTerceroReceptor(proxy); else tr=tercero; request.CheckPeriodo(proxy); var pi = request.CheckUsuarioGiradora(proxy,int.Parse(authSession.UserAuthId)); using (proxy.AcquireLock(request.GetLockKeyConsecutivo(), Definiciones.LockSeconds)) { proxy.BeginDbTransaction(); request.AsignarConsecutivo(proxy); request.Create(proxy); proxy.CommitDbTransaction(); } request.NombreSucursal=sucursal.Nombre; request.NombreTercero=tercero.Nombre; request.DocumentoTercero= tercero.Documento; request.NombreDocumentoTercero= tercero.NombreDocumento; request.DVTercero= tercero.DigitoVerificacion; request.DocumentoReceptor= tr.Documento; request.NombreDocumentoReceptor= tr.NombreDocumento; request.NombreReceptor=tr.Nombre; request.DVReceptor= tr.DigitoVerificacion; request.CodigoItem= pi.Codigo; request.NombreItem = pi.Nombre; }); var data = new List<ComprobanteEgreso>(); data.Add(request); return new Response<ComprobanteEgreso>(){ Data=data }; }
void ConfigureApp(Container container){ var appSettings = new ConfigurationResourceManager(); double se= appSettings.Get("DefaultSessionExpiry", 480); AuthProvider.DefaultSessionExpiry=TimeSpan.FromMinutes(se); string cacheHost= appSettings.Get("REDISTOGO_URL","localhost:6379").Replace("redis://redistogo-appharbor:","").Replace("/",""); var redisClientManager = new BasicRedisClientManager(new string[]{cacheHost}); OrmLiteConfig.DialectProvider= MySqlDialectProvider.Instance; IDbConnectionFactory dbFactory = new OrmLiteConnectionFactory( ConfigUtils.GetConnectionString("ApplicationDb")); var factory = new Factory(){ DbFactory=dbFactory, RedisClientsManager = redisClientManager }; var empresa = factory.Execute(proxy=>{ return proxy.GetEmpresa(); }); var mailer = new Mailer(empresa); Channel channel = new Channel(empresa.PublishKey, empresa.SubscribeKey, empresa.SecretKey,"",false); container.Register(channel); container.Register(new AppConfig(appSettings){MailLogToken=empresa.MailLogToken}); container.Register<Factory>(factory); container.Register(mailer); //container.Register<ICacheClient>(new MemoryCacheClient { FlushOnDispose = false }); container.Register<IRedisClientsManager>(c => redisClientManager); Plugins.Add(new AuthFeature( () => new AuthUserSession(), // or Use your own typed Custom AuthUserSession type new IAuthProvider[] { new AuthenticationProvider(){SessionExpiry=TimeSpan.FromMinutes(se)} }) { IncludeAssignRoleServices=false, }); OrmLiteAuthRepository authRepo = new OrmLiteAuthRepository( dbFactory ); container.Register<IUserAuthRepository>( c => authRepo ); if(appSettings.Get("EnableRegistrationFeature", false)) Plugins.Add( new RegistrationFeature()); }
public static Response<Egreso> Post(this Egreso request, Factory factory, IAuthSession authSession) { request.ValidateAndThrowHttpError(Operaciones.Create); var idUsuario = int.Parse(authSession.UserAuthId); request.Periodo= request.Fecha.ObtenerPeriodo(); if(request.IdTerceroReceptor.HasValue && request.IdTerceroReceptor.Value==default(int)) request.IdTerceroReceptor=null; factory.Execute(proxy=>{ var sucursal=request.CheckSucursal(proxy,idUsuario); var tercero=request.CheckTercero(proxy); Tercero tr= default(Tercero); if(request.IdTerceroReceptor.HasValue) { if(request.IdTerceroReceptor!=request.IdTercero) tr= request.CheckTerceroReceptor(proxy); else tr= tercero; } request.CheckCodigoDocumento(proxy); request.CheckPeriodo(proxy); request.NombreSucursal=sucursal.Nombre; request.NombreTercero=tercero.Nombre; request.DocumentoTercero= tercero.Documento; request.NombreDocumentoTercero= tercero.NombreDocumento; request.DVTercero= tercero.DigitoVerificacion; if(tr!=default(Tercero)) { request.DocumentoReceptor= tr.Documento; request.NombreDocumentoReceptor= tr.NombreDocumento; request.NombreReceptor=tr.Nombre; request.DVReceptor= tr.DigitoVerificacion; } using (proxy.AcquireLock(request.GetLockKeyConsecutivo(), Definiciones.LockSeconds)) { // TODO : Revisar documento si es vacio y CC traer numero de Tercero proxy.BeginDbTransaction(); request.AsignarConsecutivo(proxy); request.Create(proxy); proxy.CommitDbTransaction(); } }); List<Egreso> data = new List<Egreso>(); data.Add(request); return new Response<Egreso>(){ Data=data }; }
public static Response<ComprobanteEgreso> Put(this ComprobanteEgreso request, Factory factory, IAuthSession authSession) { // TODO : si cambio cambiar el Tercero y si el Nro. Dto viene vacio traer Numero del nuevo Tercero... request.ValidateAndThrowHttpError(Definiciones.CheckRequestBeforeUpdate); var idUsuario = int.Parse(authSession.UserAuthId); factory.Execute(proxy=>{ using(proxy.AcquireLock(request.GetLockKey(), Definiciones.LockSeconds)) { ComprobanteEgreso oldData= DAL.GetComprobanteEgreso(proxy, request.Id); oldData.AssertExists(request.Id); CheckOldAndNew(oldData, request, proxy, idUsuario ); request.Actualizar(proxy); } }); var data = new List<ComprobanteEgreso>(); data.Add(request); return new Response<ComprobanteEgreso>(){ Data=data }; }
public static AuthorizationResponse GetAuthorizations(this Authorization request, Factory factory, IRequestContext requestContext){ var httpRequest = requestContext.Get<IHttpRequest>(); IAuthSession session = httpRequest.GetSession(); if (!session.HasRole(RoleNames.Admin)) { request.UserId= int.Parse(session.UserAuthId); } List<AuthRole> roles = new List<AuthRole>(); List<string> permissions= new List<string>(); List<AuthRoleUser> aur= new List<AuthRoleUser>(); List<AuthRole> rol = new List<AuthRole>(); List<AuthPermission> per = new List<AuthPermission>(); List<AuthRolePermission> rol_per = new List<AuthRolePermission>(); List<UsuarioSucursalCentro> usc= new List<UsuarioSucursalCentro>(); List<Sucursal> sucursales = new List<Sucursal>(); List<Centro> centros = new List<Centro>(); List<SucursalAutorizada> sa = new List<SucursalAutorizada>(); List<CentroAutorizado> ca = new List<CentroAutorizado>(); List<CodigoDocumento> cd = new List<CodigoDocumento>(); List<Rubro> rubros = new List<Rubro>(); List<Ciudad> ciudades = new List<Ciudad>(); List<TipoDocumento> tipos = new List<TipoDocumento>(); factory.Execute(proxy=> { aur= proxy.GetByIdUsuarioFromCache<AuthRoleUser>(request.UserId); rol= proxy.GetFromCache<AuthRole>(); per= proxy.GetFromCache<AuthPermission>(); rol_per= proxy.GetFromCache<AuthRolePermission>(); usc= proxy.GetByIdUsuarioFromCache<UsuarioSucursalCentro>(request.UserId); sucursales= proxy.GetFromCache<Sucursal>(); centros= proxy.GetFromCache<Centro>(); cd= proxy.Get<CodigoDocumento>(); foreach( var r in aur) { AuthRole ar= rol.First(x=>x.Id== r.IdAuthRole); roles.Add(ar); rol_per.Where(q=>q.IdAuthRole==ar.Id).ToList().ForEach(y=>{ AuthPermission up= per.First( p=> p.Id== y.IdAuthPermission); if( permissions.IndexOf(up.Name) <0) permissions.Add(up.Name); }) ; }; foreach(UsuarioSucursalCentro item in usc){ Sucursal s= sucursales.FirstOrDefault(r=> r.Id== item.IdSucursal && r.Activo); if(s!=default(Sucursal) && sa.FirstOrDefault(x=>x.Id==s.Id)== default(SucursalAutorizada)) sa.Add(new SucursalAutorizada(){Id=s.Id, Codigo=s.Codigo, Nombre=s.Nombre}); Centro c= centros.FirstOrDefault(r=> r.Id== item.IdCentro && r.Activo); if(c!=default(Centro)) ca.Add(new CentroAutorizado(){Id=c.Id, Codigo=c.Codigo, Nombre=c.Nombre, IdSucursal=item.IdSucursal}); } var predicate = PredicateBuilder.False<Rubro>(); foreach( var rca in ca){ int c= rca.Id; int s = rca.IdSucursal; predicate= predicate.OrElse(r=>r.IdSucursal==s && r.IdCentro==c); } Expression<Func<Rubro, bool>> predicate2= r=>r.Activo && r.PresupuestoActivo && r.Codigo.Contains("."); predicate= predicate.AndAlso(predicate2); rubros= proxy.Get<Rubro>(predicate); ciudades = proxy.Get<Ciudad>(); tipos = proxy.Get<TipoDocumento>(); }); return new AuthorizationResponse(){ Permissions= permissions, Roles= roles, Sucursales= sa, Centros= ca, CodigosDocumento=cd, Rubros=rubros, Ciudades=ciudades, TiposDocumento= tipos }; }
public static Response<Ingreso> Get(this Ingreso request, Factory factory, IHttpRequest httpRequest) { return factory.Execute(proxy=>{ long? totalCount=null; var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; var predicate=PredicateBuilder.True<Ingreso>(); var periodo= queryString["Periodo"]; if(! periodo.IsNullOrEmpty()) //periodo= DateTime.Today.ObtenerPeriodo(); { if (periodo.Length==6) predicate= q=>q.Periodo==periodo; else predicate= q=>q.Periodo.StartsWith(periodo) ; } var p =queryString["IdSucursal"]; if(!p.IsNullOrEmpty()) { int idSucursal; if(int.TryParse(p,out idSucursal) && idSucursal!=default(int)) predicate= predicate.AndAlso(q=>q.IdSucursal==idSucursal); } p=queryString["IdTercero"]; if(!p.IsNullOrEmpty()) { int idTercero; if(int.TryParse(p,out idTercero) && idTercero!=default(int)) predicate= predicate.AndAlso(q=>q.IdTercero==idTercero); } var nombre= queryString["NombreTercero"]; if(!nombre.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.NombreTercero.Contains(nombre)); var sucursal= queryString["NombreSucursal"]; if(!sucursal.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.NombreSucursal.Contains(sucursal)); p= queryString["Asentado"]; if(!p.IsNullOrEmpty()) { bool asentado; if( bool.TryParse(p,out asentado)) { if(asentado) predicate= predicate.AndAlso(q=>q.FechaAsentado!=null); else predicate= predicate.AndAlso(q=>q.FechaAsentado==null); } } p= queryString["ConSaldo"]; if(!p.IsNullOrEmpty()) { bool saldo; if( bool.TryParse(p,out saldo)) { if (saldo) predicate= predicate.AndAlso(q=>q.Saldo!=0); else predicate= predicate.AndAlso(q=>q.Saldo==0); } } var visitor = ReadExtensions.CreateExpression<Ingreso>(); visitor.Where(predicate); if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.PageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } visitor.OrderByDescending(r=>r.Numero); return new Response<Ingreso>(){ Data=proxy.Get(visitor), TotalCount=totalCount }; }); }
public static Response<Ingreso> Put(this Ingreso request, Factory factory, IAuthSession authSession) { request.ValidateAndThrowHttpError(Definiciones.CheckRequestBeforeUpdate); var idUsuario = int.Parse(authSession.UserAuthId); factory.Execute(proxy=>{ using(proxy.AcquireLock(request.GetLockKey(), Definiciones.LockSeconds)) { Ingreso oldData=proxy.FirstOrDefaultById<Ingreso>( request.Id); oldData.AssertExists(request.Id); CheckOldAndNew(oldData, request, proxy, idUsuario ); request.Update(proxy); } }); List<Ingreso> data = new List<Ingreso>(); data.Add(request); return new Response<Ingreso>(){ Data=data }; }
public static Response<Ingreso> Post(this Ingreso request, Factory factory, IAuthSession authSession) { request.ValidateAndThrowHttpError(Operaciones.Create); var idUsuario = int.Parse(authSession.UserAuthId); request.Periodo= request.Fecha.ObtenerPeriodo(); factory.Execute(proxy=>{ var sucursal=request.CheckSucursal(proxy,idUsuario); var tercero=request.CheckTercero(proxy); request.CheckCodigoDocumento(proxy); request.CheckPeriodo(proxy); request.NombreSucursal=sucursal.Nombre; request.NombreTercero=tercero.Nombre; request.DocumentoTercero= tercero.Documento; request.NombreDocumentoTercero= tercero.NombreDocumento; request.DVTercero= tercero.DigitoVerificacion; using (proxy.AcquireLock(request.GetLockKeyConsecutivo(), Definiciones.LockSeconds)) { proxy.BeginDbTransaction(); request.AsignarConsecutivo(proxy); request.AsignarDocumento(proxy); request.Create(proxy); proxy.CommitDbTransaction(); } }); List<Ingreso> data = new List<Ingreso>(); data.Add(request); return new Response<Ingreso>(){ Data=data }; }
public static Response<Tercero> Get(this Tercero request, Factory factory, IHttpRequest httpRequest) { return factory.Execute(proxy=>{ var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; long? totalCount=null; Expression<Func<Tercero, bool>> predicate; int id; if(int.TryParse(queryString["Id"], out id)) predicate=q=>q.Id== id; else predicate= PredicateBuilder.True<Tercero>(); bool activo; if (bool.TryParse( queryString["Activo"], out activo)) predicate= predicate.AndAlso( q=>q.Activo== activo); var documento= queryString["Documento"]; if(!documento.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.Documento.StartsWith(documento)); var nombre= queryString["Nombre"]; if(!nombre.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.Nombre.Contains(nombre)); bool esAuto; if(bool.TryParse(queryString["EsAutoRetenedor"],out esAuto)) predicate=predicate.AndAlso( q=>q.EsAutoRetenedor==esAuto); Expression<Func<Tercero, bool>> predicate2=null; bool esCliente; if(bool.TryParse(queryString["EsCliente"],out esCliente)) predicate2= q=>q.EsCliente==esCliente; bool esEmpleado; if(bool.TryParse(queryString["EsEmpleado"],out esEmpleado)) { if(predicate2==null) predicate2= q=>q.EsEmpleado==esEmpleado; else predicate2= predicate2.OrElse(q=>q.EsEmpleado==esEmpleado); } bool esEps; if(bool.TryParse(queryString["EsEps"],out esEps)) { if(predicate2==null) predicate2= q=>q.EsEps==esEps; else predicate2= predicate2.OrElse(q=>q.EsEps==esEps); } bool esFp; if(bool.TryParse(queryString["EsFp"],out esFp)) { if(predicate2==null) predicate2= q=>q.EsFp==esFp; else predicate2= predicate2.OrElse(q=>q.EsFp==esFp); } bool esPF; if(bool.TryParse(queryString["EsParafiscal"],out esPF)) { if(predicate2==null) predicate2= q=>q.EsParafiscal==esPF; else predicate2= predicate2.OrElse(q=>q.EsParafiscal==esPF); } bool esPr; if(bool.TryParse(queryString["EsProveedor"],out esPr)) { if(predicate2==null) predicate2= q=>q.EsProveedor==esPr; else predicate2= predicate2.OrElse(q=>q.EsProveedor==esPr); } if(predicate2!=null) predicate= predicate.AndAlso(predicate2); var visitor = ReadExtensions.CreateExpression<Tercero>(); visitor.Where(predicate); if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.PageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } visitor.OrderBy(r=>r.Nombre); return new Response<Tercero>(){ Data=proxy.Get(visitor), TotalCount=totalCount }; }); }
public static Response<ComprobanteEgreso> Patch(this ComprobanteEgreso request, Factory factory, IAuthSession authSession, string action) { int factor; string operacion; string rule; Action<DALProxy> toDo=null; if(action=="asentar") { rule=Definiciones.CheckRequestBeforeAsentar; operacion= Operaciones.Asentar; factor=1; toDo= request.Asentar; } else if(action=="reversar") { rule=Definiciones.CheckRequestBeforeReversar; operacion= Operaciones.Reversar; factor=-1; toDo=request.Reversar; } else if(action=="anular") { rule= Definiciones.CheckRequestBeforeAnular; operacion= Operaciones.Anular; factor=0; } else throw new HttpError(string.Format("Operacion:'{0}' NO implementada para ComprobanteEgreso", action )); var idUsuario = int.Parse(authSession.UserAuthId); factory.Execute(proxy=>{ using(proxy.AcquireLock(request.GetLockKey(), Definiciones.LockSeconds)) { ComprobanteEgreso oldData= DAL.GetComprobanteEgreso(proxy, request.Id); oldData.ValidateAndThrowHttpError(rule); oldData.AssertExists(request.Id); CheckBeforePatch(oldData, request, proxy, idUsuario, operacion); if(factor==0) { proxy.BeginDbTransaction(); request.Anular(proxy,"Anulado por Usuario"); proxy.CommitDbTransaction(); return; } List<ComprobanteEgresoItem> items = request.GetItems(proxy); proxy.BeginDbTransaction(); #region ActualizarCuentaPorPagar foreach(ComprobanteEgresoItem cei in items) { using (proxy.AcquireLock(cei.IdEgreso.GetLockKey<Egreso>(), Definiciones.LockSeconds)) { var egreso = DAL.GetEgresoById(proxy, cei.IdEgreso); if(operacion=="asentar") { var ece= new EgresoCE(){Egreso=egreso, Cei= cei}; var ecv= new EgresoCEValidator(); ecv.ValidateAndThrowHttpError(ece, Operaciones.ActualizarValorEgresoAlAsentarCE); } egreso.Saldo= egreso.Saldo-( cei.Abono*factor); egreso.ActualizarValorSaldo(proxy); var prs= DAL.GetPresupuestoActivo(proxy,request.IdSucursal,Definiciones.IdCentroGeneral); prs.AssertExistsActivo(request.IdSucursal, Definiciones.IdCentroGeneral); CodigoDocumento cd = proxy.GetCodigoDocumento(egreso.CodigoDocumento); cd.AssertExists(egreso.CodigoDocumento); cd.AssertEstaActivo(); //urn:PresupuestoItem:IdPresupuesto:{0}:Codigo:{1}" using(proxy.AcquireLock(prs.GetLockKey(cd.CodigoPresupuesto), Definiciones.LockSeconds)) { var pi= prs.GetPresupuestoItem(proxy,cd.CodigoPresupuesto); pi.AssertExists(prs.Id,cd.CodigoPresupuesto ); pi.UpdatePresupuesto(proxy,request.IdSucursal,Definiciones.IdCentroGeneral, request.Periodo, (cei.Abono>0?(short)1:(short)2), Math.Abs(cei.Abono)*factor,request.IdTercero); } var retList = cei.GetRetenciones(proxy); foreach(ComprobanteEgresoRetencion ret in retList) { using(proxy.AcquireLock(ret.IdPresupuestoItem.GetLockKey<PresupuestoItem>(), Definiciones.LockSeconds)) { var pi= DAL.GetPresupuestoItem(proxy,ret.IdPresupuestoItem); pi.AssertExists(ret.IdPresupuestoItem); pi.UpdatePresupuesto(proxy, request.IdSucursal, Definiciones.IdCentroGeneral,request.Periodo, (ret.Valor>0?(short)2:(short)1), Math.Abs(ret.Valor)*factor, null); } } } } //Actualizar Valor en Comprobante Egreso NO // Actualizar el presupuesto_item de la cuenta giradora.... using(proxy.AcquireLock(request.IdCuentaGiradora.GetLockKey<PresupuestoItem>(), Definiciones.LockSeconds)) { var pi= DAL.GetPresupuestoItem(proxy,request.IdCuentaGiradora); pi.AssertExists(request.IdCuentaGiradora); pi.UpdatePresupuesto(proxy, request.IdSucursal, Definiciones.IdCentroGeneral,request.Periodo, (request.Valor>0?(short)2:(short)1), request.Valor*factor, request.IdTerceroGiradora); } //} #endregion ActualizarCuentaPorPagar toDo(proxy); proxy.CommitDbTransaction(); } }); List<ComprobanteEgreso> data = new List<ComprobanteEgreso>(); data.Add(request); return new Response<ComprobanteEgreso>(){ Data=data }; }
public static Response<Contacto> Delete(this Contacto request, Factory factory, IHttpRequest httpRequest) { factory.Execute(proxy=>{ proxy.Delete<Contacto>(q=>q.Id==request.Id); }); List<Contacto> data = new List<Contacto>(); data.Add(request); return new Response<Contacto>(){ Data=data }; }
public static Response<ComprobanteEgreso> Get(this ComprobanteEgreso request, Factory factory, IHttpRequest httpRequest) { return factory.Execute(proxy=>{ long? totalCount=null; var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; Expression<Func<ComprobanteEgreso, bool>> predicate; var periodo= queryString["Periodo"]; if(periodo.IsNullOrEmpty()) periodo= DateTime.Today.ObtenerPeriodo(); if (periodo.Length==6) predicate= q=>q.Periodo==periodo; else predicate= q=>q.Periodo.StartsWith(periodo) ; var nombre= queryString["NombreTercero"]; if(!nombre.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.NombreTercero.Contains(nombre)); var sucursal= queryString["NombreSucursal"]; if(!sucursal.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.NombreSucursal.Contains(sucursal)); string asentado= queryString["Asentado"]; if(!asentado.IsNullOrEmpty()) { bool tomarSoloAsentado; if( bool.TryParse(asentado,out tomarSoloAsentado)) { if(tomarSoloAsentado) predicate= predicate.AndAlso(q=>q.FechaAsentado!=null); else predicate= predicate.AndAlso(q=>q.FechaAsentado==null); } } var visitor = ReadExtensions.CreateExpression<ComprobanteEgreso>(); visitor.Where(predicate); if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.PageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } visitor.OrderByDescending(r=>r.Numero); return new Response<ComprobanteEgreso>(){ Data=proxy.Get(visitor), TotalCount=totalCount }; }); }
public static Response<Ingreso> Patch(this Ingreso request, Factory factory, IAuthSession authSession, string action) { int factor; string operacion; string rule; if(action=="asentar") { rule=Definiciones.CheckRequestBeforeAsentar; operacion= Operaciones.Asentar; factor=1; } else if(action=="reversar") { rule=Definiciones.CheckRequestBeforeReversar; operacion= Operaciones.Reversar; factor=-1; } else if(action=="anular") { rule= Definiciones.CheckRequestBeforeAnular; operacion= Operaciones.Anular; factor=0; } else throw new HttpError(string.Format("Operacion:'{0}' NO implementada para Ingreso", action )); var idUsuario = int.Parse(authSession.UserAuthId); factory.Execute(proxy=>{ using(proxy.AcquireLock(request.GetLockKey(), Definiciones.LockSeconds)) { var oldData= proxy.FirstOrDefaultById<Ingreso>(request.Id); oldData.AssertExists(request.Id); oldData.ValidateAndThrowHttpError(rule); CheckBeforePatch(oldData, request, proxy, idUsuario, operacion); if(factor==0) { proxy.BeginDbTransaction(); proxy.ExecuteBeforePatch(request, oldData, operacion); request.Anular(proxy); proxy.ExecuteAfterPatch(request, oldData, operacion); proxy.CommitDbTransaction(); return; } List<IngresoItem> items = proxy.Get<IngresoItem>(q=> q.IdIngreso==request.Id); decimal saldo=0; // si queremos reversar debe coincidir con request.Saldo proxy.BeginDbTransaction(); #region ActualizarCuentaPorPagar if(request.Saldo>0) { saldo = (from r in items select r.Valor*(r.TipoPartida==1?-1:1)).Sum(); var prs= DAL.GetPresupuestoActivo(proxy,request.IdSucursal,Definiciones.IdCentroGeneral); prs.AssertExistsActivo(request.IdSucursal, Definiciones.IdCentroGeneral); CodigoDocumento cd = proxy.GetCodigoDocumento(request.CodigoDocumento); cd.AssertExists(request.CodigoDocumento); cd.AssertEstaActivo(); using(proxy.AcquireLock(prs.GetLockKey(cd.CodigoPresupuesto), Definiciones.LockSeconds)) { var pi= prs.GetPresupuestoItem(proxy,cd.CodigoPresupuesto); pi.AssertExists(prs.Id,cd.CodigoPresupuesto ); pi.UpdatePresupuesto(proxy,request.IdSucursal,Definiciones.IdCentroGeneral, request.Periodo, (saldo>0?(short)1:(short)2), Math.Abs(saldo)*factor,request.IdTercero); } } #endregion ActualizarCuentaPorPagar List<IngresoItem> itemsCajaBancos= new List<IngresoItem>(); #region ActualizarSaldoItems foreach(var item in items) { var prs= DAL.GetPresupuestoActivo(proxy,request.IdSucursal, item.IdCentro); prs.AssertExistsActivo(request.IdSucursal, item.IdCentro); using(proxy.AcquireLock(item.IdPresupuestoItem.GetLockKey<PresupuestoItem>(), Definiciones.LockSeconds)) { var pi= DAL.GetPresupuestoItem(proxy,item.IdPresupuestoItem); pi.AssertExists(item.IdPresupuestoItem); pi.UpdatePresupuesto(proxy, request.IdSucursal,item.IdCentro,request.Periodo,item.TipoPartida,item.Valor*factor, null); if (pi.Codigo.StartsWith(Definiciones.GrupoCajaBancos)) itemsCajaBancos.Add(item); } } #endregion ActualizarSaldoItems #region CrearComprobanteIngresos // solo es crear el comprobante y un detalle, los saldos ya estan actualizados... // el centro de costo no interesa... if(factor==1) // asentar --Generar el comprobante de egreso por cuenta y sus items { var valorPorCuentaGiradora= (from r in itemsCajaBancos group r by r.IdPresupuestoItem into g select new { IdPresupuestoItem=g.Key, Valor=g.Sum(p => p.Valor*(p.TipoPartida==1?1:-1))*factor}). ToList(); foreach(var cg in valorPorCuentaGiradora) { string descripcion=string.Format("Cancelacion {0}:{1} ${2}",request.CodigoDocumento, request.Numero, cg.Valor); ComprobanteIngreso ce= DAL.CreateComprobanteIngreso(proxy,request.IdSucursal, cg.IdPresupuestoItem, request.IdTercero, cg.Valor, descripcion, DateTime.Today,true); ce.CreateItem(proxy,request.Id,cg.Valor); } request.Asentar(proxy); } else if(factor==-1) // Reversar= anular todos los comprobantes de este egreso!! { if( itemsCajaBancos.Count!=0) { CheckSaldo(request,saldo); var ei= proxy.Get<ComprobanteIngresoItem>(q=> q.IdIngreso==request.Id); foreach(var cei in ei){ using(proxy.AcquireLock(cei.IdComprobanteIngreso.GetLockKey<ComprobanteIngreso>(),Definiciones.LockSeconds)) { ComprobanteIngreso ce =proxy.FirstOrDefaultById<ComprobanteIngreso>(cei.IdComprobanteIngreso); ce.Anular(proxy,string.Format("Anulado. Ingreso:'{0}' reversado",request.Numero)); } } } proxy.ExecuteBeforePatch(request, oldData, operacion); request.Reversar(proxy); proxy.ExecuteAfterPatch(request, oldData, operacion); } #endregion CrearComprobanteIngresos proxy.CommitDbTransaction(); } }); List<Ingreso> data = new List<Ingreso>(); data.Add(request); return new Response<Ingreso>(){ Data=data }; }
public static Response<SaldoTercero> Get(this SaldoTercero request, Factory factory, IHttpRequest httpRequest) { return factory.Execute(proxy=>{ long? totalCount=null; var paginador= new Paginador(httpRequest); var queryString= httpRequest.QueryString; var predicate = PredicateBuilder.True<SaldoTercero>(); var nombre= queryString["Nombre"]; if(!nombre.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.Nombre.Contains(nombre)); var sucursal= queryString["NombreSucursal"]; if(!sucursal.IsNullOrEmpty()) predicate= predicate.AndAlso(q=>q.NombreSucursal.Contains(sucursal)); string p= queryString["IdSucursal"]; if(!p.IsNullOrEmpty()) { int idSucursal; if( int.TryParse(p,out idSucursal)) { if(idSucursal!=default(int)) predicate= predicate.AndAlso(q=>q.IdSucursal==idSucursal); } } p= queryString["IdTercero"]; if(!p.IsNullOrEmpty()) { int idTercero; if( int.TryParse(p,out idTercero)) { if(idTercero!=default(int)) predicate= predicate.AndAlso(q=>q.IdTercero==idTercero); } } p= queryString["Grupo"]; if(!p.IsNullOrEmpty()) { if(p=="CuentasPorPagar" || p=="CxP") predicate=predicate.AndAlso(q=>q.CodigoItem.StartsWith(Definiciones.GrupoCuentasPorPagar)); else if(p=="CuentasPorCobrar" || p=="CxC") predicate=predicate.AndAlso(q=>q.CodigoItem.StartsWith(Definiciones.GrupoCuentasPorCobrar)); } predicate= predicate.AndAlso(q=> (q.SaldoInicial+q.Debitos-q.Creditos)!=0); var visitor = ReadExtensions.CreateExpression<SaldoTercero>(); visitor.Where(predicate); if(paginador.PageNumber.HasValue) { visitor.Select(r=> Sql.Count(r.Id)); totalCount= proxy.Count(visitor); visitor.Select(); int rows= paginador.PageSize.HasValue? paginador.PageSize.Value:BL.PageSize; visitor.Limit(paginador.PageNumber.Value*rows, rows); } visitor.OrderBy(r=>r.Nombre); return new Response<SaldoTercero>(){ Data=proxy.Get(visitor), TotalCount=totalCount }; }); }