Donation

donation
REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/18.0/donation
VERSION
VERSION 1.3.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSAlexis de Lattre, Weblate, OCA-git-bot, oca-ci, TB-Ph35, David Brühlmeier
WEBSITE
WEBSITEhttps://github.com/OCA/donation
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/donation:
    - donation_base
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module handles donations by cash, check or by credit transfer and
generate the corresponding journal entries and tax receipts. To fully
support donations by credit transfer, if you are using the OCA bank
statement reconcile interface, you also need the module
**donation_bank_statement_oca**.

This module will assist you in writing a thanks letter.

This module also supports in-kind donations (in-kind donations don't
generate any accounting entry but can generate a tax receipt).

Code Analysis

Views touched (27)
XML IDNameModelTypeStatus
account_payment_method_line_tree donation.account.payment.method.line.list account.payment.method.line field Inherits account.view_account_payment_method_line_tree
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_search donation.campaign.search donation.campaign search New
donation_campaign_tree donation.campaign.list donation.campaign list New
donation_form donation.form donation.donation form New
donation_from_bank_statement_line_form Creation Donation from Bank Statement Line form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.list donation.line list New
donation_pivot donation.pivot donation.donation pivot New
donation_report_graph donation.report.graph donation.report graph New
donation_report_pivot donation.report.pivot donation.report pivot New
donation_report_search donation.report.search donation.report search New
donation_report_tree donation.report.list donation.report list New
donation_search donation.search donation.donation search New
donation_tax_receipt_form donation.donation.tax.receipt.form donation.tax.receipt group Inherits donation_base.donation_tax_receipt_form
donation_tax_receipt_option_switch_form donation_tax_receipt_option_switch.form donation.tax.receipt.option.switch form New
donation_thanks_template_form donation.thanks.template form New
donation_thanks_template_search donation.thanks.template search New
donation_thanks_template_tree donation.thanks.template list New
donation_tree donation.list donation.donation list New
donation_validate_form donation_validate.form donation.validate form New
report_donation_thanks report_donation_thanks ir.ui.view qweb New
res_config_settings_donation donation.res.config.settings.form res.config.settings xpath Inherits base.res_config_settings_view_form
view_partner_property_form donation.button.res.partner.form res.partner button Inherits donation_base.view_partner_property_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users field Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (15)

New fields (1)
  • business_domain Selection
    ondelete={'donation': 'cascade'} selection_add=[('donation', 'Donation')]
Public methods (0)

No public methods.

New fields (1)
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'bank_statement_line_id'
Public methods (0)

No public methods.

New fields (1)
  • donation Boolean
    help='If enabled, this payment method will be available on donations'
Public methods (0)

No public methods.

New fields (7)
  • active Boolean
    default=True
  • code Char
  • company_id Many2one → res.company
    ondelete='cascade' args: 'res.company'
  • name Char
    required=True
  • note Text
    args: 'Notes'
  • sequence Integer
    default=10
  • start_date Date
    default=fields.Date.context_today
Public methods (0)

No public methods.

