[Tex/LaTex] Lowercase in \citet{}, uppercase in \citep{}

bibtexcapitalizationcitingnatbib

My institute's format standards require that author's name in \citet{} citations should appear with first letter in uppercase, whereas in \citep{}, all letter should be in uppercase.

For example: \citet{Wooldridge2002} should give Wooldridge(2002) whereas \citep{Wooldridge2002} should give (WOOLDRIDGE, 2002).

How can I accomplish that? I tried a naive solution with \MakeUppercase, but it didn't worked. See example (\bibitem extracted from .bbl generated from .bib with our style):

\documentclass[11pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{natbib}

\begin{document}
  I want the first letter of author's name in uppercase here: \citet{Wooldridge2002} (ok).

  I want all letters of author's name in uppercase here: \MakeUppercase\expandafter{\citep{Wooldridge2002}} (not ok).

  \begin{thebibliography}{9}
  \bibitem[Wooldridge(2002)WOOLDRIDGE]{Wooldridge2002} WOOLDRIDGE, M.~J\@.
  \textbf{An Introduction to Multiagent Systems}. Chichester: John Wiley \&
  Sons, 2002.
  \end{thebibliography}
\end{document}

EDIT: I rephrased the paragraphs in the code to reflect better my intentions.

Best Answer

You can add in your preamble

\makeatletter
\DeclareRobustCommand\citep
   {\begingroup\NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
         \@ifstar{\scshape\NAT@fulltrue\NAT@citetp}{\scshape\NAT@fullfalse\NAT@citetp}}
\makeatother

It simply redefines the \citep command, with extra \scshape to get the name of the authors in uppercase.