Building Alarm to Prevent Theft - Need Coding Help

I doubt your reed switch idea would work anyway because (I assume) that they would be closed again by the time the person legitimately put their hand in the slot because by that time the dispensing is a done deal.

I would pretty much do what you are doing but disable the buzzer for (say) 10 seconds after you detect an open reed switch.

You can do this by recording the millis() time of that event and not actioning the sensors input for 10000 millseconds after that. This gives the person 10 seconds to retrieve the object.

At any other time the buzzer is sounded immediately.

And the PIR is powered all the time, do this all in program logic.