> For the complete documentation index, see [llms.txt](https://kb.logicerp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kb.logicerp.com/logic-erp-learning-hub-tutorials-and-best-practices/billing/setup-appointments/packages/batch-manager.md).

# Batch Manager

**Available on:** Desktop · Web · Phone

The **Batch Manager** runs **group sessions** — a yoga class, a slimming course, a training batch — that several package clients attend together. You add clients to a batch, start a session, mark who came, and finish the session, which completes and bills it.

Batches and the package services that belong to them are set up first, on the **Setup Batch** tab of **Setup Package**.

In Setup Appointments, open the menu and double-click **Packages › Batch Manager**. It opens as a tab with two pages: **Batch Manager** and **Batch Session Manager**. No special right is needed to use it; billing at **Finish** needs the sale bill right.

## Batch Manager — who is in each batch

**Current Batches** lists the batches that are not marked inactive. Select one to see its participants who still have sessions left on a package that has not expired: **Participant Name**, **Mobile**, **Email**, **Package Number**, **Service Count**, **Pending Count** and **Package**. A client who has used up their package drops off the list by itself. Type in **Participant Search** to find someone.

**Agent** is the stylist (trainer) who takes the session. It starts with the batch's default agent, and you can change it. A session cannot start without one: *"No agent selected"*.

| Button                 | What it does                                                                                                                                                                                                                            |
| ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Add Participant**    | Opens **Package Customer Selection**: tick the clients to add. It lists clients who are not yet in the batch and who bought a package with this batch's service that is active, billed, has started and has not expired, with uses left |
| **Remove Participant** | Takes the selected client out of the batch, after you confirm                                                                                                                                                                           |
| **View Packages**      | Opens **Batch Packages** — the packages and services allocated to the batch (you can also double-click the batch)                                                                                                                       |
| **Refresh Batch**      | Reloads the list                                                                                                                                                                                                                        |
| **Start Session**      | Starts **today's** session for every participant in the list, after asking *"Are you sure to start session for selected batch …"* — then *"Session Started successfully"*                                                               |

* A batch can have **one session a day** (*"Session already finished"*), and a new one cannot start while an earlier one is still open (*"Session already started"*).
* While a session of the batch is open — started but not finished — participants cannot be added or removed: *"Can not add participant, Session already started"*.
* The selected agent must have service stages set up for the participants' services, or the session will not start: *"No service stages found for the selected agent for: …"*, followed by the services.

## Batch Session Manager — taking attendance

**Current Sessions** lists every session not yet finished, newest first — an unfinished session from an earlier day stays here — with **Batch**, **Agent**, **Vouch Num** and **Date**. Type in **Batch Search** to find one. Select a session to see its **pending** participants (those not yet marked), with their own **Participant Search** and **Select All**.

Tick participants and mark them:

| Button               | What it does                                                                                                              |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Present**          | Marks them present: a job slip is made for each, and one session is used from their package                               |
| **Present & Print**  | The same, then asks *"Print Job Slip?"* once and prints the new job slips if you say Yes                                  |
| **Absent**           | Marks them absent, but **still makes a job slip and uses one session** from their package — a missed class counts as used |
| **Absent W/o**       | Marks them absent **without** a job slip, after asking. Nothing is used from their package and nothing is billed          |
| **Refresh Sessions** | Reloads                                                                                                                   |

After marking you see *"Record saved successfully"*. The **Present** and **Absent** lists show who has been marked — **Participant Name**, **Package Number**, **Jobslip Number**, **Time** (when the job slip was made) and **Package**. Clients marked **Absent W/o** have no job slip.

### **Finishing the session**

When the session is over, click **Finish** and confirm *"Are you sure to finish current batch"*. Every participant must be marked first — *"Participants attendance not complete..."*.

Finishing completes the job slips of everyone marked **Present** or **Absent**. Services already paid for in the package are completed straight away. Each of the others opens its own bill, one per client, in a separate window — see [Billing Appointments](/logic-erp-learning-hub-tutorials-and-best-practices/billing/setup-appointments/billing-appointments.md). The session then closes — *"Current batch completed successfully"* — and participants can be added or removed again. A bill you close without saving is not lost: that service stays in the **Job Slip Viewer** to bill later.

> **Example — a yoga class.** The *Morning Yoga* batch has 8 clients on a prepaid *12 Yoga Sessions* package, with Pooja as the trainer. At 7:00 AM select the batch, check Pooja is the **Agent**, click **Start Session** and confirm. On **Batch Session Manager**, select today's session, tick the 7 who came and click **Present** — each gets a job slip and uses one of their 12 sessions. Tick the one who didn't come and click **Absent W/o**: no job slip, so her session is not used (plain **Absent** would count it as used). After the class, click **Finish**: the 7 services are completed and the session closes.

## On the web

The Batch Manager works the same way on the web, with **Batches** and **Sessions** to switch between the two pages. Some buttons read differently: **Absent without slip** for *Absent W/o*, and **Refresh** for *Refresh Batch* / *Refresh Sessions*.

**Finish** opens the bills one after another on the POS sale bill page. A bill closed without saving is skipped, and its service stays in the Job Slip Viewer. If you have already started a new bill on the POS page, finish or close it first — the bills are not opened otherwise.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://kb.logicerp.com/logic-erp-learning-hub-tutorials-and-best-practices/billing/setup-appointments/packages/batch-manager.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
