Products and inventory#

ELT’s product catalogue has 170,000+ products — the vast majority imported via the LVISnet wholesaler channel. Manually entered products are for special measurements or non-LVISnet items (e.g. own tools, equipment).

Product family#

Odoo distinguishes two levels:

  • product.template — the “abstract” product (e.g. “Nibe S1255 heat pump”)
  • product.product — variant (e.g. different colours, sizes — at ELT mostly 1:1 with the template)

Generally ELT works at the template level.

Creating a product#

Inventory → Products → Create.

Required:

  • Name — e.g. “Nibe S1255 16 kW heat pump”
  • Internal Reference (default_code) — the sähkönumero (electrical product code)
  • Sales Price — selling price
  • Cost — acquisition price (if stored)
  • Type — Consumable / Storable / Service

Recommended:

  • Barcode — EAN code for scanning
  • Category — grouping for reporting
  • UoM — unit of measure (pcs, m, kg, h)

LVISnet products#

LVISnet wholesalers’ products are created automatically on the 1st of the month. They have:

  • lvisnet_imported = True flag distinguishing them from manually created ones.
  • Sahkönumero in the default_code field.
  • Price history auto-updates — a new import refreshes pricing.

LVISnet import explains in more detail.

Stock locations#

Inventory → Configuration → Warehouses → Locations.

ELT’s typical structure:

Location typeWhat
StockMain warehouse (ELT’s own)
CustomerAt the customer (when you ship to a site)
VendorAt the wholesaler (when buying)
TransitIn transit
Inventory loss / adjustmentLosses and inventory corrections

The installer’s PWA uses Stock level when showing balances.

Inventory for the PWA#

The installer’s PWA loads once a day (or forced manually) the full product catalogue for offline use. This enables product search and barcode scanning in the field without a connection.

Pre-load is 170,000 rows, takes 1–3 min. PWA’s Settings → “Sync inventory now” forces it.

Pricing via pricelists#

A product’s price can vary by customer or contract. Pricelist defines which price is used in which situation.

  • Default Pricelist — general price
  • Contract customer’s pricelist — may e.g. be -15% off default
  • Per-wholesaler pricelist — LVISnet wholesalers’ own prices, used as display prices in the installer’s PWA

Stock balances#

Inventory → Operations → Inventory Adjustments.

Inventory is verified in ELT’s main warehouse monthly. Differences are corrected here — and the installer’s PWA gets the updated balances on the next sync.

Archiving products#

Don’t delete products — archive (active=False). Deleting breaks all references to past tasks/invoices/stock moves.

Troubleshooting#

Installer says a product is missing from the PWA
- **Is the product new in LVISnet?** Check the LVISnet import ran after the addition. - **Is it archived?** Filter "Archived" on Products list. - **PWA cache stale?** Tell the installer: Settings → "Sync inventory now".
Product / barcode appears duplicated
LVISnet wholesalers sometimes use the same EAN under different sahkönumeros. **200.13's fix**: the product is created **without the barcode field** when a collision is detected — the other wholesaler keeps the EAN. This is an acceptable compromise, but if you see "two products with the same name" in search → one is without an EAN.
Price change doesn’t show in PWA
PWA inventory sync is **daily**. If you want it now, ask the installer: Settings → "Sync inventory now".