Vik Rent Car Official Documentation
Version 1.3
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.
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..).
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 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.
Time Breaks: Within the function "Override Opening Time" you can add time breaks each weekday at the Location level.
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.
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 day 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.
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.
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.
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".
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.
It is also possible to add import remote iCal calendars containing reservations to sync the availability for the vehicle.
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 syste
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.
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.
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.
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.
The Special Prices are rules to lower or increase the rental costs for some cars on some dates or weekdays of the year.
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.
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.
One-way Fee: if you choose this option, this fee will include any possible combination of pickup location different from the drop-off location.
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.
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.
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.
Is possible to register the status of the rental for each reservation. If the date of the check-in has started, you can update the status of this rental into "STARTED" mode. This will mean that the customer has picked-up his car regularly. If the date of the check-out has started and the customer has returned the car, you can update the status into "TERMINATED" If the date of the check-in has started but the customer did not come to pick the car, you can update the status into "NO SHOW" You have a text area to add any notes about the updates.
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.
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.
The page Calendar is useful to get an overview of the bookings of a certain car, as well as for registering walk-in customers or any kind of reservation received over the phone or offline. By creating a new reservation you will reduce the availability of a car on certain dates. The page Calendar also allows to Close a specific car on some dates. By closing a car, the system will book all the units of your car, by making them unavailable. This will generate a special "reservation" just meant to close the availability. The page is divided into two parts:
- Quick Reservation form: for lowering the availability or for registering some bookings that were not received from the website
- Availability Calendars: get a view of up to 12 months from today's date with the bookings and the availability of a car
With the Quick Reservation form you can register some bookings as well as stop the sales (close car) on some dates. If you are registering a booking for a walk-in customer then it is recommended to use the button Fill Custom Fields so that the system can retrieve the email address of the customer as well as the Nominative, the Country and the Phone Number. Instead, if you would like to close the car on some dates and stop the bookings, you should tick the checkbox "Close Car on these Dates". This action will create a special booking that will be displayed as "Car Closed" in the Order List page. For re-opening the car it is sufficient to remove this booking.
Customize Widgets
Starting from version 1.2.0, the Dashboard of Vik Rent Car has a new look. It is divided in sections to host custom widgets. Clicking on the Customize Widgets button at the top-right of the page, you will open an edit side of the Dashboard. This interface will let you manage all the elements displayed in your Dashboard through Sections, Containers and Widgets.
You can add new Sections to better organize your elements, and arrange their position with drag and drop actions, and also add new Containers with a proper size to contain your widgets.
Four sizes are available for the containers:
- Full Width gives a 100% width to the container. Only one container of this type will fit in one row.
- Large gives the container a 75% width. Another small container could fit in the same row next to this size.
- Medium gives the container a 50% width. Another medium container could fit next to it, or even two small containers.
- Small gives the container a width of 25%. One row could fit up to 4 containers of this size.
This is an example of how the widget type "Reminders" looks like:
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.
To know more about the Cron Jobs function read our Knowledge Base section
In the "Advanced" menu you will find the function "Statistics Tracking".
The function “Statistics Tracking” will calculate the conversion rates, that is the relation between visitors and confirmed orders. It will track the traffic of Visitors, Customers and the Referrals. A Referral is the web source that brings you visitors on your website. You will be able to filter the tracking results for a specific range of date, type of date, country and Referrals. Thanks to this function, you can also create custom tracking campaigns: click on the “Tracking Settings” button to specify your tracking parameter.
The Reports framework is a part of the system that can be extended through the creation of apposite PHP Classes that extend the parent interface. Reports are useful to obtain financial statistics as well as to produce calculations of tax/levy. By default, Vik Rent Car is installed with several types of Reports to generate and/or export data: Revenue, Rate Plans Revenue, Occupancy Ranking and Top Countries.
In the screenshot below you can see the calculation of the Occupancy Report obtained on a specific range of dates for the rental orders received.
The Configuration of VikRentCar is divided into 5 tabs.
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.
- Apply Extra Hours Charges - decide whether to apply the extra hours charges on rental dates before or after the calculation of the Special Prices
- Car Damages in Check-in PDF - which damage details of the car do you want to show in the Car Damage Check-in PDF
- Enable Customers PIN Code - if enabled, when users are not registered or logged in and no cookies are available, customers will be able to enter their PIN code to get the billing information fields populated automatically
- 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
- Maximum Date in the future from today - this will generate the maximum date in the future allowed for bookings. By default is 2 years
- Cars Category Filter - if enabled, this parameter will add a category filter search in the global search form
- Filter by Characteristics - if enabled, this parameter will let filter the searching result by cars characteristics
- Suggest solutions when no availability - if enabled, in case of no cars found from the input parameters, the system will display the closest available dates or other possible booking solutions for the same dates. We suggest enabling this function.
- Preferred Countries Ordering - you can sort your preferred language flags to display in the customers information fields of rental confirmation page
- 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
Backup:
- Export Type - this function is useful to generate a backup of your Vik Rent Car configuration. The Export type "Full" will make a backup of all contents inside your Vik Rent Car, including reservations, customers records, and more. The Export type "Management" will only contains the general setup, with no records for contents like reservations or customers details.
- Folder Path - This is the path where the backup archives (ZIP files) will be saved on your website or server installation. The path can be inside or outside the root directory of your web-server. If you are unsure of what path to use, we suggest following the instructions in the comment below the path field so that you can append any custom folder to your installation base path. Something like "/your/server/installation/base/path/my-custom-backups
- Manage Backups - Will show the list of backups. By clicking on "New" you can create a new backup or upload an existing one.
- Transactions Currency Code - Payment Methods like Paypal can use this setting, insert the code for your currency
- 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.
- 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
- Allow Multiple Payments for one Order- if enabled, when the total amount paid is lower than the order total, customers will be able to place other payments for the remaining balance
- Calendars First Day of the Week - choose the first day of the week that any calendar will display. Some countries prefer Saturday or Sunday to Monday.
- Number of Months to Show - this is to define the default number of availability calendars that each car will display in the details page.
- 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.
- Preferred Colors - Select your favorite colors to adjust the predefined front-end styles. This way, the appearance of the elements (titles, buttons, font colors and backgrounds) on the various pages of the reservation process can match the design of your theme or company.
- iCal Events End Date - Choose how to display the booked dates in an Calendar
- Attach iCal Reminder - Attach the iCal file to the customer confirmation e-mail
-
Tracking Code - This is useful if you are using some external services to track or monitor your website activitie
- Conversion Code - This is useful if you need to track your sales with a conversion code
- 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.
In this section you can create your custom messages and texts for your customers based on specific needs or conditions:
- Conditional Text Name - the title of the custom text will be the name you want to add to this task, useful to remember what it is for. It won’t be shown to customers. Based on the title, the system will automatically create a tag that will be inserted in the template you want.
- Conditional Message - in this box, you must insert the custom text which will actually be shown to your customers. The editor supports HTML and CSS format, so you can customize the graphic of the text as you prefer.
- Add Rules - the rules are precise conditions that should happen in order to let the custom message appear. They work as filters assigned to your text.
Below you can find two examples of conditional texts:
- You need to make a special offer only for existing customers by giving them a special coupon for their next rental.
By adding the rule of type “Days” and a rule of type “Returning Customers”, if the customer that books a car on your website meets both conditions, then he will receive this custom message. - You need to give additional information for a particular location, for example, in the case of cars rented in a secondary location, the reception is limited during Summer days so customers need to contact you upfront their arrival.
We added the rule “Locations” and selected among the list the specific location we want to give this information for. Then we add the rule "Rentals Dates" in order to delimit the message only to a specific season of rentals.
With this rule, any customer that will book a car for that Location and on the specified dates will receive this message.
PS. In case the context needs plain text and not HTML tags, you need to insert "[sms]" or "[plain text]" inside the body of the message (no matter in which point of the message, our plugin will strip that string). You'll specify the context of the message so that our plugin can recognize and avoid using the wpautop function for that message.
After saving, you will have the list of all your Conditional texts created.
Remember to assign this text to a precise template where you need to display it: click on the desired template name among the three proposed: “Customer E-mail”, "Customer PDF", "PDF Check-in" or “PDF Invoice”.
When you choose the template, it will be opened in an interactive way, and you can insert your custom message by simply clicking on the position you prefer. When you click on a precise point of the template, the special tag will be added.
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.
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 Knowledge Base for furter information about languages and .PO .MO 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
If the jQuery UI Calendar is not working on your website then it's because your page has a Javascript Conflict.
A Javascript file is responsible of this "conflict". Since this file could be called by either the template, a widget or a plugin, a manual debug of the source code is always required in order to understand the reason of this problem.
The calendar is generated by jQuery UI, a javascript library that implements the standard functions of the javascript framework jQuery. In order to make the Calendar work, in the source html code of the page, after the library jQuery UI another jQuery library cannot be called otherwise jQuery will be reset and your browser will "forget" the functions needed to render the Calendar.
Usually these problems are caused by Widgets because they are rendered after the plugin so, if they use jQuery, the file will be called after the jQuery UI library making the calendar not work.
This is an example of a correct source code that renders the jQuery UI Calendar correctly:
You can see that after the library jquery-ui-1.10.1.custom.min.js no more jQuery libraries are called so the browser is able to render the calendar correctly.
Here is an example of an incorrect source code that generates a Javascript error in your browser console:
Another jQuery library is called after the file jquery-ui-1.10.1.custom.min.js and this way the browser will forget how to render the calendar because jQuery has been reset.
In order to do a basic setup of the plugin, you should read this dedicated articles in the section "Installation & First Setup" on our Knowledge Base.
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:
/wp-content/plugins/vikrentcar/site/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 .po file 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.
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.
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.
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.
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:
The Distinctive Features are useful for management purposes first of all but also for the PDF
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.
Click on any point of the car where you would like to report a damage and add a description of it:
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:
/wp-content/plugins/vikrentcar/site/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):
/wp-content/plugins/vikrentcar/admin/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.
This is a function available only from the back-end, only if you have assigned a specific car to the booking.
This is an example of how the Check-in PDF will look like:
The check-in PDF file is generated through a PHP-Template-File that you can customize however you want. The file is the following:
/wp-content/plugins/vikrentcar/site/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.
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.
It is also possible to add import remote iCal calendars containing reservations to sync the availability for the vehicle, this can be done from the Cars List > Car configuration page.
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:
Copy that link and log in to your Google Calendar account. Click the Add By URL link as below:
and then paste the copied URL. That's it. Google will periodically download your new bookings automatically and your calendar will be up to date!
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:
https://vikwp.com/demo/vikrentcar/index.php?option=com_vikrentcar&task=ical&car=1&key=27
You need to remove the &car=1 query from the iCal URL.
This section is only for PHP programmers. The documentation below shows how to extend the new Cron Jobs framework available in the most recent versions of Vik Rent Car. In order to create and install a new Cron Job, it is now required to create a WordPress native plugin that executes a specific PHP command that will install the new Cron Job in Vik Rent Car.
Moreover, thanks to the new framework structure, your Cron Jobs will be automatically executed by the Wordpress official WP-Cron system. This means that you won't need to do anything from your server control panel, as our plugin will schedule the execution of your jobs within the native WP-Cron scheduled tasks.
The best thing to do to familiarize with the new Cron Jobs framework is to look at the final integration of a custom WordPress plugins that declares two Cron Jobs in Vik Rent Car. In this example, we wanted to show two different types of Cron Jobs, one for tracking the last booking ID fetched, and another for not tracking anything. Tracking a booking ID is fundamental to avoid duplicate notifications. For example, if you need to create a custom Cron Job to fetch certain reservations only once, then you need to implement the apposite booking tracking PHP trait. Instead, if you don't need to keep track of duplicate information with your custom Cron Job(s), then you should adopt the apposite PHP trait for not using the tracking system.
Once the logic of the framework is clear, let's go ahead with the actual implementation of the WordPress native plugin which includes our two custom Cron Jobs for our plugin.
The native WordPress plugin should be basically a folder with one PHP file in the root of this directory (the main plugin file), another folder inside it (the container of the actual Cron Jobs for our plugin), and our custom Cron Jobs we want to develop and install (should be placed inside the "container folder").
Here's how the native WordPress plugin should be declared. This is the content of the "main plugin file".
<?php
/*
Plugin Name: My Custom Cron
Plugin URI: https://vikwp.com/
Version: 1.0
Author: E4J s.r.l.
Author URI: https://vikwp.com
License: GPL2
License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/
// No direct access
defined('ABSPATH') or die('No script kiddies please!');
// You can optionally load any necessary PHP assets here
// Define the hook for Vik Rent Car to read Cron Jobs from the /cronjobs sub-directory
add_action('vikrentcar_create_cron_jobs_factory', function($dummy, VRCCronFactory $factory)
{
$factory->addIncludePath(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cronjobs');
}, 10, 2);
If you were to upload this PHP file onto the apposite /wp-content/plugins directory of your WordPress website, you would have a working plugin. However, we now need to add some actual Cron Jobs to our /cronjobs sub-directory, or no custom Cron Jobs would be installed.
A valid Cron Job for Vik Rent Car must declare a PHP class that follows a specific nomenclature depending on the file name, and it must extend a specific class available in our plugin by default in its core framework.
If you are willing to create a custom Cron Job called "Foo Bar Baz", then you should call the PHP file "foo_bar_baz.php", the class name would be "VikRentCarCronJobFooBarBaz" and it should extend the PHP class "VRCCronJob". Not respecting one of these requirements will result into a failure, or maybe into a PHP Fatal Error.
This is how a complete and custom Cron Job can be created with custom admin parameters, and the capability of tracking a specific value to avoid duplicate notifications. This file foo_bar_baz.php should be placed inside the sub-directory /cronjobs.
<?php
/**
* @package VikRentCar
* @subpackage com_vikrentcar
* @author E4J srl
* @copyright Copyright (C) 2022 E4J srl. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
* @link https://vikwp.com
*/
defined('ABSPATH') or die('No script kiddies please!');
class VikRentCarCronJobFooBarBaz extends VRCCronJob
{
use VRCCronTrackerArray;
/**
* This method should return all the form fields required to collect the information
* needed for the execution of the cron job.
*
* @return array An associative array of form fields.
*/
public function getForm()
{
return [
'cron_lbl' => [
'type' => 'custom',
'label' => '',
'html' => '<h4><i class="far fa-file-archive"></i> <i class="far fa-clock"></i> ' . $this->getTitle() . '</h4>',
],
'maxchars' => [
'type' => 'number',
'label' => 'Maximum Characters',
'help' => 'The maximum number of characters that can be stored within the list of processed elements.',
'default' => 100,
'min' => 0,
'step' => 1,
],
'help' => [
'type' => 'custom',
'label' => '',
'html' => '<p class="vrc-cronparam-suggestion"><i class="vrcicn-lifebuoy"></i>Sample driver used to test the cron jobs extendability.</p>',
],
];
}
/**
* Returns the title of the cron job.
*
* @return string
*/
public function getTitle()
{
return 'Foo Bar - Baz';
}
/**
* Executes the cron job.
*
* @return boolean True on success, false otherwise.
*/
protected function execute()
{
$this->maximumCharsTrackableElements = $this->params->get('maxchars', 100);
$n = rand(0, 5);
$this->appendLog("Registering [$n] numbers...");
for ($i = 1; $i <= $n; $i++)
{
$elem = rand(0, 100);
$result = $this->track($elem);
$this->appendLog("Tracking element [$elem]: " . ($result ? 'Y' : 'N'));
}
if ($this->isDebug())
{
$dump = clone $this->getData();
unset($dump->logs);
echo '<pre>' . print_r($dump, true) . '</pre>';
}
return true;
}
}
That's all a custom Cron Job should do. As you can see, there are some methods declared as abstract by the parent and abstract class "VRCCronJob". All you need to do with your custom Cron Job is to declare such methods according to your needs. Inside such methods, do not forget that you will be obviously able to use PHP native code, WordPress native functions, as well as to access the whole core framework of our plugin. This is thanks to the fact that your custom Cron Job will run within WP-Cron, so it's executed by WordPress itself.
You can download a full copy of a working WordPress plugin that performs the same operations as described in the previous sections. This skeleton plugin will declare and install 2 custom Cron Jobs for Vik Rent Car:
- Foo Bar - Baz (file foo_bar_baz.php): uses a built-in trait to track a list of identifiers (such as a number for the booking ID) inside an array to avoid duplicate notifications.
- Stress - Tester (file stress_test.php): uses a built-in trait to not track anything, in case your Cron Job does not need to avoid duplicate notifications of the same elements.
Feel free to use the example that fits your needs the most.
You can download the full copy of the working plugin from this link. Once the plugin has been installed and activated, use Vik Rent Car to add a new Cron Job, and the two custom integrations will be available for selection.