Official Documentation Joomla Vik Extensions by e4j

Vik Rent Car Official Documentation

Vik Rent Car - Documentation

Version: 1.12

Rental
Tax Rates

Vik Rent Car - Tax

From this task you can manage the tax rates that will be applied to the order total.
By clicking on New you can create a new Tax Rate.
A name and a percentage value are the only things that you have to fill in.

Types of Price

Vik Rent Car - Type of Prices

From this task you can manage the Prices for the vehicles.
Each Price has a name, an optional attribute and an optional tax rate.
An Attribute is a characteristic of the Price that can be used when inserting the fares and it can change daily.

Example:

Price Name: Standard Insurance
Price Attribute: Miles Included
Tax Rate: (select the tax rate that should affect this price)
Then click on Save for creating the Price. It's always possible to edit the Price by clicking on the checkbox next to it and then on the Edit button from the toolbar.

In the example above, the page Fares Table will ask to specify a rental cost for each car for the type of price called "Standard Insurance", and to enter a value for each day of rent for the attribute "Miles Included", like 100 per day. If you don't need to set additional information for the attributes, then you can just leave it empty and enter only the name for your type of price.

If you would like to set different rental costs for each car, like to offer the possibility of choosing between various types of insurance, or different cancellation policies, then you should create one Type of Price for each price-choice you would like to offer. A common setup of the Types of Price is to offer two types of insurance (price), one for a "basic insurance" and another for a more "flexible insurance" (Damage/Collision Waiver etc..).

Pickup/Drop Off Locations

Vik Rent Car - Pickup/Drop Off Locations

From this task you can manage all the locations for Pickup and Drop Off where your offices are located.

To create a new location click on the new button from the toolbar and fill in the details of the location.

You will be asked for an optional latitude and longitude, these values will be used by the location map in the front site to place a marker on the google map. You can also set an Opening Time for this location that can be different from the other locations or from the global Store Opening Time.

Additionally, it is also possible to define a Suggested Time, as well as to override the Opening Time on some days of the week. If your location is open 24 hours, for example, but you would like the drop down menu to pre-select 9AM, then you should set 9AM as "suggested time". With the Override Opening Time function you can set a different opening time for a specific days of the week, for example, on Sunday rather than being opened 24 hours, you could define the actual opening time for pick up and drop off.

Each location can also have some Closing Days. The closing days can be single dates of the year, or some specific week days, like "every Sunday".

Notice: You will need to sign up to Google Maps and recieve your own API key to insert in the back-end for this function to work properly. This will solve any possible "Oops! Something went wrong" problems.

Vik Rent Car - Pickup/Drop Off Locations Example  

Restrictions

The Booking Restrictions are rules that can be set up to define some limits for the orders on some dates of the year. For example, to force a minimum number of days of rent on some dates of the year, you can create a Restriction. The same thing works if only for some dates you want to set a maximum number of days of rental.

The Restrictions were built by following the OpenTravel standards, and so some terms may sound similar to the hotel industry, because that's actually where they come from. For example, terms like "CTA" and "CTD" stand respectively for "Closed to Arrival" and "Closed to Departure". You should enable these parameters in your Restrictions if you would like to disable pick up (arrival) and/or drop off (departure) on some week days in your restriction dates.

Thanks to the Restrictions you could also force the pick up on a specific combination of week days, or define a minimum length for the rental with a multiplier, like 7 days, 14, 21 etc..

Please notice that only one restriction can be applied on some specific dates, and a Restriction that sets just a 1 night as minimum rental period is NOT considered as a valid restriction according to the OpenTravel standards. That's because 1 day is already supposed to be the minimum duration of the rental.

Cars
Categories

Vik Rent Car - Cars Categories

From this task you can manage the categories to which cars belong. Categories are useful when the users are searching for cars because they can filter the results by selecting the category from the search form.
You will only be asked for the category name and for an optional description that will be shown in the view type Cars List filtered by a category.

Options

Vik Rent Car - Car Options

From this task you can manage the options that the users may want to add to their rental orders. Options can be anything, a GPS, a baby seat, an insurance etc.
Options have a Name, an optional description, a cost, an optional tax rate, an optional image and three parameters:
daily cost: the price will be multiplied for the days of rental;
selectable quantity: if this parameter is on the user will be asked for the units desired, otherwise a checkbox will be displayed;
maximum cost: in case the option price is multiplied by the days of rental or the units, it is possible to set a maximum cost that the option can reach.
You can also force the option to be always selected, this could be useful in case you need to make the user pay for some service and list this service in the order summary as a separated cost from the rental fare.

Characteristics

Vik Rent Car - Car Characteristics

From this task you can manage the characteristics of the vehicles. Characteristics have a name, an optional icon and a text to be displayed in the front site.

If the configuration setting for using the Characteristics as search filter is enabled, users will be able to tick or untick certain Characteristics to filter the search results. This is supported only in page displayed after making a search.

The Characteristics must be assigned to each vehicle from their Edit page or they won't be visible on the Views "Cars List", "Car Details", "Search Results", "Result Pricing".

