예제 #1
0
        public static ComprobanteEgreso CreateComprobanteEgreso(DALProxy proxy,
                                            int idSucursal, int idCuentaGiradora, int idTercero, decimal valor,
                                            string descripcion,
                                            int? idTerceroReceptor=null, DateTime? fechaAsentado=null,
                                            bool? externo=false)
        {
			var today= DateTime.Today;
			var periodo= today.Year.ToString() + today.Month.ToString().PadLeft(2,'0');

            ComprobanteEgreso ce = new ComprobanteEgreso(){
                IdSucursal=idSucursal,
                IdCuentaGiradora= idCuentaGiradora,
                Fecha=today,
				Periodo= periodo,
                IdTercero=idTercero,
                Valor=valor,
                Descripcion=descripcion,
                IdTerceroReceptor= idTerceroReceptor.HasValue? idTerceroReceptor.Value: idTercero,
                FechaAsentado= fechaAsentado.HasValue?fechaAsentado.Value:fechaAsentado, //UTC ?
                Externo= externo.HasValue?externo.Value:false
            };   
            ce.Numero=proxy.GetNextConsecutivo(idSucursal, Definiciones.ComprobranteEgreso).Numero;
            proxy.Create(ce);
            return ce;
        }
예제 #2
0
 public static void Asentar(this Egreso egreso,DALProxy  proxy){
     egreso.FechaAsentado=DateTime.Today;
     var visitor = ReadExtensions.CreateExpression<Egreso>();
     visitor.Update( f=> new {  f.FechaAsentado });                  
     visitor.Where(r=>r.Id==egreso.Id);
     proxy.Update(egreso, visitor);
 }
예제 #3
0
 public static void Reversar(this Ingreso ingreso, DALProxy proxy){
     ingreso.FechaAsentado=null;
     var visitor = ReadExtensions.CreateExpression<Ingreso>();
     visitor.Update( f=> new {  f.FechaAsentado });                  
     visitor.Where(r=>r.Id==ingreso.Id);
     proxy.Update(ingreso, visitor);
 }
예제 #4
0
        public static T CheckExistAndActivo <T>(this DALProxy proxy, int id, Expression <Func <T, object> > field)
            where T : IHasActivo, new()

        {
            if (id == default(int))
            {
                throw HttpError.Unauthorized(string.Format("Debe Indicar el Id para: '{0}", typeof(T).Name));
            }

            var record = proxy.FirstOrDefault <T>(q => q.Id == id);

            if (record == null)
            {
                throw HttpError.NotFound(string.Format("No existe '{0}' con Id: '{1}'", typeof(T).Name, id));
            }

            if (!record.Activo)
            {
                object fieldValue = GetValue <T>(record, field);

                throw HttpError.Unauthorized(string.Format("Registro Inactivo '{0} :'{1}-{2}'",
                                                           typeof(T).Name,
                                                           id, fieldValue));
            }

            return(record);
        }
예제 #5
0
 public static void Anular(this Ingreso ingreso,DALProxy proxy){
     ingreso.FechaAnulado=DateTime.Today;
     var visitor = ReadExtensions.CreateExpression<Ingreso>();
     visitor.Update( f=> new {  f.FechaAnulado });                  
     visitor.Where(r=>r.Id==ingreso.Id);
     proxy.Update(ingreso, visitor);
 }
예제 #6
0
 public static void Update(this MayorPresupuesto item, DALProxy proxy, string periodo, short tipoPartida, decimal valor)
 {
     item.UpdateSaldos(periodo, tipoPartida==1?valor:0, tipoPartida==2? valor:0);
     SqlExpressionVisitor<MayorPresupuesto> expression = ReadExtensions.CreateExpression<MayorPresupuesto>();
     //expression.Where(r=>r.Id==item.Id);
     proxy.Update<MayorPresupuesto>(item,periodo.Substring(0,4),expression);
 }
예제 #7
0
 public static MayorPresupuesto GetMayorPresupuesto(DALProxy proxy, string periodo, int idPresupuestoItem, int? idTercero=null)
 {
     var visitor= ReadExtensions.CreateExpression<MayorPresupuesto>();
     if(idTercero.HasValue) visitor.Where(r=>r.IdPresupuestoItem== idPresupuestoItem && r.IdTercero ==idTercero.Value);
     else visitor.Where(r=>r.IdPresupuestoItem== idPresupuestoItem && r.IdTercero==null);
     return proxy.FirstOrDefault(periodo.Substring(0,4), visitor);
 }
