Repository
odoo/odoo · module folder
Module version
1.4
Category
Accounting/Accounting
Folder size
58.37 MB
License
LGPL-3
Application
Yes
Auto-installable
No
Website
https://www.odoo.com/app/invoicing
Last tracking update
2026-08-20 10:12:45
Authors
Odoo S.A.
Maintainers
Odoo S.A.
Committers
Xavier Morel, Xavier ALT, Thibault Francois, Fabien Pinckaers, Raphael Collet, Christophe Simonis, Thibault Delavallée, Alexis de Lattre, odoo, Florent Xicluna, Josse Colpaert, Odoo Translation Bot, Joren Van Onder, Nicolas Martinelli, Nicolas Lempereur, qdp-odoo, Aaron Bohy, Géry Debongnie, Damien Bouvy, Laurent Smet, Quentin De Paoli, Christophe Monniez, Jorge Pinna Puissant, Arnold Moyaux, Julien Castiaux, Denis Roussel, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Paul Morelle, Sébastien Theys, oco-odoo, Julien Mougenot, Anh Thao Pham (pta), svs-odoo, Alvaro Fuentes, Achraf (abz), Brice bib Bartoletti, Prakash Prajapati, Rémy Voet (ryv), Tiffany Chang (tic), fja-odoo, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, Yenthe666, William Braeckman, roen-odoo, Benoit Socias, Jigar Vaghela, william-andre, Florian Charlier, Louis Baudoux, John Laterre (jol), Thomas Beckers, Abdelouahab (abla), Ruben Gomes, assellalou, Florian Gilbert, Aurelien van Delft (avd), luvi, Hubert Van De Walle, Florian(flg), Valentin Chevalier, Renaud Thiry, Julien Banken, Pierrot (prro), jbw-odoo, Habib (ayh), François Honoré, Louis Wicket (wil), alsh-odoo, Pedram (PEBR), Mylyna Hy, Adrien Widart (awt), Maximilien (malb), Victor Piryns (pivi), Thomas Becquevort (thbe), Mahamadasif Ansari, Gauthier Wala (gawa), Ali Alfie (alal), Pierre-Yves Dufays, Andrew Gavgavian, Claire Bretton (clbr), Yosua Nicolaus, Robin Lejeune (role), Levi Siuzdak (sile), Naman Shah, hupo-odoo, Dylan Kiss (dyki), Carsten Wolff (cawo), Paolo Gatti, Antoine Boonen, Jinane Maksoud, Antoine Dupuis (andu), Julien Alardot (jual), Chong Wang (cwg), Odoo, Vivek Pathak, Brieuc-brd, Nguyễn Đại Dương, Harsh Modi, Zeel Patel, Sarah Bellefroid, Arnaud Sibille, adda-odoo, omra-odoo, Joris Makauskis, kdeb@odoo.com, sesn-odoo, Nicolas Viseur (vin), guva-odoo, Jay Savaliya, maad-odoo, Paul Stroobant, Aurelien MARIE (auma), Ethan Vincent, Maryam Kia, Louis (loti), jorv-odoo, reka-odoo, Sven Fuehr, AMZIL Ayoub, yosa-odoo, Seif (segn), Mohamed GadAlrab, vava-odoo, Julien Carion (juca), jobl, Bastien Fafchamps (bafa), kcv-odoo, odoostan, mega, SaddemAmine, Martin Trigaux (mat), Louis Gobert, Agustin Castro Bugallo, Rodolpho Lima, Chrysanthe (chgo), asno-odoo, mano-odoo, dijo-odoo, Harsh Shah, hatr-odoo, manv-afk, Hussein Ebrahim(hyhe), aamo-odoo, Joseph (jcb), Victorien (viso), thle-odoo, Mathieu Coutant, Khumam Alzagim, guce, yagp-odoo, Ahmad (alah), Sanchit Gupta, komugi-al, Stéphane Diez, Aungkokolin1997, Ryan Cen, casp-odoo, Claire (clbr), Rocío Vega, gteboul, Antoine (anso), Abdo Mongy, unka-odoo, Hammad Arif, prep-odoo, Léo Gizard, Antoine Dupuis, Hesham Saleh, Julien Schwanen, Saif (segn), Ian, Victor Miguel Armenta Carrillo, dija-odoo, Maira Salazar (srma), Kawtar Drissi El Bouzaidi (kdeb), Ezzuldin Zaky (ezza), sben-odoo, Logan Staelens, Smit Patel, Ahmed Abdelaziz Hasaneen, Arthur Nanson, Ricardo Gomes Rodrigues, st-yes, aizu-odoo, Emeka Ubakanma, AhmedElemary57, roto-odoo, gvar-odoo, Trinh Ngoc Hung, elhayyany, Cuong, Nguyen Minh Tran Manh, pkgu-odoo, Mohammad Abdulmoneim (abdu), Iván Todorovich, khsr-odoo, Pierre Lamotte (pila), Pierre Pulinckx, Anton Romanova (roan), Bastien PIERRE, nikj-odoo, Michaël Mattiello, masm-odoo, Corentin Heinix (cohe), Allesio, Corentin Lombard, ppat-odoo, Shrey Mehta, Carmine, Sherif Gabr, pish-odoo, Mahdi Alijani (malj), Panagiotis Kyriakou, MaximeNoirhomme, bona-odoo, plha-odoo, Thomas Josse (THJO), Krzysztof Magusiak (krma), devp-odoo, nape-odoo, Omar (OSAH), Ajit Singh, Akash Pandey, dvsh-odoo, AllePilli, krip-odoo, Hazem Ibrahim, Robin Engels (roen), Basioni (basm), sagu-odoo, rida, utma-odoo, Hadi El Yakhni, Ester Andreetto, nsirjacobs, ijja-odoo, bhra-odoo, Earth Patel, mojem, pajo, bhna-odoo, Dirk Douglas, thha-odoo, MAGREMENT, aksi-odoo, mohannedah, Junqi, agbr-odoo, Lulu Grimalkin (lugr), Yash Pathak, rare-odoo, sawer, Yassien Ghoniem, Jugurtha, igbe, Lancelot Semal, Mongy (abmn), Jeanne Delneste, hisi-odoo, Laurent Smet (LAS), aans-odoo, adip-odoo, macs-odoo, shka-odoo, Jérôme Belpaire, suju-odoo, josv-odoo, Martin Doyen, path-odoo, Waleed Elgamal, Jacob Was (jacw), steji, h4818, leclerc-leo, krge-odoo, Ashish Nirmal, Ayush Modi, Karna, Orrin Zhong, Manav Shah, malb, Saurabh, Amr Elkhatieb, jond-odoo, Nisarg (nipl), assh-odoo, Robert Smith (rosm), Elliot ELCO, Felipe Garcia Suez, Lionel Piraux (lipi), suma-odoo, Kevin Gerard (kege), hossamelgendy1, Quentin George, matd-odoo, YoussefM890, rapa, jand-odoo, Mohamed Barakat, Merlin Guillaume, Leonardo Medina, Luigys Toro, saurabh, rugot-odoo, pkri-odoo, Nguyen Nguyen (ngtpn), Stephane Vanmeerhaeghe (stva), Eve Lin (evlin), Léo Gizard (legi), shzi-odoo, Romain (roto), Zachary (zavan), Yosua Nicolaus (yoni), smjo-odoo, Kadam Darji, Abo Taha, Mauricio Rubio Haro, Maximilien, Nils Coenen, abmn-odoo, Andrii Kompaniiets, baje-odoo, FWA-Amri.WICAHYO, Akash, odootechatamas, Rebeca Ramírez (lare), soza-odoo, Suresh Badikala, Farah (ahmfa), ELCO, Adham Abdeltawab, Camila Vives, chpa-odoo, 3amo-magdy, Romain ROSANO (rros), Dhrumit Parmar, vifu-odoo, Wajih-Wanis, Quách Thế Hào, jeanschoenlaub, apan-odoo, metu-odoo, Hembert Iregui, Himilsinh Sindha
Odoo dependencies
Python dependencies
None
System dependencies
None
Required by
account_account_tag_code, account_add_gln, account_analytic_distribution_model_recalculate, account_analytic_required, account_analytic_tag, account_asset_management, account_budget_oca, account_chart_update, account_check_deposit, account_check_printing, account_comment_template, account_commission_oca, account_credit_control, account_debit_note, account_due_list, account_edi, account_edi_finvoice, account_edi_proxy_client, account_edi_ubl_cii, account_financial_report, account_financial_risk, account_fiscal_position_allowed_journal, account_fiscal_position_vat_check, account_fiscal_year, account_fiscal_year_closing, account_fleet, account_global_discount, account_invoice_clearing, account_invoice_constraint_chronology, account_invoice_export, account_invoice_fixed_discount, account_invoice_import, account_invoice_inter_company, account_invoice_line_report, account_invoice_margin, account_invoice_overdue_warn, account_invoice_pricelist, account_invoice_production_lot, account_invoice_refund_code, account_invoice_refund_link, account_invoice_section_sale_order, account_invoice_show_currency_rate, account_invoice_start_end_dates, account_invoice_tax_note, account_invoice_transmit_method, account_invoice_tree_currency, account_invoice_triple_discount, account_journal_general_sequence, account_journal_lock_date, account_journal_restrict_mode, account_lock_date_update, account_move_cancel_confirm, account_move_line_payment, account_move_name_sequence, account_move_pivot_view, account_move_post_date_user, account_move_print, account_move_substate, account_move_template, account_move_tier_validation, account_move_total_by_account_internal_group, account_move_update_analytic, account_netting, account_operating_unit, account_partner_company_group, account_payment, account_payment_method_base, account_payment_mode, account_payment_notification, account_payment_return, account_payment_term_cutoff_day, account_payment_term_extension, account_payroll_sheet_import, account_peppol_advanced_fields, account_qr_code_emv, account_qr_code_sepa, account_receipt_journal, account_statement_base, account_tax_balance, account_tax_fixed_amount_currency, account_tax_fixed_amount_multiplier, account_tax_python, account_tax_unece, account_test, account_update_tax_tags, account_usability, base_iban, base_vat, companyweb_payment_info, contract, currency_rate_update, date_range_account, datev_export, datev_export_dtvf, datev_import_csv_dtvf, ebill_postfinance, event_product, fieldservice_account, hotel, hr_expense, intrastat_base, l10n_account_withholding_tax, l10n_ae, l10n_ar, l10n_at, l10n_au, l10n_bd, l10n_be, l10n_bf, l10n_bg, l10n_bh, l10n_bj, l10n_bo, l10n_br, l10n_br_coa, l10n_ca, l10n_cd, l10n_cf, l10n_cg, l10n_ch, l10n_ci, l10n_cl, l10n_cm, l10n_cn, l10n_co, l10n_co_electronic_invoice, l10n_co_withholding_advance, l10n_cr, l10n_cy, l10n_cz, l10n_de, l10n_din5008, l10n_dk, l10n_do, l10n_dz, l10n_ec, l10n_ee, l10n_eg, l10n_es, l10n_es_partner, l10n_et, l10n_eu_oss, l10n_fi, l10n_fi_edicode, l10n_fi_sale_refund_payment_reference, l10n_fr_account, l10n_fr_facturx_chorus_pro, l10n_ga, l10n_gcc_invoice, l10n_ge, l10n_gn, l10n_gq, l10n_gr, l10n_gt, l10n_gw, l10n_hk, l10n_hn, l10n_hr, l10n_hr_kuna, l10n_hu, l10n_id, l10n_ie, l10n_il, l10n_in, l10n_iq, l10n_ir_account, l10n_it, l10n_it_abicab, l10n_jo, l10n_jp, l10n_ke, l10n_km, l10n_kr, l10n_kw, l10n_kz, l10n_latam_check, l10n_latam_invoice_document, l10n_lb_account, l10n_lk, l10n_lt, l10n_lu, l10n_lv, l10n_ma, l10n_mc, l10n_ml, l10n_mn, l10n_mr, l10n_mt, l10n_mu_account, l10n_mx, l10n_mx_cfdi_comex, l10n_mx_sat_vendor_bill, l10n_my, l10n_mz, l10n_ne, l10n_ng, l10n_nl, l10n_nl_tax_statement, l10n_no, l10n_nz, l10n_om, l10n_pa, l10n_pe, l10n_ph, l10n_pk, l10n_pl, l10n_pt, l10n_pt_account_invoicexpress, l10n_pt_vat, l10n_qa, l10n_ro, l10n_ro_account, l10n_ro_account_edit_currency_rate, l10n_ro_payment_to_statement, l10n_rs, l10n_rw, l10n_sa, l10n_se, l10n_sg, l10n_si, l10n_sk, l10n_sn, l10n_syscohada, l10n_td, l10n_tg, l10n_th, l10n_th_account_tax, l10n_tn, l10n_tr, l10n_tw, l10n_tz_account, l10n_ua, l10n_ug, l10n_uk, l10n_us_account, l10n_uy, l10n_uz, l10n_ve, l10n_vn, l10n_za, l10n_zm_account, lims, loyalty, mail_attach_existing_attachment_account, membership, mis_builder, mis_builder_budget, partner_invoicing_mode, partner_invoicing_mode_at_shipping, partner_manual_rank, partner_statement, pms_account, portal_account_personal_data_only, product_email_template, product_form_account_move_line_link, product_margin, product_matrix, product_standard_margin, product_tax_multicompany_default, product_variant_attribute_tax, product_variant_sale_price, project_account, purchase, purchase_partner_incoterm, sale_invoice_frequency, sale_order_type, shopify_connector, shopify_connector_account, snailmail_account, spreadsheet_account, spreadsheet_dashboard_account, srm, stock_account, stock_picking_invoicing, subscription_oca, test_auditlog, test_main_flows, web_widget_product_label_section_and_note_full_label, web_widget_product_label_section_and_note_name_visibility, web_widget_section_and_note_text_scrollable, website_crm_partner_assign
Description
Invoicing & Payments
====================
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. This module also offers you an easy method of registering payments, without having to encode complete abstracts of account.
    

Code Analysis

Views touched (178)
XML IDNameModelTypeStatus
account.account_terms_conditions_setting_banner Account Terms and Conditions Setting Banner ir.ui.view qweb New
account_analytic_account_view_form_inherit account.analytic.account.form.inherit account.analytic.account form Inherits analytic.view_account_analytic_account_form
account_analytic_account_view_list_inherit account.analytic.account.list.inherit account.analytic.account list Inherits analytic.view_account_analytic_account_list
account_analytic_distribution_model_form_inherit account.analytic.distribution.model.inherit.form account.analytic.distribution.model form Inherits analytic.account_analytic_distribution_model_form_view
account_analytic_distribution_model_tree_inherit account.analytic.distribution.model.inherit.list account.analytic.distribution.model list Inherits analytic.account_analytic_distribution_model_tree_view
account_analytic_plan_form_view_inherit_account account.analytic.plan.inherit.form account.analytic.plan form Inherits analytic.account_analytic_plan_form_view
account_automatic_entry_wizard_form account.automatic.entry.wizard.form account.automatic.entry.wizard form New
account_bank_statement_graph account.bank.statement.graph account.bank.statement graph New
account_bank_statement_pivot account.bank.statement.pivot account.bank.statement pivot New
account_default_terms_and_conditions account_default_terms_and_conditions ir.ui.view qweb New
account_incoterms_form account.incoterms.form account.incoterms form New
account_incoterms_view_search account.incoterms.search account.incoterms search New
account_invoice_report_view_tree account.invoice.report.view.list account.invoice.report list New
account_journal_dashboard_kanban_view account.journal.dashboard.kanban account.journal kanban New
account_journal_view_kanban account.journal.kanban account.journal kanban New
account_merge_wizard_form account.merge.wizard.form account.merge.wizard form New
account_move_line_graph_date account.move.line.graph account.move.line graph New
account_move_line_view_kanban account.move.line.kanban account.move.line kanban New
account_move_line_view_kanban_mobile account.move.line.kanban.mobile account.move.line kanban Inherits account_move_line_view_kanban
account_move_send_batch_wizard_form account.move.send.batch.wizard.form account.move.send.batch.wizard form New
account_move_send_wizard_form account.move.send.wizard.form account.move.send.wizard form New
account_move_view_activity account.move.view.activity account.move activity New
account_resequence_view Re-sequence Journal Entries account.resequence.wizard form New
account_tag_view_form Tags account.account.tag form New
account_tag_view_search account.tag.view.search account.account.tag search New
account_tag_view_tree Tags account.account.tag list New
account_tax_fiscal_position_view_tree account.fiscal.position.tax.list account.tax list Inherits account.account_tax_view_tree
account_tax_group_view_search account.tax.group.search.filters account.tax.group search New
account_tax_view_search account.tax.search.filters account.tax search New
account_tax_view_tree account.invoice.line.tax.search account.tax list New
account_terms_conditions_page Terms & Conditions ir.ui.view qweb New
autopost_bills_wizard Autopost Bills account.autopost.bills.wizard form New
bill_preview bill_preview ir.ui.view qweb New
country_group_form_inherit_account res.country.group.form.inherit.account res.country.group form Inherits base.view_country_group_form
digest_digest_view_form digest.digest.view.form.inherit.account.account digest.digest form Inherits digest.digest_digest_view_form
document_tax_totals document_tax_totals ir.ui.view qweb Inherits account.document_tax_totals_template
document_tax_totals_company_currency_template document_tax_totals_company_currency_template ir.ui.view qweb New
document_tax_totals_template document_tax_totals_template ir.ui.view qweb New
email_template_mail_gateway_failed email_template_mail_gateway_failed ir.ui.view qweb New
init_accounts_tree account.setup.opening.move.line.list account.account list New
ir_actions_report_form_inherit_account ir.actions.report.form.inherit.account ir.actions.report form Inherits base.act_report_xml_view
partner_missing_account_list_view res.partner.list res.partner list New
partner_view_buttons partner.view.buttons res.partner form Inherits base.view_partner_form
portal_invoice_error Invoice error/warning display ir.ui.view qweb New
portal_invoice_page Invoice/Bill ir.ui.view qweb Inherits portal.portal_sidebar
portal_invoice_required_fields_form portal_invoice_required_fields_form ir.ui.view qweb New
portal_invoice_success Invoice success display ir.ui.view qweb New
portal_my_details portal_my_details ir.ui.view qweb Inherits portal.portal_my_details
portal_my_home_invoice Invoices / Bills ir.ui.view qweb Inherits portal.portal_my_home
portal_my_home_menu_invoice Portal layout : invoice menu entries ir.ui.view qweb Inherits portal.portal_breadcrumbs
portal_my_invoices My Invoices and Payments ir.ui.view qweb New
portal_my_journal_mail_notifications My journal email notification settings ir.ui.view qweb New
product_product_view_form_normalized_account product.product.view.form.normalized.account.inherit product.product form Inherits product.product_product_view_form_normalized
product_template_form_view product.template.form.inherit product.template form Inherits product.product_template_form_view
product_template_list_view_purchasable_inherit product.template.list.purchasable.inherit product.template list Inherits product.product_template_list_view_purchasable
product_template_list_view_sellable_inherit product.template.list.sellable.inherit product.template list Inherits product.product_template_list_view_sellable
product_uom_form_view_inherit product_uom_form_view_inherit uom.uom form Inherits uom.product_uom_form_view
product_view_search_catalog product.view.search.catalog.inherit.account product.product search Inherits product.product_view_search_catalog
report_hash_integrity report_hash_integrity ir.ui.view qweb New
report_invoice report_invoice ir.ui.view qweb New
report_invoice_document report_invoice_document ir.ui.view qweb New
report_invoice_document_preview report_invoice_document_preview ir.ui.view qweb Inherits account.report_invoice_document
report_invoice_qr_code_preview report_invoice_qr_code_preview ir.ui.view qweb New
report_invoice_with_payments report_invoice_with_payments ir.ui.view qweb New
report_invoice_wizard_iframe report_invoice_wizard_iframe ir.ui.view qweb New
report_invoice_wizard_preview_inherit_account report_invoice_wizard_preview_inherit_account ir.ui.view qweb Inherits web.report_invoice_wizard_preview
report_original_vendor_bill report_original_vendor_bill ir.ui.view qweb New
report_payment_receipt report_payment_receipt ir.ui.view qweb New
report_payment_receipt_document report_payment_receipt_document ir.ui.view qweb New
report_statement report_statement ir.ui.view qweb New
report_statement_internal_layout report_statement_internal_layout ir.ui.view qweb Inherits web.internal_layout
res_company_form_view_onboarding res.company.form.view.onboarding res.company form New
res_company_form_view_onboarding_sale_tax res.company.form.view.onboarding.sale.tax res.company form New
res_company_view_form_terms res.company.view.form.terms res.company form New
res_config_settings_view_form res.config.settings.view.form.inherit.account res.config.settings form Inherits base.res_config_settings_view_form
res_config_settings_view_form_base_setup res.config.settings.view.form.inherit.base_setup res.config.settings form Inherits base_setup.res_config_settings_view_form
res_currency_form_inherit res.currency.form.inherit res.currency form Inherits base.view_currency_form
res_partner_view_search res.partner.search.inherit res.partner search Inherits base.view_res_partner_filter
res_partner_view_tree res.partner.list.inherit.account res.partner list Inherits base.view_partner_tree
rounding_form_view account.cash.rounding.form account.cash.rounding form New
rounding_search_view account.cash.rounding.search account.cash.rounding search New
rounding_tree_view account.cash.rounding.list account.cash.rounding list New
setup_bank_account_wizard account.online.sync.res.partner.bank.setup.form account.setup.bank.manual.config form New
setup_credit_card_account_wizard account.online.sync.res.partner.credit.card.setup.form account.setup.bank.manual.config form New
setup_financial_year_opening_form account.financial.year.op.setup.wizard.form account.financial.year.op form New
tax_repartition_line_tree account.tax.repartition.line.list account.tax.repartition.line list New
tests_shared_js_python tests_shared_js_python ir.ui.view qweb New
validate_account_move_view Confirm Entries validate.account.move form New
view_account_account_kanban account.account.kanban account.account kanban New
view_account_accrued_orders_wizard account.accrued.orders.wizard.view account.accrued.orders.wizard form New
view_account_analytic_line_filter_inherit_account account.analytic.line.select.inherit.account account.analytic.line Inherits analytic.view_account_analytic_line_filter
view_account_analytic_line_form_inherit_account account.analytic.line.form.inherit.account account.analytic.line form Inherits analytic.view_account_analytic_line_form
view_account_analytic_line_pivot account.analytic.line.pivot account.analytic.line pivot Inherits analytic.view_account_analytic_line_pivot
view_account_analytic_line_tree_inherit_account account.analytic.line.list.inherit.account account.analytic.line list Inherits analytic.view_account_analytic_line_tree
view_account_bill_filter account.invoice.select account.move search Inherits account.view_account_invoice_filter
view_account_form account.account.form account.account form New
view_account_group_form account.group.form account.group form New
view_account_group_search account.group.search account.group search New
view_account_group_tree account.group.list account.group list New
view_account_invoice_filter account.invoice.select account.move search New
view_account_invoice_report_graph account.invoice.report.graph account.invoice.report graph New
view_account_invoice_report_pivot account.invoice.report.pivot account.invoice.report pivot New
view_account_invoice_report_search account.invoice.report.search account.invoice.report search New
view_account_journal_form account.journal.form account.journal form New
view_account_journal_group_form account.journal.group.form account.journal.group form New
view_account_journal_group_tree account.journal.group.list account.journal.group list New
view_account_journal_search account.journal.search account.journal search New
view_account_journal_tree account.journal.list account.journal list New
view_account_list account.account.list account.account list New
view_account_lock_exception_form account.lock_exception.form account.lock_exception form New
view_account_move_filter account.move.select account.move search New
view_account_move_kanban account.move.kanban account.move kanban New
view_account_move_line_filter account.move.line.search account.move.line search New
view_account_move_line_payment_filter account.move.line.payment.search account.move.line search New
view_account_move_reversal account.move.reversal.form account.move.reversal form New
view_account_move_with_gaps_in_sequence_filter account.move.with.gaps.in.sequence.filter account.move search Inherits account.view_account_invoice_filter
view_account_payment_form account.payment.form account.payment form New
view_account_payment_graph account.payment.graph account.payment graph New
view_account_payment_kanban account.payment.kanban account.payment kanban New
view_account_payment_method_line_kanban_mobile account.payment.method.line.kanban account.payment.method.line kanban New
view_account_payment_method_line_tree account.payment.method.line.list account.payment.method.line list New
view_account_payment_register_form account.payment.register.form account.payment.register form New
view_account_payment_search account.payment.search account.payment search New
view_account_payment_term_kanban account.payment.term.kanban account.payment.term kanban New
view_account_payment_tree account.payment.list account.payment list New
view_account_position_filter account.fiscal.position.filter account.fiscal.position search New
view_account_position_form account.fiscal.position.form account.fiscal.position form New
view_account_position_tree account.fiscal.position.list account.fiscal.position list New
view_account_reconcile_model_form account.reconcile.model.form account.reconcile.model form New
view_account_reconcile_model_search account.reconcile.model.search account.reconcile.model search New
view_account_reconcile_model_tree account.reconcile.model.list account.reconcile.model list New
view_account_search account.account.search account.account search New
view_account_secure_entries_wizard account.secure.entries.wizard.form account.secure.entries.wizard form New
view_account_supplier_payment_tree account.supplier.payment.list account.payment list Inherits account.view_account_payment_tree
view_account_tax_search account.tax.search account.tax search New
view_account_various_payment_tree account.supplier.payment.list account.payment list Inherits account.view_account_payment_tree
view_bank_statement_search account.bank.statement.search account.bank.statement search New
view_bank_statement_tree account.bank.statement.list account.bank.statement list New
view_base_document_layout Document Layout base.document.layout Inherits web.view_base_document_layout
view_category_property_form product.category.property.form.inherit product.category form Inherits product.product_category_form_view
view_company_form res.company.form.inherit.account res.company form Inherits base.view_company_form
view_duplicated_moves_tree_js account.duplicated.moves.list.js account.move list Inherits account.view_invoice_tree
view_full_reconcile_form account.full.reconcile.form account.full.reconcile form New
view_in_invoice_bill_tree account.out.invoice.list account.move list Inherits account.view_in_invoice_tree
view_in_invoice_refund_tree account.out.invoice.list account.move list Inherits account.view_in_invoice_tree
view_in_invoice_tree account.out.invoice.list account.move list Inherits account.view_invoice_tree
view_incoterms_tree account.incoterms.list account.incoterms list New
view_invoice_tree account.invoice.list account.move list New
view_message_tree_audit_log mail.message.list.inherit.audit.log mail.message list New
view_message_tree_audit_log_search mail.message.search mail.message search New
view_module_filter_inherit_account ir.module.module.list.inherit.account ir.module.module list Inherits base.view_module_filter
view_move_form account.move.form account.move form New
view_move_line_form account.move.line.form account.move.line form New
view_move_line_payment_tree account.move.line.payment.list account.move.line list New
view_move_line_pivot account.move.line.pivot account.move.line pivot New
view_move_line_tax_audit_tree account.move.line.tax.audit.list account.move.line list Inherits account.view_move_line_tree
view_move_line_tree account.move.line.list account.move.line list New
view_move_line_tree_grouped_bank_cash account.move.line.list.grouped.bank.cash account.move.line list Inherits account.view_move_line_tree
view_move_line_tree_grouped_general account.move.line.list.grouped.misc account.move.line list Inherits account.view_move_line_tree
view_move_line_tree_grouped_misc account.move.line.list.grouped.misc account.move.line list Inherits account.view_move_line_tree
view_move_line_tree_grouped_partner account.move.line.list.grouped.partner account.move.line list Inherits account.view_move_line_tree
view_move_line_tree_grouped_sales_purchases account.move.line.list.grouped.sales.purchase account.move.line list Inherits account.view_move_line_tree
view_move_tree account.move.list account.move list New
view_move_tree_multi_edit account.move.list.multi.edit account.move list Inherits account.view_move_tree
view_onboarding_tax_tree account.onboarding.tax.list account.tax list Inherits account.view_tax_tree
view_out_credit_note_tree account.out.invoice.list account.move list Inherits account.view_invoice_tree
view_out_invoice_tree account.out.invoice.list account.move list Inherits account.view_invoice_tree
view_partner_bank_form_inherit_account res.partner.bank.form.inherit.account res.partner.bank form Inherits base.view_partner_bank_form
view_partner_bank_search_inherit res.partner.bank.search.inherit res.partner.bank search Inherits base.view_partner_bank_search
view_partner_property_form res.partner.property.form.inherit res.partner form Inherits base.view_partner_form
view_payment_term_form account.payment.term.form account.payment.term form New
view_payment_term_search account.payment.term.search account.payment.term search New
view_payment_term_tree account.payment.term.list account.payment.term list New
view_tax_form account.tax.form account.tax form New
view_tax_group_form account.tax.group.form account.tax.group form New
view_tax_group_tree account.tax.group.list account.tax.group list New
view_tax_kanban account.tax.kanban account.tax kanban New
view_tax_tree account.tax.list account.tax list New
HTTP endpoints (12)
Route(s)HandlerAuthTypeMethodsFlags
/account/download_invoice_attachments/<models("ir.attachment"):attachments> AccountDocumentDownloadController.download_invoice_attachments user http ALL
/account/download_invoice_documents/<models("account.move"):invoices>/<string:filetype> AccountDocumentDownloadController.download_invoice_documents_filetype user http ALL
/account/download_move_attachments/<models("account.move"):moves> AccountDocumentDownloadController.download_move_attachments user http ALL
/my/invoices/<int:invoice_id> PortalAccount.portal_my_invoice_detail public http ALL website
/my/invoices, /my/invoices/page/<int:page> PortalAccount.portal_my_invoices user http ALL website
/my/journal/<int:journal_id>/unsubscribe PortalAccount.portal_my_journal_unsubscribe public http GET, POST sudo website
/product/catalog/create_section ProductCatalogAccountController.product_catalog_create_section user jsonrpc ALL
/product/catalog/get_sections ProductCatalogAccountController.product_catalog_get_sections user jsonrpc ALL
/product/catalog/resequence_sections ProductCatalogAccountController.product_catalog_resequence_sections user jsonrpc ALL
/terms TermsController.terms_conditions public http ALL sudo website
/account/init_tests_shared_js_python TestsSharedJsPython.route_init_tests_shared_js_python user http ALL website
/account/post_tests_shared_js_python TestsSharedJsPython.route_post_tests_shared_js_python user jsonrpc ALL
Models touched (92)

