Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Accounting
  3. Journal Discount on Invoice Line (Invoices & Bills) v 15.0
  4. Sales Conditions FAQ

Journal Discount on Invoice Line (Invoices & Bills)

by Alphasoft https://www.alphasoft.co.id/
Odoo

$ 150.19

v 15.0 Third Party 40
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Lines of code 864
Technical Name aos_account_discount
LicenseOPL-1
Websitehttps://www.alphasoft.co.id/
Versions 10.0 11.0 14.0 15.0 16.0 17.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Invoicing (account)
• Discuss (mail)
Lines of code 864
Technical Name aos_account_discount
LicenseOPL-1
Websitehttps://www.alphasoft.co.id/
Versions 10.0 11.0 14.0 15.0 16.0 17.0
  • Description
  • License

Journal Discount on Invoice Line

Post line-level discount amounts to dedicated journal accounts — so your trial balance shows Gross Sales and Discount Given separately, instead of silently netted.
Standalone — no aos_base_account required.

6

Line-level fields —
undiscount, tax basis, more

4

Move types supported —
customer + vendor, invoice + refund

3

Setup steps —
create accounts, map, done

∞

Companies & users —
flat license, no per-user fee

NEW IN 15.0.1.0.0
Standalone edition · Drop aos_base_account dependency · Per-product account override on product.template · Refreshed documentation

Why net revenue alone isn’t enough

Odoo’s standard flow computes subtotal as qty × price × (1 − discount%). The discount portion vanishes into net revenue. CFOs can’t measure discount-to-sales ratio. Auditors can’t tie posted PnL to the discounts that produced it.

  Without this module

  • Gross sales total — not visible. Sales Revenue posts net of discount only.
  • Discount given total — requires SQL query against invoice lines every month-end.
  • Discount-to-sales ratio — manual calculation; no PnL drill-down possible.
  • Per-category tracking — impossible without custom report.
  • Audit trail — discount lives in invoice line metadata, not in the GL.

  With this module

  • Gross sales total — Sales Revenue at NET on the original line + a gross-up counter on the same account: trial-balance sum rolls up to GROSS. Tax basis unchanged.
  • Discount given total — dedicated GL line per invoice line, flagged is_discount_line=True. PnL drill-down works.
  • Discount-to-sales ratio — one click in Accounting → Reporting → Profit and Loss.
  • Per-category tracking — configurable Discount Customer Account per product.category.
  • Audit trail — DISC journal split cross-references each invoice line.

See the journal split in action

Same invoice line — qty 10, price 1,000, discount 15%, VAT 10% — posted with and without the module.

Journal entry comparison: standard Odoo vs with this module

What you also get

Pre-discount columns

Five new optional columns in the invoice line editor: Undiscount, Disc Untaxed, Undiscount Tax Basis, Tax Basis. Hidden by default — toggle on per-user.

Refund + purchase symmetry

Works on customer invoices, customer refunds, vendor bills, and vendor refunds. Sign flips correctly; direction matrix documented in README.

Clean re-post flow

Edit discount %, reset to draft, re-post — DISC lines regenerate from the new value. No orphans, no manual cleanup. Idempotent.

Two-level configuration

Set defaults on product.category, override per product.template. Granular tracking where you need it, sensible defaults everywhere else.

Analytics-aware

Inherits analytic_account_id and analytic_tag_ids from the source line. Analytics breakdown remains intact across the DISC split.

Tax-safe

Tax basis computed on post-discount net, exactly like Odoo standard. The DISC split is GL-only — your VAT return, SPT, output VAT all unchanged.

How it compares

Reporting need Standard Odoo With this module
Gross sales total in trial balance net only ✓ gross posted
Discount given as a GL line ✗ invisible ✓ dedicated account
PnL drill-down to discounts ✗ ✓ one click
Per-category tracking ✗ ✓ product.category field
Per-product override ✗ ✓ product.template field
Refund / vendor side net only ✓ sign-flip symmetric
Tax basis post-discount post-discount (unchanged)
Re-post after edit n/a ✓ idempotent

Direction matrix — all four move types

Same code path handles sales and purchases, invoices and refunds. Sign flips automatically based on move_type.