예제 #8
0
        public static void Actualizar(this ComprobanteEgreso documento,DALProxy proxy){

			var visitor = ReadExtensions.CreateExpression<ComprobanteEgreso>();
            visitor.Update( f=> new { f.Descripcion,f.Fecha,f.Periodo,f.IdTercero,f.IdTerceroReceptor, f.IdCuentaGiradora});                  
            visitor.Where(q=>q.Id==documento.Id);
			proxy.Update(documento,visitor);
        }
예제 #9
0
        public static Egreso GetEgresoById( DALProxy proxy, int idEgreso, bool excludeJoin=true)
		{   
            var visitor = ReadExtensions.CreateExpression<Egreso>();
            visitor.ExcludeJoin=excludeJoin;
            visitor.Where(q=>q.Id==idEgreso);
            return proxy.FirstOrDefault(visitor);
        }
예제 #10
0
 public static void Create(this ComprobanteEgreso comprobante, DALProxy proxy)
 {
     var visitor = ReadExtensions.CreateExpression<ComprobanteEgreso>();
     visitor.Insert( f=> new { f.Id, f.Descripcion, f.Fecha,
         f.Periodo, f.IdSucursal,f.Numero,f.IdTercero,f.IdTerceroReceptor,
         f.IdCuentaGiradora });                  
     proxy.Create(comprobante, visitor);
 }
예제 #11
0
 public static void UpdateDbCr(this PresupuestoItem presupuestoItem, DALProxy proxy, short tipoPartida, decimal valor )
 {
     presupuestoItem.Update(tipoPartida==1?valor:0, tipoPartida==2? valor:0);
     SqlExpressionVisitor<PresupuestoItem> expression= ReadExtensions.CreateExpression<PresupuestoItem>();
     expression.Where(r=> r.Id== presupuestoItem.Id);
     expression.Update(r=> new{r.Debitos, r.Creditos});
     proxy.Update(presupuestoItem, expression);
 }
예제 #12
0
        public  static void UpdatePresupuesto(this PresupuestoItem presupuestoItem, DALProxy proxy,
                                              int idSucursal, int idCentro, string periodo,
                                              short tipoPartida, decimal valor, int? idTercero)
        {


            using(proxy.AcquireLock(MayorPresupuesto.GetLockKey(presupuestoItem.Id, idTercero),Definiciones.LockSeconds))
            {
                var pm= DAL.GetMayorPresupuesto(proxy, periodo,presupuestoItem.Id, idTercero);
    
                if(pm==default(MayorPresupuesto))
                {
                    pm= new MayorPresupuesto(){
                        IdPresupuestoItem=presupuestoItem.Id,
                        IdSucursal=idSucursal,
                        IdCentro=idCentro,
                        IdTercero=idTercero
                    };
                }
    
                if(pm.Id==default(int))
                {
                   pm.Insert(proxy,periodo,tipoPartida, valor);
                }
                else
                {
                    pm.Update(proxy,periodo,tipoPartida, valor);
                }
            }

			if(presupuestoItem.UsaTercero)
			{
				using(proxy.AcquireLock(SaldoTercero.GetLockKey(presupuestoItem.Id, idTercero.Value),Definiciones.LockSeconds))
            	{
					SaldoTercero st = proxy.FirstOrDefault<SaldoTercero>(q=> q.IdPresupuestoItem==presupuestoItem.Id &&
					                                          q.IdTercero== idTercero.Value);
					if(st==default(SaldoTercero))
					{
						st= new SaldoTercero{
							IdPresupuestoItem=presupuestoItem.Id,
							IdSucursal=idSucursal,
							IdTercero=idTercero.Value
						};
					}

					st.UpdateDbCr(tipoPartida==1?valor:0, tipoPartida==2?valor:0);

					if(st.Id==default(int))
						proxy.Create(st);
					else
						proxy.Update(st);
				}
			}

			presupuestoItem.UpdateDbCr(proxy, tipoPartida, valor);   
        }
예제 #13
0
 public static UsuarioGiradora GetUsuarioGiradora(DALProxy proxy, int idUsuario, int idPresupuestoItem, int?idTercero)
 {
     if(idTercero.HasValue)
             return proxy.FirstOrDefault<UsuarioGiradora>(x=>x.IdUsuario== idUsuario 
                                                          &&  x.IdPresupuestoItem== idPresupuestoItem
                                                          && x.IdTercero==idTercero.Value);
         else
             return proxy.FirstOrDefault<UsuarioGiradora>(x=>x.IdUsuario== idUsuario 
                                                          &&  x.IdPresupuestoItem== idPresupuestoItem
                                                          );
 }
