Home > API General, Rental/Reservation > SWS2 MakeReservation Method

SWS2 MakeReservation Method


Allows you to create a rental, create a quote/reservation or convert an existing quote/reservation to a rental. Improvements include: the gate timezone has been added to the contacts object, the PCD field requirements have been significantly reduced, flex fields are available, as are Market Code and Market Source, Inquiry Source will now accept all values including custom values and tax exempt information is also available. We have also improved the performance of the process over the SWS MakeReservation method.

See the New Rental/Reservation Workflow Chart for additional information on creating new rentals and reservations.

Parameters

Name Data Type Is Required
AcctID Long Required
Description The account’s ID number. This is returned when you use the CreateNewAccount method or can be retrieved with the SearchBy method.
CFlex1 String Optional
Description A custom field, set up by the organization, designed to hold additional account level information. This is displayed in the “Account Information” tab of the account in the Store application.
CFlex2 String Optional
Description A custom field, set up by the organization, designed to hold additional account level information. This is displayed in the “Account Information” tab of the account in the Store application.
CFlex3 String Optional
Description A custom field, set up by the organization, designed to hold additional account level information. This is displayed in the “Account Information” tab of the account in the Store application.
CFlex4 String Optional
Description A custom field, set up by the organization, designed to hold additional account level information. This is displayed in the “Account Information” tab of the account in the Store application.
CFlex5 String Optional
Description A custom field, set up by the organization, designed to hold additional account level information. This is displayed in the “Account Information” tab of the account in the Store application.
Channel Integer Optional
Description The method being used to create the rental.
Contacts: AddressID Long Required
Description The ID number of the primary contact’s address record. This is returned when using the AddNewAddress method.
Contacts: ContactID Long Required
Description The rental contact’s ID number. This is returned when using the CreateNewAccount or AddNewContact methods or you can search for it using the SearchBy method.
Contacts: GateCode String Optional
Description The gate code that will be assigned to the rental. This should match any currently existing rentals on the account.
Contacts: GateTimezone String Optional
Description Sets the time period that the tenant has access to the gates. See the gate settings for information.
Contacts: PhoneID Long Required
Description The ID of the contact’s phone number record.
Contacts: PrimaryFlag Boolean Optional
Description Indicates if the contact is the primary (“True”) or not (“False”).
InquirySource Integer Optional*
Description Indicates how the customer heard about the site. This is a custom field, please contact the organization for a list of options.
*Some organizations may require this field. Check the GetSiteRules – “Item Finder – Require Inquiry Source” rule for information.
MarketCode Integer Optional
Description Indicates how the customer heard about the site.
*Not available at all sites.
MarketSource String Optional
Description Indicates how the customer heard about the site.
*Not available at all sites.
Notes String Optional
Description Any notes that need to be attached to the account. Max string length of 4000.
OverrideReservationAmount Decimal Optional
Description If you would like to charge a different amount than the default for the reservation, enter the amount here.
Pcds: Active Boolean Optional
Description Indicates the promotion being added is active.
Pcds: DiscountAmount Decimal Optional
Description Indicates the amount of the discount being added to the quote/reservation/rental.
Pcds: PCDID Long Optional
Description Indicates the ID of the promotion/discount being added to the quote/reservation/rental.
Pcds: ReasonCode Integer Optional
Description The numeric value as to why you are applying the discount.
Pcds: ReasonDescription String Optional
Description The textual value as to why you are applying the discount.
Price Decimal Optional
Description If you are renting the item at a rate other than the current rent rate or street rate, enter that amount here. This should not include any discounts as the discount will be calculated separately.
QuoteExpiration DateTime Optional
Description If this is a quote/reservation, this will set the expiration date.
QuoteID Long Optional
Description Allows you to convert the quote/reservation ID to a rental.
QuoteStartDate Long Optional
Description No input required. The system will set the start date as today.
QuoteType String Required
Description Indicates what type of quote/reservation/rental this will be.
Available values:

  • QuoteOnly (Use this for a rental.)
  • SoftReservation
  • HardReservation
RentNow Boolean Required
Description Indicates if this will be a rental (“True”) or a quote/reservation (“False”).
SiteID Long Required
Description The site’s ID number. This can be found using the GetSiteList method.
TaxExemptExp DateTime Optional
Description The date that the customer tax ID for exempt status expires.
TaxExemptID Integer Optional
Description The customer’s tax ID if they are tax exempt.
UnitID Long Required
Description The unit’s ID number. This is returned when you use any of the GetSiteUnitData
calls and is maintained through rentals.
Version Integer Required
Description The unit’s version number which serves to prevent duplicate use of the unit.

Returned Parameters

Name Data Type
QuoteID Long
Description The quote’s ID number.
RentalID Long
Description The rental item’s ID number.

Example

We’ll assume you’ve got a web reference, let’s name it Store, in your Visual Studio project. At this point we need to reference our objects. We’ll need the standard service object, a MakeReservation_Request request object and at least one MakeReservationContacts object. We can define and create those like this:

// Create a request and response objects
StoreServiceClient client = new StoreServiceClient();
MakeReservation_Request request = new MakeReservation_Request();
MakeReservationContacts contact = new MakeReservationContacts();

As with every method we need to pass in credentials. We also set up the parameters for our request.

client.ChannelFactory.Credentials.UserName.UserName = "user";
client.ChannelFactory.Credentials.UserName.Password = "pass";
client.ChannelFactory.Credentials.SupportInteractive = true;

contact.ContactID = 123456;
contact.AddressID = 123456;
contact.PhoneID = 123456;
contact.GateCode = "1234";
contact.GateTimezone = "0";
contact.PrimaryFlag = true;

request.SiteID = 123456;
request.AcctID = 123456;
request.Channel = 999;
request.Contacts = new MakeReservationContacts[] { contact };
request.InquirySource = 2;
request.Price = 50m;
request.QuoteType = 1;
request.RentNow = true;
request.UnitID = 123456;
request.Version = 34;

Finally we can call the method and pass across the login object and the request object to create the reservation. It’s a good idea to do this in a Try Catch block.

try
{
    // Call the method that will load the response object
    MakeReservation_Response resp;
    resp = client.MakeReservation(request);
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

Note that if something goes wrong the service will respond with an exception. You’ll want to take a look at that message returned in that exception so it can be debugged.

For a full list of methods see SWS2 Methods.

  1. swsBecky
    April 24, 2017 at 3:19 pm

    Updated April 20,2015: Fixed an issue on new reservations without a quote ID failing for certain units.

  2. swsBecky
    April 24, 2017 at 3:30 pm

    Update April 22, 2015: Fixed issues with rental contacts being properly created.

  3. swsBecky
    April 24, 2017 at 3:33 pm

    Updated June 10, 2015: This method was failing when a null value was being passed in to the gate_ timezone. We have corrected this issues.

  4. swsBecky
    April 24, 2017 at 3:35 pm

    Updated June 8, 2016: We have reworked the code behind the reservation process used by the application and both our API’s. We have cleaned up most of the bugs that occurred when making reservations with the application and with the API. None of the values being passed in or being returned changed, however, the process is significantly faster and more accurate. Specifically, the process should in no way allow more than one rental/hard reservation on a unit and should not cause things to get in a state where they are locked up or unavailable. Also promotions should be accurately applied across the board.

    This removed the move-in date from reservations. The only applicable dates are the created date of the reservation and the expiration date. The expiration date will cancel the reservation and retain the deposit (if applicable). Check with your organization for the date they wish to use for the expiration date.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: