# How do I combine multiple services in my quote template?

Sales · Updated: 2025-12-04 · Bas Software
Web version: https://www.bas.software/en/help/sales/how-do-i-combine-multiple-services-in-my-quote-template

Learn how to show texts based on multiple services at once. Advanced if-statements with AND, OR and NOT for smart quote templates.

## 🎯 The problem

You want to show texts that only appear if:

- Multiple services are ticked together
- One service is ticked but another is not
- A specific combination of services has been chosen

For example: only show "Complete disassembly & reassembly package" if both services have been chosen.

## Who is this article for?

This article is for administrators who already have basic knowledge of if-statements. First read the article "How do I set which service descriptions appear in my quote?"

---

## ⚙️ What you need

- Basic knowledge of if-statements (see previous article)
- Administrator rights in Bas Software
- Access to the template editor

---

## ✅ How to solve it

## Type 1: Multiple services TOGETHER (AND)

**When do you use this?** You only want to show text if service A AND service B are both ticked.

### Example: Disassembly AND reassembly

```
{% if project.usesService('disassemble') and project.usesService('assemble') %}COMPLETE FURNITURE PACKAGEWe disassemble here, move everything safely and professionally reassemble it all on site!{% endif %}
```

This text only appears if both services are ticked.

## Type 2: One service YES but another NOT (AND NOT)

**When do you use this?** You want to show text if service A is ticked but service B is not.

### Example: Packing but no unpacking

```
{% if project.usesService('packing') and not project.usesService('unpack') %}⚠️ PLEASE NOTE: UNPACKING YOURSELFWe pack your belongings, but you take care of the unpacking in your new home yourself.{% endif %}
```

## Type 3: Three or more services together

### Example: Deluxe package

```
{% if project.usesService('disassemble') and project.usesService('assemble') and project.usesService('storage') %}🌟 DELUXE REMOVALS PACKAGEWe disassemble everything, move it, store it safely if needed, and reassemble it all again.{% endif %}
```

---

## 📖 Practical examples

## Example 1: Warning about a missing service

```
{% if project.usesService('disassemble') and not project.usesService('assemble') %}⚠️ IMPORTANTYou have chosen disassembly but not reassembly. Make sure you have your own tools.{% endif %}
```

## Example 2: Extra information for a service combination

```
{% if project.usesService('packing') and project.usesService('provide_boxes') %}💡 GOOD TO KNOWWe deliver the boxes 3 working days before the moving date. Our packers will come and pack everything on moving day.{% endif %}
```

## Example 3: Storage with insurance

```
{% if project.usesService('storage') and project.usesService('insurance') %}⚡ STORAGE WITH FULL COVERYour belongings are stored safely with complete insurance cover. Total peace of mind!{% endif %}
```

---

## 🔍 Syntax overview

| What you want | Syntax |
| --- | --- |
| Both A and B | `and` |
| A yes, B no | `and not` |
| A or B (at least one) | `or` |
| A, B and C all three | `and and` |

---

## ⚠️ Common mistakes

## Mistake 1: Forgotten spaces around 'and'

❌ WRONG: `project.usesService('packing')andproject.usesService('unpack')`

✅ CORRECT: `project.usesService('packing') and project.usesService('unpack')`

## Mistake 2: 'NOT' in the wrong place

❌ WRONG: `project.usesService('packing') not and project.usesService('unpack')`

✅ CORRECT: `project.usesService('packing') and not project.usesService('unpack')`

The `not` comes directly before the service you want to exclude.

---

## 💡 Pro tips

## Tip 1: Test all combinations

Create test quotes with these combinations:

- Only service A
- Only service B
- A and B together
- All services
- No services

## Tip 2: Keep it clear

With more than 3 `and` statements, consider whether you're making it too complex. Can it be simpler?

## Tip 3: Add comments

```
{# This only shows for packing + storage #}{% if project.usesService('packing') and project.usesService('storage') %}Text here{% endif %}
```

Comments between `{# ... #}` are invisible to customers.

---

## ❓ Frequently asked questions

## Can I use OR instead of AND?

Yes! `or` means: the text appears if at least one service is ticked.

```
{% if project.usesService('packing') or project.usesService('unpack') %}You have chosen the packing and/or unpacking service.{% endif %}
```

## How many ANDs can I put in a row?

Technically unlimited, but keep it clear. More than 4 `and` becomes confusing.

## Does this also work with other template fields?

Yes! You can also check other project details, but that's beyond the scope of this article.

---

## 🔗 Related articles

- How do I set which service descriptions appear in my quote?
- Overview of all service names for quote templates

---

## 🆘 Not managing?

Is your combination not testing as expected? Send us:

- Your if-statement code
- Which services you tick
- What happens vs. what you expect

We're happy to help via chat or email! 💬

---

## 📋 Checklist before going live

- ☐ Tested with only service A ticked
- ☐ Tested with only service B ticked
- ☐ Tested with A and B ticked together
- ☐ Logic is correct: texts appear when you expect them to
- ☐ Every {% if %} has an {% endif %}
