| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/rma |
| GIT | |
| GIT | https://github.com/OCA/rma.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/rma/tree/10.0/crm_claim_rma |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/CRM & SRM |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Camptocamp, MONK Software, Vauxoo, Eezee-it, Techspawn Solutions |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Camptocamp, MONK Software, Vauxoo, Eezee-it, Techspawn Solutions |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA-git-bot, Pierrick Brun |
| WEBSITE | |
| WEBSITE | https://github.com/OCA/rma |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/crm: - crm_claim_type - crm_claim - crm_claim_code OCA/rma: - crm_claim_rma_code - crm_rma_location - product_warranty odoo/odoo: - purchase - stock_account - stock - product - base - decimal_precision - base_setup - web_kanban - web - bus - web_tour - report - procurement - barcodes - web_planner - account - analytic - sale - sales_team - crm - base_action_rule - resource - calendar - web_calendar - fetchmail - utm |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
crm_case_claims_tree_view |
CRM - Claims Tree | crm.claim | field | Inherits crm_claim.crm_case_claims_tree_view |
crm_claim_line_form_view |
CRM - Claim product return line Form | claim.line | form | New |
crm_claim_line_tree_view |
CRM - Claims Tree | claim.line | tree | New |
crm_claim_rma_form |
CRM Claim RMA | crm.claim | xpath | Inherits crm_claim.crm_case_claims_form_view |
crm_claim_rma_form_view |
CRM - Claim product return Form | crm.claim | xpath | Inherits crm_claim.crm_case_claims_form_view |
invoice_form |
crm_claim_rma.invoice_form | account.invoice | data | Inherits account.invoice_form |
picking_in_form |
crm_claim_rma.picking_in_form | stock.picking | xpath | Inherits stock.view_picking_form |
search_crm_claim_rma_number |
CRM - Claims Search | crm.claim | xpath | Inherits crm_claim.view_crm_case_claims_filter |
stock_move_mail_thread |
stock_move_mail_thread | stock.move | xpath | Inherits stock.view_move_form |
tree_crm_claim_rma_number |
CRM - Claims Tree | crm.claim | xpath | Inherits crm_claim.crm_case_claims_tree_view |
view_claim_picking |
claim_picking | claim_make_picking.wizard | form | New |
view_crm_case_claims_filter |
CRM - Claims Search | crm.claim | xpath | Inherits crm_claim.view_crm_case_claims_filter |
view_crm_claim_lines_filter |
CRM - Claims Search | claim.line | search | New |
view_partner_contact_tree |
res.partner.contact.tree | res.partner | tree | New |
view_picking_internal_search_claim_id |
stock.picking.internal.search | stock.picking | xpath | Inherits stock.view_picking_internal_search |
claim_id
Many2one → crm.claim
string='Claim'
args: 'crm.claim'
No public methods.
No new fields.
Public methods (1)create(self, vals)
description
Char
default=_default_description
compute_refund(self, mode='refund')
applicable_guarantee
Selection
claim_diagnosis
Selection
help='To describe the line product diagnosis'
args: [('damaged', 'Product Damaged'), ('repaired', 'Product Repaired'), ('good', 'Product in good condition'), ('hidden', 'Product with hidden physical damage')]
claim_id
Many2one → crm.claim
help='To link to the case.claim object'
ondelete='cascade'
string='Related claim'
args: 'crm.claim'
claim_origin
Selection
help='To describe the line product problem'
required=False
args: SUBJECT_LIST, 'Claim Subject'
claim_type
Many2one
help='Claim classification'
related='claim_id.claim_type'
store=True
string='Claim Line Type'
company_id
Many2one → res.company
change_default=True
default=<expr>
readonly=False
string='Company'
args: 'res.company'
date
Date
default=fields.date.today()
index=True
args: 'Claim Line Date'
display_name
Char
compute='_compute_display_name'
args: 'Name'
guarantee_limit
Date
help='The warranty limit is computed as: invoice date + warranty defined on selected product.'
readonly=True
args: 'Warranty limit'
invoice_date
Datetime
help='Date of Claim Invoice'
related='invoice_line_id.invoice_id.create_date'
invoice_line_id
Many2one → account.invoice.line
help='The invoice line related to the returned product'
string='Invoice Line'
args: 'account.invoice.line'
last_state_change
Date
help='To set thelast state / substate change'
string='Last change'
location_dest_id
Many2one → stock.location
help='The return stock location of the returned product'
string='Return Stock Location'
args: 'stock.location'
move_in_id
Many2one → stock.move
help='The move line related to the returned product'
string='Move Line from picking in'
args: 'stock.move'
move_out_id
Many2one → stock.move
help='The move line related to the returned product'
string='Move Line from picking out'
args: 'stock.move'
name
Char
default='none'
help='More precise description of the problem'
required=False
args: 'Description'
number
Char
default='/'
help='Claim Line Identification Number'
readonly=True
priority
Selection
default='0_not_define'
help='Priority attention of claim line'
readonly=False
store=True
args: [('0_not_define', 'Not Define'), ('1_normal', 'Normal'), ('2_high', 'High'), ('3_very_high', 'Very High')], 'Priority'
prodlot_id
Many2one → stock.production.lot
help='The serial/lot of the returned product'
string='Serial/Lot number'
args: 'stock.production.lot'
product_id
Many2one → product.product
help='Returned product'
string='Product'
args: 'product.product'
product_returned_quantity
Float
digits=(12, 2)
help='Quantity of product returned'
args: 'Quantity'
refund_line_id
Many2one → account.invoice.line
help='The refund line related to the returned product'
string='Refund Line'
args: 'account.invoice.line'
return_value
Float
compute='_compute_line_total_amount'
help='Quantity returned * Unit sold price'
string='Total return'
state
Selection
default='draft'
string='State'
args: [('draft', 'Draft'), ('refused', 'Refused'), ('confirmed', 'Confirmed, waiting for product'), ('in_to_control', 'Received, to control'), ('in_to_treate', 'Controlled, to treate'), ('treated', 'Treated')]
substate_id
Many2one → substate.substate
help='Select a sub state to precise the standard state. Example 1: state = refused; substate could be warranty over, not in warranty, no problem,... . Example 2: state = to treate; substate could be to refund, to exchange, to repair,...'
string='Sub state'
args: 'substate.substate'
unit_sale_price
Float
digits=(12, 2)
help="Unit sale price of the product. Auto filled if retrun done by invoice selection. Be careful and check the automatic value as don't take into account previous refunds, invoice discount, can be for 0 if product for free,..."
warning
Selection
help='If warranty has expired'
readonly=True
args: WARRANT_COMMENT, 'Warranty'
warranty_return_partner
Many2one → res.partner
help='Where the customer has to send back the product(s)'
string='Warranty Address'
args: 'res.partner'
warranty_type
Selection
help='Who is in charge of the warranty return treatment towards the end customer. Company will use the current company delivery or default address and so on for supplier and brand manufacturer. Does not necessarily mean that the warranty to be applied is the one of the return partner (ie: can be returned to the company and be under the brand warranty'
args: get_warranty_return_partner
auto_set_warranty(self)
copy(self, default=None)
create(self, vals)
get_destination_location(self, product_id, warehouse_id)
get_warranty_return_partner(self)
set_warranty(self)
set_warranty_limit(self)
set_warranty_return_address(self)
warranty_limit(start, warranty_duration)
claim_line_dest_location_id
Many2one → stock.location
default=_default_claim_line_dest_location_id
help='Location where the system will stock the returned products.'
required=True
string='Dest. Location'
args: 'stock.location'
claim_line_ids
Many2many → claim.line
default=_default_claim_line_ids
string='Claim lines'
args: 'claim.line', 'claim_line_picking', 'claim_picking_id', 'claim_line_id'
claim_line_source_location_id
Many2one → stock.location
default=_default_claim_line_source_location_id
help='Location where the returned products are from.'
string='Source Location'
args: 'stock.location'
delivery_warehouse_id
Many2one → stock.warehouse
default=<expr>
help='Warehouse where to take the replacement products for customers.'
string='Source Warehouse'
args: 'stock.warehouse'
action_cancel(self)
action_create_picking(self)
claim_line_ids
One2many → claim.line
string='Return lines'
args: 'claim.line', 'claim_id'
claim_type
Many2one
default=_get_claim_type_default
help='Claim classification'
required=True
company_id
Many2one
change_default=True
default=<expr>
delivery_address_id
Many2one → res.partner
help='This address will be used to deliver repaired or replacement products.'
string='Partner delivery address'
args: 'res.partner'
invoice_id
Many2one → account.invoice
help='Related original Cusotmer invoice'
string='Invoice'
args: 'account.invoice'
invoice_ids
One2many → account.invoice
copy=False
args: 'account.invoice', 'claim_id', 'Refunds'
pick
Boolean
picking_ids
One2many → stock.picking
compute=_get_picking_ids
copy=False
string='RMA'
args: 'stock.picking'
planned_cost
Float
planned_revenue
Float
real_cost
Float
real_revenue
Float
rma_number
Char
help='RMA Number provided by supplier'
size=128
sequence
Integer
default=<expr>
warehouse_id
Many2one → stock.warehouse
default=_get_default_warehouse
required=True
string='Warehouse'
args: 'stock.warehouse'
copy(self, default=None)
create(self, values)
message_get_reply_to(self, res_ids, default=None)
message_get_suggested_recipients(self)
name_get(self)
claim_id
Many2one → crm.claim
No public methods.
No new fields.
Public methods (1)create(self, vals)
claim_id
Many2one → crm.claim
No public methods.
name
Char
required=True
args: 'Sub state'
substate_descr
Text
help='To give more information about the sub state'
args: 'Description'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/rma |
| GIT | |
| GIT | https://github.com/OCA/rma.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/rma/tree/9.0/crm_claim_rma |
| VERSION | |
| VERSION | 1.0.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/CRM & SRM |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Camptocamp, MONK Software, Vauxoo, Eezee-it |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Camptocamp, MONK Software, Vauxoo, Eezee-it |
| COMMITTERS | |
| COMMITTERS | Yannick Vaucher, Matthieu Dietrich, Pedro M. Baeza, GitHub, Stéphane Bidoul (ACSONE), OCA Transbot, oca-travis, OCA-git-bot, Cyril Gaudin |
| WEBSITE | |
| WEBSITE | https://odoo-community.org |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:23 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/crm: - crm_claim_type - crm_claim_code OCA/rma: - crm_claim_rma_code - crm_rma_location - product_warranty odoo/odoo: - purchase - stock_account - stock - product - base - decimal_precision - base_setup - web_kanban - web - bus - report - procurement - barcodes - web_planner - account - analytic - web_tip - sale - sales_team - crm_claim - crm - base_action_rule - resource - calendar - web_calendar - fetchmail - utm - marketing |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
crm_case_claims_tree_view |
CRM - Claims Tree | crm.claim | field | Inherits crm_claim.crm_case_claims_tree_view |
crm_claim_line_form_view |
CRM - Claim product return line Form | claim.line | form | New |
crm_claim_line_tree_view |
CRM - Claims Tree | claim.line | tree | New |
crm_claim_line_view_form_embedded |
Claim line form view to be used inside claim tree | claim.line | field | Inherits crm_claim_line_form_view |
crm_claim_rma_form |
CRM Claim RMA | crm.claim | data | Inherits crm_claim.crm_case_claims_form_view |
crm_claim_rma_form_view |
CRM - Claim product return Form | crm.claim | xpath | Inherits crm_claim.crm_case_claims_form_view |
invoice_form |
crm_claim_rma.invoice_form | account.invoice | data | Inherits account.invoice_form |
picking_in_form |
crm_claim_rma.picking_in_form | stock.picking | xpath | Inherits stock.view_picking_form |
search_crm_claim_rma_number |
CRM - Claims Search | crm.claim | xpath | Inherits crm_claim.view_crm_case_claims_filter |
stock_move_mail_thread |
stock_move_mail_thread | stock.move | xpath | Inherits stock.view_move_form |
tree_crm_claim_rma_number |
CRM - Claims Tree | crm.claim | xpath | Inherits crm_claim.crm_case_claims_tree_view |
view_claim_picking |
claim_picking | claim_make_picking.wizard | form | New |
view_crm_case_claims_filter |
CRM - Claims Search | crm.claim | xpath | Inherits crm_claim.view_crm_case_claims_filter |
view_crm_claim_lines_filter |
CRM - Claims Search | claim.line | search | New |
view_partner_contact_tree |
res.partner.contact.tree | res.partner | tree | New |
view_picking_internal_search_claim_id |
stock.picking.internal.search | stock.picking | xpath | Inherits stock.view_picking_internal_search |
claim_id
Many2one → crm.claim
string='Claim'
args: 'crm.claim'
No public methods.
No new fields.
Public methods (1)create(self, vals)
description
Char
default=_default_description
compute_refund(self, mode='refund')
applicable_guarantee
Selection
claim_diagnosis
Selection
help='To describe the line product diagnosis'
args: [('damaged', 'Product Damaged'), ('repaired', 'Product Repaired'), ('good', 'Product in good condition'), ('hidden', 'Product with hidden physical damage')]
claim_id
Many2one → crm.claim
help='To link to the case.claim object'
ondelete='cascade'
string='Related claim'
args: 'crm.claim'
claim_origin
Selection
help='To describe the line product problem'
required=True
args: SUBJECT_LIST, 'Claim Subject'
claim_type
Many2one
help='Claim classification'
related='claim_id.claim_type'
store=True
string='Claim Line Type'
company_id
Many2one → res.company
change_default=True
default=<expr>
readonly=False
string='Company'
args: 'res.company'
date
Date
default=fields.date.today()
select=True
args: 'Claim Line Date'
display_name
Char
compute='_get_display_name'
args: 'Name'
guarantee_limit
Date
help='The warranty limit is computed as: invoice date + warranty defined on selected product.'
readonly=True
args: 'Warranty limit'
invoice_date
Datetime
help='Date of Claim Invoice'
related='invoice_line_id.invoice_id.create_date'
invoice_line_id
Many2one → account.invoice.line
help='The invoice line related to the returned product'
string='Invoice Line'
args: 'account.invoice.line'
last_state_change
Date
help='To set thelast state / substate change'
string='Last change'
location_dest_id
Many2one → stock.location
help='The return stock location of the returned product'
string='Return Stock Location'
args: 'stock.location'
move_in_id
Many2one → stock.move
help='The move line related to the returned product'
string='Move Line from picking in'
args: 'stock.move'
move_out_id
Many2one → stock.move
help='The move line related to the returned product'
string='Move Line from picking out'
args: 'stock.move'
name
Char
default='none'
help='More precise description of the problem'
required=True
args: 'Description'
number
Char
default='/'
help='Claim Line Identification Number'
readonly=True
priority
Selection
compute='_compute_priority'
default='0_not_define'
help='Priority attention of claim line'
readonly=False
store=True
args: [('0_not_define', 'Not Define'), ('1_normal', 'Normal'), ('2_high', 'High'), ('3_very_high', 'Very High')], 'Priority'
prodlot_id
Many2one → stock.production.lot
help='The serial/lot of the returned product'
string='Serial/Lot number'
args: 'stock.production.lot'
product_id
Many2one → product.product
help='Returned product'
string='Product'
args: 'product.product'
product_returned_quantity
Float
digits=(12, 2)
help='Quantity of product returned'
args: 'Quantity'
refund_line_id
Many2one → account.invoice.line
help='The refund line related to the returned product'
string='Refund Line'
args: 'account.invoice.line'
return_value
Float
compute='_compute_line_total_amount'
help='Quantity returned * Unit sold price'
string='Total return'
state
Selection
default='draft'
string='State'
args: [('draft', 'Draft'), ('refused', 'Refused'), ('confirmed', 'Confirmed, waiting for product'), ('in_to_control', 'Received, to control'), ('in_to_treate', 'Controlled, to treate'), ('treated', 'Treated')]
substate_id
Many2one → substate.substate
help='Select a sub state to precise the standard state. Example 1: state = refused; substate could be warranty over, not in warranty, no problem,... . Example 2: state = to treate; substate could be to refund, to exchange, to repair,...'
string='Sub state'
args: 'substate.substate'
unit_sale_price
Float
digits=(12, 2)
help="Unit sale price of the product. Auto filled if retrun done by invoice selection. Be careful and check the automatic value as don't take into account previous refunds, invoice discount, can be for 0 if product for free,..."
warning
Selection
help='If warranty has expired'
readonly=True
args: WARRANT_COMMENT, 'Warranty'
warranty_return_partner
Many2one → res.partner
help='Where the customer has to send back the product(s)'
string='Warranty Address'
args: 'res.partner'
warranty_type
Selection
help='Who is in charge of the warranty return treatment towards the end customer. Company will use the current company delivery or default address and so on for supplier and brand manufacturer. Does not necessarily mean that the warranty to be applied is the one of the return partner (ie: can be returned to the company and be under the brand warranty'
readonly=True
args: get_warranty_return_partner
auto_set_warranty(self)
copy(self, default=None)
create(self, vals)
get_destination_location(self, product_id, warehouse_id)
get_warranty_return_partner(self)
set_warranty(self)
set_warranty_limit(self)
set_warranty_return_address(self)
warranty_limit(start, warranty_duration)
claim_line_dest_location_id
Many2one → stock.location
default=_default_claim_line_dest_location_id
help='Location where the system will stock the returned products.'
required=True
string='Dest. Location'
args: 'stock.location'
claim_line_ids
Many2many → claim.line
default=_default_claim_line_ids
string='Claim lines'
args: 'claim.line', 'claim_line_picking', 'claim_picking_id', 'claim_line_id'
claim_line_source_location_id
Many2one → stock.location
default=_default_claim_line_source_location_id
help='Location where the returned products are from.'
string='Source Location'
args: 'stock.location'
delivery_warehouse_id
Many2one → stock.warehouse
default=<expr>
help='Warehouse where to take the replacement products for customers.'
string='Source Warehouse'
args: 'stock.warehouse'
action_cancel(self)
action_create_picking(self)
claim_line_ids
One2many → claim.line
string='Return lines'
args: 'claim.line', 'claim_id'
claim_type
Many2one
default=_get_claim_type_default
help='Claim classification'
required=True
company_id
Many2one
change_default=True
default=<expr>
delivery_address_id
Many2one → res.partner
help='This address will be used to deliver repaired or replacement products.'
string='Partner delivery address'
args: 'res.partner'
invoice_id
Many2one → account.invoice
help='Related original Cusotmer invoice'
string='Invoice'
args: 'account.invoice'
invoice_ids
One2many → account.invoice
copy=False
args: 'account.invoice', 'claim_id', 'Refunds'
pick
Boolean
picking_ids
One2many → stock.picking
compute=_get_picking_ids
copy=False
string='RMA'
args: 'stock.picking'
planned_cost
Float
planned_revenue
Float
real_cost
Float
real_revenue
Float
rma_number
Char
help='RMA Number provided by supplier'
size=128
sequence
Integer
default=<expr>
warehouse_id
Many2one → stock.warehouse
default=_get_default_warehouse
required=True
string='Warehouse'
args: 'stock.warehouse'
copy(self, default=None)
create(self, values)
message_get_reply_to(self, res_ids, default=None)
message_get_suggested_recipients(self)
name_get(self)
claim_id
Many2one → crm.claim
No public methods.
No new fields.
Public methods (1)create(self, vals)
claim_id
Many2one → crm.claim
No public methods.
name
Char
required=True
args: 'Sub state'
substate_descr
Text
help='To give more information about the sub state'
args: 'Description'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/rma |
| GIT | |
| GIT | https://github.com/OCA/rma.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/rma/tree/8.0/crm_claim_rma |
| VERSION | |
| VERSION | 1.2.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/CRM & SRM |
| LICENSE | |
| LICENSE | AGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Camptocamp, MONK Software, Vauxoo, Eezee-it |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Camptocamp, MONK Software, Vauxoo, Eezee-it |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul, Yannick Vaucher, Alexandre Fayolle, Holger Brunn, GitHub, Stéphane Bidoul (ACSONE), Alex Comba, OCA Transbot, Hugo Santos, Leonardo Donelli, Damien Crier, StefanRijnhart, oca-travis, Weblate, OCA-git-bot, Yanina Aular (Vauxoo), jesusVMayor, Osval Reyes, Kalantojus Karolis, Aristobulo Meneses |
| WEBSITE | |
| WEBSITE | https://odoo-community.org |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:11:26 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/crm: - crm_claim_type - crm_claim_code OCA/rma: - crm_claim_rma_code - crm_rma_location - product_warranty odoo/odoo: - purchase - stock_account - stock - product - base - decimal_precision - base_setup - web_kanban - web - report - procurement - board - web_kanban_gauge - web_kanban_sparkline - account - analytic - edi - email_template - sale - sales_team - account_voucher - crm_claim - crm - base_action_rule - resource - calendar - web_calendar - fetchmail |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
crm_case_claims_form_view |
CRM - Claims Form | crm.claim | xpath | Inherits crm_claim_type.crm_case_claims_form_view |
crm_case_claims_tree_view |
CRM - Claims Tree | crm.claim | field | Inherits crm_claim.crm_case_claims_tree_view |
crm_claim_line_form_view |
CRM - Claim product return line Form | claim.line | form | New |
crm_claim_line_tree_view |
CRM - Claims Tree | claim.line | tree | New |
crm_claim_line_view_form_embedded |
Claim line form view to be used inside claim tree | claim.line | field | Inherits crm_claim_line_form_view |
crm_claim_rma_form |
CRM Claim RMA | crm.claim | data | Inherits crm_claim.crm_case_claims_form_view |
crm_claim_rma_form_view |
CRM - Claim product return Form | crm.claim | xpath | Inherits crm_claim.crm_case_claims_form_view |
invoice_form |
crm_claim_rma.invoice_form | account.invoice | data | Inherits account.invoice_form |
picking_in_form |
crm_claim_rma.picking_in_form | stock.picking | xpath | Inherits stock.view_picking_form |
search_crm_claim_rma_number |
CRM - Claims Search | crm.claim | xpath | Inherits crm_claim.view_crm_case_claims_filter |
stock_move_mail_thread |
stock_move_mail_thread | stock.move | xpath | Inherits stock.view_move_form |
tree_crm_claim_rma_number |
CRM - Claims Tree | crm.claim | xpath | Inherits crm_claim.crm_case_claims_tree_view |
view_claim_picking |
claim_picking | claim_make_picking.wizard | form | New |
view_crm_case_claims_filter |
CRM - Claims Search | crm.claim | filter | Inherits crm_claim.view_crm_case_claims_filter |
view_crm_claim_lines_filter |
CRM - Claims Search | claim.line | search | New |
view_partner_contact_tree |
res.partner.contact.tree | res.partner | tree | New |
view_picking_internal_search_claim_id |
stock.picking.internal.search | stock.picking | xpath | Inherits stock.view_picking_internal_search |
claim_id
Many2one → crm.claim
string='Claim'
args: 'crm.claim'
No public methods.
No new fields.
Public methods (1)create(self, vals)
description
Char
default=_default_description
compute_refund(self, mode='refund')
applicable_guarantee
Selection
claim_diagnosis
Selection
help='To describe the line product diagnosis'
args: [('damaged', 'Product Damaged'), ('repaired', 'Product Repaired'), ('good', 'Product in good condition'), ('hidden', 'Product with hidden physical damage')]
claim_id
Many2one → crm.claim
help='To link to the case.claim object'
ondelete='cascade'
string='Related claim'
args: 'crm.claim'
claim_origin
Selection
help='To describe the line product problem'
required=True
args: SUBJECT_LIST, 'Claim Subject'
claim_type
Many2one
help='Claim classification'
related='claim_id.claim_type'
store=True
string='Claim Line Type'
company_id
Many2one → res.company
change_default=True
default=_get_company_default
readonly=False
string='Company'
args: 'res.company'
date
Date
default=fields.date.today()
select=True
args: 'Claim Line Date'
display_name
Char
compute='_compute_get_display_name'
args: 'Name'
guarantee_limit
Date
help='The warranty limit is computed as: invoice date + warranty defined on selected product.'
readonly=True
args: 'Warranty limit'
invoice_date
Datetime
help='Date of Claim Invoice'
related='invoice_line_id.invoice_id.create_date'
invoice_line_id
Many2one → account.invoice.line
help='The invoice line related to the returned product'
string='Invoice Line'
args: 'account.invoice.line'
last_state_change
Date
help='To set thelast state / substate change'
string='Last change'
location_dest_id
Many2one → stock.location
help='The return stock location of the returned product'
string='Return Stock Location'
args: 'stock.location'
move_in_id
Many2one → stock.move
help='The move line related to the returned product'
string='Move Line from picking in'
args: 'stock.move'
move_out_id
Many2one → stock.move
help='The move line related to the returned product'
string='Move Line from picking out'
args: 'stock.move'
name
Char
default='none'
help='More precise description of the problem'
required=True
args: 'Description'
number
Char
default='/'
help='Claim Line Identification Number'
readonly=True
priority
Selection
compute='_compute_set_priority'
default='0_not_define'
help='Priority attention of claim line'
readonly=False
store=True
args: [('0_not_define', 'Not Define'), ('1_normal', 'Normal'), ('2_high', 'High'), ('3_very_high', 'Very High')], 'Priority'
prodlot_id
Many2one → stock.production.lot
help='The serial/lot of the returned product'
string='Serial/Lot number'
args: 'stock.production.lot'
product_id
Many2one → product.product
help='Returned product'
string='Product'
args: 'product.product'
product_returned_quantity
Float
digits=(12, 2)
help='Quantity of product returned'
args: 'Quantity'
refund_line_id
Many2one → account.invoice.line
help='The refund line related to the returned product'
string='Refund Line'
args: 'account.invoice.line'
return_value
Float
compute='_compute_line_total_amount'
help='Quantity returned * Unit sold price'
string='Total return'
state
Selection
default='draft'
string='State'
args: [('draft', 'Draft'), ('refused', 'Refused'), ('confirmed', 'Confirmed, waiting for product'), ('in_to_control', 'Received, to control'), ('in_to_treate', 'Controlled, to treate'), ('treated', 'Treated')]
substate_id
Many2one → substate.substate
help='Select a sub state to precise the standard state. Example 1: state = refused; substate could be warranty over, not in warranty, no problem,... . Example 2: state = to treate; substate could be to refund, to exchange, to repair,...'
string='Sub state'
args: 'substate.substate'
unit_sale_price
Float
digits=(12, 2)
help="Unit sale price of the product. Auto filled if retrun done by invoice selection. Be careful and check the automatic value as don't take into account previous refunds, invoice discount, can be for 0 if product for free,..."
warning
Selection
help='If warranty has expired'
readonly=True
args: WARRANT_COMMENT, 'Warranty'
warranty_return_partner
Many2one → res.partner
help='Where the customer has to send back the product(s)'
string='Warranty Address'
args: 'res.partner'
warranty_type
Selection
help='Who is in charge of the warranty return treatment towards the end customer. Company will use the current company delivery or default address and so on for supplier and brand manufacturer. Does not necessarily mean that the warranty to be applied is the one of the return partner (ie: can be returned to the company and be under the brand warranty'
readonly=True
args: get_warranty_return_partner
auto_set_warranty(self)
copy(self, default=None)
create(self, vals)
get_destination_location(self, product_id, warehouse_id)
get_warranty_return_partner(self)
set_warranty(self)
set_warranty_limit(self)
set_warranty_return_address(self)
warranty_limit(start, warranty_duration)
claim_line_dest_location_id
Many2one → stock.location
default=_default_claim_line_dest_location_id
help='Location where the system will stock the returned products.'
required=True
string='Dest. Location'
args: 'stock.location'
claim_line_ids
Many2many → claim.line
default=_default_claim_line_ids
string='Claim lines'
args: 'claim.line', 'claim_line_picking', 'claim_picking_id', 'claim_line_id'
claim_line_source_location_id
Many2one → stock.location
default=_default_claim_line_source_location_id
help='Location where the returned products are from.'
string='Source Location'
args: 'stock.location'
delivery_warehouse_id
Many2one → stock.warehouse
default=<expr>
help='Warehouse where to take the replacement products for customers.'
string='Source Warehouse'
args: 'stock.warehouse'
action_cancel(self)
action_create_picking(self)
claim_line_ids
One2many → claim.line
string='Return lines'
args: 'claim.line', 'claim_id'
claim_type
Many2one
default=_get_claim_type_default
help='Claim classification'
required=True
company_id
Many2one
change_default=True
default=_get_company_default
delivery_address_id
Many2one → res.partner
help='This address will be used to deliver repaired or replacement products.'
string='Partner delivery address'
args: 'res.partner'
invoice_id
Many2one → account.invoice
help='Related original Cusotmer invoice'
string='Invoice'
args: 'account.invoice'
invoice_ids
One2many → account.invoice
copy=False
args: 'account.invoice', 'claim_id', 'Refunds'
pick
Boolean
picking_ids
One2many → stock.picking
compute=_get_picking_ids
copy=False
string='RMA'
args: 'stock.picking'
planned_cost
Float
planned_revenue
Float
real_cost
Float
real_revenue
Float
rma_number
Char
help='RMA Number provided by supplier'
size=128
sequence
Integer
default=<expr>
warehouse_id
Many2one → stock.warehouse
default=_get_default_warehouse
required=True
string='Warehouse'
args: 'stock.warehouse'
copy(self, default=None)
create(self, values)
message_get_reply_to(self)
message_get_suggested_recipients(self)
name_get(self)
claim_id
Many2one → crm.claim
No public methods.
No new fields.
Public methods (1)create(self, vals)
claim_id
Many2one → crm.claim
No public methods.
name
Char
required=True
args: 'Sub state'
substate_descr
Text
help='To give more information about the sub state'
args: 'Description'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/rma |
| GIT | |
| GIT | https://github.com/OCA/rma.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/rma/tree/7.0/crm_claim_rma |
| VERSION | |
| VERSION | 1.1 |
| CATEGORY | |
| CATEGORY | Generic Modules/CRM & SRM |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), Akretion, Camptocamp |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), Akretion, Camptocamp |
| COMMITTERS | |
| COMMITTERS | Benoit Guillot, Yannick Vaucher, Romain Deheele, Guewen Baconnier, Alexandre Fayolle, Matthieu Dietrich, Joël Grand-Guillaume, Joao Alfredo Gama Batista, Joel Grand-Guillaume, Leonardo Pistone, Maxime Chambreuil, Pedro M. Baeza, unknown, Florian da Costa, Launchpad Translations on behalf of openerprma |
| WEBSITE | |
| WEBSITE | http://www.akretion.com, http://www.camptocamp.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:07:16 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/rma: - product_warranty odoo/odoo: - sale - account_voucher - account - base_setup - base - web_kanban - web - product - process - decimal_precision - analytic - board - edi - email_template - stock - crm_claim - crm - base_action_rule - base_status - base_calendar - resource - fetchmail |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Management of Return Merchandise Authorization (RMA)
====================================================
This module aims to improve the Claims by adding a way to manage the
product returns. It allows you to create and manage picking from a
claim. It also introduces a new object: the claim lines to better
handle that problematic. One Claim can have several lines that
concern the return of differents products. It's for every of them
that you'll be able to check the warranty (still running or not).
It mainly contains the following features:
* product returns (one by one, mass return by invoice)
* warranty control & return address (based on invoice date and product form)
* product picking in / out
* product refund
* access to related customer data (orders, invoices, refunds, picking
in/out) from a claim
* use the OpenERP chatter within team like in opportunity (reply to refer to
the team, not a person)
Using this module makes the logistic flow of return this way:
* Returning product goes into Stock or Supplier location with a incoming
shipment (depending on the settings of the supplier info in the
product form)
* You can make a delivery from the RMA to send a new product to the Customer
.. warning:: Currently, the warranty duration used is the one configured on the
products today, not the one which was configured when the product
has been sold.
Contributors:
-------------
* Emmanuel Samyn <esamyn@gmail.com>
* Sébastien Beau <sebastien.beau@akretion.com.br>
* Benoît Guillot <benoit.guillot@akretion.com.br>
* Joel Grand-Guillaume <joel.grandguillaume@camptocamp.com>
* Guewen Baconnier <guewen.baconnier@camptocamp.com>
* Yannick Vaucher <yannick.vaucher@camptocamp.com>
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
crm_case_claims_form_view_replace |
CRM - Claims Form | crm.claim | field | Inherits crm_claim.crm_case_claims_form_view |
crm_case_claims_tree_view |
CRM - Claims Tree | crm.claim | field | Inherits crm_claim.crm_case_claims_tree_view |
crm_claim_line_form_view |
CRM - Claim product return line Form | claim.line | form | New |
crm_claim_line_tree_view |
CRM - Claims Tree | claim.line | tree | New |
crm_claim_rma_form_view |
CRM - Claim product return Form | crm.claim | page | Inherits crm_claim.crm_case_claims_form_view |
crm_claim_rma_form_view2 |
CRM - Claim product return Form | crm.claim | field | Inherits crm_claim.crm_case_claims_form_view |
invoice_form |
crm_claim_rma.invoice_form | account.invoice | data | Inherits account.invoice_form |
picking_in_form |
crm_claim_rma.picking_in_form | stock.picking.in | xpath | Inherits stock.view_picking_in_form |
picking_out_form |
crm_claim_rma.picking_out_form | stock.picking.out | xpath | Inherits stock.view_picking_out_form |
view_claim_picking |
claim_picking | claim_make_picking.wizard | form | New |
view_crm_case_claims_filter |
CRM - Claims Search | crm.claim | field | Inherits crm_claim.view_crm_case_claims_filter |
view_crm_claim_lines_filter |
CRM - Claims Search | claim.line | search | New |
view_partner_contact_tree |
res.partner.contact.tree | res.partner | tree | New |
view_picking_in_search |
crm_claim_rma.picking_in_search | stock.picking.in | filter | Inherits stock.view_picking_in_search |
view_picking_out_search |
crm_claim_rma.picking_out_search | stock.picking.out | filter | Inherits stock.view_picking_out_search |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)create(self, cr, uid, vals, context=None)
No new fields.
Public methods (1)compute_refund(self, cr, uid, ids, mode='refund', context=None)
No new fields.
Public methods (9)auto_set_warranty(self, cr, uid, ids, context)
copy_data(self, cr, uid, id, default=None, context=None)
get_destination_location(self, cr, uid, product_id, warehouse_id, context=None)
get_warranty_return_partner(self, cr, uid, context=None)
onchange_product_id(self, cr, uid, ids, product_id, invoice_line_id, claim_id, company_id, warehouse_id, claim_type, claim_date, context=None)
set_warranty(self, cr, uid, ids, context=None)
set_warranty_limit(self, cr, uid, ids, claim_line, context=None)
set_warranty_return_address(self, cr, uid, ids, claim_line, context=None)
warranty_limit(start, warranty_duration)
No new fields.
Public methods (2)action_cancel(self, cr, uid, ids, context=None)
action_create_picking(self, cr, uid, ids, context=None)
No new fields.
Public methods (8)copy_data(self, cr, uid, id, default=None, context=None)
create(self, cr, uid, vals, context=None)
init(self, cr)
message_get_reply_to(self, cr, uid, ids, context=None)
message_get_suggested_recipients(self, cr, uid, ids, context=None)
name_get(self, cr, uid, ids, context=None)
onchange_invoice_id(self, cr, uid, ids, invoice_id, warehouse_id, claim_type, claim_date, company_id, lines, create_lines=False, context=None)
onchange_partner_address_id(self, cr, uid, ids, add, email=False, context=None)
No new fields.
Public methods (1)create(self, cr, uid, vals, context=None)
No new fields.
Public methods (1)create(self, cr, uid, vals, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/rma |
| GIT | |
| GIT | https://github.com/OCA/rma.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/rma/tree/6.1/crm_claim_rma |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Generic Modules/CRM & SRM |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | No |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo Community Association (OCA), esamyn |
| MAINTAINERS | |
| MAINTAINERS | Odoo Community Association (OCA), esamyn |
| COMMITTERS | |
| COMMITTERS | Benoit Guillot, Alexandre Fayolle, sebastien beau, Angel Moya, manu, davidbeal |
| WEBSITE | |
| WEBSITE | http://www.erp-236.com |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:04:07 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/rma: - product_warranty odoo/odoo: - sale - stock - product - base - process - decimal_precision - account - base_setup - analytic - board - edi - email_template - base_tools - procurement - crm_claim - crm - base_action_rule - base_calendar - resource - fetchmail |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Akretion - Emmanuel Samyn
Management of Return Merchandise Authorization (RMA) in OpenERP.
Upgrade the standard crm_claim module to add :
* product returns (one by one, mass return by lot, mass return by invoice)
* warranty control & return address (based on invoice date and product form)
* product picking in / out
* product refund
* product exchange
* access to related customer data (orders, invoices, refunds, picking in/out)
THIS MODULE REPLACES Akretion stock_rma from V6.0
WARNING : To use the module in V6.1 you need a refactor of the function refund
in the module account from the addons. You can find the refactor at the revisions 6933 and 6934
on this branch : https://code.launchpad.net/~akretion-team/openobject-addons/openobject-addons-61-akretion
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
crm_claim_line_form_view |
CRM - Claim product return line Form | claim.line | form | New |
crm_claim_line_tree_view |
CRM - Claims Tree | claim.line | tree | New |
crm_claim_rma.company_form |
crm_claim_rma.company_form | res.company | data | Inherits base.view_company_form |
crm_claim_rma.invoice_form |
crm_claim_rma.invoice_form | account.invoice | data | Inherits account.invoice_form |
crm_claim_rma.picking_in_form |
crm_claim_rma.picking_in_form | stock.picking | data | Inherits stock.view_picking_in_form |
crm_claim_rma.picking_out_form |
crm_claim_rma.picking_out_form | stock.picking | data | Inherits stock.view_picking_out_form |
crm_claim_rma.warehouse_form |
crm_claim_rma.warehouse_form | stock.warehouse | data | Inherits stock.view_warehouse |
crm_claim_rma_form_view |
CRM - Claim product return Form | crm.claim | xpath | Inherits crm_claim.crm_case_claims_form_view |
crm_claim_rma_form_view2 |
CRM - Claim product return Form | crm.claim | field | Inherits crm_claim.crm_case_claims_form_view |
crm_picking_follow_form_view |
CRM - Picking follow Form | picking.follow | form | New |
crm_picking_follow_tree_view |
CRM - Picking follow Tree | picking.follow | tree | New |
view_claim_picking |
claim_picking | claim_make_picking.wizard | form | New |
view_claim_picking_from_picking |
claim_picking | claim_make_picking_from_picking.wizard | form | New |
view_create_return_serial_form |
returned_lines_from_serial_wiew | returned_lines_from_serial.wizard | form | New |
view_crm_claim_lines_filter |
CRM - Claims Search | claim.line | search | New |
view_get_empty_serial |
get_empty_serial | get_empty_serial.wizard | form | New |
view_picking_in_search |
crm_claim_rma.picking_in_search | stock.picking | filter | Inherits stock.view_picking_in_search |
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)create(self, cr, uid, vals, context=None)
No new fields.
Public methods (3)set_warranty(self, cr, uid, ids, context=None)
set_warranty_limit(self, cr, uid, ids, context, claim_line)
set_warranty_return_address(self, cr, uid, ids, context, claim_line)
No new fields.
Public methods (2)action_cancel(self, cr, uid, ids, conect=None)
action_create_picking(self, cr, uid, ids, context=None)
No new fields.
Public methods (2)action_cancel(self, cr, uid, ids, conect=None)
action_create_picking_from_picking(self, cr, uid, ids, context=None)
No new fields.
Public methods (3)onchange_invoice_id(self, cr, uid, ids, invoice_id, context=None)
onchange_partner_address_id(self, cr, uid, ids, add, email=False)
onchange_partner_id(self, cr, uid, ids, part, email=False)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)create(self, cr, uid, vals, context=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.