In the excellent advanced grammar test provided by you I believe there is a mistake in this question: My sister _______________ bought a laptop for her birthday last year. The options were: were, was, has or had. You said the correct answer was has but I believe they are all wrong because when the time is given in the sentence in the past, simple past must be used instead of present perfect. Present perfect cannot be used when the specific time in the past is mentioned. Am I right?
Thanks for pointing it out!
Actually, the correct answer should be “had”. This is because it is talking about something that happened concretely in the past, so the past perfect should be used here.
With respect to the perfect and the simple past tenses, it can be a little confusing. Most of the time, if you have a specific time (such as someone’s birthday last year), you would use simple past instead of the present perfect or the past perfect.
The thing that makes it a bit different in this situation is that “her birthday last year” could be describing an event. While it does tell us when it is, the “last year” part of the sentence acts more as an adjective to “her birthday”, telling us which one of her birthdays it was.
For this reason, using one of the perfect tenses makes sense. Please note that you could also use the simple past, just like you have said above.
As the OP mentioned, I would also argue that “her birthday last year” refers to a specific event (a specific occasion) and thus requires the simple past to be used. As a native speaker the sentence “My sister had bought a laptop for her birthday last year” is very unclear, and verging on ungrammatical.