New fields (28)
  • account_type Selection
    compute='_compute_account_type' help='Account Type is used for information purpose, to generate country-specific legal reports, and set the rules to close a fiscal year and generate opening entries.' index=True precompute=True readonly=False required=True selection=[('asset_receivable', 'Receivable'), ('asset_cash', 'Bank and Cash'), ('asset_current', 'Current Assets'), ('asset_non_current', 'Non-current Assets'), ('asset_prepayments', 'Prepayments'), ('asset_fixed', 'Fixed Assets'), ('liability_payable', 'Payable'), ('liability_credit_card', 'Credit Card'), ('liability_current', 'Current Liabilities'), ('liability_non_current', 'Non-current Liabilities'), ('equity', 'Equity'), ('equity_unaffected', 'Current Year Earnings'), ('income', 'Income'), ('income_other', 'Other Income'), ('expense', 'Expenses'), ('expense_other', 'Other Expenses'), ('expense_depreciation', 'Depreciation'), ('expense_direct_cost', 'Cost of Revenue'), ('off_balance', 'Off-Balance Sheet')] store=True string='Type' tracking=True
  • active Boolean
    default=True tracking=True
  • code Char
    compute='_compute_code' inverse='_inverse_code' search='_search_code' size=64 string='Code' tracking=True
  • code_mapping_ids One2many → account.code.mapping
    comodel_name='account.code.mapping' inverse_name='account_id'
  • code_store Char
    company_dependent=True
  • company_currency_id Many2one → res.currency
    compute='_compute_company_currency_id' args: 'res.currency'
  • company_fiscal_country_code Char
    compute='_compute_company_fiscal_country_code'
  • company_ids Many2many → res.company
    default=<expr> depends_context=('uid') readonly=False required=True string='Companies' args: 'res.company'
  • currency_id Many2one → res.currency
    help='Forces all journal items in this account to have a specific currency (i.e. bank journals). If no currency is set, entries can use any currency.' string='Account Currency' tracking=True args: 'res.currency'
  • current_balance Float
    compute='_compute_current_balance'
  • description Text
    translate=True
  • display_mapping_tab Boolean
    default=<expr> store=False
  • group_id Many2one → account.group
    compute='_compute_account_group' help='Account prefixes can determine account groups.' args: 'account.group'
  • include_initial_balance Boolean
    compute='_compute_include_initial_balance' help='Used in reports to know if we should consider journal items from the beginning of time instead of from the fiscal year only. Account types that should be reset to zero at each new fiscal year (like expenses, revenue..) should not have this option set.' search='_search_include_initial_balance' string='Bring Accounts Balance Forward'
  • internal_group Selection
    compute='_compute_internal_group' search='_search_internal_group' selection=[('equity', 'Equity'), ('asset', 'Asset'), ('liability', 'Liability'), ('income', 'Income'), ('expense', 'Expense'), ('off', 'Off Balance')] string='Internal Group'
  • name Char
    index='trigram' required=True string='Account Name' tracking=True translate=True
  • non_trade Boolean
    default=False help='If set, this account will belong to Non Trade Receivable/Payable in reports and filters.\nIf not, this account will belong to Trade Receivable/Payable in reports and filters.'
  • note Text
    tracking=True args: 'Internal Notes'
  • opening_balance Monetary
    compute='_compute_opening_debit_credit' currency_field='company_currency_id' inverse='_set_opening_balance' string='Opening Balance'
  • opening_credit Monetary
    compute='_compute_opening_debit_credit' currency_field='company_currency_id' inverse='_set_opening_credit' string='Opening Credit'
  • opening_debit Monetary
    compute='_compute_opening_debit_credit' currency_field='company_currency_id' inverse='_set_opening_debit' string='Opening Debit'
  • placeholder_code Char
    compute='_compute_placeholder_code' search='_search_placeholder_code' string='Display code'
  • reconcile Boolean
    compute='_compute_reconcile' help='Check this box if this account allows invoices & payments matching of journal items.' precompute=True readonly=False store=True string='Allow Reconciliation' tracking=True
  • related_taxes_amount Integer
    compute='_compute_related_taxes_amount'
  • root_id Many2one → account.root
    compute='_compute_account_root' search='_search_account_root' args: 'account.root'
  • tag_ids Many2many → account.account.tag
    comodel_name='account.account.tag' compute='_compute_account_tags' help='Optional tags you may want to assign for custom reporting' ondelete='restrict' precompute=True readonly=False relation='account_account_account_tag' store=True string='Tags' tracking=True
  • tax_ids Many2many → account.tax
    check_company=True context={'append_fields': ['type_tax_use', 'company_id']} string='Default Taxes' args: 'account.tax', 'account_account_tax_default_rel', 'account_id', 'tax_id'
  • used Boolean
    compute='_compute_used' search='_search_used'
Public methods (11)
  • action_open_related_taxes(self)
  • action_unmerge(self)
    Split the account `self` into several accounts, one per company. The original account's codes are assigned respectively to the account created in each company. From an accounting perspective, this does not change anything to the journal items, since their account codes will remain unchanged.
  • copy_data(self, default=None)
  • copy_translations(self, new, excluded=())
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
    If we're creating a new account through a many2one, there are chances that we typed the account code instead of its name. In that case, switch both fields values.
  • get_import_templates(self)
    @api.model
  • load(self, fields, data)
    @api.model
  • name_create(self, name)
    @api.model
    Split the account name into account code and account name in import. When importing a file with accounts, the account code and name may be both entered in the name column. In this case, the name will be split into code and name.
  • name_search(self, name='', domain=None, operator='ilike', limit=100)
    @api.model@api.readonly
  • write(self, vals)

New fields (7)
  • active Boolean
    default=True help='Set active to false to hide the Account Tag without removing it.'
  • applicability Selection
    default='accounts' required=True args: [('accounts', 'Accounts'), ('taxes', 'Taxes'), ('products', 'Products')]
  • balance_negate Boolean
    compute='_compute_report_expression_id'
  • color Integer
    args: 'Color Index'
  • country_id Many2one → res.country
    comodel_name='res.country' help='Country for which this tag is available, when applied on taxes.' string='Country'
  • name Char
    required=True translate=True args: 'Tag Name'
  • report_expression_id Many2one → account.report.expression
    compute='_compute_report_expression_id' args: 'account.report.expression'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (9)
  • account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', '=', 'liability_current')] if context.get('active_model') in ['purchase.order', 'purchase.order.line'] else [('account_type', '=', 'asset_current')]" required=True string='Accrual Account'
  • amount Monetary
    help='Specify an arbitrary value that will be accrued on a default account for the entire order, regardless of the products on the different lines.' string='Amount'
  • company_id Many2one → res.company
    default=_get_default_company args: 'res.company'
  • currency_id Many2one
    help='Utility field to express amount currency' readonly=True related='company_id.currency_id' store=True string='Company Currency'
  • date Date
    default=_get_default_date required=True
  • display_amount Boolean
    compute='_compute_display_amount'
  • journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' compute='_compute_journal_id' domain="[('type', '=', 'general')]" precompute=True readonly=False required=True store=True string='Journal'
  • preview_data Text
    compute='_compute_preview_data'
  • reversal_date Date
    compute='_compute_reversal_date' precompute=True readonly=False required=True store=True
Public methods (1)
  • create_entries(self)

New fields (2)
  • invoice_count Integer
    compute='_compute_invoice_count' args: 'Invoice Count'
  • vendor_bill_count Integer
    compute='_compute_vendor_bill_count' args: 'Vendor Bill Count'
Public methods (2)
  • action_view_invoice(self)
  • action_view_vendor_bill(self)

New fields (5)
  • account_prefix Char
    help='Prefix that defines which accounts from the financial accounting this applicability should apply on.' string='Financial Accounts Prefixes'
  • account_prefix_placeholder Char
    compute='_compute_prefix_placeholder'
  • business_domain Selection
    ondelete={'invoice': 'cascade', 'bill': 'cascade'} selection_add=[('invoice', 'Invoice'), ('bill', 'Vendor Bill')]
  • display_account_prefix Boolean
    compute='_compute_display_account_prefix' help='Defines if the field account prefix should be displayed'
  • product_categ_id Many2one → product.category
    string='Product Category' args: 'product.category'
Public methods (0)

No public methods.

New fields (4)
  • account_prefix Char
    help='This analytic distribution will apply to all financial accounts sharing the prefix specified.' string='Accounts Prefix'
  • prefix_placeholder Char
    compute='_compute_prefix_placeholder'
  • product_categ_id Many2one → product.category
    help='Select a product category which will use analytic account specified in analytic default (e.g. create new customer invoice or Sales order if we select this product, it will automatically take this as an analytic account)' ondelete='cascade' string='Product Category' args: 'product.category'
  • product_id Many2one → product.product
    check_company=True help='Select a product for which the analytic distribution will be used (e.g. create new customer invoice or Sales order if we select this product, it will automatically take this as an analytic account)' ondelete='cascade' string='Product' args: 'product.product'
Public methods (0)

No public methods.

New fields (10)
  • analytic_profitability Selection
    compute='_compute_analytic_profitability' search='_search_analytic_profitability' selection=[('uncategorized', 'Uncategorized'), ('revenue', 'Revenue'), ('loss', 'Loss')] string='Profitability'
  • category Selection
    selection_add=[('invoice', 'Customer Invoice'), ('vendor_bill', 'Vendor Bill')]
  • code Char
    size=8
  • general_account_id Many2one → account.account
    check_company=True compute='_compute_general_account_id' ondelete='restrict' readonly=False store=True string='Financial Account' args: 'account.account'
  • journal_id Many2one → account.journal
    check_company=True readonly=True related='move_line_id.journal_id' store=True string='Financial Journal' args: 'account.journal'
  • move_line_id Many2one → account.move.line
    check_company=True index=True ondelete='cascade' string='Journal Item' args: 'account.move.line'
  • partner_id Many2one
    compute='_compute_partner_id' readonly=False store=True
  • product_category Many2one
    related='product_id.categ_id'
  • product_id Many2one → product.product
    check_company=True index='btree_not_null' string='Product' args: 'product.product'
  • ref Char
    string='Ref.'
Public methods (5)
  • create(self, vals_list)
    @api.model_create_multi
  • on_change_unit_amount(self)
    @api.onchange('product_id', 'product_uom_id', 'unit_amount', 'currency_id')
  • unlink(self)
  • view_header_get(self, view_id, view_type)
    @api.model
  • write(self, vals)

New fields (16)
  • account_type Selection
    compute='_compute_account_type' store=True args: [('income', 'Revenue'), ('expense', 'Expense')]
  • action Selection
    required=True args: [('change_period', 'Change Period'), ('change_account', 'Change Account')]
  • company_currency_id Many2one → res.currency
    related='company_id.currency_id' args: 'res.currency'
  • company_id Many2one → res.company
    readonly=True required=True args: 'res.company'
  • date Date
    default=<expr> required=True
  • destination_account_id Many2one → account.account
    check_company=True comodel_name='account.account' help='Account to transfer to.' string='To'
  • display_currency_helper Boolean
    compute='_compute_display_currency_helper' string='Currency Conversion Helper'
  • expense_accrual_account Many2one → account.account
    check_company=True compute='_compute_expense_accrual_account' domain="[('account_type', 'not in', ('asset_receivable', 'liability_payable', 'off_balance'))]" inverse='_inverse_expense_accrual_account' readonly=False args: 'account.account'
  • journal_id Many2one → account.journal
    check_company=True compute='_compute_journal_id' domain="[('type', '=', 'general')]" help='Journal where to create the entry.' inverse='_inverse_journal_id' readonly=False required=True string='Journal' args: 'account.journal'
  • lock_date_message Char
    compute='_compute_lock_date_message' string='Lock Date Message'
  • move_data Text
    compute='_compute_move_data'
  • move_line_ids Many2many → account.move.line
    args: 'account.move.line'
  • percentage Float
    compute='_compute_percentage' help='Percentage of each line to execute the action on.' readonly=False store=True args: 'Percentage'
  • preview_move_data Text
    compute='_compute_preview_move_data'
  • revenue_accrual_account Many2one → account.account
    check_company=True compute='_compute_revenue_accrual_account' domain="[('account_type', 'not in', ('asset_receivable', 'liability_payable', 'off_balance'))]" inverse='_inverse_revenue_accrual_account' readonly=False args: 'account.account'
  • total_amount Monetary
    compute='_compute_total_amount' currency_field='company_currency_id' help='Total amount impacted by the automatic entry.' readonly=False store=True
Public methods (2)
  • default_get(self, fields)
    @api.model
  • do_action(self)

New fields (3)
  • nb_unmodified_bills Integer
    args: 'Number of bills previously unmodified from this partner'
  • partner_id Many2one → res.partner
    args: 'res.partner'
  • partner_name Char
    related='partner_id.name'
Public methods (3)
  • action_ask_later(self)
  • action_automate_partner(self)
  • action_never_automate_partner(self)

New fields (16)
  • attachment_ids Many2many → ir.attachment
    bypass_search_access=True comodel_name='ir.attachment' string='Attachments'
  • balance_end Monetary
    compute='_compute_balance_end' store=True string='Computed Balance'
  • balance_end_real Monetary
    compute='_compute_balance_end_real' readonly=False store=True string='Ending Balance'
  • balance_start Monetary
    compute='_compute_balance_start' readonly=False store=True string='Starting Balance'
  • company_id Many2one → res.company
    comodel_name='res.company' related='journal_id.company_id' store=True
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' store=True
  • date Date
    compute='_compute_date' index=True readonly=False store=True
  • first_line_index Char → account.bank.statement.line
    comodel_name='account.bank.statement.line' compute='_compute_first_line_index' store=True
  • is_complete Boolean
    compute='_compute_is_complete' store=True
  • is_valid Boolean
    compute='_compute_is_valid' search='_search_is_valid'
  • journal_has_invalid_statements Boolean
    related='journal_id.has_invalid_statements'
  • journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' compute='_compute_journal_id' store=True
  • line_ids One2many → account.bank.statement.line
    comodel_name='account.bank.statement.line' inverse_name='statement_id' string='Statement lines'
  • name Char
    compute='_compute_name' copy=False readonly=False store=True string='Reference'
  • problem_description Text
    compute='_compute_problem_description'
  • reference Char
    copy=False string='External Reference'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • write(self, vals)

New fields (25)
  • account_number Char
    string='Bank Account Number'
  • amount Monetary
  • amount_currency Monetary
    compute='_compute_amount_currency' currency_field='foreign_currency_id' help='The amount expressed in an optional other currency if it is a multi-currency entry.' readonly=False store=True string='Amount in Currency'
  • amount_residual Float
    compute='_compute_is_reconciled' store=True string='Residual Amount'
  • company_id Many2one → res.company
    comodel_name='res.company' index=False inherited=True precompute=True readonly=False related='move_id.company_id' required=True store=True
  • country_code Char
    related='company_id.account_fiscal_country_id.code'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' store=True string='Journal Currency'
  • foreign_currency_id Many2one → res.currency
    comodel_name='res.currency' help='The optional other currency if it is a multi-currency entry.' string='Foreign Currency'
  • internal_index Char
    compute='_compute_internal_index' store=True string='Internal Reference'
  • is_reconciled Boolean
    compute='_compute_is_reconciled' store=True string='Is Reconciled'
  • journal_id Many2one → account.journal
    comodel_name='account.journal' index=False inherited=True precompute=True readonly=False related='move_id.journal_id' required=True store=True
  • move_id Many2one → account.move
    bypass_search_access=True check_company=True comodel_name='account.move' index=True ondelete='cascade' readonly=True required=True string='Journal Entry'
  • partner_id Many2one → res.partner
    check_company=True comodel_name='res.partner' domain="['|', ('parent_id','=', False), ('is_company','=',True)]" ondelete='restrict' string='Partner'
  • partner_name Char
    index='btree_not_null'
  • payment_ids Many2many → account.payment
    comodel_name='account.payment' relation='account_payment_account_bank_statement_line_rel' string='Auto-generated Payments'
  • payment_ref Char
    index='trigram' string='Label'
  • running_balance Monetary
    compute='_compute_running_balance'
  • sequence Integer
    default=1
  • statement_balance_end_real Monetary
    related='statement_id.balance_end_real'
  • statement_complete Boolean
    related='statement_id.is_complete'
  • statement_id Many2one → account.bank.statement
    comodel_name='account.bank.statement' index=True string='Statement'
  • statement_name Char
    related='statement_id.name' string='Statement Name'
  • statement_valid Boolean
    related='statement_id.is_valid'
  • transaction_details Json
    readonly=True
  • transaction_type Char
Public methods (7)
  • action_undo_reconciliation(self)
    Undo the reconciliation made on the statement line and reset their journal items to their original states.
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • formatted_read_group(self, domain, groupby=(), aggregates=(), having=(), offset=0, limit=None, order=None) -> <expr>
    @api.model
  • new(self, values=None, origin=None, ref=None)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (6)
  • loss_account_id Many2one → account.account
    check_company=True company_dependent=True domain="[('account_type', 'not in', ('asset_receivable', 'liability_payable'))]" ondelete='restrict' string='Loss Account' args: 'account.account'
  • name Char
    required=True string='Name' translate=True
  • profit_account_id Many2one → account.account
    check_company=True company_dependent=True domain="[('account_type', 'not in', ('asset_receivable', 'liability_payable'))]" ondelete='restrict' string='Profit Account' args: 'account.account'
  • rounding Float
    default=0.01 help='Represent the non-zero value smallest coinage (for example, 0.05).' required=True string='Rounding Precision'
  • rounding_method Selection
    default='HALF-UP' help='The tie-breaking rule used for float rounding operations' required=True selection=[('UP', 'Up'), ('DOWN', 'Down'), ('HALF-UP', 'Nearest')] string='Rounding Method'
  • strategy Selection
    default='add_invoice_line' help='Specify which way will be used to round the invoice amount to the rounding precision' required=True string='Rounding Strategy' args: [('biggest_tax', 'Modify tax amount'), ('add_invoice_line', 'Add a rounding line')]
