Mi Finca
☰

Inventory

Mi Finca keeps everything the farm buys and uses up in one place: medications, detergents, rennet, feed, pasture seed, even gloves. Each item lives in the area where it is used, and what is left of it is worked out by adding up its purchases and adjustments. Inventory warns you when something is running out or about to expire, but it never stops you from recording the day’s work.

Terms

Inventory area
The seven areas the farm’s supplies are grouped into: Reproduction, Milking hygiene, Health, Cheesemaking, Feeding, Pasture and Operations. The area reflects how the item is bought and used day to day, and it decides which tab the item shows up in. It is independent of the kind of record the item has underneath: a synchronisation hormone is a medication but it is bought for Reproduction, and a syringe is bought for Health without being a medication. Every area tab shows its medications in their own section when it has any — Health always, the other areas only when they hold some, such as the hormones in Reproduction — and the same goes for cheese inputs, which Cheesemaking always shows, for semen straws, which Reproduction always shows, and for feed, which Feeding always shows; in the other areas those sections only appear when they hold something. The rest of the general supplies sit below those sections.Where it appears: Dashboard → Inventory
Supply item
A generic inventory item: name, the area it belongs to, the unit it is consumed in and, if you want one, a minimum that triggers a low-stock warning. That is already enough to buy it, adjust it and know how much is left. An item only gets a specialised record — medication, cheese input, feed, semen straw — when some module needs its own attributes, such as dose per kilo or withdrawal days. When creating it you can enter the initial quantity — what is already on hand — recorded as "Initial stock", with no cost.Where it appears: Dashboard → Inventory (any area tab)
Cheese input
The dedicated record for what gets used up making cheese: rennet, cultures, salt, calcium chloride, packaging and plant detergents. You give it a name, a type, the unit stock is kept in and, if you want them, a minimum for the low-stock warning and the quantity already on hand. From there it lives in the same inventory as everything else: purchases with supplier, price, lot number and expiry date, adjustments with a reason, movement history, average cost, and low-stock and expiry alerts. The unit is the stock unit — three bottles of 100 ml go in as 300 ml — and it locks as soon as the input has movements, because changing it would leave everything already recorded meaningless. The Cheesemaking tab puts cheese inputs on top and general supplies below (plus medications, when the area holds any), so whatever was already recorded as a general supply stays where it is and does not need moving. Automatic deduction when a cheese batch is recorded arrives with the cheesemaking module.Where it appears: Dashboard → Inventory → Cheesemaking → Cheese inputs
Semen straw
The dedicated record for the semen the farm keeps in the tank, one per bull: the bull’s name and, if you have them, its registration number, its breed and the genetic house. You can enter how many straws are already stored and a minimum for the low-stock warning. From there it lives in the same inventory as everything else: purchases with supplier, price, lot number and expiry date, adjustments with a reason, movement history, average cost, and low-stock and expiry alerts. What is particular to straws is the deduction: recording an insemination and picking a straw from the catalog takes exactly one off, dated on the service. Annulling the service later puts the straw back; and correcting the service date moves the movement along with it, so the inventory is never dated differently from the insemination. A natural mount spends no straw, so one cannot be assigned to it. And a service recorded without picking a catalog straw is just as valid, it simply deducts nothing — the tank never hears about it. The unit, normally the straw itself, locks as soon as movements have been recorded. The Reproduction tab puts straws on top and the rest of the supplies below.Where it appears: Dashboard → Inventory → Reproduction → Semen straws
Feed
The dedicated record for feed and forage, in seven types: concentrate, forage, silage, hay, mineral, supplement, and a catch-all "other" for anything that does not fit those. You give it a name, a type, the unit stock is kept in (normally kilograms) and, if you want them, a minimum for the low-stock warning and the quantity already on hand. From there it lives in the same inventory as everything else: purchases with supplier, price, lot number and expiry date, adjustments with a reason, movement history, average cost, and low-stock and expiry alerts — concentrate and minerals can expire, hay usually does not, so the fields stay optional either way. What is particular to feed is buying it by the sack: set how many kilograms a sack holds and the purchase opens by the sack — you type how many sacks and the price per sack, and Mi Finca works out the kilograms and the cost per kilogram for you (3 sacks of 46 kg at ₡16,100 a sack come in as 138 kg at ₡350/kg; half a sack is fine too). A loose top-up bought without a sack still fits — a switch takes the purchase back to entering kilograms and the total paid directly — and the sack size can be changed at any time, because it only describes how the next purchase arrives, not the movements already recorded. The unit itself is different: it is the stock unit, and it locks as soon as the feed has movements, for the same reason as every other typed item — changing it would leave everything already recorded meaningless. The Feeding tab puts feed on top and the rest of the supplies below; the other areas show it too, once one is actually filed there, because a mineral block or a recovery ration is sometimes bought against a different area. Consumption deductions from a nutrition plan arrive with a future module.Where it appears: Dashboard → Inventory → Feeding → Feed
Purchase
An incoming movement that adds stock: how much arrived and on what date. Optionally you record which supplier it came from, the price, the lot number and the expiry date. The price is not required, but it is what feeds the item’s average cost; the lot and expiry are what make expiry alerts possible. Any item with a unit can be bought two ways. A loose purchase asks for the quantity and the total paid, and Mi Finca works out the price per unit, so nothing ever needs dividing: a 3,785 ml gallon at ₡4,000 comes in as 3,785 ml at ₡1.0568 per ml. A purchase by container asks for what one container holds, how many arrived and the price of each — a switch, "Buy by the container", is on by default when the content is saved on the item. The content is editable right there, and "Save as the usual content" keeps it on the item for the next purchase. A summary under the price shows the quantity, the total and the price per unit before saving. When the price per unit is 5 or more times the last purchase, or 5 times below it, Mi Finca warns about it and the button turns into "Save anyway": it takes a second click to save, and changing any amount clears that confirmation. Correcting a purchase from the history offers the same two ways; only people with the finance permission see it, because correcting without seeing the price would erase it. When a medication has just been created by scanning its label and the label carried a lot and expiry, Mi Finca offers to open this purchase already filled in with those details, by container, with the content per container saved on the medication or, when it has none, the one read off the label — unless an initial quantity was entered on the record, in which case the offer is skipped, to avoid counting the same stock twice. When the item has been bought before, a muted line under the price field shows what it cost the last time — the price, the date and, when there was one, the supplier — plus its per-sack or per-container equivalent for an item bought that way. It is a reference only: the price field is never pre-filled from it, prices move and the day’s figure is always the user’s to type.Where it appears: Dashboard → Inventory → Buy
Content per container
How much one container of an item holds, in its stock unit: 100 if you buy 100 ml bottles, 500 if the rennet comes in 500 ml bottles. It is optional and is entered on the record of a general supply, a cheese input or a medication — for a medication it is counted in the dose unit, its stock unit, so that unit has to be entered first, or the record warns "Enter the dose unit first: the content per container is counted in it." and refuses to save the record. When it is saved, the purchase opens by container: the "Buy by the container" switch is on, you type how many containers and the price per container, and Mi Finca shows the total live and, once a price is typed, the price per unit, before saving (2 bottles of 100 ml at ₡1,000 each go in as 200 ml at ₡10.00 per ml). The content is editable inside the purchase itself, and an item without one can be bought by container too: type what one holds and leave "Save as the usual content" ticked, as it comes, so the next purchase opens ready. Turning the switch off sends the purchase back to asking for the quantity and the total paid, for whatever arrives loose. Stock, average cost and deductions stay in the stock unit, and so does the initial quantity when the record is created; the content can be changed at any time, because it only describes how the next purchase arrives. Correcting a purchase offers the same two ways, opening by container when the quantity is a whole number of containers. Feed does the same with kilograms per sack; semen straws have no container, the straw is the unit.Where it appears: Dashboard → Inventory → New item / Edit → Content per container; then Buy
Adjustment
A manual correction to stock, always with a reason: loss, expired, damage, correction or other. It is signed: negative when product was lost, spilled or discarded, positive when there turned out to be more than the system said. It is the tool for making the inventory match what is actually on the shelf. The balance an item starts with is also an adjustment, with the "Initial stock" reason.Where it appears: Dashboard → Inventory → Adjust
Consumption (treatment deduction)
An outgoing movement that comes out of the day’s work: it is created when a health event — treatment, vaccination, deworming, or a disease with treatment — is recorded with a medication from the catalog. The form shows "Deduct from inventory" with a quantity already proposed, the suggested dose times the duration in days, and all of it stays editable: you can raise it, lower it, type zero or clear the field, and in those last two cases nothing is deducted. Below it, the lot expiring soonest is proposed (FEFO), with its date and how much is left; you can pick another lot or leave it as "No lot assigned". If the medication was typed by hand, outside the catalog, there is nothing to deduct from and the form invites you to pick one from the catalog. If the quantity leaves stock negative a warning appears, but the event is saved all the same: health records are never blocked by inventory. Annulling the health event releases its consumption and the stock comes back. Marking a due protocol as applied with one click deducts nothing, because no quantity or lot is asked for there: if the deduction matters, record the full vaccination instead.Where it appears: Dashboard → Health → Register treatment / Register event
Stock
How much of an item is left. It is stored nowhere: it is calculated by summing every movement of the item, so it always reflects what has been recorded. It can go negative, and that means consumption was recorded before the purchases backing it were entered — a discrepancy you fix by recording the missing purchase or making an adjustment. Zero or negative stock never blocks recording a treatment, a cheese make or any other operation: inventory warns, it does not block.Where it appears: Dashboard → Inventory
Consumable unit
The unit the item is actually used in, and the unit all stock is kept in. If you buy 3 bottles of 100 ml, 300 ml go in, not 3 bottles. That way a 15 ml dose comes straight off the stock, with no conversions and no thinking about half-used containers.Where it appears: Dashboard → Inventory
Weighted average cost
The unit cost Mi Finca keeps for each item. Every priced purchase recalculates it by weighing what was already there against what is coming in, so the average barely moves on a small purchase and moves a lot on a big one. A purchase with no price adds quantity but leaves the average alone. If stock was at zero or negative, the purchase resets the average to the new price: averaging against negative stock would not produce a meaningful number.Where it appears: Dashboard → Inventory
FEFO (first expiry, first out)
The rule Mi Finca uses to decide which lot the consumption comes out of: the one that expires soonest, even if it arrived later. That way whatever is closest to expiring gets used first and less product is thrown away. Lots with no expiry date are used last.Where it appears: Dashboard → Inventory
Low-stock alert
A warning raised when an item’s stock falls to its minimum or below. It is only raised for items that define a minimum: if the item has none, it never warns. The minimum is set when creating or editing the item, and it is worth revisiting whenever the rate of consumption changes.Where it appears: Dashboard → Inventory
Expiry alert
A warning about lots expiring within the next 30 days, and about lots that already expired. It is only raised while the lot still has quantity left: a lot that has been fully used up stops showing, even once its date passes. It depends on the purchase having been recorded with a lot and an expiry date.Where it appears: Dashboard → Inventory
Supplier
Who you buy from: the vet practice, the supply store, the neighbour who sells you alfalfa. It is stored with contact, phone, email and notes, and it is shared across every area — the same supplier can sell the farm both medications and detergent. You can create one from its own tab, or on the fly from inside the purchase form.Where it appears: Dashboard → Settings → Suppliers
Purchases (global list)
The global list of everything the farm has bought, gathered from every area into one page: a period filter (this month, last 3 months, this year, or a custom range) plus area and supplier filters narrow the table down to whatever question is being asked. Each row is one purchase movement — date, item, area, quantity and unit, unit price, total, supplier and lot — and the card above the table adds up the spend and the count of the filtered rows. It is read-only: nothing here records a purchase, it only reports the ones already recorded through each area’s own Buy action. Without the finance permission, the table shows neither the unit price nor the total, and the card does not add up the spend.Where it appears: Dashboard → Inventory → Purchases → Purchases
Inventory valuation
What the store room is worth right now: every item that still has stock, valued at its weighted average cost, with a subtotal per area and a grand total. An item whose purchases never carried a price is still listed — with its stock, because that much is certain — but shows a "No data" dash instead of a value, and that dash never gets counted as a zero in the totals. Only items with stock above zero appear; there is nothing to value in an empty or negative balance. It requires the finance permission; without it the tab does not appear, and neither do the costs in the tables.Where it appears: Dashboard → Inventory → Purchases → Valuation
Monthly spend report
A twelve-month bar chart comparing what came in against what went out: purchases (quantity × unit price, summed per calendar month) against consumption, both in the farm’s currency. Consumption has no price of its own — a treatment or a cheese make records a quantity, not a cost — so it is valued at the item’s current weighted average cost, the same number the valuation table shows today. That is a deliberate approximation: an item bought cheap in January and consumed in August is still valued at today’s average, not January’s price. Exact month-by-month costing of what was actually consumed is a bridge to Hito 10 (Finance), not something this report promises. It requires the finance permission; without it the Reports tab does not appear.Where it appears: Dashboard → Inventory → Purchases → Reports
Top suppliers
Every supplier the farm has bought from, ranked by how much it has spent with them, with how many purchases back that total. It reads the whole history unless a period is picked — the area and supplier filters that narrow the Purchases table do not apply here, only the date range does, so the ranking always answers "who does the farm buy the most from" rather than "who supplies this one area." A purchase recorded with no supplier is simply left out — there is nobody to credit it to.Where it appears: Dashboard → Inventory → Purchases → Reports
Inventory alerts (home)
A card on the home dashboard mirroring the health-alerts card, so the farm sees the store room’s warnings the moment it opens the app rather than after clicking into an area. It watches every area at once and shows up to five alerts — low stock, an expiring lot, an expired lot — the most urgent first, with a link to Inventory when there are more. A store room with nothing to warn about shows a plain "no alerts" line instead of a blank card.Where it appears: Dashboard (home)