Vehicles Management

Vik Rent Car - Cars List

At this point, you are supposed to have created the locations, the prices, the options and the categories.
By clicking on New, you can create a car. You will be asked to provide some information:
the name, the main image, optionally more images to create an image gallery, the category to which the car belongs, optionally a description test.
The locations where pickup is available and the locations where the drop off is available: These values can be multiple, click on the location desired when holding the ctrl button. It is also possible to assign some of the characteristics to the vehicle by clicking on the checkbox next to them. The same thing works for the options, this way you can only assign some of the characteristics and options created before, not all of them.
Another important feature of the vehicle is the units field. This value will be considered when the system is checking the availability of the cars depending on the orders received.
After clicking on Save, you will be redirected to the fares-creation page.
In this task you can create the fares for each existing type of price. In order to insert the fares, you have to put the number of days/hours and the daily cost for each type of price.
Example:
You have two types of price: standard insurance and full insurance. By putting from 1 to 10 days, €50 per day for the standard insurance and €60 per day for the full insurance, the system will automatically multiply the prices by the days obtaining €500 for 10 days of rental- standard insurance, €600 for 10 days of rental-full insurance.

Refer to the Fares section to find out more about the pricing system.

Pricing and rental fares
Fares Table

This is the pricing table of each vehicle. Rates are expressed by duration of rental in Days, Hours or Extra Hours.

Here you are supposed to specify your base rental costs for each car, and to define a rental cost for each Type of Price previously configured. You will be able to modify the base rental costs on some seasons, holidays, weekends and dates of the year by creating some Special Prices.

Please notice that cars with no rental costs defined in the page Fares Table will not be available for booking. Also, even if you are working with hourly rentals only, the cost for 1 day of rent should always be defined, unless you work with daily rentals always greater than 1 day. In fact, if no rates are defined for the duration of the rental requested, then the cars will not be available in the search results.

Daily Fares

The system will always require to have the cost for 1 day of rental if you are willing to offer hourly rentals as well. For adding your daily costs, use the form displayed at the top of the page and make sure the vehicle selected in the drop down is the right one.
You will be able to specify a cost for each Type of Price and it is possible to add a rate for a specific type of price only for a certain duration. For example, it is possible to add a cost for the "Full Insurance" rate plan only from 3 days of rental or more by not setting any cost for that Type of Price for 1 or 2 days.
Rates can be added by using the form like this:

- From 1 - to 3 Days: EUR 50 per day.

This will populate the rates up to 3 days of rental and 3 days will cost EUR 150. With the current configuration, 4 days of rental would not be allowed for this vehicle because there are no rates defined.
Rates can be modified by using the input fields displayed in the grid below the creation form and then by clicking on the Update Fares button on the top-right of the grid. Rates can be removed day by day by selecting some with the checkboxes and by clicking on the toolbar button Remove Fares.

Hourly Fares

The hourly rates are applied only to rentals shorter than 24 hours. The system will calculate the exact duration of the rental from the pick up date and time and the drop off date and time.
If there is a cost for 1 day of rental and a cost for the calculated hours, the system will apply the cost for that amount of hours defined in the Hourly Fares tab.

If there isn't a cost for the number of hours requested, the system will apply the tariff for 1 day of rental. In case the cost for 1 day is missing, the system will raise an error and the vehicle will not be bookable.

Extra Hours Charges

The Extra Hours Charges are only applied to rentals greater than 24 hours. For example, a rental lasting 2 Days and 4 Hours can be charged for the 4 extra hours.

The system always calculates the exact duration in Days and Hours for each rental. Given the example above of 2 Days and 4 Hours, the system will check if a charge for 4 Extra Hours is defined in the Fares Table. If there is a cost for 4 hours, the system will apply the cost for 2 days of rental + the charge for 4 extra hours. If a cost for 4 extra hours hasn't been defined, the system will apply the cost for 3 days of rental in that example.

There is a configuration setting to ponder the calculation of the days and hours of rental, it's the "Hours of Extended Gratuity Period". In the example of 2 Days and 4 Hours of rental, if that configuration setting was set to 3 Hours, the system will check if a charge for 1 Extra Hour is defined. If so, the system will apply the cost for 2 Days of rental plus the charge for 1 Extra Hour because 3 hours are free. Again, if that configuration setting was set to 4 hours, a rental for 2 Days and 4 Hours would be charged for just 2 Days, no matter if there are Extra Hours Charges defined.

Special Prices

The Special Prices are rules to lower or increase the rental costs for some cars on some dates or weekdays of the year.

Vik Rent Car - Special prices

