Preliminary Costing and Costing in odoo

Modul: Preliminary Costing and Costing in odoo




Costs and Earnings

Basically the margin is the difference between costs an achieved sale price. By costing of the margin, there are two magnitudes which can belittle the margin.

Cost side              
The real costs are greater than the costing – the margin is smaller.

Earnings side        
A discount on the sale price – the margin is smaller.

The net margin is the difference between real costs and discounted sale price. With the module «gio_preliminary_costing» of know it is possible to evaluate in odoo, if the calculated earnings are achieved.


Preliminary Costing and Costing in odoo
Now, the evaluation of costs by a preliminary costing can be done directly in odoo. The module of is providing:

products for preliminary costing, with analytic accounts and analytic tags on product

  • analytic accounts for real costs
  • analytic tags for filtering finance reports

preliminary costing with cost types

  • link to products for preliminary costing
  • link to analytic accounts for calculated costs
  • analytic tags for filtering finance reports
  • preliminary costing for production (time before and after production like workcenter configuration)
  • units of measure / costs per unit of measure
  • costing of margin
  • total costs
  • total sales price

costing based on preliminary costing

  • load cost types (preliminary costing)
  • costing with units of measure / costs per unit of measure and margin
  • total costs
  • total margin
  • total sales price
  • versioning of different costings 

quotation and sales order

  • load a costing version
    - A) based on a single product (no costing details, only sum), used also for BOM-Products
    - B) each cost type as a product in a orderline on quotation
  • link to analytic accounts of customer project
  • confirm to sales order
  • customer invoice on sales order

 customer invoice

  • confirmation of customer invoice
  • save earnings into customer analytic accounts (or project analytic account)
  • save calculated costs into calculated analytic accounts (calculated analytic account)

odoo standard financial reports can be filtered by analytic tags to compare calculated and real costs.


Setup and Configuration

Due to the installation of the costing module, there is automatically a new journal, which will be configurated in the odoo system named „costing-journal“. The manually based configuration has to be done for:

  • analytic accounts (per cost type)
  • analytic tag (per cost type)
  • accounts for debit an credit (e.g. per cost type, business section or product category)

Beside the automatically setup there is a manually configuration for:

  • cost types
  • analytic tags (equal to cost types)
  • accounts in finance for earnings and expenses (equal to cost types, business or product category)
  • setup of products with analytic tags and accounts in finance for earnings and expense

It is recommended to configurate the equal structure for costing, finance and analytic accounts.
For example cost type „overland transportation“:

  • analytic account for costing „overland transportation“
  • analytic tag „overland transportation“
  • account earnings „overland transportation“
  • account expenses „overland transportation“
  • an analytic account per customer project


Analytic account for costing

The analytic account for costing hast o be set up in the cost type. Therefore it is necessary to configurate a analytic account for costing equal to each cost type. The calculated costs of each cost type will be stored in the costing journal and in the equal analytic account for costing. 

analytic account per customer and project
To save data from customer invoice or vendor bill into an analytic account, there hast o be configurated an analytic account per customer project. The sales order line from sales order and the purchase order line from purchase order will be transferred into the customer invoice and the vendor bill as debits and credits. 

analytic account for costing per cost type
The calculated total costs are posted here for each cost element. In this way, the calculated expenses per cost element can be evaluated. 

product configuration
The analytic account for real costs and the corresponding Analytical Tag is stored on the product.
In addition, the corresponding financial account Income and the financial account Expense is deposited on the product. 

Products with deposited Analytical Tags and the corresponding financial accounts

Alternative: analytic accounts for real costs
Those can be created per business area or product category.
The analytic tags for the real costs are stored on the product.


Calculation Workflow

Preliminary costing and configuration of cost types

You can enter the following parameters when creating cost elements:

  • Choice of unit of measure (volume, length or time units etc.)
  • Cost factor per unit of measure
  • Quantity / number of items
  • Calculated margin in percent

The calculation module then calculates the total costs, the margin and the sales price. For the calculation of production costs, additional set-up costs and reworking costs for machines are available. Cost elements can be duplicated and created in multiple variants for non-linear price models. 

After creating a calculation, any number of cost elements can be loaded. The master data stored in the cost element can be overwritten (overridden) in the cost estimate. The calculation can be versioned as required. The calculation shows the total cost, the total margin and the total sales price. 

Loading a calculation in the sales quotationAfter having created an offer, a calculation can be selected and loaded. All individual items are created as sales lines. The cost center of the customer project is stored in the SO. 

