Пример #1
0
        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
            };  
            
        }
Пример #2
0
        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
            };
        }