By clicking on New, the task will ask you to provide a Starting and an Ending Date for creating a Season.
These values are not required, you can just select one or more days of the week to create a Special Price that will be applied every week of the year. Use a Season and select one or more days of the week to combine the filters.
In case you are creating a Season, you can decide to apply the Special Price only in case the Pickup Date is after the begin of the Season. Some companies use this policy.
It is also possible to keep the rate of the first day of rental so for example, in a rental of 7 days where only the first 4 days are affected by your Special Price "High Season", you can decide to consider the other 3 days as "High Season". This policy could be used by your company.
The special Price Name is a value that will never be shown in the front site, only in the administrator section for management purposes.
The type can be Charge or Discount and a value, percentage or absolute will be applied to the rental daily fare.
The discount or charge value can be overwritten depending on the days of rental, for example, you can decrease the value for 10, 11, 12, 13, 14 days of rental. The default value will be applied in case there are no overrides for the selected days of rental.
It's required to select one or more Vehicles in order to apply the Special Price. The location filter is not required and can be left as Any.
When creating Special Prices with percentage values, it is possible to obtain costs with decimals. Use the function "Round to Integer" to never have prices with decimals.

Each Special Price can be applied every year, or only on the dates for the year you selected if you enable the parameter "Tied to the Year". However, the list of the current Special Prices in the back-end may still display the current year if the dates are not in the past. You can use the Rates Calculator tool in the page Fares Overview to quickly check your current rental costs. This is to avoid simulating a search via front-end to see the final rental cost.

To see some complex examples of how the calculation of the Special Prices take place, please visit the Knowledge Base section of Vik Rent Car, where you will find various examples and a longer explanation of the algorithm used, which follows the OpenTravel standards.

Pickup and Drop off fees

Vik Rent Car - Fee

From this task you can create charges to be added to the daily rental fare depending on the pickup and drop off locations chosen by the user.

You just have to select the pickup and the drop off location, insert the cost to be added to the rental fare, decide whether the cost has to be multiplied by the days of rental and optionally assign this cost to a tax rate.
Flag the Option "Apply if the locations are Inverted" and, in case the Drop Off Location is chosen as the Pickup and the Pickup Location of this fee is chosen as the Drop Off, the fee will be applied as well.
The value can be overwritten depending on the days of rental, for example you can lower the fee for 10, 11, 12, 13, 14 days of rental.

Out of Hours Fees

Some Car Rental Companies apply charges depending on the time of Pickup and/or Drop Off. This function will let you do exactly this thing. Give the Fee a name and define the Time Interval to which you would like to apply a charge. For non-consecutive times just create multiple fees. For example, say that the Station/Location Milan Airport applies a charge from 1AM to 5AM: you will be able to define a charge in case the customer picks up the car at that time and/or if the customer returns the car at that time. It is also possible in the last example, to define a maximum charge to be applied in case the fee is applied for both pick up and drop off.
These Fees can be different depending on the Car and, of course, depending on the Location.

Vik Rent Car - Fee details

Out of Hours Fees - Weekdays

It is also possible to specify a week-day filter for the configuration of the Out of Hours Fees. This will let you create different opening times for each day of the week and the system will apply the corresponding fee depending on the pick up or drop off date.
Some companies apply different charges on the weekend for example, if the vehicles are returned at a later or earlier time than the usual opening time.

Coupons

Vik Rent Car - coupons

The coupon system allows you to create discounts that will be applied to the order total.
A coupon has:
A code that can be any letter or number including special characters.
The type can be permanent or gift, in the first case the discount will be always applied when this coupon is used. If the type is gift, the coupon can be used only once, after that it will be removed.
The discount can be a fixed value expressed in your currency or a percentage value.
It's also possible to apply some filters to the coupons:
The coupon can be used only for some vehicles or for all the vehicles.
You can restrict the date of usage of the coupon.
You can set a minimum order total in order to apply the discount.

The users will be asked to enter the coupon code in the order summary page.

Orders
Current Orders

Vik Rent Car - Orders

From this task you can manage all the orders received and also the reservations created from the administrator. A list is showed and by clicking on the date of the order you can see all the details.
From this task is also possible to set an order to Confirmed if it is still Pending. In this case a confirmation email will be sent to the customer and the unit of the vehicle will be considered as booked for the dates of the order.

You can use various filters and sorting options to find a specific rental order, or a group of orders that require your attention.

Vik Rent Car - Order details

Removed Orders

Every rental order can have 3 different statuses: Stand-by, Confirmed and Cancelled. Whenever you remove a non-cancelled order, this will take the status Cancelled. If you remove an order with status Cancelled, this will be completely removed from the database, and it won't be visible anymore in the Orders List.

The availability for the cars on some specific dates is only reduced when the status of the order is Confirmed. This means that if you change the status of an order from Confirmed to Cancelled, by removing it, the availability for this car will be increased by 1 unit on the previously booked dates.

Orders with Stand-by status can keep the cars booked as "locked" for an amount of minutes defined in the Configuration page (through the setting "Waiting Minutes for the Payment"). However, once these minutes have expired, the car will be available again unless the status of these orders has changed to Confirmed in the meantime.
Removing a Stand-by order with an active "lock" on a specific car for some dates will not free up the availability. You should rather "unlock" the car from the bottom of the page Dashboard, where all the locked records will be displayed.
Please notice that a "locked" car will not be visible in the availability calendars. For this reason, we suggest to keep the setting "Waiting Minutes for the Payment" to a low amount of time, the time required to complete a payment. Usually 15/20 minutes.