예제 #14
0
		public static void Anular(this ComprobanteIngreso comprobanteIngreso, DALProxy proxy, string descripcion)
        {
            comprobanteIngreso.FechaAnulado= DateTime.Today;
            comprobanteIngreso.Descripcion= descripcion.IsNullOrEmpty()?"Anulado":descripcion;
            comprobanteIngreso.Valor=0;

            proxy.Execute(dbCmd=>{
                proxy.Delete<ComprobanteIngresoItem>(r=>r.IdComprobanteIngreso==comprobanteIngreso.Id);
				proxy.Update(comprobanteIngreso,
				     ev=> ev.Update(f=>new {f.FechaAnulado, f.Descripcion,f.Valor}).
				          Where(q=>q.Id==comprobanteIngreso.Id ));
            });
        }
예제 #15
0
        public static ComprobanteEgresoItem CreateItem(this ComprobanteEgreso comprobanteEgreso,
		                                               DALProxy proxy,
                                                       int idEgreso, decimal valor)
        {
            ComprobanteEgresoItem cei= new ComprobanteEgresoItem(){
                IdEgreso= idEgreso,
                Abono= valor,
                IdComprobanteEgreso= comprobanteEgreso.Id

            };
            proxy.Create(cei);
            return cei;
        }
예제 #16
0
        static Ciudad CheckCiudad(DALProxy proxy, Pedido request)
        {
            if (request.IdCiudadDestinatario == 0)
            {
                throw HttpError.Unauthorized("Debe Indicar la ciudad Destino");
            }
            var ciudad = proxy.FirstOrDefaultById <Ciudad>(request.IdCiudadDestinatario);

            if (ciudad == default(Ciudad))
            {
                throw HttpError.NotFound(string.Format("No existe Ciudad con Id: '{0}'", request.IdCiudadDestinatario));
            }
            return(ciudad);
        }
예제 #17
0
        public static void CheckUsuarioGiradora(this PresupuestoItem presupuestoItem, DALProxy proxy, 
                                                int idUsuario,
                                                int? idTercero)
        {
            if(presupuestoItem.Codigo.StartsWith(Definiciones.GrupoCajaBancos))
            {
                var usuarioGiradora = DAL.GetUsuarioGiradora(proxy, idUsuario, presupuestoItem.Id, idTercero);

                if(usuarioGiradora==default(UsuarioGiradora))
                throw new HttpError(
                    string.Format("No existe Cuenta Giradora autorizada para IdUsuario:'{0}'  Codigo:'{1}' idTercero:{2}",
                              idUsuario, presupuestoItem.Codigo, idTercero.HasValue? idTercero.Value: 0));            

            }
        }
예제 #18
0
		static Ciudad CheckCiudad(DALProxy proxy,  Pedido request)
		{
			if(request.IdCiudadDestinatario==0)
					throw HttpError.Unauthorized("Debe Indicar la ciudad Destino");
			var ciudad = proxy.FirstOrDefaultById<Ciudad>(request.IdCiudadDestinatario);
				if(ciudad==default(Ciudad))
					throw HttpError.NotFound(string.Format("No existe Ciudad con Id: '{0}'", request.IdCiudadDestinatario));
			return ciudad;
		}
예제 #19
0
        public static void Anular(this ComprobanteEgreso comprobanteEgreso, DALProxy proxy, string descripcion)
        {
            comprobanteEgreso.FechaAnulado= DateTime.Today;
            comprobanteEgreso.Descripcion= descripcion.IsNullOrEmpty()?"Anulado":descripcion;
            comprobanteEgreso.Valor=0;

            proxy.Execute(dbCmd=>{
                proxy.Delete<ComprobanteEgresoItem>(r=>r.IdComprobanteEgreso==comprobanteEgreso.Id);

				var visitor = ReadExtensions.CreateExpression<ComprobanteEgreso>();
            	visitor.Update(r=> new {r.FechaAnulado, r.Descripcion,r.Valor});                  
            	visitor.Where(r=> r.Id==comprobanteEgreso.Id );

                proxy.Update(comprobanteEgreso,visitor);
            });

        }
