Repository
odoo/odoo · module folder
Module version
1.0
Category
Accounting
Folder size
1.86 MB
License
LGPL-3
Application
No
Auto-installable
No
Website
None
Last tracking update
2026-08-07 05:07:18
Authors
Maintainers
None
Committers
Xavier Morel, Olivier Dony, Fabien Pinckaers, Raphael Collet, Christophe Simonis, Martin Trigaux, Odoo Translation Bot, Denis Ledoux, Goffin Simon, qdp-odoo, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Alexandre Kühn, De Paoli Quentin, Jorge Pinna Puissant, Adrian Torres, mreficent, Xavier-Do, Swapnesh Shah
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
account_banking_reconciliation, account_voucher_print, partner_aging
Description
TODO

old description:
Invoicing & Payments by Accounting Voucher & Receipts
=====================================================
The specific and easy-to-use Invoicing system in Odoo allows you to keep track of your accounting, even when you are not an accountant. It provides an easy way to follow up on your vendors and customers. 

You could use this simplified accounting in case you work with an (external) account to keep your books, and you still want to keep track of payments. 

The Invoicing system includes receipts and vouchers (an easy way to keep track of sales and purchases). It also offers you an easy method of registering payments, without having to encode complete abstracts of account.

This module manages:

* Voucher Entry
* Voucher Receipt [Sales & Purchase]
* Voucher Payment [Customer & Vendors]
    

Code Analysis

Views touched (11)
XML IDNameModelTypeStatus
account_cash_statement_graph account.voucher.graph account.voucher graph New
view_purchase_receipt_form account.voucher.purchase.form account.voucher form New
view_sale_receipt_form account.voucher.sale.form account.voucher form New
view_voucher_filter account.voucher.select account.voucher search New
view_voucher_filter_sale account.voucher.sale.select account.voucher search New
view_voucher_filter_vendor account.voucher.purchase.select account.voucher search New
view_voucher_kanban account.voucher.kanban account.voucher kanban New
view_voucher_line_form account.voucher.line.form account.voucher.line form New
view_voucher_line_tree account.voucher.line.tree account.voucher.line tree New
view_voucher_tree account.voucher.tree account.voucher tree New
view_voucher_tree_purchase account.voucher.tree.supplier account.voucher tree New
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (3)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (22)
  • account_date Date
    copy=False default=fields.Date.context_today help='Effective date for accounting entries' index=True readonly=True states={'draft': [('readonly', False)]} args: 'Accounting Date'
  • account_id Many2one → account.account
    domain="[('deprecated', '=', False), ('internal_type','=', (voucher_type == 'purchase' and 'payable' or 'receivable'))]" readonly=True required=True states={'draft': [('readonly', False)]} args: 'account.account', 'Account'
  • amount Monetary
    compute='_compute_total' readonly=True store=True string='Total'
  • company_id Many2one → res.company
    default=<expr> readonly=True related='journal_id.company_id' states={'draft': [('readonly', False)]} store=True args: 'res.company', 'Company'
  • currency_id Many2one → res.currency
    compute='_get_journal_currency' default=<expr> readonly=True store=True string='Currency' args: 'res.currency'
  • date Date
    copy=False default=fields.Date.context_today index=True readonly=True states={'draft': [('readonly', False)]} args: 'Bill Date'
  • date_due Date
    index=True readonly=True states={'draft': [('readonly', False)]} args: 'Due Date'
  • journal_id Many2one → account.journal
    default=_default_journal readonly=True required=True states={'draft': [('readonly', False)]} args: 'account.journal', 'Journal'
  • line_ids One2many → account.voucher.line
    copy=True readonly=True states={'draft': [('readonly', False)]} args: 'account.voucher.line', 'voucher_id', 'Voucher Lines'
  • move_id Many2one → account.move
    copy=False args: 'account.move', 'Journal Entry'
  • name Char
    copy=False default='' readonly=True states={'draft': [('readonly', False)]} args: 'Payment Memo'
  • narration Text
    readonly=True states={'draft': [('readonly', False)]} args: 'Notes'
  • number Char
    copy=False readonly=True
  • paid Boolean
    compute='_check_paid' help='The Voucher has been totally paid.'
  • partner_id Many2one → res.partner
    change_default=1 readonly=True states={'draft': [('readonly', False)]} args: 'res.partner', 'Partner'
  • pay_now Selection
    default='pay_later' index=True readonly=True states={'draft': [('readonly', False)]} args: [('pay_now', 'Pay Directly'), ('pay_later', 'Pay Later')], 'Payment'
  • payment_journal_id Many2one → account.journal
    default=_default_payment_journal domain="[('type', 'in', ['cash', 'bank'])]" readonly=True states={'draft': [('readonly', False)]} string='Payment Method' args: 'account.journal'
  • reference Char
    copy=False help='The partner reference of this document.' readonly=True states={'draft': [('readonly', False)]} args: 'Bill Reference'
  • state Selection
    copy=False default='draft' help=" * The 'Draft' status is used when a user is encoding a new and unconfirmed Voucher.\n * The 'Pro-forma' status is used when the voucher does not have a voucher number.\n * The 'Posted' status is used when user create voucher,a voucher number is generated and voucher entries are created in account.\n * The 'Cancelled' status is used when user cancel voucher." readonly=True track_visibility='onchange' args: [('draft', 'Draft'), ('cancel', 'Cancelled'), ('proforma', 'Pro-forma'), ('posted', 'Posted')], 'Status'
  • tax_amount Monetary
    compute='_compute_total' readonly=True store=True
  • tax_correction Monetary
    help='In case we have a rounding problem in the tax, use this field to correct it' readonly=True states={'draft': [('readonly', False)]}
  • voucher_type Selection
    oldname='type' readonly=True states={'draft': [('readonly', False)]} string='Type' args: [('sale', 'Sale'), ('purchase', 'Purchase')]
