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);

        }
        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);
        }