예제 #20
0
        static void CheckBeforePatch(ComprobanteEgreso oldData, ComprobanteEgreso request,
                                             DALProxy proxy,
                                             int idUsuario,
                                             string operacion)
        {
            oldData.ValidateAndThrowHttpError(operacion);
            CEs ces= new CEs(){Nuevo=request, Viejo=oldData};
            CEsValidator ev = new CEsValidator();
            ev.ValidateAndThrowHttpError(ces,operacion);

            oldData.CheckSucursal(proxy,idUsuario);
            oldData.CheckPeriodo(proxy);

            request.PopulateWith(oldData);

        }
예제 #21
0
        static PresupuestoItem CheckUsuarioGiradora(this ComprobanteEgreso documento, DALProxy proxy, int idUsuario)
        {
            PresupuestoItem pi = DAL.GetPresupuestoItem(proxy, documento.IdCuentaGiradora);
            pi.AssertExists(documento.IdCuentaGiradora);

            PresupuestoItemValidador piv= new PresupuestoItemValidador();
            piv.ValidateAndThrowHttpError(pi, Definiciones.PrspItemActivo);

			if(!pi.UsaTercero) documento.IdTerceroGiradora=null;

            pi.CheckUsuarioGiradora(proxy,idUsuario, documento.IdTerceroGiradora);
			return pi;
        }
예제 #22
0
        private static void CheckOldAndNew(ComprobanteEgreso oldData, ComprobanteEgreso request,
                                           DALProxy proxy,
                                           int idUsuario)
        {
            oldData.ValidateAndThrowHttpError(Operaciones.Update);

            CEs ces= new CEs(){Nuevo=request, Viejo=oldData};
            CEsValidator ev = new CEsValidator();
            ev.ValidateAndThrowHttpError(ces,Operaciones.Update);

            oldData.CheckSucursal(proxy, idUsuario);

            var data = new ComprobanteEgreso();
            data.PopulateWith(oldData);

            if( request.Fecha!=default(DateTime) && request.Fecha!=data.Fecha)
            {
                data.Fecha=request.Fecha;
                data.Periodo= data.Fecha.ObtenerPeriodo();
            }

            data.CheckPeriodo(proxy);

            //if(request.IdTercero!=default(int) && request.IdTercero!=data.IdTercero)
            //{
            //    data.IdTercero=request.IdTercero;
            //    data.CheckTercero(proxy);
            //}

            if(request.IdTerceroReceptor!=default(int) && request.IdTerceroReceptor!=data.IdTerceroReceptor )
            {
                data.IdTerceroReceptor=request.IdTerceroReceptor;
                var tr= data.CheckTerceroReceptor(proxy);
				data.DocumentoReceptor= tr.Documento;
                data.NombreDocumentoReceptor= tr.NombreDocumento;
                data.NombreReceptor=tr.Nombre;
                data.DVReceptor= tr.DigitoVerificacion;
            }

            if(!request.Descripcion.IsNullOrEmpty() && request.Descripcion!=data.Descripcion)
                data.Descripcion=request.Descripcion;

            bool checkcg=false;

            if(request.IdCuentaGiradora!=default(int) && request.IdCuentaGiradora!=data.IdCuentaGiradora)
            {
                data.IdCuentaGiradora= request.IdCuentaGiradora;
                checkcg=true;
            }


            if((request.IdTerceroGiradora.HasValue && request.IdTerceroGiradora.Value!=default(int)) &&
               ( !data.IdTerceroGiradora.HasValue || 
                    (data.IdTerceroGiradora.HasValue && request.IdTerceroGiradora.Value!=data.IdTerceroGiradora.Value)))
            {
                data.IdTerceroGiradora= request.IdTerceroGiradora;
                checkcg=true;
            }

            if(checkcg){
				var pi = data.CheckUsuarioGiradora(proxy, idUsuario);
				data.CodigoItem= pi.Codigo;
				data.NombreItem = pi.Nombre;
			}

            request.PopulateWith(data);
        }
예제 #23
0
        static Tercero CheckTerceroReceptor(this ComprobanteEgreso request, DALProxy proxy)
        {
            Tercero t = proxy.FirstOrDefaultByIdFromCache<Tercero>(request.IdTerceroReceptor);

            t.AssertExists(request.IdTerceroReceptor);

			return t;

        }
예제 #24
0
		public static void Create(this Ingreso request, DALProxy proxy)
        {
            var visitor = ReadExtensions.CreateExpression<Ingreso>();
            visitor.Insert( f=> new { f.Id, f.Descripcion, f.Fecha, f.Periodo, f.IdSucursal,f.Numero,f.CodigoDocumento,f.Documento, f.IdTercero, f.DiasCredito });
			proxy.Create(request,visitor);
        }
