How to Limit the B1G1 or B2G2 on each ticket?

I have a Promotion from a Loyalty Vendor for their customers.
Either B1G1 or B2G2. (Buy 1 or Get 1 / Buy 2 or Get 2)

A customer has a Voucher Code for either B1G1 or B2G2 to use only once per voucher code.

This is the scenario:

Customer Walks in and presents a code for B1G1,
and takes order for 2 Beers.

Now, i want a button here where waiter clicks on B1G1 Promotion and then enters the voucher code (voucher code need not be validated, but just for record purpose is added on the ticket)

Now the system gifts one beer as B1G1 - Voucher Code , and with one voucher code only once we can enter.

I hope its clear