Public methods (3)
  • compute_difference(self, currency, amount)
    Compute the difference between the base_amount and the amount after rounding. For example, base_amount=23.91, after rounding=24.00, the result will be 0.09. :param currency: The currency. :param amount: The amount :return: round(difference)
  • round(self, amount)
    Compute the rounding on the amount passed as parameter. :param amount: the amount to round :return: the rounded amount depending the rounding value and the rounding method
  • validate_rounding(self)
    @api.constrains('rounding')

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (3)
  • company_xmlid(self, xmlid, company=None)
  • ref(self, xmlid, raise_if_not_found=True)
  • try_loading(self, template_code, company, install_demo=False, force_create=True)
    Check if the chart template can be loaded then proceeds installing it. :param template_code: code of the chart template to be loaded. :type template_code: str :param company: the company we try to load the chart template on. If not provided, it is retrieved from the context. :type company: int, Model<res.company> :param install_demo: whether or not we should load demo data right after loading the chart template. :type install_demo: bool :param force_create: Determines the loading behavior. If True, forces the creation of new entries; if False, prevents new creations and performs updates on existing data where applicable. :type force_create: bool

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • account_id Many2one → account.account
    comodel_name='account.account' compute='_compute_account_id' search=True string='Account'
  • code Char
    compute='_compute_code' inverse='_inverse_code' string='Code'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_id' readonly=False string='Company'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (5)
  • company_id Many2one → res.company
    comodel_name='res.company' required=True
  • fiscalyear_last_day Integer
    help="The last day of the month will be used if the chosen day doesn't exist." readonly=False related='company_id.fiscalyear_last_day' required=True
  • fiscalyear_last_month Selection
    help="The last day of the month will be used if the chosen day doesn't exist." readonly=False related='company_id.fiscalyear_last_month' required=True
  • opening_date Date
    help='Date from which the accounting is managed in Odoo. It is the date of the opening entry.' readonly=False related='company_id.account_opening_date' required=True string='Opening Date'
  • opening_move_posted Boolean
    compute='_compute_opening_move_posted' string='Opening Move Posted'
Public methods (3)
  • action_save_onboarding_fiscal_year(self)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (22)
  • account_ids One2many → account.fiscal.position.account
    copy=True string='Account Mapping' args: 'account.fiscal.position.account', 'position_id'
  • account_map Binary
    compute='_compute_account_map'
  • active Boolean
    default=True help='By unchecking the active field, you may hide a fiscal position without deleting it.'
  • auto_apply Boolean
    help='Apply tax & account mappings on invoices automatically if the matching criterias (VAT/Country) are met.' string='Detect Automatically'
  • company_country_id Many2one
    related='company_id.account_fiscal_country_id' string='Company Country'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> index=True readonly=True required=True string='Company'
  • country_group_id Many2one → res.country.group
    help='Apply only if delivery country matches the group.' inverse='_inverse_foreign_vat' string='Country Group' args: 'res.country.group'
  • country_id Many2one → res.country
    help='Apply only if delivery country matches.' inverse='_inverse_foreign_vat' string='Country' args: 'res.country'
  • fiscal_country_codes Char
    related='company_country_id.code' string='Company Fiscal Country Code'
  • foreign_vat Char
    help='The tax ID of your company in the region mapped by this fiscal position.' inverse='_inverse_foreign_vat' string='Foreign Tax ID'
  • foreign_vat_header_mode Selection
    compute='_compute_foreign_vat_header_mode' selection=[('templates_found', 'Templates Found'), ('no_template', 'No Template')]
  • is_domestic Boolean
    compute='_compute_is_domestic' store=True
  • name Char
    required=True string='Fiscal Position' translate=True
  • note Html
    help='Legal mentions that have to be printed on the invoices.' translate=True args: 'Notes'
  • sequence Integer
  • state_ids Many2many → res.country.state
    string='Federal States' args: 'res.country.state'
  • states_count Integer
    compute='_compute_states_count'
  • tax_ids Many2many → account.tax
    column1='account_fiscal_position_id' column2='account_tax_id' comodel_name='account.tax' relation='account_fiscal_position_account_tax_rel' string='Taxes'
  • tax_map Binary
    compute='_compute_tax_map'
  • vat_required Boolean
    help='Apply only if partner has a VAT number.' string='VAT required'
  • zip_from Char
    string='Zip Range From'
  • zip_to Char
    string='Zip Range To'
Public methods (6)
  • action_create_foreign_taxes(self)
  • action_open_related_taxes(self)
  • create(self, vals_list)
    @api.model_create_multi
  • map_account(self, account)
  • map_tax(self, taxes)
  • write(self, vals)

New fields (4)
  • account_dest_id Many2one → account.account
    check_company=True required=True string='Account to Use Instead' args: 'account.account'
  • account_src_id Many2one → account.account
    check_company=True required=True string='Account on Product' args: 'account.account'
  • company_id Many2one → res.company
    related='position_id.company_id' store=True string='Company' args: 'res.company'
  • position_id Many2one → account.fiscal.position
    ondelete='cascade' required=True string='Fiscal Position' args: 'account.fiscal.position'
Public methods (0)

No public methods.

New fields (2)
  • partial_reconcile_ids One2many → account.partial.reconcile
    string='Reconciliation Parts' args: 'account.partial.reconcile', 'full_reconcile_id'
  • reconciled_line_ids One2many → account.move.line
    string='Matched Journal Items' args: 'account.move.line', 'full_reconcile_id'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)

New fields (5)
  • code_prefix_end Char
    compute='_compute_code_prefix_end' precompute=True readonly=False store=True
  • code_prefix_start Char
    compute='_compute_code_prefix_start' precompute=True readonly=False store=True
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True args: 'res.company'
  • name Char
    required=True translate=True
  • parent_id Many2one → account.group
    check_company=True index=True ondelete='cascade' readonly=True args: 'account.group'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)

New fields (3)
  • active Boolean
    default=True help='By unchecking the active field, you may hide an INCOTERM you will not use.' args: 'Active'
  • code Char
    help='Incoterm Standard Code' required=True size=3 args: 'Code'
  • name Char
    help='Incoterms are series of sales terms. They are used to divide transaction costs and responsibilities between buyer and seller and reflect state-of-the-art transportation practices.' required=True translate=True args: 'Name'
Public methods (0)

No public methods.

New fields (27)
  • account_id Many2one → account.account
    readonly=True string='Revenue/Expense Account' args: 'account.account'
  • commercial_partner_id Many2one → res.partner
    string='Main Partner' args: 'res.partner'
  • company_currency_id Many2one → res.currency
    readonly=True string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • country_id Many2one → res.country
    string='Country' args: 'res.country'
  • currency_id Many2one → res.currency
    readonly=True string='Currency' args: 'res.currency'
  • fiscal_position_id Many2one → account.fiscal.position
    readonly=True string='Fiscal Position' args: 'account.fiscal.position'
  • inventory_value Float
    readonly=True string='Inventory Value'
  • invoice_date Date
    readonly=True string='Invoice Date'
  • invoice_date_due Date
    readonly=True string='Due Date'
  • invoice_user_id Many2one → res.users
    readonly=True string='Salesperson' args: 'res.users'
  • journal_id Many2one → account.journal
    readonly=True string='Journal' args: 'account.journal'
  • move_id Many2one → account.move
    readonly=True args: 'account.move'
  • move_type Selection
    readonly=True args: [('out_invoice', 'Customer Invoice'), ('in_invoice', 'Vendor Bill'), ('out_refund', 'Customer Credit Note'), ('in_refund', 'Vendor Credit Note')]
  • partner_id Many2one → res.partner
    readonly=True string='Partner' args: 'res.partner'
  • payment_state Selection
    readonly=True selection=PAYMENT_STATE_SELECTION string='Payment Status'
  • price_average Float
    aggregator='avg' readonly=True string='Average Price'
  • price_margin Float
    readonly=True string='Margin'
  • price_subtotal Float
    readonly=True string='Untaxed Amount'
  • price_subtotal_currency Float
    readonly=True string='Untaxed Amount in Currency'
  • price_total Float
    readonly=True string='Total'
  • price_total_currency Float
    readonly=True string='Total in Currency'
  • product_categ_id Many2one → product.category
    readonly=True string='Product Category' args: 'product.category'
  • product_id Many2one → product.product
    readonly=True string='Product' args: 'product.product'
  • product_uom_id Many2one → uom.uom
    readonly=True string='Unit' args: 'uom.uom'
  • quantity Float
    readonly=True string='Product Quantity'
  • state Selection
    readonly=True string='Invoice Status' args: [('draft', 'Draft'), ('posted', 'Open'), ('cancel', 'Cancelled')]
Public methods (0)

No public methods.

New fields (43)
  • account_fiscal_country_group_codes Json
    related='company_id.account_fiscal_country_group_codes'
  • accounting_date Date
    compute='_compute_accounting_date'
  • active Boolean
    default=True help='Set active to false to hide the Journal without removing it.'
  • alias_name Char
    help='Send one separate email for each invoice.\nAny file extension will be accepted.\nOnly PDF and XML files will be interpreted by Odoo'
  • available_invoice_template_pdf_report_ids One2many → ir.actions.report
    comodel_name='ir.actions.report' compute='_compute_available_invoice_template_pdf_report_ids'
  • available_payment_method_ids Many2many → account.payment.method
    comodel_name='account.payment.method' compute='_compute_available_payment_method_ids'
  • bank_acc_number Char
    readonly=False related='bank_account_id.acc_number'
  • bank_account_id Many2one → res.partner.bank
    check_company=True copy=False domain="[('partner_id','=', company_partner_id)]" index='btree_not_null' ondelete='restrict' string='Bank Account' args: 'res.partner.bank'
  • bank_id Many2one → res.bank
    readonly=False related='bank_account_id.bank_id' args: 'res.bank'
  • bank_statements_source Selection
    default='undefined' help='Defines how the bank statements will be registered' selection=_get_bank_statements_available_sources string='Bank Feeds'
  • code Char
    compute='_compute_code' help='Shorter name used for display. The journal entries of this journal will also be named using this prefix by default.' precompute=True readonly=False required=True size=5 store=True string='Sequence Prefix'
  • company_id Many2one → res.company
    default=<expr> help='Company related to this journal' index=True readonly=True required=True string='Company' args: 'res.company'
  • company_partner_id Many2one → res.partner
    readonly=True related='company_id.partner_id' store=False string='Account Holder' args: 'res.partner'
  • country_code Char
    readonly=True related='company_id.account_fiscal_country_id.code'
  • currency_id Many2one → res.currency
    help='The currency used to enter statement' string='Currency' args: 'res.currency'
  • default_account_id Many2one → account.account
    check_company=True comodel_name='account.account' copy=False domain=_get_default_account_domain ondelete='restrict' string='Default Account'
  • default_account_type Char
    compute='_compute_default_account_type' string='Default Account Type'
  • display_alias_fields Boolean
    compute='_compute_display_alias_fields'
  • display_invoice_template_pdf_report_id Boolean
    default=_default_display_invoice_template_pdf_report_id store=False
  • has_invalid_statements Boolean
    compute='_compute_has_invalid_statements'
  • inbound_payment_method_line_ids One2many → account.payment.method.line
    check_company=True comodel_name='account.payment.method.line' compute='_compute_inbound_payment_method_line_ids' copy=False domain=[('payment_type', '=', 'inbound')] help='Manual: Get paid by any method outside of Odoo.\nPayment Providers: Each payment provider has its own Payment Method. Request a transaction on/to a card thanks to a payment token saved by the partner when buying or subscribing online.\nBatch Deposit: Collect several customer checks at once generating and submitting a batch deposit to your bank. Module account_batch_payment is necessary.\nSEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your partner will have granted to you. Module account_sepa is necessary.\n' inverse_name='journal_id' readonly=False store=True string='Inbound Payment Methods'
  • incoming_einvoice_notification_email Char
    help="Email addresses that will receive copy for sent and received invoices. Separate entries with ';'." string='Send Copy To'
  • invoice_reference_model Selection
    default=_default_invoice_reference_model help='You can choose different models for each type of reference. The default one is the Odoo reference.' required=True selection=[('odoo', 'Full Reference (INV/2024/00001)'), ('euro', 'European (RF83INV202400001)'), ('number', 'Numbers only (202400001)')] string='Communication Standard'
  • invoice_reference_type Selection
    default='invoice' help='You can set here the default communication that will appear on customer invoices, once validated, to help the customer to refer to that particular invoice when making the payment.' required=True selection=[('partner', 'Based on Customer'), ('invoice', 'Based on Invoice')] string='Communication Type'
  • invoice_template_pdf_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain="[('id', 'in', available_invoice_template_pdf_report_ids)]" readonly=False string='Invoice report'
  • is_self_billing Boolean
    help='This journal is for self-billing invoices. Invoices will be created using a different sequence per partner.' string='Self Billing'
  • journal_group_ids Many2many → account.journal.group
    check_company=True string='Ledger Group' args: 'account.journal.group'
  • loss_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', '=', 'expense')]" help='Used to register a loss when the ending balance of a cash register differs from what the system computes' string='Loss Account'
  • name Char
    required=True string='Journal Name' translate=True
  • name_placeholder Char
    compute='_compute_name_placeholder'
  • non_deductible_account_id Many2one → account.account
    check_company=True comodel_name='account.account' help='Account used to register the private part of mixed expenses.' readonly=False store=True string='Private Share Account'
  • outbound_payment_method_line_ids One2many → account.payment.method.line
    check_company=True comodel_name='account.payment.method.line' compute='_compute_outbound_payment_method_line_ids' copy=False domain=[('payment_type', '=', 'outbound')] help='Manual: Pay by any method outside of Odoo.\nCheck: Pay bills by check and print it from Odoo.\nSEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit Transfer file to your bank. Module account_sepa is necessary.\n' inverse_name='journal_id' readonly=False store=True string='Outbound Payment Methods'
  • payment_sequence Boolean
    compute='_compute_payment_sequence' help="Check this box if you don't want to share the same sequence on payments and bank transactions posted on this journal" precompute=True readonly=False store=True string='Dedicated Payment Sequence'
  • profit_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', 'in', ('income', 'income_other'))]" help='Used to register a profit when the ending balance of a cash register differs from what the system computes' string='Profit Account'
  • refund_sequence Boolean
    compute='_compute_refund_sequence' help="Check this box if you don't want to share the same sequence for invoices and credit notes made from this journal" readonly=False store=True string='Dedicated Credit Note Sequence'
  • restrict_mode_hash_table Boolean
    help='If ticked, when an entry is posted, we retroactively hash all moves in the sequence from the entry back to the last hashed entry. The hash can also be performed on demand by the Secure Entries wizard.' string='Secure Posted Entries with Hash'
  • selected_payment_method_codes Char
    compute='_compute_selected_payment_method_codes'
  • sequence Integer
    default=10 help='Used to order Journals in the dashboard view'
  • sequence_override_regex Text
    help='Technical field used to enforce complex sequence composition that the system would normally misunderstand.\nThis is a regex that can include all the following capture groups: prefix1, year, prefix2, month, prefix3, seq, suffix.\nThe prefix* groups are the separators between the year, month and the actual increasing sequence number (seq).\ne.g: ^(?P<prefix1>.*?)(?P<year>\\d{4})(?P<prefix2>\\D*?)(?P<month>\\d{2})(?P<prefix3>\\D+?)(?P<seq>\\d+)(?P<suffix>\\D*?)$'
  • show_fetch_in_einvoices_button Boolean
    compute='_compute_show_fetch_in_einvoices_button' string='Show E-Invoice Buttons'
  • show_refresh_out_einvoices_status_button Boolean
    compute='_compute_show_refresh_out_einvoices_status_button' string='Show E-Invoice Status Buttons'
  • suspense_account_id Many2one → account.account
    check_company=True comodel_name='account.account' compute='_compute_suspense_account_id' domain="[('account_type', '=', 'asset_current')]" help='Bank statements transactions will be posted on the suspense account until the final reconciliation allowing finding the right account.' ondelete='restrict' readonly=False store=True string='Suspense Account'
  • type Selection
    help="\n Select 'Sale' for customer invoices journals.\n Select 'Purchase' for vendor bills journals.\n Select 'Cash', 'Bank' or 'Credit Card' for journals that are used in customer or vendor payments.\n Select 'General' for miscellaneous operations journals.\n " required=True args: [('sale', 'Sales'), ('purchase', 'Purchase'), ('cash', 'Cash'), ('bank', 'Bank'), ('credit', 'Credit Card'), ('general', 'Miscellaneous')]
Public methods (10)
  • action_configure_bank_journal(self)
    This function is called by the "configure" button of bank journals, visible on dashboard if no bank statement source has been defined yet
  • button_fetch_in_einvoices(self)
    Abstract method to fetch e-invoices. Should fetch vendor bill invoices synchronously and doesn't return anything.
  • button_refresh_out_einvoices_status(self)
    Abstract method to fetch e-invoice statuses. Should fetch customer invoices statuses synchronously and doesn't return anything.
  • button_unsubscribe_from_invoice_notifications(self)
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • create_document_from_attachment(self, attachment_ids)
    Create the invoices from files. :return: A action redirecting to account.move list/form view.
  • set_bank_account(self, acc_number, bank_id=None)
    Create a res.partner.bank (if not exists) and set it as value of the field bank_account_id
  • unlink(self)
  • write(self, vals)

New fields (13)
  • color Integer
    default=0 args: 'Color Index'
  • current_statement_balance Monetary
    compute='_compute_current_statement_balance'
  • entries_count Integer
    compute='_compute_entries_count'
  • has_entries Boolean
    compute='_compute_has_entries'
  • has_posted_entries Boolean
    compute='_compute_has_entries'
  • has_sequence_holes Boolean
    compute='_compute_has_sequence_holes'
  • has_statement_lines Boolean
    compute='_compute_current_statement_balance'
  • has_unhashed_entries Boolean
    compute='_compute_has_unhashed_entries' string='Unhashed Entries'
  • json_activity_data Text
    compute='_get_json_activity_data'
  • kanban_dashboard Text
    compute='_kanban_dashboard'
  • kanban_dashboard_graph Text
    compute='_kanban_dashboard_graph'
  • last_statement_id Many2one → account.bank.statement
    comodel_name='account.bank.statement' compute='_compute_last_bank_statement'
  • show_on_dashboard Boolean
    default=True help='Whether this journal should be displayed on the dashboard or not' string='Show journal on dashboard'
Public methods (15)
  • action_create_new(self)
  • action_create_vendor_bill(self)
    This function is called by the "try our sample" button of Vendor Bills, visible on dashboard if no bill has been created yet.
  • action_post_all_entries(self)
  • create_bank_statement(self)
    return action to create a bank statements. This button should be called only on journals with type =='bank'
  • create_customer_payment(self)
    return action to create a customer payment
  • create_supplier_payment(self)
    return action to create a supplier payment
  • is_sample_action_available(self)
    @api.model
    Used to hide 'try our sample' when demo data is not installed.
  • open_action(self)
    return action based on type for related journals
  • open_action_with_context(self)
  • open_bank_difference_action(self)
  • open_invalid_statements_action(self)
  • open_payments_action(self, payment_type=False, mode='list')
  • show_sequence_holes(self)
  • show_unhashed_entries(self)
  • to_check_ids(self)

New fields (4)
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> help='Define which company can select the multi-ledger in report filters. If none is provided, available for all companies'
  • excluded_journal_ids Many2many → account.journal
    comodel_name='account.journal' context={'active_test': False} domain='company_id and [("company_id", "parent_of", company_id)] or []' string='Excluded Journals'
  • name Char
    required=True translate=True args: 'Ledger group'
  • sequence Integer
    default=10
Public methods (0)

No public methods.

New fields (13)
  • active Boolean
    default=True string='Active'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • company_lock_date Date
    copy=False help='Technical field giving the date the company lock date at the time the exception was created.' string='Original Lock Date'
  • end_datetime Datetime
    string='End Date'
  • fiscalyear_lock_date Date
    compute='_compute_lock_dates' help='The date the Global Lock Date is set to by this exception. If the lock date is not changed it is set to the maximal date.' search='_search_fiscalyear_lock_date' string='Global Lock Date'
  • lock_date Date
    help='Technical field giving the date the lock date was changed to.' string='Changed Lock Date'
  • lock_date_field Selection
    help='Technical field identifying the changed lock date' required=True selection=[('fiscalyear_lock_date', 'Global Lock Date'), ('tax_lock_date', 'Tax Return Lock Date'), ('sale_lock_date', 'Sales Lock Date'), ('purchase_lock_date', 'Purchase Lock Date')] string='Lock Date Field'
  • purchase_lock_date Date
    compute='_compute_lock_dates' help='The date the Purchase Lock Date is set to by this exception. If the lock date is not changed it is set to the maximal date.' search='_search_purchase_lock_date' string='Purchase Lock Date'
  • reason Char
    string='Reason'
  • sale_lock_date Date
    compute='_compute_lock_dates' help='The date the Sale Lock Date is set to by this exception. If the lock date is not changed it is set to the maximal date.' search='_search_sale_lock_date' string='Sales Lock Date'
  • state Selection
    compute='_compute_state' search='_search_state' selection=[('active', 'Active'), ('revoked', 'Revoked'), ('expired', 'Expired')] string='State'
  • tax_lock_date Date
    compute='_compute_lock_dates' help='The date the Tax Lock Date is set to by this exception. If the lock date is not changed it is set to the maximal date.' search='_search_tax_lock_date' string='Tax Return Lock Date'
  • user_id Many2one → res.users
    default=<expr> string='User' args: 'res.users'