Move type Debit Credit
out_invoice Discount Customer Account original income account
out_refund original income account Discount Customer Account
in_invoice original expense account Discount Vendor Account
in_refund Discount Vendor Account original expense account

Configure without code

Three setup steps, less than three minutes. No Python, no XML, no module restart.

1

Create discount accounts

Accounting → Chart of Accounts → create two new accounts: Discount Given (income-other) and Discount Received (expense-other). Codes follow your local CoA.

2

Map to categories

Inventory → Configuration → Product Categories → pick category → under Account Properties, set Discount Customer Account and Discount Vendor Account.

3

(Optional) per-product override

For products that need separate tracking (slow-mover vs promo discount, etc.), open product.template → Accounting tab → override the account. Falls back to category if blank.

Resolution order at posting time: product.template override → product.category default → skip (no DISC split generated for that line). Blank both = invoice posts normally, exactly like standard Odoo.

Fields added — ready for custom reports

Six new fields on account.move.line, all stored and computed. Use them in QWeb invoice templates or custom XLSX exporters.

Field Purpose
price_undiscount Line total before discount % applied
price_discount_untaxed The discount amount, untaxed — value of the DISC journal split
price_undiscount_untaxed Tax basis as if no discount were applied
price_untaxed Actual taxable base (= price_subtotal, materialised for reports)
price_unit_undiscount_untaxed Per-unit price, pre-discount, post-tax-removal
is_discount_line True on the auto-generated DISC split rows — use to filter them out of reports

Installation — 3 minutes

  1. Purchase & download the module from the Apps Store.
  2. Extract into your Odoo addons path.
  3. Open Apps → Update Apps List.
  4. Search Journal Discount on Invoice Line → click Install.
  5. Create your Discount Given / Discount Received accounts in the Chart of Accounts.
  6. Assign them to your product categories (or per product).

Depends on account only (ships with Odoo Community). Zero custom modules required. No Python packages to install.

One license · All features · Free updates

One-time license

EUR 129

Single database · unlimited users · single fee

  • ✓ All four move types (sales + purchase, invoice + refund)
  • ✓ Per-category + per-product configuration
  • ✓ Six new line-level fields (computed + stored)
  • ✓ Analytics-aware, tax-safe
  • ✓ Idempotent re-post / cancel handling
  • ✓ Source code included (OPL-1)
  • ✓ Free updates within Odoo 15.x
  • ✓ Email support (1 business day)

Need help?

We respond within 1 business day to support requests.

  •   Email: info@alphasoft.co.id
  •   Website: www.alphasoft.co.id
  •   Docs: README.md inside the module

Custom development

Need bespoke accounting workflows? Indonesia Coretax integration, custom XBRL output, multi-jurisdiction templates — we do custom Odoo work. Get in touch.

Compatibility

Odoo version Status
15.0 ✓ This release — 15.0.1.0.0 standalone
14.0 Available — 14.0.1.0.0 standalone (sibling port)
16.0 Available — 16.0.1.1.0 standalone (sibling port)
17.0 Available — 17.0.1.1.0 standalone (sibling port)
18.0 Available — 18.0.1.1.0 standalone (sibling port)
19.0 Same code base · manifest version bump (drop-in port)

Depends on account (stock Odoo). No external Python deps. No aos_base_account required as of 15.0.1.0.0.

License: OPL-1 (Odoo Proprietary License v1.0)  |  Author: Alphasoft  |  Version: 15.0.1.0.0  |  Odoo: 15.0 Community / Enterprise

Trademarks & logos: Odoo® is a trademark of Odoo S.A. Alphasoft is not affiliated with or endorsed by Odoo S.A.

Odoo Proprietary License v1.0

This software and associated files (the "Software") may only be used (executed,
modified, executed after modifications) if you have purchased a valid license
from the authors, typically via Odoo Apps, or if you have received a written
agreement from the authors of the Software (see the COPYRIGHT file).

You may develop Odoo modules that use the Software as a library (typically
by depending on it, importing it and using its resources), but without copying
any source code or material from the Software. You may distribute those
modules under the license of your choice, provided that this license is
compatible with the terms of the Odoo Proprietary License (For example:
LGPL, MIT, or proprietary licenses similar to this one).

It is forbidden to publish, distribute, sublicense, or sell copies of the Software
or modified copies of the Software.

The above copyright notice and this permission notice must be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with