Overview

Vik Rent Car - overview orders

From this task you can have an Overview of the availability of each vehicle for the selected month. The view can be filtered by the next 12 months. The number inside the red cells shows the units that are booked for that day.

Vik Rent Car - month orders

Global
Global Configuration

Vik Rent Car - configuration

The Configuration of VikRentCar is divided into 4 tabs

Shop and Rentals:

From this tab of the configuration there are a lot of important settings.

  • Enable Rental - With this option you can enable or disable the rental service, an offline message is available
  • Shop Opening Time - All the reservation forms will have this configuration
  • Hours of Extended Gratuity Period - This setting defines the hours that the component should consider before applying the rate for the next day. For example, Pickup on the 26th at 10am and Drop Off on the 28th at 11am will be considered as 3 days of rental if this setting is 0, if it was 1 or more hours, the fare would be for 2 days of rental.
  • Dropped Off car is available after - This defines for how many hours the vehicle should be still considered as not-available after the Drop Off. Sometimes vehicles might need a few hours of maintenance before being available for the next rental. The system considers the single unit of the rental order
  • Require Login - If this setting is on the user will be forced to register or login before saving the order.
  • Admin e-Mail - The eMail of the administrator that will receive the rental orders
  • Minutes of Waiting for the Payment - When the order is confirmed, the unit of the vehicle is locked, it's considered as Confirmed while the user is making the payment. After these minutes the unit will become available again unless the order is Confirmed with a Payment or from the Administrator
  • Load jQuery Library - The component needs the jQuery library, depending on your template, this setting can be OFF
  • Calendar Type - From VikRentCar 1.5, two types of calendar are available: the native Joomla Calendar, a basic calendar with no customization or the jQuery UI Calendar, light and easy to customize with many features.
  • Date Mode - Some countries adopt a different date format, choose the one good for yours.
  • Token Form Order Submit - This is a security measure that saves a crypted value in the session. Made for avoiding spam orders
Prices and Payments:
  • Transactions Currency Code - Payment Methods like Paypal can use this setting, insert the code for your currency
  • Payments Account - Put your Paypal Account to receive Payments here
  • Pay Entire Amount - Disable this setting and put a percentage value for the deposit. The total amount that the user will pay will be calculated using this value.
  • Prices Tax Included - If this setting is disabled and a tax rate exists and is assigned to the fare, taxes will be added to the total price.
  • Payment Transaction Name - Some method of payment like Paypal can use this setting as the transaction name
View:
  • Front Title - Usually a heading tag placed on top of the pages in the front end, this can be your company name. This value can also be empty.
  • Currency Name - Some task of the front end uses a name instead of the symbol to display the currency. This could be EUR or USD for example.
  • Currency Symbol - The symbol of your currency, you can also use html entities here.
  • Show Partly Reserved Days - In the Cars List task (not the search results) of the front side you can view the details of each car and then make a reservation of it. This setting defines wether the program should put as yellow the days when the vehicle has some reservations but not all the units are booked. The cell can't be red because some units of the vehicle are still available.
  • Number of Months to Show - Still in the same task as above, some calendars are shown, this setting defines how many after the actual month.
  • Page Texts - You can write an opening and closing text for the page where the user makes the reservation with the form.
Statistics and Orders:
  • Enable Removed Orders Saving - If this setting is enabled, every time an order gets removed, it will be available in the Removed Orders task of the administrator.
  • Enable Search Statistics - With this setting the system can save a report of each search made from the front site that will be available in the Search Statistics page of the Administrator. If the setting below Send Search Notifies to Admin is enabled, an email will be sent to the admin email address of VikRentCar with the information about the search performed.
  • Send order emails with JUtility - Some servers might require this setting as On. If it's Off, the system will not use the native Joomla class for sending emails but another one that has a better way of embeding images in the order emails but it's not compatible with all the server settings so in case the system doesn't send emails, enable this setting.
  • Attach PDF to the order eMail - If this setting is enabled the system will generate and attach a PDF file to the order email containing the information loaded from the template file for the Invoice/Contract (see the section PDF Invoice/Contract Customization for more details).
  • Company Logo - The logo of your company, a jpg, gif or png image file that will be included in every order email.
  • Footer Text Order eMail - This HTML text can be placed in every order email at the bottom of the page.
  • Disclaimer - a text showed in the page of the front site when the user is selecting the rental price and the options. This should not be used for the Terms and Conditions. Read the Custom Fields section for further information.
Payments

Vik Rent Car - Method of Payments

From this task you can manage the methods of payment for your website. Paypal, Offline Credit Card and Bank Transfer are pre-installed but disabled after the installation.
The methods of payment affect the order status that can be Pending or Confirmed. You can find a parameter called "Auto-Set Order to Confirmed" on each payment option. Make sure this is disabled for those payment processors that require a server validation otherwise, if enabled, when selecting that payment option the system will apply the status Confirmed automatically without showing any payment form.
In case of all the methods of payment are disabled, each order received is considered by the system as Confirmed and the user will not be asked to select any method of payment.
Paypal is a method of payment that processes a server response, to enable this payment you have to publish it and then from its Parameters you have to provide the Account for Payments (usually your email address).