Public methods (4)
  • action_revoke(self)
    Revokes an active exception.
  • action_show_audit_trail_during_exception(self)
  • copy(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi

New fields (4)
  • account_ids Many2many → account.account
    args: 'account.account'
  • disable_merge_button Boolean
    compute='_compute_disable_merge_button'
  • is_group_by_name Boolean
    default=False help='Tick this checkbox if you want accounts to be grouped by name for merging.' string='Group by name?'
  • wizard_line_ids One2many → account.merge.wizard.line
    comodel_name='account.merge.wizard.line' compute='_compute_wizard_line_ids' inverse_name='wizard_id' readonly=False store=True
Public methods (2)
  • action_merge(self)
    Merge each group of accounts in `self.wizard_line_ids`.
  • default_get(self, fields)
    @api.model

New fields (9)
  • account_has_hashed_entries Boolean
    compute='_compute_account_has_hashed_entries'
  • account_id Many2one → account.account
    comodel_name='account.account' ondelete='cascade' readonly=True string='Account'
  • company_ids Many2many
    related='account_id.company_ids' string='Companies'
  • display_type Selection
    required=True selection=[('line_section', 'Section'), ('line_subsection', 'Subsection'), ('account', 'Account')]
  • grouping_key Char
  • info Char
    compute='_compute_info' help='Contains either the section name or error message, depending on the line type.' string='Info'
  • is_selected Boolean
  • sequence Integer
  • wizard_id Many2one → account.merge.wizard
    comodel_name='account.merge.wizard' ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (1)
  • statement_line_ids One2many → account.bank.statement.line
    string='Statements' args: 'account.bank.statement.line', 'move_id'
Public methods (0)

No public methods.

New fields (1)
  • payment_ids One2many → account.payment
    string='Payments' args: 'account.payment', 'move_id'
Public methods (0)

No public methods.

New fields (142)
  • abnormal_amount_warning Text
    compute='_compute_abnormal_warnings'
  • abnormal_date_warning Text
    compute='_compute_abnormal_warnings'
  • account_fiscal_country_group_codes Json
    related='company_id.account_fiscal_country_group_codes'
  • adjusting_entries_count Integer
    compute='_compute_adjusting_entries_count' string='Adjusting Entries Count'
  • adjusting_entries_move_ids Many2many → account.move
    column1='adjusting_entry_move_id' column2='move_id' comodel_name='account.move' relation='adjusting_entries__account_move' string='Created Adjusting Entries'
  • adjusting_entry_origin_label Char
    compute='_compute_adjusting_entry_origin_label'
  • adjusting_entry_origin_move_ids Many2many → account.move
    column1='move_id' column2='adjusting_entry_move_id' comodel_name='account.move' relation='adjusting_entries__account_move' string='Adjusting Entry Origin Moves'
  • adjusting_entry_origin_moves_count Integer
    compute='_compute_adjusting_entry_origin_moves_count' string='Adjusting Entry Origin Moves Count'
  • alerts Json
    compute='_compute_alerts'
  • always_tax_exigible Boolean
    compute='_compute_always_tax_exigible' readonly=False store=True
  • amount_residual Monetary
    compute='_compute_amount' store=True string='Amount Due'
  • amount_residual_signed Monetary
    compute='_compute_amount' currency_field='company_currency_id' store=True string='Amount Due Signed'
  • amount_tax Monetary
    compute='_compute_amount' readonly=True store=True string='Tax'
  • amount_tax_signed Monetary
    compute='_compute_amount' currency_field='company_currency_id' readonly=True store=True string='Tax Signed'
  • amount_total Monetary
    compute='_compute_amount' inverse='_inverse_amount_total' readonly=True store=True string='Total'
  • amount_total_in_currency_signed Monetary
    compute='_compute_amount' currency_field='currency_id' readonly=True store=True string='Total in Currency Signed'
  • amount_total_signed Monetary
    compute='_compute_amount' currency_field='company_currency_id' readonly=True store=True string='Total Signed'
  • amount_total_words Char
    compute='_compute_amount_total_words' string='Amount total in words'
  • amount_untaxed Monetary
    compute='_compute_amount' readonly=True store=True string='Untaxed Amount' tracking=True
  • amount_untaxed_in_currency_signed Monetary
    compute='_compute_amount' currency_field='currency_id' readonly=True store=True string='Untaxed Amount Signed Currency'
  • amount_untaxed_signed Monetary
    compute='_compute_amount' currency_field='company_currency_id' readonly=True store=True string='Untaxed Amount Signed'
  • attachment_ids One2many → ir.attachment
    domain=[('res_model', '=', 'account.move')] string='Attachments' args: 'ir.attachment', 'res_id'
  • audit_trail_message_ids One2many → mail.message
    domain=[('model', '=', 'account.move'), ('message_type', '=', 'notification')] string='Audit Trail Messages' args: 'mail.message', 'res_id'
  • auto_post Selection
    copy=False default='no' help='Specify whether this entry is posted automatically on its accounting date, and any similar recurring invoices.' required=True selection=[('no', 'No'), ('at_date', 'At Date'), ('monthly', 'Monthly'), ('quarterly', 'Quarterly'), ('yearly', 'Yearly')] string='Auto-post'
  • auto_post_origin_id Many2one → account.move
    comodel_name='account.move' copy=False index='btree_not_null' readonly=True string='First recurring entry'
  • auto_post_until Date
    compute='_compute_auto_post_until' copy=False help='This recurring move will be posted up to and including this date.' readonly=False store=True string='Auto-post until'
  • bank_partner_id Many2one → res.partner
    comodel_name='res.partner' compute='_compute_bank_partner_id' help='Technical field to get the domain on the bank'
  • checked Boolean
    compute='_compute_checked' copy=False readonly=False store=True string='Reviewed' tracking=True
  • commercial_partner_id Many2one → res.partner
    check_company=True compute='_compute_commercial_partner_id' ondelete='restrict' readonly=True store=True string='Commercial Entity' args: 'res.partner'
  • company_currency_id Many2one
    readonly=True related='company_id.currency_id' string='Company Currency'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_id' index=True inverse='_inverse_company_id' precompute=True readonly=False store=True string='Company'
  • company_price_include Selection
    readonly=True related='company_id.account_price_include'
  • country_code Char
    depends=['company_id'] readonly=True related='company_id.account_fiscal_country_id.code'
  • currency_id Many2one → res.currency
    compute='_compute_currency_id' inverse='_inverse_currency_id' precompute=True readonly=False required=True store=True string='Currency' tracking=True args: 'res.currency'
  • date Date
    compute='_compute_date' copy=False index=True precompute=True readonly=False required=True store=True string='Date' tracking=True
  • delivery_date Date
    compute='_compute_delivery_date' copy=False inverse='_inverse_delivery_date' precompute=True readonly=False store=True string='Delivery Date'
  • direction_sign Integer
    compute='_compute_direction_sign' help='Multiplicator depending on the document type, to convert a price into a balance'
  • display_inactive_currency_warning Boolean
    compute='_compute_display_inactive_currency_warning'
  • display_link_qr_code Boolean
    compute='_compute_display_link_qr_code' string='Display Link QR-code'
  • display_qr_code Boolean
    compute='_compute_display_qr_code' string='Display QR-code'
  • display_send_button Boolean
    compute='_compute_display_send_button'
  • duplicated_ref_ids Many2many → account.move
    comodel_name='account.move' compute='_compute_duplicated_ref_ids'
  • exchange_diff_partial_ids One2many → account.partial.reconcile
    comodel_name='account.partial.reconcile' inverse_name='exchange_move_id' string='Related reconciliation'
  • expected_currency_rate Float
    compute='_compute_expected_currency_rate' digits=0
  • fiscal_position_id Many2one → account.fiscal.position
    check_company=True compute='_compute_fiscal_position_id' help='Fiscal positions are used to adapt taxes and accounts for particular customers or sales orders/invoices. The default value comes from the customer.' ondelete='restrict' precompute=True readonly=False store=True string='Fiscal Position' args: 'account.fiscal.position'
  • has_reconciled_entries Boolean
    compute='_compute_has_reconciled_entries'
  • hide_post_button Boolean
    compute='_compute_hide_post_button' readonly=True
  • highest_name Char
    compute='_compute_highest_name'
  • highlight_send_button Boolean
    compute='_compute_highlight_send_button'
  • inalterable_hash Char
    copy=False index='btree_not_null' readonly=True string='Inalterability Hash'
  • incoterm_location Char
    compute='_compute_incoterm_location' readonly=False store=True string='Incoterm Location'
  • invoice_cash_rounding_id Many2one → account.cash.rounding
    comodel_name='account.cash.rounding' help='Defines the smallest coinage of the currency that can be used to pay by cash.' string='Cash Rounding Method'
  • invoice_currency_rate Float
    compute='_compute_invoice_currency_rate' copy=False digits=0 help='Currency rate from company currency to document currency.' precompute=True readonly=False store=True string='Currency Rate'
  • invoice_date Date
    copy=False index=True string='Invoice/Bill Date'
  • invoice_date_due Date
    compute='_compute_invoice_date_due' copy=False index=True readonly=False store=True string='Due Date'
  • invoice_filter_type_domain Char
    compute='_compute_invoice_filter_type_domain'
  • invoice_has_outstanding Boolean
    compute='_compute_invoice_has_outstanding' groups='account.group_account_invoice,account.group_account_readonly'
  • invoice_incoterm_id Many2one → account.incoterms
    comodel_name='account.incoterms' compute='_compute_incoterm' help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' readonly=False store=True string='Incoterm'
  • invoice_incoterm_placeholder Char
    compute='_compute_invoice_incoterm_placeholder'
  • invoice_line_ids One2many → account.move.line
    copy=False domain=[('display_type', 'in', ('product', 'line_section', 'line_subsection', 'line_note'))] string='Invoice lines' args: 'account.move.line', 'move_id'
  • invoice_origin Char
    copy=False help='The document(s) that generated the invoice.' readonly=True string='Origin' tracking=True
  • invoice_outstanding_credits_debits_widget Binary
    compute='_compute_payments_widget_to_reconcile_info' exportable=False groups='account.group_account_invoice,account.group_account_readonly'
  • invoice_partner_display_name Char
    compute='_compute_invoice_partner_display_info' store=True
  • invoice_payment_term_id Many2one → account.payment.term
    check_company=True comodel_name='account.payment.term' compute='_compute_invoice_payment_term_id' inverse='_inverse_invoice_payment_term_id' precompute=True readonly=False store=True string='Payment Terms'
  • invoice_payments_widget Binary
    compute='_compute_payments_widget_reconciled_info' exportable=False groups='account.group_account_invoice,account.group_account_readonly'
  • invoice_pdf_report_file Binary
    attachment=True copy=False string='PDF File'
  • invoice_pdf_report_id Many2one → ir.attachment
    comodel_name='ir.attachment' compute=<expr> depends=['invoice_pdf_report_file'] string='PDF Attachment'
  • invoice_source_email Char
    string='Source Email' tracking=True
  • invoice_user_id Many2one → res.users
    comodel_name='res.users' compute='_compute_invoice_default_sale_person' copy=False readonly=False store=True string='Salesperson' tracking=True
  • invoice_vendor_bill_id Many2one → account.move
    check_company=True help='Auto-complete from a previous bill or refund.' store=False string='Vendor Bill' args: 'account.move'
  • is_being_sent Boolean
    compute='_compute_is_being_sent' help='Is the move being sent asynchronously'
  • is_draft_duplicated_ref_ids Boolean
    compute='_compute_is_draft_duplicated_ref_ids'
  • is_exact_move_duplicate Boolean
    compute='_compute_is_draft_duplicated_ref_ids'
  • is_manually_modified Boolean
  • is_move_sent Boolean
    copy=False help='It indicates that the invoice/payment has been sent or the PDF has been generated.' readonly=True
  • is_sale_installed Boolean
    compute='_compute_is_sale_installed'
  • is_storno Boolean
    compute='_compute_is_storno'
  • journal_group_id Many2one → account.journal.group
    search='_search_journal_group_id' store=False string='Ledger' args: 'account.journal.group'
  • journal_id Many2one → account.journal
    check_company=True compute='_compute_journal_id' domain="[('id', 'in', suitable_journal_ids)]" inverse='_inverse_journal_id' precompute=True readonly=False required=True store=True string='Journal' args: 'account.journal'
  • journal_line_ids One2many → account.move.line
    comodel_name='account.move.line' copy=False domain=[('display_type', 'not in', ('line_section', 'line_subsection', 'line_note'))] exportable=False inverse_name='move_id' string='Journal Items (DEPRECATED)'
  • line_ids One2many → account.move.line
    copy=True string='Journal Items' args: 'account.move.line', 'move_id'
  • made_sequence_gap Boolean
  • matched_payment_ids Many2many → account.payment
    column1='invoice_id' column2='payment_id' comodel_name='account.payment' copy=False relation='account_move__account_payment' string='Matched Payments'
  • move_sent_values Selection
    compute='compute_move_sent_values' search='_search_move_sent_values' selection=[('sent', 'Sent'), ('not_sent', 'Not Sent')] string='Sent'
  • move_type Selection
    change_default=True default='entry' index=True readonly=True required=True selection=[('entry', 'Journal Entry'), ('out_invoice', 'Customer Invoice'), ('out_refund', 'Customer Credit Note'), ('in_invoice', 'Vendor Bill'), ('in_refund', 'Vendor Credit Note'), ('out_receipt', 'Sales Receipt'), ('in_receipt', 'Purchase Receipt')] string='Type' tracking=True
  • name Char
    compute='_compute_name' copy=False index='trigram' inverse='_inverse_name' readonly=False store=True string='Number' tracking=True
  • name_placeholder Char
    compute='_compute_name_placeholder'
  • narration Html
    compute='_compute_narration' readonly=False store=True string='Terms and Conditions'
  • need_cancel_request Boolean
    compute='_compute_need_cancel_request'
  • needed_terms Binary
    compute='_compute_needed_terms' exportable=False
  • needed_terms_dirty Boolean
    compute='_compute_needed_terms'
  • next_payment_date Date
    compute='_compute_next_payment_date' search='_search_next_payment_date' string='Next Payment Date'
  • no_followup Boolean
    compute='_compute_no_followup' help='Exclude this journal entry from follow-up reports.' inverse='_inverse_no_followup' readonly=False string='No Follow-Up'
  • origin_payment_id Many2one → account.payment
    check_company=True comodel_name='account.payment' copy=False index='btree_not_null' string='Payment'
  • partner_bank_id Many2one → res.partner.bank
    check_company=True compute='_compute_partner_bank_id' help='Bank Account Number to which the invoice will be paid. A Company bank account if this is a Customer Invoice or Vendor Credit Note, otherwise a Partner bank account number.' index='btree_not_null' ondelete='restrict' readonly=False store=True string='Recipient Bank' tracking=True args: 'res.partner.bank'
  • partner_credit_warning Text
    compute='_compute_partner_credit_warning' groups='account.group_account_invoice,account.group_account_readonly'
  • partner_id Many2one → res.partner
    change_default=True check_company=True index=True inverse='_inverse_partner_id' ondelete='restrict' readonly=False string='Partner' tracking=True args: 'res.partner'
  • partner_shipping_id Many2one → res.partner
    check_company=True comodel_name='res.partner' compute='_compute_partner_shipping_id' help='The delivery address will be used in the computation of the fiscal position.' precompute=True readonly=False store=True string='Delivery Address'
  • payment_count Integer
    compute='_compute_payment_count' compute_sudo=True
  • payment_reference Char
    compute='_compute_payment_reference' copy=False help='The payment reference to set on journal items.' index='trigram' inverse='_inverse_payment_reference' readonly=False store=True string='Payment Reference' tracking=True
  • payment_state Selection
    compute='_compute_payment_state' copy=False readonly=True selection=PAYMENT_STATE_SELECTION store=True string='Payment Status' tracking=True
  • payment_term_details Binary
    compute='_compute_payment_term_details' exportable=False
  • posted_before Boolean
    copy=False
  • preferred_payment_method_line_id Many2one → account.payment.method.line
    comodel_name='account.payment.method.line' compute='_compute_preferred_payment_method_line_id' readonly=False store=True string='Preferred Payment Method Line'
  • qr_code_method Selection
    copy=False help='Type of QR-code to be generated for the payment of this invoice, when printing it. If left blank, the first available and usable method will be used.' selection=<expr> string='Payment QR-code'
  • quick_edit_mode Boolean
    compute='_compute_quick_edit_mode'
  • quick_edit_total_amount Monetary
    help='Use this field to encode the total amount of the invoice.\nOdoo will automatically create one invoice line with default values to match it.' string='Total (Tax inc.)'
  • quick_encoding_vals Json
    compute='_compute_quick_encoding_vals' exportable=False
  • reconciled_payment_ids Many2many → account.payment
    compute='_compute_reconciled_payment_ids' help='Payments that have been reconciled with this invoice.' search='_search_reconciled_payment_ids' string='Reconciled Payments' args: 'account.payment'
  • ref Char
    copy=False index='trigram' string='Reference' tracking=True
  • restrict_mode_hash_table Boolean
    related='journal_id.restrict_mode_hash_table'
  • reversal_move_ids One2many → account.move
    args: 'account.move', 'reversed_entry_id'
  • reversed_entry_id Many2one → account.move
    check_company=True comodel_name='account.move' copy=False index='btree_not_null' readonly=True string='Reversal of'
  • secure_sequence_number Integer
    copy=False index=True readonly=True string='Inalterability No Gap Sequence #'
  • secured Boolean
    compute='_compute_secured' help='The entry is secured with an inalterable hash.' search='_search_secured'
  • sending_data Json
    copy=False
  • show_delivery_date Boolean
    compute='_compute_show_delivery_date'
  • show_discount_details Boolean
    compute='_compute_show_payment_term_details'
  • show_journal Boolean
    compute='_compute_show_journal'
  • show_name_warning Boolean
    store=False
  • show_payment_term_details Boolean
    compute='_compute_show_payment_term_details'
  • show_reset_to_draft_button Boolean
    compute='_compute_show_reset_to_draft_button'
  • show_taxable_supply_date Boolean
    compute='_compute_show_taxable_supply_date'
  • show_update_fpos Boolean
    store=False string='Has Fiscal Position Changed'
  • state Selection
    copy=False default='draft' readonly=True required=True selection=[('draft', 'Draft'), ('posted', 'Posted'), ('cancel', 'Cancelled')] string='Status' tracking=True
  • statement_id Many2one
    related='statement_line_id.statement_id'
  • statement_line_id Many2one → account.bank.statement.line
    check_company=True comodel_name='account.bank.statement.line' copy=False index='btree_not_null' string='Statement Line'
  • status_in_payment Selection
    compute='_compute_status_in_payment' copy=False selection=<expr>
  • suitable_journal_ids Many2many → account.journal
    compute='_compute_suitable_journal_ids' args: 'account.journal'
  • tax_calculation_rounding_method Selection
    readonly=True related='company_id.tax_calculation_rounding_method' string='Tax calculation rounding method'
  • tax_cash_basis_created_move_ids One2many → account.move
    comodel_name='account.move' help='The cash basis entries created from the taxes on this entry, when reconciling its lines.' inverse_name='tax_cash_basis_origin_move_id' string='Cash Basis Entries'
  • tax_cash_basis_origin_move_id Many2one → account.move
    comodel_name='account.move' help='The journal entry from which this tax cash basis journal entry has been created.' index='btree_not_null' readonly=True string='Cash Basis Origin'
  • tax_cash_basis_rec_id Many2one → account.partial.reconcile
    comodel_name='account.partial.reconcile' index='btree_not_null' string='Tax Cash Basis Entry of'
  • tax_country_code Char
    compute='_compute_tax_country_code'
  • tax_country_id Many2one → res.country
    comodel_name='res.country' compute='_compute_tax_country_id'
  • tax_lock_date_message Char
    compute='_compute_tax_lock_date_message'
  • tax_totals Binary
    compute='_compute_tax_totals' exportable=False help='Edit Tax amounts if you encounter rounding issues.' inverse='_inverse_tax_totals' string='Invoice Totals'
  • taxable_supply_date Date
    compute='_compute_taxable_supply_date' copy=False precompute=True readonly=False store=True string='Taxable Supply Date'
  • taxable_supply_date_placeholder Char
    compute='_compute_taxable_supply_date_placeholder'
  • taxes_legal_notes Html
    compute='_compute_taxes_legal_notes' string='Taxes Legal Notes'
  • type_name Char
    compute='_compute_type_name' args: 'Type Name'
  • user_id Many2one
    related='invoice_user_id' string='User'
Public methods (62)
  • action_activate_currency(self)
  • action_add_from_catalog(self)
  • action_delete_duplicates(self)
  • action_duplicate(self)
  • action_force_register_payment(self)
  • action_invoice_download_pdf(self, target='download')
  • action_invoice_sent(self)
    Open a window to compose an email, with the edi invoice template message loaded by default
  • action_move_download_all(self)
  • action_open_business_doc(self)
  • action_post(self)
  • action_print_pdf(self)
  • action_register_payment(self)
  • action_reverse(self)
  • action_send_and_print(self)
  • action_switch_move_type(self)
  • action_toggle_block_payment(self)
  • action_update_fpos_values(self)
  • action_validate_moves_with_confirmation(self)
    If 'restrict_mode_hash_table' is enabled or future-dated moves, open a confirmation wizard; otherwise, validate moves directly.
  • button_cancel(self)
  • button_draft(self)
  • button_hash(self)
  • button_request_cancel(self)
    Hook allowing the localizations to request a cancellation from the government before cancelling the invoice.
  • button_set_checked(self)
  • check_field_access_rights(self, operation, field_names)
    @api.model@api.deprecated('Override of a deprecated method')
  • check_move_sequence_chain(self)
  • check_selected_moves(self)
  • compute_move_sent_values(self)
    @api.depends('is_move_sent')
  • copy(self, default=None)
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • get_currency_rate(self, company_id, to_currency_id, date)
  • get_extra_print_items(self)
    Helper to dynamically add items in the 'Print' menu of list and form of account.move.
  • get_import_templates(self)
    @api.model
  • get_inbound_types(self, include_receipts=True)
    @api.model
  • get_invoice_localisation_fields_required_to_invoice(self, country_id)
    @api.model
    Returns the list of fields that needs to be filled when creating an invoice for the selected country. This is required for some flows that would allow a user to request an invoice from the portal. Using these, we can get their information and dynamically create form inputs based for the fields required legally for the company country_id. The returned fields must be of type ir.model.fields in order to handle translations :param country_id: The country for which we want the fields. :return: an array of ir.model.fields for which the user should provide values.
  • get_invoice_types(self, include_receipts=False)
    @api.model
  • get_outbound_types(self, include_receipts=True)
    @api.model
  • get_purchase_types(self, include_receipts=False)
    @api.model
  • get_sale_types(self, include_receipts=False)
    @api.model
  • is_entry(self)
  • is_inbound(self, include_receipts=True)
  • is_invoice(self, include_receipts=False)
  • is_outbound(self, include_receipts=True)
  • is_purchase_document(self, include_receipts=False, move_type=False)
  • is_receipt(self)
  • is_sale_document(self, include_receipts=False, move_type=False)
  • js_assign_outstanding_line(self, line_id)
    Called by the 'payment' widget to reconcile a suggested journal item to the present invoice. :param line_id: The id of the line to reconcile with the current invoice.
  • js_remove_outstanding_partial(self, partial_id)
    Called by the 'payment' widget to remove a reconciled entry to the present invoice. :param partial_id: The id of an existing partial reconciled with the current invoice.
  • message_new(self, msg_dict, custom_values=None)
    @api.model
  • onchange(self, values, field_names, fields_spec)
  • open_adjusting_entries(self)
  • open_adjusting_entry_origin_moves(self)
  • open_created_caba_entries(self)
  • open_payments(self)
  • open_reconcile_view(self)
  • preview_invoice(self)
  • read(self, fields=None, load='_classic_read')
  • refresh_invoice_currency_rate(self)
  • search_read(self, domain=None, fields=None, offset=0, limit=None, order=None, **read_kwargs)
    @api.model
  • set_moves_checked(self, is_checked=True)
  • unlink(self)
  • write(self, vals)

New fields (92)
  • account_code Char
    related='account_id.code'
  • account_id Many2one → account.account
    bypass_search_access=True check_company=True comodel_name='account.account' compute='_compute_account_id' domain="[('account_type', '!=', 'off_balance')]" index=False inverse='_inverse_account_id' ondelete='restrict' precompute=True readonly=False store=True string='Account' tracking=True
  • account_internal_group Selection
    related='account_id.internal_group'
  • account_name Char
    related='account_id.name'
  • account_root_id Many2one
    depends_context='company' related='account_id.root_id' string='Account Root'
  • account_type Selection
    related='account_id.account_type' string='Internal Type'
  • allowed_uom_ids Many2many → uom.uom
    compute='_compute_allowed_uom_ids' args: 'uom.uom'
  • amount_currency Monetary
    compute='_compute_amount_currency' help='The amount expressed in an optional other currency if it is a multi-currency entry.' inverse='_inverse_amount_currency' precompute=True readonly=False store=True string='Amount in Currency'
  • amount_residual Monetary
    compute='_compute_amount_residual' currency_field='company_currency_id' help='The residual amount on a journal item expressed in the company currency.' store=True string='Residual Amount'
  • amount_residual_currency Monetary
    compute='_compute_amount_residual' help='The residual amount on a journal item expressed in its currency (possibly not the company currency).' store=True string='Residual Amount in Currency'
  • analytic_distribution Json
    inverse='_inverse_analytic_distribution'
  • analytic_line_ids One2many → account.analytic.line
    comodel_name='account.analytic.line' inverse_name='move_line_id' string='Analytic lines'
  • balance Monetary
    compute='_compute_balance' currency_field='company_currency_id' precompute=True readonly=False store=True string='Balance' tracking=True
  • collapse_composition Boolean
    help='If checked, the lines below this section will not be displayed in reports and portal.' string='Hide Composition'
  • collapse_prices Boolean
    help='If checked, the prices of the lines below this section will not be displayed in reports and portal.' string='Hide Prices'
  • commercial_partner_country Many2one
    related='move_id.commercial_partner_id.country_id' string='Commercial Partner Country'
  • company_currency_id Many2one
    precompute=True readonly=True related='move_id.company_currency_id' store=True string='Company Currency'
  • company_id Many2one
    index=True precompute=True readonly=True related='move_id.company_id' store=True
  • count_reconciled_lines Integer
    compute='_compute_reconciled_lines_ids'
  • count_reconciled_lines_excluding_exchange_diff Boolean
    compute='_compute_reconciled_lines_excluding_exchange_diff_ids'
  • credit Monetary
    compute='_compute_debit_credit' currency_field='company_currency_id' inverse='_inverse_credit' precompute=True store=True string='Credit'
  • cumulated_balance Monetary
    compute='_compute_cumulated_balance' currency_field='company_currency_id' exportable=False help='Cumulated balance depending on the domain and the order chosen in the view.' string='Cumulated Balance'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' precompute=True readonly=False required=True store=True string='Currency'
  • currency_rate Float
    compute='_compute_currency_rate' help='Currency rate from company currency to document currency.'
  • date Date
    aggregator='min' copy=False related='move_id.date' store=True
  • date_maturity Date
    help='This field is used for payable and receivable journal entries. You can put the limit date for the payment of this line.' index=True string='Due Date' tracking=True
  • debit Monetary
    compute='_compute_debit_credit' currency_field='company_currency_id' inverse='_inverse_debit' precompute=True store=True string='Debit'
  • deductible_amount Float
    default=100 args: 'Deductibility'
  • discount Float
    default=0.0 digits='Discount' string='Discount (%)'
  • discount_allocation_dirty Boolean
    compute='_compute_discount_allocation_needed'
  • discount_allocation_key Binary
    compute='_compute_discount_allocation_key' exportable=False
  • discount_allocation_needed Binary
    compute='_compute_discount_allocation_needed' exportable=False
  • discount_amount_currency Monetary
    currency_field='currency_id' store=True string='Discount amount in Currency'
  • discount_balance Monetary
    currency_field='company_currency_id' store=True string='Discount Balance'
  • discount_date Date
    help='Last date at which the discounted amount must be paid in order for the Early Payment Discount to be granted' readonly=True store=True string='Discount Date'
  • display_type Selection
    compute='_compute_display_type' precompute=True readonly=False required=True selection=[('product', 'Product'), ('cogs', 'Cost of Goods Sold'), ('tax', 'Tax'), ('discount', 'Discount'), ('rounding', 'Rounding'), ('payment_term', 'Payment Term'), ('line_section', 'Section'), ('line_subsection', 'Subsection'), ('line_note', 'Note'), ('epd', 'Early Payment Discount'), ('non_deductible_product_total', 'Non Deductible Products Total'), ('non_deductible_product', 'Non Deductible Products'), ('non_deductible_tax', 'Non Deductible Tax')] store=True
  • epd_dirty Boolean
    compute='_compute_epd_needed'
  • epd_key Binary
    compute='_compute_epd_key' exportable=False
  • epd_needed Binary
    compute='_compute_epd_needed' exportable=False
  • exchange_move_ids Many2many → account.move
    comodel_name='account.move' compute='_compute_exchange_move'
  • extra_tax_data Json
  • first_reconciled_lines_excluding_exchange_diff_id Many2one → account.move.line
    comodel_name='account.move.line' compute='_compute_reconciled_lines_excluding_exchange_diff_ids'
  • first_reconciled_lines_id Many2one → account.move.line
    comodel_name='account.move.line' compute='_compute_reconciled_lines_ids'
  • full_reconcile_id Many2one → account.full.reconcile
    comodel_name='account.full.reconcile' copy=False index='btree_not_null' readonly=True string='Matching'
  • group_tax_id Many2one → account.tax
    check_company=True comodel_name='account.tax' index='btree_not_null' string='Originator Group of Taxes'
  • has_invalid_analytics Boolean
    compute='_compute_has_invalid_analytics'
  • invoice_date Date
    aggregator='min' copy=False related='move_id.invoice_date' store=True
  • is_account_reconcile Boolean
    related='account_id.reconcile' string='Account Reconcile'
  • is_imported Boolean
  • is_refund Boolean
    compute='_compute_is_refund'
  • is_same_currency Boolean
    compute='_compute_same_currency'
  • is_storno Boolean
    compute='_compute_is_storno' help='Utility field to express whether the journal item is subject to storno accounting' precompute=True readonly=False store=True string='Company Storno Accounting'
  • journal_group_id Many2one → account.journal.group
    comodel_name='account.journal.group' search='_search_journal_group_id' store=False string='Ledger'
  • journal_id Many2one
    copy=False index=True precompute=True related='move_id.journal_id' store=True
  • matched_credit_ids One2many → account.partial.reconcile
    comodel_name='account.partial.reconcile' help='Credit journal items that are matched with this journal item.' inverse_name='debit_move_id' readonly=True string='Matched Credits'
  • matched_debit_ids One2many → account.partial.reconcile
    comodel_name='account.partial.reconcile' help='Debit journal items that are matched with this journal item.' inverse_name='credit_move_id' readonly=True string='Matched Debits'
  • matching_number Char
    copy=False help="Matching number for this line, 'P' if it is only partially reconcile, or the name of the full reconcile if it exists." index='btree' string='Matching #'
  • move_id Many2one → account.move
    bypass_search_access=True check_company=True comodel_name='account.move' index=True ondelete='cascade' readonly=True required=True string='Journal Entry'
  • move_name Char
    index='btree' related='move_id.name' store=True string='Number'
  • move_type Selection
    related='move_id.move_type'
  • name Char
    compute='_compute_name' precompute=True readonly=False store=True string='Label' tracking=True
  • no_followup Boolean
    compute='_compute_no_followup' help='Exclude this journal item from follow-up reports.' inverse='_inverse_no_followup' readonly=False store=True string='No Follow-Up'
  • parent_id Many2one → account.move.line
    compute='_compute_parent_id' compute_sudo=True string='Parent Section Line' args: 'account.move.line'
  • parent_state Selection
    related='move_id.state' store=True
  • partner_id Many2one → res.partner
    comodel_name='res.partner' compute='_compute_partner_id' inverse='_inverse_partner_id' ondelete='restrict' precompute=True readonly=False store=True string='Partner'
  • payment_date Date
    compute='_compute_payment_date' search='_search_payment_date' string='Next Payment Date'
  • payment_id Many2one → account.payment
    bypass_search_access=True comodel_name='account.payment' help='The payment that created this entry' index='btree_not_null' related='move_id.origin_payment_id' store=True string='Originator Payment'
  • price_subtotal Monetary
    compute='_compute_totals' currency_field='currency_id' store=True string='Subtotal'
  • price_total Monetary
    compute='_compute_totals' currency_field='currency_id' store=True string='Total'
  • price_unit Float
    compute='_compute_price_unit' min_display_digits='Product Price' precompute=True readonly=False store=True string='Unit Price'
  • product_category_id Many2one
    related='product_id.product_tmpl_id.categ_id'
  • product_id Many2one → product.product
    check_company=True comodel_name='product.product' index=True inverse='_inverse_product_id' ondelete='restrict' string='Product'
  • product_uom_id Many2one → uom.uom
    comodel_name='uom.uom' compute='_compute_product_uom_id' domain="[('id', 'in', allowed_uom_ids)]" ondelete='restrict' precompute=True readonly=False store=True string='Unit'
  • quantity Float
    compute='_compute_quantity' digits='Product Unit' help='The optional quantity expressed by this line, eg: number of product sold. The quantity is not a legal requirement but is very useful for some reports.' precompute=True readonly=False store=True string='Quantity'
  • reconcile_model_id Many2one → account.reconcile.model
    check_company=True comodel_name='account.reconcile.model' copy=False readonly=True string='Reconciliation Model'
  • reconciled Boolean
    compute='_compute_amount_residual' store=True
  • reconciled_lines_excluding_exchange_diff_ids Many2many → account.move.line
    comodel_name='account.move.line' compute='_compute_reconciled_lines_excluding_exchange_diff_ids'
  • reconciled_lines_ids Many2many → account.move.line
    comodel_name='account.move.line' compute='_compute_reconciled_lines_ids' inverse='_inverse_reconciled_lines_ids'
  • ref Char
    copy=False index='trigram' related='move_id.ref' store=True
  • search_account_id Many2one → account.account
    search='_search_account_id' store=False args: 'account.account'
  • sequence Integer
    compute='_compute_sequence' precompute=True readonly=False store=True
  • statement_id Many2one
    bypass_search_access=True copy=False help='The bank statement used for bank reconciliation' index='btree_not_null' related='statement_line_id.statement_id' store=True
  • statement_line_id Many2one → account.bank.statement.line
    bypass_search_access=True comodel_name='account.bank.statement.line' help='The statement line that created this entry' index='btree_not_null' related='move_id.statement_line_id' store=True string='Originator Statement Line'
  • tax_base_amount Monetary
    currency_field='company_currency_id' readonly=True string='Base Amount'
  • tax_calculation_rounding_method Selection
    readonly=True related='company_id.tax_calculation_rounding_method' string='Tax calculation rounding method'
  • tax_group_id Many2one
    precompute=True related='tax_line_id.tax_group_id' store=True string='Originator tax group'
  • tax_ids Many2many → account.tax
    check_company=True comodel_name='account.tax' compute='_compute_tax_ids' context={'active_test': False, 'hide_original_tax_ids': True} precompute=True readonly=False store=True string='Taxes' tracking=True
  • tax_line_id Many2one → account.tax
    comodel_name='account.tax' help='Indicates that this journal item is a tax line' ondelete='restrict' precompute=True related='tax_repartition_line_id.tax_id' store=True string='Originator Tax'
  • tax_repartition_line_id Many2one → account.tax.repartition.line
    check_company=True comodel_name='account.tax.repartition.line' help='Tax distribution line that caused the creation of this move line, if any' ondelete='restrict' readonly=True string='Originator Tax Distribution Line'
  • tax_tag_ids Many2many → account.account.tag
    comodel_name='account.account.tag' context={'active_test': False} help='Tags assigned to this line by the tax creating it, if any. It determines its impact on financial reports.' ondelete='restrict' string='Tags' tracking=True
  • term_key Binary
    compute='_compute_term_key' exportable=False
  • translated_product_name Text
    compute='_compute_translated_product_name'
Public methods (28)
  • action_add_from_catalog(self)
    Will open the catalog view
  • action_automatic_entry(self, default_action=None)
  • action_open_business_doc(self)
  • action_payment_items_register_payment(self)
  • action_register_payment(self, ctx=None)
    Open the account.payment.register wizard to pay the selected journal items. :return: An action opening the account.payment.register wizard.
  • action_unreconcile_match_entries(self)
    This method will do the unreconcile action in the list view of the moves
  • check_field_access_rights(self, operation, field_names)
    @api.model@api.deprecated('Override of a deprecated method')
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • flush_model(self, fnames=None)
  • flush_recordset(self, fnames=None)
  • get_column_to_exclude_for_colspan_calculation(self, taxes=None)
  • get_import_templates(self)
    @api.model
  • get_parent_section_line(self)
  • get_section_subtotal(self)
  • get_section_total(self)
  • get_views(self, views, options=None)
    @api.model
  • invalidate_model(self, fnames=None, flush=True)
  • invalidate_recordset(self, fnames=None, flush=True)
  • open_reconcile_view(self)
  • read(self, fields=None, load='_classic_read')
  • reconcile(self)
    Reconcile the current move lines all together.
  • remove_move_reconcile(self)
    Undo a reconciliation
  • search_fetch(self, domain, field_names=None, offset=0, limit=None, order=None)
    @api.model
  • search_read(self, domain=None, fields=None, offset=0, limit=None, order=None, **read_kwargs)
    @api.model
  • unlink(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (11)
  • available_journal_ids Many2many → account.journal
    compute='_compute_available_journal_ids' args: 'account.journal'
  • company_id Many2one → res.company
    readonly=True required=True args: 'res.company'
  • country_code Char
    related='company_id.country_id.code'
  • currency_id Many2one → res.currency
    compute='_compute_from_moves' args: 'res.currency'
  • date Date
    default=fields.Date.context_today string='Reversal date'
  • journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' compute='_compute_journal_id' help='If empty, uses the journal of the journal entry to be reversed.' readonly=False required=True store=True string='Journal'
  • move_ids Many2many → account.move
    domain=[('state', '=', 'posted')] args: 'account.move', 'account_move_reversal_move', 'reversal_id', 'move_id'
  • move_type Char
    compute='_compute_from_moves'
  • new_move_ids Many2many → account.move
    args: 'account.move', 'account_move_reversal_new_move', 'reversal_id', 'new_move_id'
  • reason Char
    string='Reason displayed on Credit Note'
  • residual Monetary
    compute='_compute_from_moves'
Public methods (4)
  • default_get(self, fields)
    @api.model
  • modify_moves(self)
  • refund_moves(self)
  • reverse_moves(self, is_modify=False)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • alerts Json
    compute='_compute_alerts'
  • move_ids Many2many → account.move
    comodel_name='account.move' required=True
  • summary_data Json
    compute='_compute_summary_data'
Public methods (2)
  • action_send_and_print(self, force_synchronous=False, allow_fallback_pdf=False)
    Launch asynchronously the generation and sending of invoices.
  • default_get(self, fields)
    @api.model

New fields (20)
  • alerts Json
    compute='_compute_alerts'
  • attachments_not_supported Json
    compute='_compute_attachments_not_supported'
  • available_pdf_report_ids One2many → ir.actions.report
    comodel_name='ir.actions.report' compute='_compute_available_pdf_report_ids'
  • company_id Many2one → res.company
    comodel_name='res.company' related='move_id.company_id'
  • display_attachments_widget Boolean
    compute='_compute_display_attachments_widget'
  • display_pdf_report_id Boolean
    compute='_compute_display_pdf_report_id'
  • extra_edi_checkboxes Json
    compute='_compute_extra_edi_checkboxes' precompute=True readonly=False store=True
  • extra_edis Json
    compute='_compute_extra_edis' inverse='_inverse_extra_edis'
  • invoice_edi_format Selection
    compute='_compute_invoice_edi_format' selection=<expr>
  • lang Char
    compute='_compute_lang' compute_sudo=True precompute=False
  • mail_attachments_widget Json
    compute='_compute_mail_attachments_widget' readonly=False store=True
  • mail_partner_ids Many2many → res.partner
    comodel_name='res.partner' compute='_compute_mail_partners' readonly=False store=True string='To'
  • model Char
    compute='_compute_model' readonly=False store=True args: 'Related Document Model'
  • move_id Many2one → account.move
    comodel_name='account.move' required=True
  • pdf_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' compute='_compute_pdf_report_id' domain="[('id', 'in', available_pdf_report_ids)]" readonly=False store=True string='Invoice report'
  • res_ids Text
    compute='_compute_res_ids' readonly=False store=True args: 'Related Document IDs'
  • sending_method_checkboxes Json
    compute='_compute_sending_method_checkboxes' precompute=True readonly=False store=True
  • sending_methods Json
    compute='_compute_sending_methods' inverse='_inverse_sending_methods'
  • template_id Many2one
    compute='_compute_template_id' compute_sudo=True domain="[('model', '=', 'account.move')]" readonly=False store=True
  • template_name Char
    args: 'Template Name'
Public methods (5)
  • action_send_and_print(self, allow_fallback_pdf=False)
    Create invoice documents and send them.
  • cancel_save_template(self)
    Restore old subject when canceling the 'save as template' action as it was erased to let user give a more custom input.
  • create_mail_template(self)
    Creates a mail template with the current mail composer's fields.
  • default_get(self, fields)
    @api.model
  • open_template_creation_wizard(self)
    Hit save as template button: opens a wizard that prompts for the template's subject. `create_mail_template` is called when saving the new wizard.

New fields (13)
  • amount Monetary
    currency_field='company_currency_id' help='Always positive amount concerned by this matching expressed in the company currency.'
  • company_currency_id Many2one → res.currency
    comodel_name='res.currency' help='Utility field to express amount currency' related='company_id.currency_id' string='Company Currency'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_id' precompute=True readonly=False store=True string='Company'
  • credit_amount_currency Monetary
    currency_field='credit_currency_id' help='Always positive amount concerned by this matching expressed in the credit line foreign currency.'
  • credit_currency_id Many2one → res.currency
    comodel_name='res.currency' precompute=True related='credit_move_id.currency_id' store=True string='Currency of the credit journal item.'
  • credit_move_id Many2one → account.move.line
    comodel_name='account.move.line' index=True required=True
  • debit_amount_currency Monetary
    currency_field='debit_currency_id' help='Always positive amount concerned by this matching expressed in the debit line foreign currency.'
  • debit_currency_id Many2one → res.currency
    comodel_name='res.currency' precompute=True related='debit_move_id.currency_id' store=True string='Currency of the debit journal item.'
  • debit_move_id Many2one → account.move.line
    comodel_name='account.move.line' index=True required=True
  • draft_caba_move_vals Json
    string='Values that created the draft cash-basis entry'
  • exchange_move_id Many2one → account.move
    comodel_name='account.move' index='btree_not_null'
  • full_reconcile_id Many2one → account.full.reconcile
    comodel_name='account.full.reconcile' copy=False index='btree_not_null' string='Full Reconcile'
  • max_date Date
    compute='_compute_max_date' precompute=True store=True string='Max Date of Matched Lines'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)

New fields (45)
  • amount Monetary
    currency_field='currency_id'
  • amount_company_currency_signed Monetary
    compute='_compute_amount_company_currency_signed' currency_field='company_currency_id' store=True
  • amount_signed Monetary
    compute='_compute_amount_signed' currency_field='currency_id' help='Negative value of amount field if payment_type is outbound' tracking=True
  • attachment_ids One2many → ir.attachment
    string='Attachments' args: 'ir.attachment', 'res_id'
  • available_journal_ids Many2many → account.journal
    comodel_name='account.journal' compute='_compute_available_journal_ids'
  • available_partner_bank_ids Many2many → res.partner.bank
    comodel_name='res.partner.bank' compute='_compute_available_partner_bank_ids'
  • available_payment_method_line_ids Many2many → account.payment.method.line
    compute='_compute_payment_method_line_fields' args: 'account.payment.method.line'
  • company_currency_id Many2one
    related='company_id.currency_id' string='Company Currency'
  • company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_company_id' index=False precompute=True readonly=False required=True store=True
  • country_code Char
    related='company_id.account_fiscal_country_id.code'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' help="The payment's currency." precompute=True readonly=False store=True string='Currency'
  • date Date
    default=fields.Date.context_today required=True tracking=True
  • destination_account_id Many2one → account.account
    check_company=True comodel_name='account.account' compute='_compute_destination_account_id' domain="[('account_type', 'in', ('asset_receivable', 'liability_payable'))]" readonly=False store=True string='Destination Account'
  • duplicate_payment_ids Many2many → account.payment
    comodel_name='account.payment' compute='_compute_duplicate_payment_ids'
  • invoice_ids Many2many → account.move
    column1='payment_id' column2='invoice_id' comodel_name='account.move' copy=False relation='account_move__account_payment' string='Invoices'
  • is_matched Boolean
    compute='_compute_reconciliation_status' store=True string='Is Matched With a Bank Statement'
  • is_reconciled Boolean
    compute='_compute_reconciliation_status' store=True string='Is Reconciled'
  • is_sent Boolean
    copy=False readonly=True string='Is Sent'
  • journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' compute='_compute_journal_id' index=False precompute=True readonly=False required=True store=True
  • memo Char
    inverse='_inverse_memo' string='Memo' tracking=True
  • move_id Many2one → account.move
    check_company=True comodel_name='account.move' copy=False index=True string='Journal Entry'
  • name Char
    compute='_compute_name' store=True string='Number'
  • need_cancel_request Boolean
    related='move_id.need_cancel_request'
  • outstanding_account_id Many2one → account.account
    check_company=True comodel_name='account.account' compute='_compute_outstanding_account_id' index='btree_not_null' store=True string='Outstanding Account'
  • paired_internal_transfer_payment_id Many2one → account.payment
    copy=False help='When an internal transfer is posted, a paired payment is created. They are cross referenced through this field' index='btree_not_null' args: 'account.payment'
  • partner_bank_id Many2one → res.partner.bank
    check_company=True compute='_compute_partner_bank_id' domain="[('id', 'in', available_partner_bank_ids)]" ondelete='restrict' readonly=False store=True string='Recipient Bank Account' tracking=True args: 'res.partner.bank'
  • partner_id Many2one → res.partner
    check_company=True comodel_name='res.partner' domain="['|', ('parent_id','=', False), ('is_company','=', True)]" ondelete='restrict' string='Customer/Vendor' tracking=True
  • partner_type Selection
    default='customer' required=True tracking=True args: [('customer', 'Customer'), ('supplier', 'Vendor')]
  • payment_method_code Char
    related='payment_method_line_id.code'
  • payment_method_id Many2one
    related='payment_method_line_id.payment_method_id' store=True string='Method' tracking=True
  • payment_method_line_id Many2one → account.payment.method.line
    compute='_compute_payment_method_line_id' copy=False domain="[('id', 'in', available_payment_method_line_ids)]" help='Manual: Pay or Get paid by any method outside of Odoo.\nPayment Providers: Each payment provider has its own Payment Method. Request a transaction on/to a card thanks to a payment token saved by the partner when buying or subscribing online.\nCheck: Pay bills by check and print it from Odoo.\nBatch Deposit: Collect several customer checks at once generating and submitting a batch deposit to your bank. Module account_batch_payment is necessary.\nSEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit Transfer file to your bank. Module account_iso20022 is necessary.\nSEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your partner will have granted to you. Module account_iso20022 is necessary.\nU.S. ISO20022: Pay in the US by submitting an ISO20022 file to your bank. Module account_iso20022 is necessary.\n' readonly=False store=True string='Payment Method' args: 'account.payment.method.line'
  • payment_receipt_title Char
    compute='_compute_payment_receipt_title'
  • payment_reference Char
    copy=False help='Reference of the document used to issue this payment. Eg. check number, file name, etc.' string='Payment Reference' tracking=True
  • payment_type Selection
    default='inbound' required=True string='Payment Type' tracking=True args: [('outbound', 'Send'), ('inbound', 'Receive')]
  • qr_code Html
    compute='_compute_qr_code' string='QR Code URL'
  • reconciled_bill_ids Many2many → account.move
    compute='_compute_stat_buttons_from_reconciliation' help='Invoices whose journal items have been reconciled with these payments.' search='_search_reconciled_invoice_ids' string='Reconciled Bills' args: 'account.move'
  • reconciled_bills_count Integer
    compute='_compute_stat_buttons_from_reconciliation' string='# Reconciled Bills'
  • reconciled_invoice_ids Many2many → account.move
    compute='_compute_stat_buttons_from_reconciliation' help='Invoices whose journal items have been reconciled with these payments.' search='_search_reconciled_invoice_ids' string='Reconciled Invoices' args: 'account.move'
  • reconciled_invoices_count Integer
    compute='_compute_stat_buttons_from_reconciliation' string='# Reconciled Invoices'
  • reconciled_invoices_type Selection
    compute='_compute_stat_buttons_from_reconciliation' args: [('credit_note', 'Credit Note'), ('invoice', 'Invoice')]
  • reconciled_statement_line_ids Many2many → account.bank.statement.line
    comodel_name='account.bank.statement.line' compute='_compute_stat_buttons_from_reconciliation' help='Statements lines matched to this payment' string='Reconciled Statement Lines'
  • reconciled_statement_lines_count Integer
    compute='_compute_stat_buttons_from_reconciliation' string='# Reconciled Statement Lines'
  • require_partner_bank_account Boolean
    compute='_compute_show_require_partner_bank'
  • show_partner_bank_account Boolean
    compute='_compute_show_require_partner_bank'
  • state Selection
    compute='_compute_state' copy=False default='draft' readonly=False required=True selection=[('draft', 'Draft'), ('in_process', 'In Process'), ('paid', 'Paid'), ('canceled', 'Canceled'), ('rejected', 'Rejected')] store=True tracking=True
Public methods (17)
  • action_cancel(self)
  • action_draft(self)
  • action_open_business_doc(self)
  • action_post(self)
    draft -> posted
  • action_reject(self)
  • action_validate(self)
  • button_open_bills(self)
    Redirect the user to the bill(s) paid by this payment. :return: An action on account.move.
  • button_open_invoices(self)
    Redirect the user to the invoice(s) paid by this payment. :return: An action on account.move.
  • button_open_journal_entry(self)
    Redirect the user to this payment journal. :return: An action on account.move.
  • button_open_statement_lines(self)
    Redirect the user to the statement line(s) reconciled to this payment. :return: An action on account.move.
  • button_request_cancel(self)
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • mark_as_sent(self)
  • unlink(self)
  • unmark_as_sent(self)
  • write(self, vals)

New fields (3)
  • code Char
    required=True
  • name Char
    required=True translate=True
  • payment_type Selection
    required=True selection=[('inbound', 'Inbound'), ('outbound', 'Outbound')]
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)

