Validation : Appendix A: %F and RFND – Automated refunds Appendix A: %F and RFND – Automated refunds
This functionality allows a ticket to be refunded:
• Fully if the guest returns within forty-five minutes from the time of purchase
• Partially if the guest returns within four hours (but after forty-five minutes) of purchase
This functionality can be set up with a barcode using %F referring to RFND conditions in item configurations (SysManager > DCIs > New/Edit > Sales Actions tab > Refund conditions for scanned items: field). The %F has the time the ticket was sold in minutes since midnight, followed by programmable keyboard codes for items you want to use based on the swipe. The format for %F is:
%F(sale_time, keycode1, keycode2, keycode3,...,keycodeN)
For the format for RFND, see the Salesware User and Ticketing Guide for Beginning Users.
Example:
You could configure:
• Adult All Day Ticket: RFND(0,240,-1) with a programmable keyboard code of 41
• Adult Half Day Ticket: RFND(45,240,1) with a programmable keyboard code of 97
If you wanted to set up a swipe to give a full refund if the guest comes back within forty-five minutes and give him a half-day refund if they come back within four hours, you do this:
%F(480,41,97)
This assumes that he bought the ticket at 8:00 AM. When you enter %F(480,41,97), the command executes the RFND commands for programmable keyboard code 41 and 97.
Let’s say that a person came back at 8:30 AM (510 minutes after midnight):
• For RFND(0,240,-1), a quantity of -1 of the item would be sold (because 510 - 480 = 30 and 30 is between 0 and 240)
• For RFND(45,240,1), no action would be taken (because 510 - 480 = 30 and 30 is not between 45 and 240)
• End result = Full refund
Now say that the person came back at 10:00 AM (600 minutes after midnight):
• For RFND(0,240,-1), a quantity of -1 of the item would be sold (because 600 - 480 = 120 and 120 is between 0 and 240)
• For RFND(45,240,1), a quantity of 1 of the item would be sold (because 600 - 480 = 120 and 120 is between 45 and 240)
• End result = Refund of All Day ticket and sale of Half Day ticket
Now say that the person came back at 3:00 PM (900 minutes after midnight):
• For RFND(0,240,-1), no action would be taken (because 900 - 480 = 420 and 420 is not between 0 and 240)
• For RFND(45,240,1), no action would be taken (because 900 - 480 = 420 and 420 is not between 0 and 240)
• End result = No refund
How to configure items to use this functionality:
1. Set up the All Day ticket, which:
• Is a regular item (no need to write access record)
• Has a price (e.g., $20)
• Sales Actions tab contains the following return condition: RFND(0,240,-1)
• Has a keyboard code assigned to (e.g., 48)
• Uses a layout containing the following barcode:
<|' %F('+alltrim(str(val(substr(tmp_time,1,2))*60+val(substr(tmp_time,4,2)),4,0))+',<keycode1>,<keycode2>) '|>
In this specific example, the barcode is:
<|' %F('+alltrim(str(val(substr(tmp_time,1,2))*60+val(substr(tmp_time,4,2)),4,0))+',48,50) '|>
2. Set up the Half Day ticket:
• Is a regular item (no need to write access record)
• Has a price (e.g., $10)
• Sales Actions tab contains the following Return condition: RFND(45,240,1)
• Has a keyboard code assigned to (e.g., 50)
• Uses a layout containing the following barcode:
<|' %F('+alltrim(str(val(substr(tmp_time,1,2))*60+val(substr(tmp_time,4,2)),4,0))+',<keycode1>,<keycode2>) '|>
In this specific example, the barcode is:
<|' %F('+alltrim(str(val(substr(tmp_time,1,2))*60+val(substr(tmp_time,4,2)),4,0))+',48,50) '|>
How the refund take place:
1. In Sales, when you sell the All Day ticket (keycode 48), depending on the time of purchase the barcode prints out the exact number of minutes from midnight until the time of purchase.
Example:
If the guest buys the above configured All Day ticket at exactly 8:00 PM, the barcode prints:
%F(480,48,50)
2. If the guest comes back (due to bad weather, for example) to return the ticket, the operator swipes the above barcode:
• If it is within forty-five minutes from the time of purchase (i.e., between 8:00 AM and 8:45 AM for this example), the All Day ticket item is added to the Sales screen with a negative quantity, as set in the item return condition.
• In this example, it is -1 = Refund = -$20
• If it is later than forty-five minutes but within four hours (i.e., between 8:46 AM and 12:00 PM for this example), the All Day ticket item is added to the Sales screen with a negative quantity together with a Half Day ticket with a positive quantity.
• In this example, it is:
• -1 for All Day ticket (keycode 48) = -$20
• +1 for Half Day ticket (keycode 50) = $10
• = Refund = -$10
• If it is later than four hours (i.e., after 12:00 PM), no sales action takes place upon swiping = No refund.
Notes:
• You can tack as many things on there as you like.
Example:
%F(480,24,41,97,102,56) would invoke programmable keyboard codes 24, 41, 97, 102 and 56 with a sale time of 8:00 AM and based on their respective RFND commands.
• You can change the return conditions as you wish, such as sixty minutes for full refund (instead of forty-five), and different levels of partial refunds of three hours, four hours, six hours, etc., (no need to stick with four hours at half price).
• The following is a sample of this kind of ticket:
<|alltrim("<RR><F3><HW4,4><RC50,810><EI>")+upper(substr(CMONTH(ctod(tmp_edate)),1,1))+substr(tmp_edate,4,2)+'<DI>'|>
<|alltrim("<RL><F2><HW3,2><RC500,518>")+alltrim(time())|>
<|alltrim("<HW2,2><RC500,560>")+alltrim(tmp_date)|>
<|alltrim("<RL><HW1,1><RC480,475>GST#R100552652")|>
<|alltrim("<RR><F1><HW2,2><RC50,560>")+alltrim(tmp_oper)+alltrim(tmp_loc)|>
<|alltrim("<F3><HW1,2><RC50,850><BS15,30>")+alltrim(tmp_idesc)|>
<|alltrim("<RC530,230><OP6><BI><X2>")+'^'+'%F('+alltrim(str(val(substr(tmp_time,1,2))*60+val(substr(tmp_time,4,2)),4,0))+',48,50)'+'^'|>
<|alltrim("<RL><F3><RC500,265><HW4,4><EI>")+upper(substr(CMONTH(ctod(tmp_edate)),1,1))+substr(tmp_edate,4,2)+'<DI>'|>
<|alltrim("<F2><RC490,405><HW2,1>")+alltrim("The Colors of Blue are Changing")|>
<|alltrim("<F3><HW1,2><RC500,225><BS15,30>")+alltrim(tmp_idesc)|>
<|alltrim(" <RL><F3><HW1,1><RC490,490>TOTAL: ")+' <F2><RC350,505><HW2,1>'+fop()+'<F3><HW1,1><RC190,500>'+str(tmp_ext/tmp_qty,7,2)|>
<|alltrim(" <HW1,1><RL><RC290,470> GST: ")+str((tmp_ext/tmp_qty)-(tmp_ext/tmp_qty/1.07),7,2)|>
<|alltrim(" <RC390,435>SUB TOTAL: ")+str(tmp_ext/tmp_qty/1.07,7,2)|>
<|alltrim("<RC60,655><OL4><BI><X2>")+'^'+'%F('+alltrim(str(val(substr(tmp_time,1,2))*60+val(substr(tmp_time,4,2)),4,0))+',48,50)'+'^'|>
<|alltrim("<NR><RC40,670><LT6><BX550,190>")|>
<|alltrim("<RC40,220><LT6><BX475,185>")|>
<|alltrim("<RL><HW2,2><RC600,585><F1>------------Fold--------Here-------------<RR><F2><RC50,565>")|>
<|alltrim("<p>")|>