Tutorial: Taking Sales and Processing Quotes
This comprehensive tutorial guides you through the complete sales workflow, from creating quotes to payment reconciliation. This is the primary revenue-generating process in the system.
Important
Critical Requirement: Every sale MUST have a valid charge code. Have your charge code ready before starting!
—
What You’ll Learn
By the end of this tutorial, you’ll understand:
The three-tier quote system (draft/saved/completed)
How to browse and add items to quotes
Charge code validation (critical accounting gate)
The difference between saving and processing quotes
How to process quotes into completed sales
Payment vs reconciliation (isPaid flag)
How to mark sales as paid for accounting
How to view and export sales reports
—
Prerequisites
Before You Start
- Required:
Any user role (User, Manager, or Admin)
Valid charge code you’re authorized to use
Items in inventory to sell
- What You’ll Need:
Charge code: MUST be valid (check with your department)
Customer information (name, email, department) - if saving quote
List of items and quantities needed
- Important for Basic Users:
You can only use charge codes assigned to you
Check with admin which codes you’re authorized for
Cannot access Reports page (managers/admins only)
Estimated Time: 5-10 minutes per sale
—
Understanding the Sales Lifecycle
Before We Start: The Three-Tier System
The system has THREE types of quotes/sales:
- 1. Draft Quote (Temporary Shopping Cart)
Automatically created when you add first item
Tied to your browser session
Expires after 4 hours of inactivity
Items NOT reserved (stock can change)
Quick transactions, no saving needed
- 2. Saved Quote (Persistent, Named)
Explicitly saved with a name
Stored in database permanently
Can be edited, duplicated, deleted
Used for quotes needing approval
Reusable for recurring orders
- 3. Completed Sale (Final Transaction)
Result of processing a quote (draft or saved)
Stock immediately deducted
Immutable (cannot be edited)
Charge code validated and locked in
Full audit trail created
- 4. Paid Sale (Reconciled)
Completed sale marked as paid
isPaidflag set to trueIndicates accounting reconciliation complete
Shows in reports as paid for billing
Important
Key Distinction:
Completed sale = Items left stockroom (stock deducted)
Paid sale = Reconciled to charge code for accounting (isPaid flag)
These are SEPARATE steps!
—
Step 2: Browse and Search for Items
Finding Items to Sell
In the Browse Items tab:
Search Bar: Type item name, SKU, or category - Real-time filtering as you type - Example: Type “microscope” to find all microscopes
Results Show: - Item name and SKU - Current stock level (critical!) - Location (where to find it) - shown during processing - Unit price (with VAT) - Category badge - Stock status indicator:
🟢 In Stock (>5 units available)
🟡 Low Stock (1-5 units)
🔴 Out of Stock (0 units) - cannot add to cart
Example Search Results:
Search: "microscope"
Results:
┌──────────────────────────────────────────────────────┐
│ Laboratory Microscope │
│ SKU: LAB-MICRO-001 | Category: Lab Equipment │
│ Stock: 12 pieces 🟢 | Price: £495.00 (inc VAT) │
│ Location: Lab Store, Shelf 3A │
│ [Add to Quote] │
└──────────────────────────────────────────────────────┘
Understanding Stock Indicators
- In Stock (Green):
Plenty available (>5 units or above minimum stock)
Safe to add to quote
- Low Stock (Yellow):
Limited availability (1-5 units)
Check with manager before large orders
May trigger reorder
- Out of Stock (Red):
0 units available
“Add to Quote” button disabled
Contact manager to restock
Warning
Stock Validation: The system validates stock when you add items AND when you process the quote. Stock can change between adding and processing!
—
Step 3: Add Items to Your Quote
Adding Items to Draft Quote
For each item you want to sell:
Enter quantity in the “Qty” field - Whole numbers for countable items (5 chairs) - Decimals for measured items (2.5 meters of cable)
Click “Add to Quote” button
System validates: - Is quantity available in stock? - Is quantity positive number? - Is item active?
If validation passes: - Item added to your draft quote - Appears in “Current Quote” tab - Running total updates
Example Adding Item:
Item: Safety Goggles
Stock Available: 25 pieces
Price: £9.60 (inc VAT)
Enter Quantity: [10] ← Type quantity
[Add to Quote] ← Click button
✓ Item added to quote
Subtotal: £96.00 (10 × £9.60)
If Insufficient Stock:
❌ Cannot add to quote
Requested: 30 pieces
Available: 25 pieces
Please reduce quantity or contact inventory manager
- What Happens:
Draft quote auto-created (if first item)
Item added with quantity and current price
Price snapshot taken (won’t change if item price changes later)
VAT calculated automatically
Continue Adding Items
Repeat Step 3 for each item:
Search for next item
Enter quantity
Click “Add to Quote”
Item appears in list
Your draft quote builds up like a shopping cart.
—
Step 4: Review Your Current Quote
Viewing the Quote
Click “Current Quote” tab to see:
- Quote Details:
List of all items
Quantities
Individual prices
Subtotals per item
Running total (updates automatically)
Example Current Quote:
Current Draft Quote
═══════════════════
Created: 29/01/2025 10:30
Items (3):
┌────────────────────────┬─────────┬───────────┬────────────┐
│ Item │ Qty │ Price │ Subtotal │
├────────────────────────┼─────────┼───────────┼────────────┤
│ Laboratory Microscope │ 2 │ £495.00 │ £990.00 │
│ Safety Goggles │ 10 │ £9.60 │ £96.00 │
│ Lab Coat Size M │ 5 │ £24.00 │ £120.00 │
└────────────────────────┴─────────┴───────────┴────────────┘
Total: £1,206.00 (inc VAT)
Modifying Quantities
To change quantities:
Click in quantity field
Type new quantity
Press Enter or click outside field
Subtotal updates automatically
System re-validates against current stock.
Removing Items
To remove item from quote:
Click “Remove” button next to item
Item removed immediately
Total recalculates
Note
Draft Quote Auto-Save: Changes are saved automatically. No need to click “Save” unless you want to create a persistent saved quote.
—
Step 5: Understanding Charge Codes
Why Charge Codes Matter
Danger
STOP! Before processing your quote, you MUST have a valid charge code.
Every sale requires a charge code - this is the accounting gate that links the sale to departmental budgets.
What is a Charge Code?
A charge code is an alphanumeric code that links your sale to:
Departmental budget: Which department is paying
Grant funding: Research project or sponsored work
Cost center: Internal cost allocation
Financial account: For accounting and billing
- Examples:
“CS-2025-Q1” - Computer Science dept, Q1 budget
“BIO-LAB-SPRING” - Biology lab supplies, Spring semester
“GRANT-NHS-2024-001” - NHS research grant
Getting Your Charge Code
- Basic Users:
You can ONLY use charge codes assigned to you
Contact your administrator to see which codes you have
Cannot use unauthorized codes (system will reject)
- Managers/Admins:
Can use ANY charge code in the system
No restrictions
- How to Find Your Codes:
Ask your department administrator
Check previous sales you’ve made (Reports page)
Department finance office will have list
Charge Code Validation
When you enter a charge code, the system checks:
1. Exists: Code must be in database 2. Time Valid: Not expired (validUntil date) or not yet active (validFrom date) 3. Not on Hold: Code not temporarily frozen (budget freeze, overspent, etc.) 4. Category OK: Code allowed for item categories in your quote 5. User Authorized: You’re authorized to use this code (basic users only) 6. PIN (if required): Some codes need PIN entry
Example Validation:
Charge Code: CS-2025-Q1
✓ Code exists
✓ Valid from 01/01/2025 to 31/03/2025
✓ Not on hold
✓ No category restrictions
✓ User authorized (assigned to you)
✓ No PIN required
→ Charge code valid! ✓
Common Charge Code Errors
- “Charge code does not exist”
Typo (codes are case-sensitive!)
Code not created yet
Contact admin
- “Charge code has expired”
validUntil date passed
Request renewal or new code
- “Charge code is on hold”
Budget freeze or approval pending
Check hold reason in error message
Use alternative code or wait for release
- “This charge code cannot be used for these items”
Category exclusion rule
Example: Can’t use “Office Supplies” code for IT equipment
Use appropriate code for item category
- “You are not authorized to use this charge code”
Code restricted to certain users
Contact admin to request access
Tip
Pro Tip: Keep a list of your authorized charge codes handy. Saves time and prevents errors!
—
Step 6: Choose Your Path
You now have TWO options:
Option A: Save Quote for Later
- When to use:
Quote needs approval before purchase
Recurring order you’ll reuse
Not ready to complete sale yet
Want to keep quote for reference
- What happens:
Quote saved to database with name
Can edit/delete/duplicate later
No stock deduction
Can process into sale anytime
→ Go to Step 7A (Saving Quotes)
Option B: Process Quote into Sale Now
- When to use:
Ready to complete transaction immediately
Items leaving stockroom now
Have charge code and authorization
- What happens:
Stock immediately deducted
Sale becomes immutable
Charge code validated
Full audit trail created
→ Go to Step 7B (Processing Quotes)
Important
Decide Carefully! Processing a quote is irreversible. Stock is deducted immediately and cannot be undone (only refunded).
—
Step 7A: Saving a Quote (Option A)
Creating a Persistent Quote
In “Current Quote” tab, click “Save Quote” button
Fill in quote details:
- Quote Name (required):
Descriptive name for easy finding
Example: “Biology Lab Equipment - Spring 2025”
- Customer Information:
Name: Customer or department name
Email: Contact email (optional)
Department: Department or project name
- Notes (optional):
Purpose of quote
Special instructions
Approval status
Click “Save” button
Example Save Quote Form:
Save Quote
══════════
Quote Name: Biology Lab Spring Equipment
Customer Details:
Name: Dr. Sarah Smith
Email: s.smith@university.ac.uk
Department: Molecular Biology
Notes: Equipment for MB201 practical sessions
Approved by Head of Department
[Cancel] [Save Quote]
What Happens
Quote saved to database
Appears in “Saved Quotes” tab
Draft quote cleared from current session
Stock NOT deducted (items still available for others)
Can process into sale later
Viewing Saved Quotes:
Click “Saved Quotes” tab
See list of all your saved quotes
Options for each quote: - View: See details - Edit: Modify items or details - Duplicate: Create copy - Delete: Remove quote - Process: Convert to sale (see Step 7B)
—
Step 7B: Processing a Quote into a Sale (Option B)
Danger
CRITICAL STEP: This is irreversible! Stock will be deducted immediately. Double-check everything before proceeding.
The Processing Workflow
Step 7B-1: Enter Charge Code
In “Current Quote” tab, find “Charge Code” field
Enter your charge code (example: “CS-2025-Q1”)
System validates code (see Step 5)
Wait for validation confirmation
Validation Feedback:
Charge Code: [CS-2025-Q1___________]
Validating... ⏳
✓ Charge code valid!
Ready to process quote.
If Validation Fails:
❌ Charge code error:
"This charge code has expired (valid until 31/12/2024)"
Please use a current charge code or contact your
department administrator.
Step 7B-2: Final Review
Before clicking “Process Quote”, verify:
Pre-Process Checklist:
☐ All items correct?
☐ Quantities accurate?
☐ Charge code valid?
☐ Ready for stock deduction?
☐ Customer details (if needed) entered?
Step 7B-3: Click “Process Quote”
Click “Process Quote” button
Confirmation dialog appears:
⚠ Confirm Sale Processing
This will:
- Create completed sale (immutable)
- Deduct stock immediately
- Charge to: CS-2025-Q1
- Total: £1,206.00
This action cannot be undone.
[Cancel] [Confirm Process]
Click “Confirm Process”
Step 7B-4: Processing Happens (Atomic Transaction)
The system performs (all or nothing):
- 1. Creates Sale Record:
Generates unique sale ID: S202501291345
Status:
completedisPaid:false(payment reconciliation comes later)Charge code: Locked in
Processed by: Your user ID
Timestamp: Current date/time
- 2. Creates Sale Item Snapshots:
Each item captured with: * Item name, SKU (immutable snapshot) * Unit price at time of sale * VAT rate at time of sale * Quantity sold * Location (for picking list) * Unit (measurement type)
- 3. Deducts Stock:
Each item’s
currentStockreducedExample: 12 pieces → 10 pieces (sold 2)
- 4. Creates Stock Movement Records (Audit Trail):
Type: ‘out’ (stock leaving)
Previous stock → New stock
Reason: “Sale #S202501291345”
Performed by: Your user ID
Timestamp: Exact time
- 5. Clears Draft Quote:
Draft quote removed from session
Ready for next transaction
Example Stock Movement Created:
Item: Laboratory Microscope (SKU: LAB-MICRO-001)
Stock Movement Record:
───────────────────────
Type: out
Previous Stock: 12 pieces
New Stock: 10 pieces
Quantity Sold: 2 pieces
Reason: "Sale #S202501291345"
Performed By: user@university.ac.uk
Timestamp: 29/01/2025 13:45:32
Step 7B-5: Confirmation
Understanding Location and Unit Information
When you process a quote, the system captures location and unit information for each item:
- Location Field:
Shows where item is physically stored
Example: “Lab Store, Shelf 3A, Bin 12”
Included in picking lists (printable)
Helps staff locate items quickly
- Unit Field:
Shows measurement type
Example: “pieces”, “meters”, “kilograms”
Prevents quantity confusion
Example: “2.5 meters” vs “2.5 pieces”
Printing Picking List:
Click “Print Picking List” after processing
PDF generated with: - Sale ID and date - Customer details - Item list WITH locations - Quantities and units - Instructions for staff
Example Picking List:
╔════════════════════════════════════════════════════╗
║ PICKING LIST - SALE #S202501291345 ║
╠════════════════════════════════════════════════════╣
║ Date: 29/01/2025 13:45 ║
║ Processed By: user@university.ac.uk ║
║ Charge Code: CS-2025-Q1 ║
╠════════════════════════════════════════════════════╣
║ ║
║ ITEMS TO PICK: ║
║ ║
║ ☐ Laboratory Microscope (SKU: LAB-MICRO-001) ║
║ Quantity: 2 pieces ║
║ Location: Lab Store, Shelf 3A, Bin 05 ║
║ ║
║ ☐ Safety Goggles (SKU: SAFE-GOGG-001) ║
║ Quantity: 10 pieces ║
║ Location: Safety Equipment Room, Shelf 1B ║
║ ║
║ ☐ Lab Coat Size M (SKU: LAB-COAT-M) ║
║ Quantity: 5 pieces ║
║ Location: Clothing Storage, Rack 3 ║
║ ║
║ Total Value: £1,206.00 ║
╚════════════════════════════════════════════════════╝
Tip
For Staff: Use the picking list to collect items from storage. Check off each item as you pick it.
—
Step 8: Understanding Payment Reconciliation
Sale Completed vs Sale Paid
After processing (Step 7B), your sale is completed but not yet paid.
What This Means:
- Completed Sale (
status = 'completed',isPaid = false): ✓ Items have physically left the stockroom
✓ Stock deducted from inventory
✓ Charge code recorded
❌ NOT yet reconciled for accounting/billing
- Paid Sale (
isPaid = true): ✓ All of the above
✓ PLUS: Accounting reconciliation complete
✓ Charge code billing finalized
✓ Shows in “Paid” reports for invoicing
Why Separate?:
Workflow: Physical distribution happens immediately, accounting reconciliation happens later (days/weeks)
Approval: Sales may need management approval before marking as paid
Billing Cycle: Month-end reconciliation, inter-departmental billing
Audit Trail: Clear separation between inventory movement and financial settlement
Who Marks Sales as Paid?
Basic Users: Cannot mark as paid (no access to Reports page)
Managers/Admins: Mark sales as paid during reconciliation
- Typical Workflow:
Day 1: User processes sale (completed, unpaid)
Day 5: Manager reviews sales in Reports
Day 7: Manager marks sale as paid after reconciliation
—
Step 9: Marking a Sale as Paid (Managers/Admins Only)
Note
Basic users: Skip this step. Only managers and admins can mark sales as paid.
When to Mark as Paid
- Mark a sale as paid when:
You’ve reconciled it to the charge code budget
Accounting has approved the transaction
Ready for inter-departmental billing
Month-end reconciliation complete
Accessing Sales Reports
Navigate to Reports page (sidebar)
You’ll see sales report interface
Filtering for Unpaid Sales
To find sales needing reconciliation:
Set filter: “Payment Status: Unpaid Only”
Optional filters: - Charge Code: Specific code - Date Range: Start and end dates - User: Who created the sale
Click “Apply Filters”
Example Filter:
Filters:
├─ Payment Status: Unpaid Only ✓
├─ Charge Code: CS-2025-Q1
├─ Date Range: 01/01/2025 - 31/01/2025
└─ User: All users
Results: 8 unpaid sales
Marking Individual Sale as Paid
For each sale to reconcile:
Locate sale in the list
Click “Mark as Paid” button next to sale
Confirmation dialog appears:
Mark Sale as Paid
Sale ID: S202501291345
Date: 29/01/2025
Total: £1,206.00
Charge Code: CS-2025-Q1
This marks the sale as reconciled for accounting.
[Cancel] [Confirm Mark as Paid]
Click “Confirm Mark as Paid”
- What Happens:
isPaidflag set totrueSale shows in “Paid” filter
Available for billing reports
Stock NOT affected (already deducted when sale was completed)
Bulk Marking as Paid
To mark multiple sales as paid at once:
Select checkboxes next to sales
Click “Mark Selected as Paid” button (top of list)
Confirm bulk action
Useful for: Month-end reconciliation of all sales for a charge code
—
Step 10: Viewing and Exporting Sales Reports
Sales Report Features
The Reports page provides:
- Filters:
Charge code
Date range
Payment status (all, paid, unpaid)
User who created sale
- Grouping:
By Charge Code: See totals per charge code
By Date: Daily/weekly/monthly summaries
By User: Who’s creating sales
- Export Options:
CSV: For spreadsheet analysis
Excel (XLSX): Formatted with totals
PDF: Printable reports
Viewing Charge Code Summaries
To see spending by charge code:
Select “Group by Charge Code” option
Report shows totals per code
Example Output:
Sales Report - Grouped by Charge Code
Period: 01/01/2025 - 31/01/2025
Charge Code: CS-2025-Q1
─────────────────────────
Total Sales: 15
Total Amount: £12,450.00
Paid: 12 sales (£10,200.00)
Unpaid: 3 sales (£2,250.00)
Charge Code: BIO-LAB-SPRING
────────────────────────────
Total Sales: 8
Total Amount: £8,930.00
Paid: 8 sales (£8,930.00)
Unpaid: 0 sales (£0.00)
Exporting to Excel
Apply desired filters
Click “Export to Excel” button
File downloads:
sales-report-20250129.xlsx
- Excel File Contains:
Sale ID, Date, User
Customer details
Items with quantities and prices
Subtotals and VAT
Charge code
Payment status
Totals by charge code (if grouped)
- Use For:
Charge code billing
Financial reconciliation
Department budget tracking
Inter-departmental invoicing
—
Common Scenarios and Tips
Scenario 1: Customer Changed Mind
- Before Processing:
Just remove items from draft quote or delete saved quote
No impact on stock
- After Processing (sale completed):
Cannot “undo” a sale
Use refund workflow (contact admin)
Refund returns items to stock with note
Scenario 2: Wrong Charge Code Used
Problem: Processed sale with wrong charge code
- Solution:
Cannot change charge code after processing
Contact admin to: * Refund original sale * Create new sale with correct charge code
Add notes explaining the correction
Prevention: Always double-check charge code before clicking “Process Quote”!
Scenario 3: Recurring Monthly Sales
Best Practice: Save quote as template
Create quote with all items
Save quote with name: “Monthly Lab Supplies - Template”
Each month: - Find saved quote - Click “Duplicate” - Modify quantities if needed - Process with current month’s charge code
Scenario 4: Large Orders Need Approval
Workflow:
Create quote and add all items
Save quote (don’t process yet!)
Name it clearly: “Large Order - Pending Approval - £5,000”
Email manager: “Quote saved, please review”
Manager reviews saved quote
When approved, manager processes quote with charge code
—
Troubleshooting
Common Issues
- “Cannot add item - insufficient stock”
Check current stock level
Reduce quantity or wait for restock
Contact manager to create purchase order
- “Charge code validation failed”
See “Common Charge Code Errors” in Step 5
Verify code spelling (case-sensitive!)
Check code validity dates
Contact admin if authorized user issue
- “Cannot process quote - items no longer in stock”
Stock changed since you added items
Someone else sold same items
Review quote and remove out-of-stock items
Or reduce quantities to available amounts
- “Cannot access Reports page”
Basic users don’t have access to Reports
Only managers and admins can mark sales as paid
Contact manager for sales reporting needs
- “Draft quote disappeared”
Draft quotes expire after 4 hours
Session ended (logged out)
Use “Save Quote” feature for persistent quotes
—
Next Steps
After Completing This Tutorial
- You now know:
✓ Three-tier quote system (draft/saved/completed)
✓ How to browse and add items
✓ Charge code validation (critical!)
✓ Difference between saving and processing
✓ How to process quotes into sales
✓ Payment vs reconciliation (isPaid)
✓ How to mark sales as paid (managers/admins)
✓ How to export sales reports
- Related Tutorials:
Tutorial: Placing Purchase Orders - Learn how to create purchase orders
Tutorial: Managing Inventory - Manage items and stock levels
- Related Guides:
Sales & Quotes User Guide - Detailed reference guide
Key Concepts and Explanations - Business logic and concepts
- Need Help?
Frequently Asked Questions (FAQ) - Frequently asked questions
—
Quick Reference Card
Sales Workflow Checklist
CREATING A SALE:
□ Navigate to Sales & Quotes
□ Browse and search for items
□ Add items to quote (draft cart)
□ Review quantities and totals
□ Have charge code ready!
□ Enter and validate charge code
□ Review pre-process checklist
□ Click "Process Quote"
□ Confirm processing
□ Print picking list (if needed)
RECONCILIATION (Managers/Admins):
□ Navigate to Reports page
□ Filter for unpaid sales
□ Review sale details
□ Click "Mark as Paid"
□ Confirm action
□ Export reports for billing
Key Reminders
Concept |
Remember |
|---|---|
Draft Quote |
Expires in 4 hours, use for quick sales |
Saved Quote |
Persistent, reusable, no stock impact |
Completed Sale |
Stock deducted, immutable, charge code locked |
Paid Sale |
Accounting reconciled (isPaid = true) |
Charge Code |
REQUIRED for all sales, validated 6 ways |
Processing |
Irreversible! Double-check first |
Location/Unit |
Shown on picking lists for staff |
Reconciliation |
Managers/admins mark as paid in Reports |