Estimates & Contracts
Once a project's budget is built, the module turns it into the documents that win and govern the work: a customer estimate to quote the job, or a contract to sign it. Both start from the same budget lines.
Markup & conversion
When you convert a budget, ianaiERP applies markup to turn cost into price. Markup resolves in this order:
- A per-category override you set for the conversion (e.g. a different markup on labor vs. materials),
- then your company default for that category,
- then the overall default markup for the conversion,
- then the system default.
You also choose the conversion mode:
- Itemized — one estimate/contract line per budget line.
- By phase — lines grouped and subtotaled per phase, with unphased costs collected under "Other Costs".
Converting stamps the budget lines so you can see they've already been quoted, and links the resulting document back to the project.
Estimates
Convert to Estimate produces a standard sales estimate (tagged as a project estimate) carrying the customer and billing details from the project. From there it follows the normal sales-estimate path — send it, get approval, and turn it into an order or invoice.
Contracts
Convert to Contract produces a contract in Draft. A contract carries:
- A type — General, Consulting, Construction, NDA, SOW (Statement of Work), MSA, or Other.
- Contract amount, currency, payment terms, and a billing frequency (one-time, weekly, monthly, quarterly, yearly, milestone, or progress).
- Start / end / effective dates.
- Terms & conditions and a description.
- Links to the customer, project, and the budget lines it came from.
Contract statuses
| Status | Meaning |
|---|---|
| Draft | Editable, not yet sent. |
| Sent | Out for signature. |
| Partially Signed | Some signers done (sequential signing). |
| Signed | All signers complete. |
| On Hold | Paused. |
| Expired | Signing window lapsed. |
| Terminated / Cancelled | Ended or voided. |
| Renewed | Extended. |
A contract is fully editable while in Draft; once sent it locks so the signed document can't change underneath the signers. A rejected contract unlocks again for edits and re-sending.
Contract templates
Rather than writing each contract from scratch, generate it from a contract template — reusable HTML with merge fields like {{customer_name}} or {{contract_amount}}. Templates carry their own page setup (orientation, size, margins), can be marked as the primary template for a contract type, and can be saved as reusable clauses. Generating from a template fills the merge fields from the contract and customer data (you can override any value), records a new version, and optionally produces a PDF. You can preview a template with sample data before applying it.
Every change to a contract before signing is captured as a version, so you can see the document's history and roll back if needed.
Sending for signature
When the contract is ready, send it for signature. Add one or more signers — each with a name, email, and a role:
| Role | Meaning |
|---|---|
| Signer | Must sign. |
| Approver | Reviews/approves. |
| CC | Kept informed, receives copies. |
| Viewer | Can view, no action. |
Choose a signing mode:
- Parallel — everyone can sign at once, independently. (Default.)
- Sequential — signers go in order; each is invited only after the previous one signs, and the contract sits at Partially Signed until the last signature lands.
Each signer receives an email with a secure, time-limited link (it expires after a set window — 14 days by default). On the signing page they review the contract, fill any assigned fields, and sign. Signable fields can be placed anywhere on the document — signature and initials blocks, date-signed, name/email/title, text, checkboxes, dropdowns, and stamps — and assigned to specific signers. The captured signature records who signed, when, and from where (timestamp, IP, browser) for the audit trail.
A signer can also reject with a reason, which sends the contract back to a rejected/editable state.
Reminders & expiry
Unsigned signers are reminded automatically on an interval you set, and you can send a manual reminder at any time. If the signing window lapses without completion, the request expires — you then re-send (issuing fresh links) or cancel. After everyone signs, you can regenerate the signed PDF to get the final executed copy, and void a signature to reset a contract back to draft if you need to redo it.
Draft review
Before a contract ever goes out for signature, you can send it for internal review — email the current draft (a preview link, not a signing link) to a colleague or stakeholder with a note. Each review is logged against the contract version it was sent on, so you have a record of who reviewed what.