After the roasting process is completed in the Production Plan and the profile has been saved in the Profile Library, the next step is to register the roasted beans into the Warehouse Inventory so they can be sold or used for further processing (grinding, packaging, etc.).
The Roasted Bean Module acts as a bridge between:
- Production Module (roasting output)
- Warehouse Module (inventory management)
- Sales Module (for selling to customers)
📋 PHASE 1: ACCESS THE ADD ROASTED BEAN MENU
Step 1: Login & Navigation
- Log in to the Clorofile Web Admin
- Navigate to Inventory → Items
- Click the [+ Add Item] button
Step 2: Select Commodity Type
Field: “Commodities” (Required)
Dropdown options:
- Green Bean (raw coffee beans)
- Roasted Bean ← Select this
- Others
Click “Roasted Bean”
System Response:
- The form automatically changes
- Roasted-bean-specific fields appear and are integrated with the Production Module
- Fields are auto-populated from the production batch
📝 PHASE 2: COMPLETE THE ROASTED BEAN FORM (DETAILED FIELDS)
🔹 A. GENERAL INFORMATION
1. Parent Item (Optional)
Purpose: Item grouping for variants or sub-items
Use Case:
- When the roasted bean is a variant of a parent product
Example:
- Parent item: “Premium Blend Collection”
- Child items:
- “Premium Blend Light Roast”
- “Premium Blend Dark Roast”
Input: Parent item dropdown list (if available)
Tip: Leave empty if this is a standalone product
2. Roasted Bean Name (Required)
Purpose: The roasted bean product name that will appear on invoices, sales documents, and reports
Recommended Formats:
Single Origin:
[Origin] [Roast Level] [Weight]
Examples:
- “Ethiopia Yirgacheffe Medium Roast 1kg”
- “Aceh Gayo Dark Roast 500g”
Blend:
[Blend Name] [Roast Level] [Weight]
Examples:
- “House Blend Medium Dark 1kg”
- “Premium Signature Blend Light 250g”
Character Limit: 255 characters
Important: This name will appear on:
- Sales invoices
- Purchase orders
- Warehouse stock reports
- Customer receipts
3. Roasted Bean Barcode (Auto-Generated / Manual)
Format: 13 digits (EAN-13 standard)
Example: 8063105318B
Options
A. Auto-Generate (Recommended)
- Click the [?] icon next to the field
- The system generates a unique barcode
- Format: 80[random 9 digits][check digit]
- Guaranteed to be unique and EAN-13 compliant
B. Manual Input
- Enter an existing barcode (if already available)
- The system validates the EAN-13 format
- Duplicate barcodes are not allowed
Tips:
- Use a barcode scanner when entering existing barcodes
- Print barcode labels after saving the item
- Attach barcode labels to the roasted bean packaging
🔹 B. PRODUCTION REFERENCE (AUTO-POPULATED)
4. Batch Number & Name (Dropdown – Required)
Purpose: Link the roasted bean to its original production batch
Dropdown Options:
- List of all completed batches from the Production Plan
- Display format: “CL013 – Profile 003”
- CL013 = Batch Number
- Profile 003 = Profile Name
How It Works
- Click the dropdown
- Select a batch (e.g., “CL013 – Profile 003”)
- The system automatically populates the following fields:
Auto-Filled Fields:
- Roasting Date & Time
- Origin
- Species
- Variety
- Processing Method
- Roasting Level
- Roaster Name / Operator
- Machine Name
Important Notes:
- Only batches with “Completed” status appear in the dropdown
- Batches already linked to roasted beans will still appear (allowing multiple variants to be created from a single batch)
Example Flow
Production Batch CL013
- Profile: Profile 003
- Beans:
- Aceh Gayo – 5 kg
- Arabika Ciwidey – 5 kg
- Arabika Timor – 5 kg
- Robusta Lampung – 5 kg
- Total: 20 kg green beans
- Roasted output: 18 kg roasted beans (10% weight loss)
Roasted Bean Items Created from This Batch:
- “Premium Blend Medium 1kg” (barcode: 8063105318B) – Qty: 18 pcs
- “Premium Blend Medium 500g” (barcode: 8063105319C) – Qty: 36 pcs
- “Premium Blend Medium 250g” (barcode: 8063105320D) – Qty: 72 pcs
5. Roasting Date & Time (Auto-Filled)
Format: DD/MM/YYYY HH:MM
Source: tblprofile_library.completed_date + completed_time
Display Example: 10/12/2025 18:50
Editable: No (read-only)
Purpose: Traceability for freshness tracking
- Roasted beans are freshest within two weeks after roasting
- The system can generate alerts when stock approaches expiration (30–60 days)
6. Origin (Auto-Filled)
Example Values:
- Single Origin → “Ethiopia”
- Blend → “Blend” or “Multi-Origin”
Editable: No (no override allowed)
🔹 C. COFFEE CHARACTERISTICS
7. Species (Auto-Filled)
Options:
- Arabica
- Robusta
- Liberica
- Excelsa
Auto Logic
- If all beans are Arabica → “Arabica”
- If all beans are Robusta → “Robusta”
Editable: Yes
8. Variety (Auto-Filled)
Examples:
- Bourbon
- Typica
- Caturra
- Geisha
- S795
- Lini S
9. Processing Method (Auto-Filled)
Options:
- Washed / Wet Process
- Natural / Dry Process
- Honey Process
- Semi-Washed
- Anaerobic
- Mixed Processing (for blends)
Source: Bean processing method
Editable: No
10. Roast Level (Auto-Filled)
Options:
- Light Roast
- Medium-Light Roast
- Medium Roast
- Medium-Dark Roast
- Dark Roast
- Full City
- French Roast
- Italian Roast
Format Example:
- “Medium-Dark Roast / Full City”
Editable: No
🔹 D. QUALITY & OPERATOR INFORMATION
11. Cupping Score (Manual Input by cupper on Production > Cupping Library – Optional)
Range: 0–100
Example: 85.5
Source: Manual input or copied from the Cupping Library
How to Obtain the Cupping Score
Option 1: Manual Reference
- Open Production → Cupping Library
- Filter by Batch Number (e.g., CL013)
- View the average cupping score
- Copy the score into this field
Option 2: Auto-Populate (Future Enhancement)
- The system will automatically populate the average cupping score for the batch
- If multiple cupping sessions exist, the average score will be used
Quality Scale Reference:
- 90–100: Outstanding (Specialty Grade)
- 85–89.99: Excellent (Premium)
- 80–84.99: Very Good (Commercial Plus)
- 75–79.99: Good (Standard)
- Below 75: Below Standard
Use Cases:
- Marketing materials (displaying scores on product labels)
- Premium pricing justification
- Quality assurance tracking
12. Roaster Name / Operator (Auto-Filled)
Source: tblroast_production.operator_id → tblstaff.firstname + lastname
Example: “John Doe”
Editable: No
Purpose: Traceability and quality control
- Identify who roasted the batch
- Support operator performance evaluation
- Enable traceability in case of quality complaints
13. Machine Name (Auto-Filled)
Source: tblroast_production.machine_name → tblroast_machines.machine_name
Examples: “Probat P25”, “Giesen W6”, “Hartanzah Danish 03”
Editable: No
Purpose: Equipment tracking
- Maintenance correlation
- Quality consistency per machine
- Capacity planning
🔹 E. INVENTORY & SALES TRACKING
14. Container Number (Optional)
Purpose: Track storage locations within the warehouse
Format: Free text
Examples:
- “BIN-A-001” (Rack A, Bin 001)
- “ROOM-2-SHELF-3”
- “CONTAINER-RED-12”
Use Cases:
- Warehouses with multiple storage areas
- FIFO (First In, First Out) implementation
- Physical stock audits
15. Sales Number (Optional)
Purpose: Pre-assigned sales order number (if roasting is done for a specific order)
Format: SO-XXXX or custom format
Example: “SO-2025-001”
Use Cases:
- Roasting specifically for customer sales orders
- Direct fulfillment (roast-to-order)
- End-to-end traceability from sales → production → inventory
16. SKU Code (Optional)
Purpose: Stock Keeping Unit (SKU) code for inventory management
Format: Custom alphanumeric
Examples:
- “RB-ETH-MED-1KG” (Roasted Bean – Ethiopia – Medium – 1kg)
- “PREM-BLD-DRK-500” (Premium Blend – Dark – 500g)
Optional Auto-Generation Pattern:
- RB = Roasted Bean
- [Origin Code] = 3-letter origin code
- [Roast Level] = MED / DRK / LGT
- [Weight] = 1KG / 500G / 250G
Use Cases:
- Warehouse barcode scanning
- POS system integration
- Compatibility with inventory management software
17. SKU Name (Optional)
Purpose: Descriptive SKU name (may differ from the Roasted Bean Name)
Example:
- Roasted Bean Name: “Ethiopia Yirgacheffe Medium Roast 1kg”
- SKU Name: “ETH-YIRG-MED-1K”
Use Cases:
- Short internal reference codes
- POS display names
- Compact barcode label naming
🔹 F. ADDITIONAL FIELDS (STANDARD ITEM FIELDS)
18. Item Group (Optional)
Options:
- Coffee Products
- Roasted Beans
- Premium Line
- Regular Line
- Custom Groups
Purpose: Categorization for reporting and filtering
19. Unit (Required)
Default: Pcs (pieces)
Options: Kg, Pcs, Pack, Box, etc.
Important
For roasted beans, the unit used is typically Pcs (per packaging unit).
- 1 Pcs = 1 package of roasted beans (1 kg, 500 g, or 250 g).
20. Purchase Price (Optional)
Purpose: Cost or purchase price per unit
Format: IDR or other supported currency
Example: 150,000 (for 1 kg roasted beans)
Cost Calculation Basis:
- Green bean cost
- Roasting labor cost
- Energy / fuel cost
- Packaging cost
- Overhead allocation
21. Sales Price (Required for Sales)
Purpose: Selling price to customers
Format: IDR or other supported currency
Example: 250,000 (for 1 kg roasted beans)
Pricing Strategies:
- Cost-plus markup (e.g., cost × 1.67 = 40% margin)
- Market-based pricing
- Quality-based pricing (higher cupping score = higher price)
22. Tax Rate (Optional)
Options:
- VAT 11%
- VAT 12% (effective from 2025)
- Tax Exempt
- Custom rate
23. Description (Optional)
Purpose: Long description for marketing and product information
Format: Text area (rich text supported)
Recommended Content:
- Flavor profile (from cupping notes)
- Origin story
- Roast profile description
- Brewing recommendations
- Food pairing suggestions
Example:
Premium Blend Medium Roast
A carefully crafted blend of Aceh Gayo, Arabika Ciwidey, Arabika Timor, and Robusta Lampung. Roasted to a medium level to bring out chocolate, caramel, and berry notes.
Cupping Score: 86.2 (Excellent)
Flavor Profile: Chocolate, Berry, Caramel
Body: Medium, Silky
Acidity: Bright, Pleasant
Best for: Pour Over, French Press, Espresso
Roasted by: John Doe
Roast Date: 10 Dec 2025
💾 PHASE 3: SAVE ROASTED BEAN ITEM
Step 1: Review Data
Before saving, ensure that:
- ✅ The Roasted Bean Name is descriptive
- ✅ The barcode is unique (no duplicates)
- ✅ The Batch Number has been selected
- ✅ Unit is set to Pcs (or appropriate packaging unit)
- ✅ The Sales Price is entered (if the item will be sold)
Step 2: Click [Save Item]
System Process:
- Validate all required fields
- Check barcode uniqueness
- Generate item ID (auto-increment)
- Save data to the tblitems table
- Create a link to the production batch
- Initialize inventory (quantity = 0; stock import required)
- Log the activity
Step 3: Success Confirmation
- Alert: “Roasted Bean item successfully created”
- Redirect: Item list or item detail page
📦 PHASE 4: STOCK IMPORT (ADD STOCK TO WAREHOUSE)
A. UNDERSTANDING THE INVENTORY SYSTEM
Important Concept:
- Item Created ≠ Item In Stock
- After creating an item, the stock quantity remains 0 (zero)
- A Stock Import is required to add quantity to the warehouse
Inventory Flow:
Create Item → Stock Import → Stock Available → Sales / Usage
B. STOCK IMPORT – METHOD 1: MANUAL ENTRY
Step 1: Access Stock Import
Path: Inventory → Stock Import
Step 2: Click [Create Stock Import]
Step 3: Complete the Stock Import Form
1. Date (Required)
- Stock entry date
- Format: DD/MM/YYYY
- Recommended: Same as roasting date or the current date
2. Warehouse (Required)
- Select the destination warehouse
- Options may include:
- Main Warehouse
- Secondary Warehouse
- Regional Warehouse
- Custom warehouse
3. Supplier (Optional)
- For roasted beans: leave blank or select “Internal Production”
- If available, choose “Internal Roasting Production”
4. Item Details
- Select Item: Choose the newly created roasted bean
- Example: “Premium Blend Medium 1kg”
- Barcode: Auto-filled from the item
- Quantity: Enter the quantity received
Calculation Example:
- Green bean input: 20 kg
- Weight loss during roasting: ~10%
- Roasted output: ~18 kg
- Packaging: 1 kg per pack
- Total stock: 18 Pcs
5. Unit Price (Optional)
- Cost per unit (for inventory valuation)
- Calculation: Total production cost ÷ Total quantity
Example:
- Total cost: IDR 2,700,000
- Quantity: 18 pcs
- Unit price: IDR 150,000 / pcs
6. Note (Optional)
- Reference to the production batch
- Example: “Stock import from production batch CL013 – Profile 003”
Step 4: Save Stock Import
Click [Save]
System Process:
- Create stock import record
- Update warehouse stock quantity
- Create transaction log in tblgoods_transaction_detail
- Update inventory value (quantity × unit price)
Confirmation:
- Alert: “Stock successfully imported”
- Current item stock: 18 Pcs
C. STOCK IMPORT – METHOD 2: BATCH IMPORT (EXCEL)
Step 1: Download Template
Path: Inventory → Stock Import → [Download Template]
Template Columns:
- Item Code / Barcode
- Item Name
- Quantity
- Unit Price
- Warehouse
- Date
- Note
System Process
- ✅ Validate data (barcode existence, warehouse validity, etc.)
- ✅ Preview import (before commit)
- ✅ Confirm import
- ✅ Batch update inventory
- ✅ Generate stock import documents
✅ PHASE 5: VERIFY WAREHOUSE STOCK
A. CHECK STOCK – ITEM LIST VIEW
Step 1: Access Item List
Path: Inventory → Items
Step 2: Filter Roasted Beans
- Filter by: Commodity Type = “Roasted Bean”
- Search: “Premium Blend Medium”
Step 3: Review Stock Status Column
- 🟢 Green: Stock above minimum level (safe)
- 🟡 Yellow: Stock at minimum level (warning)
- 🔴 Red: Stock below minimum level (reorder alert)
B. CHECK STOCK – ITEM DETAIL VIEW
Step 1: Click Item Name
You will be redirected to the Item Detail Page.
Step 2: Open the Inventory Tab
Stock Summary:
- Total Stock: 18 Pcs
- Available: 18 Pcs
- Reserved: 0 Pcs (allocated to confirmed sales orders)
- In Transit: 0 Pcs
- Damaged / Defective: 0 Pcs
C. CHECK STOCK – WAREHOUSE VIEW
Step 1: Access Warehouse Management
Path: Inventory → Warehouse Management
Step 2: Select Warehouse
- Select: Main Warehouse
Step 3: View Items in Warehouse
Apply filters:
- Commodity Type: Roasted Bean
- Category: Coffee Products
- Date Range: Recent imports
- Days in Stock: Important for freshness tracking
Freshness Guidelines:
- Best quality within 30 days after roasting
- Warning at 45 days
- Expire / discount recommended at 60 days
D. CHECK STOCK – MOBILE APP (OPTIONAL)
Stock Check via Barcode Scanner
Use Case: Physical stock audit in the warehouse
Steps:
- Log in to the Clorofile Mobile App
- Navigate to Inventory → Stock Check
- Scan barcode: 8063105318B
Displayed Information:
- Item: Premium Blend Medium 1kg
- Location: BIN-A-001
- Stock: 18 Pcs
- Status: Available
- Roast Date: 10/12/2025
- Age: 14 days (Fresh)
Available Actions:
- [Update Quantity] – Adjust stock count
- [Move Location] – Change storage location
- [Mark Damaged] – Mark as damaged or defective
- [Reserve for Order] – Reserve for a sales order
🔄 PHASE 6: STOCK MOVEMENT & TRACKING
A. OUTGOING STOCK (SALES / USAGE)
Scenario 1: Sales Order
Customer Order:
- Item: Premium Blend Medium 1kg
- Quantity: 5 Pcs
System Process:
- Create Sales Order SO-2025-001
- System checks stock: Available 18 Pcs → ✅ OK
- Reserve stock: 5 Pcs (18 − 5 = 13 available)
- Create delivery order
- Deduct stock: −5 Pcs (remaining balance: 13 Pcs)
- Create transaction record
Stock After Sale:
- Total: 13 Pcs
- Available: 13 Pcs
- Reserved: 0 Pcs
Scenario 2: Internal Usage (Grinding / Repacking)
Use Case: Grinding roasted beans for retail packaging
Process:
- Create an Internal Usage transaction
- Select item: Premium Blend Medium 1kg
- Quantity: 10 Pcs
- Purpose: “Grinding for retail packaging”
- Save → Stock reduced by 10 Pcs (remaining: 3 Pcs)
Result:
- Roasted Bean Stock: 3 Pcs
- Ground Coffee Stock: Created separately (output from grinding process)
B. INCOMING STOCK (RESTOCK / RETURN)
Scenario 1: Additional Production
New Production Batch CL014:
- Same profile: Profile 003
- Output: 18 kg → 18 pcs of 1 kg packages
Process:
- Create a roasted bean item (or link to an existing item)
- Perform stock import: +18 Pcs
Updated Stock:
- Total Stock: 3 + 18 = 21 Pcs
Scenario 2: Customer Return
Return from Sales:
- Customer return: 2 Pcs (damaged packaging)
Process:
- Create a Stock Return transaction
- Select item: Premium Blend Medium 1kg
- Quantity: 2 Pcs
- Reason: “Damaged packaging – customer return”
- Warehouse: Defect area (not main stock)
- Status: Mark as damaged / discounted stock
Stock After Return:
- Main Stock: 21 Pcs (unchanged)
- Defective Stock: 2 Pcs (tracked separately)
C. STOCK TRANSFER (BETWEEN WAREHOUSES)
Use Case: Transfer stock from Main Warehouse to Regional Warehouse
Process:
- Navigate to Inventory → Stock Transfer
- From: Main Warehouse
- To: Regional Warehouse
- Item: Premium Blend Medium 1kg
- Quantity: 10 Pcs
- Save
Stock After Transfer:
- Main Warehouse: 11 Pcs
- Regional Warehouse: 10 Pcs
- Total System Stock: 21 Pcs (unchanged)
📊 PHASE 7: REPORTING & ANALYTICS
A. STOCK REPORT
Stock Summary Report
Path: Inventory → Reports → Stock Summary
Filters:
- Commodity: Roasted Bean
- Date: Current month
- Suggest promotions or discounts for aging stock
- FIFO reminders for warehouse staff
✅ COMPLETE WORKFLOW CHECKLIST
☑️ Phase 1: Production Complete
- ✅ Roasting batch completed (status: Completed)
- ✅ Profile saved to the Profile Library
- ✅ Cupping session conducted (optional)
- ✅ Quality score recorded
☑️ Phase 2: Create Roasted Bean Item
- ✅ Navigate to Inventory → Items → Add Item
- ✅ Select Commodity: Roasted Bean
- ✅ Enter a descriptive Roasted Bean Name
- ✅ Generate or input a unique barcode
- ✅ Select Batch Number (auto-populates related fields)
- ✅ Verify auto-filled data (origin, roast level, operator, machine)
- ✅ Enter Cupping Score (if available)
- ✅ Set Unit = Pcs
- ✅ Set Sales Price
- ✅ Save the item
☑️ Phase 3: Stock Import
- ✅ Navigate to Inventory → Stock Import
- ✅ Create a new stock import
- ✅ Select warehouse
- ✅ Select item (roasted bean)
- ✅ Enter quantity (calculated from roasting output)
- ✅ Enter unit price (production cost)
- ✅ Add notes (batch reference)
- ✅ Save stock import
☑️ Phase 4: Verify Stock
- ✅ Check Item List → Stock column updated
- ✅ Check Item Detail → Inventory tab
- ✅ Check Warehouse View → Item in location
- ✅ Verify stock transaction history
☑️ Phase 5: Ready for Sales
- ✅ Stock available > 0
- ✅ Sales price set
- ✅ Barcode ready for scanning
- ✅ Item active in the system
- ✅ Item can be added to sales orders and invoices
🆘 TROUBLESHOOTING
❌ Problem: Batch does not appear in the dropdown
Cause: Batch status is not “Completed”
Solution:
- Check Production Plan → Batch Status
- If the status is “Planned” or “In Progress,” complete the roasting process first
- Save the profile in the Flutter app or manually update the status
- Refresh the Roasted Bean form
❌ Problem: Auto-populate does not work
Cause: Incomplete production data
Solution:
- Check batch data completeness in Production Plan
- Ensure origin, roast level, operator, and machine are filled in
- Re-save the production batch
- Clear browser cache and reload the form
❌ Problem: Barcode duplicate error
Cause: The barcode is already used by another item
Solution:
- Click the [?] icon to auto-generate a new barcode
- Or manually enter a different barcode
- Verify the barcode using a scanner before saving
❌ Problem: Stock does not update after import
Cause: Stock import is not approved or encountered an error
Solution:
- Check Stock Import List → Status
- If status is “Pending,” approve it first
- If status is “Error,” review the error message
- Recreate the stock import if necessary
❌ Problem: Negative stock balance
Cause: Sales or internal usage exceeds available stock
Solution:
- Review stock transaction history
- Identify incorrect transactions
- Adjust stock manually or void the transaction
- Set minimum stock alerts to prevent future occurrences
🎯 BEST PRACTICES
✅ Naming Convention
- Use a consistent format for roasted bean names
- Include Origin / Blend Name + Roast Level + Weight
- Example: “Ethiopia Yirgacheffe Medium 1kg”
✅ Barcode Management
- Use auto-generated barcodes to ensure uniqueness
- Print barcode labels immediately after item creation
- Test barcode scanners before mass printing
✅ Stock Import Timing
- Import stock on the same day or the next day after roasting
- Avoid delays to ensure accurate freshness tracking
- Use batch imports for efficiency when handling multiple items
✅ FIFO Implementation
- Always use the oldest stock first (based on roast date)
- Assign container numbers for precise location tracking
- Perform regular stock rotation (weekly checks)
✅ Freshness Monitoring
- Set alerts for stock aging (30-day warning)
- Apply promotional strategies for stock aged 45+ days
- Conduct quality checks for stock aged 60+ days (taste test before selling)
✅ Traceability Documentation
- Always reference batch numbers in stock import notes
- Keep cupping scores updated in item data
- Maintain a clear linkage between Production → Inventory → Sales