Confirm as sale order
The offer is now confirmed as a sell order. A customer invoice is now created based on the sales order. odoo takes the cost center from the sales order and the corresponding analytic tag from the stored product for each invoice line. This posts the amounts of the individual invoice lines to the cost center of the customer project as revenue. On the financial accounts, evaluations (filters) can be created with analytic tags.


Purchase orders and supplier invoices

The corresponding product is used to create an order. This product with stored analytic tags is transferred to the supplier invoice. The analytic tags of the customer or project can be defined here as analytic tags. This compares the expenses on the customer or project analytic tag with the revenues.



There are three journals for the booking of revenues, expenses and calculated costs:

  • Sales journal                          all income from sales orders
  • Purchase journal                all expenses from orders
  • Calculation journal           all calculated costs

If the real costs are greater than the calculated costs, the margin decreases. If the real costs are lower than the calculated costs, the margin increases. If the calculated return is higher than the achieved one, the margin decreases. If the calculated yield is smaller than the achieved yield, the margin increases. The comparability of calculated and effective costs as well as calculated and achieved revenues is one of the most important functions of calculation in odoo.


Configuration of Accounting Accounts Receivables
Konfiguration Kontenplan, Ertragskonten

Configuration of Accounting Payables
Konfiguration von Abrechnungsverbindlichkeiten

Configuration of Analytic Tags
Konfiguration von Analytic Tags

Configuration of Calculated Analytic Accounts
Konfiguration der kalkulierten Analytic Accounts

Configuration of Customer Analytic Accounts
Konfiguration von Analytic Accounts für Kunden

Configuration of the Costing Journal wich is automatically installed
Konfiguration des automatisch installierten Kalkulationsjournal

Configuration of Products
Konfiguration der Produkte

Configuration of Analytic Tags on Products
Konfiguration der Analytic Tags auf den Produkten

Configuration of Product Vendors
Konfiguration der Produkt-Verkäufer

Configuration of Accounting Accounts on Products 
Konfiguration der Buchhaltungskonten auf Produkten

List of Sales Cost Types
Liste der Kostenarten in Verkauf

Editing of Sales Cost Types
Bearbeitung der Kostenarten in Verkauf

Cost Types, Costing, Cost Margin and Sale Price in Sales
Kostenarten, Kalkulation, Kalkulierte Marge und Verkaufspreis im Verkauf 

Editing of Analytic Accounts and Analytic Tags in Sales Cost Types
Bearbeitung von Analytic Accounts und Analytic Tags in Verkauf, Kostenarten

Costing of Sales
Kostenkalkulation in Verkauf

Editing the Sales Costing
Bearbeitung der Verkaufskalkulation

Load Costing in Sales Quotation
Laden der Kalkulation im Verkaufsangebot

Customer Invoice on Sales Order
Kundenrechnung auf Verkaufsangebot

Sales Journal Entry from Sales Order and Customer Invoice
Verkaufsjournal-Eintrag vom Verkaufsangebot und der Kundenrechnung

Sales Order, Customer Invoice, Sales Journal Entries with Receivable Accounts
Verkaufsangebot, Kundenrechnung, Verkaufsjournal-Einträge mit noch offenen Konten

Costing Journal on Customer Invoice
Kalkulationsjournal auf der Kundenrechnung

Analytic Account on the Journal Entries in Costing Journal
Analytic Account auf den Journaleinträgen des Kalkulationjournals

Customer Analytic Account on Sales Order
Analytic Account vom Kunden auf Verkaufsangebot

Budget of Customer Analytic Account on Sales Order
Budget des Kunden Analytic Accounts auf dem Verkaufsangebot

Customer Analytic Accounts on Sales Order, Receiveable, Payable Accounts
Verkaufsangebot, Kunden Analytic Account, Einträge mit Debitoren- und Kreditorenkonten

Purchase, Customer Analytic Account 
Kunden Analytic Account im Einkauf

Chart of Receivable Accounts
Kontenplan der Debitorenbuchhaltung

Chart of Payable Accounts 
Kontenplan Kreditorenkonten

Accounting, Costing Journal
Buchhaltung, Kalkulationsjournal

Accounting, Costing Journal Entries from Costing
Buchhaltung, Kalkulationsjournaleinträge aus der Kalkulation


Vorkalkulation und Kalkulation in odoo

