Service Bundle Best Practices with HaloPSA

Maximizing Profit Margins and Service Delivery through Effective Billing Practices for MSPs.

It is crucial to follow billing best practices. This includes configuring recurring agreements and breaking down service components for more comprehensive financial reporting and management. By conducting audits and ensuring compliance, you can mitigate the risks and maximize your success.

Halo PSA Service Bundles Guide

  1. Breakout Component Services in HaloPSA
  2. Create Custom Field - Product
  3. Enable Custom Field for Service Bundle Items in Recurring Items

  4. Create Custom Report

  5. SQL Query
  6. Update Report Appearance
  7. Create Custom Invoice PDF Template
  8. Example of Custom Invoice


Breakout Component Services in HaloPSA

The services that are added to a Service Bundle or Comprehensive Package are called component services or add-on services. These services are typically included in the Cost of Goods Sold (COGS).

To gain better financial visibility and identify any shortcomings in your tech stack, it is recommended to separate all managed services and COGS.

You can achieve this by following the steps below and generate a consolidated invoice template in HaloPSA. This will allow you as an MSP to have a clearer and more detailed view of your profit and revenue margins, while presenting a more refined invoice template that won't confuse your clients.

 


Create Custom Field – Product

  1. Navigate to Configuration > Custom Objects > Custom Fields > And Select "Item" from the "Entity" dropdown menu towards the upper left.

  2. Create New

  3. Enter a Field Name

  4. Enter a Field Label

  5. Choose Checkbox from Type of Field dropdown

  6. Save custom field

Custom_Field_for_new_Item_Creation

 


Enable Custom Field for Service Bundle Items in Recurring Items

  1. Navigate to Items(Items By Group view) > Recurring Items and then select whichever Item you wish to enable for bundling.

  2. Select Custom Fields tab and then the Edit button

  3. Enable checkbox for Service Bundle

  4. Save

Is_Service_Bundle_Option

 


Create Custom Report

Create a Custom SQL Query Report for a custom Invoice Table

  1. Navigate to Reporting

  2. Create New

  3. Enter Title

  4. Select Group

  5. Add Description

  6. Under Data Source select Write a custom SQL Query and copy and paste the following SQL query.

 


SQL Query

Begin your query using the provided SQL Query sample as a foundation. Customize the invoice table to your specific requirements by adjusting the displayed columns and modifying the report as needed.

select IDItem_ShortDescription as [Description],
case when idisgroupdesc=1 then '' else IDItem_longDescription end as [LongDescription],
case when idisgroupdesc=1 then null else IDQty_Order end as [Quantity],
i.CFServiceBundle as [Service Bundle],
case when ID_ItemID>0 then 'Product/Service' when IDActionCode>0 then 'Labour' else 'Other' end as [Grouping],
format((case when idisgroupdesc=1 then (select sum(a.IDNet_Amount) from invoicedetail a where a.idihid=invoicedetail.idihid and a.idgroupid=invoicedetail.idgroupid and a.idisgroupdesc=0) else IDNet_Amount end), 'C', 'en-US') as [Price],
case when idisgroupdesc=1 then 'group' else 'line' end as [Type],
format(((case when idisgroupdesc=1 then (select sum(a.IDNet_Amount) from invoicedetail a where a.idihid=invoicedetail.idihid and a.idgroupid=invoicedetail.idgroupid and a.idisgroupdesc=0) else IDNet_Amount end)*(case when idisgroupdesc=1 then (select sum(a.IDQty_Order) from invoicedetail a where a.idihid=invoicedetail.idihid and a.idgroupid=invoicedetail.idgroupid and a.idisgroupdesc=0) else IDQty_Order end)), 'C', 'en-US') as [Subtotal]
from invoicedetail
JOIN Item i ON i.Iid = invoicedetail.ID_ItemID
where idihid=$invoiceid and i.CFServiceBundle > 0

 


Update Report Appearance

  1. Under Appearance enable Customize Table HTML

  2. Copy & paste the following under Report Table HTML

  3. Copy & paste the following under Report Table Row HTML

  4. Copy & paste the following under Report Table Group HTML

  5. Save Report

  6. Report should look something like this:

Report Table HTML

<tr style="background-color:#7BBCE8;color: white;">
<th><div style="text-align: left">Description</div></th>
<th>Quantity</th>
<th>Price</th>
<th>Subtotal</th>
</tr>
$reportRows

Report Table Row HTML

<tr class="$Type">
<td>$Description<br><span class="smalltext" style="font-size:10px;">$LongDescription</span></td>
<td><center>$Quantity</center></td>
<td><center>$Price</center></td>
<td><right>$Subtotal</right></td>
</tr>

Report Table Group HTML

<tr>
<th>$Groupheader</td>
</tr>

Example_Invoice_Data_Complete

 


 

Create Custom Invoice PDF Template

  1. Navigate to Configuration > Reporting > PDF Templates > Invoices

  2. Create New

  3. Under Details tab enter name and add report

  4. Add report that was created earlier

  5. Copy the Data Variable (example, $REPORT186DATA) to your clipboard

  6. Under Details Table tab, remove default columns and add custom column

  7. Add Data Variable copied from earlier steps to Cell Content

  8. Under Pages, update Main Page and replace the detail-table to the Data Variable copied earlier in the Core Template HTML, Invoice Line Table Row HTML and Invoice Group Table Row HTML.

  9. Lastly, change the PDF invoice template in each Recurring Invoice or change the default PDF template for all customers in Configuration > Billing > General Settings.

 Custom_Invoice_Description

Column_Content_Description

HTML_Table_Row_for_Invoice_Line

 


Example of Custom Invoice

Recurring Invoice

Recurring_Invoice_option

Custom Invoice

Example_Recurring_Invoice

 

Top