New fields (23)
  • amount_total Monetary
    compute='_compute_total' currency_field='currency_id' store=True tracking=True
  • amount_total_company_currency Monetary
    compute='_compute_total' currency_field='company_currency_id' store=True string='Amount Total in Company Currency'
  • bank_statement_line_id Many2one → account.bank.statement.line
    ondelete='restrict' readonly=True string='Source Bank Statement Line' args: 'account.bank.statement.line'
  • campaign_id Many2one → donation.campaign
    check_company=True default=<expr> ondelete='restrict' string='Donation Campaign' tracking=True args: 'donation.campaign'
  • check_total Monetary
    currency_field='currency_id' string='Check Amount' tracking=True
  • commercial_partner_id Many2one
    index=True related='partner_id.commercial_partner_id' store=True string='Parent Donor'
  • company_currency_id Many2one
    related='company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' store=True args: 'res.country'
  • currency_id Many2one → res.currency
    default=<expr> ondelete='restrict' required=True tracking=True args: 'res.currency'
  • donation_date Date
    index=True required=True tracking=True
  • line_ids One2many → donation.line
    copy=True string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    check_company=True copy=False readonly=True string='Journal Entry' args: 'account.move'
  • number Char
    copy=False default=<expr> index=True readonly=True required=True string='Donation Number'
  • partner_id Many2one → res.partner
    index=True ondelete='restrict' required=True string='Donor' tracking=True args: 'res.partner'
  • payment_method_line_id Many2one → account.payment.method.line
    check_company=True default=<expr> domain="[('company_id', '=', company_id), ('donation', '=', True)]" string='Payment Method' tracking=True args: 'account.payment.method.line'
  • payment_ref Char
    copy=False string='Payment Reference'
  • state Selection
    copy=False default='draft' index=True readonly=True tracking=True args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • tax_receipt_id Many2one → donation.tax.receipt
    check_company=True copy=False readonly=True tracking=True args: 'donation.tax.receipt'
  • tax_receipt_option Selection
    compute='_compute_tax_receipt_option' index=True precompute=True readonly=False store=True tracking=True args: [('none', 'None'), ('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
  • tax_receipt_total Monetary
    compute='_compute_total' currency_field='company_currency_id' help='Eligible Tax Receipt Sub-total in Company Currency' readonly=True store=True string='Tax Receipt Eligible Amount'
  • thanks_printed Boolean
    copy=False help='This field automatically becomes active when the thanks letter has been printed.' tracking=True
  • thanks_template_id Many2one → donation.thanks.template
    copy=False ondelete='restrict' args: 'donation.thanks.template'
Public methods (11)
  • cancel2draft(self)
    from Cancel state to Draft state
  • create(self, vals_list)
    @api.model_create_multi
  • done2cancel(self)
    from Done state to Cancel state
  • generate_each_tax_receipt(self)
  • print_thanks(self)
  • save_as_draft(self)
  • save_default_values(self)
  • tax_receipt_option_change(self)
    @api.onchange('tax_receipt_option')
  • thanks_printed_button(self)
  • unlink(self)
  • validate(self)

New fields (14)
  • amount Monetary
    compute='_compute_amount' currency_field='currency_id' store=True
  • amount_company_currency Monetary
    compute='_compute_amount' currency_field='company_currency_id' store=True string='Amount in Company Currency'
  • company_currency_id Many2one
    related='donation_id.company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one
    related='donation_id.company_id' store=True
  • currency_id Many2one
    related='donation_id.currency_id' store=True
  • donation_id Many2one → donation.donation
    ondelete='cascade' args: 'donation.donation'
  • in_kind Boolean
    compute='_compute_in_kind' store=True
  • product_donation_type Selection
    related='product_id.donation_type' store=True string='Product Type donation'
  • product_id Many2one → product.product
    check_company=True domain=[('donation_type', '!=', False)] ondelete='restrict' required=True args: 'product.product'
  • quantity Integer
    default=1
  • sequence Integer
  • tax_receipt_amount Monetary
    compute='_compute_amount' currency_field='company_currency_id' store=True string='Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    related='product_id.tax_receipt_ok' store=True
  • unit_price Monetary
    currency_field='currency_id'
Public methods (1)
  • product_id_change(self)
    @api.onchange('product_id')

New fields (16)
  • amount_company_currency Monetary
    currency_field='company_currency_id' readonly=True args: 'Amount'
  • campaign_id Many2one → donation.campaign
    readonly=True args: 'donation.campaign', 'Donation Campaign'
  • company_currency_id Many2one → res.currency
    readonly=True args: 'res.currency'
  • company_id Many2one → res.company
    readonly=True args: 'res.company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Partner Country'
  • donation_date Date
    readonly=True
  • in_kind Boolean
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Donor'
  • payment_method_line_id Many2one → account.payment.method.line
    readonly=True args: 'account.payment.method.line'
  • product_categ_id Many2one → product.category
    readonly=True args: 'product.category', 'Category of Product'
  • product_donation_type Selection
    related='product_id.donation_type' store=True
  • product_id Many2one → product.product
    readonly=True args: 'product.product'
  • tax_receipt_amount Monetary
    currency_field='company_currency_id' readonly=True args: 'Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    args: 'Eligible for a Tax Receipt'
  • thanks_printed Boolean
    readonly=True
  • thanks_template_id Many2one → donation.thanks.template
    readonly=True string='Thanks Template' args: 'donation.thanks.template'
Public methods (1)
  • init(self)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Related Donations' args: 'donation.donation', 'tax_receipt_id'
Public methods (1)
  • update_tax_receipt_annual_dict(self, tax_receipt_annual_dict, start_date, end_date, company)
    @api.model

New fields (2)
  • donation_id Many2one → donation.donation
    default=<expr> required=True string='Donation' args: 'donation.donation'
  • new_tax_receipt_option Selection
    required=True string='Tax Receipt Option' args: [('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
Public methods (1)
  • switch(self)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' args: 'res.company'
  • image Binary
    attachment=True
  • name Char
    required=True
  • sequence Integer
    default=10
  • text Text
    translate=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • run(self)

New fields (2)
  • donation_account_id Many2one → account.account
    check_company=True copy=False help='Transfer account for donations received by credit transfer. ' ondelete='restrict' string='Donation by Credit Transfer Account' args: 'account.account'
  • donation_credit_transfer_product_id Many2one → product.product
    check_company=True domain=[('donation_type', '!=', False)] ondelete='restrict' string='Product for Donations via Credit Transfer' args: 'product.product'
Public methods (0)

No public methods.

New fields (3)
  • donation_account_id Many2one
    domain="[('reconcile', '=', True), ('deprecated', '=', False), ('company_ids', 'in', company_id), ('account_type', '=', 'asset_current')]" readonly=False related='company_id.donation_account_id'
  • donation_credit_transfer_product_id Many2one
    readonly=False related='company_id.donation_credit_transfer_product_id'
  • group_donation_check_total Boolean
    implied_group='donation.group_donation_check_total' string='Check Total on Donations'
Public methods (0)

No public methods.

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' compute_sudo=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    args: 'donation.campaign', 'Current Donation Campaign'
  • context_donation_payment_method_line_id Many2one → account.payment.method.line
    company_dependent=True domain=[('donation', '=', True)] args: 'account.payment.method.line', 'Current Donation Payment Method'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/16.0/donation
VERSION
VERSION 2.2.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSAlexis de Lattre, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/donation
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:58
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_mode
OCA/donation:
    - donation_base
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (29)
XML IDNameModelTypeStatus
account_payment_mode_form donation.account.payment.mode.form account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
account_payment_mode_search account.payment.mode filter Inherits account_payment_mode.account_payment_mode_search
account_payment_mode_tree donation.account.payment.mode.tree account.payment.mode field Inherits account_payment_mode.account_payment_mode_tree
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_search donation.campaign.search donation.campaign search New
donation_campaign_tree donation.campaign.tree donation.campaign tree New
donation_form donation.form donation.donation form New
donation_from_bank_statement_line_form Creation Donation from Bank Statement Line form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.tree donation.line tree New
donation_pivot donation.pivot donation.donation pivot New
donation_report_graph donation.report.graph donation.report graph New
donation_report_pivot donation.report.pivot donation.report pivot New
donation_report_search donation.report.search donation.report search New
donation_report_tree donation.report.tree donation.report tree New
donation_search donation.search donation.donation search New
donation_tax_receipt_form donation.donation.tax.receipt.form donation.tax.receipt group Inherits donation_base.donation_tax_receipt_form
donation_tax_receipt_option_switch_form donation_tax_receipt_option_switch.form donation.tax.receipt.option.switch form New
donation_thanks_template_form donation.thanks.template form New
donation_thanks_template_search donation.thanks.template search New
donation_thanks_template_tree donation.thanks.template tree New
donation_tree donation.tree donation.donation tree New
donation_validate_form donation_validate.form donation.validate form New
report_donation_thanks report_donation_thanks ir.ui.view qweb New
res_config_settings_donation donation.res.config.settings.form res.config.settings xpath Inherits base.res_config_settings_view_form
view_partner_property_form donation.button.res.partner.form res.partner button Inherits donation_base.view_partner_property_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users field Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (15)

New fields (1)
  • business_domain Selection
    ondelete={'donation': 'cascade'} selection_add=[('donation', 'Donation')]
Public methods (0)

No public methods.

New fields (1)
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'bank_statement_line_id'
Public methods (0)

No public methods.

New fields (1)
  • donation Boolean
    help='If enabled, this payment mode will be available on donations'
Public methods (1)
  • donation_change(self)
    @api.onchange('donation')

New fields (7)
  • active Boolean
    default=True
  • code Char
  • company_id Many2one → res.company
    ondelete='cascade' args: 'res.company'
  • name Char
    required=True
  • note Text
    args: 'Notes'
  • sequence Integer
    default=10
  • start_date Date
    default=fields.Date.context_today
Public methods (2)
  • name_get(self)
    @api.depends('code', 'name')
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model

New fields (23)
  • amount_total Monetary
    compute='_compute_total' currency_field='currency_id' store=True tracking=True
  • amount_total_company_currency Monetary
    compute='_compute_total' currency_field='company_currency_id' store=True string='Amount Total in Company Currency'
  • bank_statement_line_id Many2one → account.bank.statement.line
    ondelete='restrict' readonly=True string='Source Bank Statement Line' args: 'account.bank.statement.line'
  • campaign_id Many2one → donation.campaign
    check_company=True default=<expr> ondelete='restrict' string='Donation Campaign' tracking=True args: 'donation.campaign'
  • check_total Monetary
    currency_field='currency_id' states={'done': [('readonly', True)]} string='Check Amount' tracking=True
  • commercial_partner_id Many2one
    index=True related='partner_id.commercial_partner_id' store=True string='Parent Donor'
  • company_currency_id Many2one
    related='company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True states={'done': [('readonly', True)]} args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' store=True args: 'res.country'
  • currency_id Many2one → res.currency
    default=<expr> ondelete='restrict' required=True states={'done': [('readonly', True)]} tracking=True args: 'res.currency'
  • donation_date Date
    index=True required=True states={'done': [('readonly', True)]} tracking=True
  • line_ids One2many → donation.line
    copy=True states={'done': [('readonly', True)]} string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    check_company=True copy=False readonly=True string='Account Move' args: 'account.move'
  • number Char
    copy=False default=<expr> index=True readonly=True required=True states={'draft': [('readonly', False)]} string='Donation Number'
  • partner_id Many2one → res.partner
    index=True ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Donor' tracking=True args: 'res.partner'
  • payment_mode_id Many2one → account.payment.mode
    check_company=True default=<expr> domain="[('company_id', '=', company_id), ('donation', '=', True)]" states={'done': [('readonly', True)]} tracking=True args: 'account.payment.mode'
  • payment_ref Char
    copy=False states={'done': [('readonly', True)]} string='Payment Reference'
  • state Selection
    copy=False default='draft' index=True readonly=True tracking=True args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • tax_receipt_id Many2one → donation.tax.receipt
    check_company=True copy=False readonly=True tracking=True args: 'donation.tax.receipt'
  • tax_receipt_option Selection
    compute='_compute_tax_receipt_option' index=True precompute=True readonly=False states={'done': [('readonly', True)]} store=True tracking=True args: [('none', 'None'), ('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
  • tax_receipt_total Monetary
    compute='_compute_total' currency_field='company_currency_id' help='Eligible Tax Receipt Sub-total in Company Currency' readonly=True store=True string='Tax Receipt Eligible Amount'
  • thanks_printed Boolean
    copy=False help='This field automatically becomes active when the thanks letter has been printed.' tracking=True
  • thanks_template_id Many2one → donation.thanks.template
    copy=False ondelete='restrict' args: 'donation.thanks.template'
Public methods (12)
  • cancel2draft(self)
    from Cancel state to Draft state
  • create(self, vals_list)
    @api.model_create_multi
  • done2cancel(self)
    from Done state to Cancel state
  • generate_each_tax_receipt(self)
  • name_get(self)
    @api.depends('state', 'number')
  • print_thanks(self)
  • save_as_draft(self)
  • save_default_values(self)
  • tax_receipt_option_change(self)
    @api.onchange('tax_receipt_option')
  • thanks_printed_button(self)
  • unlink(self)
  • validate(self)

New fields (14)
  • amount Monetary
    compute='_compute_amount' currency_field='currency_id' store=True
  • amount_company_currency Monetary
    compute='_compute_amount' currency_field='company_currency_id' store=True string='Amount in Company Currency'
  • company_currency_id Many2one
    related='donation_id.company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one
    related='donation_id.company_id' store=True
  • currency_id Many2one
    related='donation_id.currency_id' store=True
  • donation_id Many2one → donation.donation
    ondelete='cascade' args: 'donation.donation'
  • in_kind Boolean
    compute='_compute_in_kind' store=True
  • product_detailed_type Selection
    related='product_id.detailed_type' store=True string='Product Type'
  • product_id Many2one → product.product
    check_company=True domain=[('detailed_type', 'like', 'donation')] ondelete='restrict' required=True args: 'product.product'
  • quantity Integer
    default=1
  • sequence Integer
  • tax_receipt_amount Monetary
    compute='_compute_amount' currency_field='company_currency_id' store=True string='Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    related='product_id.tax_receipt_ok' store=True
  • unit_price Monetary
    currency_field='currency_id'
Public methods (1)
  • product_id_change(self)
    @api.onchange('product_id')

New fields (16)
  • amount_company_currency Monetary
    currency_field='company_currency_id' readonly=True args: 'Amount'
  • campaign_id Many2one → donation.campaign
    readonly=True args: 'donation.campaign', 'Donation Campaign'
  • company_currency_id Many2one → res.currency
    readonly=True args: 'res.currency'
  • company_id Many2one → res.company
    readonly=True args: 'res.company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Partner Country'
  • donation_date Date
    readonly=True
  • in_kind Boolean
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Donor'
  • payment_mode_id Many2one → account.payment.mode
    readonly=True args: 'account.payment.mode'
  • product_categ_id Many2one → product.category
    readonly=True args: 'product.category', 'Category of Product'
  • product_detailed_type Selection
    related='product_id.detailed_type' store=True
  • product_id Many2one → product.product
    readonly=True args: 'product.product'
  • tax_receipt_amount Monetary
    currency_field='company_currency_id' readonly=True args: 'Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    args: 'Eligible for a Tax Receipt'
  • thanks_printed Boolean
    readonly=True
  • thanks_template_id Many2one → donation.thanks.template
    readonly=True string='Thanks Template' args: 'donation.thanks.template'
Public methods (1)
  • init(self)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Related Donations' args: 'donation.donation', 'tax_receipt_id'
Public methods (1)
  • update_tax_receipt_annual_dict(self, tax_receipt_annual_dict, start_date, end_date, company)
    @api.model

New fields (2)
  • donation_id Many2one → donation.donation
    default=<expr> required=True string='Donation' args: 'donation.donation'
  • new_tax_receipt_option Selection
    required=True string='Tax Receipt Option' args: [('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
Public methods (1)
  • switch(self)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' string='Company' args: 'res.company'
  • image Binary
    attachment=True
  • name Char
    required=True
  • sequence Integer
    default=10
  • text Text
    translate=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • run(self)

New fields (2)
  • donation_account_id Many2one → account.account
    check_company=True copy=False help='Transfer account for donations received by credit transfer. ' ondelete='restrict' string='Donation by Credit Transfer Account' args: 'account.account'
  • donation_credit_transfer_product_id Many2one → product.product
    domain=[('detailed_type', '=', 'donation')] ondelete='restrict' string='Product for Donations via Credit Transfer' args: 'product.product'
Public methods (1)
  • company_donation_bank_statement_check(self)
    @api.constrains('donation_credit_transfer_product_id')

New fields (3)
  • donation_account_id Many2one
    domain="[('reconcile', '=', True), ('deprecated', '=', False), ('company_id', '=', company_id), ('account_type', '=', 'asset_current')]" readonly=False related='company_id.donation_account_id'
  • donation_credit_transfer_product_id Many2one
    readonly=False related='company_id.donation_credit_transfer_product_id'
  • group_donation_check_total Boolean
    implied_group='donation.group_donation_check_total' string='Check Total on Donations'
Public methods (0)

No public methods.

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' compute_sudo=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    args: 'donation.campaign', 'Current Donation Campaign'
  • context_donation_payment_mode_id Many2one → account.payment.mode
    company_dependent=True domain=[('donation', '=', True)] args: 'account.payment.mode', 'Current Donation Payment Mode'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/14.0/donation
VERSION
VERSION 1.8.0
CATEGORY
CATEGORYAccounting
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSAlexis de Lattre, GitHub, Enric Tobella, OCA Transbot, oca-travis, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/donation
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/bank-payment:
    - account_payment_mode
OCA/donation:
    - donation_base
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (31)
XML IDNameModelTypeStatus
account_payment_mode_form donation.account.payment.mode.form account.payment.mode field Inherits account_payment_mode.account_payment_mode_form
account_payment_mode_tree donation.account.payment.mode.tree account.payment.mode field Inherits account_payment_mode.account_payment_mode_tree
donation_base.view_partner_property_form New
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_search donation.campaign.search donation.campaign search New
donation_campaign_tree donation.campaign.tree donation.campaign tree New
donation_form donation.form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.tree donation.line tree New
donation_pivot donation.pivot donation.donation pivot New
donation_report_graph donation.report.graph donation.report graph New
donation_report_pivot donation.report.pivot donation.report pivot New
donation_report_search donation.report.search donation.report search New
donation_report_tree donation.report.tree donation.report tree New
donation_search donation.search donation.donation search New
donation_tax_receipt_form donation.donation.tax.receipt.form donation.tax.receipt group Inherits donation_base.donation_tax_receipt_form
donation_tax_receipt_option_switch_form donation_tax_receipt_option_switch.form donation.tax.receipt.option.switch form New
donation_thanks_template_form donation.thanks.template form New
donation_thanks_template_search donation.thanks.template search New
donation_thanks_template_tree donation.thanks.template tree New
donation_tree donation.tree donation.donation tree New
donation_validate_form donation_validate.form donation.validate form New
report_donation_thanks report_donation_thanks ir.ui.view qweb New
res_config_settings_donation donation.res.config.settings.form res.config.settings xpath Inherits base.res_config_settings_view_form
view_account_journal_form donation.account.journal.form account.journal field Inherits account.view_account_journal_form
view_bank_statement_form donation.bank.statement.bank_statement_form account.bank.statement div Inherits account.view_bank_statement_form
view_bank_statement_line_form donation.bank.statement.line.form account.bank.statement.line xpath Inherits account.view_bank_statement_line_form
view_partner_form donation.button.res.partner.form res.partner button Inherits donation_base.view_partner_property_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users field Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (16)

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' compute_sudo=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'bank_statement_id'
Public methods (3)
  • button_validate(self)
  • create_donations(self)
  • show_donations(self)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Donations' args: 'donation.donation', 'bank_statement_line_id'
Public methods (0)

No public methods.

New fields (1)
  • donation_account_id Many2one → account.account
    check_company=True copy=False domain="[('reconcile', '=', True), ('deprecated', '=', False), ('company_id', '=', company_id), ('id', 'not in', (default_account_id, suspense_account_id, payment_credit_account_id, payment_debit_account_id))]" help="Transfer account for donations received by credit transfer. Leave empty if you don't receive donations on this bank account." ondelete='restrict' string='Donation by Credit Transfer Account' args: 'account.account'
Public methods (0)

No public methods.

New fields (1)
  • donation Boolean
    help='If enabled, this payment mode will be available on donations' string='Donation'
Public methods (1)
  • donation_change(self)
    @api.onchange('donation')

New fields (7)
  • active Boolean
    default=True
  • code Char
    args: 'Code'
  • company_id Many2one → res.company
    ondelete='cascade' string='Company' args: 'res.company'
  • name Char
    required=True args: 'Name'
  • note Text
    args: 'Notes'
  • sequence Integer
    default=10
  • start_date Date
    default=fields.Date.context_today args: 'Start Date'
Public methods (2)
  • name_get(self)
    @api.depends('code', 'name')
  • name_search(self, name='', args=None, operator='ilike', limit=100)
    @api.model

New fields (24)
  • amount_total Monetary
    compute='_compute_total' currency_field='currency_id' readonly=True store=True string='Amount Total' tracking=True
  • amount_total_company_currency Monetary
    compute='_compute_total' currency_field='company_currency_id' readonly=True store=True string='Amount Total in Company Currency'
  • bank_statement_id Many2one
    related='bank_statement_line_id.statement_id' store=True string='Bank Statement'
  • bank_statement_line_id Many2one → account.bank.statement.line
    ondelete='restrict' readonly=True string='Source Bank Statement Line' args: 'account.bank.statement.line'
  • campaign_id Many2one → donation.campaign
    check_company=True default=<expr> ondelete='restrict' string='Donation Campaign' tracking=True args: 'donation.campaign'
  • check_total Monetary
    currency_field='currency_id' states={'done': [('readonly', True)]} string='Check Amount' tracking=True
  • commercial_partner_id Many2one
    index=True related='partner_id.commercial_partner_id' store=True string='Parent Donor'
  • company_currency_id Many2one
    related='company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True states={'done': [('readonly', True)]} string='Company' args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' readonly=True store=True string='Country' args: 'res.country'
  • currency_id Many2one → res.currency
    default=<expr> ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Currency' tracking=True args: 'res.currency'
  • donation_date Date
    index=True required=True states={'done': [('readonly', True)]} string='Donation Date' tracking=True
  • line_ids One2many → donation.line
    copy=True states={'done': [('readonly', True)]} string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    check_company=True copy=False readonly=True string='Account Move' args: 'account.move'
  • number Char
    copy=False default=<expr> index=True readonly=True required=True states={'draft': [('readonly', False)]} string='Donation Number'
  • partner_id Many2one → res.partner
    index=True ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Donor' tracking=True args: 'res.partner'
  • payment_mode_id Many2one → account.payment.mode
    check_company=True default=<expr> domain="[('company_id', '=', company_id), ('donation', '=', True)]" states={'done': [('readonly', True)]} string='Payment Mode' tracking=True args: 'account.payment.mode'
  • payment_ref Char
    copy=False states={'done': [('readonly', True)]} string='Payment Reference'
  • state Selection
    copy=False default='draft' index=True readonly=True string='State' tracking=True args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • tax_receipt_id Many2one → donation.tax.receipt
    check_company=True copy=False readonly=True string='Tax Receipt' tracking=True args: 'donation.tax.receipt'
  • tax_receipt_option Selection
    index=True states={'done': [('readonly', True)]} string='Tax Receipt Option' tracking=True args: [('none', 'None'), ('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
  • tax_receipt_total Monetary
    compute='_compute_total' currency_field='company_currency_id' help='Eligible Tax Receipt Sub-total in Company Currency' readonly=True store=True string='Tax Receipt Eligible Amount'
  • thanks_printed Boolean
    copy=False help='This field automatically becomes active when the thanks letter has been printed.' string='Thanks Printed' tracking=True
  • thanks_template_id Many2one → donation.thanks.template
    copy=False ondelete='restrict' string='Thanks Template' args: 'donation.thanks.template'
Public methods (13)
  • auto_install_l10n(self)
    @api.model
    Helper function for calling a method that is not accessible directly from XML data.
  • cancel2draft(self)
    from Cancel state to Draft state
  • create(self, vals)
    @api.model
  • done2cancel(self)
    from Done state to Cancel state
  • generate_each_tax_receipt(self)
  • name_get(self)
    @api.depends('state', 'number')
  • partner_id_change(self)
    @api.onchange('partner_id')
  • print_thanks(self)
  • save_default_values(self)
  • tax_receipt_option_change(self)
    @api.onchange('tax_receipt_option')
  • thanks_printed_button(self)
  • unlink(self)
  • validate(self)

New fields (14)
  • amount Monetary
    compute='_compute_amount' currency_field='currency_id' store=True string='Amount'
  • amount_company_currency Monetary
    compute='_compute_amount' currency_field='company_currency_id' store=True string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    check_company=True ondelete='restrict' args: 'account.analytic.account', 'Analytic Account'
  • company_currency_id Many2one → res.currency
    related='donation_id.company_id.currency_id' string='Company Currency' args: 'res.currency'
  • company_id Many2one
    related='donation_id.company_id' store=True
  • currency_id Many2one → res.currency
    related='donation_id.currency_id' args: 'res.currency'
  • donation_id Many2one → donation.donation
    ondelete='cascade' args: 'donation.donation', 'Donation'
  • in_kind Boolean
    related='product_id.in_kind_donation' store=True string='In Kind'
  • product_id Many2one → product.product
    check_company=True domain=[('donation', '=', True)] ondelete='restrict' required=True args: 'product.product', 'Product'
  • quantity Integer
    default=1 args: 'Quantity'
  • sequence Integer
    args: 'Sequence'
  • tax_receipt_amount Monetary
    compute='_compute_amount' currency_field='company_currency_id' store=True string='Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    related='product_id.tax_receipt_ok' store=True
  • unit_price Monetary
    currency_field='currency_id' string='Unit Price'
Public methods (1)
  • product_id_change(self)
    @api.onchange('product_id')

New fields (15)
  • amount_company_currency Monetary
    currency_field='company_currency_id' readonly=True args: 'Amount'
  • campaign_id Many2one → donation.campaign
    readonly=True args: 'donation.campaign', 'Donation Campaign'
  • company_currency_id Many2one → res.currency
    readonly=True string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Partner Country'
  • donation_date Date
    readonly=True args: 'Donation Date'
  • in_kind Boolean
    args: 'In Kind'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Donor'
  • payment_mode_id Many2one → account.payment.mode
    readonly=True string='Payment Mode' args: 'account.payment.mode'
  • product_categ_id Many2one → product.category
    readonly=True args: 'product.category', 'Category of Product'
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • tax_receipt_amount Monetary
    currency_field='company_currency_id' readonly=True args: 'Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    args: 'Eligible for a Tax Receipt'
  • thanks_printed Boolean
    readonly=True string='Thanks Printed'
  • thanks_template_id Many2one → donation.thanks.template
    readonly=True string='Thanks Template' args: 'donation.thanks.template'
Public methods (1)
  • init(self)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Related Donations' args: 'donation.donation', 'tax_receipt_id'
Public methods (1)
  • update_tax_receipt_annual_dict(self, tax_receipt_annual_dict, start_date, end_date, company)
    @api.model

New fields (2)
  • donation_id Many2one → donation.donation
    default=<expr> required=True string='Donation' args: 'donation.donation'
  • new_tax_receipt_option Selection
    required=True string='Tax Receipt Option' args: [('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
Public methods (1)
  • switch(self)

New fields (6)
  • active Boolean
    default=True
  • company_id Many2one → res.company
    default=<expr> ondelete='cascade' string='Company' args: 'res.company'
  • image Binary
    attachment=True
  • name Char
    required=True
  • sequence Integer
    default=10
  • text Text
    translate=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • run(self)

New fields (1)
  • donation_credit_transfer_product_id Many2one → product.product
    domain=[('donation', '=', True)] ondelete='restrict' string='Product for Donations via Credit Transfer' args: 'product.product'
Public methods (1)
  • company_donation_bank_statement_check(self)
    @api.constrains('donation_credit_transfer_product_id')

New fields (1)
  • donation_credit_transfer_product_id Many2one
    readonly=False related='company_id.donation_credit_transfer_product_id'
Public methods (0)

No public methods.

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' compute_sudo=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    args: 'donation.campaign', 'Current Donation Campaign'
  • context_donation_payment_mode_id Many2one → account.payment.mode
    company_dependent=True domain=[('donation', '=', True)] args: 'account.payment.mode', 'Current Donation Payment Mode'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/13.0/donation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSoca-travis, Weblate, OCA-git-bot, Alba Riera
WEBSITE
WEBSITEhttps://github.com/OCA/donation
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/donation:
    - donation_base
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_tree donation.campaign.tree donation.campaign tree New
donation_form donation.form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.tree donation.line tree New
donation_pivot donation.pivot donation.donation pivot New
donation_report_graph donation.report.graph donation.report graph New
donation_report_pivot donation.report.pivot donation.report pivot New
donation_report_search donation.report.search donation.report search New
donation_report_tree donation.report.tree donation.report tree New
donation_search donation.search donation.donation search New
donation_tax_receipt_form donation.donation.tax.receipt.form donation.tax.receipt group Inherits donation_base.donation_tax_receipt_form
donation_tax_receipt_option_switch_form donation_tax_receipt_option_switch.form donation.tax.receipt.option.switch form New
donation_tree donation.tree donation.donation tree New
donation_validate_form donation_validate.form donation.validate form New
view_account_journal_form donation.account.journal.form account.journal field Inherits account.view_account_journal_form
view_partner_form donation.button.res.partner.form res.partner field Inherits base.view_partner_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users group Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (10)

New fields (1)
  • allow_donation Boolean
    args: 'Donation Payment Method'
Public methods (1)
  • donation_journal_type_change(self)
    @api.onchange('type')

New fields (4)
  • code Char
    args: 'Code'
  • name Char
    required=True args: 'Name'
  • note Text
    args: 'Notes'
  • start_date Date
    default=fields.Date.context_today args: 'Start Date'
Public methods (1)
  • name_get(self)
    @api.depends('code', 'name')

New fields (20)
  • amount_total Monetary
    compute='_compute_total' compute_sudo=True currency_field='currency_id' readonly=True store=True string='Amount Total' tracking=True
  • amount_total_company_currency Monetary
    compute='_compute_total' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Amount Total in Company Currency'
  • campaign_id Many2one → donation.campaign
    default=<expr> ondelete='restrict' states={'done': [('readonly', True)]} string='Donation Campaign' tracking=True args: 'donation.campaign'
  • check_total Monetary
    currency_field='currency_id' states={'done': [('readonly', True)]} string='Check Amount' tracking=True
  • commercial_partner_id Many2one
    compute_sudo=True index=True readonly=True related='partner_id.commercial_partner_id' store=True string='Parent Donor'
  • company_currency_id Many2one
    compute_sudo=True readonly=True related='company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True states={'done': [('readonly', True)]} string='Company' args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' compute_sudo=True readonly=True store=True string='Country' args: 'res.country'
  • currency_id Many2one → res.currency
    default=_default_currency ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Currency' tracking=True args: 'res.currency'
  • donation_date Date
    index=True required=True states={'done': [('readonly', True)]} string='Donation Date' tracking=True
  • journal_id Many2one → account.journal
    default=<expr> domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] required=True states={'done': [('readonly', True)]} string='Payment Method' tracking=True args: 'account.journal'
  • line_ids One2many → donation.line
    copy=True states={'done': [('readonly', True)]} string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    copy=False readonly=True string='Account Move' args: 'account.move'
  • number Char
    readonly=True related='move_id.name' store=True string='Donation Number'
  • partner_id Many2one → res.partner
    index=True ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Donor' tracking=True args: 'res.partner'
  • payment_ref Char
    states={'done': [('readonly', True)]} string='Payment Reference'
  • state Selection
    copy=False default='draft' index=True readonly=True string='State' tracking=True args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • tax_receipt_id Many2one → donation.tax.receipt
    copy=False readonly=True string='Tax Receipt' tracking=True args: 'donation.tax.receipt'
  • tax_receipt_option Selection
    index=True states={'done': [('readonly', True)]} string='Tax Receipt Option' tracking=True args: [('none', 'None'), ('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
  • tax_receipt_total Monetary
    compute='_compute_total' compute_sudo=True currency_field='company_currency_id' help='Eligible Tax Receipt Sub-total in Company Currency' readonly=True store=True string='Tax Receipt Eligible Amount'
Public methods (10)
  • auto_install_l10n(self)
    @api.model
    Helper function for calling a method that is not accessible directly from XML data.
  • cancel2draft(self)
    from Cancel state to Draft state
  • done2cancel(self)
    from Done state to Cancel state
  • generate_each_tax_receipt(self)
  • name_get(self)
  • partner_id_change(self)
    @api.onchange('partner_id')
  • save_default_values(self)
  • tax_receipt_option_change(self)
    @api.onchange('tax_receipt_option')
  • unlink(self)
  • validate(self)

New fields (13)
  • amount Monetary
    compute='_compute_amount' compute_sudo=True currency_field='currency_id' readonly=True store=True string='Amount'
  • amount_company_currency Monetary
    compute='_compute_amount' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    ondelete='restrict' args: 'account.analytic.account', 'Analytic Account'
  • company_currency_id Many2one → res.currency
    compute_sudo=True readonly=True related='donation_id.company_id.currency_id' string='Company Currency' args: 'res.currency'
  • currency_id Many2one → res.currency
    compute_sudo=True readonly=True related='donation_id.currency_id' args: 'res.currency'
  • donation_id Many2one → donation.donation
    ondelete='cascade' args: 'donation.donation', 'Donation'
  • in_kind Boolean
    compute_sudo=True readonly=True related='product_id.in_kind_donation' store=True string='In Kind'
  • product_id Many2one → product.product
    domain=[('donation', '=', True)] ondelete='restrict' required=True args: 'product.product', 'Product'
  • quantity Integer
    args: 'Quantity'
  • sequence Integer
    args: 'Sequence'
  • tax_receipt_amount Monetary
    compute='_compute_amount' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    compute_sudo=True readonly=True related='product_id.tax_receipt_ok' store=True
  • unit_price Monetary
    currency_field='currency_id' string='Unit Price'
Public methods (2)
  • get_analytic_account_id(self)
    @api.model
  • product_id_change(self)
    @api.onchange('product_id')

New fields (12)
  • amount_company_currency Monetary
    currency_field='company_currency_id' readonly=True args: 'Amount'
  • campaign_id Many2one → donation.campaign
    readonly=True args: 'donation.campaign', 'Donation Campaign'
  • company_currency_id Many2one → res.currency
    readonly=True string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Partner Country'
  • donation_date Date
    readonly=True args: 'Donation Date'
  • in_kind Boolean
    args: 'In Kind'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Donor'
  • product_categ_id Many2one → product.category
    readonly=True args: 'product.category', 'Category of Product'
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • tax_receipt_amount Monetary
    currency_field='company_currency_id' readonly=True args: 'Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    args: 'Eligible for a Tax Receipt'
Public methods (1)
  • init(self)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Related Donations' args: 'donation.donation', 'tax_receipt_id'
Public methods (1)
  • update_tax_receipt_annual_dict(self, tax_receipt_annual_dict, start_date, end_date, precision_rounding)
    @api.model

New fields (2)
  • donation_id Many2one → donation.donation
    default=<expr> args: 'donation.donation', 'Donation'
  • new_tax_receipt_option Selection
    required=True args: [('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')], 'Tax Receipt Option'
Public methods (1)
  • switch(self)

New fields (0)

No new fields.

Public methods (1)
  • run(self)

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' readonly=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    args: 'donation.campaign', 'Current Donation Campaign'
  • context_donation_journal_id Many2one → account.journal
    company_dependent=True domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] args: 'account.journal', 'Current Donation Payment Method'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/12.0/donation
VERSION
VERSION 1.1.0
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSOCA-git-bot, Jaime Arroyo, Yu Weng
WEBSITE
WEBSITEhttps://github.com/OCA/donation
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/donation:
    - donation_base
odoo/odoo:
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_tree donation.campaign.tree donation.campaign tree New
donation_form donation.form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.tree donation.line tree New
donation_pivot donation.pivot donation.donation pivot New
donation_report_graph donation.report.graph donation.report graph New
donation_report_pivot donation.report.pivot donation.report pivot New
donation_report_search donation.report.search donation.report search New
donation_report_tree donation.report.tree donation.report tree New
donation_search donation.search donation.donation search New
donation_tax_receipt_form donation.donation.tax.receipt.form donation.tax.receipt group Inherits donation_base.donation_tax_receipt_form
donation_tax_receipt_option_switch_form donation_tax_receipt_option_switch.form donation.tax.receipt.option.switch form New
donation_tree donation.tree donation.donation tree New
donation_validate_form donation_validate.form donation.validate form New
view_account_journal_form donation.account.journal.form account.journal field Inherits account.view_account_journal_form
view_partner_form donation.button.res.partner.form res.partner xpath Inherits base.view_partner_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users group Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (10)

New fields (1)
  • allow_donation Boolean
    args: 'Donation Payment Method'
Public methods (1)
  • donation_journal_type_change(self)
    @api.onchange('type')

New fields (4)
  • code Char
    args: 'Code'
  • name Char
    required=True args: 'Name'
  • note Text
    oldname='nota' args: 'Notes'
  • start_date Date
    default=fields.Date.context_today args: 'Start Date'
Public methods (1)
  • name_get(self)
    @api.depends('code', 'name')

New fields (20)
  • amount_total Monetary
    compute='_compute_total' compute_sudo=True currency_field='currency_id' readonly=True store=True string='Amount Total' track_visibility='onchange'
  • amount_total_company_currency Monetary
    compute='_compute_total' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Amount Total in Company Currency'
  • campaign_id Many2one → donation.campaign
    default=<expr> ondelete='restrict' string='Donation Campaign' track_visibility='onchange' args: 'donation.campaign'
  • check_total Monetary
    currency_field='currency_id' states={'done': [('readonly', True)]} string='Check Amount' track_visibility='onchange'
  • commercial_partner_id Many2one
    compute_sudo=True index=True readonly=True related='partner_id.commercial_partner_id' store=True string='Parent Donor'
  • company_currency_id Many2one
    compute_sudo=True readonly=True related='company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True states={'done': [('readonly', True)]} string='Company' args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' compute_sudo=True readonly=True store=True string='Country' args: 'res.country'
  • currency_id Many2one → res.currency
    default=_default_currency ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Currency' track_visibility='onchange' args: 'res.currency'
  • donation_date Date
    index=True required=True states={'done': [('readonly', True)]} string='Donation Date' track_visibility='onchange'
  • journal_id Many2one → account.journal
    default=<expr> domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] required=True states={'done': [('readonly', True)]} string='Payment Method' track_visibility='onchange' args: 'account.journal'
  • line_ids One2many → donation.line
    states={'done': [('readonly', True)]} string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    copy=False readonly=True string='Account Move' args: 'account.move'
  • number Char
    readonly=True related='move_id.name' store=True string='Donation Number'
  • partner_id Many2one → res.partner
    index=True ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Donor' track_visibility='onchange' args: 'res.partner'
  • payment_ref Char
    states={'done': [('readonly', True)]} string='Payment Reference'
  • state Selection
    copy=False default='draft' index=True readonly=True string='State' track_visibility='onchange' args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • tax_receipt_id Many2one → donation.tax.receipt
    copy=False readonly=True string='Tax Receipt' track_visibility='onchange' args: 'donation.tax.receipt'
  • tax_receipt_option Selection
    index=True states={'done': [('readonly', True)]} string='Tax Receipt Option' track_visibility='onchange' args: [('none', 'None'), ('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
  • tax_receipt_total Monetary
    compute='_compute_total' compute_sudo=True currency_field='company_currency_id' help='Eligible Tax Receipt Sub-total in Company Currency' readonly=True store=True string='Tax Receipt Eligible Amount'
Public methods (10)
  • auto_install_l10n(self)
    @api.model
    Helper function for calling a method that is not accessible directly from XML data.
  • cancel2draft(self)
    from Cancel state to Draft state
  • done2cancel(self)
    from Done state to Cancel state
  • generate_each_tax_receipt(self)
  • name_get(self)
  • partner_id_change(self)
    @api.onchange('partner_id')
  • save_default_values(self)
  • tax_receipt_option_change(self)
    @api.onchange('tax_receipt_option')
  • unlink(self)
  • validate(self)

New fields (13)
  • amount Monetary
    compute='_compute_amount' compute_sudo=True currency_field='currency_id' readonly=True store=True string='Amount'
  • amount_company_currency Monetary
    compute='_compute_amount' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    ondelete='restrict' args: 'account.analytic.account', 'Analytic Account'
  • company_currency_id Many2one → res.currency
    compute_sudo=True readonly=True related='donation_id.company_id.currency_id' string='Company Currency' args: 'res.currency'
  • currency_id Many2one → res.currency
    compute_sudo=True readonly=True related='donation_id.currency_id' args: 'res.currency'
  • donation_id Many2one → donation.donation
    ondelete='cascade' args: 'donation.donation', 'Donation'
  • in_kind Boolean
    compute_sudo=True readonly=True related='product_id.in_kind_donation' store=True string='In Kind'
  • product_id Many2one → product.product
    domain=[('donation', '=', True)] ondelete='restrict' required=True args: 'product.product', 'Product'
  • quantity Integer
    args: 'Quantity'
  • sequence Integer
    args: 'Sequence'
  • tax_receipt_amount Monetary
    compute='_compute_amount' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    compute_sudo=True readonly=True related='product_id.tax_receipt_ok' store=True
  • unit_price Monetary
    currency_field='currency_id' string='Unit Price'
Public methods (2)
  • get_analytic_account_id(self)
    @api.model
  • product_id_change(self)
    @api.onchange('product_id')

New fields (12)
  • amount_company_currency Monetary
    currency_field='company_currency_id' readonly=True args: 'Amount'
  • campaign_id Many2one → donation.campaign
    readonly=True args: 'donation.campaign', 'Donation Campaign'
  • company_currency_id Many2one → res.currency
    readonly=True string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Partner Country'
  • donation_date Date
    readonly=True args: 'Donation Date'
  • in_kind Boolean
    args: 'In Kind'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Donor'
  • product_categ_id Many2one → product.category
    readonly=True args: 'product.category', 'Category of Product'
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • tax_receipt_amount Monetary
    currency_field='company_currency_id' readonly=True args: 'Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    args: 'Eligible for a Tax Receipt'
Public methods (1)
  • init(self)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Related Donations' args: 'donation.donation', 'tax_receipt_id'
Public methods (1)
  • update_tax_receipt_annual_dict(self, tax_receipt_annual_dict, start_date, end_date, precision_rounding)
    @api.model

New fields (2)
  • donation_id Many2one → donation.donation
    default=<expr> args: 'donation.donation', 'Donation'
  • new_tax_receipt_option Selection
    required=True args: [('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')], 'Tax Receipt Option'
Public methods (1)
  • switch(self)

New fields (0)

No new fields.

Public methods (1)
  • run(self)

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' readonly=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    args: 'donation.campaign', 'Current Donation Campaign'
  • context_donation_journal_id Many2one → account.journal
    company_dependent=True domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] args: 'account.journal', 'Current Donation Payment Method'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/11.0/donation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSGitHub, OCA Transbot, oca-travis, Nikul Chaudhary, tbaden
WEBSITE
WEBSITEhttps://github.com/OCA/donation
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:24:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/donation:
    - donation_base
odoo/odoo:
    - account_invoicing
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - analytic
    - web_planner
    - portal
    - http_routing
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_tree donation.campaign.tree donation.campaign tree New
donation_form donation.form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.tree donation.line tree New
donation_pivot donation.pivot donation.donation pivot New
donation_report_graph donation.report.graph donation.report graph New
donation_report_pivot donation.report.pivot donation.report pivot New
donation_report_search donation.report.search donation.report search New
donation_report_tree donation.report.tree donation.report tree New
donation_search donation.search donation.donation search New
donation_tax_receipt_form donation.donation.tax.receipt.form donation.tax.receipt group Inherits donation_base.donation_tax_receipt_form
donation_tax_receipt_option_switch_form donation_tax_receipt_option_switch.form donation.tax.receipt.option.switch form New
donation_tree donation.tree donation.donation tree New
donation_validate_form donation_validate.form donation.validate form New
view_account_journal_form donation.account.journal.form account.journal Inherits account.view_account_journal_form
view_partner_form donation.button.res.partner.form res.partner Inherits base.view_partner_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users group Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (10)

New fields (1)
  • allow_donation Boolean
    args: 'Donation Payment Method'
Public methods (1)
  • donation_journal_type_change(self)
    @api.onchange('type')

New fields (4)
  • code Char
    args: 'Code'
  • name Char
    required=True args: 'Name'
  • nota Text
    args: 'Notes'
  • start_date Date
    default=fields.Date.context_today args: 'Start Date'
Public methods (1)
  • name_get(self)
    @api.depends('code', 'name')

New fields (20)
  • amount_total Monetary
    compute='_compute_total' compute_sudo=True currency_field='currency_id' readonly=True store=True string='Amount Total' track_visibility='onchange'
  • amount_total_company_currency Monetary
    compute='_compute_total' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Amount Total in Company Currency'
  • campaign_id Many2one → donation.campaign
    default=<expr> ondelete='restrict' string='Donation Campaign' track_visibility='onchange' args: 'donation.campaign'
  • check_total Monetary
    currency_field='currency_id' states={'done': [('readonly', True)]} string='Check Amount' track_visibility='onchange'
  • commercial_partner_id Many2one
    compute_sudo=True index=True readonly=True related='partner_id.commercial_partner_id' store=True string='Parent Donor'
  • company_currency_id Many2one
    compute_sudo=True readonly=True related='company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True states={'done': [('readonly', True)]} string='Company' args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' compute_sudo=True readonly=True store=True string='Country' args: 'res.country'
  • currency_id Many2one → res.currency
    default=_default_currency ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Currency' track_visibility='onchange' args: 'res.currency'
  • donation_date Date
    index=True required=True states={'done': [('readonly', True)]} string='Donation Date' track_visibility='onchange'
  • journal_id Many2one → account.journal
    default=<expr> domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] required=True states={'done': [('readonly', True)]} string='Payment Method' track_visibility='onchange' args: 'account.journal'
  • line_ids One2many → donation.line
    states={'done': [('readonly', True)]} string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    copy=False readonly=True string='Account Move' args: 'account.move'
  • number Char
    readonly=True related='move_id.name' store=True string='Donation Number'
  • partner_id Many2one → res.partner
    index=True ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Donor' track_visibility='onchange' args: 'res.partner'
  • payment_ref Char
    states={'done': [('readonly', True)]} string='Payment Reference'
  • state Selection
    copy=False default='draft' index=True readonly=True string='State' track_visibility='onchange' args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • tax_receipt_id Many2one → donation.tax.receipt
    copy=False readonly=True string='Tax Receipt' track_visibility='onchange' args: 'donation.tax.receipt'
  • tax_receipt_option Selection
    index=True states={'done': [('readonly', True)]} string='Tax Receipt Option' track_visibility='onchange' args: [('none', 'None'), ('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
  • tax_receipt_total Monetary
    compute='_compute_total' compute_sudo=True currency_field='company_currency_id' help='Eligible Tax Receipt Sub-total in Company Currency' readonly=True store=True string='Tax Receipt Eligible Amount'
Public methods (10)
  • auto_install_l10n(self)
    @api.model
    Helper function for calling a method that is not accessible directly from XML data.
  • cancel2draft(self)
    from Cancel state to Draft state
  • done2cancel(self)
    from Done state to Cancel state
  • generate_each_tax_receipt(self)
  • name_get(self)
  • partner_id_change(self)
    @api.onchange('partner_id')
  • save_default_values(self)
  • tax_receipt_option_change(self)
    @api.onchange('tax_receipt_option')
  • unlink(self)
  • validate(self)

New fields (13)
  • amount Monetary
    compute='_compute_amount' compute_sudo=True currency_field='currency_id' readonly=True store=True string='Amount'
  • amount_company_currency Monetary
    compute='_compute_amount' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    ondelete='restrict' args: 'account.analytic.account', 'Analytic Account'
  • company_currency_id Many2one → res.currency
    compute_sudo=True readonly=True related='donation_id.company_id.currency_id' args: 'res.currency'
  • currency_id Many2one → res.currency
    compute_sudo=True readonly=True related='donation_id.currency_id' args: 'res.currency'
  • donation_id Many2one → donation.donation
    ondelete='cascade' args: 'donation.donation', 'Donation'
  • in_kind Boolean
    compute_sudo=True readonly=True related='product_id.in_kind_donation' store=True string='In Kind'
  • product_id Many2one → product.product
    domain=[('donation', '=', True)] ondelete='restrict' required=True args: 'product.product', 'Product'
  • quantity Integer
    args: 'Quantity'
  • sequence Integer
    args: 'Sequence'
  • tax_receipt_amount Monetary
    compute='_compute_amount' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    compute_sudo=True readonly=True related='product_id.tax_receipt_ok' store=True
  • unit_price Monetary
    currency_field='currency_id' string='Unit Price'
Public methods (2)
  • get_analytic_account_id(self)
    @api.model
  • product_id_change(self)
    @api.onchange('product_id')

New fields (12)
  • amount_company_currency Monetary
    currency_field='company_currency_id' readonly=True args: 'Amount'
  • campaign_id Many2one → donation.campaign
    readonly=True args: 'donation.campaign', 'Donation Campaign'
  • company_currency_id Many2one → res.currency
    readonly=True string='Company Currency' args: 'res.currency'
  • company_id Many2one → res.company
    readonly=True args: 'res.company', 'Company'
  • country_id Many2one → res.country
    readonly=True args: 'res.country', 'Partner Country'
  • donation_date Date
    readonly=True args: 'Donation Date'
  • in_kind Boolean
    args: 'In Kind'
  • partner_id Many2one → res.partner
    readonly=True args: 'res.partner', 'Donor'
  • product_categ_id Many2one → product.category
    readonly=True args: 'product.category', 'Category of Product'
  • product_id Many2one → product.product
    readonly=True args: 'product.product', 'Product'
  • tax_receipt_amount Monetary
    currency_field='company_currency_id' readonly=True args: 'Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    args: 'Eligible for a Tax Receipt'
Public methods (1)
  • init(self)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Related Donations' args: 'donation.donation', 'tax_receipt_id'
Public methods (1)
  • update_tax_receipt_annual_dict(self, tax_receipt_annual_dict, start_date, end_date, precision_rounding)
    @api.model

New fields (2)
  • donation_id Many2one → donation.donation
    default=<expr> args: 'donation.donation', 'Donation'
  • new_tax_receipt_option Selection
    required=True args: [('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')], 'Tax Receipt Option'
Public methods (1)
  • switch(self)

New fields (0)

No new fields.

Public methods (1)
  • run(self)

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' readonly=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    args: 'donation.campaign', 'Current Donation Campaign'
  • context_donation_journal_id Many2one → account.journal
    company_dependent=True domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] args: 'account.journal', 'Current Donation Payment Method'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/10.0/donation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis
WEBSITE
WEBSITEhttp://www.barroux.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/donation:
    - donation_base
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - report
    - analytic
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (21)
XML IDNameModelTypeStatus
donation_base.view_partner_form New
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_tree donation.campaign.tree donation.campaign tree New
donation_form donation.form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.tree donation.line tree New
donation_pivot donation.pivot donation.donation pivot New
donation_report_graph donation.report.graph donation.report graph New
donation_report_pivot donation.report.pivot donation.report pivot New
donation_report_search donation.report.search donation.report search New
donation_report_tree donation.report.tree donation.report tree New
donation_search donation.search donation.donation search New
donation_tax_receipt_form donation.donation.tax.receipt.form donation.tax.receipt group Inherits donation_base.donation_tax_receipt_form
donation_tax_receipt_option_switch_form donation_tax_receipt_option_switch.form donation.tax.receipt.option.switch form New
donation_tree donation.tree donation.donation tree New
donation_validate_form donation_validate.form donation.validate form New
view_account_journal_form donation.account.journal.form account.journal Inherits account.view_account_journal_form
view_partner_form donation.button.res.partner.form res.partner Inherits base.view_partner_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users group Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (10)

New fields (1)
  • allow_donation Boolean
    string='Donation Payment Method'
Public methods (1)
  • donation_journal_type_change(self)
    @api.onchange('type')

New fields (4)
  • code Char
    size=10 string='Code'
  • name Char
    required=True string='Name'
  • nota Text
    string='Notes'
  • start_date Date
    default=fields.Date.context_today string='Start Date'
Public methods (1)
  • name_get(self)
    @api.depends('code', 'name')

New fields (20)
  • amount_total Monetary
    compute='_compute_total' compute_sudo=True currency_field='currency_id' readonly=True store=True string='Amount Total' track_visibility='onchange'
  • amount_total_company_currency Monetary
    compute='_compute_total' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Amount Total in Company Currency'
  • campaign_id Many2one → donation.campaign
    default=<expr> ondelete='restrict' string='Donation Campaign' track_visibility='onchange' args: 'donation.campaign'
  • check_total Monetary
    currency_field='currency_id' states={'done': [('readonly', True)]} string='Check Amount' track_visibility='onchange'
  • commercial_partner_id Many2one
    compute_sudo=True index=True readonly=True related='partner_id.commercial_partner_id' store=True string='Parent Donor'
  • company_currency_id Many2one
    compute_sudo=True readonly=True related='company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True states={'done': [('readonly', True)]} string='Company' args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' compute_sudo=True readonly=True store=True string='Country' args: 'res.country'
  • currency_id Many2one → res.currency
    default=_default_currency ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Currency' track_visibility='onchange' args: 'res.currency'
  • donation_date Date
    index=True required=True states={'done': [('readonly', True)]} string='Donation Date' track_visibility='onchange'
  • journal_id Many2one → account.journal
    default=<expr> domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] required=True states={'done': [('readonly', True)]} string='Payment Method' track_visibility='onchange' args: 'account.journal'
  • line_ids One2many → donation.line
    copy=True states={'done': [('readonly', True)]} string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    copy=False readonly=True string='Account Move' args: 'account.move'
  • number Char
    readonly=True related='move_id.name' size=64 store=True string='Donation Number'
  • partner_id Many2one → res.partner
    index=True ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Donor' track_visibility='onchange' args: 'res.partner'
  • payment_ref Char
    size=32 states={'done': [('readonly', True)]} string='Payment Reference'
  • state Selection
    copy=False default='draft' index=True readonly=True string='State' track_visibility='onchange' args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • tax_receipt_id Many2one → donation.tax.receipt
    copy=False readonly=True string='Tax Receipt' track_visibility='onchange' args: 'donation.tax.receipt'
  • tax_receipt_option Selection
    index=True states={'done': [('readonly', True)]} string='Tax Receipt Option' track_visibility='onchange' args: [('none', 'None'), ('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
  • tax_receipt_total Monetary
    compute='_compute_total' compute_sudo=True currency_field='company_currency_id' help='Eligible Tax Receipt Sub-total in Company Currency' readonly=True store=True string='Tax Receipt Eligible Amount'
Public methods (10)
  • auto_install_l10n(self)
    @api.model
    Helper function for calling a method that is not accessible directly from XML data.
  • cancel2draft(self)
    from Cancel state to Draft state
  • done2cancel(self)
    from Done state to Cancel state
  • generate_each_tax_receipt(self)
  • name_get(self)
  • partner_id_change(self)
    @api.onchange('partner_id')
  • save_default_values(self)
  • tax_receipt_option_change(self)
    @api.onchange('tax_receipt_option')
  • unlink(self)
  • validate(self)

New fields (13)
  • amount Monetary
    compute='_compute_amount' compute_sudo=True currency_field='currency_id' readonly=True store=True string='Amount'
  • amount_company_currency Monetary
    compute='_compute_amount' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    ondelete='restrict' string='Analytic Account' args: 'account.analytic.account'
  • company_currency_id Many2one → res.currency
    compute_sudo=True readonly=True related='donation_id.company_id.currency_id' args: 'res.currency'
  • currency_id Many2one → res.currency
    compute_sudo=True readonly=True related='donation_id.currency_id' args: 'res.currency'
  • donation_id Many2one → donation.donation
    ondelete='cascade' string='Donation' args: 'donation.donation'
  • in_kind Boolean
    compute_sudo=True readonly=True related='product_id.in_kind_donation' store=True string='In Kind'
  • product_id Many2one → product.product
    domain=[('donation', '=', True)] ondelete='restrict' required=True string='Product' args: 'product.product'
  • quantity Integer
    default=1 string='Quantity'
  • sequence Integer
    args: 'Sequence'
  • tax_receipt_amount Monetary
    compute='_compute_amount' compute_sudo=True currency_field='company_currency_id' readonly=True store=True string='Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    compute_sudo=True readonly=True related='product_id.tax_receipt_ok' store=True
  • unit_price Monetary
    currency_field='currency_id' string='Unit Price'
Public methods (2)
  • get_analytic_account_id(self)
    @api.model
  • product_id_change(self)
    @api.onchange('product_id')

New fields (12)
  • amount_company_currency Monetary
    currency_field='company_currency_id' readonly=True args: 'Amount'
  • campaign_id Many2one → donation.campaign
    readonly=True string='Donation Campaign' args: 'donation.campaign'
  • 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
    readonly=True string='Partner Country' args: 'res.country'
  • donation_date Date
    readonly=True string='Donation Date'
  • in_kind Boolean
    string='In Kind'
  • partner_id Many2one → res.partner
    readonly=True string='Donor' args: 'res.partner'
  • product_categ_id Many2one → product.category
    readonly=True string='Category of Product' args: 'product.category'
  • product_id Many2one → product.product
    readonly=True string='Product' args: 'product.product'
  • tax_receipt_amount Monetary
    currency_field='company_currency_id' readonly=True args: 'Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    string='Eligible for a Tax Receipt'
Public methods (1)
  • init(self)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Related Donations' args: 'donation.donation', 'tax_receipt_id'
Public methods (1)
  • update_tax_receipt_annual_dict(self, tax_receipt_annual_dict, start_date, end_date, precision_rounding)
    @api.model

New fields (2)
  • donation_id Many2one → donation.donation
    default=<expr> string='Donation' args: 'donation.donation'
  • new_tax_receipt_option Selection
    required=True string='Tax Receipt Option' args: [('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
Public methods (1)
  • switch(self)

New fields (0)

No new fields.

Public methods (1)
  • run(self)

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' readonly=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    string='Current Donation Campaign' args: 'donation.campaign'
  • context_donation_journal_id Many2one → account.journal
    company_dependent=True domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] string='Current Donation Payment Method' args: 'account.journal'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/9.0/donation
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSAlexis de Lattre, Pedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, Stefan Becker
WEBSITE
WEBSITEhttp://www.barroux.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:24
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/donation:
    - donation_base
odoo/odoo:
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - report
    - analytic
    - web_tip
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (20)
XML IDNameModelTypeStatus
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_tree donation.campaign.tree donation.campaign tree New
donation_form donation.form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.tree donation.line tree New
donation_pivot donation.pivot donation.donation pivot New
donation_report_graph donation.report.graph donation.report graph New
donation_report_pivot donation.report.pivot donation.report pivot New
donation_report_search donation.report.search donation.report search New
donation_report_tree donation.report.tree donation.report tree New
donation_search donation.search donation.donation search New
donation_tax_receipt_form donation.donation.tax.receipt.form donation.tax.receipt group Inherits donation_base.donation_tax_receipt_form
donation_tax_receipt_option_switch_form donation_tax_receipt_option_switch.form donation.tax.receipt.option.switch form New
donation_tree donation.tree donation.donation tree New
donation_validate_form donation_validate.form donation.validate form New
view_account_journal_form donation.account.journal.form account.journal Inherits account.view_account_journal_form
view_partner_form donation.button.res.partner.form res.partner Inherits base.view_partner_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users group Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (10)

New fields (1)
  • allow_donation Boolean
    string='Donation Payment Method'
Public methods (1)
  • donation_journal_type_change(self)
    @api.onchange('type')

New fields (5)
  • code Char
    size=10 string='Code'
  • display_name Char
    compute='_compute_display_name_field' readonly=True store=True string='Display Name'
  • name Char
    required=True string='Name'
  • nota Text
    string='Notes'
  • start_date Date
    default=fields.Date.context_today string='Start Date'
Public methods (0)

No public methods.

New fields (21)
  • amount_total Monetary
    compute='_compute_total' currency_field='currency_id' readonly=True store=True string='Amount Total' track_visibility='onchange'
  • amount_total_company_currency Monetary
    compute='_compute_total' currency_field='company_currency_id' readonly=True store=True string='Amount Total in Company Currency'
  • campaign_id Many2one → donation.campaign
    default=<expr> ondelete='restrict' string='Donation Campaign' track_visibility='onchange' args: 'donation.campaign'
  • check_total Monetary
    currency_field='currency_id' states={'done': [('readonly', True)]} string='Check Amount' track_visibility='onchange'
  • commercial_partner_id Many2one
    index=True readonly=True related='partner_id.commercial_partner_id' store=True string='Parent Donor'
  • company_currency_id Many2one
    readonly=True related='company_id.currency_id' store=True string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True states={'done': [('readonly', True)]} string='Company' args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' copy=False readonly=True store=True string='Country' args: 'res.country'
  • currency_id Many2one → res.currency
    default=_default_currency ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Currency' track_visibility='onchange' args: 'res.currency'
  • display_name Char
    compute='_compute_display_name_field' readonly=True string='Display Name'
  • donation_date Date
    index=True required=True states={'done': [('readonly', True)]} string='Donation Date' track_visibility='onchange'
  • journal_id Many2one → account.journal
    default=<expr> domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] required=True states={'done': [('readonly', True)]} string='Payment Method' track_visibility='onchange' args: 'account.journal'
  • line_ids One2many → donation.line
    copy=True states={'done': [('readonly', True)]} string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    copy=False readonly=True string='Account Move' args: 'account.move'
  • number Char
    readonly=True related='move_id.name' size=64 store=True string='Donation Number'
  • partner_id Many2one → res.partner
    index=True ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Donor' track_visibility='onchange' args: 'res.partner'
  • payment_ref Char
    size=32 states={'done': [('readonly', True)]} string='Payment Reference'
  • state Selection
    copy=False default='draft' index=True readonly=True string='State' track_visibility='onchange' args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
  • tax_receipt_id Many2one → donation.tax.receipt
    copy=False readonly=True string='Tax Receipt' track_visibility='onchange' args: 'donation.tax.receipt'
  • tax_receipt_option Selection
    index=True states={'done': [('readonly', True)]} string='Tax Receipt Option' track_visibility='onchange' args: [('none', 'None'), ('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
  • tax_receipt_total Monetary
    compute='_compute_total' currency_field='company_currency_id' help='Eligible Tax Receipt Sub-total in Company Currency' readonly=True store=True string='Tax Receipt Eligible Amount'
Public methods (9)
  • auto_install_l10n(self)
    @api.model
    Helper function for calling a method that is not accessible directly from XML data.
  • cancel2draft(self)
    @api.multi
    from Cancel state to Draft state
  • done2cancel(self)
    @api.multi
    from Done state to Cancel state
  • generate_each_tax_receipt(self)
    @api.multi
  • partner_id_change(self)
    @api.onchange('partner_id')
  • save_default_values(self)
    @api.multi
  • tax_receipt_option_change(self)
    @api.onchange('tax_receipt_option')
  • unlink(self)
    @api.multi
  • validate(self)
    @api.multi

New fields (13)
  • amount Monetary
    compute='_compute_amount' currency_field='currency_id' readonly=True store=True string='Amount'
  • amount_company_currency Monetary
    compute='_compute_amount' currency_field='company_currency_id' readonly=True store=True string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    domain=[('account_type', '!=', 'closed')] ondelete='restrict' string='Analytic Account' args: 'account.analytic.account'
  • company_currency_id Many2one → res.currency
    readonly=True related='donation_id.company_id.currency_id' args: 'res.currency'
  • currency_id Many2one → res.currency
    readonly=True related='donation_id.currency_id' args: 'res.currency'
  • donation_id Many2one → donation.donation
    ondelete='cascade' string='Donation' args: 'donation.donation'
  • in_kind Boolean
    readonly=True related='product_id.in_kind_donation' store=True string='In Kind'
  • product_id Many2one → product.product
    domain=[('donation', '=', True)] ondelete='restrict' required=True string='Product' args: 'product.product'
  • quantity Integer
    default=1 string='Quantity'
  • sequence Integer
    args: 'Sequence'
  • tax_receipt_amount Monetary
    compute='_compute_amount' currency_field='company_currency_id' readonly=True store=True string='Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    readonly=True related='product_id.tax_receipt_ok' store=True
  • unit_price Monetary
    currency_field='currency_id' string='Unit Price'
Public methods (2)
  • get_analytic_account_id(self)
    @api.model
  • product_id_change(self)
    @api.onchange('product_id')

New fields (12)
  • amount_company_currency Monetary
    currency_field='company_currency_id' readonly=True args: 'Amount'
  • campaign_id Many2one → donation.campaign
    readonly=True string='Donation Campaign' args: 'donation.campaign'
  • 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
    readonly=True string='Partner Country' args: 'res.country'
  • donation_date Date
    readonly=True string='Donation Date'
  • in_kind Boolean
    string='In Kind'
  • partner_id Many2one → res.partner
    readonly=True string='Donor' args: 'res.partner'
  • product_categ_id Many2one → product.category
    readonly=True string='Category of Product' args: 'product.category'
  • product_id Many2one → product.product
    readonly=True string='Product' args: 'product.product'
  • tax_receipt_amount Monetary
    currency_field='company_currency_id' readonly=True args: 'Tax Receipt Eligible Amount'
  • tax_receipt_ok Boolean
    string='Eligible for a Tax Receipt'
Public methods (1)
  • init(self, cr)

New fields (1)
  • donation_ids One2many → donation.donation
    string='Related Donations' args: 'donation.donation', 'tax_receipt_id'
Public methods (1)
  • update_tax_receipt_annual_dict(self, tax_receipt_annual_dict, start_date, end_date, precision_rounding)
    @api.model

New fields (2)
  • donation_id Many2one → donation.donation
    default=<expr> string='Donation' args: 'donation.donation'
  • new_tax_receipt_option Selection
    required=True string='Tax Receipt Option' args: [('each', 'For Each Donation'), ('annual', 'Annual Tax Receipt')]
Public methods (1)
  • switch(self)
    @api.multi

New fields (0)

No new fields.

Public methods (1)
  • run(self)
    @api.multi

New fields (2)
  • donation_count Integer
    compute='_compute_donation_count' readonly=True string='# of Donations'
  • donation_ids One2many → donation.donation
    readonly=True string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    string='Current Donation Campaign' args: 'donation.campaign'
  • context_donation_journal_id Many2one → account.journal
    company_dependent=True domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] string='Current Donation Payment Method' args: 'account.journal'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/donation
GIT
GIThttps://github.com/OCA/donation.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/donation/tree/8.0/donation
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYAccounting & Finance
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Barroux Abbey
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Barroux Abbey
COMMITTERS
COMMITTERSStéphane Bidoul, Alexis de Lattre, Stéphane Bidoul (ACSONE), Frère Bernard
WEBSITE
WEBSITEhttp://www.barroux.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - account_accountant
    - account_voucher
    - account
    - base_setup
    - base
    - web_kanban
    - web
    - product
    - decimal_precision
    - mail
    - report
    - analytic
    - board
    - edi
    - email_template
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
donation_campaign_form donation.campaign.form donation.campaign form New
donation_campaign_tree donation.campaign.tree donation.campaign tree New
donation_form donation.form donation.donation form New
donation_graph donation.graph donation.donation graph New
donation_line_form donation.line.form donation.line form New
donation_line_tree donation.line.tree donation.line tree New
donation_report_graph donation.report.graph donation.report graph New
donation_report_search donation.report.search donation.report search New
donation_search donation.search donation.donation search New
donation_tree donation.tree donation.donation tree New
donation_validate_form donation_validate.form donation.validate form New
product_template_form_view donation.product.template.form product.template div Inherits product.product_template_form_view
product_template_search_view donation.product.template.search product.template filter Inherits product.product_template_search_view
view_account_journal_form donation.account.journal.form account.journal Inherits account.view_account_journal_form
view_partner_form donation.button.res.partner.form res.partner Inherits base.view_partner_form
view_users_form donation.res.users.form res.users group Inherits base.view_users_form
view_users_form_simple_modif donation.preferences.res.users.form res.users group Inherits base.view_users_form_simple_modif
HTTP endpoints (0)

No HTTP endpoints found for this module.

Models touched (10)

New fields (1)
  • allow_donation Boolean
    string='Donation Payment Method'
Public methods (0)

No public methods.

New fields (5)
  • code Char
    size=10 string='Code'
  • display_name Char
    compute='_compute_display_name' readonly=True store=True string='Display Name'
  • name Char
    required=True string='Name'
  • nota Text
    string='Notes'
  • start_date Date
    default=fields.Date.context_today string='Start Date'
Public methods (0)

No public methods.

New fields (17)
  • amount_total Float
    compute='_compute_total' digits=dp.get_precision('Account') readonly=True store=True string='Amount Total'
  • amount_total_company_currency Float
    compute='_compute_total' digits=dp.get_precision('Account') readonly=True store=True string='Amount Total in Company Currency'
  • campaign_id Many2one → donation.campaign
    default=<expr> ondelete='restrict' string='Donation Campaign' track_visibility='onchange' args: 'donation.campaign'
  • check_total Float
    digits=dp.get_precision('Account') states={'done': [('readonly', True)]} string='Check Amount' track_visibility='onchange'
  • company_currency_id Many2one
    readonly=True related='company_id.currency_id' string='Company Currency'
  • company_id Many2one → res.company
    default=<expr> required=True states={'done': [('readonly', True)]} string='Company' args: 'res.company'
  • country_id Many2one → res.country
    compute='_compute_country_id' copy=False readonly=True store=True string='Country' args: 'res.country'
  • currency_id Many2one → res.currency
    default=_default_currency ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Currency' track_visibility='onchange' args: 'res.currency'
  • display_name Char
    compute='_compute_display_name' readonly=True string='Display Name'
  • donation_date Date
    required=True states={'done': [('readonly', True)]} string='Donation Date' track_visibility='onchange'
  • journal_id Many2one → account.journal
    default=<expr> domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] required=True states={'done': [('readonly', True)]} string='Payment Method' track_visibility='onchange' args: 'account.journal'
  • line_ids One2many → donation.line
    copy=True states={'done': [('readonly', True)]} string='Donation Lines' args: 'donation.line', 'donation_id'
  • move_id Many2one → account.move
    copy=False readonly=True string='Account Move' args: 'account.move'
  • number Char
    readonly=True related='move_id.name' size=64 store=True string='Donation Number'
  • partner_id Many2one → res.partner
    ondelete='restrict' required=True states={'done': [('readonly', True)]} string='Donor' track_visibility='onchange' args: 'res.partner'
  • payment_ref Char
    size=32 states={'done': [('readonly', True)]} string='Payment Reference'
  • state Selection
    copy=False default='draft' readonly=True string='State' track_visibility='onchange' args: [('draft', 'Draft'), ('done', 'Done'), ('cancel', 'Cancelled')]
Public methods (6)
  • cancel2draft(self)
    @api.one
    from Cancel state to Draft state
  • done2cancel(self)
    @api.one
    from Done state to Cancel state
  • partner_id_change(self)
    @api.onchange('partner_id')
  • save_default_values(self)
    @api.one
  • unlink(self)
    @api.multi
  • validate(self)
    @api.one

New fields (9)
  • amount Float
    compute='_compute_amount' digits=dp.get_precision('Account') store=True string='Amount'
  • amount_company_currency Float
    compute='_compute_amount_company_currency' digits=dp.get_precision('Account') store=True string='Amount in Company Currency'
  • analytic_account_id Many2one → account.analytic.account
    domain=[('type', 'not in', ('view', 'template'))] ondelete='restrict' string='Analytic Account' args: 'account.analytic.account'
  • donation_id Many2one → donation.donation
    ondelete='cascade' string='Donation' args: 'donation.donation'
  • in_kind Boolean
    string='In Kind'
  • product_id Many2one → product.product
    domain=[('donation', '=', True)] ondelete='restrict' required=True string='Product' args: 'product.product'
  • quantity Integer
    default=1 string='Quantity'
  • sequence Integer
    args: 'Sequence'
  • unit_price Float
    digits=dp.get_precision('Account') string='Unit Price'
Public methods (2)
  • get_analytic_account_id(self)
    @api.model
  • product_id_change(self)
    @api.onchange('product_id')

New fields (9)
  • amount_company_currency Float
    readonly=True args: 'Amount Company Currency'
  • campaign_id Many2one → donation.campaign
    readonly=True string='Donation Campaign' args: 'donation.campaign'
  • company_id Many2one → res.company
    readonly=True string='Company' args: 'res.company'
  • country_id Many2one → res.country
    readonly=True string='Partner Country' args: 'res.country'
  • donation_date Date
    readonly=True string='Donation Date'
  • in_kind Boolean
    string='In Kind'
  • partner_id Many2one → res.partner
    readonly=True string='Donor' args: 'res.partner'
  • product_categ_id Many2one → product.category
    readonly=True string='Category of Product' args: 'product.category'
  • product_id Many2one → product.product
    readonly=True string='Product' args: 'product.product'
Public methods (1)
  • init(self, cr)

New fields (0)

No new fields.

Public methods (1)
  • run(self)
    @api.one

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • donation Boolean
    help='Specify if the product can be selected in a donation line.' string='Is a Donation'
  • in_kind_donation Boolean
    string='In-Kind Donation'
Public methods (0)

No public methods.

New fields (2)
  • donation_count Integer
    compute='_donation_count' readonly=True string='# of Donations'
  • donation_ids One2many → donation.donation
    string='Donations' args: 'donation.donation', 'partner_id'
Public methods (0)

No public methods.

New fields (2)
  • context_donation_campaign_id Many2one → donation.campaign
    string='Current Donation Campaign' args: 'donation.campaign'
  • context_donation_journal_id Many2one → account.journal
    company_dependent=True domain=[('type', 'in', ('bank', 'cash')), ('allow_donation', '=', True)] string='Current Donation Payment Method' args: 'account.journal'
Public methods (0)

No public methods.