Modul: Vorkalkulation und Kalkulation in odoo (gio_preliminary_costing)




Kosten und Erträge

Die Marge ist grundsätzlich die Differenz der Kosten zum erzielten Verkaufspreis.
Bei der Berechnung der Marge gibt es zwei wesentliche Bereiche, welche die Marge schmälern können.

Kostenseite            Die echten Kosten sind höher als die kalkulierten Kosten – die Marge sinkt.
Ertragsseite            Der Verkaufspreis wird rabattiert – die Marge sinkt.


Die Netto-Marge ist die Differenz zwischen echten Kosten und rabattiertem Verkaufspreis.
Mit dem Modul «gio_preliminary_costing» von kann jetzt in odoo ermittelt werden, ob die kalkulierten Erträge wirklich erzielt werden.


Vorkalkulation und Kalkulation in odoo

Die Ermittlung von Kosten mit Vorkalkulation und Kalkulation kann jetzt erstmals in odoo direkt erstellt werden. Das Modul von bietet:

Produkt für Vorkalkulation mit Kostenarten und Kostenstellen-Tag

  • Kostenstelle für echte Kosten
  • Kostenstellen Tag (Reporting)

 Vorkalkulation mit Kostenarten

  • Verknüpfung mit Produkt für Vorkalkulation
  • Verknüpfung mit Kostenstelle für kalkulierte Kosten
  • Kostenstellen Tag (Reporting)
  • Produktionskosten (Maschine einrichten / Nachbearbeitung)
  • Mengeneinheiten / Kosten pro Mengeneinheit
  • Margenberechnung
  • Total Kosten
  • Total Verkaufspreis

 Kalkulation basierend auf Vorkalkulation

  • Laden von Kostenarten (Vorkalkulation)
  • Kalkulation mit Mengeneinheiten / Kosten pro Mengeneinheit und Margenberechnung
  • Totalkosten
  • Total Marge
  • Total Verkaufspreis
  • Versionierung verschiedener Kalkulation


  • Laden einer Kalkulation- A) als eine Bestellzeile (nur Summe, auch geeignet für Stücklisten-Kalkulation)- B) je Kostenart eine Bestellzeile (jedes einzelne Produkt ergibt eine Bestellzeile)
  • Verknüpfung mit Kunden-Kostenstelle (oder Projekt-Kostenstelle)
  • Umwandlung in Verkaufsauftrag
  • Rechnung auf Verkaufsauftrag


  • Bestätigung der Kunden-Rechnung
  • Speichern der einzelnen Erträge in Kunden-Kostenstelle (oder Projekt-Kostenstelle)
  • Speichern der kalkulierten Kosten in Kostenstelle kalkulierte Kosten

Mit Hilfe der Kostenstellen-Tags können kalkulierte und echte Kosten verglichen werden


Setup und Konfiguration

Mit der Modulinstallation wird automatisch im Finanzmodul ein Journal angelegt mit dem Namen „Kalkulation“ („Costing“). Die manuelle Konfiguration von odoo umfasst folgende Bereiche:

  • Kostenstellen (je Kostenart)
  • Analytische Tags (je Kostenart)
  • Finanzkonten für Ertrag und Aufwand  (z.B. je Kostenart, Geschäftsbereich oder Produktekategorie)
  • Produkte mit hinterlegten Analytische Tags und den entsprechenden Finanzkonten

Es wird empfohlen, die gleiche Struktur in allen drei Bereichen anzulegen.

Beispiel „Kostenart Land-Transport“:

  • Kostenstelle für Kalkulation (Analytic Account) „Land-Transport“
  • Analytischer Tag „Land-Transport“
  • Finanzkonten für Ertrag „Land-Transport“
  • Finanzkonten für Aufwand „Land-Transport“
  • je Kunde oder Projekt eine Kostenstelle


Kostenstellen für Kalkulation

Je Kostenart wird eine Kostenstelle angelegt. Die Kostenstellen der Kalkulation werden auf der Kostenart hinterlegt. Gebucht werden die kalkulierten Kosten (Total Kosten je Kostenart) aus der Kalkulation.

Kostenstellen je Kunde oder Projekt
Je Kunde oder Projekt wird eine Kostenstelle angelegt. Die Buchungszeilen der Kundenrechnung (Debitoren) werden auf dieser Kostenstelle als Ertrag gebucht. Die Buchungszeilen der Lieferantenrechnung (Kreditoren) werden auf dieser Kostenstelle als Aufwand gebucht. Werden sämtlich erzielten Nettoerträge und alle echten Kosten gebucht, lässt sich so die Nettomarge abbilden (Saldo).