New fields (10)
  • available_payment_method_ids Many2many
    related='journal_id.available_payment_method_ids'
  • code Char
    related='payment_method_id.code'
  • company_id Many2one
    related='journal_id.company_id'
  • default_account_id Many2one
    related='journal_id.default_account_id'
  • journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' index='btree_not_null'
  • name Char
    compute='_compute_name' readonly=False store=True
  • payment_account_id Many2one → account.account
    check_company=True comodel_name='account.account' copy=False domain="['|', ('account_type', 'in', ('asset_current', 'liability_current')), ('id', '=', default_account_id)]" ondelete='restrict'
  • payment_method_id Many2one → account.payment.method
    comodel_name='account.payment.method' domain="[('payment_type', '=?', payment_type), ('id', 'in', available_payment_method_ids)]" required=True string='Payment Method'
  • payment_type Selection
    related='payment_method_id.payment_type'
  • sequence Integer
    default=10
Public methods (1)
  • unlink(self)
    Payment method lines which are used in a payment should not be deleted from the database, only the link betweend them and the journals must be broken.

New fields (48)
  • actionable_errors Json
    compute='_compute_actionable_errors'
  • amount Monetary
    compute='_compute_amount' currency_field='currency_id' readonly=False store=True
  • available_journal_ids Many2many → account.journal
    comodel_name='account.journal' compute='_compute_available_journal_ids'
  • available_partner_bank_ids Many2many → res.partner.bank
    comodel_name='res.partner.bank' compute='_compute_available_partner_bank_ids'
  • available_payment_method_line_ids Many2many → account.payment.method.line
    compute='_compute_payment_method_line_fields' args: 'account.payment.method.line'
  • batches Binary
    compute='_compute_batches' export_string_translation=False
  • can_edit_wizard Boolean
    compute='_compute_from_lines' copy=False store=True
  • can_group_payments Boolean
    compute='_compute_can_group_payments' copy=False store=True
  • communication Char
    compute='_compute_communication' readonly=False store=True string='Memo'
  • company_currency_id Many2one → res.currency
    related='company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    compute='_compute_from_lines' copy=False store=True args: 'res.company'
  • country_code Char
    readonly=True related='company_id.account_fiscal_country_id.code'
  • currency_id Many2one → res.currency
    comodel_name='res.currency' compute='_compute_currency_id' help="The payment's currency." precompute=True readonly=False store=True string='Currency'
  • custom_user_amount Monetary
    currency_field='currency_id'
  • custom_user_currency_id Many2one → res.currency
    comodel_name='res.currency'
  • duplicate_payment_ids Many2many → account.payment
    comodel_name='account.payment' compute='_compute_duplicate_moves'
  • early_payment_discount_mode Boolean
    compute='_compute_early_payment_discount_mode'
  • group_payment Boolean
    compute='_compute_group_payment' help='Only one payment will be created by partner (bank), instead of one per bill.' readonly=False store=True string='Group Payments'
  • hide_writeoff_section Boolean
    compute='_compute_hide_writeoff_section'
  • installments_mode Selection
    compute='_compute_installments_mode' export_string_translation=False readonly=False selection=[('next', 'Next Installment'), ('overdue', 'Overdue Amount'), ('before_date', 'Before Next Payment Date'), ('full', 'Full Amount')] store=True
  • installments_switch_amount Monetary
    compute='_compute_installments_switch_values' currency_field='currency_id'
  • installments_switch_html Html
    compute='_compute_installments_switch_values'
  • is_register_payment_on_draft Boolean
    compute='_compute_is_register_payment_on_draft'
  • journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' compute='_compute_journal_id' domain="[('id', 'in', available_journal_ids)]" precompute=True readonly=False store=True
  • line_ids Many2many → account.move.line
    copy=False readonly=True string='Journal items' args: 'account.move.line', 'account_payment_register_move_line_rel', 'wizard_id', 'line_id'
  • missing_account_partners Many2many → res.partner
    compute='_compute_trust_values' args: 'res.partner'
  • partner_bank_id Many2one → res.partner.bank
    comodel_name='res.partner.bank' compute='_compute_partner_bank_id' domain="[('id', 'in', available_partner_bank_ids)]" readonly=False store=True string='Recipient Bank Account'
  • partner_id Many2one → res.partner
    compute='_compute_from_lines' copy=False ondelete='restrict' store=True string='Customer/Vendor' args: 'res.partner'
  • partner_type Selection
    compute='_compute_from_lines' copy=False store=True args: [('customer', 'Customer'), ('supplier', 'Vendor')]
  • payment_date Date
    default=fields.Date.context_today required=True string='Payment Date'
  • payment_difference Monetary
    compute='_compute_payment_difference'
  • payment_difference_handling Selection
    compute='_compute_payment_difference_handling' readonly=False selection=[('open', 'Keep open'), ('reconcile', 'Mark as fully paid')] store=True string='Payment Difference Handling'
  • payment_method_code Char
    related='payment_method_line_id.code'
  • payment_method_line_id Many2one → account.payment.method.line
    compute='_compute_payment_method_line_id' domain="[('id', 'in', available_payment_method_line_ids)]" help='Manual: Pay or Get paid by any method outside of Odoo.\nPayment Providers: Each payment provider has its own Payment Method. Request a transaction on/to a card thanks to a payment token saved by the partner when buying or subscribing online.\nCheck: Pay bills by check and print it from Odoo.\nBatch Deposit: Collect several customer checks at once generating and submitting a batch deposit to your bank. Module account_batch_payment is necessary.\nSEPA Credit Transfer: Pay in the SEPA zone by submitting a SEPA Credit Transfer file to your bank. Module account_sepa is necessary.\nSEPA Direct Debit: Get paid in the SEPA zone thanks to a mandate your partner will have granted to you. Module account_sepa is necessary.\n' readonly=False store=True string='Payment Method' args: 'account.payment.method.line'
  • payment_type Selection
    compute='_compute_from_lines' copy=False store=True string='Payment Type' args: [('outbound', 'Send Money'), ('inbound', 'Receive Money')]
  • qr_code Html
    compute='_compute_qr_code' string='QR Code URL'
  • require_partner_bank_account Boolean
    compute='_compute_show_require_partner_bank'
  • show_partner_bank_account Boolean
    compute='_compute_show_require_partner_bank'
  • show_payment_difference Boolean
    compute='_compute_show_payment_difference'
  • source_amount Monetary
    compute='_compute_from_lines' copy=False currency_field='company_currency_id' store=True string='Amount to Pay (company currency)'
  • source_amount_currency Monetary
    compute='_compute_from_lines' copy=False currency_field='source_currency_id' store=True string='Amount to Pay (foreign currency)'
  • source_currency_id Many2one → res.currency
    compute='_compute_from_lines' copy=False store=True string='Source Currency' args: 'res.currency'
  • total_payments_amount Integer
    compute='_compute_trust_values'
  • untrusted_bank_ids Many2many → res.partner.bank
    compute='_compute_trust_values' args: 'res.partner.bank'
  • untrusted_payments_count Integer
    compute='_compute_trust_values'
  • writeoff_account_id Many2one → account.account
    check_company=True comodel_name='account.account' copy=False string='Difference Account'
  • writeoff_is_exchange_account Boolean
    compute='_compute_writeoff_is_exchange_account'
  • writeoff_label Char
    default='Write-Off' help='Change label of the counterpart that will hold the payment difference' string='Journal Item Label'
