Land preparation begins before blocks and lots exist. Ground is ripped, disced, laser-leveled, and pre-irrigated. Beds are listed and shaped. Fumigant is applied, plastic is laid, and drip tape is buried. Crews are paid, tractors burn fuel, and water is metered. At this point the land is a field, a boundary on a map, not yet divided into the blocks and lots that the rest of the season is tracked against.
When the planting plan is finalized, the field becomes Block 12, Block 13, and Block 14, and Block 12 is split into Lot A and Lot B for staggered plantings. There are now five cost centers where there was one, and a set of invoices, timesheets, and fuel tickets that all reference the field.
This page describes how to record costs against the most specific unit known at the time, and how to allocate those costs to blocks and lots later without editing the original records. It also covers block splits, merges, boundary changes, and explicit reassignment.
Why the timing mismatch is structural
Finalizing the planting plan before the first tractor pass would let every cost be coded to its final block on day one. In practice this doesn't happen, for reasons that don't change:
- Ground preparation is driven by weather. A window opens after the last rain and the ripper goes in, regardless of whether sales has confirmed how many acres of romaine versus iceberg will be planted eight weeks later.
- Fumigation has re-entry intervals that determine when planting can begin, so it's scheduled first and downstream work is planned around it.
- The planting plan is a negotiation between agronomy, sales, labor availability, and transplant supply. It changes until the planter is in the field, and sometimes after.
The unit of work for land preparation is the field, the ranch, or an irrigation set that spans several fields. The unit of work for growing and harvesting is the block or lot. These units don't align, because they're driven by different constraints. A cost system that assumes one stable hierarchy from the start of the season doesn't describe a working farm.
Common workarounds and what they lose
Most operations use one of three approaches. Each loses accuracy in a different place.
Holding account. Pre-plant work is coded to a cost center such as "Field 40 – Prep," and after planting the bookkeeper journals it to blocks by acreage. This keeps the general ledger tidy, but the journal entry happens weeks later, is done once, and is done by someone who wasn't in the field. If Block 14 received an extra bed-shaper pass because the soil was cloddy, that detail is lost. Every block gets a smoothed average, which hides the variance the cost data is supposed to reveal.
Provisional blocks. Blocks are created from the planting plan as of the first tractor pass, and costs are coded to them as they occur. This preserves detail but moves the work to later. When the plan changes, someone must find every transaction coded to the old blocks and recode it. Most systems make this impractical, so the books describe a plan that was abandoned in March.
No allocation. Pre-plant costs are charged to the ranch or crop year as overhead, and block-level costing starts at planting. This is honest about the uncertainty, but land preparation can be 20% to 30% of total growing cost for a short-season vegetable crop. The block-level figures are wrong by a large and unknown margin.
Record costs against the field
Don't require a cost to choose its final destination when it's recorded. Attach it to the most specific unit that's known at the time, and let the system resolve it to blocks and lots later.
This requires a stable layer above the block in the land hierarchy: the field. A field has a boundary and an acreage. Blocks are created inside fields and belong to exactly one field. Lots are created inside blocks.
When a crew discs the whole field, the cost is recorded against the field with the date, equipment, hours, and operator. Nothing about that record is provisional.
When blocks are later created inside the field, every field-level cost dated before the block existed becomes a candidate for allocation to it. The allocation is a derived view, not an edit. The disc pass still shows that it happened on the field. The block-level cost report shows that Block 12 carries 31% of it, because Block 12 is 31% of the field's planted acreage. If block boundaries change next week, the percentages and the report update. No records are re-keyed.
Choose an allocation basis per cost type
Acreage is the default basis, and it's correct for most land preparation: a disc pass costs about the same per acre regardless of which crop follows. It isn't correct for everything, so let the basis be set per cost type:
- Fumigation is often applied at different rates across a field based on soil tests or the intended crop. If the application record includes a rate map, allocate by treated acres and rate.
- Drip tape and plastic mulch are laid per bed, and beds per acre vary with bed width. Allocate by bed-feet when blocks have different bed configurations.
- Pre-irrigation water is metered per set, and a set might not follow future block boundaries. Allocate by irrigated acres within the set.
- Some costs shouldn't be allocated to blocks at all. A land-leveling project that benefits the field for a decade is a capital improvement, not a growing cost for this season's crop. Let it stay at the field level or be depreciated.
The basis is recorded with the cost type and applied consistently by the system, rather than decided by whoever does the month-end journal.
Handle splits, merges, and boundary changes
Block creation is the simplest case. The harder cases occur after blocks exist and have costs recorded directly against them.
Split. Block 12 was planted as one unit, then the second half was held back a week, and the office wants Lot A and Lot B. Costs recorded against Block 12 before the split are allocated to the lots by the chosen basis, as a derived view, in the same way field costs are allocated to blocks. Costs recorded after the split go directly to a lot. The block-level record is unchanged, and block-level reports still sum correctly because lots roll up to their block.
Merge. Two blocks planned separately are managed as one. For example, a late transplant shipment meant both were planted the same day. Costs attached to the original blocks roll up to the merged block. The original blocks remain as children of the new one, so nothing is recoded.
Boundary change. Block 13 was drawn 20 feet too far east, overlapping Block 14. If boundaries are stored with effective dates, allocation uses the acreage in effect on the date of each cost. A disc pass on March 1 is allocated with the March boundaries; a cultivation pass on April 10 uses the corrected April boundaries. Costs recorded directly against Block 13 stay there, because that's what the operator reported. If the office believes some of that work was on Block 14, they reassign it explicitly.
Override an allocation without editing the source
Sometimes the derived allocation is wrong and someone knows it. The bed shaper made two passes on the north end and one on the south, and the operator logged all of it as Field 40. Block 12 should carry more of the cost.
Model this as an allocation override: a separate record that says, for this cost, use these percentages instead of the default basis. The override has an author, a timestamp, and a reason. Reports use the override where one exists and the default elsewhere. If the override is wrong, remove it and the default applies again. The original timesheet is never edited, which matters when an auditor asks why block costs don't match the timesheets.
The same mechanism handles a planting plan that changes after provisional blocks were created and costs were coded to them. Retire the old blocks with an end date, create the new blocks, and add a reassignment rule that maps old to new. Every cost that pointed at a retired block flows through the rule. The record of what was planned in February and what was planted in March is preserved.
Requirements for field staff
The model fails if it makes the operator's job harder. An operator on a tractor at 5 AM should be able to record "disc, Field 40, 4 hours" and be done. Don't ask which block they were on when blocks don't exist yet, and don't ask for percentages. The system accepts the most accurate description of the work that's available and resolves it later.
When blocks do exist and the operator knows which one they worked, let them record it, and treat that as more authoritative than any derived allocation. The hierarchy fills gaps; it doesn't override people who were there.
Results
Block- and lot-level cost per acre and cost per carton include land preparation, trace back to individual transactions, and update automatically when the land hierarchy changes. Variance between blocks becomes visible, which is the reason to track costs at that level.
Because field-level costs are stored as field-level costs, the farm also gets a per-field history of land preparation spend across seasons. That figure informs which ground to keep leasing and which to release, and it's difficult to reconstruct from a system that forced every cost down to a block on the day it occurred.
The gap between the first tractor pass and the first block record won't close. The planting plan changes, weather dictates when ground is worked, and blocks get split and redrawn. A cost model that treats this as normal, rather than as an exception to clean up at month end, stays accurate through the season.