BFBambooForge Labs

Farm & Crop Management for Agriculture

Farm and crop management: cycles per field, a spray record an inspector can read, withholding periods that stop a harvest, cost per kilo.

Buy on the Odoo Apps StoreOpen the live demoIndustries€290Community & Enterprise

Available for Odoo 16.0, Odoo 17.0, Odoo 18.0, Odoo 19.0. Technical name bambooforge_farm.

Odoo 16.0Odoo 17.0Odoo 18.0Odoo 19.0
Full walkthrough on a live Odoo 19.0 database, with subtitles. It ends with what this app deliberately does not do.

Farm & Crop Management for Agriculture

Built around the two things a farm gets audited on and the one number it never knows.

The withholding period

  • Every input carries a withholding period in days and the registration number off its label. Zero for a fertiliser; never zero for a plant protection product unless the label really says so.

  • Signing off a spray sets an earliest legal harvest date on the crop cycle, taken from the longest period among the products applied. The cycle names the spray that is holding it.

  • Harvesting before that date is refused, and the refusal names the product, the day it was applied and the number of days. Cutting inside a withholding period is a rejected load, a failed residue test and, in most places, an offence.

  • The harvest date itself is bounded: not in the future, not before the crop went in the ground. A date in the future clears every withholding period ever recorded, which is the one keystroke that would walk a load straight out of the field.

  • A spray planned for next week holds nothing back - only signed-off work counts. A spray still sitting as planned and dated before the harvest is a different animal: it is a withholding period nobody counted, and the harvest is refused until somebody says whether it happened.

  • Work cannot be recorded or signed off on a cycle that has been harvested, written off or cancelled unless it is marked as a late entry. When a late entry proves the crop was cut inside a withholding period, a red flag is written on the cycle naming the day it was cut and the day it could legally have been.

The spray record

  • Product, batch, registration number, quantity, the rate that actually went on per hectare, the operator, the wind and the weather.

  • An operation that says something was applied but names no product cannot be signed off. It is the entry an inspector reads first.

  • A pesticide, herbicide or fungicide cannot be applied by an operator with no spray licence on file, and not with one that had expired on the day. The rule follows the product, not the box somebody ticked: a herbicide recorded under Weeding is still a herbicide and still needs a licensed operator.

  • The withholding period and the registration are copied onto the line as it is applied, not read through a relation, and they are never typed in - anything a client, an import or an RPC call sends for them is dropped and re-read from the label. Correct a line from a fertiliser to a pesticide and it becomes a pesticide, period and all. If the label changes next year, what happened this year stays what happened this year.

  • A signed entry is locked: its date, kind, operator, products, area, hours, rates and wind are what happened. Its state moves only through Done and Cancel, so it cannot be written back to cancelled and take its withholding period and its cost with it, and it cannot be repointed at another crop. Notes and the weather stay editable, because a note is not the record.

  • Who signed it off is recorded from the session, next to the operator somebody typed in.

  • A signed entry cannot be deleted, and neither can a cycle that carries one or that has been harvested or written off. Corrections are new entries; the field record is not something you tidy up.

The costing

  • Inputs, labour and machinery roll up from signed-off operations onto the cycle: total, per hectare and per unit harvested.

  • The yield is measured against the expected yield for that crop, so a season ends with a variance rather than a feeling.

  • A crop written off keeps its cost. The money was spent either way, and a failed field that shows zero teaches nobody anything.

The land

  • Live cycles on a field cannot add up to more than its area, and an operation cannot cover more hectares than were planted. The rule is checked from both ends: a field's area cannot be corrected downwards under the crops already standing on it, and the parcel is locked while it is checked, so two cycles entered at the same moment on two screens cannot both fit on ground that holds one of them.

  • Harvesting, cancelling or writing off a cycle frees the ground again.

  • Every cycle ever grown on a parcel stays on it - what went in, what it cost, what came off. Which is what the rotation, a buyer and an organic inspector all ask for.

The season

  • A crop cycle runs planned -> growing -> harvested, or is written off, or is cancelled while nothing has been done to it.

  • The harvest is recorded through a short form that insists on a weight that is a weight and a moisture that is a percentage, and warns on screen while a spray - or a date in the future - stands in the way.

  • Crops coming due within a week - and crops still held by a spray - land on the list of whoever planned the cycle, or of a manager if they have left the farm. Once each, even after the reminder has been dealt with, and the date on it follows the hold every time another spray is signed off.

Roles

  • Field operator - records what was done in the field and what was applied. Cannot plan a season, harvest, or configure.

  • Farm manager - plans the season, opens and closes cycles, records the harvest, and configures farms, fields, crops and inputs.

Installation

Community only. Depends on base, base_setup, mail, product and uom; no Enterprise module is involved.

Set up in this order: farms, then fields with their real measured area, then crops with their unit and expected yield, then inputs with their withholding days and registration numbers. Put spray licence numbers on the operators' user records before the first spray, or the first spray cannot be signed off.

Support

support@bambooforge.dev

Screens

Cycle - bambooforge_farm
Cycle
Harvest - bambooforge_farm
Harvest
Season - bambooforge_farm
Season
Spray - bambooforge_farm
Spray