Spreadsheet Quotation Calculator

spreadsheet_quotation
REPOSITORY
REPOSITORYOCA/spreadsheet
GIT
GIThttps://github.com/OCA/spreadsheet.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/spreadsheet/tree/18.0/spreadsheet_quotation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Cloud Lotus
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Cloud Lotus
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Roberto
WEBSITE
WEBSITEhttps://github.com/OCA/spreadsheet
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/spreadsheet:
    - spreadsheet_oca
odoo/odoo:
    - spreadsheet
    - bus
    - base
    - web
    - portal
    - web_editor
    - html_editor
    - http_routing
    - mail
    - base_setup
    - web_tour
    - auth_signup
    - base_sparse_field
    - sale_management
    - sale
    - sales_team
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - digest
    - resource
    - payment
    - utm
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows linking spreadsheet calculators to quotation templates
in Odoo. When a sale order is created from a template that has a
calculator, a copy of the spreadsheet is automatically assigned to the
order with a pre-configured global filter so the ODOO.LIST formulas
display only that order's lines.

The spreadsheet calculator is built on top of ``spreadsheet_oca`` and
uses ODOO.LIST formulas to display sale order line data (product,
quantity, unit price, etc.). Users can add custom formulas, calculations,
and charts to build complex pricing logic.

A **Field Sync** side panel lets users map spreadsheet columns to
sale order line fields. This column-based approach is more intuitive
than cell-by-cell mapping and makes it easy to push calculated values
back to the sale order.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
sale_order_template_view_form_inherit sale.order.template.form.spreadsheet sale.order.template field Inherits sale_management.sale_order_template_view_form
sale_order_view_form_inherit sale.order.form.spreadsheet sale.order div Inherits sale.view_order_form
spreadsheet_quotation_create_form spreadsheet.quotation.create.form spreadsheet.quotation.create form New
Models touched (3)

New fields (2)
  • has_spreadsheet Boolean
    compute='_compute_has_spreadsheet'
  • spreadsheet_id Many2one → spreadsheet.spreadsheet
    copy=False string='Quotation Calculator' args: 'spreadsheet.spreadsheet'
Public methods (4)
  • action_open_spreadsheet_calculator(self)
  • action_sync_spreadsheet_order_lines(self, commands)
    Sync sale order lines from the quotation calculator spreadsheet.
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (1)
  • spreadsheet_id Many2one → spreadsheet.spreadsheet
    copy=True help='Spreadsheet used as pricing calculator for quotations created from this template.' string='Quotation Calculator' args: 'spreadsheet.spreadsheet'
Public methods (2)
  • action_create_spreadsheet_calculator(self)
  • action_open_spreadsheet_calculator(self)

New fields (3)
  • line_count Integer
    default=DEFAULT_LINE_COUNT help='Initial number of rows to display in the list.' string='Number of lines'
  • name Char
    default='Quotation Calculator' required=True
  • sale_order_template_id Many2one → sale.order.template
    readonly=True required=True args: 'sale.order.template'
Public methods (1)
  • action_create(self)