3 Create Block Posting Master

Business context

Posting Master reservations linked to a block are used for two purposes:

  1. Billing — Where various sales charges must be routed or transferred from individual block room reservation accounts to a 'Block master account' for settlement.
  2. Rooming List — Where the selected Posting Master reservation is used as a template for reservations created through a rooming list. Reservations created inherit their attributes from the selected post master reservation. You can create multiple PM templates reservations according to your needs.

Within the OPERA UI, the Posting Master reservation is created automatically when either the block status is changed, when the deposit / cancellation screen is accessed, or when the rooming list operation is accessed. The Posting Master creation does not happen automatically when these changes are made through the REST APIs; therefore, it is important to check if a Posting Master already exists before creating any new ones using the REST APIs by posting deposits or any other operations that involve creating Posting Masters.

Workflow Diagram

The below workflow diagram explains typical use cases for adding a menu to an event.

Figure 3-1 Use Cases for adding a menu to an event


This image shows a functional diagram explaining the typical use cases for adding a menu to an event.

Customer — The meeting planner is ready to pay the deposit for the upcoming event.

Partner — The partner communicates to the property the amount the customer wants to pay as a deposit for the event, so the billing information must be ready.

OPERA Cloud — The application creates the Posting Master with the correct charges to apply as a deposit against it.

Prerequisites

Table 3-1 Prerequisites

Tool Description Links

Postman

Postman is an API Platform that allows you to design, create and test API's.

Use Postman to send API requests or to use the Postman collections provided.

Using the Oracle Hospitality APIs

Tool

Table 3-2 Current Versions Required

OPERA Cloud Platform Module Description Minimum Version

OPERA Cloud Services

The customer must have a subscription to OPERA Cloud Foundation

 

Oracle Hospitality Integration Platform (OHIP)

For custopmers OHIP is included in the subscription to OPERA Cloud Foundation.

Partners need a subscription to Oracle Hospitality Integration Cloud Service

 

Configuration of OPERA Controls

To activate the Create Block functionality, you must ensure the following OPERA Controls are active in the target property. You can use the following API operations to validate the settings:

Ensure that application function BLOCKS - BUSINESS BLOCK is active

RQ: ent/config/v1/settings?hotelId={{HotelId}}&parameterNameWildCard=BUSINESS BLOCKblk/config/v1/blockStatusCodes

Workflow

Step by step solution including:

Figure 3-2 The sequence of API calls (in any direction) 


This image shows a diagram of the sequence of API calls (in any direction).

Description of Steps

A typical process to create a block posting master is as follows:

  1. Check if the block in question already has one or several posting master reservations using getBlockPMReservations.
  2. If existing Posting Master Reservations are returned, use one of these as applicable.
  3. If no Posting Master Reservations exist, you can create one using the postBlockPostingMaster operation.
    1. All reservation details for the PM are defaulted from the Block.
  4. Check for the Posting Master using getBlockPMReservations (optional).

Sample calls: Sample API calls for steps described in the diagram.

Sample for getBlockPMReservations

Get List of existing Posting Masters for the Block

GET{{HostName}}/blk/v1/hotels/{{HotelId}}/blocks/{{BlockId}}/postingMaster/reservations

No Body

200 Response: OK

Body:

{
    "reservations": {
        "reservationInfo": [
            {
                "reservationIdList": [
                    {
                        "id": "1264363",
                        "type": "Reservation"
                    },
                    {
                        "id": "2042429",
                        "type": "Confirmation"
                    }
                ],
                "roomStay": {
                    "arrivalDate": "2024-07-07",
                    "departureDate": "2024-07-08",
                    "originalTimeSpan": {
                        "startDate": "2024-07-07",
                        "endDate": "2024-07-08"
                    },
                    "expectedTimes": {
                        "reservationExpectedDepartureTime": "2024-07-08"
                    },
                    "adultCount": 0,
                    "childCount": 0,
                    "roomClass": "ALL",
                    "roomType": "PM",
                    "numberOfRooms": 1,
                    "roomOwnershipType": "Regular",
                    "rateAmount": {
                        "amount": 0,
                        "currencyCode": "USD"
                    },
                    "rateSuppressed": false,
                    "reservationBlock": {
                        "blockIdList": [
                            {
                                "id": "918694",
                                "type": "Block"
                            },
                            {
                                "id": "240707CREA",
                                "type": "BlockCode"
                            }
                        ]
                    },
                    "fixedRate": false,
                    "guarantee": {
                        "guaranteeCode": "GNON",
                        "shortDescription": "Group Non Deduct"
                    },
                    "marketCode": "CORI",
                    "sourceCode": "GSALES",
                    "sourceCodeDescription": "Group Sales",
                    "balance": {
                        "amount": 0,
                        "currencyCode": "USD"
                    },
                    "compBalance": {
                        "amount": 0,
                        "currencyCode": "USD"
                    },
                    "roomTypeCharged": "PM",
                    "roomNumberLocked": false,
                    "pseudoRoom": true
                },
                "departureReservationInfo": {},
                "reservationGuest": {
                    "surname": "Create Posting Master",
                    "language": "E",
                    "vip": {},
                    "address": {
                        "streetAddress": "",
                        "country": {
                            "code": "US"
                        }
                    },
                    "anonymization": {},
                    "accompanyGuests": [],
                    "guestRestricted": false,
                    "nameType": "Group",
                    "id": "1696531",
                    "type": "Profile"
                },
                "sharedGuests": [],
                "attachedProfiles": [
                    {
                        "name": "Create Posting Master",
                        "profileIdList": [
                            {
                                "id": "1696531",
                                "type": "Profile"
                            }
                        ],
                        "reservationProfileType": "Group"
                    }
                ],
                "reservationPaymentMethod": {},
                "reservationFolioWindows": [],
                "commissionsInfo": {},
                "reservationIndicators": [
                    {
                        "indicatorName": "NOPOST"
                    },
                    {
                        "indicatorName": "PACKAGEITEM",
                        "count": 2
                    },
                    {
                        "indicatorName": "HISTORYFUTURE",
                        "count": 1
                    },
                    {
                        "indicatorName": "COMMUNICATION",
                        "count": 1
                    },
                    {
                        "indicatorName": "ASSOCIATEDPROFILES",
                        "count": 2
                    },
                    {
                        "indicatorName": "DAILYDETAILS",
                        "count": 0
                    }
                ],
                "sourceOfSale": {
                    "sourceType": "PMS",
                    "sourceCode": "BHOTEL"
                },
                "waitlist": {},
                "advanceCheckIn": {
                    "advanceCheckedIn": false
                },
                "hotelId": "BHOTEL",
                "hotelName": "Baltimore Inner & Harbour East Hotel",
                "roomStayReservation": true,
                "createDateTime": "2024-02-21 10:49:30.0",
                "lastModifyDateTime": "2024-02-21 10:49:30.0",
                "reservationStatus": "Requested",
                "computedReservationStatus": "Requested",
                "walkInIndicator": false,
                "commissionPayoutTo": "None",
                "preRegistered": false,
                "openFolio": false,
                "allowMobileCheckout": false,
                "optedForCommunication": false
            }
        ],
        "totalPages": 1,
        "offset": 20,
        "limit": 20,
        "hasMore": false,
        "totalResults": 1
    },
    "links": [
        {
            "href": "https://XYZ/rsv/v1/hotels/BHOTEL/reservations",
            "rel": "other",
            "templated": false,
            "method": "POST",
            "operationId": "postReservation"
        },
        {
            "href": "https://XYZ/rsv/v1/hotels/BHOTEL/reservations/1264363",
            "rel": "self",
            "templated": false,
            "method": "GET",
            "operationId": "getReservation"
        },
        {
            "href": "https://XYZ/rsv/v1/hotels/BHOTEL/reservations/1264363",
            "rel": "self",
            "templated": false,
            "method": "PUT",
            "operationId": "putReservation"
        }
    ]
}

Sample for postBlockPostingMaster

Post Block Posting Master

POST{{HostName}}/blk/v1/hotels/{{HotelId}}/blocks/{{BlockId}}/status

{
    "criteria": {
        "hotelId": "{{HotelId}}",
        "blockId": {
            "type": "Block",
            "idContext": "OPERA",
            "id": "{{BlockId}}"
        },
        "responseInstruction": {
            "fetchFullReservation": false
        }
    }
}

201 Response: Created

Posting Master ID is returned in Location parameter in RS Headers.

References

For more information, review the Best Practices in the OHIP user guide to learn more about functional and technical anti-patterns.

For more information, refer to the Creating Additional Posting Master Reservation in the OPERA Cloud Services user guide.