Actions and results
What each Sales button and automatic behaviour does, with worked numbers and what the system refuses.
On this page (24)
QuotationsQuotations / Sales ordersQuotation recordQuotation tabPublic acceptance pagePrices & margin tabCredit holdsSales order recordAvailability tabChanges tabReturns tabDown payments & milestonesCustomer invoiceCustomer invoices listCredit noteSales settingsQuotation templatesReturn and cancellation reasonsCommission plans / CommissionsBlanket agreementsReportsApplications > Sales > FieldsApplications > Sales > FeaturesSales dashboard
Quotations
| Action | When | What you do | What happens |
|---|---|---|---|
| List shows drafts only | Some drafts and confirmed orders | Open Quotations, then Sales orders | Quotations lists only Draft documents; Sales orders lists Confirmed, Delivered and Cancelled; counts match |
| Pivot view | Several quotations | Switch View to Pivot; group rows by customer, columns by status | Totals equal the list totals for the same filters |
| Bulk delete | Two drafts and one confirmed order selected | Select them, Delete, confirm | Drafts removed; the confirmed one is kept and named as refused ('not drafts, or not yours to change') |
| Open by number in the address bar | A quotation SO-xxxx | Paste .../sales/quotations/SO-xxxx into the browser | The record opens directly; after Confirm the same record is titled Sales order |
Quotations / Sales orders
| Action | When | What you do | What happens |
|---|---|---|---|
| Delivery and Invoice status columns | Orders in different states | Sort and filter on Delivery status and Invoice status | Labels: Nothing to deliver / To deliver / Partially delivered / Fully delivered and Nothing to invoice / To invoice / Partially / Fully / Over-invoiced; filter returns matching orders |
Quotation record
| Action | When | What you do | What happens |
|---|---|---|---|
| Create a quotation | Signed in as company admin; active customer and products with VAT 5% | New quotation; pick customer; add 2 lines (qty, price, 5% discount on one); Save draft | Saved as Draft with number SO-...; totals = subtotal - discount + 5% VAT; message 'Saved. The record is read-only - choose Edit to continue.'; History shows 'sale.saved' |
| VAT and totals arithmetic | Line 3 x 100.00, 10% discount, VAT 5% | Net 270.00, VAT 13.50, Total 283.50 on screen, on the list and on the printed quotation | |
| Keyboard line entry | Draft in edit | F3 product, F4 quantity, Enter; F5 price, F6 discount; Ctrl+Enter new line; Enter on the last cell of the last row | Each key jumps to its field; a new line is added only when the current line has a product; Ctrl+S saves |
| Reorder lines | Draft with 3 lines | Drag a line by its number, or focus the grip and press Alt+Down | Order changes and is kept after Save and on print |
| Import lines from CSV | CSV: product_code,quantity,price,discount | Import; choose the file | 'n lines imported.'; unknown codes skipped; all unknown -> 'No matching products were found...' |
| Quick create customer | In Customer type a new name, choose 'Create new customer'; fill code, name, TRN, terms; Create | Customer created as Customer (B2B), selected on the quotation; appears in Customers | |
| Edit a draft / discard | A saved draft | Edit; change a quantity; Discard; then Edit, change, Save | Discard keeps the saved values; Save stores the change and History shows old/new values |
| Edit conflict | Same draft open in two tabs | Save in tab 1, then save in tab 2 | Tab 2 refused: 'This record changed. Reload it before saving.' |
| Validity date set automatically | Settings validity 30 days | Create and save a quotation without Valid until | Commercial tab shows Valid until = today + 30; back-dated quotation still counts from today |
| Price list pricing | Customer has a price list with a lower price for product P | Add P to a new quotation; save; open Prices & margin | Expected: line takes the price-list price (source = price list). Note what the screen fills in |
| Duplicate | A confirmed order | Actions > Duplicate | New draft with a new number, today's date, same customer, header and lines; no deliveries, invoices or payments |
| Archive / restore | A cancelled order | Actions > Archive, then find it and Restore | 'Archived. It keeps its number and its history; it is out of the list.'; Restore puts it back |
| Delete a draft | A draft | Actions > Delete > Delete | Dialog warns about numbering gaps; draft removed; on a confirmed order Delete is disabled (API: 'Only a draft can be deleted. Cancel it, or archive it.') |
| A draft and a confirmed order | Print menu on each | Draft offers the quotation; confirmed offers the sales order; PDF shows customer TRN, lines, VAT 5% and totals in AED; Arabic labels when printed in Arabic | |
| Smart buttons | An order with a delivery and an invoice | Click Invoices, Deliveries, Journal entry, Customer | Each opens its record (several = a picker); a count with nothing behind it shows a dash |
| Sidebar figures | Customer with credit limit 10,000 and an open invoice | Open a quotation for the customer | Credit limit, Outstanding and Available shown; recent sales listed; margin % shown red when negative |
| Confirm order | Valid draft, customer within credit | Confirm order | State Confirmed, title Sales order, moves to Sales orders list; a draft delivery order raised from the default warehouse; credit reserved; History 'sale.confirm' |
| Confirm with no lines / zero total | Draft with no lines | Confirm order | Refused: 'Add at least one line before confirming.' |
| Confirm an expired quotation | Valid until = yesterday | Confirm order | Refused: 'This quotation expired on <date>. Extend its validity to confirm it.' |
| Blocked / held customer | Customer on hold 'Sales orders' or blacklisted | Confirm order | Refused: 'Customer transaction hold: Sales orders. <reason>' or '<name> is blacklisted: <reason>.' |
| Free line needs a reason | Line with 100% discount (net 0) | Confirm order | Refused: '<description> is given away free: say why on the line.' (there is no field for the reason on screen |
| Confirm retried with the same key (API) | POST transition confirm twice with the same 'key'; then with the same key and different body | Second identical call returns the same order; different body -> 'That request key was already used for a different confirmation.' |
Quotation tab
| Action | When | What you do | What happens |
|---|---|---|---|
| Send quotation | Draft with lines, not expired | Quotation tab > Send quotation | 'Quotation sent: a new version is frozen.'; version 1 listed as Sent with a reference hash; customer's acceptance link shown |
| Send again without change | Version 1 sent | Send quotation again with no edits | Refused: 'Version 1 already says exactly this. Send that one again from the mail screen.' |
| Edit after sending supersedes | Version 1 sent | Edit a price, save; send again | Version 1 becomes Replaced; version 2 Sent; old link says the version has been replaced |
| Record acceptance by staff | Version sent | Accepted by + Evidence; Record acceptance | 'Acceptance recorded.'; version Accepted with name · recorded |
| Edit an accepted quotation | Version accepted | Edit a line and save | Refused: 'The customer accepted version n of this quotation. Revise it to change it.'; Revise -> 'Quotation open for changes again.' |
| Apply a template | An active template with 2 lines, 1 optional product, 15 days, terms | Choose template; Apply template | 'Template applied.'; lines added, optional product listed, Valid until = today + 15, notes = terms (if empty) |
| Optional products | Add an optional product; Save optional products; then Add to quotation | Listed outside the total; after Add it becomes a line, totals change and the option shows Added |
Public acceptance page
| Action | When | What you do | What happens |
|---|---|---|---|
| Customer accepts by link | Fresh link from FN-022 | Open the link in a private window; enter name; Accept quotation | Page shows lines, untaxed, tax, total; after accepting: 'Accepted by <name> on <date>. Thank you.'; the quotation shows Accepted · by link |
| Expired or replaced link | A superseded version link; an expired one | Open each link | Replaced: 'This version has been replaced by a newer offer. Please use the latest link.'; expired: 'This offer expired on <date>. Please ask for a renewed quotation.'; no Accept form |
Prices & margin tab
| Action | When | What you do | What happens |
|---|---|---|---|
| Line price review | Lines with list price, override and cost | Open Prices & margin | Per line: list price, unit price, 'Typed over the list' when overridden, discount, cost and margin % (margin hidden without margin rights) |
| Discount over the limit holds | Settings: largest discount without approval = 10% | Line discount 15%; Confirm order | Refused: 'This quotation needs price approval before it is confirmed: A 15% discount is over the 10% allowed without approval.' |
| Request approval | FN-032 quotation | Why this price? + Request approval | 'Approval requested.'; status 'Waiting for price approval'; appears in Price approvals; Confirm says 'Waiting for price approval: ...' |
| Change after approval | Prices approved | Edit the price or quantity, save, Confirm | Approval no longer matches: confirm needs a new approval (approve of a changed quote -> 'The quotation has changed since this was asked for; ask again.') |
| Update prices | Price list changed after the quotation was priced | Confirm (refused), then Update prices, Confirm | Confirm refused 'Prices on the list have changed since this quotation was priced...'; Update prices -> 'Prices updated from the price list.'; then confirms |
| Margin control Warn vs Hold | Settings minimum margin 20%; a line at 10% margin | Margin control = Warn, check; then Hold, Confirm | Warn: shown in Price warnings, confirm allowed; Hold: confirm refused until approved |
| Hard price rules | Product minimum sale price 50; list row locked | Price 40; or change a locked price; Confirm | Always held: '40.00 is under the product's minimum sale price of 50.00.' / 'The price list locks this price at ...' |
Credit holds
| Action | When | What you do | What happens |
|---|---|---|---|
| Credit check at confirm | Customer policy Hard block, limit 1,000; quotation 5,000 | Confirm order | Refused with 'Credit check: This takes exposure to ..., ... over the limit of 1,000.00. Ask for a credit override (Finance > Credit control)...'; quotation listed in Credit holds with Why |
Sales order record
| Action | When | What you do | What happens |
|---|---|---|---|
| Delivery order raised | Confirmed order with stocked lines | Click Deliveries smart button | Opens the draft delivery (Inventory) from the order's warehouse; validating it in Inventory sets Delivery status |
| Raise a missing delivery | Company with 2 warehouses, order without Ship from, no delivery | Deliveries button > choose warehouse > Raise the delivery order | Delivery order created and opened; a second attempt -> 'This order already has a delivery order.' |
| Deliver (no delivery order) | Confirmed order of a company without warehouses | Deliver | State Delivered; a delivery journal (COGS / inventory) posted; with stock short -> 'Insufficient stock for <CODE>: available n.' |
| Reset to draft | Confirmed order, delivery not validated | Reset to draft | With a draft delivery waiting -> 'Cancel delivery <WH/OUT/..> before returning this document to draft.'; after cancelling it -> back to Draft, credit released |
| Cancel order | Draft or confirmed order | Cancel | State Cancelled; credit reservation released; drop-ship POs cancelled with it; posted documents -> 'Posted documents require a reversal.' |
| Create invoice - full | Confirmed order, invoicing policy Ordered | Create invoice; keep quantities; Raise the invoice | Draft customer invoice INV-... opens with the order's lines; order Invoice status = Fully invoiced after posting; Invoices button counts 1 |
| Create invoice - partial | Order of 10 units | Create invoice; Invoice now = 4; raise; then Create invoice again | First invoice for 4; second dialog shows Already invoiced 4, Left 6; Invoice status Partially invoiced |
| Invoice on delivered quantities | Policy Delivered, 10 ordered, 6 delivered | Create invoice; try 8 | Refused: '<line>: only 6 can be invoiced now - 6 of 10 delivered, 0 already invoiced.'; with nothing delivered the dialog says nothing more can be invoiced |
| Over-invoicing refused | Fully invoiced order | Create invoice | Dialog: 'Everything on this order has already been invoiced.' |
| Delivery & invoicing tab | Partly delivered and invoiced order | Open the tab | Per line: Ordered, Delivered, Returned, Invoiced, Credited, To deliver, To invoice and the invoicing policy |
Availability tab
| Action | When | What you do | What happens |
|---|---|---|---|
| Promise delivery dates | Draft or confirmed order with stocked lines | Open Availability; Promise these dates | Available now / to promise / earliest per line; 'Delivery dates promised.'; the delivery's scheduled date follows the promise |
Changes tab
| Action | When | What you do | What happens |
|---|---|---|---|
| Change order - reduction | Confirmed order 10 units, nothing delivered | Request change: quantity 8 | Applied at once (no approval): 'Change applied.'; order total updated; change listed as Applied |
| Change order - increase needs approval | Confirmed order | Request change: price up or quantity up | 'Change order recorded.' Waiting for approval; appears under Price approvals > Change orders waiting; another user with confirm rights approves -> Applied |
| Cancel open balance | Order 10, 6 delivered | Cancel what is still to come: Reason 'Cannot supply'; Cancel open balance | 'Open balance cancelled.'; 4 cancelled; Delivery status Fully delivered; with 'Other' and no note -> 'This reason needs a note.' |
Returns tab
| Action | When | What you do | What happens |
|---|---|---|---|
| Create return | Delivered order | Coming back 1; reason Defective; Create return | 'Return drafted. Authorise and receive it in Inventory > Returns.'; return listed with status |
| Credit note from a received return | Return received in Inventory | Create credit note | Draft credit note opens tied to the invoice lines; after posting, Credited column on the order updates |
Down payments & milestones
| Action | When | What you do | What happens |
|---|---|---|---|
| Down payment invoice | Confirmed order untaxed 10,000 | Percentage 20; Create down payment invoice | 'Down payment invoice raised.' Draft invoice 2,000 + VAT; listed under Down payments; the final invoice deducts it ('Deducted on') |
| Milestone billing | Order with Invoicing policy = Milestones | Add steps 30/70; Save steps; Mark reached with proof; Invoice this step | 'Billing steps saved.', 'Step reached.', 'Step invoiced.'; invoice for 30%; unreached step -> 'Only a reached step is invoiced.' |
Customer invoice
| Action | When | What you do | What happens |
|---|---|---|---|
| Post invoice | Draft invoice from FN-050 | Post invoice | State Posted; journal: Dr receivable total, Cr revenue net, Cr output VAT 5%; payment badge Not paid; e-invoice handed over where e-invoicing is on |
| New invoice without an order | Customer invoices > New invoice; customer and a service line; Save; Post invoice | Posts like any invoice; Orders smart button shows a dash | |
| Record receipt (partial) | Posted invoice 1,050.00 | Record receipt 500 to a bank account | Payment badge Partially paid; Outstanding 550.00; Payments tab lists the receipt with Open / Reverse payment |
| Reverse invoice | Posted invoice with a receipt | Reverse; then reverse the payment first; then Reverse | First refused 'Reverse document payments first.'; after reversing the receipt the invoice is Reversed and its journal reversed |
| Credit this invoice | Posted invoice | Credit this invoice | Draft credit note opens with all the invoice lines, Against invoice set, note 'Credit of INV-...' |
Customer invoices list
| Action | When | What you do | What happens |
|---|---|---|---|
| Register receipt for several invoices | Two posted invoices of the same customer | Select both; Register receipt | One payment settles both; mixing customers -> 'One payment settles one partner's charges...' |
Credit note
| Action | When | What you do | What happens |
|---|---|---|---|
| Credit note limits | Invoice for 5 units, earlier note of 2 | Credit note against it for 4 | Refused: 'INV-... has only 3 of <CODE> left to credit.' |
| Approve and post note | Draft credit note | Approve note, then Post note | Approved, then Posted; journal reverses receivable, revenue and VAT; goods return via the return receipt, not the note |
Sales settings
| Action | When | What you do | What happens |
|---|---|---|---|
| Change and audit settings | sales.configure | Change validity to 15, margin control Warn; Save | 'Sales settings saved.'; Audit shows 'sales.settings' with before/after values; second tab save -> conflict |
| Customer PO required | Customer PO number = Required to confirm | Confirm a quotation without PO | Refused: 'This company needs the customer's PO number before an order is confirmed.' |
| Repeated customer PO | Repeated customer PO = Block | Two quotations for the same customer with PO-TEST-001; confirm the second | Refused: 'Customer PO PO-TEST-001 is already on SO-...'; with Warn only a warning in the Quotation tab |
| Delivery tolerances | Over-delivery 10%, under-delivery 5% | In Inventory validate a delivery of 11.5 of 10; then 9.6 of 10 | 11.5 refused 'Only 11 may ship against 10 ordered - the over-delivery tolerance is 10%.'; 9.6 closes the line without a backorder |
| Ship complete | Shipping policy = When all products are ready | Validate a part delivery with backorder | Refused: 'This company ships orders complete. Deliver everything, or cancel what will not ship.' |
| Credit re-check at dispatch / invoicing | Ticks on; customer now over a Hard block limit | Validate the delivery; post the invoice | Refused with 'Credit check: the customer is <n> over the limit of <limit>. Ask for a credit override before this goes further.'; order placed on credit hold |
| Drop-ship evidence | Tick 'A drop shipment needs the supplier's shipment reference' | Validate a drop shipment with no reference | Refused: 'Enter the supplier's shipment reference (waybill or tracking number) to confirm the drop shipment.' |
Quotation templates
| Action | When | What you do | What happens |
|---|---|---|---|
| Create and archive a template | sales.configure | New template code, name, 2 lines; Save; set Archived | Saved and offered in the Quotation tab; once Archived it is no longer offered |
Return and cancellation reasons
| Action | When | What you do | What happens |
|---|---|---|---|
| Standard reasons and new reason | New company | Open the screen; add a cancellation reason 'late_install' needing a note | Standard set present (7 return, 4 cancel); new reason offered in Cancel open balance and requires a note |
Commission plans / Commissions
| Action | When | What you do | What happens |
|---|---|---|---|
| Commission statement | Plan 2.5% for everyone; posted invoices from orders with a salesperson | Commissions for this month | Commission = 2.5% of untaxed per salesperson; a credit note shows as clawback (negative) |
Blanket agreements
| Action | When | What you do | What happens |
|---|---|---|---|
| Create and activate an agreement | User A drafts, user B activates | A: New agreement, customer, period, 2 products; Save. B: Activate | 'Agreement saved.', then 'Agreement active.' with Activated by B; Released / Left per product |
| Close an agreement | Active agreement | Close | 'Agreement closed.'; orders released against it afterwards are refused: 'Agreement SA-... is closed, so nothing can be released against it.' |
Reports
| Action | When | What you do | What happens |
|---|---|---|---|
| Sales analysis and open orders | Posted invoices and open orders | Open R017 for this month; open R019 | R017 lines match posted invoices less credit notes (untaxed, AED); R019 shows To deliver / To invoice matching each order's tab |
| Gross margin needs margin rights | User without sales.margin.reveal / product.cost.view | Open Reporting > Gross margin (direct link) | Menu hidden; direct call refused: 'Gross margin needs the right to see sales margins.' |
| Delivery performance and conversion | Orders with promised dates; sent quotations | Open R020 and Quotation conversion | On time / In full / OTIF per order; conversion shows each sent quotation and its outcome |
Applications > Sales > Fields
| Action | When | What you do | What happens |
|---|---|---|---|
| Branch field Required | Branch mode = Required | Confirm a quotation without a branch | Branch shows *; Confirm refused 'Choose a branch: this company requires one on every sales order.'; impact preview lists drafts without a branch |
| Branch field Hidden | Branch mode = Hidden, derivation 'No branch' | Open a new quotation; send a branch via API | Field not shown; existing documents keep their branch read-only; API value refused 'Branch is turned off for sales documents in this company.' |
| Hidden blocked by impact | A branch with its own numbering | Try to set Branch to Hidden with 'No branch' | Refused with the impact reason '<n> active branch(es) number their own documents, so a sales document needs a branch to take a number.' |
| Customer PO / Delivery date / Sales team / Incoterm place modes | Admin rights on Applications | Set each to Hidden, then Required | Hidden: field gone on new orders; Required: confirm refused '<label> is required by this company before this step.' |
Applications > Sales > Features
| Action | When | What you do | What happens |
|---|---|---|---|
| Branch on sales documents switch | Turn the feature off and on | Off hides the Branch field everywhere on sales documents; listed capabilities show their status (Commission accrual = planned) |
Sales dashboard
| Action | When | What you do | What happens |
|---|---|---|---|
| Dashboard figures | Some real orders | Open Sales > Dashboard | Expected: figures from the company's orders. Check the footer note - the page currently shows sample figures |