Public methods (4)
  • action_create_payments(self)
  • action_open_missing_account_partners(self)
  • action_open_untrusted_bank_accounts(self)
  • default_get(self, fields)
    @api.model

New fields (18)
  • active Boolean
    default=True help='If the active field is set to False, it will allow you to hide the payment terms without removing it.'
  • company_id Many2one → res.company
    string='Company' args: 'res.company'
  • currency_id Many2one → res.currency
    compute='_compute_currency_id' args: 'res.currency'
  • discount_days Integer
    default=10 help='Number of days before the early payment proposition expires' string='Discount Days'
  • discount_percentage Float
    default=2.0 help='Early Payment Discount granted for this payment term' string='Discount %'
  • display_on_invoice Boolean
    default=True string='Show installment dates'
  • early_discount Boolean
    string='Early Discount'
  • early_pay_discount_computation Selection
    compute='_compute_discount_computation' readonly=False store=True string='Cash Discount Tax Reduction' args: [('included', 'On early payment'), ('excluded', 'Never'), ('mixed', 'Always (upon invoice)')]
  • example_amount Monetary
    currency_field='currency_id' default=1000 readonly=True store=False
  • example_date Date
    default=_default_example_date store=False string='Date example'
  • example_invalid Boolean
    compute='_compute_example_invalid'
  • example_preview Html
    compute='_compute_example_preview'
  • example_preview_discount Html
    compute='_compute_example_preview'
  • fiscal_country_codes Char
    compute='_compute_fiscal_country_codes'
  • line_ids One2many → account.payment.term.line
    copy=True default=_default_line_ids string='Terms' args: 'account.payment.term.line', 'payment_id'
  • name Char
    required=True string='Payment Terms' translate=True
  • note Html
    string='Description on the Invoice' translate=True
  • sequence Integer
    default=10 required=True
Public methods (1)
  • copy_data(self, default=None)

New fields (7)
  • days_next_month Char
    default='10' readonly=False size=2 string='Days on the next month'
  • delay_type Selection
    default='days_after' required=True args: [('days_after', 'Days after invoice date'), ('days_after_end_of_month', 'Days after end of month'), ('days_after_end_of_next_month', 'Days after end of next month'), ('days_end_of_month_on_the', 'Days end of month on the')]
  • display_days_next_month Boolean
    compute='_compute_display_days_next_month'
  • nb_days Integer
    compute='_compute_days' readonly=False store=True string='Days'
  • payment_id Many2one → account.payment.term
    index=True ondelete='cascade' required=True string='Payment Terms' args: 'account.payment.term'
  • value Selection
    default='percent' help='Select here the kind of valuation related to this payment terms line.' required=True args: [('percent', 'Percent'), ('fixed', 'Fixed')]
  • value_amount Float
    compute='_compute_value_amount' digits='Payment Terms' help='For percent enter a ratio between 0-100.' readonly=False store=True string='Due'
Public methods (0)

No public methods.

New fields (16)
  • active Boolean
    default=True
  • can_be_proposed Boolean
    compute='_compute_can_be_proposed' copy=False store=True
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True string='Company'
  • line_ids One2many → account.reconcile.model.line
    copy=True args: 'account.reconcile.model.line', 'model_id'
  • mapped_partner_id Many2one → res.partner
    comodel_name='res.partner' compute='_compute_partner_mapping' copy=False store=True
  • match_amount Selection
    help='The reconciliation model will only be applied when the amount being lower than, greater than or between specified amount(s).' selection=[('lower', 'Is lower than or equal to'), ('greater', 'Is greater than or equal to'), ('between', 'Is between')] string='Amount' tracking=True
  • match_amount_max Float
    string='Amount Max Parameter' tracking=True
  • match_amount_min Float
    string='Amount Min Parameter' tracking=True
  • match_journal_ids Many2many → account.journal
    check_company=True domain="[('type', 'in', ('bank', 'cash', 'credit'))]" help='The reconciliation model will only be available from the selected journals.' string='Journals' args: 'account.journal'
  • match_label Selection
    help='The reconciliation model will only be applied when either the statement line label, the transaction details or the note matches the following:\n * Contains: The statement line must contains this string (case insensitive).\n * Not Contains: Negation of "Contains".\n * Match Regex: Define your own regular expression.' selection=[('contains', 'Contains'), ('not_contains', 'Not Contains'), ('match_regex', 'Match Regex')] string='Label' tracking=True
  • match_label_param Char
    string='Label Parameter' tracking=True
  • match_partner_ids Many2many → res.partner
    help='The reconciliation model will only be applied to the selected customers/vendors.' string='Partners' args: 'res.partner'
  • name Char
    required=True string='Name' translate=True
  • next_activity_type_id Many2one → mail.activity.type
    comodel_name='mail.activity.type' string='Next Activity'
  • sequence Integer
    default=10 required=True
  • trigger Selection
    default='manual' help='Validate the statement line automatically (reconciliation based on your rule).' required=True tracking=True args: [('manual', 'Manual'), ('auto_reconcile', 'Automated')]
Public methods (4)
  • action_reconcile_stat(self)
  • action_set_auto_reconcile(self)
  • action_set_manual(self)
  • copy_data(self, default=None)

New fields (10)
  • account_id Many2one → account.account
    check_company=True domain="[('account_type', '!=', 'off_balance')]" ondelete='cascade' string='Account' args: 'account.account'
  • amount Float
    compute='_compute_float_amount' store=True string='Float Amount'
  • amount_string Char
    default='100' help='Value for the amount of the writeoff line\n * Percentage: Percentage of the balance, between 0 and 100.\n * Fixed: The fixed value of the writeoff. The amount will count as a debit if it is negative, as a credit if it is positive.\n * From Label: There is no need for regex delimiter, only the regex is needed. For instance if you want to extract the amount from\nR:9672938 10/07 AX 9415126318 T:5L:NA BRT: 3358,07 C:\nYou could enter\nBRT: ([\\d,]+)\n If the label is "01870912 0009065 00115" and you need the amount in decimal\n format (e.g. 90.65), you can use a regex with capturing groups, for example:\n \\s+0*(\\d+?)(\\d{2})(?=\\s)\n In this case:\n • the first group captures the integer part\n • the second group captures the decimal part (last two digits)\n ' required=True string='Amount'
  • amount_type Selection
    default='percentage' required=True selection=[('fixed', 'Fixed'), ('percentage', 'Percentage of balance'), ('percentage_st_line', 'Percentage of statement line'), ('regex', 'From label')]
  • company_id Many2one
    related='model_id.company_id' store=True
  • label Char
    string='Label' translate=True
  • model_id Many2one → account.reconcile.model
    index='btree_not_null' ondelete='cascade' readonly=True args: 'account.reconcile.model'
  • partner_id Many2one → res.partner
    comodel_name='res.partner' string='Partner'
  • sequence Integer
    default=10 required=True
  • tax_ids Many2many → account.tax
    check_company=True comodel_name='account.tax' ondelete='restrict' string='Taxes'
Public methods (0)

No public methods.

New fields (36)
  • active Boolean
    default=True string='Active'
  • allow_foreign_vat Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Allow Foreign VAT'
  • availability_condition Selection
    compute='_compute_default_availability_condition' readonly=False selection=[('country', 'Country Matches'), ('coa', 'Chart of Accounts Matches'), ('always', 'Always')] store=True string='Availability'
  • chart_template Selection
    selection=<expr> string='Chart of Accounts'
  • column_ids One2many → account.report.column
    comodel_name='account.report.column' inverse_name='report_id' string='Columns'
  • country_id Many2one → res.country
    comodel_name='res.country' string='Country'
  • currency_translation Selection
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False selection=[('current', 'Use the most recent rate at the date of the report'), ('cta', 'Use CTA')] store=True string='Currency Translation'
  • default_opening_date_filter Selection
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False selection=[('this_year', 'This Year'), ('this_quarter', 'This Quarter'), ('this_month', 'This Month'), ('today', 'Today'), ('previous_month', 'Last Month'), ('previous_quarter', 'Last Quarter'), ('previous_year', 'Last Year'), ('this_return_period', 'This Return Period'), ('previous_return_period', 'Last Return Period')] store=True string='Default Opening'
  • filter_account_type Selection
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False selection=[('both', 'Payable and receivable'), ('payable', 'Payable'), ('receivable', 'Receivable'), ('disabled', 'Disabled')] store=True string='Account Types'
  • filter_aml_ir_filters Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] help='If activated, user-defined filters on journal items can be selected on this report' precompute=True readonly=False store=True string='Favorite Filters'
  • filter_analytic Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Analytic Filter'
  • filter_budgets Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Budgets'
  • filter_date_range Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Date Range'
  • filter_growth_comparison Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Growth Comparison'
  • filter_hide_0_lines Selection
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False selection=[('by_default', 'Enabled by Default'), ('optional', 'Optional'), ('never', 'Never')] store=True string='Hide lines at 0'
  • filter_hierarchy Selection
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False selection=[('by_default', 'Enabled by Default'), ('optional', 'Optional'), ('never', 'Never')] store=True string='Account Groups'
  • filter_journals Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Journals'
  • filter_multi_company Selection
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False selection=[('selector', 'Use Company Selector'), ('tax_units', 'Use Tax Units')] store=True string='Multi-Company'
  • filter_partner Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Partners'
  • filter_period_comparison Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Period Comparison'
  • filter_show_draft Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Draft Entries'
  • filter_unfold_all Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Unfold All'
  • filter_unreconciled Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Unreconciled Entries'
  • integer_rounding Selection
    selection=[('HALF-UP', 'Nearest'), ('UP', 'Up'), ('DOWN', 'Down')] string='Integer Rounding'
  • line_ids One2many → account.report.line
    comodel_name='account.report.line' inverse_name='report_id' string='Lines'
  • load_more_limit Integer
    string='Load More Limit'
  • name Char
    required=True string='Name' translate=True
  • only_tax_exigible Boolean
    compute=<expr> depends=['root_report_id', 'section_main_report_ids'] precompute=True readonly=False store=True string='Only Tax Exigible Lines'
  • prefix_groups_threshold Integer
    default=4000 string='Prefix Groups Threshold'
  • root_report_id Many2one → account.report
    comodel_name='account.report' help='The report this report is a variant of.' index='btree_not_null' string='Root Report'
  • search_bar Boolean
    string='Search Bar'
  • section_main_report_ids Many2many → account.report
    column1='sub_report_id' column2='main_report_id' comodel_name='account.report' relation='account_report_section_rel' string='Section Of'
  • section_report_ids Many2many → account.report
    column1='main_report_id' column2='sub_report_id' comodel_name='account.report' relation='account_report_section_rel' string='Sections'
  • sequence Integer
    string='Sequence'
  • use_sections Boolean
    compute='_compute_use_sections' help='Create a structured report with multiple sections for convenient navigation and simultaneous printing.' readonly=False store=True string='Composite Report'
  • variant_report_ids One2many → account.report
    comodel_name='account.report' inverse_name='root_report_id' string='Variants'
Public methods (3)
  • copy(self, default=None)
    Copy the whole financial report hierarchy by duplicating each line recursively. :param default: Default values. :return: The copied account.report record.
  • copy_data(self, default=None)
  • write(self, vals)

New fields (8)
  • blank_if_zero Boolean
    help='When checked, 0 values will not show in this column.' string='Blank if Zero'
  • custom_audit_action_id Many2one → ir.actions.act_window
    comodel_name='ir.actions.act_window' string='Custom Audit Action'
  • expression_label Char
    required=True string='Expression Label'
  • figure_type Selection
    default='monetary' required=True selection=FIGURE_TYPE_SELECTION_VALUES string='Figure Type'
  • name Char
    required=True string='Name' translate=True
  • report_id Many2one → account.report
    comodel_name='account.report' index='btree_not_null' string='Report'
  • sequence Integer
    string='Sequence'
  • sortable Boolean
    string='Sortable'
Public methods (0)

No public methods.

New fields (12)
  • auditable Boolean
    compute='_compute_auditable' readonly=False store=True string='Auditable'
  • blank_if_zero Boolean
    help="When checked, 0 values will not show when displaying this expression's value." string='Blank if Zero'
  • carryover_target Char
    help='Formula in the form line_code.expression_label. This allows setting the target of the carryover for this expression (on a _carryover_*-labeled expression), in case it is different from the parent line.' string='Carry Over To'
  • date_scope Selection
    default='strict_range' required=True selection=[('from_beginning', 'From the very start'), ('from_fiscalyear', 'From the start of the fiscal year'), ('to_beginning_of_fiscalyear', 'At the beginning of the fiscal year'), ('to_beginning_of_period', 'At the beginning of the period'), ('strict_range', 'Strictly on the given dates'), ('previous_return_period', 'From previous return period')] string='Date Scope'
  • engine Selection
    required=True selection=[('domain', 'Odoo Domain'), ('tax_tags', 'Tax Tags'), ('aggregation', 'Aggregate Other Formulas'), ('account_codes', 'Prefix of Account Codes'), ('external', 'External Value'), ('custom', 'Custom Python Function')] string='Computation Engine'
  • figure_type Selection
    selection=FIGURE_TYPE_SELECTION_VALUES string='Figure Type'
  • formula Char
    required=True string='Formula'
  • green_on_positive Boolean
    default=True string='Is Growth Good when Positive'
  • label Char
    copy=True required=True string='Label'
  • report_line_id Many2one → account.report.line
    comodel_name='account.report.line' index=True ondelete='cascade' required=True string='Report Line'
  • report_line_name Char
    related='report_line_id.name' string='Report Line Name'
  • subformula Char
    string='Subformula'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (11)
  • carryover_origin_expression_label Char
    string='Origin Expression Label'
  • carryover_origin_report_line_id Many2one → account.report.line
    comodel_name='account.report.line' string='Origin Line'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> required=True string='Company'
  • date Date
    required=True
  • name Char
    required=True
  • report_country_id Many2one
    related='target_report_line_id.report_id.country_id' string='Country'
  • target_report_expression_id Many2one → account.report.expression
    comodel_name='account.report.expression' ondelete='cascade' required=True string='Target Expression'
  • target_report_expression_label Char
    related='target_report_expression_id.label' string='Target Expression Label'
  • target_report_line_id Many2one
    related='target_report_expression_id.report_line_id' string='Target Line'
  • text_value Char
    string='Text Value'
  • value Float
    string='Numeric Value'
Public methods (0)

No public methods.

New fields (20)
  • account_codes_formula Char
    help='Internal field to shorten expression_ids creation for the account_codes engine' inverse='_inverse_account_codes_formula' store=False string='Account Codes Formula Shortcut'
  • action_id Many2one → ir.actions.actions
    comodel_name='ir.actions.actions' help='Setting this field will turn the line into a link, executing the action when clicked.' string='Action'
  • aggregation_formula Char
    help='Internal field to shorten expression_ids creation for the aggregation engine' inverse='_inverse_aggregation_formula' store=False string='Aggregation Formula Shortcut'
  • children_ids One2many → account.report.line
    comodel_name='account.report.line' inverse_name='parent_id' string='Child Lines'
  • code Char
    help='Unique identifier for this line.' string='Code'
  • domain_formula Char
    help='Internal field to shorten expression_ids creation for the domain engine' inverse='_inverse_domain_formula' store=False string='Domain Formula Shortcut'
  • expression_ids One2many → account.report.expression
    comodel_name='account.report.expression' inverse_name='report_line_id' string='Expressions'
  • external_formula Char
    help='Internal field to shorten expression_ids creation for the external engine' inverse='_inverse_external_formula' store=False string='External Formula Shortcut'
  • foldable Boolean
    help="By default, we always unfold the lines that can be. If this is checked, the line won't be unfolded by default, and a folding button will be displayed." string='Foldable'
  • groupby Char
    help='Comma-separated list of fields from account.move.line (Journal Item). When set, this line will generate sublines grouped by those keys.' string='Group By'
  • hide_if_zero Boolean
    help='This line and its children will be hidden when all of their columns are 0.' string='Hide if Zero'
  • hierarchy_level Integer
    compute='_compute_hierarchy_level' precompute=True readonly=False recursive=True required=True store=True string='Level'
  • horizontal_split_side Selection
    compute='_compute_horizontal_split_side' readonly=False recursive=True selection=[('left', 'Left'), ('right', 'Right')] store=True string='Horizontal Split Side'
  • name Char
    required=True string='Name' translate=True
  • parent_id Many2one → account.report.line
    comodel_name='account.report.line' index='btree_not_null' ondelete='set null' string='Parent Line'
  • print_on_new_page Boolean
    help='When checked this line and everything after it will be printed on a new page.' args: 'Print On New Page'
  • report_id Many2one → account.report
    comodel_name='account.report' compute='_compute_report_id' index=True ondelete='cascade' precompute=True readonly=False recursive=True required=True store=True string='Parent Report'
  • sequence Integer
    string='Sequence'
  • tax_tags_formula Char
    help='Internal field to shorten expression_ids creation for the tax_tags engine' inverse='_inverse_aggregation_tax_formula' store=False string='Tax Tags Formula Shortcut'
  • user_groupby Char
    compute='_compute_user_groupby' help='Comma-separated list of fields from account.move.line (Journal Item). When set, this line will generate sublines grouped by those keys.' precompute=True readonly=False store=True string='User Group By'
Public methods (0)

No public methods.

New fields (8)
  • end_date Date
    help='Date (inclusive) to which the numbers are resequenced. If not set, all Journal Entries up to the end of the period are resequenced.'
  • first_date Date
    help='Date (inclusive) from which the numbers are resequenced.'
  • first_name Char
    compute='_compute_first_name' readonly=False required=True store=True string='First New Sequence'
  • move_ids Many2many → account.move
    args: 'account.move'
  • new_values Text
    compute='_compute_new_values'
  • ordering Selection
    default='keep' required=True args: [('keep', 'Keep current order'), ('date', 'Reorder by accounting date')]
  • preview_moves Text
    compute='_compute_preview_moves'
  • sequence_number_reset Char
    compute='_compute_sequence_number_reset'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • resequence(self)

New fields (2)
  • name Char
    compute='_compute_root'
  • parent_id Many2one → account.root
    compute='_compute_root' args: 'account.root'
Public methods (1)
  • browse(self, ids=())
    @api.private

New fields (9)
  • chains_to_hash_with_gaps Json
    compute='_compute_data'
  • company_id Many2one → res.company
    comodel_name='res.company' default=<expr> readonly=True required=True
  • country_code Char
    related='company_id.account_fiscal_country_id.code'
  • hash_date Date
    compute='_compute_hash_date' help='The selected Date' readonly=False required=True store=True string='Hash All Entries'
  • max_hash_date Date
    compute='_compute_max_hash_date' help='Highest Date such that all posted journal entries prior to (including) the date are secured. Only journal entries after the hard lock date are considered.' string='Max Hash Date'
  • move_to_hash_ids Many2many → account.move
    comodel_name='account.move' compute='_compute_data' help='All moves that will be hashed'
  • not_hashable_unlocked_move_ids Many2many → account.move
    comodel_name='account.move' compute='_compute_data' help='All unhashable moves before the selected date that are not protected by the Hard Lock Date'
  • unreconciled_bank_statement_line_ids Many2many → account.bank.statement.line
    comodel_name='account.bank.statement.line' compute='_compute_data' help='All unreconciled bank statement lines before the selected date.'
  • warnings Json
    compute='_compute_warnings'
