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 Response<EgresoItem> Put(this EgresoItem request, Factory factory, IAuthSession authSession) { if(request.IdTercero.HasValue && request.IdTercero.Value==default(int)) request.IdTercero=null; request.CheckId(Operaciones.Update); factory.Execute(proxy=>{ using (proxy.AcquireLock(request.IdEgreso.GetLockKey<Egreso>(), Definiciones.LockSeconds)) { EgresoItem oldData = proxy.FirstOrDefaultById<EgresoItem>(request.Id); oldData.AssertExists(request.Id); Egreso egreso= DAL.GetEgresoById(proxy, oldData.IdEgreso); egreso.AssertExists(request.IdEgreso); CheckOldAndNew(egreso,request,oldData, proxy, int.Parse(authSession.UserAuthId)); PresupuestoItem pi= Check1(proxy, request, int.Parse(authSession.UserAuthId)); CodigoDocumento cd = proxy.GetCodigoDocumento(egreso.CodigoDocumento); cd.AssertExists(egreso.CodigoDocumento); cd.AssertEstaActivo(); if(request.TipoPartida!=oldData.TipoPartida || request.Valor!=oldData.Valor) { if(oldData.TipoPartida==1) { egreso.Valor= egreso.Valor-oldData.Valor; egreso.Saldo= egreso.Saldo-oldData.Valor; } else egreso.Saldo=egreso.Saldo+oldData.Valor; if(request.TipoPartida==1) { cd.CheckDebitos(pi.Codigo); egreso.Valor= egreso.Valor+request.Valor; egreso.Saldo=egreso.Saldo+request.Valor; } else { cd.CheckCreditos(pi.Codigo); egreso.Saldo=egreso.Saldo-request.Valor; } proxy.BeginDbTransaction(); egreso.ActualizarValorSaldo(proxy); request.Actualizar(proxy); proxy.CommitDbTransaction(); } else request.Actualizar(proxy); } }); List<EgresoItem> data = new List<EgresoItem>(); data.Add(request); return new Response<EgresoItem>(){ Data=data }; }