I’m currently facing an issue implementing an RFID card–based staff system for one of our outlets, based on the customer’s requirements below.
Customer Requirements:
1.Each employee is issued an RFID card with a fixed monthly value of RM 30.
At the beginning of every month, the card balance must automatically reset to RM 30, regardless of whether the previous month’s balance was fully used or not.
Once an employee has fully utilized the RM 30 within the same month, the system should:
Display a message such as: “Balance insufficient / Unable to use card, please proceed with cash payment.”
Prevent further card usage until the next monthly reset.
If an employee’s card has a remaining balance (e.g., RM 5) and the bill exceeds that amount, the system should:
Deduct the remaining RM 5 from the card
Allow the balance amount to be paid using cash or another payment method
Current Status:
I have successfully created employee accounts with an initial RM 30 balance.
Employees are able to use their RFID cards until the balance reaches RM 0.
Issues Encountered:
I am unable to configure an automatic monthly reset of the card balance back to RM 30.
I have attempted to follow the steps from the reference link to reset the staff card balance, but the result does not match the intended behavior.
I also need guidance on ensuring the system supports partial card payment and prompts the correct message when the balance is fully exhausted.
Please advise on the correct configuration or workflow to achieve:
Automatic monthly balance reset to RM 30
Proper partial payment handling
Correct restriction and prompt behavior once the card balance reaches RM 0
I’ve attached a video link for your reference to better illustrate the issue.
My tutorial, you referenced above, does not use Customer Accounts, it uses Custom Fields to keep track of balances. (Customer Account is the “Create Account” button when editing/creating an Entity.)
The video you posted is using Customer Accounts to track balances.
What option would you like to use? Customer Accounts can be used, but will require extra work to setup.
Thanks for pointing that out you’re right, my current setup is using Customer Accounts to track balances, while your tutorial is based on Custom Fields.
At this stage, I’m open to switching to Custom Fields if it’s the more reliable and scalable approach for achieving the required monthly reset behavior.
However, before I redo the setup, I’d like your recommendation on which option is better suited for this scenario:
Key requirements:
-Each staff RFID card must have a RM 30 monthly allowance
-The balance must automatically reset to RM 30 at the start of every month
-If balance reaches RM 0, the system must block usage and show a warning prompt
-If the remaining balance is less than the bill, it should deduct remaining value and allow partial cash payment
-This will be deployed across a live outlet, so stability and maintainability are important
If Custom Fields is the intended method in your tutorial, I’m happy to migrate but I’ll need guidance on:
-How to trigger the automatic monthly reset
-How to block RFID usage once allowance reaches RM 0
-How to support partial payment logic cleanly
If it’s possible with Customer Accounts, I’d also appreciate a recommended workflow even if it requires extra automation or scripts.
Thanks again for your support. I really appreciate your guidance on the best practice approach here.
I suggest going through the tutorial and taking it for a test drive.
You can set it up for what ever amount you want to give to the staff members. You can even assign different amounts to each staff member.
When an Staff member is loaded onto a ticket, it will automatically check if the discount amount is set to the current month and year. If the current month and year is different it will reset the amount to the amount allocated to that staff member. If the current month and year are the same, it will use their remaining discount amount.
You can test this by going to Manage → Entities → Entities → <staff member> → Benefit Month and change the month and or year.
A new button will appear when a staff member is loaded to the ticket. When the button is selected it will prompt for the amount to be discounted. By default it will be the ticket total, IF there is remaining amount is greater than the ticket total. If the remaining amount is less than the ticket total it will use the remaining amount. If entered amount is greater than the ticket total or staff remaining amount it will not allow the discount to happen.
This might depend on wither the Staff is it’s own entity or are the part of the customers entity?
If the Staff is part of the Customers entity? Or is Staff there own Entity?
If the Staff is part of the Customers entity, do they have access to customers accounts?
In my opinion, using accounts is not the best practice, since is a “discount” and not a payment method.
I do not have this installed in my location, I only have a few staff members. It looks like at least 1 other person has installed it. I have not heard any troubles with it from anybody.