Public methods (3)
  • action_secure_entries(self)
  • action_show_draft_moves_in_hashed_period(self)
  • action_show_moves(self, moves)

New fields (7)
  • bank_bic Char
    readonly=False related='bank_id.bic' string='Bic'
  • company_id Many2one → res.company
    compute='_compute_company_id' required=True args: 'res.company'
  • linked_journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' compute='_compute_linked_journal_id' inverse='set_linked_journal_id' string='Journal'
  • new_journal_name Char
    default=<expr> help='Will be used to name the Journal related to this bank account' inverse='set_linked_journal_id' required=True
  • num_journals_without_account_bank Integer
    default=<expr>
  • num_journals_without_account_credit Integer
    default=<expr>
  • res_partner_bank_id Many2one → res.partner.bank
    comodel_name='res.partner.bank' ondelete='cascade' required=True
Public methods (4)
  • create(self, vals_list)
    @api.model_create_multi
    This wizard is only used to setup an account for the current active company, so we always inject the corresponding partner when creating the model.
  • default_linked_journal_id(self, journal_type)
  • set_linked_journal_id(self)
    Called when saving the wizard.
  • validate(self)
    Called by the validation button of this wizard. Serves as an extension hook in account_bank_statement_import.

New fields (37)
  • active Boolean
    default=True help='Set active to false to hide the tax without removing it.'
  • amount Float
    default=0.0 digits=(16, 4) required=True tracking=True
  • amount_type Selection
    default='percent' help='\n - Group of Taxes: The tax is a set of sub taxes.\n - Fixed: The tax amount stays the same whatever the price.\n - Percentage: The tax amount is a % of the price:\n e.g 100 * (1 + 10%) = 110 (not price included)\n e.g 110 / (1 + 10%) = 100 (price included)\n - Percentage Tax Included: The tax amount is a division of the price:\n e.g 180 / (1 - 10%) = 200 (not price included)\n e.g 200 * (1 - 10%) = 180 (price included)\n ' required=True selection=[('group', 'Group of Taxes'), ('fixed', 'Fixed'), ('percent', 'Percentage'), ('division', 'Percentage Tax Included')] string='Tax Computation' tracking=True
  • analytic Boolean
    help='If set, the amount computed by this tax will be assigned to the same analytic account as the invoice line (if any)' string='Include in Analytic Cost'
  • cash_basis_transition_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', 'not in', ('asset_receivable', 'liability_payable'))]" help='Account used to transition the tax amount for cash basis taxes. It will contain the tax amount as long as the original invoice has not been reconciled ; at reconciliation, this amount cancelled on this account and put on the regular tax account.' string='Cash Basis Transition Account'
  • children_tax_ids Many2many → account.tax
    check_company=True string='Children Taxes' args: 'account.tax', 'account_tax_filiation_rel', 'parent_tax', 'child_tax'
  • company_country_code Char
    related='company_id.account_fiscal_country_id.code' string='Fiscal Country Code of the Company'
  • company_id Many2one → res.company
    default=<expr> readonly=True required=True string='Company' args: 'res.company'
  • company_price_include Selection
    related='company_id.account_price_include'
  • country_code Char
    readonly=True related='country_id.code'
  • country_id Many2one → res.country
    comodel_name='res.country' compute='_compute_country_id' help='The country for which this tax is applicable.' precompute=True readonly=False required=True store=True string='Country'
  • description Html
    string='Description' translate=html_translate
  • display_alternative_taxes_field Boolean
    compute='_compute_display_alternative_taxes_field'
  • fiscal_position_ids Many2many → account.fiscal.position
    column1='account_tax_id' column2='account_fiscal_position_id' comodel_name='account.fiscal.position' relation='account_fiscal_position_account_tax_rel'
  • has_negative_factor Boolean
    compute='_compute_has_negative_factor'
  • hide_tax_exigibility Boolean
    readonly=True related='company_id.tax_exigibility' string='Hide Use Cash Basis Option'
  • include_base_amount Boolean
    default=False help='If set, taxes with a higher sequence than this one will be affected by it, provided they accept it.' string='Affect Base of Subsequent Taxes' tracking=True
  • invoice_label Char
    string='Label on Invoices' translate=True
  • invoice_legal_notes Html
    help='Legal mentions that have to be printed on the invoices.' string='Legal Notes' translate=True
  • invoice_repartition_line_ids One2many → account.tax.repartition.line
    comodel_name='account.tax.repartition.line' compute='_compute_invoice_repartition_line_ids' domain=[('document_type', '=', 'invoice')] help='Distribution when the tax is used on an invoice' inverse_name='tax_id' readonly=False store=True string='Distribution for Invoices'
  • is_base_affected Boolean
    default=True help='If set, taxes with a lower sequence might affect this one, provided they try to do it.' string='Base Affected by Previous Taxes' tracking=True
  • is_domestic Boolean
    compute='_compute_is_domestic' precompute=True store=True
  • is_used Boolean
    compute='_compute_is_used' string='Tax used'
  • name Char
    required=True string='Tax Name' tracking=True translate=True
  • original_tax_ids Many2many → account.tax
    column1='dest_tax_id' column2='src_tax_id' comodel_name='account.tax' domain="[\n ('type_tax_use', '=', type_tax_use),\n ('is_domestic', '=', True),\n ]" help='List of taxes to replace when applying any of the stipulated fiscal positions.' ondelete='cascade' relation='account_tax_alternatives' string='Replaces'
  • price_include Boolean
    compute='_compute_price_include' help='Determines whether the price you use on the product and invoices includes this tax.' search='_search_price_include'
  • price_include_override Selection
    help="Overrides the Company's default on whether the price you use on the product and invoices includes this tax." selection=[('tax_included', 'Tax Included'), ('tax_excluded', 'Tax Excluded')] string='Included in Price' tracking=True
  • refund_repartition_line_ids One2many → account.tax.repartition.line
    comodel_name='account.tax.repartition.line' compute='_compute_refund_repartition_line_ids' domain=[('document_type', '=', 'refund')] help='Distribution when the tax is used on a refund' inverse_name='tax_id' readonly=False store=True string='Distribution for Refund Invoices'
  • repartition_line_ids One2many → account.tax.repartition.line
    comodel_name='account.tax.repartition.line' copy=True inverse_name='tax_id' string='Distribution'
  • repartition_lines_str Char
    compute='_compute_repartition_lines_str' string='Repartition Lines' tracking=True
  • replacing_tax_ids Many2many → account.tax
    column1='src_tax_id' column2='dest_tax_id' comodel_name='account.tax' readonly=True relation='account_tax_alternatives' string='Replaced by'
  • sequence Integer
    default=1 help='The sequence field is used to define order in which the tax lines are applied.' required=True
  • tax_exigibility Selection
    default='on_invoice' help='Based on Invoice: the tax is due as soon as the invoice is validated.\nBased on Payment: the tax is due as soon as the payment of the invoice is received.' string='Tax Exigibility' args: [('on_invoice', 'Based on Invoice'), ('on_payment', 'Based on Payment')]
  • tax_group_id Many2one → account.tax.group
    comodel_name='account.tax.group' compute='_compute_tax_group_id' domain="[('country_id', 'in', (country_id, False))]" precompute=True readonly=False required=True store=True string='Tax Group'
  • tax_label Char
    compute='_compute_tax_label'
  • tax_scope Selection
    string='Tax Scope' args: [('service', 'Services'), ('consu', 'Goods')]
  • type_tax_use Selection
    default='sale' help="Determines where the tax is selectable. Note: 'None' means a tax can't be used by itself, however it can still be used in a group. 'adjustment' is used to perform tax adjustment." required=True string='Tax Type' tracking=True args: TYPE_TAX_USE