Bank Transfer instead doesn't need to validate any external response.
By clicking on the title of the method of payment, the edit/configuration task will be opened

The Payment Name is the title showed in the front site during the order confirmation when the user has to select a method of payment.
The File Class is a php file that is executed by VikRentCar to validate the payment, do not change this unless you are creating a new method of payment.
Take a look at the documentation about creating a custom method of payment for VikRentCar.

A method of payment can apply a charge or a discount to the total order. From the setting Charge/Discount you can enter an amount, percentage or value that will be added/deducted from the order total. This can be useful if you want to give your clients a discounts if they are paying by credit card.

Custom Fields

Vik Rent Car - Custom fields

From this task you can manage all the fields that the users will have to fill in before saving the order.
During the first installation of VikRentCar, some fields are created by the program but it's always possible to manage these fields.
The field types are:

  • Text - the user will have to fill in an input text field
  • TextArea - a text area with more rows will be shown
  • Select - a select menu is shown in this case, you can create all the select options from the same task
  • Checkbox - a checkbox field will be shown
  • Separator - this field is not an input field but just a text separator. It can be used for dividing the Driver's Information from the Billing Information.
    If the text of this field is longer than 30 chars, a different style will be applied to it. Some people use for writing extra information.


The field name is the label that will be next to the input field or the text of the separator.
If your website is multilanguage, the label should be a definition inside the .ini language file of each language that you have.
For example, the field Address should have a label like ORD_ADDRESS and each .ini file of VikRentCar that you have should contain a row like this:
ORD_ADDRESS="Address"
Take a look at the Answers Area F.A.Q. for furter information about languages and .ini files.
A field can be required or not, in this case the system will check that the user provided something for that information.
If the field type is Text and the setting Is Email is On, that email will be used to send the order email.
Another important setting of the fields is the Popup Link. This function is usually used when the field type is Checkbox and the user has to accept something, the Terms and Conditions for example. The popup link is a page that is ope

Search Statistics

Vik Rent Car - Search Statistics

From the Configuration of VikRentCar you can enable the saving of the statistics and every time a user searches for cars, the information about the results and the search are saved in the database.

F. A. Q.
Basic Setup
Administrator Section

Basic Setup of the Extension

In order to start using the program on your website you need to set up some basic contents and functions:

  1. Tax Rates: create at leat one tax rate that you will need for configuring the next steps.
  2. Types of Price: create at least one type of price so that you will be able to manage your rental costs. "Full Insurance" is an example of a type of price. have a look at the section Types of Price for more details.
  3. Locations: create your locations available for Pickup and Drop Off. In case you don't want to use the locations just don't create any.
  4. Cars: you can now create a vehicle with images, a description and other settings. Remember to assign your vehicle to the locations where the pick up and drop off is available (in case you are using the locations).
  5. Fares Table: after having completed the steps above, you will be redirected to the page from which you can insert the costs for each day/hour/extra hour of rental for your vehicle. It's important to have the Fares Table set up correctly or you might get no results in the front site. For example, if you are searching for a vehicle for 4 days of rental and you don't have a cost for 4 days in the Rates Table, that vehicle will not be displayed in the search results.

The very basic setup of one Vehicle is now complete. You may then want to check the Configuration page to adjust some settings. A lot of other features are available in the Administrator section like the Options, the Categories, the Characteristics, the Special Prices, the Custom Fields, the Payment Methods and many other functions.

Front-end Section

Once you have at least one vehicle set up correctly you can proceed to publish a Menu Item or the Search Module in the front site.

  • Menu Items: make sure your front site is showing a Joomla Menu Module in some position of your Template. On a fresh installation of Joomla you should see at least the Menu Item "Home". From the Administrator section, Menus, you can create new menu Items by clicking on New from your Menu(s). From the creation form, select the Type of the Menu Item and choose between one of the available Menu Items of type VikRentCar. For starting, it is recommended to use the Cars List view and the Search Form view. Give your menu item a name and save. Now your Menu in the front-end will show the new Menu Items that will point to the View(s) of VikRentCar.
  • Search Module: inside the package that you have downloaded you will find some Modules that you can install from the Extensions Manager in the Administrator section. If you would like to have a Search Form published on a position of your Template then you should install the module "mod_vikrentcar_search" and publish it on your Template from the Module Manager. To avoid Javascript conflicts, make sure the setting "Load jQuery" of the search module is Disabled.

With this basic setup you can start working on your website and populate the Administrator section of VikRentCar.

PDF Contract/Agreement
PDF Customization

