Micros 4700 PMS Interface

From RPOWERWiki

Jump to: navigation, search

RPOWER's implementation of the Micros 4700 PMS interface specification.

Note that the ^ symbol denotes a space character.

Contents

Validate Charge

Build inquire room message block

(MessageHeader)
   SOH {1}
   ^1RPOWER^^^^^^^^^^ (18 chars, multiplex ID - we don't multiplex)
   STX {2}
(RoomInquiry)
   01*                (* is a SPACE on first transmit, 'R' on retransmit)
   ROOM#^^^^^^^^^^^   (room number or partial guest name, 16) (Encore: "R###")
   0001               (employee number, 4, always #1)
(MessageTailer)
   ETX {3}
   HHHH               (4-digit hex checksum from byte AFTER the SOH
                       up to AND INCLUDING the ETX)
   EOT {4}

Send inquire room message block

  • Send the block with no delay before sending as follows:
    1. Send the block (SOH through EOT).
    2. Wait about 3 seconds for an ACK {6}.
    3. If do not receive ACK, then put an R in the block (see above) and try again twice, up to three tries total.
  • If get ACK, receive reply block. Only care about STX, ETX, and that there are going to be five bytes after the ETX. Validate checksum. If all is OK, send an ACK {6} character.

Parse inquire room message reply

SOH {1}
^1RPOWER^^^^^^^^^^ (same multiplex ID that we sent out)
STX {2}
01                 (there is no retransmit flag on responses!)
GUEST^NAME^1^^^^   (first guest, 16)
/ CAN'T^CHARGE^^   (error, message "CAN'T CHARGE")
ROOM#/GST^NAME^2   (possible response to a name inquiry)
...
GUEST^NAME^N^^^^   (last guest, 16)
ETX {3}
HHHH               (4-digit hex checksum from byte AFTER the SOH
                      up to AND INCLUDING the ETX)
EOT {4}
  • GUEST NAME 1 is the first of one or more 16-character response strings ending with the ETX character.
  • If any strings begin with a /, remove that character. For example, /FRED JONES becomes FRED JONES.
  • If any of the resulting strings begins with a space character, then treat the following text as an error message, terminate processing any more names, and display the error to the user.
  • If any of the strings starts with the text INVALID or VACANT, treat the entire string as an error message, terminate processing any more names, and display the error to the user.
  • If any of the strings begins with a digit (0 though 9) and also contains a / character, mark that entry so that if, for example, 123/FRED JONES is selected by the operator (either manually or automatically if this is the only name), turn around and immediately generate a new inquiry for 123 by itself and reprocess the results.

Select Charge

If #guests > 1, user selects a guest.

Apply Charge

Build charge message block

(MessageHeader)
   SOH {1}
   ^1RPOWER^^^^^^^^^^ (18 chars, multiplex ID - we don't multiplex)
   STX {2}
(ChargeGuest)
   02*                (* is a SPACE on first transmit, 'R' on retransmit)
   ROOM#^^^^^^^^^^^   (room number, 16) (Encore: "R###/nn"; nn=guest name)
   ^^^^               (expiration date, 4)
   GUESTNAME^^^^^^^   (guest name, 16)
   n                  (guest number [1 to 8], 1)
   nnnn               (cashier ID, 4)
   nnnn               (server ID, 4)
   nnn                (profit center, 3)
   nnn                (meal time, 3)
   nnnn               (check number, 4)
   ^^^1               (transaction number, 4)
   nnnn               (#guests on check, 4)
   nnn                ("tender key", 3) (Encore: 12)
   nnnnnnn.nn         (total amount, 10,2)
   nnnnnnn.nn         (sales category 1 total, 10,2)
   nnnnnnn.nn         (sales category 2 total, 10,2)
   nnnnnnn.nn         (sales category 3 total, 10,2)
   nnnnnnn.nn         (sales category 4 total, 10,2)
   nnnnnnn.nn         (discount total, 10,2)
   nnnnnnn.nn         (manual entry service charge, 10,2)
   nnnnnnn.nn         (calculated service charge, 10,2)
   nnnnnnn.nn         (tax #1, 10,2)
   nnnnnnn.nn         (tax #2, 10,2)
   ^^^^^^0.00         (tax #3, 10,2)
   ^^^^^^0.00         (tax #4, 10,2)
   ^^^^^^0.00         (previous payment total, 10,2)
(MessageTailer)
   ETX {3}
   HHHH               (4-digit hex checksum from byte AFTER the SOH
                       up to AND INCLUDING the ETX)
   EOT {4}

Send charge message block

  • Send the block with 2-second delay before sending as follows:
    1. Send the block (SOH through EOT).
    2. Wait about 3 seconds for an ACK {6}.
    3. If do not receive ACK, then put an R in the block (see above) and try again twice, up to three tries total.
  • If get ACK, receive reply block. Only care about STX, ETX, and that there are going to be five bytes after the ETX. Validate checksum. If all is OK, send an ACK {6} character.

Parse charge message reply

     SOH {1}
     ^1RPOWER^^^^^^^^^^ (same multiplex ID that we sent out)
     STX {2}
     02                 (there is no retransmit flag on responses!)
     OK!!!!!!^^^^^^^^   (approved, could be any text, 16)
*OR* /DECLINED^^^^^^^   (declined, 16)
*OR* ?NO WAY!^^^^^^^^   (declined, 16)
     ETX {3}
     HHHH               (4-digit hex checksum from byte AFTER the SOH
                         up to AND INCLUDING the ETX)
     EOT {4}
  • The first thing after the message type (there is no retransmit flag) is a response string of 16 characters. If the first character is a / or ?, the message is treated as a denial and the 15 characters after the first are considered the explanation text for the denial and will be shown to the user.

Special Notes for Encore

  • In RPOWER device setup, set the ID# on the top right to 2, not 1.
  • The room number passed back is the inquired room followed by a frontslash (/) followed by the first two letters of the guest name passed in (skipping a frontslash preceding the name, if any).
  • Encore requires that you to type an R in front of any room number and an A in front of any city ledger account. If A, you must follow the entry with a frontslash (/) and the first two letters of the account name.
  • Encore allows inquiring a guest by following the room number with a frontslash (/) and the first two letters of the guest's last name. What happens when there's more than one guest with the same first two letters? The first one is chosen. Encore says that this is not a problem in practice.
Views
Personal tools