Public methods (12)
  • compute_all(self, price_unit, currency=None, quantity=1.0, product=None, partner=None, is_refund=False, handle_price_include=True, include_caba_tags=False, rounding_method=None)
    Compute all information required to apply taxes (in self + their children in case of a tax group). We consider the sequence of the parent for group of taxes. Eg. considering letters as taxes and alphabetic order as sequence:: [G, B([A, D, F]), E, C] will be computed as [A, D, F, C, E, G] :param price_unit: The unit price of the line to compute taxes on. :param currency: The optional currency in which the price_unit is expressed. :param quantity: The optional quantity of the product to compute taxes on. :param product: The optional product to compute taxes on. Used to get the tags to apply on the lines. :param partner: The optional partner compute taxes on. Used to retrieve the lang to build strings and for potential extensions. :param is_refund: The optional boolean indicating if this is a refund. :param handle_price_include: Used when we need to ignore all tax included in price. If False, it means the amount passed to this method will be considered as the base of all computations. :param include_caba_tags: The optional boolean indicating if CABA tags need to be taken into account. :returns: :: { 'total_excluded': 0.0, # Total without taxes 'total_included': 0.0, # Total with taxes 'total_void' : 0.0, # Total with those taxes, that don't have an account set 'base_tags: : list<int>, # Tags to apply on the base line 'taxes': [{ # One dict for each tax in self and their children 'id': int, 'name': str, 'amount': float, 'base': float, 'sequence': int, 'account_id': int, 'refund_account_id': int, 'analytic': bool, 'price_include': bool, 'tax_exigibility': str, 'tax_repartition_line_id': int, 'group': recordset, 'tag_ids': list<int>, 'tax_ids': list<int>, }], }
  • copy_data(self, default=None)
  • create(self, vals_list)
    @api.model_create_multi
  • flatten_taxes_hierarchy(self)
  • get_tax_tags(self, is_refund, repartition_type)
  • name_search(self, name='', domain=None, operator='ilike', limit=100)
    @api.model@api.readonly
  • onchange_amount(self)
    @api.onchange('amount')
  • onchange_amount_type(self)
    @api.onchange('amount_type')
  • onchange_price_include(self)
    @api.onchange('price_include')
  • unlink_except_tax_used(self)
    @api.ondelete(at_uninstall=False)
  • validate_tax_group_id(self)
    @api.constrains('tax_group_id')
  • write(self, vals)

New fields (10)
  • advance_tax_payment_account_id Many2one → account.account
    check_company=True comodel_name='account.account' help='Downpayments posted on this account will be considered by the Tax Closing Entry.' string='Tax Advance Account'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • country_code Char
    related='country_id.code'
  • country_id Many2one → res.country
    comodel_name='res.country' compute='_compute_country_id' help='The country for which this tax group is applicable.' precompute=True readonly=False store=True string='Country'
  • name Char
    required=True translate=True
  • pos_receipt_label Char
    string='PoS receipt label'
  • preceding_subtotal Char
    help="If set, this value will be used on documents as the label of a subtotal excluding this tax group before displaying it. If not set, the tax group will be displayed after the 'Untaxed amount' subtotal." string='Preceding Subtotal' translate=True
  • sequence Integer
    default=10
  • tax_payable_account_id Many2one → account.account
    check_company=True comodel_name='account.account' help='Tax current account used as a counterpart to the Tax Closing Entry when in favor of the authorities.' string='Tax Payable Account'
  • tax_receivable_account_id Many2one → account.account
    check_company=True comodel_name='account.account' help='Tax current account used as a counterpart to the Tax Closing Entry when in favor of the company.' string='Tax Receivable Account'
Public methods (0)

No public methods.

New fields (11)
  • account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', 'not in', ('asset_receivable', 'liability_payable', 'off_balance'))]" help='Account on which to post the tax amount' string='Account'
  • company_id Many2one → res.company
    comodel_name='res.company' help='The company this distribution line belongs to.' related='tax_id.company_id' store=True string='Company'
  • document_type Selection
    required=True selection=[('invoice', 'Invoice'), ('refund', 'Refund')] string='Related to'
  • factor Float
    compute='_compute_factor' help='Factor to apply on the account move lines generated from this distribution line' string='Factor Ratio'
  • factor_percent Float
    default=100 digits=(16, 12) help='Factor to apply on the account move lines generated from this distribution line, in percents' required=True string='%'
  • repartition_type Selection
    default='tax' help='Base on which the factor will be applied.' required=True selection=[('base', 'Base'), ('tax', 'of tax')] string='Based On'
  • sequence Integer
    default=1 help='The order in which distribution lines are displayed and matched. For refunds to work properly, invoice distribution lines should be arranged in the same order as the credit note distribution lines they correspond to.' string='Sequence'
  • tag_ids Many2many → account.account.tag
    comodel_name='account.account.tag' copy=True domain=[('applicability', '=', 'taxes')] ondelete='restrict' string='Tax Grids'
  • tag_ids_domain Binary
    compute='_compute_tag_ids_domain' help='Dynamic domain used for the tag that can be set on tax' string='tag domain'
  • tax_id Many2one → account.tax
    check_company=True comodel_name='account.tax' index='btree_not_null' ondelete='cascade'
  • use_in_tax_closing Boolean
    compute='_compute_use_in_tax_closing' precompute=True readonly=False store=True string='Tax Closing Entry'
Public methods (0)

No public methods.

New fields (4)
  • account_number Char
    compute='_compute_account_number' inverse='_inverse_account_number'
  • from_invoice Boolean
  • qr_code Boolean
    readonly=False related='company_id.qr_code'
  • vat Char
    readonly=False related='company_id.vat'
Public methods (1)
  • document_layout_save(self)
    Save layout and onboarding step progress, return super() result

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • precision_get(self, application)
    @api.model

New fields (2)
  • kpi_account_total_revenue Boolean
    args: 'Revenue'
  • kpi_account_total_revenue_value Monetary
    compute='_compute_kpi_account_total_revenue_value'
Public methods (0)

No public methods.

New fields (1)
  • is_invoice_report Boolean
    copy=True string='Invoice report'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • unlink(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • lazy_session_info(self)
    @api.model

New fields (1)
  • account_templates Binary
    compute='_compute_account_templates' exportable=False
Public methods (2)
  • module_uninstall(self)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (2)
  • get_account_kpi_summary(self)
    @api.model
  • get_kpi_summary(self)
    @api.model

New fields (7)
  • account_audit_log_account_id Many2one → account.account
    comodel_name='account.account' compute='_compute_account_audit_log_account_id' search='_search_account_audit_log_account_id' string='Account'
  • account_audit_log_company_id Many2one → res.company
    comodel_name='res.company' compute='_compute_account_audit_log_company_id' search='_search_account_audit_log_company_id' string='Company '
  • account_audit_log_move_id Many2one → account.move
    comodel_name='account.move' compute='_compute_account_audit_log_move_id' search='_search_account_audit_log_move_id' string='Journal Entry'
  • account_audit_log_partner_id Many2one → res.partner
    comodel_name='res.partner' compute='_compute_account_audit_log_partner_id' search='_search_account_audit_log_partner_id' string='Partner'
  • account_audit_log_preview Text
    compute='_compute_account_audit_log_preview' search='_search_account_audit_log_preview' string='Description'
  • account_audit_log_restricted Boolean
    compute='_compute_account_audit_log_restricted' search='_search_account_audit_log_restricted' string='Protected by restricted Audit Logs'
  • account_audit_log_tax_id Many2one → account.tax
    comodel_name='account.tax' compute='_compute_account_audit_log_tax_id' search='_search_account_audit_log_tax_id' string='Tax'
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (2)
  • action_close_panel_account_dashboard(self)
    @api.model
  • action_close_panel_account_invoice(self)
    @api.model

New fields (0)

No new fields.

Public methods (8)
  • action_open_step_bank_account(self)
    @api.model
  • action_open_step_base_document_layout(self)
    @api.model
  • action_open_step_chart_of_accounts(self)
    @api.model
    Called by the 'Chart of Accounts' button of the dashboard onboarding panel.
  • action_open_step_company_data(self)
    @api.model
    Set company's basic information.
  • action_open_step_create_invoice(self)
    @api.model
  • action_open_step_fiscal_year(self)
    @api.model
  • action_open_step_sales_tax(self)
    @api.model
  • action_validate_step_base_document_layout(self)
    @api.model
    Set the onboarding(s) step as done only if layout is set.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • property_account_expense_categ_id Many2one → account.account
    company_dependent=True domain=ACCOUNT_DOMAIN help='The expense is accounted for when a vendor bill is validated, except in anglo-saxon accounting with perpetual inventory valuation in which case the expense (Cost of Goods Sold account) is recognized at the customer invoice validation.' ondelete='restrict' string='Expense Account' tracking=True args: 'account.account'
  • property_account_income_categ_id Many2one → account.account
    company_dependent=True domain=ACCOUNT_DOMAIN help='This account will be used when validating a customer invoice.' ondelete='restrict' string='Income Account' tracking=True args: 'account.account'
Public methods (0)

No public methods.

New fields (1)
  • tax_string Char
    compute='_compute_tax_string'
Public methods (0)

No public methods.

New fields (7)
  • account_tag_ids Many2many → account.account.tag
    comodel_name='account.account.tag' domain="[('applicability', '=', 'products')]" help='Tags to be set on the base and tax journal items created for this product.' string='Account Tags'
  • fiscal_country_codes Char
    compute='_compute_fiscal_country_codes'
  • property_account_expense_id Many2one → account.account
    company_dependent=True domain=ACCOUNT_DOMAIN help='Keep this field empty to use the default value from the product category. If anglo-saxon accounting with automated valuation method is configured, the expense account on the product category will be used.' ondelete='restrict' string='Expense Account' args: 'account.account'
  • property_account_income_id Many2one → account.account
    company_dependent=True domain=ACCOUNT_DOMAIN help='Keep this field empty to use the default value from the product category.' ondelete='restrict' string='Income Account' args: 'account.account'
  • supplier_taxes_id Many2many → account.tax
    default=<expr> domain=[('type_tax_use', '=', 'purchase')] help='Default taxes used when buying the product' string='Purchase Taxes' args: 'account.tax', 'product_supplier_taxes_rel', 'prod_id', 'tax_id'
  • tax_string Char
    compute='_compute_tax_string'
  • taxes_id Many2many → account.tax
    default=<expr> domain=[('type_tax_use', '=', 'sale')] help='Default taxes used when selling the product' string='Sales Taxes' args: 'account.tax', 'product_taxes_rel', 'prod_id', 'tax_id'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • get_product_accounts(self, fiscal_pos=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (72)
  • account_cash_basis_base_account_id Many2one → account.account
    check_company=True comodel_name='account.account' help='Account that will be set on lines created in cash basis journal entry and used to keep track of the tax base amount.' string='Base Tax Received Account'
  • account_default_pos_receivable_account_id Many2one → account.account
    check_company=True string='Default PoS Receivable Account' args: 'account.account'
  • account_discount_expense_allocation_id Many2one → account.account
    comodel_name='account.account' string='Separate account for expense discount'
  • account_discount_income_allocation_id Many2one → account.account
    comodel_name='account.account' string='Separate account for income discount'
  • account_enabled_tax_country_ids Many2many → res.country
    comodel_name='res.country' compute='_compute_account_enabled_tax_country_ids' help='Technical field containing the countries for which this company is using tax-related features(hence the ones for which l10n modules need to show tax-related fields).' string='l10n-used countries'
  • account_fiscal_country_group_codes Json
    compute='_compute_account_fiscal_country_group_codes'
  • account_fiscal_country_id Many2one → res.country
    comodel_name='res.country' compute='compute_account_tax_fiscal_country' help='The country to use the tax reports from for this company' readonly=False store=True string='Fiscal Country'
  • account_journal_early_pay_discount_gain_account_id Many2one → account.account
    check_company=True comodel_name='account.account' string='Cash Discount Write-Off Gain Account'
  • account_journal_early_pay_discount_loss_account_id Many2one → account.account
    check_company=True comodel_name='account.account' string='Cash Discount Write-Off Loss Account'
  • account_journal_suspense_account_id Many2one → account.account
    check_company=True string='Journal Suspense Account' args: 'account.account'
  • account_opening_date Date
    help='That is the date of the opening entry.' string='Opening Entry'
  • account_opening_journal_id Many2one → account.journal
    comodel_name='account.journal' help="Journal where the opening entry of this company's accounting has been posted." readonly=False related='account_opening_move_id.journal_id' string='Opening Journal'
  • account_opening_move_id Many2one → account.move
    comodel_name='account.move' help="The journal entry containing the initial balance of all this company's accounts." string='Opening Journal Entry'
  • account_price_include Selection
    default='tax_excluded' help='Default on whether the sales price used on the product and invoices with this Company includes its taxes.' required=True selection=[('tax_included', 'Tax Included'), ('tax_excluded', 'Tax Excluded')] string='Default Sales Price Include'
  • account_purchase_receipt_fiscal_position_id Many2one → account.fiscal.position
    check_company=True string='Default Purchase Receipt Fiscal Position' args: 'account.fiscal.position'
  • account_purchase_tax_id Many2one → account.tax
    check_company=True string='Default Purchase Tax' args: 'account.tax'
  • account_sale_tax_id Many2one → account.tax
    check_company=True string='Default Sale Tax' args: 'account.tax'
  • account_storno Boolean
    compute='_compute_account_storno' readonly=False store=True string='Storno accounting'
  • account_use_credit_limit Boolean
    help='Enable the use of credit limit on partners.' string='Sales Credit Limit'
  • anglo_saxon_accounting Boolean
    string='Use anglo-saxon accounting'
  • automatic_entry_default_journal_id Many2one → account.journal
    check_company=True domain="[('type', '=', 'general')]" help='Journal used by default for moving the period of an entry' args: 'account.journal'
  • autopost_bills Boolean
    default=True string='Auto-validate bills'
  • bank_account_code_prefix Char
    string='Prefix of the bank accounts'
  • bank_journal_ids One2many → account.journal
    domain=[('type', '=', 'bank')] string='Bank Journals' args: 'account.journal', 'company_id'
  • batch_payment_sequence_id Many2one → ir.sequence
    comodel_name='ir.sequence' copy=False readonly=True
  • cash_account_code_prefix Char
    string='Prefix of the cash accounts'
  • chart_template Selection
    selection='_chart_template_selection'
  • company_registry_placeholder Char
    compute='_compute_company_registry_placeholder'
  • company_vat_placeholder Char
    compute='_compute_company_vat_placeholder'
  • currency_exchange_journal_id Many2one → account.journal
    domain=[('type', '=', 'general')] string='Exchange Gain or Loss Journal' args: 'account.journal'
  • default_cash_difference_expense_account_id Many2one → account.account
    check_company=True string='Cash Difference Expense' args: 'account.account'
  • default_cash_difference_income_account_id Many2one → account.account
    check_company=True string='Cash Difference Income' args: 'account.account'
  • display_account_storno Boolean
    compute='_compute_display_account_storno'
  • display_invoice_amount_total_words Boolean
    string='Total amount of invoice in letters'
  • display_invoice_tax_company_currency Boolean
    default=True string='Taxes in company currency'
  • domestic_fiscal_position_id Many2one → account.fiscal.position
    comodel_name='account.fiscal.position' compute='_compute_domestic_fiscal_position_id' store=True
  • expects_chart_of_accounts Boolean
    default=True string='Expects a Chart of Accounts'
  • expense_account_id Many2one → account.account
    comodel_name='account.account' domain=ACCOUNT_DOMAIN help='The expense is accounted for when a vendor bill is validated, except in anglo-saxon accounting with perpetual inventory valuation in which case the expense (Cost of Goods Sold account) is recognized at the customer invoice validation.' string='Expense Account'
  • expense_accrual_account_id Many2one → account.account
    check_company=True domain="[('internal_group', '=', 'liability'), ('account_type', 'not in', ('asset_receivable', 'liability_payable'))]" help='Account used to move the period of an expense' args: 'account.account'
  • expense_currency_exchange_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', 'in', ('expense', 'expense_other'))]" string='Loss Exchange Rate Account'
  • fiscal_position_ids One2many → account.fiscal.position
    comodel_name='account.fiscal.position' inverse_name='company_id'
  • fiscalyear_last_day Integer
    default=31 required=True
  • fiscalyear_last_month Selection
    default='12' required=True args: MONTH_SELECTION
  • fiscalyear_lock_date Date
    help="Any entry up to and including that date will be postponed to a later time, in accordance with its journal's sequence." string='Global Lock Date' tracking=True
  • force_restrictive_audit_trail Boolean
    compute='_compute_force_restrictive_audit_trail' string='Force Audit Trail'
  • hard_lock_date Date
    help='Any entry up to and including that date will be postponed to a later time, in accordance with its journal sequence. This lock date is irreversible and does not allow any exception.' string='Hard Lock Date' tracking=True
  • income_account_id Many2one → account.account
    comodel_name='account.account' domain=ACCOUNT_DOMAIN help='This account will be used when validating a customer invoice.' string='Income Account'
  • income_currency_exchange_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('internal_group', '=', 'income')]" string='Gain Exchange Rate Account'
  • incoterm_id Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' string='Default incoterm' args: 'account.incoterms'
  • invoice_terms Html
    string='Default Terms and Conditions' translate=True
  • invoice_terms_html Html
    compute='_compute_invoice_terms_html' readonly=False sanitize_attributes=False store=True string='Default Terms and Conditions as a Web page' translate=True
  • link_qr_code Boolean
    string='Display Link QR-code'
  • multi_vat_foreign_country_ids Many2many → res.country
    comodel_name='res.country' compute='_compute_multi_vat_foreign_country' help='Countries for which the company has a VAT number' string='Foreign VAT countries'
  • price_difference_account_id Many2one → account.account
    comodel_name='account.account' domain=ACCOUNT_DOMAIN help='During perpetual valuation, this account will hold the price difference between the standard price and the bill price.' string='Price Difference Account'
  • purchase_lock_date Date
    help="Any purchase entry prior to and including this date will be postponed to a later date, in accordance with its journal's sequence." string='Purchase Lock date' tracking=True
  • qr_code Boolean
    string='Display QR-code on invoices'
  • quick_edit_mode Selection
    selection=[('out_invoices', 'Customer Invoices'), ('in_invoices', 'Vendor Bills'), ('out_and_in_invoices', 'Customer Invoices and Vendor Bills')] string='Quick encoding'
  • restrictive_audit_trail Boolean
    help='Enable this option to prevent deletion of journal item related logs' string='Restrictive Audit Trail' tracking=True
  • revenue_accrual_account_id Many2one → account.account
    check_company=True domain="[('internal_group', '=', 'asset'), ('account_type', 'not in', ('asset_receivable', 'liability_payable'))]" help='Account used to move the period of a revenue' args: 'account.account'
  • sale_lock_date Date
    help="Any sales entry prior to and including this date will be postponed to a later date, in accordance with its journal's sequence." string='Sales Lock Date' tracking=True
  • tax_calculation_rounding_method Selection
    default='round_globally' string='Tax Calculation Rounding Method' args: [('round_globally', 'Round per Tax'), ('round_per_line', 'Round per Line')]
  • tax_cash_basis_journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' string='Cash Basis Journal'
  • tax_exigibility Boolean
    string='Use Cash Basis'
  • tax_lock_date Date
    help="Any entry with taxes up to and including that date will be postponed to a later time, in accordance with its journal's sequence. The tax lock date is automatically set when the tax closing entry is posted." string='Tax Return Lock Date' tracking=True
  • terms_type Selection
    default='plain' string='Terms & Conditions format' args: [('plain', 'Add a Note'), ('html', 'Add a link to a Web Page')]
  • transfer_account_code_prefix Char
    string='Prefix of the transfer accounts'
  • transfer_account_id Many2one → account.account
    check_company=True domain="[('reconcile', '=', True), ('account_type', '=', 'asset_current')]" help='Intermediary account used when moving money from a liquidity account to another' string='Inter-Banks Transfer Account' args: 'account.account'
  • user_fiscalyear_lock_date Date
    compute='_compute_user_fiscalyear_lock_date'
  • user_hard_lock_date Date
    compute='_compute_user_hard_lock_date'
  • user_purchase_lock_date Date
    compute='_compute_user_purchase_lock_date'
  • user_sale_lock_date Date
    compute='_compute_user_sale_lock_date'
  • user_tax_lock_date Date
    compute='_compute_user_tax_lock_date'
Public methods (15)
  • action_save_onboarding_company_data(self)
  • action_save_onboarding_sale_tax(self)
    Set the onboarding step as done
  • compute_account_tax_fiscal_country(self)
    @api.depends('country_id')
  • compute_fiscalyear_dates(self, current_date)
    Returns the dates of the fiscal year containing the provided date for this company. :return: ``{'date_from': ..., 'date_to': ...}``
  • create(self, vals_list)
    @api.model_create_multi
  • get_chart_of_accounts_or_fail(self)
  • get_new_account_code(self, current_code, old_prefix, new_prefix)
  • get_next_batch_payment_communication(self)
    When in need of a batch payment communication reference (several invoices paid at the same time) use batch_payment_sequence_id to get it (eventually create it first): e.g BATCH/2024/00001
  • get_unaffected_earnings_account(self)
    Returns the unaffected earnings account for this company, creating one if none has yet been defined.
  • install_l10n_modules(self)
  • opening_move_posted(self)
    Returns true if this company has an opening account move and this move is posted.
  • reflect_code_prefix_change(self, old_code, new_code)
  • setting_init_bank_account_action(self)
    @api.model
    Called by the 'Bank Accounts' button of the setup bar or from the Financial configuration menu.
  • setting_init_credit_card_account_action(self)
    @api.model
    Called by the Financial configuration menu 'Add a credit card account'
  • write(self, vals)

New fields (63)
  • account_cash_basis_base_account_id Many2one → account.account
    check_company=True comodel_name='account.account' readonly=False related='company_id.account_cash_basis_base_account_id' string='Base Tax Received Account'
  • account_default_credit_limit Monetary
    compute='_compute_account_default_credit_limit' help='This is the default credit limit that will be used on partners that do not have a specific limit on them.' inverse='_inverse_account_default_credit_limit' readonly=False string='Default Credit Limit'
  • account_discount_expense_allocation_id Many2one → account.account
    comodel_name='account.account' domain="[('account_type', 'in', ('income', 'income_other', 'expense', 'expense_other'))]" readonly=False related='company_id.account_discount_expense_allocation_id' string='Customer Invoices Discounts Account'
  • account_discount_income_allocation_id Many2one → account.account
    comodel_name='account.account' domain="[('account_type', 'in', ('income', 'income_other', 'expense', 'expense_other'))]" readonly=False related='company_id.account_discount_income_allocation_id' string='Vendor Bills Discounts Account'
  • account_fiscal_country_id Many2one
    readonly=False related='company_id.account_fiscal_country_id' store=False string='Fiscal Country Code'
  • account_journal_early_pay_discount_gain_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', 'in', ('income', 'income_other', 'expense', 'expense_other'))]" help='Account for the difference amount after the income discount has been granted' readonly=False related='company_id.account_journal_early_pay_discount_gain_account_id' string='Early Discount Gain'
  • account_journal_early_pay_discount_loss_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', 'in', ('expense', 'expense_other', 'income', 'income_other'))]" help='Account for the difference amount after the expense discount has been granted' readonly=False related='company_id.account_journal_early_pay_discount_loss_account_id' string='Early Discount Loss'
  • account_journal_suspense_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', 'in', ('asset_current', 'liability_current'))]" help='Bank Transactions are posted immediately after import or synchronization. Their counterparty is the bank suspense account.\nReconciliation replaces the latter by the definitive account(s).' readonly=False related='company_id.account_journal_suspense_account_id' string='Bank Suspense'
  • account_price_include Selection
    help='Default on whether the sales price used on the product and invoices with this Company includes its taxes.' readonly=False related='company_id.account_price_include' required=True string='Default Sales Price Include'
  • account_storno Boolean
    readonly=False related='company_id.account_storno' string='Storno accounting'
  • account_use_credit_limit Boolean
    help='Enable the use of credit limit on partners.' readonly=False related='company_id.account_use_credit_limit' string='Sales Credit Limit'
  • autopost_bills Boolean
    readonly=False related='company_id.autopost_bills'
  • chart_template Selection
    default=<expr> selection=<expr>
  • country_code Char
    readonly=True related='company_id.account_fiscal_country_id.code'
  • currency_exchange_journal_id Many2one → account.journal
    check_company=True comodel_name='account.journal' domain="[('type', '=', 'general')]" help='The accounting journal where automatic exchange differences will be registered' readonly=False related='company_id.currency_exchange_journal_id' string='Currency Exchange Journal'
  • currency_id Many2one → res.currency
    help='Main currency of the company.' readonly=False related='company_id.currency_id' required=True string='Currency' args: 'res.currency'
  • display_account_storno Boolean
    related='company_id.display_account_storno'
  • display_invoice_amount_total_words Boolean
    readonly=False related='company_id.display_invoice_amount_total_words' string='Total amount of invoice in letters'
  • display_invoice_tax_company_currency Boolean
    readonly=False related='company_id.display_invoice_tax_company_currency' string='Taxes in company currency'
  • expense_account_id Many2one
    check_company=True readonly=False related='company_id.expense_account_id'
  • expense_currency_exchange_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('account_type', 'in', ('expense', 'expense_other'))]" readonly=False related='company_id.expense_currency_exchange_account_id' string='Loss Exchange Rate Account'
  • force_restrictive_audit_trail Boolean
    readonly=False related='company_id.force_restrictive_audit_trail' string='Forced Audit Trail'
  • group_cash_rounding Boolean
    implied_group='account.group_cash_rounding' string='Cash Rounding'
  • group_sale_delivery_address Boolean
    implied_group='account.group_delivery_invoice_address' args: 'Customer Addresses'
  • has_accounting_entries Boolean
    compute='_compute_has_chart_of_accounts'
  • has_chart_of_accounts Boolean
    compute='_compute_has_chart_of_accounts' string='Company has a chart of accounts'
  • income_account_id Many2one
    check_company=True readonly=False related='company_id.income_account_id'
  • income_currency_exchange_account_id Many2one → account.account
    check_company=True comodel_name='account.account' domain="[('internal_group', '=', 'income')]" readonly=False related='company_id.income_currency_exchange_account_id' string='Gain Exchange Rate Account'
  • incoterm_id Many2one → account.incoterms
    help='International Commercial Terms are a series of predefined commercial terms used in international transactions.' readonly=False related='company_id.incoterm_id' string='Default incoterm' args: 'account.incoterms'
  • invoice_terms Html
    readonly=False related='company_id.invoice_terms' string='Terms & Conditions'
  • invoice_terms_html Html
    readonly=False related='company_id.invoice_terms_html' string='Terms & Conditions as a Web page'
  • is_account_peppol_eligible Boolean
    compute='_compute_is_account_peppol_eligible' string='PEPPOL eligible'
  • link_qr_code Boolean
    readonly=False related='company_id.link_qr_code' string='Display Link QR-code'
  • module_account_accountant Boolean
    string='Accounting'
  • module_account_bank_statement_extract Boolean
    compute='_compute_module_account_bank_statement_extract' readonly=False store=True args: 'Bank Statement Digitization'
  • module_account_bank_statement_import_qif Boolean
    args: 'Import .qif files'
  • module_account_batch_payment Boolean
    help='This allows you grouping payments into a single batch and eases the reconciliation process.\n-This installs the account_batch_payment module.' string='Use batch payments'
  • module_account_budget Boolean
    string='Budget Management'
  • module_account_check_printing Boolean
    args: 'Allow check printing and deposits'
  • module_account_extract Boolean
    string='Document Digitization'
  • module_account_intrastat Boolean
    string='Intrastat'
  • module_account_invoice_extract Boolean
    compute='_compute_module_account_invoice_extract' readonly=False store=True args: 'Invoice Digitization'
  • module_account_iso20022 Boolean
    string='SEPA Credit Transfer / ISO20022'
  • module_account_payment Boolean
    string='Invoice Online Payment'
  • module_account_peppol Boolean
    string='PEPPOL Invoicing'
  • module_account_reports Boolean
    args: 'Dynamic Reports'
  • module_account_sepa_direct_debit Boolean
    string='Use SEPA Direct Debit'
  • module_currency_rate_live Boolean
    string='Automatic Currency Rates'
  • module_product_margin Boolean
    string='Allow Product Margin'
  • module_snailmail_account Boolean
    string='Snailmail'
  • preview_ready Boolean
    compute='_compute_terms_preview' string='Display preview button'
  • purchase_tax_id Many2one → account.tax
    check_company=True readonly=False related='company_id.account_purchase_tax_id' string='Default Purchase Tax' args: 'account.tax'
  • qr_code Boolean
    readonly=False related='company_id.qr_code' string='Display SEPA QR-code'
  • quick_edit_mode Selection
    readonly=False related='company_id.quick_edit_mode' string='Quick encoding'
  • restrictive_audit_trail Boolean
    readonly=False related='company_id.restrictive_audit_trail' string='Restricted Audit Trail'
  • sale_tax_id Many2one → account.tax
    check_company=True readonly=False related='company_id.account_sale_tax_id' string='Default Sale Tax' args: 'account.tax'
  • show_sale_receipts Boolean
    config_parameter='account.show_sale_receipts' string='Sale Receipt'
  • tax_calculation_rounding_method Selection
    readonly=False related='company_id.tax_calculation_rounding_method' string='Tax calculation rounding method'
  • tax_cash_basis_journal_id Many2one → account.journal
    check_company=True readonly=False related='company_id.tax_cash_basis_journal_id' string='Tax Cash Basis Journal' args: 'account.journal'
  • tax_exigibility Boolean
    readonly=False related='company_id.tax_exigibility' string='Cash Basis'
  • terms_type Selection
    readonly=False related='company_id.terms_type'
  • transfer_account_id Many2one → account.account
    check_company=True domain=[('reconcile', '=', True), ('account_type', '=', 'asset_current')] help='Intermediary account used when moving from a liquidity account to another.' readonly=False related='company_id.transfer_account_id' string='Internal Transfer' args: 'account.account'
  • use_invoice_terms Boolean
    config_parameter='account.use_invoice_terms' string='Default Terms & Conditions'
Public methods (6)
  • action_eu_oss_tax_mapping(self)
  • action_update_terms(self)
  • onchange_analytic_accounting(self)
    @api.onchange('group_analytic_accounting')
  • onchange_module_account_budget(self)
    @api.onchange('module_account_budget')
  • reload_template(self)
  • set_values(self)

New fields (1)
  • exclude_state_ids Many2many → res.country.state
    comodel_name='res.country.state' help='Those states are ignored by the fiscal positions' string='Fiscal Exceptions'
Public methods (0)

No public methods.

New fields (2)
  • display_rounding_warning Boolean
    compute='_compute_display_rounding_warning' help="The warning informs a rounding factor change might be dangerous on res.currency's form view." string='Display Rounding Warning'
  • fiscal_country_codes Char
    default=_get_fiscal_country_codes store=False
Public methods (1)
  • write(self, vals)

New fields (0)

No new fields.

Public methods (1)
  • get_application_groups(self, domain)
    @api.model

New fields (41)
  • account_move_count Integer
    compute='_compute_account_move_count' groups='account.group_account_invoice,account.group_account_readonly'
  • autopost_bills Selection
    default='ask' help='Automatically post bills for this trusted partner' required=True selection=[('always', 'Always'), ('ask', 'Ask after 3 validations without edits'), ('never', 'Never')] string='Auto-post bills'
  • available_invoice_template_pdf_report_ids One2many → ir.actions.report
    comodel_name='ir.actions.report' compute='_compute_available_invoice_template_pdf_report_ids'
  • bank_account_count Integer
    compute='_compute_bank_count' string='Bank'
  • contract_ids One2many → account.analytic.account
    readonly=True string='Partner Contracts' args: 'account.analytic.account', 'partner_id'
  • credit Monetary
    compute='_credit_debit_get' groups='account.group_account_invoice,account.group_account_readonly' help='Total amount this customer owes you.' search=_credit_search string='Total Receivable'
  • credit_limit Float
    company_dependent=True copy=False groups='account.group_account_invoice,account.group_account_readonly' help='Credit limit specific to this partner.' readonly=False string='Credit Limit'
  • credit_to_invoice Monetary
    compute='_compute_credit_to_invoice' groups='account.group_account_invoice,account.group_account_readonly'
  • currency_id Many2one → res.currency
    compute='_get_company_currency' readonly=True string='Currency' args: 'res.currency'
  • customer_rank Integer
    copy=False default=0
  • days_sales_outstanding Float
    compute='_compute_days_sales_outstanding' help='[(Total Receivable/Total Revenue) * number of days since the first invoice] for this customer' string='Days Sales Outstanding (DSO)'
  • debit Monetary
    compute='_credit_debit_get' groups='account.group_account_invoice,account.group_account_readonly' help='Total amount you have to pay to this vendor.' search=_debit_search string='Total Payable'
  • display_invoice_edi_format Boolean
    default=<expr> store=False
  • display_invoice_template_pdf_report_id Boolean
    default=_default_display_invoice_template_pdf_report_id store=False
  • duplicate_bank_partner_ids Many2many
    related='bank_ids.duplicate_bank_partner_ids'
  • fiscal_country_codes Char
    compute='_compute_fiscal_country_codes'
  • fiscal_country_group_codes Json
    compute='_compute_fiscal_country_group_codes'
  • ignore_abnormal_invoice_amount Boolean
    company_dependent=True
  • ignore_abnormal_invoice_date Boolean
    company_dependent=True
  • invoice_edi_format Selection
    compute='_compute_invoice_edi_format' compute_sudo=True inverse='_inverse_invoice_edi_format' selection=[] string='eInvoice format'
  • invoice_edi_format_store Char
    company_dependent=True
  • invoice_ids One2many → account.move
    copy=False readonly=True string='Invoices' args: 'account.move', 'partner_id'
  • invoice_sending_method Selection
    company_dependent=True selection=[('manual', 'Manual'), ('email', 'by Email')] string='Invoice sending'
  • invoice_template_pdf_report_id Many2one → ir.actions.report
    comodel_name='ir.actions.report' domain="[('id', 'in', available_invoice_template_pdf_report_ids)]" readonly=False store=True string='Invoice report'
  • name Char
    tracking=True
  • partner_company_registry_placeholder Char
    compute='_compute_partner_company_registry_placeholder'
  • partner_vat_placeholder Char
    compute='_compute_partner_vat_placeholder'
  • property_account_payable_id Many2one → account.account
    check_company=True company_dependent=True domain="[('account_type', '=', 'liability_payable')]" ondelete='restrict' string='Account Payable' args: 'account.account'
  • property_account_position_id Many2one → account.fiscal.position
    check_company=True company_dependent=True help='The fiscal position determines the taxes/accounts used for this contact.' string='Fiscal Position' args: 'account.fiscal.position'
  • property_account_receivable_id Many2one → account.account
    check_company=True company_dependent=True domain="[('account_type', '=', 'asset_receivable')]" ondelete='restrict' string='Account Receivable' args: 'account.account'
  • property_inbound_payment_method_line_id Many2one → account.payment.method.line
    check_company=True comodel_name='account.payment.method.line' company_dependent=True domain=<expr>
  • property_outbound_payment_method_line_id Many2one → account.payment.method.line
    check_company=True comodel_name='account.payment.method.line' company_dependent=True domain=<expr>
  • property_payment_term_id Many2one → account.payment.term
    check_company=True company_dependent=True ondelete='restrict' string='Customer Payment Terms' args: 'account.payment.term'
  • property_supplier_payment_term_id Many2one → account.payment.term
    check_company=True company_dependent=True string='Vendor Payment Terms' args: 'account.payment.term'
  • ref_company_ids One2many → res.company
    string='Companies that refers to partner' args: 'res.company', 'partner_id'
  • show_credit_limit Boolean
    compute='_compute_show_credit_limit' groups='account.group_account_invoice,account.group_account_readonly'
  • supplier_invoice_count Integer
    compute='_compute_supplier_invoice_count' string='# Vendor Bills'
  • supplier_rank Integer
    copy=False default=0
  • total_invoiced Monetary
    compute='_invoice_total' groups='account.group_account_invoice,account.group_account_readonly' string='Total Invoiced'
  • trust Selection
    company_dependent=True string='Degree of trust you have in this debtor' args: [('good', 'Good Debtor'), ('normal', 'Normal Debtor'), ('bad', 'Bad Debtor')]
  • use_partner_credit_limit Boolean
    compute='_compute_use_partner_credit_limit' groups='account.group_account_invoice,account.group_account_readonly' help='Set a value greater than 0.0 to activate a credit limit check' inverse='_inverse_use_partner_credit_limit' string='Partner Limit'
Public methods (6)
  • action_open_business_doc(self)
  • action_view_partner_invoices(self)
  • can_edit_vat(self)
    Can't edit `vat` if there is (non draft) issued invoices.
  • create(self, vals_list)
    @api.model_create_multi
  • get_partner_localisation_fields_required_to_invoice(self, country_id)
    @api.model
    Returns the list of fields that needs to be filled when creating an invoice for the selected country. This is required for some flows that would allow a user to request an invoice from the portal. Using these, we can get their information and dynamically create form inputs based for the fields required legally for the company country_id. The returned fields must be of type ir.model.fields in order to handle translations :param country_id: The country for which we want the fields. :return: an array of ir.model.fields for which the user should provide values.
  • write(self, vals)

New fields (19)
  • acc_holder_name Char
    tracking=True
  • acc_number Char
    tracking=True
  • active Boolean
    tracking=True
  • allow_out_payment Boolean
    help='Sending fake invoices with a fraudulent account number is a common phishing practice. To protect yourself, always verify new bank account numbers, preferably by calling the vendor, as phishing usually happens when their emails are compromised. Once verified, you can activate the ability to send money.' tracking=True
  • bank_id Many2one
    tracking=True
  • clearing_number Char
    tracking=True
  • currency_id Many2one
    tracking=True
  • duplicate_bank_partner_ids Many2many → res.partner
    compute='_compute_duplicate_bank_partner_ids' args: 'res.partner'
  • has_iban_warning Boolean
    compute='_compute_display_account_warning' help='Technical field used to display a warning if the IBAN country is different than the holder country.' store=True
  • has_money_transfer_warning Boolean
    compute='_compute_display_account_warning' help='Technical field used to display a warning if the account is a transfer service account.' store=True
  • journal_id One2many → account.journal
    check_company=True domain=[('type', '=', 'bank')] help='The accounting journal corresponding to this bank account.' readonly=True string='Account Journal' args: 'account.journal', 'bank_account_id'
  • lock_trust_fields Boolean
    compute='_compute_lock_trust_fields'
  • money_transfer_service Char
    compute='_compute_money_transfer_service_name'
  • partner_country_name Char
    related='partner_id.country_id.name'
  • partner_customer_rank Integer
    related='partner_id.customer_rank'
  • partner_id Many2one
    tracking=True
  • partner_supplier_rank Integer
    related='partner_id.supplier_rank'
  • related_moves One2many → account.move
    inverse_name='partner_bank_id' args: 'account.move'
  • user_has_group_validate_bank_account Boolean
    compute='_compute_user_has_group_validate_bank_account'
Public methods (8)
  • action_open_business_doc(self)
  • build_qr_code_base64(self, amount, free_communication, structured_communication, currency, debtor_partner, qr_method=None, silent_errors=True)
  • build_qr_code_url(self, amount, free_communication, structured_communication, currency, debtor_partner, qr_method=None, silent_errors=True)
  • create(self, vals_list)
    @api.model_create_multi
  • default_get(self, fields)
    @api.model
  • get_available_qr_methods_in_sequence(self)
    @api.model
    Same as _get_available_qr_methods but without returning the sequence, and using it directly to order the returned list.
  • unlink(self)
  • write(self, vals)

New fields (2)
  • sequence_number Integer
    compute='_compute_split_sequence' store=True
  • sequence_prefix Char
    compute='_compute_split_sequence' store=True
Public methods (2)
  • init(self)
  • write(self, vals)

New fields (1)
  • fiscal_country_codes Char
    compute='_compute_fiscal_country_codes'
Public methods (0)

No public methods.

New fields (10)
  • abnormal_amount_partner_ids One2many → res.partner
    compute='_compute_abnormal_amount_partner_ids' args: 'res.partner'
  • abnormal_date_partner_ids One2many → res.partner
    compute='_compute_abnormal_date_partner_ids' args: 'res.partner'
  • display_force_hash Boolean
    compute='_compute_display_force_hash'
  • display_force_post Boolean
    compute='_compute_display_force_post'
  • force_hash Boolean
    string='Force Hash'
  • force_post Boolean
    help='Entries in the future are set to be auto-posted by default. Check this checkbox to post them now.' string='Force'
  • ignore_abnormal_amount Boolean
  • ignore_abnormal_date Boolean
  • is_entries Boolean
    compute='_compute_is_entries'
  • move_ids Many2many → account.move
    args: 'account.move'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • validate_move(self)

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…

Loading…