[IMP] gamification: avoid sending twice emails in cron

When the cron is running on a database with a large number of goals (e.g. website_forum with thousands of users), it's possible the CPU time is exceeded and we may have a rollback after sending some emails (for granted badges).
To avoid sending twice emails, commit in cron mode after each reward.
[FIX] point_of_sale: prevent empty order creation as they are not accepted by the backend