Add Roasted Bean Into Stock

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

  1. Click the dropdown
  2. Select a batch (e.g., “CL013 – Profile 003”)
  3. 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:

  1. “Premium Blend Medium 1kg” (barcode: 8063105318B) – Qty: 18 pcs
  2. “Premium Blend Medium 500g” (barcode: 8063105319C) – Qty: 36 pcs
  3. “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

  1. Open Production → Cupping Library
  2. Filter by Batch Number (e.g., CL013)
  3. View the average cupping score
  4. 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:

  1. Log in to the Clorofile Mobile App
  2. Navigate to Inventory → Stock Check
  3. 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:

  1. Create Sales Order SO-2025-001
  2. System checks stock: Available 18 Pcs OK
  3. Reserve stock: 5 Pcs (18 − 5 = 13 available)
  4. Create delivery order
  5. Deduct stock: −5 Pcs (remaining balance: 13 Pcs)
  6. 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:

  1. Create an Internal Usage transaction
  2. Select item: Premium Blend Medium 1kg
  3. Quantity: 10 Pcs
  4. Purpose: “Grinding for retail packaging”
  5. 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:

  1. Create a Stock Return transaction
  2. Select item: Premium Blend Medium 1kg
  3. Quantity: 2 Pcs
  4. Reason: “Damaged packaging – customer return”
  5. Warehouse: Defect area (not main stock)
  6. 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:

  1. Navigate to Inventory → Stock Transfer
  2. From: Main Warehouse
  3. To: Regional Warehouse
  4. Item: Premium Blend Medium 1kg
  5. Quantity: 10 Pcs
  6. 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

 

Did you find this article useful?