Kostenstellen für Kalkulation (Analytic Account) je Kostenart
Hier werden je Kostenart die kalkulierten Total-Kosten gebucht. So können die kalkulierte Aufwände je Kostenart ausgewertet werden.

Auf den Produkten wird die Kostenstelle für echte Kosten und der entsprechende Analytische Tag hinterlegt.
Zudem wird auf dem Produkt das entsprechende Finanz-Konto Ertrag und das Finanzkonto Aufwand hinterlegt.

Produkte mit hinterlegten Analytische Tags und den entsprechenden Finanzkonten.

Alternative: Kostenstellen für echte Kosten
Diese können je Geschäftsbereich oder Produktkategorie angelegt werden.
Die Kostenstellen für echte Kosten werden auf dem Produkt hinterlegt.



Vorkalkulation und Anlegen von Kostenarten
Beim Anlegen der Kostenarten können folgende Parameter eingegeben werden:

  • Wahl der Mengeneinheit (Volumen-, Längen-Mass oder Zeiteinheiten etc.)
  • Kostenfaktor je Mengeneinheit
  • Anzahl / Stückzahl
  • Kalkulierte Marge in Prozent


Draus berechnet das Kalkulationsmodul die gesamten Kosten, die Marge und den Verkaufspreis. Für die Kalkulation der Produktionskosten stehen zusätzlich Einrichtkosten und Nachbearbeitungskosten für Maschinen zur Verfügung. Kostenarten können dupliziert und für nicht lineare Preismodelle in mehrfachen Varianten angelegt werden.

Nach dem Anlegen einer Kalkulation können beliebig viele Kostenarten geladen werden. Die in der Kostenart hinterlegten Stammdaten können in der Kalkulation überschrieben (übersteuert) werden. Die Kalkulation kann beliebig versioniert werden. Die Kalkulation weist die Gesamtkosten, die gesamte Marge und den Total-Verkaufspreis aus.

Laden einer Kalkulation im Verkaufs-Angebot

Nach dem Anlegen eines Angebotes, kann eine Kalkulation gewählt und geladen werden. Dabei werden alle Einzelpositionen als Verkaufs-Zeile angelegt. Die Kostenstelle des Kundenprojektes wird im SO hinterlegt.

Bestätigen als Verkaufsauftrag

Das Angebot wird nun als Verkaufsauftrag bestätigt. Basierend auf dem Verkaufsauftrag wird nun eine Debitor-Rechnung angelegt. odoo übernimmt je Rechnungszeile die Kostenstelle aus dem Verkaufsauftrag und den entsprechenden analytischen Tag aus dem hinterlegten Produkt. Damit werden die Beträge der einzelnen Rechnungszeilen auf die Kostenstelle des Kundenprojektes als Ertrag gebucht. In den Finanzkonten können mittels analytischen Tags Auswertungen erstellt (gefiltert) werden.

Bestellungen und Lieferantenrechnungen

Das entsprechende Produkt wird verwendet, um eine Bestellung zu erstellen. Dieses Produkt mit hinterlegten Analytischen Tags wird in die Lieferantenrechnung übernommen. Als Kostenstelle kann hier die Kunden- oder Projektkostenstelle hinterlegt werden. Damit werden die Aufwände auf der Kunden- oder Projektkostenstelle den Erträgen gegenübergestellt.


Es gibt drei Journale für die Buchungen von Erträgen, Aufwänden und kalkulierten Kosten:

  • Verkaufsjournal (alle Erträge aus Verkaufsaufträgen)
  • Einkaufsjournal (alle Aufwände aus Bestellungen)
  • Kalkulations-Journal (alle kalkulierten Kosten)

Wenn die effektiven Kosten grösser sind als die kalkulierten Kosten, dann sinkt die Marge. Wenn die effektiven Kosten kleiner sind als die kalkulierten Kosten, dann steigt die Marge. Wenn der kalkulierte Ertrag grösser ist als der erzielte, dann sinkt die Marge. Wenn der kalkulierte Ertrag kleiner ist als der erzielte, dann steigt die Marge. Die Vergleichbarkeit von kalkulierten und effektiven Kosten sowie kalkulierten und erzielten Erträgen ist eine der wichtigsten Funktionen der Kalkulation in odoo.