예제 #25
0
        static void CheckBeforePatch(Ingreso oldData, Ingreso request,
                                             DALProxy proxy,
                                             int idUsuario,
                                             string operacion)
        {
            oldData.ValidateAndThrowHttpError(operacion);
            Ingresos egresos= new Ingresos(){Nuevo=request, Viejo=oldData};
            IngresosValidator ev = new IngresosValidator();
            ev.ValidateAndThrowHttpError(egresos,operacion);

            oldData.CheckSucursal(proxy,idUsuario);
            oldData.CheckPeriodo(proxy);

            request.PopulateWith(oldData);
        }
예제 #26
0
        static void CheckOldAndNew(Ingreso oldData, Ingreso request,
                                           DALProxy proxy,
                                           int idUsuario)
        {
            oldData.ValidateAndThrowHttpError(Operaciones.Update);

            Ingresos egresos= new Ingresos(){Nuevo=request, Viejo=oldData};
            IngresosValidator ev = new IngresosValidator();
            ev.ValidateAndThrowHttpError(egresos,Operaciones.Update);

            oldData.CheckSucursal(proxy, idUsuario);

            var data = new Ingreso();
            data.PopulateWith(oldData);

            if( request.Fecha!=default(DateTime) && request.Fecha!=data.Fecha)
            {
                data.Fecha=request.Fecha;
                data.Periodo= data.Fecha.ObtenerPeriodo();
            }

            data.CheckPeriodo(proxy);

            if(request.IdTercero!=default(int) && request.IdTercero!=data.IdTercero)
            {
                data.IdTercero=request.IdTercero;
                var tercero=data.CheckTercero(proxy);
                data.NombreDocumentoTercero=tercero.NombreDocumento;
                data.NombreTercero=tercero.Nombre;
                data.DocumentoTercero=tercero.Documento;
                data.DVTercero= tercero.DigitoVerificacion;
            }
			            
            if(!request.Descripcion.IsNullOrEmpty() && request.Descripcion!=data.Descripcion)
                data.Descripcion=request.Descripcion;

            if(request.DiasCredito!=data.DiasCredito) data.DiasCredito=request.DiasCredito;

            request.PopulateWith(data);
        }
예제 #27
0
 public static void ActualizarValorSaldo(this Ingreso ingreso,DALProxy  proxy){
     var visitor = ReadExtensions.CreateExpression<Ingreso>();
     visitor.Update( f=> new {  f.Valor, f.Saldo });                  
     visitor.Where(r=>r.Id==ingreso.Id);
     proxy.Update(ingreso, visitor);
 }
        static void CheckOldAndNew(this ComprobanteIngresoItem request,
                                           ComprobanteIngresoItem oldData,
                                           DALProxy proxy
                                           )
        {
            ComprobanteIngresoItem data = new ComprobanteIngresoItem();
            data.PopulateWith(oldData);

            if(request.Abono!=default(decimal) && request.Abono!=data.Abono)
                data.Abono=request.Abono;

            request.PopulateWith(data);
        }
예제 #29
0
		public static void Update(this Ingreso ingreso,DALProxy proxy){
            var visitor = ReadExtensions.CreateExpression<Ingreso>();
            visitor.Update( f=> new { f.Descripcion,f.Fecha,f.Periodo,f.IdTercero,f.CodigoDocumento,f.DiasCredito});                  
            visitor.Where(r=>r.Id==ingreso.Id);
            proxy.Execute(dbCmd=> dbCmd.UpdateOnly(ingreso, visitor));
        }
예제 #30
0
		public static void AsignarDocumento(this Ingreso request, DALProxy proxy)
        {
			var numero =proxy.GetNextConsecutivo(request.IdSucursal,request.CodigoDocumento).Numero;
			request.Documento= numero.ToString().PadLeft(5,'0');
        }
예제 #31
0
		public static void AsignarConsecutivo(this Ingreso request, DALProxy proxy)
        {
            request.Numero= proxy.GetNextConsecutivo(request.IdSucursal,Definiciones.Ingreso).Numero;
        }
 static PresupuestoItem CheckPresupuestoItem(this ComprobanteEgresoRetencion item, DALProxy proxy)
 {
     PresupuestoItem pi = DAL.GetPresupuestoItem(proxy, item.IdPresupuestoItem);
     pi.AssertExists(item.IdPresupuestoItem);
     return pi;
 }