The point of the present perfect is that it is a present tense; that means it takes place in a time scheme that includes the non-past.
'yesterday' violates that rule. Now it is possible that the speaker decided to switch time scheme mid-sentence; not advisable but not unknown and presumably if it happened often enough there would be a realignment regarding the rules for the present perfect, but at present it is rare.
Perfect agony
Moderators: Dimitris, maneki neko2, Lorikeet, Enrico Palazzo, superpeach, cecil2, Mr. Kalgukshi2