Rows shaped like a contract
Duration, the student-count bracket and the amount - the same columns as in a contract price list. Otherwise copying would drop the dimension pricing runs on.
A school has one way of pricing lessons and twenty teachers. The price list is written once, with a name and its rows, and goes into a contract instead of twenty rewrites.
Duration, the student-count bracket and the amount - the same columns as in a contract price list. Otherwise copying would drop the dimension pricing runs on.
Taking a price list copies its rows into the contract instead of linking them live: an edited template has no business repricing a month already closed.
From the template list the rows are pushed into chosen contracts, and inside the contract dialog a "Take from price list" button stands next to "Add row".
The file carries rows, not templates: the name repeats once per row, and an import replaces the rows of the price list bearing that name.
Last year template is history rather than a seat in the limit, so it leaves the picker without deleting anything it once priced.
A module is a permission, and which records may be touched is settled on write, not in the menu.
| Role | Sees | Changes |
|---|---|---|
| Owner | Every price list in the school, the live ones and those put in the archive. | Creates them, lays out rows, copies into contracts, archives and deletes. |
| Methodologist | Nothing until the owner grants the module; after that, the whole list. | Once granted, everything, but copying also asks for the right to Contracts. |
| Teacher | No access to this screen. Their own rate is visible in their own contract. | Nothing. A price list carries the whole team's rates, not one person's. |
| Student | No access to this screen. | Nothing. |
The things that only surface in the third week of working with the module.
Nothing, and that is the whole point of this module. A contract receives a COPY of the rows, and pricing reads only the list stored in the contract - it never looks at the template. So a lesson from before the change is priced today exactly as it was then, and a raise from February does not recalculate January. Whoever wants to hand it out copies the list again, deliberately.
With the row action “Copy into contracts”: tick the contracts, confirm, done - one request may cover up to two hundred. The chosen contracts receive EXACTLY those rows, and the list they had before is replaced rather than appended to. The panel then says how many contracts really got the rows, because keys from outside the school drop out quietly instead of failing the whole action.
Yes. In the contract window, in the pay section, “Take from a price list” stands next to “Add row”. The rows land in the window but are saved only by the button in the footer, so they can be seen before the decision. Only live lists are offered, and someone without the Price lists module will not even see the button - a refusal that looks like absence rather than a closed door.
Four values: the lesson length in minutes (from 5 to 480), the number of students from and to (0-1000, inclusive), and the amount per lesson, at most one million zloty. An empty field means “any”, so one row can carry a whole price list and ten rows can split it into brackets. Two rows of the same shape are refused by the database: a list with a silent duplicate stops being a function.
The narrowest one, the one that says the most. The lesson length weighs twice as much as the student bounds, because it is what tells a specific row from a general one, and it has to match to the minute - “60 min” will not price a fifty-minute lesson. When no row matches, pricing drops further down, to the hourly rate or the per-lesson rate from the contract.
Yes, as a CSV, and the file carries ROWS, not templates: the name of the list repeats as many times as it has entries. The import matches the name regardless of case, replaces the rows of a list with that name, and creates an unknown one. A row with no amount is dropped. The separator is chosen before downloading - a semicolon for Excel, a comma for Google Sheets - and a sample file sits next to it.
Put it in the archive. It stops being offered on a contract, but stays readable and frees a slot in the limit - otherwise the school's history would cost it a subscription. Restoring from the archive asks about the ceiling again, so it cannot be dodged by archiving and unarchiving. Deleting takes the template's rows, while the contracts it was copied into stay untouched.
No. That is done by the pricing ladder in Contracts, reading only the rows stored in that one contract. Price lists are a store of patterns and their role ends the moment they are copied. They know nothing about the base rate or the allowances either - those are fields on the contract. And student tuition is on the far side of the wall entirely: money coming in belongs to Finance.
14 days on your groups and instalments. No card, no strings.