If the Configuration setting for attaching the PDF to the order eMail is enabled or if the PDF generation is requested from the Administrator panel, Order Details page, VikRentCar parses all the information of the Order and then invokes a template file that gives the layout and style to the PDF that can be used as Invoice and/or Contract.
The template file is the following:
/components/com_vikrentcar/helpers/pdf_tmpl.php
VikRentCar will replace all the special directives inside the brakets {}. You can move them or place them inside any html tag that you want. All the occurrencies of echo JText::_('VRC...'); are language definitions that can change depending on the language in use. Make sure that those language definitions are available in the .ini files for the front-site and for the administrator section or you might have problems when generating the PDF from the Administrator section.
You can add pages to the PDF by using the code {vrc_add_pdf_page}. By default, this template file renders the first page with the order details and then, after adding another page, generates a sample text with some information entered by the user (or the Administrator) with the Custom Fields. By using the code {customfield 2} the program will replace it with the Custom Field ID 2 which is the Name by default. Check the Custom Fields page to see the IDs of the fields.

PDF Troubleshooting

The PDF is generated only if the order status is CONFIRMED, if the setting in the Configuration is enabled or if the generation is requested from the Order Details page.
Custom Fields are not being Replaced: if this happens, make sure that the Customer Information text contains the right values. If the order for whom the PDF is generated was made from the Administrator, the Customer Information text must follow the replacing syntax which is: Custom_Field_Name: Value Entered (New line, Enter). From the Calendar task of the Administrator, when you are making a Quick Reservation, click on Populate Customer Information from the Options and then add the values for each custom field. This way the system will replace the Custom Fields.
Blank Page/Error when generating the PDF: this usually depends on the images that are not found by the system. If you added some image tag into the template file or if the Footer Order eMail Text of the Configuration loads some images, make sure that all the tags have this syntax:

<img src="/images/your_image.jpg" border="0" alt="..." />


Text Encoding Problems: in case the PDF file is showing some strange character, you need to use a different font for the PDF. The default font used is Helvetica, a light font but that doesn't support all the languages. Inside the full package archive of VikRentCar that you downloaded there's a folder called Dejavusans_PDF_Font. Upload all the files contained in that folder (not the folder, just the files inside) onto the following directory of your server:
/components/com_vikrentcar/helpers/tcpdf/fonts/
This way VikRentCar will use the font Dejavusans and every character will be encoded correctly. The reason why the program doesn't come with this font pre-installed is because it weighs about 5MB, too much for a Joomla installer.
TCPDF ERROR: [IMAGE] Unable to get image: ..... if you are getting a similar error then the problem can be caused by two different situations.

#1: Your server doesn't have the cURL libraries of PHP installed.
#2: Your virtual host doesn't have the permission to access files from an absolute path.
You can try to edit the PDF template file (/helpers/pdf_tmpl.php) and change {logo} into an image tag like this:
<img src="/images/mylogo.jpg"/>
This should fix the situation #1 and in some cases also the situation #2. If you keep getting the same error message then you should contact your hosting provider and show them the error message. Installing cURL should fix the issue as well.

Distinctive Features, Car Damages, Check-in PDF
Distinctive Features

With the Distinctive Features the administrators can create certain "fields" for each unit available of a Car. For example, if the company has 2 units of the same Car "Mini Countryman", it is possible to specify some particular features of each unit. This is useful to distinguish one unit from another and for car rental companies, the first thing to identify one car should be the License Plate.
By default, the system will add 4 Distinctive Features (empty) for each unit of the Car: License Plate, Mileage, Fuel-In, Next Service. Important: the first Distinctive Feature will be the one displayed on any Confirmed Booking in the back-end, to assign a certain unit of a vehicle to a booking. For this reason the first feature of each unit should be something that will let you distinguish it from another.
Multi-language tip: when you are adding custom features, remember that you can also use a language definition of your .ini language file. For example, if you would like to create a custom feature for each unit of your car called "Colour", you can either put Coulour in the input text field or a language definition like VRC_FEATURE_COLOUR. Then you would simply have to put that language definition at the bottom of your Translation .INI File like this:
VRC_FEATURE_COLOUR="Colour"
Then copy that language definition on any other tanslation file and translate it.
The screen shot below shows how you can assign the car with the License Plate EN826SH to one booking because it was not assigned to any other booking on those dates:

Vik Rent Car - Distinctive Features

Vik Rent Car - Distinctive Features 2

The Distinctive Features are useful for management purposes first of all but also for the PDF

Car Damages

With this useful function you can keep the logs of your cars updated by marking the exact point of the vehicle where there is any kind of damage to be reported: a scratch, a dent or a ding for example.

Vik Rent Car - Car Damages

Click on any point of the car where you would like to report a damage and add a description of it:

Vik Rent Car - Car Damages example

The default map of the car is just an image file that you can replace with your own PNG photo. The file is the following:
/components/com_vikrentcar/helpers/car_damages/car_inspection.png
While the red-mark showing the damage is another PNG file that you could replace with your own (you can also use a smaller or bigger image):
/administrator/components/com_vikrentcar/resources/damage_mark.png
IMPORTANT: the PHP-GD Libraries are required in order to generate the PNG file with the damages of your Car.
Once you have added or removed the damages for the specific unit of the car, remember to click the Save button to apply the changes. You should do this operation every time that car is returned/dropped off to keep its status updated.

Check-in PDF

This is a function available only from the back-end, only if you have assigned a specific car to the booking.