Public methods (12)
  • account_move_get(self)
    @api.multi
  • action_cancel_draft(self)
    @api.multi
  • action_move_line_create(self)
    @api.multi
    Confirm the vouchers given in ids and create the journal entries for each of them
  • cancel_voucher(self)
    @api.multi
  • first_move_line_get(self, move_id, company_currency, current_currency)
    @api.multi
  • name_get(self)
    @api.multi@api.depends('name', 'number')
  • onchange_date(self)
    @api.onchange('date')
  • onchange_partner_id(self)
    @api.onchange('partner_id', 'pay_now')
  • proforma_voucher(self)
    @api.multi
  • unlink(self)
    @api.multi
  • voucher_move_line_create(self, line_total, move_id, company_currency, current_currency)
    @api.multi
    Create one account move line, on the given account move, per voucher line where amount is not 0.0. It returns Tuple with tot_line what is total of difference between debit and credit and a list of lists with ids to be reconciled with this format (total_deb_cred,list_of_lists). :param voucher_id: Voucher id what we are working with :param line_total: Amount of the first line, which correspond to the amount we should totally split among all voucher lines. :param move_id: Account move wher those lines will be joined. :param company_currency: id of currency of the company to which the voucher belong :param current_currency: id of currency of the voucher :return: Tuple build as (remaining amount not allocated on voucher lines, list of account_move_line created in this method) :rtype: tuple(float, list of int)
  • voucher_pay_now_payment_create(self)
    @api.multi

New fields (13)
  • account_analytic_id Many2one → account.analytic.account
    args: 'account.analytic.account', 'Analytic Account'
  • account_id Many2one → account.account
    domain=[('deprecated', '=', False)] help='The income or expense account related to the selected product.' required=True string='Account' args: 'account.account'
  • analytic_tag_ids Many2many → account.analytic.tag
    string='Analytic Tags' args: 'account.analytic.tag'
  • company_id Many2one → res.company
    readonly=True related='voucher_id.company_id' store=True string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    readonly=False related='voucher_id.currency_id' args: 'res.currency'
  • name Text
    required=True string='Description'
  • price_subtotal Monetary
    compute='_compute_subtotal' readonly=True store=True string='Amount'
  • price_unit Float
    digits=dp.get_precision('Product Price') oldname='amount' required=True string='Unit Price'
  • product_id Many2one → product.product
    index=True ondelete='set null' string='Product' args: 'product.product'
  • quantity Float
    default=1 digits=dp.get_precision('Product Unit of Measure') required=True
  • sequence Integer
    default=10 help='Gives the sequence of this line when displaying the voucher.'
  • tax_ids Many2many → account.tax
    help='Only for tax excluded from price' string='Tax' args: 'account.tax'
  • voucher_id Many2one → account.voucher
    ondelete='cascade' required=1 args: 'account.voucher', 'Voucher'
Public methods (1)
  • product_id_change(self, product_id, partner_id=False, price_unit=False, company_id=None, currency_id=None, type=None)
    @api.multi

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…