Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations gkittelson on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Adding a suggested tip percentage to a customers credit card signature receipt micros 3700 4.x

Status
Not open for further replies.

POSINSAM

Technical User
Mar 3, 2013
268
US
Hey guys, hope all is well in your world.
I am trying to add a suggested tip line to the customers credit card signature ticket . Is anyone familiar with this process? I can't seem to find it through the obvious routes.
Thanks in advance!
 
This has to be done through a SIM print_trailer event.

Just so you know, it will work well until you have a table that pays with multiple credit cards, so about 2 hours into service the first day. Thanks to PCI hyper-vigilance there's no longer any access to CC Auth info through SIM. So you can't take the amount being authed and calculate the gratuity on that. What you end up with is two or more CC slips that all have the calculated gratuity for the entire check. We tried it for a while and had quite a few guests complain that they were mislead, so now it just prints on the check itself, not the CC slips.
 
The only way around that is two either split the check or use check filtering. Given that most of our places already train to use filter seat, we setup the sim to use filtered details. Works out well.
 
Yeah, I wish we could use seat filtering, but seat handling doesn't work with the way most of our kitchens work, and chefs generally fear procedural change.

I don't know how you manage to train the staff to use seat filtering, but kudos for that. I tried it a few times, even with a manager auth, and they banged things up so badly that I just took the buttons off the screens and now make them split checks.

Now if I could just get rid of the reopen closed checks function...
 
Hahah.. we didn't really train them on seat filtering, instead they have a column of buttons, "Filter Seat 1" - "Filter Seat 12" and a Stop Filtering button. If they hit filter 1, filter 3, they get checks 1 and 3. Hit done, it stops. Etc etc.. can't get much more idiot proof than that ;)

And yes.. the reopening of checks is such a nightmare to deal with in reporting...
 
Yeah, but every time I make a process idiot proof, somebody builds a better idiot.
 
Hahahaha... true enough. I'm stuck in an airport babysitting an install. Someone just managed to open a check without an order type. STILL can't figure it out HOW they did it... driving me crazy.
 
Hey guys. Would either one of you happen to have A script that works for this function, you wouldn't mind sharing??
 
The danger of a script like this is that there are so many variables that while the script will work 99% of the time.. its that 1% that causes a lot of problems. I've had a site where the script was rock solid for a month straight - then a customer with a weird combination of discounts, service chargers, and hocus pocus got a suggested gratuity on a check that was $300+ of $0.00. You'd think the customer would go, "Oh thats wrong" and add the correct tip. Nope.. he stiffed the poor server.

I would always recommend against this to be honest, and spend a lot of time trying to argue customers out of it.
 
Fair enough. You certainly know what you were talking about when it comes to micros. I think I'll go ahead and take that advice. Thank you very much!
 
If you do decide to take a stab at it, you can try this.. maybe I'm missing something obvious or doing something silly and y'all can figure it out:

Code:
        VAR GRAT_PERCENTS[ 3 ] : $12

	GRAT_PERCENTS[ 1 ] = 15
	GRAT_PERCENTS[ 2 ] = 18
	GRAT_PERCENTS[ 3 ] = 20
	
VAR MESSAGE_LINES[ 4 ] : A40
	
	MESSAGE_LINES[ 1 ] = "For your convenience we are"
	MESSAGE_LINES[ 2 ] = "providing the following"
	MESSAGE_LINES[ 3 ] = "gratuity calculates:"
	MESSAGE_LINES[ 4 ] = ""

	
//The following settings controls whether the system will attempt to calculate the tax into the subtotal; ie: tip on the total AFTER tax has been applied
//1 = TRUE; 0 = FALSE
VAR AFTER_TAX : N1 = 1	
	
EVENT PRINT_TRAILER : GRATS
	VAR SUBTOTAL : $12
	CALL CALCULATE_SUBTOTAL( SUBTOTAL )

	VAR LINE_INDEX   : N2 = 1
	VAR CURRENT_LINE : A80
	VAR I : N2
	
	//print our message first
	FOR I = 1 TO ARRAYSIZE( MESSAGE_LINES )
		CALL PAD_LINE( CURRENT_LINE, MESSAGE_LINES[ I ] )
		@TRAILER[ LINE_INDEX ] = CURRENT_LINE
		LINE_INDEX = LINE_INDEX + 1
	ENDFOR
	
	//now print each of our gratuity calculations
	FOR I = 1 TO ARRAYSIZE( GRAT_PERCENTS )
		FORMAT CURRENT_LINE AS GRAT_PERCENTS[ I ], "% is ", (SUBTOTAL * (GRAT_PERCENTS[ I ] / 100))
		CALL PAD_LINE( CURRENT_LINE, CURRENT_LINE )
		@TRAILER[ LINE_INDEX ] = CURRENT_LINE
		LINE_INDEX = LINE_INDEX + 1
	ENDFOR
ENDEVENT

SUB CALCULATE_SUBTOTAL( REF SUBTOTAL )
	VAR RUNNINGTOTAL : $12
	VAR ITEMTAX      : $12
	VAR I : N9
	USEFILTEREDDETAIL
	FOR I = 1 TO @NUMDTLT
		IF @DTL_TYPE[ I ] = "M"
			RUNNINGTOTAL = RUNNINGTOTAL + @DTL_TTL[ I ]
			IF AFTER_TAX = 1
				CALL CALCULATE_TAX( I, ITEMTAX )
				RUNNINGTOTAL = RUNNINGTOTAL + ITEMTAX
			ENDIF
		ENDIF
	ENDFOR
	
	SUBTOTAL = RUNNINGTOTAL
ENDSUB

SUB CALCULATE_TAX( VAR I : N9, REF TAX )
	VAR TAXRATE : $12
	VAR PI : N2
	
	FOR PI = 1 TO 8
		IF BIT(@DTL_TAXTYPE[ I ], PI) = 1
			TAXRATE = TAXRATE + @TAXRATE[ PI ]
		ENDIF
	ENDFOR

	TAX = @DTL_TTL[ I ] * (TAXRATE / 100)
ENDSUB

SUB PAD_LINE( REF OUT, VAR LINE : A40)

	VAR PADDING : A40 = "                                        " //some padding so we can center the suggested tips
	FORMAT OUT AS MID(PADDING,1,(32-LEN(LINE))/2.0), LINE 
	//if your device is not set to use 40 columns it will not print centered. change this in POS Configurator -> Devices -> Devices -> (The Printer in Question) -> Printer Definition
	
ENDSUB
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top