Vik Rent Car - Check-in PDF

This is an example of how the Check-in PDF will look like:

Vik Rent Car - Check-in PDF example pdf

The check-in PDF file is generated through a PHP-Template-File that you can customize however you want. The file is the following:
/components/com_vikrentcar/helpers/checkin_pdf_tmpl.php
If you open that file you will find some useful PHP-Comments that will tell you what special-syntax tags are allowed to print some of the Distinctive Features and the Image containing the Damage Logs. Notice the damages can be displayed in 3 different ways: Damage Marks Only, Numbered Damage Marks or Numbered Damage Marks + Explanation of the Damage. This is up to you, if you would like to have the details of each damage or keep a number of the damage as reference. You can set this up from the Configuration page by changing the setting Car Damages in Check-in PDF.

iCal Bookings Sync
iCal Sync

You can easily keep your calendars updated by using the Sync function. This function is compatible with any online Calendar Software that allows the synchronizations with external URLs. Google Calendar, Yahoo! Calendar and MobileMe are probably the most used iCal only software and this function is compatible with those services.
You can have one calendar for each car (suggested method) or you can sync all the bookings in just one calendar. This is only up to your needs. What you need to do first is retrieve the iCal Sync Link from the back-end of VikRentCar:

Vik Rent Car - Cal Sync

 

Copy that link and log in to your Google Calendar account. Click the Add By URL link as below:

Vik Rent Car - Cal Sync Google

and then paste the copied URL as below:

Vik Rent Car - Cal Sync Goole add url

That's it. Google will periodically download your new bookings automatically and your calendar will be up to date!

Vik Rent Car - Cal Sync Google Calendar

You should repeat this procedure for all your cars because it is recommended to use one calendar for each Car. However, it is also possible to have all the bookings synchronized at once, you just have to do a little change to the iCal Sync Link that you copied from the back-end. Given this iCal Sync Link taken from the demo website:
http://www.e4j.com/livedemo/vikrentcar/index.php?option=com_vikrentcar&task=ical&car=2&key=331abcde0
The last part of the URL (key=...) is your secret key, ple

Development

Here you can see how a custom payment gateway can be integrated with VikRentCar.

How to develop a payment processor

The payment framework of VikRentCar can be extended by creating a PHP file declaring the VikRentCarPayment class.
The created file must be placed via FTP onto the directory: /administrator/components/com_vikrentcar/payments/
In order to develop the class VikRentCarPayment please follow the code example below.

<?php

defined('_JEXEC') OR die('Restricted Area');

class VikRentCarPayment {
	
	private $order_info;
	private $params;
	
	public static function getAdminParameters() {
		return array();
	}
	
	public function __construct($order, $params=array()) {
		$this->order_info = $order;
		$this->params = $params;
	}
	
	public function showPayment() {
		/** See the code below to build this method */
	}
	
	public function validatePayment() {
		/** See the code below to build this method */
		return array();

	}

	public function afterValidation($esit = 0) {
		/** See the code below to build this method */
	}
}
?>
Parameters Building

The parameters form for the administrator section can be built through the getAdminParameters() static method. This is useful to fill in private data or credentials, required for the creation and the validation of the payment/transaction. A Merchant ID and a Signature Key are an example of parameters that should be visible as well as editable in the back-end.
The parameters of the form are returned as an array with the following structure:

[
	"param_1" : [
		"label" : "Label 1",
		"type" 	: "text",
	],
	"param_2" : [
		"label" : "Label 2",
		"type" 	: "select",
	],
]
  • param_1 - is one key of the array that must be unique (required).
    It represents the name of the parameter to use.

  • label - indicates the text to assign for the parameter in the administrator section (optional).
    By placing a double slash (//) after the label, the text after will be displayed as a tip next to the field of the parameter (like "Merchant ID//this is a tip to display...").
  • type - is used to render the right type of input field in the administrator section (required).
    The values allowed for the type are the followings: custom, select, text.
  • html - will be used only when the type of the parameter is custom (optional).
  • options - is an array containing all the possible values to use in the dropdown (required only when the type is select).
public static function getAdminParameters() {
	$logo_img = JURI::root().'administrator/components/com_vikrentcar/payments/mypay/mypay-logo.jpg';
	return array(	
		'logo' => array(
			'label' => '',
			'type' => 'custom',
			'html' => '<img src="'.$logo_img.'"/>'
		),
		'merchantid' => array(
			'label' => 'Merchant ID',
			'type' => 'text'
		),
		'testmode' => array(
			'label' => 'Test Mode',
			'type' => 'select',
			'options' => array('Yes', 'No'),
		),
	);
}

The code above will generate a parameters form in the administrator section as follows.
Vik Rent Car - payment processor
If your form doesn't come up, probably there is a syntax error on your file.
When you fill in the admin form, the parameters are stored in the array $params and you are able to get the values with the instructions below:

$merchant_id = $this->params['merchantid']; /* returns "539264823539" */
$test = $this->params['testmode']; /* returns "Yes" */
Order Info Object

The $order_info object is a mapped key/val array with the order information needed to complete the payment process. You can see below all the available keys of the array.

ParamTypeDescription
order array Array containing sub-parameters for the record of this reservation.
custmail alphanumeric The email address of the customer.
transaction_currency char(3) The currency of the amount (3-letter ISO 4217 code). The default is EUR.
return_url string The return url to come back to your shop from the bank on successful transactions.
error_url string The error url to come back to your shop from the bank on failed transactions.
notify_url string The notification url to validate the transaction data sent from the bank. This URL invokes the validatePayment method of your gateway.
total_to_pay decimal The total amount to pay as decimal (ex. 135.50).

You can retrieve the information of the $order_info array with the example below.

$uniq_id = $this->order_info['order']['sid']."-".$this->order_info['order']['ts'];
Show Payment

The method showPayment() of the object VikRentCarPayment is invoked every time a user visits the page of a reservation with PENDING Status. Here you need to echo the HTML form that points to the payment creation url of your bank gateway.
In this method it is also possible to make calls via cURL to retrieve tokens or to self submit the form to receive additional info to send to the bank.

public function showPayment() {
	
	$merchant_id = $this->params['merchantid'];
	
	$action_url = "https://yourbankgateway.com/";
	if( $this->params['testmode'] == 'Yes' ) {
		$action_url = "https://test.yourbankgateway.com/";
	}

	$form='<form action="'.$action_url.'" method="post">';
	// put here all the required fields of your gateway
	$form.='<input type="hidden" name="your_post_data_merchantid" value="'.$merchant_id.'"/>';
	$form.='<input type="hidden" name="your_post_data_amount" value="'.$this->order_info['total_to_pay'].'"/>';
	$form.='<input type="hidden" name="your_post_data_notifyurl" value="'.$this->order_info['notify_url'].'"/>';
	$form.='<input type="hidden" name="your_post_data_description" value="'.$this->order_info['transaction_name'].'"/>';
	// print a button to submit the payment form
	$form.='<input type="submit" name="_submit" value="Pay Now!" />';
	$form.='</form>';
	
	echo $form;

}
Validate Payment

The validatePayment() method is used to validate the transaction details sent from the bank. This method is invoked by the system every time the NotifyURL is visited (the one described in the showPayment() method). Usually the data are sent via POST method, and you can access them by simply using the $_POST super-global variable. Some gateways require a signature validation to make sure the transaction wasn't corrupted. The signature validation can be created only following the instructions on the official documentation of your bank.

This method must return a key/value array with the status of the transaction. The possible keys of the array are the followings.

ParamTypeDescription
verified boolean The status of the transaction. 1/true in case of success, otherwise 0/false.
tot_paid decimal The real amount paid by the customer, should be returned by the Gateway (ex, 102.75).
log string A log message sent to the administrator in case of failure. The log can contain any value returned from the Bank and it should be as specific as possible. When not empty, the system will store the logs in the db and they will be visible from the order details page of the back-end.

Any different values in the returned array will be completely ignored during the validation of the transaction.

public function validatePayment() {
	$array_result = array();
	$array_result['verified'] = 0;
	$array_result['tot_paid'] = ''; /** This value will be stored in the DB */
	
	/** In case of error the log will be sent via email to the admin */
	
	$status = $_POST['status'];
	/** Process your gateway response here */
	if($status == 'success') {
		$array_result['verified'] = 1;
		/** Set a value for $array_result['tot_paid'] */
		$array_result['tot_paid'] = $_POST['amount'];
	} else {
		$array_result['log'] = "Transaction Error!\n".$_POST['error_msg'];
	}
	
	/** Return the array to VikRentCar */
	return $array_result;
}
After Validation

The afterValidation($esit) method is generally used to display a message and to redirect the gateway to the order summary view in case of success or failure. Please notice that this method should be in your Class only in case the Bank Gateway will not redirect the user to the ReturnURL. Also, this method, if it exists in the Class, will be invoked by the system after the validatePayment(). The $esit argument is a boolean value that represents the status of the transaction. In case of success (1/true) you should print a positive message and redirect the gateway to the return_url address, otherwise (0/false) you should print an error message and redirect the gateway to the error_url address. Remember also to put an exit or die rule at the end of the method to completely stop the flow.

public function afterValidation($esit = 0) {
	
	$mainframe = JFactory::getApplication();
	//Build the URL to the order details page
	$redirect_url = 'index.php?option=com_vikrentcar&task=vieworder&sid='.$this->order_info['sid'].'&ts='.$this->order_info['ts'];
	
	if($esit < 1) {
		JError::raiseWarning('', 'The payment was not verified, please try again.');
		$mainframe->redirect($redirect_url);
	} else {
		$mainframe->enqueueMessage('Thank you! The payment was verified successfully.');
		$mainframe->redirect($redirect_url);
	}
	
	exit;
	//
}

You can get HERE the complete code of this example gateway.

Extensionsforjoomla.com is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.
E4J s.r.l. - VAT N. 06794860483

This site uses cookies. By continuing to browse you accept their use. Further information