mirror of
https://github.com/OCA/rma.git
synced 2025-02-16 17:11:47 +02:00
[PRT] Move modules to __unported__ for 8.0 branch creation
This commit is contained in:
23
__unported__/crm_claim_categ_as_name/__init__.py
Normal file
23
__unported__/crm_claim_categ_as_name/__init__.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
###############################################################################
|
||||
#
|
||||
# Module for OpenERP
|
||||
# Copyright (C) 2012-2014 Akretion. All Rights Reserved
|
||||
# @author Benoît GUILLOT <benoit.guillot@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
from . import claim
|
||||
43
__unported__/crm_claim_categ_as_name/__openerp__.py
Normal file
43
__unported__/crm_claim_categ_as_name/__openerp__.py
Normal file
@@ -0,0 +1,43 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
###############################################################################
|
||||
#
|
||||
# Module for OpenERP
|
||||
# Copyright (C) 2012-2014 Akretion. All Rights Reserved
|
||||
# @author Benoît GUILLOT <benoit.guillot@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
{
|
||||
'name': 'crm_claim_categ_as_name',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'license': 'AGPL-3',
|
||||
'description':
|
||||
"""
|
||||
Replace claim name by category. It makes easier to filter on claims.
|
||||
""",
|
||||
'author': 'akretion',
|
||||
'website': 'http://www.akretion.com/',
|
||||
'depends': ['crm_claim_rma'],
|
||||
'data': [
|
||||
'claim_view.xml',
|
||||
],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
44
__unported__/crm_claim_categ_as_name/claim.py
Normal file
44
__unported__/crm_claim_categ_as_name/claim.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
###############################################################################
|
||||
#
|
||||
# Module for OpenERP
|
||||
# Copyright (C) 2012-2014 Akretion. All Rights Reserved
|
||||
# @author Benoît GUILLOT <benoit.guillot@akretion.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
from openerp.osv import fields, orm
|
||||
|
||||
|
||||
class crm_claim(orm.Model):
|
||||
_inherit = 'crm.claim'
|
||||
|
||||
_columns = {
|
||||
'name': fields.related(
|
||||
'categ_id',
|
||||
'name',
|
||||
relation='crm.case.categ',
|
||||
type='char',
|
||||
string='Claim Subject',
|
||||
size=128,
|
||||
store=True),
|
||||
'categ_id': fields.many2one(
|
||||
'crm.case.categ',
|
||||
'Category',
|
||||
domain="[('section_id', '=', section_id), \
|
||||
('object_id.model', '=', 'crm.claim')]",
|
||||
required=True),
|
||||
}
|
||||
25
__unported__/crm_claim_categ_as_name/claim_view.xml
Normal file
25
__unported__/crm_claim_categ_as_name/claim_view.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
crm_claim_categ_as_name for OpenERP
|
||||
Copyright (C) 2012-2014 Akretion Benoît GUILLOT <benoit.guillot@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="crm_claim_rma_form_view">
|
||||
<field name="name">CRM - Claim product return Form</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim_rma.crm_claim_rma_form_view2"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="name" position="replace">
|
||||
<field name="categ_id" string="Name"/>
|
||||
</field>
|
||||
<xpath expr="/form/sheet/group/notebook/page[@string='Claim Description']/group/field[@name='categ_id']" position="replace">
|
||||
<field name="name" invisible="1"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
26
__unported__/crm_claim_rma/__init__.py
Normal file
26
__unported__/crm_claim_rma/__init__.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
|
||||
# Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from . import wizard
|
||||
from . import crm_claim_rma
|
||||
from . import account_invoice
|
||||
from . import stock
|
||||
94
__unported__/crm_claim_rma/__openerp__.py
Normal file
94
__unported__/crm_claim_rma/__openerp__.py
Normal file
@@ -0,0 +1,94 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
|
||||
# Benoît Guillot, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
{
|
||||
'name': 'RMA Claim (Product Return Management)',
|
||||
'version': '1.1',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'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>
|
||||
|
||||
""",
|
||||
'author': 'Akretion, Camptocamp',
|
||||
'website': 'http://www.akretion.com, http://www.camptocamp.com',
|
||||
'depends': ['sale',
|
||||
'stock',
|
||||
'crm_claim',
|
||||
'product_warranty',
|
||||
],
|
||||
'data': ['wizard/claim_make_picking_view.xml',
|
||||
'crm_claim_rma_view.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'account_invoice_view.xml',
|
||||
'stock_view.xml',
|
||||
'res_partner_view.xml',
|
||||
'crm_claim_rma_data.xml',
|
||||
],
|
||||
'test': ['test/test_invoice_refund.yml'],
|
||||
'images': ['images/product_return.png',
|
||||
'images/claim.png',
|
||||
'images/return_line.png',
|
||||
'images/exchange.png',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
}
|
||||
109
__unported__/crm_claim_rma/account_invoice.py
Normal file
109
__unported__/crm_claim_rma/account_invoice.py
Normal file
@@ -0,0 +1,109 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
|
||||
# Benoît Guillot, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from openerp.osv import fields, orm
|
||||
from tools.translate import _
|
||||
|
||||
|
||||
class account_invoice(orm.Model):
|
||||
|
||||
_inherit = "account.invoice"
|
||||
|
||||
_columns = {
|
||||
'claim_id': fields.many2one('crm.claim', 'Claim'),
|
||||
}
|
||||
|
||||
def _refund_cleanup_lines(self, cr, uid, lines, context=None):
|
||||
""" Override when from claim to update the quantity and link to the
|
||||
claim line."""
|
||||
if context is None:
|
||||
context = {}
|
||||
new_lines = []
|
||||
inv_line_obj = self.pool.get('account.invoice.line')
|
||||
claim_line_obj = self.pool.get('claim.line')
|
||||
# check if is an invoice_line and we are from a claim
|
||||
if not (context.get('claim_line_ids') and lines and
|
||||
lines[0]._name == 'account.invoice.line'):
|
||||
return super(account_invoice, self)._refund_cleanup_lines(
|
||||
cr, uid, lines, context=None)
|
||||
|
||||
for __, claim_line_id, __ in context.get('claim_line_ids'):
|
||||
line = claim_line_obj.browse(cr, uid, claim_line_id,
|
||||
context=context)
|
||||
if not line.refund_line_id:
|
||||
# For each lines replace quantity and add claim_line_id
|
||||
inv_line = inv_line_obj.browse(cr, uid,
|
||||
line.invoice_line_id.id,
|
||||
context=context)
|
||||
clean_line = {}
|
||||
for field_name, field in inv_line._all_columns.iteritems():
|
||||
column_type = field.column._type
|
||||
if column_type == 'many2one':
|
||||
clean_line[field_name] = inv_line[field_name].id
|
||||
elif column_type not in ('many2many', 'one2many'):
|
||||
clean_line[field_name] = inv_line[field_name]
|
||||
elif field_name == 'invoice_line_tax_id':
|
||||
tax_list = []
|
||||
for tax in inv_line[field_name]:
|
||||
tax_list.append(tax.id)
|
||||
clean_line[field_name] = [(6, 0, tax_list)]
|
||||
clean_line['quantity'] = line['product_returned_quantity']
|
||||
clean_line['claim_line_id'] = [claim_line_id]
|
||||
new_lines.append(clean_line)
|
||||
if not new_lines:
|
||||
# TODO use custom states to show button of this wizard or
|
||||
# not instead of raise an error
|
||||
raise orm.except_orm(
|
||||
_('Error !'),
|
||||
_('A refund has already been created for this claim !'))
|
||||
return [(0, 0, l) for l in new_lines]
|
||||
|
||||
def _prepare_refund(self, cr, uid, invoice, date=None, period_id=None,
|
||||
description=None, journal_id=None, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
result = super(account_invoice, self)._prepare_refund(
|
||||
cr, uid, invoice,
|
||||
date=date, period_id=period_id, description=description,
|
||||
journal_id=journal_id, context=context)
|
||||
if context.get('claim_id'):
|
||||
result['claim_id'] = context['claim_id']
|
||||
return result
|
||||
|
||||
|
||||
class account_invoice_line(orm.Model):
|
||||
|
||||
_inherit = "account.invoice.line"
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
claim_line_id = False
|
||||
if vals.get('claim_line_id'):
|
||||
claim_line_id = vals['claim_line_id']
|
||||
del vals['claim_line_id']
|
||||
line_id = super(account_invoice_line, self).create(
|
||||
cr, uid, vals, context=context)
|
||||
if claim_line_id:
|
||||
claim_line_obj = self.pool.get('claim.line')
|
||||
claim_line_obj.write(cr, uid, claim_line_id,
|
||||
{'refund_line_id': line_id},
|
||||
context=context)
|
||||
return line_id
|
||||
20
__unported__/crm_claim_rma/account_invoice_view.xml
Normal file
20
__unported__/crm_claim_rma/account_invoice_view.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- INHERITED VIEW FOR THE OBJECT : account_invoice -->
|
||||
|
||||
<record id="invoice_form" model="ir.ui.view">
|
||||
<field name="name">crm_claim_rma.invoice_form</field>
|
||||
<field name="model">account.invoice</field>
|
||||
<field name="inherit_id" ref="account.invoice_form" />
|
||||
<field eval="16" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="/form/sheet/notebook/page[@string='Other Info']/group/group/field[@name='origin']" position="after">
|
||||
<field name="claim_id" attrs="{'invisible':[('type','!=','out_refund')]}"/>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
680
__unported__/crm_claim_rma/crm_claim_rma.py
Normal file
680
__unported__/crm_claim_rma/crm_claim_rma.py
Normal file
@@ -0,0 +1,680 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
|
||||
# Benoît Guillot, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import calendar
|
||||
import math
|
||||
from openerp.osv import fields, orm, osv
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from openerp.tools import (DEFAULT_SERVER_DATE_FORMAT,
|
||||
DEFAULT_SERVER_DATETIME_FORMAT)
|
||||
from openerp.tools.translate import _
|
||||
from openerp import SUPERUSER_ID
|
||||
|
||||
|
||||
class InvoiceNoDate(Exception):
|
||||
""" Raised when a warranty cannot be computed for a claim line
|
||||
because the invoice has no date. """
|
||||
|
||||
|
||||
class ProductNoSupplier(Exception):
|
||||
""" Raised when a warranty cannot be computed for a claim line
|
||||
because the product has no supplier. """
|
||||
|
||||
|
||||
class substate_substate(orm.Model):
|
||||
""" To precise a state (state=refused; substates= reason 1, 2,...) """
|
||||
_name = "substate.substate"
|
||||
_description = "substate that precise a given state"
|
||||
_columns = {
|
||||
'name': fields.char('Sub state', required=True),
|
||||
'substate_descr': fields.text(
|
||||
'Description',
|
||||
help="To give more information about the sub state"),
|
||||
}
|
||||
|
||||
|
||||
class claim_line(orm.Model):
|
||||
"""
|
||||
Class to handle a product return line (corresponding to one invoice line)
|
||||
"""
|
||||
_name = "claim.line"
|
||||
_description = "List of product to return"
|
||||
|
||||
# Comment written in a claim.line to know about the warranty status
|
||||
WARRANT_COMMENT = {
|
||||
'valid': "Valid",
|
||||
'expired': "Expired",
|
||||
'not_define': "Not Defined"}
|
||||
|
||||
# Method to calculate total amount of the line : qty*UP
|
||||
def _line_total_amount(self, cr, uid, ids, field_name, arg, context=None):
|
||||
res = {}
|
||||
for line in self.browse(cr, uid, ids, context=context):
|
||||
res[line.id] = (line.unit_sale_price *
|
||||
line.product_returned_quantity)
|
||||
return res
|
||||
|
||||
def copy_data(self, cr, uid, id, default=None, context=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
std_default = {
|
||||
'move_in_id': False,
|
||||
'move_out_id': False,
|
||||
'refund_line_id': False,
|
||||
}
|
||||
std_default.update(default)
|
||||
return super(claim_line, self).copy_data(
|
||||
cr, uid, id, default=std_default, context=context)
|
||||
|
||||
def get_warranty_return_partner(self, cr, uid, context=None):
|
||||
seller = self.pool.get('product.supplierinfo')
|
||||
result = seller.get_warranty_return_partner(cr, uid, context=context)
|
||||
return result
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Description', required=True),
|
||||
'claim_origine': fields.selection(
|
||||
[('none', 'Not specified'),
|
||||
('legal', 'Legal retractation'),
|
||||
('cancellation', 'Order cancellation'),
|
||||
('damaged', 'Damaged delivered product'),
|
||||
('error', 'Shipping error'),
|
||||
('exchange', 'Exchange request'),
|
||||
('lost', 'Lost during transport'),
|
||||
('other', 'Other')
|
||||
],
|
||||
'Claim Subject',
|
||||
required=True,
|
||||
help="To describe the line product problem"),
|
||||
'claim_descr': fields.text(
|
||||
'Claim description',
|
||||
help="More precise description of the problem"),
|
||||
'product_id': fields.many2one(
|
||||
'product.product',
|
||||
string='Product',
|
||||
help="Returned product"),
|
||||
'product_returned_quantity': fields.float(
|
||||
'Quantity', digits=(12, 2),
|
||||
help="Quantity of product returned"),
|
||||
'unit_sale_price': fields.float(
|
||||
'Unit sale price', 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,..."),
|
||||
'return_value': fields.function(
|
||||
_line_total_amount, string='Total return', type='float',
|
||||
help="Quantity returned * Unit sold price",),
|
||||
'prodlot_id': fields.many2one(
|
||||
'stock.production.lot',
|
||||
string='Serial/Lot n°',
|
||||
help="The serial/lot of the returned product"),
|
||||
'applicable_guarantee': fields.selection(
|
||||
[('us', 'Company'),
|
||||
('supplier', 'Supplier'),
|
||||
('brand', 'Brand manufacturer')],
|
||||
'Warranty type'),
|
||||
'guarantee_limit': fields.date(
|
||||
'Warranty limit',
|
||||
readonly=True,
|
||||
help="The warranty limit is computed as: invoice date + warranty "
|
||||
"defined on selected product."),
|
||||
'warning': fields.char(
|
||||
'Warranty',
|
||||
readonly=True,
|
||||
help="If warranty has expired"),
|
||||
'warranty_type': fields.selection(
|
||||
get_warranty_return_partner,
|
||||
'Warranty type',
|
||||
readonly=True,
|
||||
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"),
|
||||
'warranty_return_partner': fields.many2one(
|
||||
'res.partner',
|
||||
string='Warranty Address',
|
||||
help="Where the customer has to send back the product(s)"),
|
||||
'claim_id': fields.many2one(
|
||||
'crm.claim', string='Related claim',
|
||||
help="To link to the case.claim object"),
|
||||
'state': fields.selection(
|
||||
[('draft', 'Draft'),
|
||||
('refused', 'Refused'),
|
||||
('confirmed', 'Confirmed, waiting for product'),
|
||||
('in_to_control', 'Received, to control'),
|
||||
('in_to_treate', 'Controlled, to treate'),
|
||||
('treated', 'Treated')],
|
||||
string='State'),
|
||||
'substate_id': fields.many2one(
|
||||
'substate.substate',
|
||||
string='Sub state',
|
||||
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,..."),
|
||||
'last_state_change': fields.date(
|
||||
string='Last change',
|
||||
help="To set the last state / substate change"),
|
||||
'invoice_line_id': fields.many2one(
|
||||
'account.invoice.line',
|
||||
string='Invoice Line',
|
||||
help='The invoice line related to the returned product'),
|
||||
'refund_line_id': fields.many2one(
|
||||
'account.invoice.line',
|
||||
string='Refund Line',
|
||||
help='The refund line related to the returned product'),
|
||||
'move_in_id': fields.many2one(
|
||||
'stock.move',
|
||||
string='Move Line from picking in',
|
||||
help='The move line related to the returned product'),
|
||||
'move_out_id': fields.many2one(
|
||||
'stock.move',
|
||||
string='Move Line from picking out',
|
||||
help='The move line related to the returned product'),
|
||||
'location_dest_id': fields.many2one(
|
||||
'stock.location',
|
||||
string='Return Stock Location',
|
||||
help='The return stock location of the returned product'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'state': 'draft',
|
||||
'name': 'none',
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def warranty_limit(start, warranty_duration):
|
||||
""" Take a duration in float, return the duration in relativedelta
|
||||
|
||||
``relative_delta(months=...)`` only accepts integers.
|
||||
We have to extract the decimal part, and then, extend the delta with
|
||||
days.
|
||||
|
||||
"""
|
||||
decimal_part, months = math.modf(warranty_duration)
|
||||
months = int(months)
|
||||
# If we have a decimal part, we add the number them as days to
|
||||
# the limit. We need to get the month to know the number of
|
||||
# days.
|
||||
delta = relativedelta(months=months)
|
||||
monthday = start + delta
|
||||
__, days_month = calendar.monthrange(monthday.year, monthday.month)
|
||||
# ignore the rest of the days (hours) since we expect a date
|
||||
days = int(days_month * decimal_part)
|
||||
return start + relativedelta(months=months, days=days)
|
||||
|
||||
def _warranty_limit_values(self, cr, uid, ids, invoice,
|
||||
claim_type, product, claim_date,
|
||||
context=None):
|
||||
if not (invoice and claim_type and product and claim_date):
|
||||
return {'guarantee_limit': False, 'warning': False}
|
||||
date_invoice = invoice.date_invoice
|
||||
if not date_invoice:
|
||||
raise InvoiceNoDate
|
||||
warning = _(self.WARRANT_COMMENT['not_define'])
|
||||
date_invoice = datetime.strptime(date_invoice,
|
||||
DEFAULT_SERVER_DATE_FORMAT)
|
||||
if claim_type == 'supplier':
|
||||
suppliers = product.seller_ids
|
||||
if not suppliers:
|
||||
raise ProductNoSupplier
|
||||
supplier = suppliers[0]
|
||||
warranty_duration = supplier.warranty_duration
|
||||
else:
|
||||
warranty_duration = product.warranty
|
||||
limit = self.warranty_limit(date_invoice, warranty_duration)
|
||||
if warranty_duration > 0:
|
||||
claim_date = datetime.strptime(claim_date,
|
||||
DEFAULT_SERVER_DATETIME_FORMAT)
|
||||
if limit < claim_date:
|
||||
warning = _(self.WARRANT_COMMENT['expired'])
|
||||
else:
|
||||
warning = _(self.WARRANT_COMMENT['valid'])
|
||||
return {'guarantee_limit': limit.strftime(DEFAULT_SERVER_DATE_FORMAT),
|
||||
'warning': warning}
|
||||
|
||||
def set_warranty_limit(self, cr, uid, ids, claim_line, context=None):
|
||||
claim = claim_line.claim_id
|
||||
invoice = claim.invoice_id
|
||||
claim_type = claim.claim_type
|
||||
claim_date = claim.date
|
||||
product = claim_line.product_id
|
||||
try:
|
||||
values = self._warranty_limit_values(cr, uid, ids, invoice,
|
||||
claim_type, product,
|
||||
claim_date,
|
||||
context=context)
|
||||
except InvoiceNoDate:
|
||||
raise orm.except_orm(
|
||||
_('Error'),
|
||||
_('Cannot find any date for invoice. '
|
||||
'Must be a validated invoice.'))
|
||||
except ProductNoSupplier:
|
||||
raise orm.except_orm(
|
||||
_('Error'),
|
||||
_('The product has no supplier configured.'))
|
||||
self.write(cr, uid, ids, values, context=context)
|
||||
return True
|
||||
|
||||
def auto_set_warranty(self, cr, uid, ids, context):
|
||||
""" Set warranty automatically
|
||||
if the user has not himself pressed on 'Calculate warranty state'
|
||||
button, it sets warranty for him"""
|
||||
for line in self.browse(cr, uid, ids, context=context):
|
||||
if not line.warning:
|
||||
self.set_warranty(cr, uid, [line.id], context=context)
|
||||
return True
|
||||
|
||||
def get_destination_location(self, cr, uid, product_id,
|
||||
warehouse_id, context=None):
|
||||
"""Compute and return the destination location ID to take
|
||||
for a return. Always take 'Supplier' one when return type different
|
||||
from company."""
|
||||
prod = False
|
||||
if product_id:
|
||||
prod_obj = self.pool.get('product.product')
|
||||
prod = prod_obj.browse(cr, uid, product_id, context=context)
|
||||
wh_obj = self.pool.get('stock.warehouse')
|
||||
wh = wh_obj.browse(cr, uid, warehouse_id, context=context)
|
||||
location_dest_id = wh.lot_stock_id.id
|
||||
if prod:
|
||||
seller = prod.seller_info_id
|
||||
if seller:
|
||||
return_type = seller.warranty_return_partner
|
||||
if return_type != 'company':
|
||||
location_dest_id = seller.name.property_stock_supplier.id
|
||||
return location_dest_id
|
||||
|
||||
def onchange_product_id(self, cr, uid, ids, product_id, invoice_line_id,
|
||||
claim_id, company_id, warehouse_id,
|
||||
claim_type, claim_date, context=None):
|
||||
if not claim_id and not (company_id and warehouse_id and
|
||||
claim_type and claim_date):
|
||||
# if we have a claim_id, we get the info from there,
|
||||
# otherwise we get it from the args (on creation typically)
|
||||
return {}
|
||||
if not (product_id and invoice_line_id):
|
||||
return {}
|
||||
product_obj = self.pool['product.product']
|
||||
claim_obj = self.pool['crm.claim']
|
||||
invoice_line_obj = self.pool['account.invoice.line']
|
||||
claim_line_obj = self.pool.get('claim.line')
|
||||
product = product_obj.browse(cr, uid, product_id, context=context)
|
||||
invoice_line = invoice_line_obj.browse(cr, uid, invoice_line_id,
|
||||
context=context)
|
||||
invoice = invoice_line.invoice_id
|
||||
|
||||
if claim_id:
|
||||
claim = claim_obj.browse(cr, uid, claim_id, context=context)
|
||||
company = claim.company_id
|
||||
warehouse = claim.warehouse_id
|
||||
claim_type = claim.claim_type
|
||||
claim_date = claim.date
|
||||
else:
|
||||
warehouse_obj = self.pool['stock.warehouse']
|
||||
company_obj = self.pool['res.company']
|
||||
company = company_obj.browse(cr, uid, company_id, context=context)
|
||||
warehouse = warehouse_obj.browse(cr, uid, warehouse_id,
|
||||
context=context)
|
||||
|
||||
values = {}
|
||||
try:
|
||||
warranty = claim_line_obj._warranty_limit_values(
|
||||
cr, uid, [], invoice,
|
||||
claim_type, product,
|
||||
claim_date, context=context)
|
||||
except (InvoiceNoDate, ProductNoSupplier):
|
||||
# we don't mind at this point if the warranty can't be
|
||||
# computed and we don't want to block the user
|
||||
values.update({'guarantee_limit': False, 'warning': False})
|
||||
else:
|
||||
values.update(warranty)
|
||||
|
||||
warranty_address = claim_line_obj._warranty_return_address_values(
|
||||
cr, uid, [], product, company, warehouse, context=context)
|
||||
values.update(warranty_address)
|
||||
return {'value': values}
|
||||
|
||||
def _warranty_return_address_values(self, cr, uid, ids, product, company,
|
||||
warehouse, context=None):
|
||||
"""Return the partner to be used as return destination and
|
||||
the destination stock location of the line in case of return.
|
||||
|
||||
We can have various case here:
|
||||
- company or other: return to company partner or
|
||||
crm_return_address_id if specified
|
||||
- supplier: return to the supplier address
|
||||
|
||||
"""
|
||||
if not (product and company and warehouse):
|
||||
return {'warranty_return_partner': False,
|
||||
'warranty_type': False,
|
||||
'location_dest_id': False}
|
||||
return_address = None
|
||||
seller = product.seller_info_id
|
||||
if seller:
|
||||
return_address_id = seller.warranty_return_address.id
|
||||
return_type = seller.warranty_return_partner
|
||||
else:
|
||||
# when no supplier is configured, returns to the company
|
||||
return_address = (company.crm_return_address_id or
|
||||
company.partner_id)
|
||||
return_address_id = return_address.id
|
||||
return_type = 'company'
|
||||
location_dest_id = self.get_destination_location(
|
||||
cr, uid, product.id, warehouse.id, context=context)
|
||||
return {'warranty_return_partner': return_address_id,
|
||||
'warranty_type': return_type,
|
||||
'location_dest_id': location_dest_id}
|
||||
|
||||
def set_warranty_return_address(self, cr, uid, ids, claim_line,
|
||||
context=None):
|
||||
claim = claim_line.claim_id
|
||||
product = claim_line.product_id
|
||||
company = claim.company_id
|
||||
warehouse = claim.warehouse_id
|
||||
values = self._warranty_return_address_values(
|
||||
cr, uid, ids, product, company, warehouse, context=context)
|
||||
self.write(cr, uid, ids, values, context=context)
|
||||
return True
|
||||
|
||||
def set_warranty(self, cr, uid, ids, context=None):
|
||||
""" Calculate warranty limit and address """
|
||||
for claim_line in self.browse(cr, uid, ids, context=context):
|
||||
if not (claim_line.product_id and claim_line.invoice_line_id):
|
||||
raise orm.except_orm(
|
||||
_('Error !'),
|
||||
_('Please set product and invoice.'))
|
||||
self.set_warranty_limit(cr, uid, ids,
|
||||
claim_line, context=context)
|
||||
self.set_warranty_return_address(cr, uid, ids,
|
||||
claim_line, context=context)
|
||||
return True
|
||||
|
||||
|
||||
# TODO add the option to split the claim_line in order to manage the same
|
||||
# product separately
|
||||
class crm_claim(orm.Model):
|
||||
_inherit = 'crm.claim'
|
||||
|
||||
def init(self, cr):
|
||||
cr.execute("""
|
||||
UPDATE "crm_claim" SET "number"=id::varchar
|
||||
WHERE ("number" is NULL)
|
||||
OR ("number" = '/');
|
||||
""")
|
||||
|
||||
def _get_sequence_number(self, cr, uid, context=None):
|
||||
seq_obj = self.pool.get('ir.sequence')
|
||||
res = seq_obj.get(cr, uid, 'crm.claim.rma', context=context) or '/'
|
||||
return res
|
||||
|
||||
def _get_default_warehouse(self, cr, uid, context=None):
|
||||
user_obj = self.pool.get('res.users')
|
||||
user = user_obj.browse(cr, uid, uid, context=context)
|
||||
company_id = user.company_id.id
|
||||
wh_obj = self.pool.get('stock.warehouse')
|
||||
wh_ids = wh_obj.search(cr, uid,
|
||||
[('company_id', '=', company_id)],
|
||||
context=context)
|
||||
if not wh_ids:
|
||||
raise orm.except_orm(
|
||||
_('Error!'),
|
||||
_('There is no warehouse for the current user\'s company.'))
|
||||
return wh_ids[0]
|
||||
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
res = []
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
for claim in self.browse(cr, uid, ids, context=context):
|
||||
number = claim.number and str(claim.number) or ''
|
||||
res.append((claim.id, '[' + number + '] ' + claim.name))
|
||||
return res
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
if ('number' not in vals) or (vals.get('number') == '/'):
|
||||
vals['number'] = self._get_sequence_number(cr, uid,
|
||||
context=context)
|
||||
new_id = super(crm_claim, self).create(cr, uid, vals, context=context)
|
||||
return new_id
|
||||
|
||||
def copy_data(self, cr, uid, id, default=None, context=None):
|
||||
if default is None:
|
||||
default = {}
|
||||
std_default = {
|
||||
'invoice_ids': False,
|
||||
'picking_ids': False,
|
||||
'number': self._get_sequence_number(cr, uid, context=context),
|
||||
}
|
||||
std_default.update(default)
|
||||
return super(crm_claim, self).copy_data(
|
||||
cr, uid, id, default=std_default, context=context)
|
||||
|
||||
_columns = {
|
||||
'number': fields.char(
|
||||
'Number', readonly=True,
|
||||
states={'draft': [('readonly', False)]},
|
||||
required=True,
|
||||
select=True,
|
||||
help="Company internal claim unique number"),
|
||||
'claim_type': fields.selection(
|
||||
[('customer', 'Customer'),
|
||||
('supplier', 'Supplier'),
|
||||
('other', 'Other')],
|
||||
string='Claim type',
|
||||
required=True,
|
||||
help="Customer: from customer to company.\n "
|
||||
"Supplier: from company to supplier."),
|
||||
'claim_line_ids': fields.one2many(
|
||||
'claim.line', 'claim_id',
|
||||
string='Return lines'),
|
||||
'planned_revenue': fields.float('Expected revenue'),
|
||||
'planned_cost': fields.float('Expected cost'),
|
||||
'real_revenue': fields.float('Real revenue'),
|
||||
'real_cost': fields.float('Real cost'),
|
||||
'invoice_ids': fields.one2many(
|
||||
'account.invoice', 'claim_id', 'Refunds'),
|
||||
'picking_ids': fields.one2many('stock.picking', 'claim_id', 'RMA'),
|
||||
'invoice_id': fields.many2one(
|
||||
'account.invoice', string='Invoice',
|
||||
help='Related original Cusotmer invoice'),
|
||||
'delivery_address_id': fields.many2one(
|
||||
'res.partner', string='Partner delivery address',
|
||||
help="This address will be used to deliver repaired or replacement"
|
||||
"products."),
|
||||
'warehouse_id': fields.many2one(
|
||||
'stock.warehouse', string='Warehouse',
|
||||
required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'number': '/',
|
||||
'claim_type': 'customer',
|
||||
'warehouse_id': _get_default_warehouse,
|
||||
}
|
||||
|
||||
_sql_constraints = [
|
||||
('number_uniq', 'unique(number, company_id)',
|
||||
'Number/Reference must be unique per Company!'),
|
||||
]
|
||||
|
||||
def onchange_partner_address_id(self, cr, uid, ids, add, email=False,
|
||||
context=None):
|
||||
res = super(crm_claim, self
|
||||
).onchange_partner_address_id(cr, uid, ids, add,
|
||||
email=email)
|
||||
if add:
|
||||
if (not res['value']['email_from']
|
||||
or not res['value']['partner_phone']):
|
||||
partner_obj = self.pool.get('res.partner')
|
||||
address = partner_obj.browse(cr, uid, add, context=context)
|
||||
for other_add in address.partner_id.address:
|
||||
if other_add.email and not res['value']['email_from']:
|
||||
res['value']['email_from'] = other_add.email
|
||||
if other_add.phone and not res['value']['partner_phone']:
|
||||
res['value']['partner_phone'] = other_add.phone
|
||||
return res
|
||||
|
||||
def onchange_invoice_id(self, cr, uid, ids, invoice_id, warehouse_id,
|
||||
claim_type, claim_date, company_id, lines,
|
||||
create_lines=False, context=None):
|
||||
invoice_line_obj = self.pool.get('account.invoice.line')
|
||||
invoice_obj = self.pool.get('account.invoice')
|
||||
product_obj = self.pool['product.product']
|
||||
claim_line_obj = self.pool.get('claim.line')
|
||||
company_obj = self.pool['res.company']
|
||||
warehouse_obj = self.pool['stock.warehouse']
|
||||
invoice_line_ids = invoice_line_obj.search(
|
||||
cr, uid,
|
||||
[('invoice_id', '=', invoice_id)],
|
||||
context=context)
|
||||
claim_lines = []
|
||||
value = {}
|
||||
if not warehouse_id:
|
||||
warehouse_id = self._get_default_warehouse(cr, uid,
|
||||
context=context)
|
||||
invoice_lines = invoice_line_obj.browse(cr, uid, invoice_line_ids,
|
||||
context=context)
|
||||
|
||||
def warranty_values(invoice, product):
|
||||
values = {}
|
||||
try:
|
||||
warranty = claim_line_obj._warranty_limit_values(
|
||||
cr, uid, [], invoice,
|
||||
claim_type, product,
|
||||
claim_date, context=context)
|
||||
except (InvoiceNoDate, ProductNoSupplier):
|
||||
# we don't mind at this point if the warranty can't be
|
||||
# computed and we don't want to block the user
|
||||
values.update({'guarantee_limit': False, 'warning': False})
|
||||
else:
|
||||
values.update(warranty)
|
||||
company = company_obj.browse(cr, uid, company_id, context=context)
|
||||
warehouse = warehouse_obj.browse(cr, uid, warehouse_id,
|
||||
context=context)
|
||||
warranty_address = claim_line_obj._warranty_return_address_values(
|
||||
cr, uid, [], product, company,
|
||||
warehouse, context=context)
|
||||
values.update(warranty_address)
|
||||
return values
|
||||
|
||||
if create_lines: # happens when the invoice is changed
|
||||
for invoice_line in invoice_lines:
|
||||
location_dest_id = claim_line_obj.get_destination_location(
|
||||
cr, uid, invoice_line.product_id.id,
|
||||
warehouse_id, context=context)
|
||||
line = {
|
||||
'name': invoice_line.name,
|
||||
'claim_origine': "none",
|
||||
'invoice_line_id': invoice_line.id,
|
||||
'product_id': invoice_line.product_id.id,
|
||||
'product_returned_quantity': invoice_line.quantity,
|
||||
'unit_sale_price': invoice_line.price_unit,
|
||||
'location_dest_id': location_dest_id,
|
||||
'state': 'draft',
|
||||
}
|
||||
line.update(warranty_values(invoice_line.invoice_id,
|
||||
invoice_line.product_id))
|
||||
claim_lines.append(line)
|
||||
elif lines: # happens when the date, warehouse or claim type is
|
||||
# modified
|
||||
for command in lines:
|
||||
code = command[0]
|
||||
assert code != 6, "command 6 not supported in on_change"
|
||||
if code in (0, 1, 4):
|
||||
# 0: link a new record with values
|
||||
# 1: update an existing record with values
|
||||
# 4: link to existing record
|
||||
line_id = command[1]
|
||||
if code == 4:
|
||||
code = 1 # we want now to update values
|
||||
values = {}
|
||||
else:
|
||||
values = command[2]
|
||||
invoice_line_id = values.get('invoice_line_id')
|
||||
product_id = values.get('product_id')
|
||||
if code == 1: # get the existing line
|
||||
# if the fields have not changed, fallback
|
||||
# on the database values
|
||||
browse_line = claim_line_obj.read(cr, uid,
|
||||
line_id,
|
||||
['invoice_line_id',
|
||||
'product_id'],
|
||||
context=context)
|
||||
if not invoice_line_id:
|
||||
invoice_line_id = browse_line['invoice_line_id'][0]
|
||||
if not product_id:
|
||||
product_id = browse_line['product_id'][0]
|
||||
|
||||
if invoice_line_id and product_id:
|
||||
invoice_line = invoice_line_obj.browse(cr, uid,
|
||||
invoice_line_id,
|
||||
context=context)
|
||||
product = product_obj.browse(cr, uid, product_id,
|
||||
context=context)
|
||||
values.update(warranty_values(invoice_line.invoice_id,
|
||||
product))
|
||||
claim_lines.append((code, line_id, values))
|
||||
elif code in (2, 3, 5):
|
||||
claim_lines.append(command)
|
||||
|
||||
value = {'claim_line_ids': claim_lines}
|
||||
delivery_address_id = False
|
||||
if invoice_id:
|
||||
invoice = invoice_obj.browse(cr, uid, invoice_id, context=context)
|
||||
delivery_address_id = invoice.partner_id.id
|
||||
value['delivery_address_id'] = delivery_address_id
|
||||
|
||||
return {'value': value}
|
||||
|
||||
def message_get_reply_to(self, cr, uid, ids, context=None):
|
||||
""" Override to get the reply_to of the parent project. """
|
||||
return [claim.section_id.message_get_reply_to()[0]
|
||||
if claim.section_id else False
|
||||
for claim in self.browse(cr, SUPERUSER_ID, ids,
|
||||
context=context)]
|
||||
|
||||
def message_get_suggested_recipients(self, cr, uid, ids, context=None):
|
||||
recipients = super(crm_claim, self
|
||||
).message_get_suggested_recipients(cr, uid, ids,
|
||||
context=context)
|
||||
try:
|
||||
for claim in self.browse(cr, uid, ids, context=context):
|
||||
if claim.partner_id:
|
||||
self._message_add_suggested_recipient(
|
||||
cr, uid, recipients, claim,
|
||||
partner=claim.partner_id, reason=_('Customer'))
|
||||
elif claim.email_from:
|
||||
self._message_add_suggested_recipient(
|
||||
cr, uid, recipients, claim,
|
||||
email=claim.email_from, reason=_('Customer Email'))
|
||||
except (osv.except_osv, orm.except_orm):
|
||||
# no read access rights -> just ignore suggested recipients
|
||||
# because this imply modifying followers
|
||||
pass
|
||||
return recipients
|
||||
104
__unported__/crm_claim_rma/crm_claim_rma_data.xml
Normal file
104
__unported__/crm_claim_rma/crm_claim_rma_data.xml
Normal file
@@ -0,0 +1,104 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<!-- Claims Sequence n° -->
|
||||
<record id="seq_type_claim" model="ir.sequence.type">
|
||||
<field name="name">CRM Claim</field>
|
||||
<field name="code">crm.claim.rma</field>
|
||||
</record>
|
||||
|
||||
<record id="seq_claim" model="ir.sequence">
|
||||
<field name="name">CRM Claim</field>
|
||||
<field name="code">crm.claim.rma</field>
|
||||
<field eval="5" name="padding"/>
|
||||
<field name="prefix">RMA-%(year)s/</field>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Claim sections
|
||||
-->
|
||||
|
||||
<record model="crm.case.section" id="section_after_sales_service">
|
||||
<field name="name">After Sales Service</field>
|
||||
<field name="code">ASV</field>
|
||||
<field name="parent_id" ref="crm.section_sales_department"/>
|
||||
<!-- <field name="stage_ids" eval="[(4, ref('crm_claim.stage_claim1')), (4, ref('crm_claim.stage_claim2')), (4, ref('crm_claim.stage_claim3')), (4, ref('crm_claim.stage_claim5'))]"/> -->
|
||||
</record>
|
||||
|
||||
<!--
|
||||
Claim categories
|
||||
-->
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim10">
|
||||
<field name="name">No Inventory</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim11">
|
||||
<field name="name">Customer Return</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim12">
|
||||
<field name="name">Buyer Cancelled</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim13">
|
||||
<field name="name">General Adjustement</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim14">
|
||||
<field name="name">Could Not Ship</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim15">
|
||||
<field name="name">Different Item</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim16">
|
||||
<field name="name">Merchandise Not Received</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim17">
|
||||
<field name="name">Merchandise Not As Described</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim18">
|
||||
<field name="name">Pricing Error</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim19">
|
||||
<field name="name">Shipping Address Undeliverable</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim20">
|
||||
<field name="name">Delivered Late by Carrier</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
|
||||
<record model="crm.case.categ" id="categ_claim21">
|
||||
<field name="name">Missed Fulfilment Promise</field>
|
||||
<field name="section_id" ref="section_after_sales_service"/>
|
||||
<field name="object_id" search="[('model','=','crm.claim')]" model="ir.model"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
418
__unported__/crm_claim_rma/crm_claim_rma_view.xml
Normal file
418
__unported__/crm_claim_rma/crm_claim_rma_view.xml
Normal file
@@ -0,0 +1,418 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Return line -->
|
||||
<!-- SEARCH -->
|
||||
<record id="view_crm_claim_lines_filter" model="ir.ui.view">
|
||||
<field name="name">CRM - Claims Search</field>
|
||||
<field name="model">claim.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Claims">
|
||||
<filter icon="terp-check" string="Current" name="current"
|
||||
domain="[('state','in',('draft', 'refused', 'treated'))]"
|
||||
separator="1" help="Draft and Open Claims" />
|
||||
<filter icon="terp-camera_test"
|
||||
string="In Progress"
|
||||
domain="[('state','in',('confirmed','in_to_control','in_to_treate'))]"
|
||||
separator="1" help="In Progress Claims"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="state" select='1'/>
|
||||
<field name="substate_id" select='1'/>
|
||||
<field name="name" select='1'/>
|
||||
<field name="warning" select='1'/>
|
||||
<field name="invoice_line_id" select='1'/>
|
||||
<field name="product_id" select='1'/>
|
||||
<field name="prodlot_id" select='1'/>
|
||||
<newline/>
|
||||
<group expand="0" string="More">
|
||||
<field name="last_state_change" select='1'/>
|
||||
<field name="guarantee_limit" select='1'/>
|
||||
<field name="return_value" select='1'/>
|
||||
<field name="name" select='1'/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="Invoice" icon="terp-dolar"
|
||||
domain="[]" help="Invoice"
|
||||
context="{'group_by':'invoice_id'}" />
|
||||
<filter string="Product" icon="terp-product"
|
||||
domain="[]" help="Product"
|
||||
context="{'group_by':'product_id'}" />
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="Substate" icon="terp-stage"
|
||||
domain="[]" context="{'group_by':'substate_id'}" />
|
||||
<filter string="Claim n°" icon="terp-emblem-documents"
|
||||
domain="[]" context="{'group_by':'claim_id'}" />
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- TREE -->
|
||||
<record model="ir.ui.view" id="crm_claim_line_tree_view">
|
||||
<field name="name">CRM - Claims Tree</field>
|
||||
<field name="model">claim.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Returned lines">
|
||||
<field name="claim_id" invisible="1"/>
|
||||
<field name="state"/>
|
||||
<field name="substate_id"/>
|
||||
<field name="product_id"/>
|
||||
<field name="name"/>
|
||||
<field name="prodlot_id"/>
|
||||
<field name="warning"/>
|
||||
<field name="warranty_type"/>
|
||||
<field name="warranty_return_partner"/>
|
||||
<button name="set_warranty" string="Compute Waranty" type="object" icon="gtk-justify-fill"/>
|
||||
<field name="product_returned_quantity"/>
|
||||
<field name="claim_origine"/>
|
||||
<field name="refund_line_id"/>
|
||||
<field name="move_in_id"/>
|
||||
<field name="move_out_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- FORM -->
|
||||
<record model="ir.ui.view" id="crm_claim_line_form_view">
|
||||
<field name="name">CRM - Claim product return line Form</field>
|
||||
<field name="model">claim.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Claim Line" version="7.0">
|
||||
<header>
|
||||
<button name="set_warranty" string="Calculate warranty state" type="object" class="oe_highlight"/>
|
||||
</header>
|
||||
<sheet string="Claims">
|
||||
<div class="oe_title">
|
||||
<group>
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1><field name="name"/></h1>
|
||||
</group>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Returned good">
|
||||
<field name="product_returned_quantity"/>
|
||||
<field name="product_id"
|
||||
on_change="onchange_product_id(product_id, invoice_line_id, claim_id, False, False, False, False, context)"/>
|
||||
<field name="prodlot_id"/>
|
||||
<field name="unit_sale_price"/>
|
||||
<field name="return_value"/>
|
||||
</group>
|
||||
<group string="Linked Document">
|
||||
<field name="claim_id" />
|
||||
<field name="invoice_line_id"
|
||||
on_change="onchange_product_id(product_id, invoice_line_id, claim_id, False, False, False, False, context)"/>
|
||||
<field name="refund_line_id"/>
|
||||
<field name="move_in_id"/>
|
||||
<field name="move_out_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Problem">
|
||||
<field name="claim_origine" nolabel="1" colspan="4"/>
|
||||
<field name="claim_descr" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
<group string="Warranty">
|
||||
<field name="guarantee_limit"/>
|
||||
<field name="warning"/>
|
||||
<field name="warranty_return_partner"/>
|
||||
<field name="warranty_type"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="State" colspan="4"/>
|
||||
<group col="6" colspan="4">
|
||||
<field name="state"/>
|
||||
<field name="substate_id" widget='selection' />
|
||||
<field name="last_state_change"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- CLAIM VIEWS -->
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_claims_tree_view">
|
||||
<field name="name">CRM - Claims Tree</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim.crm_case_claims_tree_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="stage_id" position="after">
|
||||
<field name="section_id" />
|
||||
</field>
|
||||
<field name="name" position="before">
|
||||
<field name="number" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_claims_form_view_replace">
|
||||
<field name="name">CRM - Claims Form</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim.crm_case_claims_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.claim')]" position="replace">
|
||||
<field name="categ_id" />
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="crm_claim_rma_form_view">
|
||||
<field name="name">CRM - Claim product return Form</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim.crm_case_claims_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Follow Up" position="before">
|
||||
<page string="Product Return">
|
||||
<group name="Product Return">
|
||||
<separator string="Product Return" colspan="4"/>
|
||||
<group>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="invoice_id" on_change="onchange_invoice_id(invoice_id, warehouse_id, claim_type, date, company_id, claim_line_ids, True, context)" domain="['|',('commercial_partner_id','=',partner_id),('partner_id','=',partner_id)]" />
|
||||
<field name="delivery_address_id" context="{'tree_view_ref': 'crm_claim_rma.view_partner_contact_tree', 'search_default_parent_id': partner_id}"/>
|
||||
</group>
|
||||
<group>
|
||||
<!-- Place for mass return button from crm_rma_lot_mass_return -->
|
||||
</group>
|
||||
<field name="claim_line_ids" nolabel="1" colspan="4" editable="top">
|
||||
<form string="Claim Line" version="7.0">
|
||||
<header>
|
||||
<button name="set_warranty" string="Calculate warranty state" type="object" class="oe_highlight"/>
|
||||
</header>
|
||||
<sheet string="Claims">
|
||||
<div class="oe_title">
|
||||
<group>
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1><field name="name"/></h1>
|
||||
</group>
|
||||
</div>
|
||||
<group>
|
||||
<group string="Returned good">
|
||||
<field name="product_returned_quantity"/>
|
||||
<field name="product_id"
|
||||
on_change="onchange_product_id(product_id, invoice_line_id, False, parent.company_id, parent.warehouse_id, parent.claim_type, parent.date, context)"/>
|
||||
<field name="prodlot_id"/>
|
||||
<field name="unit_sale_price"/>
|
||||
<field name="return_value"/>
|
||||
</group>
|
||||
<group string="Linked Document">
|
||||
<field name="invoice_line_id"
|
||||
on_change="onchange_product_id(product_id, invoice_line_id, False, parent.company_id, parent.warehouse_id, parent.claim_type, parent.date, context)"/>
|
||||
<field name="refund_line_id"/>
|
||||
<field name="move_in_id"/>
|
||||
<field name="move_out_id"/>
|
||||
</group>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Problem">
|
||||
<field name="claim_origine" nolabel="1" colspan="4"/>
|
||||
<field name="claim_descr" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
<group string="Warranty">
|
||||
<field name="guarantee_limit"/>
|
||||
<field name="warning"/>
|
||||
<field name="warranty_return_partner"/>
|
||||
<field name="warranty_type"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="State" colspan="4"/>
|
||||
<group col="6" colspan="4">
|
||||
<field name="state"/>
|
||||
<field name="substate_id" widget='selection' />
|
||||
<field name="last_state_change"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</group>
|
||||
<group col="4" colspan="4" attrs="{'invisible':[('state', '<>','open')]}">
|
||||
<separator string="Action" colspan="4" />
|
||||
<button name="%(action_claim_picking_in)d"
|
||||
string="New Products Return" states="open"
|
||||
type="action" target="new"
|
||||
context="{'warehouse_id': warehouse_id,
|
||||
'partner_id': partner_id}"/>
|
||||
|
||||
<button name="%(action_claim_picking_out)d"
|
||||
string="New Delivery" states="open"
|
||||
type="action" target="new"
|
||||
context="{'warehouse_id': warehouse_id,
|
||||
'partner_id': partner_id}"/>
|
||||
|
||||
<button name="%(account.action_account_invoice_refund)d"
|
||||
type='action' string='New Refund'
|
||||
states='open' icon="gtk-execute"
|
||||
context="{
|
||||
'invoice_ids': [invoice_id],
|
||||
'claim_line_ids': claim_line_ids,
|
||||
'description': name,
|
||||
'claim_id': id,
|
||||
}"/>
|
||||
</group>
|
||||
</page>
|
||||
<page string="Generated Documents">
|
||||
<separator colspan="2" string="Refunds"/>
|
||||
<field name="invoice_ids" colspan="4" readonly="1"/>
|
||||
<separator colspan="2" string="Receptions / Deliveries"/>
|
||||
<field name="picking_ids" colspan="4" readonly="1"/>
|
||||
</page>
|
||||
</page>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Right side link to orders -->
|
||||
<act_window
|
||||
id="act_crm_claim_rma_sale_orders"
|
||||
name="Quotations and Sales"
|
||||
res_model="sale.order"
|
||||
src_model="crm.claim"/>
|
||||
<!-- Right side link to invoices -->
|
||||
<act_window
|
||||
domain="[('type', '=', 'out_invoice')]"
|
||||
id="act_crm_claim_rma_invoice_out"
|
||||
name="Customer Invoices"
|
||||
res_model="account.invoice"
|
||||
src_model="crm.claim"/>
|
||||
<!-- Right side link to invoices -->
|
||||
<act_window
|
||||
domain="[('type', '=', 'in_invoice')]"
|
||||
id="act_crm_claim_rma_invoice_in"
|
||||
name="Supplier Invoices"
|
||||
res_model="account.invoice"
|
||||
src_model="crm.claim"/>
|
||||
<!-- Right side link to refunds -->
|
||||
<act_window
|
||||
domain="[('type', '=', 'out_refund')]"
|
||||
id="act_crm_claim_rma_refunds_out"
|
||||
name="Customer Refunds"
|
||||
res_model="account.invoice"
|
||||
src_model="crm.claim"/>
|
||||
<!-- Right side link to refunds -->
|
||||
<act_window
|
||||
domain="[('type', '=', 'in_refund')]"
|
||||
id="act_crm_claim_rma_refunds_in"
|
||||
name="Supplier Refunds"
|
||||
res_model="account.invoice"
|
||||
src_model="crm.claim"/>
|
||||
<!-- Right side link to picking in -->
|
||||
<act_window
|
||||
domain="[('type', '=', 'in')]"
|
||||
id="act_crm_claim_rma_picking_in"
|
||||
name="Incoming Shipment and Returns"
|
||||
res_model="stock.picking.in"
|
||||
src_model="crm.claim"/>
|
||||
<!-- Right side link to picking out -->
|
||||
<act_window
|
||||
domain="[('type', '=', 'out')]"
|
||||
id="act_crm_claim_rma_picking_out"
|
||||
name="Deliveries"
|
||||
res_model="stock.picking.out"
|
||||
src_model="crm.claim"/>
|
||||
|
||||
<record model="ir.ui.view" id="crm_claim_rma_form_view2">
|
||||
<field name="name">CRM - Claim product return Form</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim.crm_case_claims_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="date_deadline" position="after">
|
||||
<field name="claim_type" on_change="onchange_invoice_id(invoice_id, warehouse_id, claim_type, date, company_id, claim_line_ids, False, context)"/>
|
||||
<field name="warehouse_id" on_change="onchange_invoice_id(invoice_id, warehouse_id, claim_type, date, company_id, claim_line_ids, False, context)"/>
|
||||
</field>
|
||||
<field name="name" position="replace">
|
||||
<div class="oe_title">
|
||||
<label for="number" class="oe_edit_only"/>
|
||||
<h1><field name="number"/></h1>
|
||||
</div>
|
||||
</field>
|
||||
<field name="date" position="replace">
|
||||
</field>
|
||||
<field name="user_id" position="before">
|
||||
<field name="name" />
|
||||
<field name="date" on_change="onchange_invoice_id(invoice_id, warehouse_id, claim_type, date, company_id, claim_line_ids, False, context)"/>
|
||||
</field>
|
||||
<xpath expr="//sheet[@string='Claims']/group[1]" position="inside">
|
||||
<div class="oe_right oe_button_box" name="buttons">
|
||||
<button name="%(act_crm_claim_rma_sale_orders)d" type="action"
|
||||
string="Quotations and Sales"
|
||||
attrs="{'invisible': ['|',('partner_id','=', False),('claim_type','in', ['supplier','other'])]}"
|
||||
context="{'search_default_partner_id': [partner_id],'search_default_user_id':False}"
|
||||
/>
|
||||
<button name="%(act_crm_claim_rma_invoice_out)d" type="action"
|
||||
string="Customer Invoices"
|
||||
attrs="{'invisible': ['|',('partner_id','=', False),('claim_type','in', ['supplier','other'])]}"
|
||||
context="{'search_default_partner_id': [partner_id],'search_default_user_id':False}"
|
||||
/>
|
||||
<button name="%(act_crm_claim_rma_refunds_out)d" type="action"
|
||||
string="Customer Refunds"
|
||||
attrs="{'invisible': ['|',('partner_id','=', False),('claim_type','in', ['supplier','other'])]}"
|
||||
context="{'search_default_partner_id': [partner_id],'search_default_user_id':False}"
|
||||
/>
|
||||
<button name="%(act_crm_claim_rma_invoice_in)d" type="action"
|
||||
string="Supplier Invoices"
|
||||
attrs="{'invisible': ['|',('partner_id','=', False),('claim_type','in', ['customer','other'])]}"
|
||||
context="{'search_default_partner_id': [partner_id],'search_default_user_id':False}"
|
||||
/>
|
||||
<button name="%(act_crm_claim_rma_refunds_in)d" type="action"
|
||||
string="Supplier Refunds"
|
||||
attrs="{'invisible': ['|',('partner_id','=', False),('claim_type','in', ['customer','other'])]}"
|
||||
context="{'search_default_partner_id': [partner_id],'search_default_user_id':False}"
|
||||
/>
|
||||
<button name="%(act_crm_claim_rma_picking_in)d" type="action"
|
||||
string="Returned Products"
|
||||
attrs="{'invisible': ['|',('partner_id','=', False),('claim_type','in', ['supplier','other'])]}"
|
||||
context="{'search_default_claim_id': active_id,'search_default_user_id':False}"
|
||||
/>
|
||||
<button name="%(act_crm_claim_rma_picking_out)d" type="action"
|
||||
string="Deliveries"
|
||||
attrs="{'invisible': ['|',('partner_id','=', False),('claim_type','in', ['supplier','other'])]}"
|
||||
context="{'search_default_partner_id': [partner_id],'search_default_user_id':False}"
|
||||
/>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Crm claim Search view -->
|
||||
<record id="view_crm_case_claims_filter" model="ir.ui.view">
|
||||
<field name="name">CRM - Claims Search</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim.view_crm_case_claims_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="name" string="Claims" position="before">
|
||||
<field name="number"/>
|
||||
</field>
|
||||
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" position="before">
|
||||
<filter string="Sales Team" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'section_id'}"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Menu -->
|
||||
<record model="ir.actions.act_window" id="crm_claim.crm_case_categ_claim0">
|
||||
<field name="context">{"search_default_user_id":uid, "stage_type":'claim'}</field>
|
||||
</record>
|
||||
|
||||
<!-- return lines action -->
|
||||
<record model="ir.actions.act_window" id="act_crm_case_claim_lines">
|
||||
<field name="name">Claim lines</field>
|
||||
<field name="res_model">claim.line</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm_claim_line_tree_view"/>
|
||||
<field name="search_view_id" ref="view_crm_claim_lines_filter"/>
|
||||
</record>
|
||||
<!-- substates action -->
|
||||
<record id="act_crm_claim_substates" model="ir.actions.act_window">
|
||||
<field name="name">Claim line substates</field>
|
||||
<field name="res_model">substate.substate</field>
|
||||
<field name="view_type">form</field>
|
||||
</record>
|
||||
<!-- Menu -->
|
||||
<menuitem name="Return lines" id="menu_crm_case_claims_claim_lines"
|
||||
parent="base.menu_aftersale" action="act_crm_case_claim_lines" sequence="2"/>
|
||||
<menuitem name="Returned line substates" id="menu_crm_case_claims_claim_line_substates"
|
||||
parent="crm_claim.menu_config_claim" action="act_crm_claim_substates" sequence="2"/>
|
||||
</data>
|
||||
</openerp>
|
||||
907
__unported__/crm_claim_rma/i18n/crm_claim_rma.pot
Normal file
907
__unported__/crm_claim_rma/i18n/crm_claim_rma.pot
Normal file
@@ -0,0 +1,907 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * crm_claim_rma
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-20 18:21+0000\n"
|
||||
"PO-Revision-Date: 2013-12-20 18:21+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Returned good"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Locations"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Draft and Open Claims"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Group By..."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_descr:0
|
||||
msgid "More precise description of the problem"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,guarantee_limit:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_guarantee_limit
|
||||
msgid "Warranty limit"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Supplier"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Refused"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:stock.picking.in:0
|
||||
#: view:stock.picking.out:0
|
||||
msgid "To Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,refund_line_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_refund_line_id
|
||||
msgid "Refund Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Order cancellation"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_dest_location:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_dest_location
|
||||
msgid "Dest. Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:224
|
||||
#, python-format
|
||||
msgid "Cannot find any date for invoice. Must be a validated invoice."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,last_state_change:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_last_state_change
|
||||
msgid "Last change"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,product_id:0
|
||||
msgid "Returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Create picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Claim Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Delivery"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Calculate warranty state"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/account_invoice.py:77
|
||||
#, python-format
|
||||
msgid "A refund has already been created for this claim !"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Compute Waranty"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:account.invoice,claim_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_crm_claim
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_account_invoice_claim_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id_4030
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id_4031
|
||||
#: field:stock.picking,claim_id:0
|
||||
#: field:stock.picking.in,claim_id:0
|
||||
#: field:stock.picking.out,claim_id:0
|
||||
msgid "Claim"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim13
|
||||
msgid "General Adjustement"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:204
|
||||
#, python-format
|
||||
msgid "A product return cannot be created for various destination addresses, please choose line with a same address."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.action_claim_picking_out
|
||||
msgid "Create Outgoing Shipments"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,warning:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warning
|
||||
msgid "Warranty"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim11
|
||||
msgid "Customer Return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,product_returned_quantity:0
|
||||
msgid "Quantity of product returned"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,planned_cost:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_planned_cost
|
||||
msgid "Expected cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Receptions / Deliveries"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warranty_type:0
|
||||
msgid "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"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking_out
|
||||
msgid "Delivery Orders"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,last_state_change:0
|
||||
msgid "To set the last state / substate change"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Not specified"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Returned lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Claim n°"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,state:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,applicable_guarantee:0
|
||||
#: field:claim.line,warranty_type:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_applicable_guarantee
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warranty_type
|
||||
msgid "Warranty type"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking
|
||||
msgid "Picking List"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,warehouse_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_warehouse_id
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_origine:0
|
||||
msgid "To describe the line product problem"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim_make_picking.wizard,claim_line_dest_location:0
|
||||
msgid "Location where the system will stock the returned products."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Legal retractation"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/account_invoice.py:76
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:312
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:195
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:203
|
||||
#, python-format
|
||||
msgid "Error !"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,guarantee_limit:0
|
||||
msgid "The warranty limit is computed as: invoice date + warranty defined on selected product."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_origine:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_origine
|
||||
msgid "Claim Subject"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,real_cost:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_real_cost
|
||||
msgid "Real cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_id:0
|
||||
msgid "To link to the case.claim object"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:73
|
||||
#, python-format
|
||||
msgid "A picking has already been created for this claim."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim18
|
||||
msgid "Pricing Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,product_returned_quantity:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_product_returned_quantity
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Confirmed, waiting for product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,claim_line_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_claim_line_ids
|
||||
#: model:ir.ui.menu,name:crm_claim_rma.menu_crm_case_claims_claim_lines
|
||||
msgid "Return lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Stage"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,planned_revenue:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_planned_revenue
|
||||
msgid "Expected revenue"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Controlled, to treate"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_refunds_out
|
||||
msgid "Customer Refunds"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,location_dest_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_location_dest_id
|
||||
msgid "Return Stock Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_sale_orders
|
||||
msgid "Quotations and Sales"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Lost during transport"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Shipping error"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,warranty_return_partner:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warranty_return_partner
|
||||
msgid "Warranty Address"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,invoice_id:0
|
||||
msgid "Related original Cusotmer invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim12
|
||||
msgid "Buyer Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_id
|
||||
msgid "Related claim"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,invoice_line_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice_line
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_invoice_line_id
|
||||
msgid "Invoice Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Linked Document"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,move_in_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_move_in_id
|
||||
msgid "Move Line from picking in"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim20
|
||||
msgid "Delivered Late by Carrier"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Product Return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Generated Documents"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,prodlot_id:0
|
||||
msgid "The serial/lot of the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Refund"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,substate_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_substate_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_substate_substate_name
|
||||
#: field:substate.substate,name:0
|
||||
msgid "Sub state"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_refunds_in
|
||||
msgid "Supplier Refunds"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_descr:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_descr
|
||||
msgid "Claim description"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,real_revenue:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_real_revenue
|
||||
msgid "Real revenue"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Select lines for picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,substate_id:0
|
||||
msgid "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,..."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Select exchange lines to add in picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim14
|
||||
msgid "Could Not Ship"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_claim_line
|
||||
msgid "List of product to return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim10
|
||||
msgid "No Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,unit_sale_price:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_unit_sale_price
|
||||
msgid "Unit sale price"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,refund_line_id:0
|
||||
msgid "The refund line related to the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:245
|
||||
#, python-format
|
||||
msgid "expired"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking_in
|
||||
msgid "Incoming Shipments"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:substate.substate,substate_descr:0
|
||||
msgid "To give more information about the sub state"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_substates
|
||||
msgid "Claim line substates"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim_make_picking.wizard,claim_line_source_location:0
|
||||
msgid "Location where the returned products are from."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,picking_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_picking_ids
|
||||
#: view:stock.picking.in:0
|
||||
#: view:stock.picking.out:0
|
||||
msgid "RMA"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
msgid "Brand manufacturer"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,prodlot_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_prodlot_id
|
||||
msgid "Serial/Lot n°"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,unit_sale_price:0
|
||||
msgid "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,..."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: sql_constraint:crm.claim:0
|
||||
msgid "Number/Reference must be unique per Company!"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:313
|
||||
#, python-format
|
||||
msgid "Please set product and invoice."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Damaged delivered product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_ids:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_case_claim_lines
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_ids
|
||||
msgid "Claim lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:341
|
||||
#, python-format
|
||||
msgid "There is no warehouse for the current user's company."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:223
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:233
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:72
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: view:crm.claim:0
|
||||
msgid "Claims"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Problem"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Treated"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim16
|
||||
msgid "Merchandise Not Received"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,number:0
|
||||
msgid "Company internal claim unique number"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.ui.menu,name:crm_claim_rma.menu_crm_case_claims_claim_line_substates
|
||||
msgid "Returned line substates"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Substate"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_invoice_out
|
||||
msgid "Customer Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_source_location:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_source_location
|
||||
msgid "Source Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,number:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_number
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_picking_out
|
||||
msgid "Deliveries"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:crm.claim,invoice_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_invoice_id
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,invoice_line_id:0
|
||||
msgid "The invoice line related to the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim21
|
||||
msgid "Missed Fulfilment Promise"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "In Progress"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.section,name:crm_claim_rma.section_after_sales_service
|
||||
msgid "After Sales Service"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Received, to control"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim17
|
||||
msgid "Merchandise Not As Described"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Exchange request"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_substate_substate
|
||||
msgid "substate that precise a given state"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:226
|
||||
#, python-format
|
||||
msgid "not_define"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.action_claim_picking_in
|
||||
msgid "Return Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Current"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Products Return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_invoice_in
|
||||
msgid "Supplier Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,product_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_product_id
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,name:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_name
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_substate_substate_substate_descr
|
||||
#: field:substate.substate,substate_descr:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Search Claims"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,claim_type:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_claim_type
|
||||
msgid "Claim type"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:196
|
||||
#, python-format
|
||||
msgid "A product return cannot be created for various destination locations, please choose line with a same destination location."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:247
|
||||
#, python-format
|
||||
msgid "valid"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:340
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,location_dest_id:0
|
||||
msgid "The return stock location of the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warning:0
|
||||
msgid "If warranty has expired"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warranty_return_partner:0
|
||||
msgid "Where the customer has to send back the product(s)"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Follow Up"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Customer"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,move_out_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_move_out_id
|
||||
msgid "Move Line from picking out"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: field:crm.claim,invoice_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_invoice_ids
|
||||
msgid "Refunds"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice_refund
|
||||
msgid "Invoice Refund"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,return_value:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_return_value
|
||||
msgid "Total return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,return_value:0
|
||||
msgid "Quantity returned * Unit sold price"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim19
|
||||
msgid "Shipping Address Undeliverable"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_picking_in
|
||||
msgid "Incoming Shipment and Returns"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:stock.picking.out:0
|
||||
msgid "Delivery orders to invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,move_in_id:0
|
||||
#: help:claim.line,move_out_id:0
|
||||
msgid "The move line related to the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Sales Team"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim15
|
||||
msgid "Different Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_claim_make_picking_wizard
|
||||
msgid "Wizard to create pickings from claim lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,claim_type:0
|
||||
msgid "Customer: from customer to company.\n"
|
||||
" Supplier: from company to supplier."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "In Progress Claims"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:234
|
||||
#, python-format
|
||||
msgid "The product has no supplier configured."
|
||||
msgstr ""
|
||||
|
||||
950
__unported__/crm_claim_rma/i18n/es.po
Normal file
950
__unported__/crm_claim_rma/i18n/es.po
Normal file
@@ -0,0 +1,950 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * crm_claim_rma
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-20 18:21+0000\n"
|
||||
"PO-Revision-Date: 2014-01-22 19:38+0000\n"
|
||||
"Last-Translator: Pedro Manuel Baeza <pedro.baeza@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-24 06:50+0000\n"
|
||||
"X-Generator: Launchpad (build 17017)\n"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Returned good"
|
||||
msgstr "Mercancía devuelta"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Locations"
|
||||
msgstr "Localizaciones"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Draft and Open Claims"
|
||||
msgstr "Reclamaciones abiertas o en borrador"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Group By..."
|
||||
msgstr "Agrupar por..."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_descr:0
|
||||
msgid "More precise description of the problem"
|
||||
msgstr "Descripción detallada del problema"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,guarantee_limit:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_guarantee_limit
|
||||
msgid "Warranty limit"
|
||||
msgstr "Límite de la garantía"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Supplier"
|
||||
msgstr "Proveedor"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Refused"
|
||||
msgstr "Rechazado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:stock.picking.in:0
|
||||
#: view:stock.picking.out:0
|
||||
msgid "To Invoice"
|
||||
msgstr "A facturar"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,refund_line_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_refund_line_id
|
||||
msgid "Refund Line"
|
||||
msgstr "Linea de Abono"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
msgid "Company"
|
||||
msgstr "Compañia"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Order cancellation"
|
||||
msgstr "Cancelación de orden"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_dest_location:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_dest_location
|
||||
msgid "Dest. Location"
|
||||
msgstr "Localizalización de destino"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:224
|
||||
#, python-format
|
||||
msgid "Cannot find any date for invoice. Must be a validated invoice."
|
||||
msgstr ""
|
||||
"No se puede encontrar una fecha para la factura. Debe ser una fecha validada."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,last_state_change:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_last_state_change
|
||||
msgid "Last change"
|
||||
msgstr "Última modificación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,product_id:0
|
||||
msgid "Returned product"
|
||||
msgstr "Productos devueltos"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Create picking"
|
||||
msgstr "Crear envío/recepción"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Claim Line"
|
||||
msgstr "Línea de reclamación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Delivery"
|
||||
msgstr "Nueva entrega"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Calculate warranty state"
|
||||
msgstr "Calcular el estado de la garantía"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/account_invoice.py:77
|
||||
#, python-format
|
||||
msgid "A refund has already been created for this claim !"
|
||||
msgstr "¡Ya se ha creado un abono para esta reclamación!"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Compute Waranty"
|
||||
msgstr "Calcular garantía"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:account.invoice,claim_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_crm_claim
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_account_invoice_claim_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id_4030
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id_4031
|
||||
#: field:stock.picking,claim_id:0
|
||||
#: field:stock.picking.in,claim_id:0
|
||||
#: field:stock.picking.out,claim_id:0
|
||||
msgid "Claim"
|
||||
msgstr "Reclamación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim13
|
||||
msgid "General Adjustement"
|
||||
msgstr "Ajuste General"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:204
|
||||
#, python-format
|
||||
msgid ""
|
||||
"A product return cannot be created for various destination addresses, please "
|
||||
"choose line with a same address."
|
||||
msgstr ""
|
||||
"No se puede crear una devolución de producto para varias direcciones de "
|
||||
"destino. Escoja por favor una línea con la misma dirección."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.action_claim_picking_out
|
||||
msgid "Create Outgoing Shipments"
|
||||
msgstr "Crear envíos salientes"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,warning:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warning
|
||||
msgid "Warranty"
|
||||
msgstr "Garantía"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim11
|
||||
msgid "Customer Return"
|
||||
msgstr "Devolución de cliente"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Movimientos de stock"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,product_returned_quantity:0
|
||||
msgid "Quantity of product returned"
|
||||
msgstr "Cantidad de producto devuelto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,planned_cost:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_planned_cost
|
||||
msgid "Expected cost"
|
||||
msgstr "Coste estimado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Receptions / Deliveries"
|
||||
msgstr "Recepciones / Entregas"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warranty_type:0
|
||||
msgid ""
|
||||
"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"
|
||||
msgstr ""
|
||||
"Especifica quién es el responsable del tratamiento de la devolución de "
|
||||
"garantía para el cliente final. La compañía utilizará la dirección por "
|
||||
"defecto o la dirección de envío de la compañía, y así sucesivamente por "
|
||||
"proveedor y marca del fabricante. No significa necesariamente que la "
|
||||
"garantía que se aplica es el de la empresa que hace la devolución (es decir: "
|
||||
"se puede devolver a la empresa y estar bajo la garantía de la marca)"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking_out
|
||||
msgid "Delivery Orders"
|
||||
msgstr "Órdenes de entrega"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,last_state_change:0
|
||||
msgid "To set the last state / substate change"
|
||||
msgstr "Para definir el último cambio de estado / sub-estado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Not specified"
|
||||
msgstr "No especificado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Returned lines"
|
||||
msgstr "Líneas devueltas"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Claim n°"
|
||||
msgstr "Reclamación nº"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,state:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_state
|
||||
msgid "State"
|
||||
msgstr "Estado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,applicable_guarantee:0
|
||||
#: field:claim.line,warranty_type:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_applicable_guarantee
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warranty_type
|
||||
msgid "Warranty type"
|
||||
msgstr "Tipo de garantía"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking
|
||||
msgid "Picking List"
|
||||
msgstr "Listado de recogida"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,warehouse_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_warehouse_id
|
||||
msgid "Warehouse"
|
||||
msgstr "Almacén"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_origine:0
|
||||
msgid "To describe the line product problem"
|
||||
msgstr "Para describir el problema de la línea de producto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim_make_picking.wizard,claim_line_dest_location:0
|
||||
msgid "Location where the system will stock the returned products."
|
||||
msgstr ""
|
||||
"Localización en la que el sistema almacenará los productos devueltos."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "More"
|
||||
msgstr "Más"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Legal retractation"
|
||||
msgstr "Retractación legal"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/account_invoice.py:76
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:312
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:195
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:203
|
||||
#, python-format
|
||||
msgid "Error !"
|
||||
msgstr "¡Error!"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,guarantee_limit:0
|
||||
msgid ""
|
||||
"The warranty limit is computed as: invoice date + warranty defined on "
|
||||
"selected product."
|
||||
msgstr ""
|
||||
"El límite de la garantía se calcula como: fecha de factura + garantía "
|
||||
"seleccionada en el producto seleccionado."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_origine:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_origine
|
||||
msgid "Claim Subject"
|
||||
msgstr "Objeto de la reclamación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,real_cost:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_real_cost
|
||||
msgid "Real cost"
|
||||
msgstr "Coste real"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_id:0
|
||||
msgid "To link to the case.claim object"
|
||||
msgstr "Para enlazar con el objeto case.claim"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:73
|
||||
#, python-format
|
||||
msgid "A picking has already been created for this claim."
|
||||
msgstr "Ya se ha creado un albarán para esta reclamación."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim18
|
||||
msgid "Pricing Error"
|
||||
msgstr "Error de precio"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,product_returned_quantity:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_product_returned_quantity
|
||||
msgid "Quantity"
|
||||
msgstr "Cantidad"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Confirmed, waiting for product"
|
||||
msgstr "Confirmado, esperando el producto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,claim_line_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_claim_line_ids
|
||||
#: model:ir.ui.menu,name:crm_claim_rma.menu_crm_case_claims_claim_lines
|
||||
msgid "Return lines"
|
||||
msgstr "Líneas de devolución"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Stage"
|
||||
msgstr "Etapa"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,planned_revenue:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_planned_revenue
|
||||
msgid "Expected revenue"
|
||||
msgstr "Expectativa de ingreso"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Controlled, to treate"
|
||||
msgstr "Controlado, para procesar"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_refunds_out
|
||||
msgid "Customer Refunds"
|
||||
msgstr "Facturas rectificativas de cliente"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,location_dest_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_location_dest_id
|
||||
msgid "Return Stock Location"
|
||||
msgstr "Ubicación de existencias para devolución"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_sale_orders
|
||||
msgid "Quotations and Sales"
|
||||
msgstr "Presupuestos y pedidos"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Lost during transport"
|
||||
msgstr "Perdido durante el transporte"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Shipping error"
|
||||
msgstr "Error de envío"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,warranty_return_partner:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warranty_return_partner
|
||||
msgid "Warranty Address"
|
||||
msgstr "Dirección de garantía"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,invoice_id:0
|
||||
msgid "Related original Cusotmer invoice"
|
||||
msgstr "Factura de cliente original relacionada"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim12
|
||||
msgid "Buyer Cancelled"
|
||||
msgstr "Cancelado por el comprador"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_id
|
||||
msgid "Related claim"
|
||||
msgstr "Reclamación relacionada"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,invoice_line_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice_line
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_invoice_line_id
|
||||
msgid "Invoice Line"
|
||||
msgstr "Línea de factura"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Linked Document"
|
||||
msgstr "Documento relacionado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,move_in_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_move_in_id
|
||||
msgid "Move Line from picking in"
|
||||
msgstr "Ubicación de producto recepcionado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim20
|
||||
msgid "Delivered Late by Carrier"
|
||||
msgstr "Entregado con retraso por el transportista"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Product Return"
|
||||
msgstr "Devolución de producto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Generated Documents"
|
||||
msgstr "Documentos generados"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,prodlot_id:0
|
||||
msgid "The serial/lot of the returned product"
|
||||
msgstr "Nº de serie/lote del producto devuelto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Refund"
|
||||
msgstr "Nuevo abono"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,substate_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_substate_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_substate_substate_name
|
||||
#: field:substate.substate,name:0
|
||||
msgid "Sub state"
|
||||
msgstr "Sub-estado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_refunds_in
|
||||
msgid "Supplier Refunds"
|
||||
msgstr "Facturas rectificativas de proveedor"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_descr:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_descr
|
||||
msgid "Claim description"
|
||||
msgstr "Descripción de la reclamación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,real_revenue:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_real_revenue
|
||||
msgid "Real revenue"
|
||||
msgstr "Ingreso real"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Select lines for picking"
|
||||
msgstr "Seleccionar líneas para recogida/envío"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,substate_id:0
|
||||
msgid ""
|
||||
"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,..."
|
||||
msgstr ""
|
||||
"Seleccione un sub-estado para detallar el estado estandar. Por ejemplo: "
|
||||
"Estado = rechazado; Sub-estado, garantía agotada, fuera de garantía, sin "
|
||||
"problema..."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Select exchange lines to add in picking"
|
||||
msgstr "Seleccionar las líneas de cambio para añadir envío"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Draft"
|
||||
msgstr "Borrador"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim14
|
||||
msgid "Could Not Ship"
|
||||
msgstr "No pudo enviarse"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_claim_line
|
||||
msgid "List of product to return"
|
||||
msgstr "Listado de productos a devolver"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim10
|
||||
msgid "No Inventory"
|
||||
msgstr "Sin Stock"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,unit_sale_price:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_unit_sale_price
|
||||
msgid "Unit sale price"
|
||||
msgstr "Precio de venta unitario"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,refund_line_id:0
|
||||
msgid "The refund line related to the returned product"
|
||||
msgstr "La línea de abono relacionada con el producto devuelto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:245
|
||||
#, python-format
|
||||
msgid "expired"
|
||||
msgstr "expirado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking_in
|
||||
msgid "Incoming Shipments"
|
||||
msgstr "Albaranes de entrada"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:substate.substate,substate_descr:0
|
||||
msgid "To give more information about the sub state"
|
||||
msgstr "Permite ampliar la información del sub-estado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_substates
|
||||
msgid "Claim line substates"
|
||||
msgstr "Sub-estados de la reclamación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim_make_picking.wizard,claim_line_source_location:0
|
||||
msgid "Location where the returned products are from."
|
||||
msgstr "Localización desde la que vienen los productos devueltos."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,picking_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_picking_ids
|
||||
#: view:stock.picking.in:0
|
||||
#: view:stock.picking.out:0
|
||||
msgid "RMA"
|
||||
msgstr "RMA"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
msgid "Brand manufacturer"
|
||||
msgstr "Fabricante"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,prodlot_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_prodlot_id
|
||||
msgid "Serial/Lot n°"
|
||||
msgstr "N° de serie/lote:"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,unit_sale_price:0
|
||||
msgid ""
|
||||
"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,..."
|
||||
msgstr ""
|
||||
"Precio de venta unitario del producto. Auto-completado si la devolución se "
|
||||
"realizó por selección de factura. Tenga cuidado y compruebe el valor "
|
||||
"automático, ya que no tiene en cuenta facturas rectificativas previas, "
|
||||
"descuento de facturas, puede ser 0 si el producto es gratuito, etc..."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: sql_constraint:crm.claim:0
|
||||
msgid "Number/Reference must be unique per Company!"
|
||||
msgstr "El número/referencia debe ser único por compañía"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:313
|
||||
#, python-format
|
||||
msgid "Please set product and invoice."
|
||||
msgstr "Establezca por favor producto y factura."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Damaged delivered product"
|
||||
msgstr "Producto enviado dañado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_ids:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_case_claim_lines
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_ids
|
||||
msgid "Claim lines"
|
||||
msgstr "Líneas de reclamación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:341
|
||||
#, python-format
|
||||
msgid "There is no warehouse for the current user's company."
|
||||
msgstr "No hay almacén definido para la compañía del usuario actual"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:223
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:233
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:72
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Action"
|
||||
msgstr "Acción"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: view:crm.claim:0
|
||||
msgid "Claims"
|
||||
msgstr "Reclamaciones"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Problem"
|
||||
msgstr "Problema"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Treated"
|
||||
msgstr "Tratado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim16
|
||||
msgid "Merchandise Not Received"
|
||||
msgstr "Mercancía no recibida"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,number:0
|
||||
msgid "Company internal claim unique number"
|
||||
msgstr "Número único de reclamación interno en la compañia"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.ui.menu,name:crm_claim_rma.menu_crm_case_claims_claim_line_substates
|
||||
msgid "Returned line substates"
|
||||
msgstr "Sub-estados para lineas devueltas"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Substate"
|
||||
msgstr "Sub-estado"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_invoice_out
|
||||
msgid "Customer Invoices"
|
||||
msgstr "Facturas de cliente"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_source_location:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_source_location
|
||||
msgid "Source Location"
|
||||
msgstr "Localización de origen"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,number:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_number
|
||||
msgid "Number"
|
||||
msgstr "Número"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_picking_out
|
||||
msgid "Deliveries"
|
||||
msgstr "Entregas"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:crm.claim,invoice_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_invoice_id
|
||||
msgid "Invoice"
|
||||
msgstr "Factura"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,invoice_line_id:0
|
||||
msgid "The invoice line related to the returned product"
|
||||
msgstr "La línea de factura relacionada con el producto devuelto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim21
|
||||
msgid "Missed Fulfilment Promise"
|
||||
msgstr "Incumplimiento de la respuesta"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "In Progress"
|
||||
msgstr "En progreso"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.section,name:crm_claim_rma.section_after_sales_service
|
||||
msgid "After Sales Service"
|
||||
msgstr "Servicio Post-venta"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Received, to control"
|
||||
msgstr "Recibido, para control"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim17
|
||||
msgid "Merchandise Not As Described"
|
||||
msgstr "El producto no se corresponde con la descripción"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Exchange request"
|
||||
msgstr "Solicitar cambio"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_substate_substate
|
||||
msgid "substate that precise a given state"
|
||||
msgstr "Los sub-estados necesitan un estado padre"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:226
|
||||
#, python-format
|
||||
msgid "not_define"
|
||||
msgstr "sin_definir"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.action_claim_picking_in
|
||||
msgid "Return Products"
|
||||
msgstr "Productos devueltos"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Current"
|
||||
msgstr "Actual"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Other"
|
||||
msgstr "Otro"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Products Return"
|
||||
msgstr "Nueva devolución de productos"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_invoice_in
|
||||
msgid "Supplier Invoices"
|
||||
msgstr "Facturas de proveedor"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,product_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_product_id
|
||||
msgid "Product"
|
||||
msgstr "Producto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,name:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_name
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_substate_substate_substate_descr
|
||||
#: field:substate.substate,substate_descr:0
|
||||
msgid "Description"
|
||||
msgstr "Descripción"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Search Claims"
|
||||
msgstr "Buscar reclamaciones"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,claim_type:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_claim_type
|
||||
msgid "Claim type"
|
||||
msgstr "Tipo de reclamación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:196
|
||||
#, python-format
|
||||
msgid ""
|
||||
"A product return cannot be created for various destination locations, please "
|
||||
"choose line with a same destination location."
|
||||
msgstr ""
|
||||
"No se puede crear una devolución de productos para múltiples ubicación "
|
||||
"destino. Escoja por favor una línea con la misma ubicación destino."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:247
|
||||
#, python-format
|
||||
msgid "valid"
|
||||
msgstr "válido"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:340
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr "Error"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,location_dest_id:0
|
||||
msgid "The return stock location of the returned product"
|
||||
msgstr "La ubicación de existencias para el producto devuelto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warning:0
|
||||
msgid "If warranty has expired"
|
||||
msgstr "Si la garantía ha vencido"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warranty_return_partner:0
|
||||
msgid "Where the customer has to send back the product(s)"
|
||||
msgstr "Dirección a la que el cliente debe remitir el producto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Follow Up"
|
||||
msgstr "Seguimiento"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Customer"
|
||||
msgstr "Cliente"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,move_out_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_move_out_id
|
||||
msgid "Move Line from picking out"
|
||||
msgstr "Ubicación para envío"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: field:crm.claim,invoice_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_invoice_ids
|
||||
msgid "Refunds"
|
||||
msgstr "Abonos"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice_refund
|
||||
msgid "Invoice Refund"
|
||||
msgstr "Abono de factura"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,return_value:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_return_value
|
||||
msgid "Total return"
|
||||
msgstr "Total devuelto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,return_value:0
|
||||
msgid "Quantity returned * Unit sold price"
|
||||
msgstr "Cantidad devuelta * precio de venta unitario"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim19
|
||||
msgid "Shipping Address Undeliverable"
|
||||
msgstr "Dirección de envío inexistente"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_picking_in
|
||||
msgid "Incoming Shipment and Returns"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:stock.picking.out:0
|
||||
msgid "Delivery orders to invoice"
|
||||
msgstr "Ordenes de entrega a facturar"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,move_in_id:0
|
||||
#: help:claim.line,move_out_id:0
|
||||
msgid "The move line related to the returned product"
|
||||
msgstr "Línea de traslado relacionada con el producto devuelto"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "or"
|
||||
msgstr "o"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Sales Team"
|
||||
msgstr "Equipo de ventas"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim15
|
||||
msgid "Different Item"
|
||||
msgstr "Artículo diferente"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_claim_make_picking_wizard
|
||||
msgid "Wizard to create pickings from claim lines"
|
||||
msgstr "Asistente para crear envíos desde la línea de reclamación"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,claim_type:0
|
||||
msgid ""
|
||||
"Customer: from customer to company.\n"
|
||||
" Supplier: from company to supplier."
|
||||
msgstr ""
|
||||
"Cliente: del cliente a la compañía.\n"
|
||||
"Proveedor: de la compañía al proveedor."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "In Progress Claims"
|
||||
msgstr "Reclamaciones en proceso"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:234
|
||||
#, python-format
|
||||
msgid "The product has no supplier configured."
|
||||
msgstr "El producto no tiene proveedor configurado."
|
||||
943
__unported__/crm_claim_rma/i18n/fr.po
Normal file
943
__unported__/crm_claim_rma/i18n/fr.po
Normal file
@@ -0,0 +1,943 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * crm_claim_rma
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-20 18:21+0000\n"
|
||||
"PO-Revision-Date: 2014-04-19 04:31+0000\n"
|
||||
"Last-Translator: Yannickvaucher <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-24 06:50+0000\n"
|
||||
"X-Generator: Launchpad (build 17017)\n"
|
||||
"Language: \n"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Returned good"
|
||||
msgstr "Marchandise retournée"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Locations"
|
||||
msgstr "Emplacements"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Draft and Open Claims"
|
||||
msgstr "Crée et ouvre réclamations"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Group By..."
|
||||
msgstr "Regrouper Par..."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_descr:0
|
||||
msgid "More precise description of the problem"
|
||||
msgstr "Description plus précise du problème"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,guarantee_limit:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_guarantee_limit
|
||||
msgid "Warranty limit"
|
||||
msgstr "Limite de la garantie"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Supplier"
|
||||
msgstr "Fournisseur"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Refused"
|
||||
msgstr "Refusé"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:stock.picking.in:0
|
||||
#: view:stock.picking.out:0
|
||||
msgid "To Invoice"
|
||||
msgstr "Vers facturation"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,refund_line_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_refund_line_id
|
||||
msgid "Refund Line"
|
||||
msgstr "Ligne d'avoir"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
msgid "Company"
|
||||
msgstr "Société"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Order cancellation"
|
||||
msgstr "Annulation de la commande"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_dest_location:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_dest_location
|
||||
msgid "Dest. Location"
|
||||
msgstr "Emplacement de destination"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:224
|
||||
#, python-format
|
||||
msgid "Cannot find any date for invoice. Must be a validated invoice."
|
||||
msgstr "Pas de dates pour la facture ! La facture doit être valide !"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,last_state_change:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_last_state_change
|
||||
msgid "Last change"
|
||||
msgstr "Dernière modification"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,product_id:0
|
||||
msgid "Returned product"
|
||||
msgstr "Produit retourné"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Create picking"
|
||||
msgstr "Créer expédition/réception"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Claim Line"
|
||||
msgstr "Lignes de réclamations"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Delivery"
|
||||
msgstr "Nouvelle livraison"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Calculate warranty state"
|
||||
msgstr "Calcul de l'état de la garantie"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/account_invoice.py:77
|
||||
#, python-format
|
||||
msgid "A refund has already been created for this claim !"
|
||||
msgstr "Un avoir a déjà été créé pour cette réclamation !"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Compute Waranty"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:account.invoice,claim_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_crm_claim
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_account_invoice_claim_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id_4030
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id_4031
|
||||
#: field:stock.picking,claim_id:0
|
||||
#: field:stock.picking.in,claim_id:0
|
||||
#: field:stock.picking.out,claim_id:0
|
||||
msgid "Claim"
|
||||
msgstr "Réclamation"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim13
|
||||
msgid "General Adjustement"
|
||||
msgstr "Ajustement général"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:204
|
||||
#, python-format
|
||||
msgid ""
|
||||
"A product return cannot be created for various destination addresses, please "
|
||||
"choose line with a same address."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.action_claim_picking_out
|
||||
msgid "Create Outgoing Shipments"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,warning:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warning
|
||||
msgid "Warranty"
|
||||
msgstr "Garantie"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim11
|
||||
msgid "Customer Return"
|
||||
msgstr "Retour client"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Mouvement de stock"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,product_returned_quantity:0
|
||||
msgid "Quantity of product returned"
|
||||
msgstr "Quantité de produit retournés"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,planned_cost:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_planned_cost
|
||||
msgid "Expected cost"
|
||||
msgstr "Coût prévisionnel"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Receptions / Deliveries"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warranty_type:0
|
||||
msgid ""
|
||||
"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"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking_out
|
||||
msgid "Delivery Orders"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,last_state_change:0
|
||||
msgid "To set the last state / substate change"
|
||||
msgstr "Pour définir le derniere changement d'état ou de sous-état"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Not specified"
|
||||
msgstr "Non spécifié"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Returned lines"
|
||||
msgstr "Lignes retournées"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Claim n°"
|
||||
msgstr "Réclamation n°"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,state:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_state
|
||||
msgid "State"
|
||||
msgstr "Etat"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,applicable_guarantee:0
|
||||
#: field:claim.line,warranty_type:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_applicable_guarantee
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warranty_type
|
||||
msgid "Warranty type"
|
||||
msgstr "Type de garantie"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking
|
||||
msgid "Picking List"
|
||||
msgstr "Opération de manutention"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,warehouse_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_warehouse_id
|
||||
msgid "Warehouse"
|
||||
msgstr "Entrepôt"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_origine:0
|
||||
msgid "To describe the line product problem"
|
||||
msgstr "Pour décrire le problème de la ligne de produit"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim_make_picking.wizard,claim_line_dest_location:0
|
||||
msgid "Location where the system will stock the returned products."
|
||||
msgstr ""
|
||||
"Emplacement vers lequel le système va stocker les produits retournés."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "More"
|
||||
msgstr "Plus"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Legal retractation"
|
||||
msgstr "Rétracation légale"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/account_invoice.py:76
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:312
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:195
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:203
|
||||
#, python-format
|
||||
msgid "Error !"
|
||||
msgstr "Erreur !"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,guarantee_limit:0
|
||||
msgid ""
|
||||
"The warranty limit is computed as: invoice date + warranty defined on "
|
||||
"selected product."
|
||||
msgstr ""
|
||||
"La limite de garantie est calculé comme: date de facture + garantie définie "
|
||||
"dans le produit sélectionné."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_origine:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_origine
|
||||
msgid "Claim Subject"
|
||||
msgstr "Sujet de la réclamation"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,real_cost:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_real_cost
|
||||
msgid "Real cost"
|
||||
msgstr "Coût réél"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_id:0
|
||||
msgid "To link to the case.claim object"
|
||||
msgstr "A relier à l'objet case.claim"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:73
|
||||
#, python-format
|
||||
msgid "A picking has already been created for this claim."
|
||||
msgstr "Une expédition/réception à déjà été créée pour cette réclamation !"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim18
|
||||
msgid "Pricing Error"
|
||||
msgstr "Erreur d'établissement des prix"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,product_returned_quantity:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_product_returned_quantity
|
||||
msgid "Quantity"
|
||||
msgstr "Quantité"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Confirmed, waiting for product"
|
||||
msgstr "Confirmé, attente du produit"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,claim_line_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_claim_line_ids
|
||||
#: model:ir.ui.menu,name:crm_claim_rma.menu_crm_case_claims_claim_lines
|
||||
msgid "Return lines"
|
||||
msgstr "Lignes de retour"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Stage"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,planned_revenue:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_planned_revenue
|
||||
msgid "Expected revenue"
|
||||
msgstr "Revenu attendu"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Controlled, to treate"
|
||||
msgstr "Contrôlé, à traiter"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_refunds_out
|
||||
msgid "Customer Refunds"
|
||||
msgstr "Remboursements client"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,location_dest_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_location_dest_id
|
||||
msgid "Return Stock Location"
|
||||
msgstr "Emplacement stock de retour"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_sale_orders
|
||||
msgid "Quotations and Sales"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Lost during transport"
|
||||
msgstr "Perte pendant le transport"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Shipping error"
|
||||
msgstr "Erreur d'expédition"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,warranty_return_partner:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warranty_return_partner
|
||||
msgid "Warranty Address"
|
||||
msgstr "Adresse de garantie"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,invoice_id:0
|
||||
msgid "Related original Cusotmer invoice"
|
||||
msgstr "Facture client d’origine liée"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim12
|
||||
msgid "Buyer Cancelled"
|
||||
msgstr "Annulation de l'acheteur"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_id
|
||||
msgid "Related claim"
|
||||
msgstr "Réclamation liée"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,invoice_line_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice_line
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_invoice_line_id
|
||||
msgid "Invoice Line"
|
||||
msgstr "Ligne de facture"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Linked Document"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,move_in_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_move_in_id
|
||||
msgid "Move Line from picking in"
|
||||
msgstr "Ligne de mouvement d'une réception"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim20
|
||||
msgid "Delivered Late by Carrier"
|
||||
msgstr "Livré en retard par le transporteur"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Product Return"
|
||||
msgstr "Retour produit"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Generated Documents"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,prodlot_id:0
|
||||
msgid "The serial/lot of the returned product"
|
||||
msgstr "N° de série/lot du produit retourné"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Refund"
|
||||
msgstr "Nouvel avoir"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,substate_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_substate_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_substate_substate_name
|
||||
#: field:substate.substate,name:0
|
||||
msgid "Sub state"
|
||||
msgstr "Sous-état"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_refunds_in
|
||||
msgid "Supplier Refunds"
|
||||
msgstr "Remboursements Fournisseur"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_descr:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_descr
|
||||
msgid "Claim description"
|
||||
msgstr "Description de la réclamation"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,real_revenue:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_real_revenue
|
||||
msgid "Real revenue"
|
||||
msgstr "Revenu réél"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Select lines for picking"
|
||||
msgstr "Selectionner les lignes pour l'expédition/réception"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,substate_id:0
|
||||
msgid ""
|
||||
"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,..."
|
||||
msgstr ""
|
||||
"Créer un sous-état pour préciser l'état standard. Exemple 1 : Etat = refusé; "
|
||||
"le sous-état peut être garantie expirée, pas de garantie, pas de "
|
||||
"problème,... . Exemple 2 : état = à créer; le sous-état peut être : à "
|
||||
"rembourser, à échanger, à réparer,..."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Select exchange lines to add in picking"
|
||||
msgstr "Selectionner les lignes à ajouter dans l'expédition/réception"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Draft"
|
||||
msgstr "Brouillon"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim14
|
||||
msgid "Could Not Ship"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_claim_line
|
||||
msgid "List of product to return"
|
||||
msgstr "Liste des produits à retourner"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim10
|
||||
msgid "No Inventory"
|
||||
msgstr "Plus de stock"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,unit_sale_price:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_unit_sale_price
|
||||
msgid "Unit sale price"
|
||||
msgstr "Prix de vente unitaire"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,refund_line_id:0
|
||||
msgid "The refund line related to the returned product"
|
||||
msgstr "Ligne d'avoir liée au produit retourné"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:245
|
||||
#, python-format
|
||||
msgid "expired"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking_in
|
||||
msgid "Incoming Shipments"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:substate.substate,substate_descr:0
|
||||
msgid "To give more information about the sub state"
|
||||
msgstr "Permet de donner plus d'information sur le sous état"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_substates
|
||||
msgid "Claim line substates"
|
||||
msgstr "Sous-états des lignes de réclamations"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim_make_picking.wizard,claim_line_source_location:0
|
||||
msgid "Location where the returned products are from."
|
||||
msgstr "Emplacement d'ou les produits retournés proviennent."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,picking_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_picking_ids
|
||||
#: view:stock.picking.in:0
|
||||
#: view:stock.picking.out:0
|
||||
msgid "RMA"
|
||||
msgstr "RMA"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
msgid "Brand manufacturer"
|
||||
msgstr "Marque du fabricant"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,prodlot_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_prodlot_id
|
||||
msgid "Serial/Lot n°"
|
||||
msgstr "N° de série/lot :"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,unit_sale_price:0
|
||||
msgid ""
|
||||
"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,..."
|
||||
msgstr ""
|
||||
"Prix de vente unitaire du produit. Remplis automatiquement si le retour est "
|
||||
"effectué avec la sélection de la facture. ETRE VIGILANT ET VERIFIER les "
|
||||
"valeurs automatiques récupérée différentes des précédents avoir, réductions "
|
||||
"sur la facture,..."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: sql_constraint:crm.claim:0
|
||||
msgid "Number/Reference must be unique per Company!"
|
||||
msgstr "La référence doit être unique par société !"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:313
|
||||
#, python-format
|
||||
msgid "Please set product and invoice."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Damaged delivered product"
|
||||
msgstr "Produit livré endommagé"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_ids:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_case_claim_lines
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_ids
|
||||
msgid "Claim lines"
|
||||
msgstr "Lignes de réclamations"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:341
|
||||
#, python-format
|
||||
msgid "There is no warehouse for the current user's company."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:223
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:233
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:72
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr "Erreur !"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Action"
|
||||
msgstr "Action"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: view:crm.claim:0
|
||||
msgid "Claims"
|
||||
msgstr "Réclamation"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Problem"
|
||||
msgstr "Problème"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Treated"
|
||||
msgstr "Traité"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim16
|
||||
msgid "Merchandise Not Received"
|
||||
msgstr "Marchandise non reçue"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,number:0
|
||||
msgid "Company internal claim unique number"
|
||||
msgstr "Numéro unique de réclamation interne à la société"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.ui.menu,name:crm_claim_rma.menu_crm_case_claims_claim_line_substates
|
||||
msgid "Returned line substates"
|
||||
msgstr "Sous-états des lignes"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Substate"
|
||||
msgstr "Sous-état"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_invoice_out
|
||||
msgid "Customer Invoices"
|
||||
msgstr "Factures client"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_source_location:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_source_location
|
||||
msgid "Source Location"
|
||||
msgstr "Emplacement source"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,number:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_number
|
||||
msgid "Number"
|
||||
msgstr "Numéro"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_picking_out
|
||||
msgid "Deliveries"
|
||||
msgstr "Livraisons"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:crm.claim,invoice_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_invoice_id
|
||||
msgid "Invoice"
|
||||
msgstr "Facture"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,invoice_line_id:0
|
||||
msgid "The invoice line related to the returned product"
|
||||
msgstr "La ligne de facture reliée au produit retourné"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim21
|
||||
msgid "Missed Fulfilment Promise"
|
||||
msgstr "Promesse de traitement non tenue"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "In Progress"
|
||||
msgstr "En cours"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.section,name:crm_claim_rma.section_after_sales_service
|
||||
msgid "After Sales Service"
|
||||
msgstr "Service-après-vente"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Received, to control"
|
||||
msgstr "Reçu, à contrôler"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim17
|
||||
msgid "Merchandise Not As Described"
|
||||
msgstr "Produit ne correspondant pas à sa description"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Exchange request"
|
||||
msgstr "Demande d'échange"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_substate_substate
|
||||
msgid "substate that precise a given state"
|
||||
msgstr "Sous état précisant l'état principal"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:226
|
||||
#, python-format
|
||||
msgid "not_define"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.action_claim_picking_in
|
||||
msgid "Return Products"
|
||||
msgstr "Produit retourné"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Current"
|
||||
msgstr "Actuel"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Other"
|
||||
msgstr "Autre"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Products Return"
|
||||
msgstr "Nouveau retour produit"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_invoice_in
|
||||
msgid "Supplier Invoices"
|
||||
msgstr "Factures fournisseurs"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,product_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_product_id
|
||||
msgid "Product"
|
||||
msgstr "Produit"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,name:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_name
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_substate_substate_substate_descr
|
||||
#: field:substate.substate,substate_descr:0
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Search Claims"
|
||||
msgstr "Recherche réclamations"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,claim_type:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_claim_type
|
||||
msgid "Claim type"
|
||||
msgstr "Type de réclamation"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:196
|
||||
#, python-format
|
||||
msgid ""
|
||||
"A product return cannot be created for various destination locations, please "
|
||||
"choose line with a same destination location."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:247
|
||||
#, python-format
|
||||
msgid "valid"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:340
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr "Erreur !"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,location_dest_id:0
|
||||
msgid "The return stock location of the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warning:0
|
||||
msgid "If warranty has expired"
|
||||
msgstr "Si la garantie a expirée"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warranty_return_partner:0
|
||||
msgid "Where the customer has to send back the product(s)"
|
||||
msgstr "Adresse vers laquelle le client doit renvoyer le(s) produit(s)"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Follow Up"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Customer"
|
||||
msgstr "Client"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,move_out_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_move_out_id
|
||||
msgid "Move Line from picking out"
|
||||
msgstr "Ligne de mouvement à partir d'une expédition"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: field:crm.claim,invoice_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_invoice_ids
|
||||
msgid "Refunds"
|
||||
msgstr "Avoirs"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice_refund
|
||||
msgid "Invoice Refund"
|
||||
msgstr "Avoir"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,return_value:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_return_value
|
||||
msgid "Total return"
|
||||
msgstr "Retour total"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,return_value:0
|
||||
msgid "Quantity returned * Unit sold price"
|
||||
msgstr "Quantité retournée * Prix de vente unitaire"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim19
|
||||
msgid "Shipping Address Undeliverable"
|
||||
msgstr "Mauvaise adresse de livraison"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_picking_in
|
||||
msgid "Incoming Shipment and Returns"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:stock.picking.out:0
|
||||
msgid "Delivery orders to invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,move_in_id:0
|
||||
#: help:claim.line,move_out_id:0
|
||||
msgid "The move line related to the returned product"
|
||||
msgstr "La ligne de mouvement liée au produit retourné"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "or"
|
||||
msgstr "ou"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Sales Team"
|
||||
msgstr "Équipe de vente"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim15
|
||||
msgid "Different Item"
|
||||
msgstr "Article différent"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_claim_make_picking_wizard
|
||||
msgid "Wizard to create pickings from claim lines"
|
||||
msgstr ""
|
||||
"Assistant pour créer des expédition/réceptions à partir des lignes de "
|
||||
"réclamation"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,claim_type:0
|
||||
msgid ""
|
||||
"Customer: from customer to company.\n"
|
||||
" Supplier: from company to supplier."
|
||||
msgstr ""
|
||||
"client : du client vers l'entreprise.\n"
|
||||
" fournisseur : de l'entreprise vers son fournisseur"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "In Progress Claims"
|
||||
msgstr "Réclamations en cours"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:234
|
||||
#, python-format
|
||||
msgid "The product has no supplier configured."
|
||||
msgstr "Le produit n'a pas de fournisseur défini."
|
||||
928
__unported__/crm_claim_rma/i18n/pt_BR.po
Normal file
928
__unported__/crm_claim_rma/i18n/pt_BR.po
Normal file
@@ -0,0 +1,928 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * crm_claim
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-12-20 18:21+0000\n"
|
||||
"PO-Revision-Date: 2014-01-22 19:16+0000\n"
|
||||
"Last-Translator: Joël Grand-Guillaume @ camptocamp "
|
||||
"<joel.grandguillaume@camptocamp.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-24 06:50+0000\n"
|
||||
"X-Generator: Launchpad (build 17017)\n"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Returned good"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Locations"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Draft and Open Claims"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Group By..."
|
||||
msgstr "Agrupar por..."
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_descr:0
|
||||
msgid "More precise description of the problem"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,guarantee_limit:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_guarantee_limit
|
||||
msgid "Warranty limit"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Supplier"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Refused"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:stock.picking.in:0
|
||||
#: view:stock.picking.out:0
|
||||
msgid "To Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,refund_line_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_refund_line_id
|
||||
msgid "Refund Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Order cancellation"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_dest_location:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_dest_location
|
||||
msgid "Dest. Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:224
|
||||
#, python-format
|
||||
msgid "Cannot find any date for invoice. Must be a validated invoice."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,last_state_change:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_last_state_change
|
||||
msgid "Last change"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,product_id:0
|
||||
msgid "Returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Create picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Claim Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Delivery"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Calculate warranty state"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/account_invoice.py:77
|
||||
#, python-format
|
||||
msgid "A refund has already been created for this claim !"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Compute Waranty"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:account.invoice,claim_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_crm_claim
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_account_invoice_claim_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id_4030
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_stock_picking_claim_id_4031
|
||||
#: field:stock.picking,claim_id:0
|
||||
#: field:stock.picking.in,claim_id:0
|
||||
#: field:stock.picking.out,claim_id:0
|
||||
msgid "Claim"
|
||||
msgstr "Solicitação"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim13
|
||||
msgid "General Adjustement"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:204
|
||||
#, python-format
|
||||
msgid ""
|
||||
"A product return cannot be created for various destination addresses, please "
|
||||
"choose line with a same address."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.action_claim_picking_out
|
||||
msgid "Create Outgoing Shipments"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,warning:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warning
|
||||
msgid "Warranty"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim11
|
||||
msgid "Customer Return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,product_returned_quantity:0
|
||||
msgid "Quantity of product returned"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,planned_cost:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_planned_cost
|
||||
msgid "Expected cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Receptions / Deliveries"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warranty_type:0
|
||||
msgid ""
|
||||
"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"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking_out
|
||||
msgid "Delivery Orders"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,last_state_change:0
|
||||
msgid "To set the last state / substate change"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Not specified"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Returned lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Claim n°"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,state:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_state
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,applicable_guarantee:0
|
||||
#: field:claim.line,warranty_type:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_applicable_guarantee
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warranty_type
|
||||
msgid "Warranty type"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking
|
||||
msgid "Picking List"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,warehouse_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_warehouse_id
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_origine:0
|
||||
msgid "To describe the line product problem"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim_make_picking.wizard,claim_line_dest_location:0
|
||||
msgid "Location where the system will stock the returned products."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "More"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Legal retractation"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/account_invoice.py:76
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:312
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:195
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:203
|
||||
#, python-format
|
||||
msgid "Error !"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,guarantee_limit:0
|
||||
msgid ""
|
||||
"The warranty limit is computed as: invoice date + warranty defined on "
|
||||
"selected product."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_origine:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_origine
|
||||
msgid "Claim Subject"
|
||||
msgstr "Assunto da Solicitação"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,real_cost:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_real_cost
|
||||
msgid "Real cost"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,claim_id:0
|
||||
msgid "To link to the case.claim object"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:73
|
||||
#, python-format
|
||||
msgid "A picking has already been created for this claim."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim18
|
||||
msgid "Pricing Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,product_returned_quantity:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_product_returned_quantity
|
||||
msgid "Quantity"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Confirmed, waiting for product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,claim_line_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_claim_line_ids
|
||||
#: model:ir.ui.menu,name:crm_claim_rma.menu_crm_case_claims_claim_lines
|
||||
msgid "Return lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Stage"
|
||||
msgstr "Estágio"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,planned_revenue:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_planned_revenue
|
||||
msgid "Expected revenue"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Controlled, to treate"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_refunds_out
|
||||
msgid "Customer Refunds"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,location_dest_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_location_dest_id
|
||||
msgid "Return Stock Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_sale_orders
|
||||
msgid "Quotations and Sales"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Lost during transport"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Shipping error"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,warranty_return_partner:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_warranty_return_partner
|
||||
msgid "Warranty Address"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,invoice_id:0
|
||||
msgid "Related original Cusotmer invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim12
|
||||
msgid "Buyer Cancelled"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_id
|
||||
msgid "Related claim"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,invoice_line_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice_line
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_invoice_line_id
|
||||
msgid "Invoice Line"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Linked Document"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,move_in_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_move_in_id
|
||||
msgid "Move Line from picking in"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim20
|
||||
msgid "Delivered Late by Carrier"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Product Return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Generated Documents"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,prodlot_id:0
|
||||
msgid "The serial/lot of the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Refund"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,substate_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_substate_id
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_substate_substate_name
|
||||
#: field:substate.substate,name:0
|
||||
msgid "Sub state"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_refunds_in
|
||||
msgid "Supplier Refunds"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,claim_descr:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_claim_descr
|
||||
msgid "Claim description"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,real_revenue:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_real_revenue
|
||||
msgid "Real revenue"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Select lines for picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,substate_id:0
|
||||
msgid ""
|
||||
"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,..."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Select exchange lines to add in picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Draft"
|
||||
msgstr "Provisório"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim14
|
||||
msgid "Could Not Ship"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_claim_line
|
||||
msgid "List of product to return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim10
|
||||
msgid "No Inventory"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,unit_sale_price:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_unit_sale_price
|
||||
msgid "Unit sale price"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,refund_line_id:0
|
||||
msgid "The refund line related to the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:245
|
||||
#, python-format
|
||||
msgid "expired"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_stock_picking_in
|
||||
msgid "Incoming Shipments"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:substate.substate,substate_descr:0
|
||||
msgid "To give more information about the sub state"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_substates
|
||||
msgid "Claim line substates"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim_make_picking.wizard,claim_line_source_location:0
|
||||
msgid "Location where the returned products are from."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,picking_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_picking_ids
|
||||
#: view:stock.picking.in:0
|
||||
#: view:stock.picking.out:0
|
||||
msgid "RMA"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,applicable_guarantee:0
|
||||
msgid "Brand manufacturer"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,prodlot_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_prodlot_id
|
||||
msgid "Serial/Lot n°"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,unit_sale_price:0
|
||||
msgid ""
|
||||
"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,..."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: sql_constraint:crm.claim:0
|
||||
msgid "Number/Reference must be unique per Company!"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:313
|
||||
#, python-format
|
||||
msgid "Please set product and invoice."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Damaged delivered product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_ids:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_case_claim_lines
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_ids
|
||||
msgid "Claim lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:341
|
||||
#, python-format
|
||||
msgid "There is no warehouse for the current user's company."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:223
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:233
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:72
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: view:crm.claim:0
|
||||
msgid "Claims"
|
||||
msgstr "Solicitações"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Problem"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Treated"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim16
|
||||
msgid "Merchandise Not Received"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,number:0
|
||||
msgid "Company internal claim unique number"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.ui.menu,name:crm_claim_rma.menu_crm_case_claims_claim_line_substates
|
||||
msgid "Returned line substates"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Substate"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_invoice_out
|
||||
msgid "Customer Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim_make_picking.wizard,claim_line_source_location:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_make_picking_wizard_claim_line_source_location
|
||||
msgid "Source Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,number:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_number
|
||||
msgid "Number"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_picking_out
|
||||
msgid "Deliveries"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:crm.claim,invoice_id:0
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_invoice_id
|
||||
msgid "Invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,invoice_line_id:0
|
||||
msgid "The invoice line related to the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim21
|
||||
msgid "Missed Fulfilment Promise"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "In Progress"
|
||||
msgstr "Em Andamento"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.section,name:crm_claim_rma.section_after_sales_service
|
||||
msgid "After Sales Service"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,state:0
|
||||
msgid "Received, to control"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim17
|
||||
msgid "Merchandise Not As Described"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
msgid "Exchange request"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_substate_substate
|
||||
msgid "substate that precise a given state"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:226
|
||||
#, python-format
|
||||
msgid "not_define"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.action_claim_picking_in
|
||||
msgid "Return Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Current"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:claim.line,claim_origine:0
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "New Products Return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_invoice_in
|
||||
msgid "Supplier Invoices"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
#: field:claim.line,product_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_product_id
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,name:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_name
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_substate_substate_substate_descr
|
||||
#: field:substate.substate,substate_descr:0
|
||||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "Search Claims"
|
||||
msgstr "Pesquisar Solicitações"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:crm.claim,claim_type:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_claim_type
|
||||
msgid "Claim type"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/wizard/claim_make_picking.py:196
|
||||
#, python-format
|
||||
msgid ""
|
||||
"A product return cannot be created for various destination locations, please "
|
||||
"choose line with a same destination location."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:247
|
||||
#, python-format
|
||||
msgid "valid"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:340
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,location_dest_id:0
|
||||
msgid "The return stock location of the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warning:0
|
||||
msgid "If warranty has expired"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,warranty_return_partner:0
|
||||
msgid "Where the customer has to send back the product(s)"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Follow Up"
|
||||
msgstr "Lembrete"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: selection:crm.claim,claim_type:0
|
||||
msgid "Customer"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,move_out_id:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_move_out_id
|
||||
msgid "Move Line from picking out"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
#: field:crm.claim,invoice_ids:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_crm_claim_invoice_ids
|
||||
msgid "Refunds"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_account_invoice_refund
|
||||
msgid "Invoice Refund"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: field:claim.line,return_value:0
|
||||
#: model:ir.model.fields,field_description:crm_claim_rma.field_claim_line_return_value
|
||||
msgid "Total return"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,return_value:0
|
||||
msgid "Quantity returned * Unit sold price"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim19
|
||||
msgid "Shipping Address Undeliverable"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.actions.act_window,name:crm_claim_rma.act_crm_claim_rma_picking_in
|
||||
msgid "Incoming Shipment and Returns"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:stock.picking.out:0
|
||||
msgid "Delivery orders to invoice"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:claim.line,move_in_id:0
|
||||
#: help:claim.line,move_out_id:0
|
||||
msgid "The move line related to the returned product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim_make_picking.wizard:0
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:crm.claim:0
|
||||
msgid "Sales Team"
|
||||
msgstr "Equipe de Vendas"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:crm.case.categ,name:crm_claim_rma.categ_claim15
|
||||
msgid "Different Item"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: model:ir.model,name:crm_claim_rma.model_claim_make_picking_wizard
|
||||
msgid "Wizard to create pickings from claim lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: help:crm.claim,claim_type:0
|
||||
msgid ""
|
||||
"Customer: from customer to company.\n"
|
||||
" Supplier: from company to supplier."
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: view:claim.line:0
|
||||
msgid "In Progress Claims"
|
||||
msgstr "Solicitações em Andamento"
|
||||
|
||||
#. module: crm_claim_rma
|
||||
#: code:addons/crm_claim_rma/crm_claim_rma.py:234
|
||||
#, python-format
|
||||
msgid "The product has no supplier configured."
|
||||
msgstr ""
|
||||
25
__unported__/crm_claim_rma/res_partner_view.xml
Normal file
25
__unported__/crm_claim_rma/res_partner_view.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- Address list with details to help shipping address selection -->
|
||||
<record id="view_partner_contact_tree" model="ir.ui.view">
|
||||
<field name="name">res.partner.contact.tree</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Contacts">
|
||||
<field name="name"/>
|
||||
<field name="function" invisible="1"/>
|
||||
<field name="street"/>
|
||||
<field name="zip"/>
|
||||
<field name="city"/>
|
||||
<field name="email"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="is_company" invisible="1"/>
|
||||
<field name="country" invisible="1"/>
|
||||
<field name="country_id"/>
|
||||
<field name="parent_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
7
__unported__/crm_claim_rma/security/ir.model.access.csv
Normal file
7
__unported__/crm_claim_rma/security/ir.model.access.csv
Normal file
@@ -0,0 +1,7 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_substate_user","substate.substate.user","model_substate_substate","base.group_sale_salesman_all_leads","True","True","True",
|
||||
"access_claim_line_user","claim.line.user","model_claim_line","base.group_sale_salesman_all_leads","True","True","True",
|
||||
"access_substate_manager","substate.substate.manager","model_substate_substate","base.group_sale_manager","True","True","True","True"
|
||||
"access_claim_line_manager","claim.line.manager","model_claim_line","base.group_sale_manager","True","True","True","True"
|
||||
"access_substate_user","substate.substate.user","model_substate_substate","base.group_sale_salesman","True","True","True",
|
||||
"access_claim_line_user","claim.line.user","model_claim_line","base.group_sale_salesman","True","True","True",
|
||||
|
84
__unported__/crm_claim_rma/stock.py
Normal file
84
__unported__/crm_claim_rma/stock.py
Normal file
@@ -0,0 +1,84 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
|
||||
# Benoît Guillot, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from openerp.osv import fields, orm
|
||||
|
||||
|
||||
class stock_picking(orm.Model):
|
||||
|
||||
_inherit = "stock.picking"
|
||||
|
||||
_columns = {
|
||||
'claim_id': fields.many2one('crm.claim', 'Claim'),
|
||||
}
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
if ('name' not in vals) or (vals.get('name') == '/'):
|
||||
sequence_obj = self.pool.get('ir.sequence')
|
||||
if vals['type'] == 'internal':
|
||||
seq_obj_name = self._name
|
||||
else:
|
||||
seq_obj_name = 'stock.picking.' + vals['type']
|
||||
vals['name'] = sequence_obj.get(cr, uid, seq_obj_name,
|
||||
context=context)
|
||||
new_id = super(stock_picking, self).create(cr, uid, vals,
|
||||
context=context)
|
||||
return new_id
|
||||
|
||||
|
||||
class stock_picking_out(orm.Model):
|
||||
|
||||
_inherit = "stock.picking.out"
|
||||
|
||||
_columns = {
|
||||
'claim_id': fields.many2one('crm.claim', 'Claim'),
|
||||
}
|
||||
|
||||
|
||||
class stock_picking_in(orm.Model):
|
||||
|
||||
_inherit = "stock.picking.in"
|
||||
|
||||
_columns = {
|
||||
'claim_id': fields.many2one('crm.claim', 'Claim'),
|
||||
}
|
||||
|
||||
|
||||
# This part concern the case of a wrong picking out. We need to create a new
|
||||
# stock_move in a picking already open.
|
||||
# In order to don't have to confirm the stock_move we override the create and
|
||||
# confirm it at the creation only for this case
|
||||
class stock_move(orm.Model):
|
||||
|
||||
_inherit = "stock.move"
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
move_id = super(stock_move, self
|
||||
).create(cr, uid, vals, context=context)
|
||||
if vals.get('picking_id'):
|
||||
picking_obj = self.pool.get('stock.picking')
|
||||
picking = picking_obj.browse(cr, uid, vals['picking_id'],
|
||||
context=context)
|
||||
if picking.claim_id and picking.type == u'in':
|
||||
self.write(cr, uid, move_id, {'state': 'confirmed'},
|
||||
context=context)
|
||||
return move_id
|
||||
55
__unported__/crm_claim_rma/stock_view.xml
Normal file
55
__unported__/crm_claim_rma/stock_view.xml
Normal file
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- INHERITED VIEW FOR THE OBJECT : stock_picking -->
|
||||
|
||||
<record id="picking_in_form" model="ir.ui.view">
|
||||
<field name="name">crm_claim_rma.picking_in_form</field>
|
||||
<field name="model">stock.picking.in</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_in_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='move_type']" position="after">
|
||||
<field name="claim_id" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="picking_out_form" model="ir.ui.view">
|
||||
<field name="name">crm_claim_rma.picking_out_form</field>
|
||||
<field name="model">stock.picking.out</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_out_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/sheet/notebook/page/group/group/field[@name='move_type']" position="after">
|
||||
<field name="claim_id" />
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_picking_in_search" model="ir.ui.view">
|
||||
<field name="name">crm_claim_rma.picking_in_search</field>
|
||||
<field name="model">stock.picking.in</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_in_search" />
|
||||
<field name="arch" type="xml">
|
||||
<filter string="To Invoice" name="to_invoice" icon="terp-dolar" domain="[('invoice_state', '=', '2binvoiced')]" position="after">
|
||||
<separator/>
|
||||
<filter string="RMA" icon="terp-accessories-archiver-minus" domain="[('claim_id', '!=', 'False')]" />
|
||||
<field name="claim_id" string="RMA" invisible="True"/>
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_picking_out_search" model="ir.ui.view">
|
||||
<field name="name">crm_claim_rma.picking_out_search</field>
|
||||
<field name="model">stock.picking.out</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_out_search" />
|
||||
<field name="arch" type="xml">
|
||||
<filter icon="terp-dolar" name="to_invoice" string="To Invoice" domain="[('invoice_state','=','2binvoiced')]" help="Delivery orders to invoice" position="after">
|
||||
<separator/>
|
||||
<filter string="RMA" icon="terp-accessories-archiver-minus" domain="[('claim_id', '!=', 'False')]" />
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
56
__unported__/crm_claim_rma/test/test_invoice_refund.yml
Normal file
56
__unported__/crm_claim_rma/test/test_invoice_refund.yml
Normal file
@@ -0,0 +1,56 @@
|
||||
-
|
||||
In order to test the refund creation from a claim
|
||||
-
|
||||
I create a customer invoice
|
||||
-
|
||||
!record {model: account.invoice, id: account_invoice_claim_refund, view: account.invoice_form}:
|
||||
payment_term: account.account_payment_term_advance
|
||||
journal_id: account.sales_journal
|
||||
partner_id: base.res_partner_3
|
||||
name: 'Test Customer Invoice'
|
||||
invoice_line:
|
||||
- product_id: product.product_product_5
|
||||
quantity: 10.0
|
||||
- product_id: product.product_product_4
|
||||
quantity: 5.0
|
||||
-
|
||||
I confirm the invoice
|
||||
-
|
||||
!workflow {model: account.invoice, action: invoice_open, ref: account_invoice_claim_refund}
|
||||
-
|
||||
I create a claim
|
||||
-
|
||||
!record {model: crm.claim, id: claim_refund}:
|
||||
name: 'Angry Customer'
|
||||
claim_type: customer
|
||||
partner_id: base.res_partner_3
|
||||
invoice_id: account_invoice_claim_refund
|
||||
state: open
|
||||
-
|
||||
I prepare the wizard context.
|
||||
-
|
||||
!python {model: account.invoice.refund}: |
|
||||
claim_lines = self.pool.get('claim.line').search(cr, uid, [('claim_id','=',ref('claim_refund'))])
|
||||
context.update({'active_model': 'crm_claim', 'active_id': ref('claim_refund'), 'claim_id': ref('claim_refund'), 'claim_line_ids': [[4, claim_lines[0], False], [4, claim_lines[1], False]], 'invoice_ids':[ref('account_invoice_claim_refund')] })
|
||||
-
|
||||
I create a refund wizard
|
||||
-
|
||||
!record {model: account.invoice.refund, id: wizard_claim_refund}:
|
||||
filter_refund: refund
|
||||
description: 'claim refund'
|
||||
-
|
||||
I launch the refund wizard
|
||||
-
|
||||
!python {model: account.invoice.refund}: |
|
||||
self.compute_refund(cr, uid, [ref('wizard_claim_refund')], 'refund', context=context)
|
||||
-
|
||||
I check that a refund linked to the claim has been created.
|
||||
-
|
||||
!python {model: account.invoice}: |
|
||||
refund = self.search(cr, uid, [('type', '=', 'out_refund'),('claim_id', '=', ref('claim_refund'))])
|
||||
assert refund, "The refund is created"
|
||||
refund_line_ids = self.pool.get('account.invoice.line').search(cr, uid, [('invoice_id','=',refund[0])])
|
||||
assert len(refund_line_ids) == 2, "It contains 2 lines, as excepted"
|
||||
refund_lines = self.pool.get('account.invoice.line').browse(cr, uid, refund_line_ids)
|
||||
assert ref('product.product_product_4') in [refund_lines[0].product_id.id, refund_lines[1].product_id.id], "First line is checked"
|
||||
assert ref('product.product_product_5') in [refund_lines[0].product_id.id, refund_lines[1].product_id.id], "Second line is checked"
|
||||
21
__unported__/crm_claim_rma/tests/__init__.py
Normal file
21
__unported__/crm_claim_rma/tests/__init__.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Yannick Vaucher
|
||||
# Copyright 2014 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from . import test_lp_1282584
|
||||
112
__unported__/crm_claim_rma/tests/test_lp_1282584.py
Normal file
112
__unported__/crm_claim_rma/tests/test_lp_1282584.py
Normal file
@@ -0,0 +1,112 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Yannick Vaucher
|
||||
# Copyright 2014 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from openerp.tests import common
|
||||
|
||||
|
||||
class test_lp_1282584(common.TransactionCase):
|
||||
""" Test wizard open the right type of view
|
||||
|
||||
The wizard can generate picking.in and picking.out
|
||||
Let's ensure it open the right view for each picking type
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
super(test_lp_1282584, self).setUp()
|
||||
cr, uid = self.cr, self.uid
|
||||
|
||||
self.WizardMakePicking = self.registry('claim_make_picking.wizard')
|
||||
ClaimLine = self.registry('claim.line')
|
||||
Claim = self.registry('crm.claim')
|
||||
|
||||
self.product_id = self.ref('product.product_product_4')
|
||||
|
||||
self.partner_id = self.ref('base.res_partner_12')
|
||||
|
||||
# Create the claim with a claim line
|
||||
self.claim_id = Claim.create(
|
||||
cr, uid,
|
||||
{
|
||||
'name': 'TEST CLAIM',
|
||||
'number': 'TEST CLAIM',
|
||||
'claim_type': 'customer',
|
||||
'delivery_address_id': self.partner_id,
|
||||
})
|
||||
|
||||
claim = Claim.browse(cr, uid, self.claim_id)
|
||||
self.warehouse_id = claim.warehouse_id.id
|
||||
self.claim_line_id = ClaimLine.create(
|
||||
cr, uid,
|
||||
{
|
||||
'name': 'TEST CLAIM LINE',
|
||||
'claim_origine': 'none',
|
||||
'product_id': self.product_id,
|
||||
'claim_id': self.claim_id,
|
||||
'location_dest_id': claim.warehouse_id.lot_stock_id.id
|
||||
})
|
||||
|
||||
def test_00(self):
|
||||
"""Test wizard opened view model for a new product return
|
||||
|
||||
"""
|
||||
cr, uid = self.cr, self.uid
|
||||
wiz_context = {
|
||||
'active_id': self.claim_id,
|
||||
'partner_id': self.partner_id,
|
||||
'warehouse_id': self.warehouse_id,
|
||||
'picking_type': 'in',
|
||||
}
|
||||
wizard_id = self.WizardMakePicking.create(cr, uid, {
|
||||
}, context=wiz_context)
|
||||
|
||||
res = self.WizardMakePicking.action_create_picking(
|
||||
cr, uid, [wizard_id], context=wiz_context)
|
||||
self.assertEquals(res.get('res_model'), 'stock.picking.in',
|
||||
"Wrong model defined")
|
||||
|
||||
def test_01(self):
|
||||
"""Test wizard opened view model for a new delivery
|
||||
|
||||
"""
|
||||
|
||||
cr, uid = self.cr, self.uid
|
||||
|
||||
WizardChangeProductQty = self.registry('stock.change.product.qty')
|
||||
wiz_context = {'active_id': self.product_id}
|
||||
wizard_chg_qty_id = WizardChangeProductQty.create(cr, uid, {
|
||||
'product_id': self.product_id,
|
||||
'new_quantity': 12})
|
||||
WizardChangeProductQty.change_product_qty(cr, uid,
|
||||
[wizard_chg_qty_id],
|
||||
context=wiz_context)
|
||||
|
||||
wiz_context = {
|
||||
'active_id': self.claim_id,
|
||||
'partner_id': self.partner_id,
|
||||
'warehouse_id': self.warehouse_id,
|
||||
'picking_type': 'out',
|
||||
}
|
||||
wizard_id = self.WizardMakePicking.create(cr, uid, {
|
||||
}, context=wiz_context)
|
||||
|
||||
res = self.WizardMakePicking.action_create_picking(
|
||||
cr, uid, [wizard_id], context=wiz_context)
|
||||
self.assertEquals(res.get('res_model'), 'stock.picking.out',
|
||||
"Wrong model defined")
|
||||
24
__unported__/crm_claim_rma/wizard/__init__.py
Normal file
24
__unported__/crm_claim_rma/wizard/__init__.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
|
||||
# Benoît Guillot, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from . import claim_make_picking
|
||||
from . import account_invoice_refund
|
||||
46
__unported__/crm_claim_rma/wizard/account_invoice_refund.py
Normal file
46
__unported__/crm_claim_rma/wizard/account_invoice_refund.py
Normal file
@@ -0,0 +1,46 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
|
||||
# Benoît Guillot, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from openerp.osv import orm
|
||||
|
||||
|
||||
class account_invoice_refund(orm.TransientModel):
|
||||
|
||||
_inherit = "account.invoice.refund"
|
||||
|
||||
def compute_refund(self, cr, uid, ids, mode='refund', context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if context.get('invoice_ids'):
|
||||
context['active_ids'] = context.get('invoice_ids')
|
||||
return super(account_invoice_refund, self).compute_refund(
|
||||
cr, uid, ids, mode=mode, context=context)
|
||||
|
||||
def _get_description(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
description = context.get('description') or ''
|
||||
return description
|
||||
|
||||
_defaults = {
|
||||
'description': _get_description,
|
||||
}
|
||||
270
__unported__/crm_claim_rma/wizard/claim_make_picking.py
Normal file
270
__unported__/crm_claim_rma/wizard/claim_make_picking.py
Normal file
@@ -0,0 +1,270 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau,
|
||||
# Benoît Guillot, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from openerp.osv import fields, orm
|
||||
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
from openerp import netsvc
|
||||
from openerp.tools.translate import _
|
||||
import time
|
||||
|
||||
|
||||
class claim_make_picking(orm.TransientModel):
|
||||
|
||||
_name = 'claim_make_picking.wizard'
|
||||
_description = 'Wizard to create pickings from claim lines'
|
||||
_columns = {
|
||||
'claim_line_source_location': fields.many2one(
|
||||
'stock.location',
|
||||
string='Source Location',
|
||||
help="Location where the returned products are from.",
|
||||
required=True),
|
||||
'claim_line_dest_location': fields.many2one(
|
||||
'stock.location',
|
||||
string='Dest. Location',
|
||||
help="Location where the system will stock the returned products.",
|
||||
required=True),
|
||||
'claim_line_ids': fields.many2many(
|
||||
'claim.line',
|
||||
'claim_line_picking',
|
||||
'claim_picking_id',
|
||||
'claim_line_id',
|
||||
string='Claim lines'),
|
||||
}
|
||||
|
||||
def _get_claim_lines(self, cr, uid, context):
|
||||
# TODO use custom states to show buttons of this wizard or not instead
|
||||
# of raise an error
|
||||
if context is None:
|
||||
context = {}
|
||||
line_obj = self.pool.get('claim.line')
|
||||
if context.get('picking_type') == 'out':
|
||||
move_field = 'move_out_id'
|
||||
else:
|
||||
move_field = 'move_in_id'
|
||||
good_lines = []
|
||||
line_ids = line_obj.search(
|
||||
cr, uid,
|
||||
[('claim_id', '=', context['active_id'])],
|
||||
context=context)
|
||||
for line in line_obj.browse(cr, uid, line_ids, context=context):
|
||||
if not line[move_field] or line[move_field].state == 'cancel':
|
||||
good_lines.append(line.id)
|
||||
if not good_lines:
|
||||
raise orm.except_orm(
|
||||
_('Error'),
|
||||
_('A picking has already been created for this claim.'))
|
||||
return good_lines
|
||||
|
||||
# Get default source location
|
||||
def _get_source_loc(self, cr, uid, context):
|
||||
loc_id = False
|
||||
if context is None:
|
||||
context = {}
|
||||
warehouse_obj = self.pool.get('stock.warehouse')
|
||||
warehouse_id = context.get('warehouse_id')
|
||||
if context.get('picking_type') == 'out':
|
||||
loc_id = warehouse_obj.read(
|
||||
cr, uid, warehouse_id,
|
||||
['lot_stock_id'],
|
||||
context=context)['lot_stock_id'][0]
|
||||
elif context.get('partner_id'):
|
||||
loc_id = self.pool.get('res.partner').read(
|
||||
cr, uid, context['partner_id'],
|
||||
['property_stock_customer'],
|
||||
context=context)['property_stock_customer'][0]
|
||||
return loc_id
|
||||
|
||||
def _get_common_dest_location_from_line(self, cr, uid, line_ids, context):
|
||||
"""Return the ID of the common location between all lines. If no common
|
||||
destination was found, return False"""
|
||||
loc_id = False
|
||||
line_obj = self.pool.get('claim.line')
|
||||
line_location = []
|
||||
for line in line_obj.browse(cr, uid, line_ids, context=context):
|
||||
if line.location_dest_id.id not in line_location:
|
||||
line_location.append(line.location_dest_id.id)
|
||||
if len(line_location) == 1:
|
||||
loc_id = line_location[0]
|
||||
return loc_id
|
||||
|
||||
def _get_common_partner_from_line(self, cr, uid, line_ids, context):
|
||||
"""Return the ID of the common partner between all lines. If no common
|
||||
partner was found, return False"""
|
||||
partner_id = False
|
||||
line_obj = self.pool.get('claim.line')
|
||||
line_partner = []
|
||||
for line in line_obj.browse(cr, uid, line_ids, context=context):
|
||||
if (line.warranty_return_partner
|
||||
and line.warranty_return_partner.id
|
||||
not in line_partner):
|
||||
line_partner.append(line.warranty_return_partner.id)
|
||||
if len(line_partner) == 1:
|
||||
partner_id = line_partner[0]
|
||||
return partner_id
|
||||
|
||||
# Get default destination location
|
||||
def _get_dest_loc(self, cr, uid, context):
|
||||
"""Return the location_id to use as destination.
|
||||
If it's an outoing shippment: take the customer stock property
|
||||
If it's an incoming shippment take the location_dest_id common to all
|
||||
lines, or if different, return None."""
|
||||
if context is None:
|
||||
context = {}
|
||||
loc_id = False
|
||||
if context.get('picking_type') == 'out' and context.get('partner_id'):
|
||||
loc_id = self.pool.get('res.partner').read(
|
||||
cr, uid, context.get('partner_id'),
|
||||
['property_stock_customer'],
|
||||
context=context)['property_stock_customer'][0]
|
||||
elif context.get('picking_type') == 'in' and context.get('partner_id'):
|
||||
# Add the case of return to supplier !
|
||||
line_ids = self._get_claim_lines(cr, uid, context=context)
|
||||
loc_id = self._get_common_dest_location_from_line(cr, uid,
|
||||
line_ids,
|
||||
context=context)
|
||||
return loc_id
|
||||
|
||||
_defaults = {
|
||||
'claim_line_source_location': _get_source_loc,
|
||||
'claim_line_dest_location': _get_dest_loc,
|
||||
'claim_line_ids': _get_claim_lines,
|
||||
}
|
||||
|
||||
def action_cancel(self, cr, uid, ids, context=None):
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
# If "Create" button pressed
|
||||
def action_create_picking(self, cr, uid, ids, context=None):
|
||||
picking_obj = self.pool.get('stock.picking')
|
||||
if context is None:
|
||||
context = {}
|
||||
view_obj = self.pool.get('ir.ui.view')
|
||||
name = 'RMA picking out'
|
||||
if context.get('picking_type') == 'out':
|
||||
p_type = 'out'
|
||||
write_field = 'move_out_id'
|
||||
note = 'RMA picking out'
|
||||
else:
|
||||
p_type = 'in'
|
||||
write_field = 'move_in_id'
|
||||
if context.get('picking_type'):
|
||||
note = 'RMA picking ' + str(context.get('picking_type'))
|
||||
name = note
|
||||
model = 'stock.picking.' + p_type
|
||||
view_id = view_obj.search(cr, uid,
|
||||
[('model', '=', model),
|
||||
('type', '=', 'form'),
|
||||
],
|
||||
context=context)[0]
|
||||
wizard = self.browse(cr, uid, ids[0], context=context)
|
||||
claim = self.pool.get('crm.claim').browse(cr, uid,
|
||||
context['active_id'],
|
||||
context=context)
|
||||
partner_id = claim.delivery_address_id.id
|
||||
line_ids = [x.id for x in wizard.claim_line_ids]
|
||||
# In case of product return, we don't allow one picking for various
|
||||
# product if location are different
|
||||
# or if partner address is different
|
||||
if context.get('product_return'):
|
||||
common_dest_loc_id = self._get_common_dest_location_from_line(
|
||||
cr, uid, line_ids, context=context)
|
||||
if not common_dest_loc_id:
|
||||
raise orm.except_orm(
|
||||
_('Error !'),
|
||||
_('A product return cannot be created for various '
|
||||
'destination locations, please choose line with a '
|
||||
'same destination location.'))
|
||||
self.pool.get('claim.line').auto_set_warranty(cr, uid,
|
||||
line_ids,
|
||||
context=context)
|
||||
common_dest_partner_id = self._get_common_partner_from_line(
|
||||
cr, uid, line_ids, context=context)
|
||||
if not common_dest_partner_id:
|
||||
raise orm.except_orm(
|
||||
_('Error !'),
|
||||
_('A product return cannot be created for various '
|
||||
'destination addresses, please choose line with a '
|
||||
'same address.'))
|
||||
partner_id = common_dest_partner_id
|
||||
# create picking
|
||||
picking_id = picking_obj.create(
|
||||
cr, uid,
|
||||
{'origin': claim.number,
|
||||
'type': p_type,
|
||||
'move_type': 'one', # direct
|
||||
'state': 'draft',
|
||||
'date': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
'partner_id': partner_id,
|
||||
'invoice_state': "none",
|
||||
'company_id': claim.company_id.id,
|
||||
'location_id': wizard.claim_line_source_location.id,
|
||||
'location_dest_id': wizard.claim_line_dest_location.id,
|
||||
'note': note,
|
||||
'claim_id': claim.id,
|
||||
},
|
||||
context=context)
|
||||
# Create picking lines
|
||||
fmt = DEFAULT_SERVER_DATETIME_FORMAT
|
||||
for wizard_claim_line in wizard.claim_line_ids:
|
||||
move_obj = self.pool.get('stock.move')
|
||||
move_id = move_obj.create(
|
||||
cr, uid,
|
||||
{'name': wizard_claim_line.product_id.name_template,
|
||||
'priority': '0',
|
||||
'date': time.strftime(fmt),
|
||||
'date_expected': time.strftime(fmt),
|
||||
'product_id': wizard_claim_line.product_id.id,
|
||||
'product_qty': wizard_claim_line.product_returned_quantity,
|
||||
'product_uom': wizard_claim_line.product_id.uom_id.id,
|
||||
'partner_id': partner_id,
|
||||
'prodlot_id': wizard_claim_line.prodlot_id.id,
|
||||
'picking_id': picking_id,
|
||||
'state': 'draft',
|
||||
'price_unit': wizard_claim_line.unit_sale_price,
|
||||
'company_id': claim.company_id.id,
|
||||
'location_id': wizard.claim_line_source_location.id,
|
||||
'location_dest_id': wizard.claim_line_dest_location.id,
|
||||
'note': note,
|
||||
},
|
||||
context=context)
|
||||
self.pool.get('claim.line').write(
|
||||
cr, uid, wizard_claim_line.id,
|
||||
{write_field: move_id}, context=context)
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
if picking_id:
|
||||
wf_service.trg_validate(uid, 'stock.picking',
|
||||
picking_id, 'button_confirm', cr)
|
||||
picking_obj.action_assign(cr, uid, [picking_id])
|
||||
domain = ("[('type', '=', '%s'), ('partner_id', '=', %s)]" %
|
||||
(p_type, partner_id))
|
||||
return {
|
||||
'name': '%s' % name,
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'view_id': view_id,
|
||||
'domain': domain,
|
||||
'res_model': model,
|
||||
'res_id': picking_id,
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -0,0 +1,52 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
crm_claim_rma for OpenERP
|
||||
Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_claim_picking" model="ir.ui.view">
|
||||
<field name="name">claim_picking</field>
|
||||
<field name="model">claim_make_picking.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Select exchange lines to add in picking" version="7.0">
|
||||
<separator string="Locations" colspan="4"/>
|
||||
<field name="claim_line_source_location" nolabel="1" />
|
||||
<field name="claim_line_dest_location" nolabel="1" />
|
||||
<separator string="Select lines for picking" colspan="4"/>
|
||||
<field name="claim_line_ids" nolabel="1" colspan="4"/>
|
||||
<footer>
|
||||
<button name="action_create_picking" string="Create picking" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_claim_picking_in" model="ir.actions.act_window">
|
||||
<field name="name">Return Products</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">claim_make_picking.wizard</field>
|
||||
<field name="src_model">crm.claim</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">{'picking_type': 'in','product_return': True}</field>
|
||||
</record>
|
||||
|
||||
<record id="action_claim_picking_out" model="ir.actions.act_window">
|
||||
<field name="name">Create Outgoing Shipments</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">claim_make_picking.wizard</field>
|
||||
<field name="src_model">crm.claim</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">{'picking_type': 'out'}</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
23
__unported__/crm_rma_advance_location/__init__.py
Normal file
23
__unported__/crm_rma_advance_location/__init__.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from . import stock
|
||||
from . import wizard
|
||||
65
__unported__/crm_rma_advance_location/__openerp__.py
Normal file
65
__unported__/crm_rma_advance_location/__openerp__.py
Normal file
@@ -0,0 +1,65 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{'name': 'RMA Claims Advance Location',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'depends': ['crm_claim_rma',
|
||||
'crm_rma_stock_location',
|
||||
],
|
||||
'author': 'Akretion',
|
||||
'license': 'AGPL-3',
|
||||
'website': 'http://www.akretion.com',
|
||||
'description': """
|
||||
RMA Claim Advance Location
|
||||
==========================
|
||||
|
||||
This module adds the following location on warehouses :
|
||||
|
||||
* Carrier Loss
|
||||
* RMA
|
||||
* Breakage Loss
|
||||
* Refurbish
|
||||
* Mistake Loss
|
||||
|
||||
And also various wizards on icoming deliveries that allow you to move your goods easily in those
|
||||
new locations from a done reception.
|
||||
|
||||
Using this module make the logistic flow of return a bit more complexe:
|
||||
|
||||
* Returning product goes into RMA location with a incoming shipment
|
||||
* From the incoming shipment, forward them to another places (stock, loss,...)
|
||||
|
||||
WARNING: Use with caution, this module is currently not yet completely debugged and is waiting his author to be.
|
||||
|
||||
""",
|
||||
'images': [],
|
||||
'demo': [],
|
||||
'data': ['wizard/claim_make_picking_from_picking_view.xml',
|
||||
'wizard/claim_make_picking_view.xml',
|
||||
'stock_view.xml',
|
||||
'stock_data.xml',
|
||||
'claim_rma_view.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
}
|
||||
20
__unported__/crm_rma_advance_location/claim_rma_view.xml
Normal file
20
__unported__/crm_rma_advance_location/claim_rma_view.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="crm_claim_rma_form_view">
|
||||
<field name="name">CRM - Claim product return Form</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim_rma.crm_claim_rma_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//button[@string='New Delivery']" position="after">
|
||||
<button name="%(action_claim_picking_loss)d"
|
||||
string="New Product Loss" states="open"
|
||||
type="action" target="new"
|
||||
context="{'warehouse_id': warehouse_id,
|
||||
'partner_id': partner_id}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,122 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * crm_rma_advance_location
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-15 13:27+0000\n"
|
||||
"PO-Revision-Date: 2013-11-15 13:27+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:ir.actions.act_window,name:crm_rma_advance_location.action_claim_picking_loss
|
||||
msgid "Create Products Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:ir.actions.act_window,name:crm_rma_advance_location.action_used_picking_from_claim_picking
|
||||
msgid "Create Incomming Shipment to Refurbish Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:claim_make_picking_from_picking.wizard:0
|
||||
msgid "Locations"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:claim_make_picking_from_picking.wizard:0
|
||||
msgid "Select lines for picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:stock.location,name:crm_rma_advance_location.stock_location_breakage_loss
|
||||
msgid "Breakage Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:ir.model,name:crm_rma_advance_location.model_claim_make_picking_wizard
|
||||
msgid "Wizard to create pickings from claim lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:stock.location,name:crm_rma_advance_location.stock_location_carrier_loss
|
||||
msgid "Carrier Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:stock.location,name:crm_rma_advance_location.stock_location_mistake_loss
|
||||
msgid "Mistake Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:ir.actions.act_window,name:crm_rma_advance_location.action_loss_picking_from_claim_picking
|
||||
msgid "Create Incomming Shipment to Breakkage Loss Location"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:stock.picking.in:0
|
||||
msgid "Product to refurbish stock"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:ir.model,name:crm_rma_advance_location.model_stock_warehouse
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:stock.location,name:crm_rma_advance_location.stock_location_rma
|
||||
msgid "RMA"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:stock.location,name:crm_rma_advance_location.stock_location_refurbish
|
||||
msgid "Refurbish"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:stock.picking.in:0
|
||||
msgid "Product to stock"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:ir.actions.act_window,name:crm_rma_advance_location.action_stock_picking_from_claim_picking
|
||||
msgid "Create Incomming Shipment to Stock"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:claim_make_picking_from_picking.wizard:0
|
||||
msgid "Create picking"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:claim_make_picking_from_picking.wizard:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:crm.claim:0
|
||||
msgid "New Product Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: model:ir.model,name:crm_rma_advance_location.model_claim_make_picking_from_picking_wizard
|
||||
msgid "Wizard to create pickings from picking lines"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:stock.picking.in:0
|
||||
msgid "Product to Loss"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_advance_location
|
||||
#: view:claim_make_picking_from_picking.wizard:0
|
||||
msgid "Select lines to add in picking"
|
||||
msgstr ""
|
||||
|
||||
39
__unported__/crm_rma_advance_location/stock.py
Normal file
39
__unported__/crm_rma_advance_location/stock.py
Normal file
@@ -0,0 +1,39 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from openerp.osv import fields, orm
|
||||
|
||||
|
||||
class stock_warehouse(orm.Model):
|
||||
|
||||
_inherit = "stock.warehouse"
|
||||
|
||||
_columns = {
|
||||
'lot_carrier_loss_id': fields.many2one(
|
||||
'stock.location',
|
||||
'Location Carrier Loss'),
|
||||
'lot_breakage_loss_id': fields.many2one(
|
||||
'stock.location',
|
||||
'Location Breakage Loss'),
|
||||
'lot_refurbish_id': fields.many2one(
|
||||
'stock.location',
|
||||
'Location Refurbish'),
|
||||
}
|
||||
36
__unported__/crm_rma_advance_location/stock_data.xml
Normal file
36
__unported__/crm_rma_advance_location/stock_data.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<!--
|
||||
Default Values for : Stock Location
|
||||
-->
|
||||
<record id="stock_location_carrier_loss" model="stock.location">
|
||||
<field name="name">Carrier Loss</field>
|
||||
<field name="usage">internal</field>
|
||||
<field name="location_id" ref="stock.stock_location_company"/>
|
||||
</record>
|
||||
<record id="stock_location_breakage_loss" model="stock.location">
|
||||
<field name="name">Breakage Loss</field>
|
||||
<field name="usage">internal</field>
|
||||
<field name="location_id" ref="stock.stock_location_company"/>
|
||||
</record>
|
||||
<record id="stock_location_refurbish" model="stock.location">
|
||||
<field name="name">Refurbish</field>
|
||||
<field name="usage">internal</field>
|
||||
<field name="location_id" ref="stock.stock_location_company"/>
|
||||
</record>
|
||||
<record id="stock_location_mistake_loss" model="stock.location">
|
||||
<field name="name">Mistake Loss</field>
|
||||
<field name="usage">internal</field>
|
||||
<field name="location_id" ref="stock.stock_location_company"/>
|
||||
</record>
|
||||
<!--
|
||||
Default Values for : Stock Warehouse
|
||||
-->
|
||||
<record id="stock.warehouse0" model="stock.warehouse">
|
||||
<field name="lot_breakage_loss_id" ref="stock_location_breakage_loss"/>
|
||||
<field name="lot_carrier_loss_id" ref="stock_location_carrier_loss"/>
|
||||
<field name="lot_refurbish_id" ref="stock_location_refurbish"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
47
__unported__/crm_rma_advance_location/stock_view.xml
Normal file
47
__unported__/crm_rma_advance_location/stock_view.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- INHERITED VIEW FOR THE OBJECT : stock_picking -->
|
||||
|
||||
<record id="picking_in_form" model="ir.ui.view">
|
||||
<field name="name">crm_claim_rma.picking_in_form</field>
|
||||
<field name="model">stock.picking.in</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_in_form" />
|
||||
<field name="arch" type="xml">
|
||||
<!-- Those wizard aren't working yet -->
|
||||
<xpath expr="/form/header/button[@string='Return Products']" position="after">
|
||||
<button name="%(action_stock_picking_from_claim_picking)d"
|
||||
string="Product to stock" type="action"
|
||||
attrs="{'invisible':['|',
|
||||
('state','<>','done'),
|
||||
('claim_id', '=', False)]}"/>
|
||||
<button name="%(action_loss_picking_from_claim_picking)d"
|
||||
string="Product to Loss" type="action"
|
||||
attrs="{'invisible':['|',
|
||||
('state','<>','done'),
|
||||
('claim_id', '=', False)]}"/>
|
||||
<button name="%(action_used_picking_from_claim_picking)d"
|
||||
string="Product to refurbish stock" type="action"
|
||||
attrs="{'invisible':['|',
|
||||
('state','<>','done'),
|
||||
('claim_id', '=', False)]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="warehouse_form" model="ir.ui.view">
|
||||
<field name="name">crm_claim_rma.warehouse_form</field>
|
||||
<field name="model">stock.warehouse</field>
|
||||
<field name="inherit_id" ref="crm_rma_stock_location.view_warehouse_form" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/group/group/field[@name='lot_rma_id']" position="after">
|
||||
<field name="lot_carrier_loss_id"/>
|
||||
<field name="lot_breakage_loss_id"/>
|
||||
<field name="lot_refurbish_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
23
__unported__/crm_rma_advance_location/wizard/__init__.py
Normal file
23
__unported__/crm_rma_advance_location/wizard/__init__.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from . import claim_make_picking_from_picking
|
||||
from . import claim_make_picking
|
||||
@@ -0,0 +1,53 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#########################################################################
|
||||
# #
|
||||
# #
|
||||
#########################################################################
|
||||
# #
|
||||
# crm_claim_rma for OpenERP #
|
||||
# Copyright (C) 2009-2012 Akretion, Emmanuel Samyn, #
|
||||
# Benoît GUILLOT <benoit.guillot@akretion.com> #
|
||||
#This program is free software: you can redistribute it and/or modify #
|
||||
#it under the terms of the GNU General Public License as published by #
|
||||
#the Free Software Foundation, either version 3 of the License, or #
|
||||
#(at your option) any later version. #
|
||||
# #
|
||||
#This program is distributed in the hope that it will be useful, #
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
#GNU General Public License for more details. #
|
||||
# #
|
||||
#You should have received a copy of the GNU General Public License #
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
#########################################################################
|
||||
from openerp.osv import orm
|
||||
|
||||
|
||||
class claim_make_picking(orm.TransientModel):
|
||||
|
||||
_inherit = 'claim_make_picking.wizard'
|
||||
|
||||
def _get_dest_loc(self, cr, uid, context=None):
|
||||
""" Get default destination location """
|
||||
loc_id = super(claim_make_picking, self)._get_dest_loc(cr, uid, context=context)
|
||||
if context is None:
|
||||
context = {}
|
||||
warehouse_obj = self.pool.get('stock.warehouse')
|
||||
warehouse_id = context.get('warehouse_id')
|
||||
if context.get('picking_type') == 'in':
|
||||
loc_id = warehouse_obj.read(
|
||||
cr, uid,
|
||||
warehouse_id,
|
||||
['lot_rma_id'],
|
||||
context=context)['lot_rma_id'][0]
|
||||
elif context.get('picking_type') == 'loss':
|
||||
loc_id = warehouse_obj.read(
|
||||
cr, uid,
|
||||
warehouse_id,
|
||||
['lot_carrier_loss_id'],
|
||||
context=context)['lot_carrier_loss_id'][0]
|
||||
return loc_id
|
||||
|
||||
_defaults = {
|
||||
'claim_line_dest_location': _get_dest_loc,
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#########################################################################
|
||||
# #
|
||||
# #
|
||||
#########################################################################
|
||||
# #
|
||||
# crm_claim_rma for OpenERP #
|
||||
# Copyright (C) 2009-2012 Akretion, Emmanuel Samyn, #
|
||||
# Benoît GUILLOT <benoit.guillot@akretion.com> #
|
||||
#This program is free software: you can redistribute it and/or modify #
|
||||
#it under the terms of the GNU General Public License as published by #
|
||||
#the Free Software Foundation, either version 3 of the License, or #
|
||||
#(at your option) any later version. #
|
||||
# #
|
||||
#This program is distributed in the hope that it will be useful, #
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
#GNU General Public License for more details. #
|
||||
# #
|
||||
#You should have received a copy of the GNU General Public License #
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
#########################################################################
|
||||
from openerp.osv import fields, orm
|
||||
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
from openerp import netsvc
|
||||
import time
|
||||
|
||||
|
||||
class claim_make_picking_from_picking(orm.TransientModel):
|
||||
|
||||
_name = 'claim_make_picking_from_picking.wizard'
|
||||
_description = 'Wizard to create pickings from picking lines'
|
||||
_columns = {
|
||||
'picking_line_source_location': fields.many2one('stock.location',
|
||||
'Source Location',
|
||||
help="Location where the returned products are from.",
|
||||
required=True),
|
||||
'picking_line_dest_location': fields.many2one('stock.location',
|
||||
'Dest. Location',
|
||||
help="Location where the system will stock the returned products.",
|
||||
required=True),
|
||||
'picking_line_ids': fields.many2many('stock.move',
|
||||
'claim_picking_line_picking',
|
||||
'claim_picking_id',
|
||||
'picking_line_id',
|
||||
'Picking lines'),
|
||||
}
|
||||
|
||||
def _get_default_warehouse(self, cr, uid, context=None):
|
||||
warehouse_id=self.pool.get('crm.claim')._get_default_warehouse(cr, uid, context=context)
|
||||
return warehouse_id
|
||||
|
||||
def _get_picking_lines(self, cr, uid, context):
|
||||
return self.pool.get('stock.picking').read(cr, uid,
|
||||
context['active_id'], ['move_lines'], context=context)['move_lines']
|
||||
|
||||
# Get default source location
|
||||
def _get_source_loc(self, cr, uid, context):
|
||||
if context is None:
|
||||
context = {}
|
||||
warehouse_obj = self.pool.get('stock.warehouse')
|
||||
warehouse_id = self._get_default_warehouse(cr, uid, context=context)
|
||||
return warehouse_obj.read(cr, uid,
|
||||
warehouse_id, ['lot_rma_id'], context=context)['lot_rma_id'][0]
|
||||
|
||||
# Get default destination location
|
||||
def _get_dest_loc(self, cr, uid, context):
|
||||
if context is None:
|
||||
context = {}
|
||||
warehouse_id = self._get_default_warehouse(cr, uid, context=context)
|
||||
warehouse_obj = self.pool.get('stock.warehouse')
|
||||
if context.get('picking_type'):
|
||||
context_loc = context.get('picking_type')[8:]
|
||||
loc_field = 'lot_%s_id' %context.get('picking_type')[8:]
|
||||
loc_id = warehouse_obj.read(cr, uid,
|
||||
warehouse_id, [loc_field], context=context)[loc_field][0]
|
||||
return loc_id
|
||||
|
||||
_defaults = {
|
||||
'picking_line_source_location': _get_source_loc,
|
||||
'picking_line_dest_location': _get_dest_loc,
|
||||
'picking_line_ids': _get_picking_lines,
|
||||
}
|
||||
|
||||
def action_cancel(self,cr,uid,ids,conect=None):
|
||||
return {'type': 'ir.actions.act_window_close',}
|
||||
|
||||
# If "Create" button pressed
|
||||
def action_create_picking_from_picking(self, cr, uid, ids, context=None):
|
||||
picking_obj = self.pool.get('stock.picking')
|
||||
move_obj = self.pool.get('stock.move')
|
||||
view_obj = self.pool.get('ir.ui.view')
|
||||
if context is None:
|
||||
context = {}
|
||||
p_type = 'internal'
|
||||
if context.get('picking_type'):
|
||||
context_type = context.get('picking_type')[8:]
|
||||
note = 'Internal picking from RMA to %s' %context_type
|
||||
name = 'Internal picking to %s' %context_type
|
||||
view_id = view_obj.search(cr, uid, [
|
||||
('xml_id', '=', 'view_picking_form'),
|
||||
('model', '=', 'stock.picking'),
|
||||
('type', '=', 'form'),
|
||||
('name', '=', 'stock.picking.form')
|
||||
], context=context)[0]
|
||||
wizard = self.browse(cr, uid, ids[0], context=context)
|
||||
prev_picking = picking_obj.browse(cr, uid,
|
||||
context['active_id'], context=context)
|
||||
partner_id = prev_picking.partner_id.id
|
||||
# create picking
|
||||
picking_id = picking_obj.create(cr, uid, {
|
||||
'origin': prev_picking.origin,
|
||||
'type': p_type,
|
||||
'move_type': 'one', # direct
|
||||
'state': 'draft',
|
||||
'date': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
'partner_id': prev_picking.partner_id.id,
|
||||
'invoice_state': "none",
|
||||
'company_id': prev_picking.company_id.id,
|
||||
'location_id': wizard.picking_line_source_location.id,
|
||||
'location_dest_id': wizard.picking_line_dest_location.id,
|
||||
'note' : note,
|
||||
'claim_id': prev_picking.claim_id.id,
|
||||
})
|
||||
# Create picking lines
|
||||
for wizard_picking_line in wizard.picking_line_ids:
|
||||
move_id = move_obj.create(cr, uid, {
|
||||
'name' : wizard_picking_line.product_id.name_template, # Motif : crm id ? stock_picking_id ?
|
||||
'priority': '0',
|
||||
#'create_date':
|
||||
'date': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
'date_expected': time.strftime(DEFAULT_SERVER_DATETIME_FORMAT),
|
||||
'product_id': wizard_picking_line.product_id.id,
|
||||
'product_qty': wizard_picking_line.product_qty,
|
||||
'product_uom': wizard_picking_line.product_uom.id,
|
||||
'partner_id': prev_picking.partner_id.id,
|
||||
'prodlot_id': wizard_picking_line.prodlot_id.id,
|
||||
# 'tracking_id':
|
||||
'picking_id': picking_id,
|
||||
'state': 'draft',
|
||||
'price_unit': wizard_picking_line.price_unit,
|
||||
# 'price_currency_id': claim_id.company_id.currency_id.id, # from invoice ???
|
||||
'company_id': prev_picking.company_id.id,
|
||||
'location_id': wizard.picking_line_source_location.id,
|
||||
'location_dest_id': wizard.picking_line_dest_location.id,
|
||||
'note': note,
|
||||
})
|
||||
wizard_move = move_obj.write(cr, uid,
|
||||
wizard_picking_line.id,
|
||||
{'move_dest_id': move_id},
|
||||
context=context)
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
if picking_id:
|
||||
wf_service.trg_validate(uid,
|
||||
'stock.picking', picking_id,'button_confirm', cr)
|
||||
picking_obj.action_assign(cr, uid, [picking_id])
|
||||
domain = "[('type','=','%s'),('partner_id','=',%s)]"%(p_type, partner_id)
|
||||
return {
|
||||
'name': '%s' % name,
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form',
|
||||
'view_id': view_id,
|
||||
'domain' : domain,
|
||||
'res_model': 'stock.picking',
|
||||
'res_id': picking_id,
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
@@ -0,0 +1,63 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
crm_claim_rma for OpenERP
|
||||
Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_claim_picking_from_picking" model="ir.ui.view">
|
||||
<field name="name">claim_picking</field>
|
||||
<field name="model">claim_make_picking_from_picking.wizard</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Select lines to add in picking">
|
||||
<separator string="Locations" colspan="4"/>
|
||||
<field name="picking_line_source_location" nolabel="1" />
|
||||
<field name="picking_line_dest_location" nolabel="1" />
|
||||
<separator string="Select lines for picking" colspan="4"/>
|
||||
<field name="picking_line_ids" nolabel="1" colspan="4"/>
|
||||
<group col="4" colspan="2">
|
||||
<button special="cancel" string="Cancel" name="action_cancel" type="object" icon='gtk-cancel'/>
|
||||
<button name="action_create_picking_from_picking" string="Create picking"
|
||||
icon='gtk-ok' type="object"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_stock_picking_from_claim_picking" model="ir.actions.act_window">
|
||||
<field name="name">Create Incomming Shipment to Stock</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">claim_make_picking_from_picking.wizard</field>
|
||||
<field name="src_model">stock.picking</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">{'picking_type': 'picking_stock'}</field>
|
||||
</record>
|
||||
|
||||
<record id="action_loss_picking_from_claim_picking" model="ir.actions.act_window">
|
||||
<field name="name">Create Incomming Shipment to Breakkage Loss Location</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">claim_make_picking_from_picking.wizard</field>
|
||||
<field name="src_model">stock.picking</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">{'picking_type': 'picking_breakage_loss'}</field>
|
||||
</record>
|
||||
|
||||
<record id="action_used_picking_from_claim_picking" model="ir.actions.act_window">
|
||||
<field name="name">Create Incomming Shipment to Refurbish Location</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">claim_make_picking_from_picking.wizard</field>
|
||||
<field name="src_model">stock.picking</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">{'picking_type': 'picking_refurbish'}</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
crm_claim_rma for OpenERP
|
||||
Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@akretion.com>
|
||||
The licence is in the file __openerp__.py
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="action_claim_picking_loss" model="ir.actions.act_window">
|
||||
<field name="name">Create Products Loss</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">claim_make_picking.wizard</field>
|
||||
<field name="src_model">crm.claim</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
<field name="context">{'picking_type': 'loss'}</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
21
__unported__/crm_rma_by_shop/__init__.py
Normal file
21
__unported__/crm_rma_by_shop/__init__.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Joel Grand-Guillaume
|
||||
# Copyright 2013 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from . import claim
|
||||
50
__unported__/crm_rma_by_shop/__openerp__.py
Normal file
50
__unported__/crm_rma_by_shop/__openerp__.py
Normal file
@@ -0,0 +1,50 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Joel Grand-Guillaume
|
||||
# Copyright 2013 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{'name': 'RMA Claims by shop',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'depends': ['crm_claim', 'sale'
|
||||
],
|
||||
'author': 'Camptocamp',
|
||||
'license': 'AGPL-3',
|
||||
'website': 'http://www.camptocamp.com',
|
||||
'description': """
|
||||
RMA Claim by shops
|
||||
==================
|
||||
|
||||
Claim improvements to use them by shops:
|
||||
|
||||
* Add shop on claim
|
||||
* Add various filter in order to work on a basic "by shop" basis
|
||||
|
||||
Was originally designed for e-commerce purpose, but could probably do the trick
|
||||
for other cases as well.
|
||||
|
||||
""",
|
||||
'images': [],
|
||||
'demo': [],
|
||||
'data': [
|
||||
'claim_view.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
}
|
||||
32
__unported__/crm_rma_by_shop/claim.py
Normal file
32
__unported__/crm_rma_by_shop/claim.py
Normal file
@@ -0,0 +1,32 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Joel Grand-Guillaume
|
||||
# Copyright 2013 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from openerp.osv import orm, fields
|
||||
|
||||
|
||||
class crm_claim(orm.Model):
|
||||
""" Crm claim
|
||||
"""
|
||||
_inherit = "crm.claim"
|
||||
|
||||
_columns = {
|
||||
'shop_id': fields.many2one('sale.shop', 'Shop', select="1"),
|
||||
}
|
||||
|
||||
43
__unported__/crm_rma_by_shop/claim_view.xml
Normal file
43
__unported__/crm_rma_by_shop/claim_view.xml
Normal file
@@ -0,0 +1,43 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- Claims -->
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_claims_tree_view">
|
||||
<field name="name">CRM - Claims Tree</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim.crm_case_claims_tree_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="user_id" position="before">
|
||||
<field name="shop_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_claims_form_view">
|
||||
<field name="name">CRM - Claims Form</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim.crm_case_claims_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="section_id" position="before">
|
||||
<field name="shop_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
<!-- Crm claim Search view -->
|
||||
|
||||
<record id="view_crm_case_claims_filter" model="ir.ui.view">
|
||||
<field name="name">CRM - Claims Search</field>
|
||||
<field name="model">crm.claim</field>
|
||||
<field name="inherit_id" ref="crm_claim.view_crm_case_claims_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<filter string="Type" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'categ_id'}" position="after">
|
||||
<filter string="Shop" domain="[]" context="{'group_by':'shop_id'}" />
|
||||
</filter>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
34
__unported__/crm_rma_by_shop/i18n/crm_rma_by_shop.pot
Normal file
34
__unported__/crm_rma_by_shop/i18n/crm_rma_by_shop.pot
Normal file
@@ -0,0 +1,34 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * crm_rma_by_shop
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-15 13:29+0000\n"
|
||||
"PO-Revision-Date: 2013-11-15 13:29+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: crm_rma_by_shop
|
||||
#: view:crm.claim:0
|
||||
#: field:crm.claim,shop_id:0
|
||||
#: model:ir.model.fields,field_description:crm_rma_by_shop.field_crm_claim_shop_id
|
||||
msgid "Shop"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_by_shop
|
||||
#: model:ir.model,name:crm_rma_by_shop.model_crm_claim
|
||||
msgid "Claim"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_by_shop
|
||||
#: view:crm.claim:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
23
__unported__/crm_rma_stock_location/__init__.py
Normal file
23
__unported__/crm_rma_stock_location/__init__.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Guewen Baconnier
|
||||
# Copyright 2014 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from . import stock_warehouse
|
||||
from . import product
|
||||
49
__unported__/crm_rma_stock_location/__openerp__.py
Normal file
49
__unported__/crm_rma_stock_location/__openerp__.py
Normal file
@@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Guewen Baconnier
|
||||
# Copyright 2014 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{'name': 'RMA Stock Location',
|
||||
'version': '1.0',
|
||||
'author': 'Camptocamp',
|
||||
'maintainer': 'Camptocamp',
|
||||
'license': 'AGPL-3',
|
||||
'category': 'Generic Modules/CRM & SRM',
|
||||
'depends': ['stock',
|
||||
'procurement',
|
||||
],
|
||||
'description': """
|
||||
RMA Stock Location
|
||||
==================
|
||||
|
||||
A RMA location can be selected on the warehouses.
|
||||
The product views displays the quantity available and virtual in this
|
||||
RMA location (including the children locations).
|
||||
|
||||
""",
|
||||
'website': 'http://www.camptocamp.com',
|
||||
'data': ['stock_data.xml',
|
||||
'stock_warehouse_view.xml',
|
||||
'product_view.xml',
|
||||
],
|
||||
'test': ['test/quantity.yml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * crm_rma_stock_location
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-09-12 11:27+0000\n"
|
||||
"PO-Revision-Date: 2014-09-12 11:27+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_stock_warehouse_lot_rma_id
|
||||
#: field:stock.warehouse,lot_rma_id:0
|
||||
msgid "Location RMA"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:crm_rma_stock_location.model_product_product
|
||||
#, python-format
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: model:stock.location,name:crm_rma_stock_location.stock_location_rma
|
||||
msgid "RMA"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_product_product_rma_virtual_available
|
||||
#: field:product.product,rma_virtual_available:0
|
||||
msgid "RMA Forecasted Quantity"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_product_product_rma_qty_available
|
||||
#: field:product.product,rma_qty_available:0
|
||||
msgid "RMA Quantity On Hand"
|
||||
msgstr ""
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
|
||||
#, python-format
|
||||
msgid "Warehouse"
|
||||
msgstr ""
|
||||
|
||||
54
__unported__/crm_rma_stock_location/i18n/fr.po
Normal file
54
__unported__/crm_rma_stock_location/i18n/fr.po
Normal file
@@ -0,0 +1,54 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * crm_rma_stock_location
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-09-12 11:28+0000\n"
|
||||
"PO-Revision-Date: 2014-09-12 11:28+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_stock_warehouse_lot_rma_id
|
||||
#: field:stock.warehouse,lot_rma_id:0
|
||||
msgid "Location RMA"
|
||||
msgstr "Emplacement RMA"
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:crm_rma_stock_location.model_product_product
|
||||
#, python-format
|
||||
msgid "Product"
|
||||
msgstr "Article"
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: model:stock.location,name:crm_rma_stock_location.stock_location_rma
|
||||
msgid "RMA"
|
||||
msgstr "RMA"
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_product_product_rma_virtual_available
|
||||
#: field:product.product,rma_virtual_available:0
|
||||
msgid "RMA Forecasted Quantity"
|
||||
msgstr "Quantité RMA prévue"
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: model:ir.model.fields,field_description:crm_rma_stock_location.field_product_product_rma_qty_available
|
||||
#: field:product.product,rma_qty_available:0
|
||||
msgid "RMA Quantity On Hand"
|
||||
msgstr "Quantité RMA en stock"
|
||||
|
||||
#. module: crm_rma_stock_location
|
||||
#: code:_description:0
|
||||
#: model:ir.model,name:crm_rma_stock_location.model_stock_warehouse
|
||||
#, python-format
|
||||
msgid "Warehouse"
|
||||
msgstr "Entrepôt"
|
||||
|
||||
106
__unported__/crm_rma_stock_location/product.py
Normal file
106
__unported__/crm_rma_stock_location/product.py
Normal file
@@ -0,0 +1,106 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Guewen Baconnier
|
||||
# Copyright 2014 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
import openerp.addons.decimal_precision as dp
|
||||
|
||||
|
||||
class ProductProduct(orm.Model):
|
||||
_inherit = 'product.product'
|
||||
|
||||
def _rma_product_available(self, cr, uid, ids, field_names=None, arg=False,
|
||||
context=None):
|
||||
""" Finds the incoming and outgoing quantity of product for the RMA
|
||||
locations.
|
||||
"""
|
||||
if field_names is None:
|
||||
field_names = []
|
||||
if context is None:
|
||||
context = {}
|
||||
warehouse_obj = self.pool['stock.warehouse']
|
||||
res = {}
|
||||
for id in ids:
|
||||
res[id] = {}.fromkeys(field_names, 0.0)
|
||||
|
||||
for field in field_names:
|
||||
ctx = context.copy()
|
||||
|
||||
warehouse_id = ctx.get('warehouse_id')
|
||||
# no dependency on 'sale', the same oddness is done in
|
||||
# 'stock' so I kept it here
|
||||
if ctx.get('shop') and self.pool.get('sale.shop'):
|
||||
shop_obj = self.pool['sale.shop']
|
||||
shop_id = ctx['shop']
|
||||
warehouse = shop_obj.read(cr, uid, shop_id,
|
||||
['warehouse_id'],
|
||||
context=ctx)
|
||||
warehouse_id = warehouse['warehouse_id'][0]
|
||||
|
||||
if warehouse_id:
|
||||
rma_id = warehouse_obj.read(cr, uid,
|
||||
warehouse_id,
|
||||
['lot_rma_id'],
|
||||
context=ctx)['lot_rma_id'][0]
|
||||
if rma_id:
|
||||
ctx['location'] = rma_id
|
||||
else:
|
||||
location_ids = set()
|
||||
wids = warehouse_obj.search(cr, uid, [], context=context)
|
||||
if not wids:
|
||||
return res
|
||||
for wh in warehouse_obj.browse(cr, uid, wids, context=context):
|
||||
if wh.lot_rma_id:
|
||||
location_ids.add(wh.lot_rma_id.id)
|
||||
if not location_ids:
|
||||
return res
|
||||
ctx['location'] = list(location_ids)
|
||||
|
||||
ctx['compute_child'] = True
|
||||
compute = {
|
||||
'rma_qty_available': {
|
||||
'states': ('done', ),
|
||||
'what': ('in', 'out')
|
||||
},
|
||||
'rma_virtual_available': {
|
||||
'states': ('confirmed', 'waiting', 'assigned', 'done'),
|
||||
'what': ('in', 'out')
|
||||
}
|
||||
}
|
||||
ctx.update(compute[field])
|
||||
stock = self.get_product_available(cr, uid, ids, context=ctx)
|
||||
for id in ids:
|
||||
res[id][field] = stock.get(id, 0.0)
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'rma_qty_available': fields.function(
|
||||
_rma_product_available,
|
||||
type='float',
|
||||
multi='rma_qty',
|
||||
digits_compute=dp.get_precision('Product Unit of Measure'),
|
||||
string='RMA Quantity On Hand'),
|
||||
'rma_virtual_available': fields.function(
|
||||
_rma_product_available,
|
||||
type='float',
|
||||
multi='rma_qty',
|
||||
digits_compute=dp.get_precision('Product Unit of Measure'),
|
||||
string='RMA Forecasted Quantity'),
|
||||
}
|
||||
28
__unported__/crm_rma_stock_location/product_view.xml
Normal file
28
__unported__/crm_rma_stock_location/product_view.xml
Normal file
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="0">
|
||||
<record id="product_product_tree_view" model="ir.ui.view">
|
||||
<field name="name">product.product.tree</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_product_tree_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="virtual_available" position="after">
|
||||
<field name="rma_qty_available"/>
|
||||
<field name="rma_virtual_available"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_normal_procurement_locations_form" model="ir.ui.view">
|
||||
<field name="name">product.normal.procurement.locations.inherit</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="virtual_available" position="after">
|
||||
<field name="rma_qty_available" class="oe_inline"/>
|
||||
<field name="rma_virtual_available" class="oe_inline"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
15
__unported__/crm_rma_stock_location/stock_data.xml
Normal file
15
__unported__/crm_rma_stock_location/stock_data.xml
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="stock_location_rma" model="stock.location">
|
||||
<field name="name">RMA</field>
|
||||
<field name="usage">internal</field>
|
||||
<field name="location_id" ref="stock.stock_location_company"/>
|
||||
</record>
|
||||
|
||||
<record id="stock.warehouse0" model="stock.warehouse">
|
||||
<field name="lot_rma_id" ref="stock_location_rma"/>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
30
__unported__/crm_rma_stock_location/stock_warehouse.py
Normal file
30
__unported__/crm_rma_stock_location/stock_warehouse.py
Normal file
@@ -0,0 +1,30 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Guewen Baconnier
|
||||
# Copyright 2014 Camptocamp SA
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
|
||||
|
||||
class StockWarehouse(orm.Model):
|
||||
_inherit = 'stock.warehouse'
|
||||
|
||||
_columns = {
|
||||
'lot_rma_id': fields.many2one('stock.location', 'Location RMA'),
|
||||
}
|
||||
17
__unported__/crm_rma_stock_location/stock_warehouse_view.xml
Normal file
17
__unported__/crm_rma_stock_location/stock_warehouse_view.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="0">
|
||||
|
||||
<record id="view_warehouse_form" model="ir.ui.view">
|
||||
<field name="name">view_warehouse_form</field>
|
||||
<field name="model">stock.warehouse</field>
|
||||
<field name="inherit_id" ref="stock.view_warehouse" />
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="/form/group/group/field[@name='lot_output_id']" position="after">
|
||||
<field name="lot_rma_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
72
__unported__/crm_rma_stock_location/test/quantity.yml
Normal file
72
__unported__/crm_rma_stock_location/test/quantity.yml
Normal file
@@ -0,0 +1,72 @@
|
||||
-
|
||||
I create RMA locations
|
||||
-
|
||||
!record {model: stock.location, id: location_rma}:
|
||||
name: RMA
|
||||
usage: view
|
||||
-
|
||||
!record {model: stock.location, id: location_rma_a}:
|
||||
name: RMA - Box A
|
||||
usage: internal
|
||||
location_id: location_rma
|
||||
-
|
||||
!record {model: stock.location, id: location_rma_b}:
|
||||
name: RMA - Box B
|
||||
usage: internal
|
||||
location_id: location_rma
|
||||
-
|
||||
I set the RMA location on the warehouse
|
||||
-
|
||||
!record {model: stock.warehouse, id: stock.warehouse0}:
|
||||
lot_rma_id: location_rma
|
||||
-
|
||||
I create a product
|
||||
-
|
||||
!record {model: product.product, id: product_socket}:
|
||||
default_code: 002
|
||||
name: Sockets
|
||||
type: product
|
||||
categ_id: product.product_category_1
|
||||
list_price: 100.0
|
||||
standard_price: 70.0
|
||||
uom_id: product.product_uom_unit
|
||||
uom_po_id: product.product_uom_unit
|
||||
-
|
||||
I create a physical inventory with 50 units in Box A and 30 in Box B
|
||||
-
|
||||
!record {model: stock.inventory, id: stock_inventory_socket}:
|
||||
name: Inventory for Sockets
|
||||
-
|
||||
!record {model: stock.inventory.line, id: stock_inventory_line_socket_1}:
|
||||
product_id: product_socket
|
||||
product_uom: product.product_uom_unit
|
||||
inventory_id: stock_inventory_socket
|
||||
product_qty: 50.0
|
||||
location_id: location_rma_a
|
||||
-
|
||||
!record {model: stock.inventory.line, id: stock_inventory_line_socket_2}:
|
||||
product_id: product_socket
|
||||
product_uom: product.product_uom_unit
|
||||
inventory_id: stock_inventory_socket
|
||||
product_qty: 30.0
|
||||
location_id: location_rma_b
|
||||
-
|
||||
I confirm the physical inventory
|
||||
-
|
||||
!python {model: stock.inventory}: |
|
||||
self.action_confirm(cr, uid, [ref('stock_inventory_socket')], context=context)
|
||||
-
|
||||
I confirm the move in Box A
|
||||
-
|
||||
!python {model: stock.inventory}: |
|
||||
inventory = self.browse(cr, uid, ref('stock_inventory_socket'), context=context)
|
||||
assert len(inventory.move_ids) == len(inventory.inventory_line_id), "moves are not correspond."
|
||||
for move in inventory.move_ids:
|
||||
if move.location_dest_id.id == ref('location_rma_a'):
|
||||
move.action_done()
|
||||
-
|
||||
I check my RMA quantities, I should have 50 on hands and 80 forecasted
|
||||
-
|
||||
!assert {model: product.product, id: product_socket, string: RMA quantity is wrong}:
|
||||
- rma_qty_available == 50
|
||||
- rma_virtual_available == 80
|
||||
23
__unported__/product_warranty/__init__.py
Normal file
23
__unported__/product_warranty/__init__.py
Normal file
@@ -0,0 +1,23 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#########################################################################
|
||||
# #
|
||||
# #
|
||||
#########################################################################
|
||||
# #
|
||||
# Copyright (C) 2009-2011 Akretion, Emmanuel Samyn #
|
||||
# #
|
||||
#This program is free software: you can redistribute it and/or modify #
|
||||
#it under the terms of the GNU General Public License as published by #
|
||||
#the Free Software Foundation, either version 3 of the License, or #
|
||||
#(at your option) any later version. #
|
||||
# #
|
||||
#This program is distributed in the hope that it will be useful, #
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
#GNU General Public License for more details. #
|
||||
# #
|
||||
#You should have received a copy of the GNU General Public License #
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
#########################################################################
|
||||
from . import product_warranty
|
||||
from . import res_company
|
||||
58
__unported__/product_warranty/__openerp__.py
Normal file
58
__unported__/product_warranty/__openerp__.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#########################################################################
|
||||
# #
|
||||
# #
|
||||
#########################################################################
|
||||
# #
|
||||
# Copyright (C) 2009-2011 Akretion, Emmanuel Samyn #
|
||||
# #
|
||||
#This program is free software: you can redistribute it and/or modify #
|
||||
#it under the terms of the GNU General Public License as published by #
|
||||
#the Free Software Foundation, either version 3 of the License, or #
|
||||
#(at your option) any later version. #
|
||||
# #
|
||||
#This program is distributed in the hope that it will be useful, #
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
#GNU General Public License for more details. #
|
||||
# #
|
||||
#You should have received a copy of the GNU General Public License #
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
#########################################################################
|
||||
|
||||
|
||||
{
|
||||
'name': 'Product warranty',
|
||||
'version': '1.0',
|
||||
'category': 'Generic Modules/Product',
|
||||
'description': """
|
||||
Product Warranty
|
||||
================
|
||||
|
||||
Extend the product warranty management with warranty details on product / supplier relation:
|
||||
|
||||
* supplier warranty duration
|
||||
* Set default return address for company (if different from standard one)
|
||||
* return product to company, supplier, other
|
||||
|
||||
|
||||
Those informations are used in the RMA Claim (Product Return Management) module.
|
||||
|
||||
""",
|
||||
'author': 'Akretion',
|
||||
'website': 'http://akretion.com',
|
||||
'depends': ['product'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'res_company_view.xml',
|
||||
'product_warranty_view.xml',
|
||||
],
|
||||
'demo_xml': [],
|
||||
'test': [],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '',
|
||||
'images': ['images/product_warranty.png'],
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
161
__unported__/product_warranty/i18n/es.po
Normal file
161
__unported__/product_warranty/i18n/es.po
Normal file
@@ -0,0 +1,161 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * product_warranty
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: product_warranty.es\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2013-11-21 15:06+0000\n"
|
||||
"PO-Revision-Date: 2014-01-22 19:43+0000\n"
|
||||
"Last-Translator: Pedro Manuel Baeza <pedro.baeza@gmail.com>\n"
|
||||
"Language-Team: Domatix Technologies\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-24 06:50+0000\n"
|
||||
"X-Generator: Launchpad (build 17017)\n"
|
||||
"Language: es_ES\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_address
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_other_address_id
|
||||
#: field:product.supplierinfo,warranty_return_address:0
|
||||
#: field:product.supplierinfo,warranty_return_other_address_id:0
|
||||
msgid "Return address"
|
||||
msgstr "Dirección de devolución"
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:product.supplierinfo:0
|
||||
msgid "Warranty informations"
|
||||
msgstr "Información de garantía"
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_partner:0
|
||||
msgid ""
|
||||
"Who is in charge of the warranty return treatment toward the end customer. "
|
||||
"Company will use the current compagny delivery or default address and so on "
|
||||
"for supplier and brand manufacturer. Doesn't necessarly 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"
|
||||
msgstr ""
|
||||
"Especifica quién es el responsable del tratamiento de la devolución de "
|
||||
"garantía para el cliente final. La compañía utilizará la dirección por "
|
||||
"defecto o la dirección de envío de la compañía, y así sucesivamente por "
|
||||
"proveedor y marca del fabricante. No significa necesariamente que la "
|
||||
"garantía que se aplica es el de la empresa que hace la devolución (es decir: "
|
||||
"se puede devolver a la empresa y estar bajo la garantía de la marca)"
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_other_address_id:0
|
||||
msgid ""
|
||||
"Where the customer has to send back the product(s) if warranty return is "
|
||||
"setto 'other'."
|
||||
msgstr ""
|
||||
"Dónde debe enviar el cliente de vuelta el/los producto/s si la garantía de "
|
||||
"devolución se establece a 'otra'."
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_duration:0
|
||||
msgid ""
|
||||
"Warranty in month for this product/supplier relation. Only for "
|
||||
"company/supplier relation (purchase order) ; the customer/company relation "
|
||||
"(sale order) always use the product main warranty field"
|
||||
msgstr ""
|
||||
"Garantía en meses para este producto/proveedor. Únicamente para relaciones "
|
||||
"empresa/proveedor (Orden de compra); la relación cliente/proveedor (Orden de "
|
||||
"venta) usa siempre el campo garantía de la ficha de producto."
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:res.company:0
|
||||
msgid "Crm product return address"
|
||||
msgstr "Dirección de devolución del producto"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_return_instruction
|
||||
#: help:product.supplierinfo,return_instructions:0
|
||||
#: help:return.instruction,instructions:0
|
||||
msgid "Instructions for product return"
|
||||
msgstr "Instrucciones para la devolución del producto"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_duration
|
||||
#: field:product.supplierinfo,warranty_duration:0
|
||||
msgid "Period"
|
||||
msgstr "Periodo"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_name
|
||||
#: field:return.instruction,name:0
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr "Compañías"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_active_supplier
|
||||
#: field:product.supplierinfo,active_supplier:0
|
||||
msgid "Active supplier"
|
||||
msgstr "Proveedor activo"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_is_default
|
||||
#: field:return.instruction,is_default:0
|
||||
msgid "Is default"
|
||||
msgstr "Por defecto"
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_address:0
|
||||
msgid ""
|
||||
"Where the goods should be returned (computed field based on other infos.)"
|
||||
msgstr ""
|
||||
"Dónde se devolverán los bienes (campo calculado basado en otra información)."
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:return.instruction,is_default:0
|
||||
msgid ""
|
||||
"If is default, will be use to set the default value in supplier infos. Be "
|
||||
"careful to have only one default"
|
||||
msgstr ""
|
||||
"Si es por defecto, se usará para establecer el valor por defecto en la "
|
||||
"información del proveedor. Tenga cuidado de tener sólo un por defecto."
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.actions.act_window,name:product_warranty.product_return_instructions_action
|
||||
#: model:ir.ui.menu,name:product_warranty.menu_product_return_instructions_action
|
||||
msgid "Products return instructions"
|
||||
msgstr "Instrucciones de devolución de los productos"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_product_supplierinfo
|
||||
msgid "Information about a product supplier"
|
||||
msgstr "Información sobre un proveedor de producto"
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,active_supplier:0
|
||||
msgid "Is this supplier still active, only for information"
|
||||
msgstr "Indica si el proveedor todavía está activo. Sólo para información."
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_partner
|
||||
#: field:product.supplierinfo,warranty_return_partner:0
|
||||
msgid "Return type"
|
||||
msgstr "Tipo de devolución"
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:return.instruction:0
|
||||
msgid "Return instructions"
|
||||
msgstr "Instrucciones de devolución"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_return_instructions
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_instructions
|
||||
#: field:product.supplierinfo,return_instructions:0
|
||||
#: view:return.instruction:0
|
||||
#: field:return.instruction,instructions:0
|
||||
msgid "Instructions"
|
||||
msgstr "Instrucciones"
|
||||
155
__unported__/product_warranty/i18n/fr.po
Normal file
155
__unported__/product_warranty/i18n/fr.po
Normal file
@@ -0,0 +1,155 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * product_warranty
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0.2\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2013-11-21 15:06+0000\n"
|
||||
"PO-Revision-Date: 2014-01-22 19:17+0000\n"
|
||||
"Last-Translator: Joël Grand-Guillaume @ camptocamp "
|
||||
"<joel.grandguillaume@camptocamp.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2014-05-24 06:50+0000\n"
|
||||
"X-Generator: Launchpad (build 17017)\n"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_address
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_other_address_id
|
||||
#: field:product.supplierinfo,warranty_return_address:0
|
||||
#: field:product.supplierinfo,warranty_return_other_address_id:0
|
||||
msgid "Return address"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:product.supplierinfo:0
|
||||
msgid "Warranty informations"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_partner:0
|
||||
msgid ""
|
||||
"Who is in charge of the warranty return treatment toward the end customer. "
|
||||
"Company will use the current compagny delivery or default address and so on "
|
||||
"for supplier and brand manufacturer. Doesn't necessarly 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"
|
||||
msgstr ""
|
||||
"Indique qui est en charge du traitement du retour garantie envers le client "
|
||||
"final. L'entreprise utilise l'adresse de livraison, et sinon l'adresse par "
|
||||
"défaut. Il en va de même pour les options fournisseur ou fabricant. Ce champ "
|
||||
"n'implique pas forcément que la garantie qui va s'appliquer est celle de "
|
||||
"celui qui gère le retour."
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_other_address_id:0
|
||||
msgid ""
|
||||
"Where the customer has to send back the product(s) if warranty return is "
|
||||
"setto 'other'."
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_duration:0
|
||||
msgid ""
|
||||
"Warranty in month for this product/supplier relation. Only for "
|
||||
"company/supplier relation (purchase order) ; the customer/company relation "
|
||||
"(sale order) always use the product main warranty field"
|
||||
msgstr ""
|
||||
"Garantie en nombre de mois pour ce fournisseur. Uniquement pour la relation "
|
||||
"entreprise/fournisseur (commandes d'achat) ; La relation entreprise/client "
|
||||
"(commandes de vente) utilise toujours le champ de garantie de la fiche "
|
||||
"produit"
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:res.company:0
|
||||
msgid "Crm product return address"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_return_instruction
|
||||
#: help:product.supplierinfo,return_instructions:0
|
||||
#: help:return.instruction,instructions:0
|
||||
msgid "Instructions for product return"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_duration
|
||||
#: field:product.supplierinfo,warranty_duration:0
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_name
|
||||
#: field:return.instruction,name:0
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_active_supplier
|
||||
#: field:product.supplierinfo,active_supplier:0
|
||||
msgid "Active supplier"
|
||||
msgstr "Fournisseur actif"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_is_default
|
||||
#: field:return.instruction,is_default:0
|
||||
msgid "Is default"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_address:0
|
||||
msgid ""
|
||||
"Where the goods should be returned (computed field based on other infos.)"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:return.instruction,is_default:0
|
||||
msgid ""
|
||||
"If is default, will be use to set the default value in supplier infos. Be "
|
||||
"careful to have only one default"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.actions.act_window,name:product_warranty.product_return_instructions_action
|
||||
#: model:ir.ui.menu,name:product_warranty.menu_product_return_instructions_action
|
||||
msgid "Products return instructions"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_product_supplierinfo
|
||||
msgid "Information about a product supplier"
|
||||
msgstr "Information sur le fournisseur du produit"
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,active_supplier:0
|
||||
msgid "Is this supplier still active, only for information"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_partner
|
||||
#: field:product.supplierinfo,warranty_return_partner:0
|
||||
msgid "Return type"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:return.instruction:0
|
||||
msgid "Return instructions"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_return_instructions
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_instructions
|
||||
#: field:product.supplierinfo,return_instructions:0
|
||||
#: view:return.instruction:0
|
||||
#: field:return.instruction,instructions:0
|
||||
msgid "Instructions"
|
||||
msgstr ""
|
||||
132
__unported__/product_warranty/i18n/product_warranty.pot
Normal file
132
__unported__/product_warranty/i18n/product_warranty.pot
Normal file
@@ -0,0 +1,132 @@
|
||||
# Translation of OpenERP Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * product_warranty
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 7.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-11-21 15:06+0000\n"
|
||||
"PO-Revision-Date: 2013-11-21 15:06+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_address
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_other_address_id
|
||||
#: field:product.supplierinfo,warranty_return_address:0
|
||||
#: field:product.supplierinfo,warranty_return_other_address_id:0
|
||||
msgid "Return address"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:product.supplierinfo:0
|
||||
msgid "Warranty informations"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_partner:0
|
||||
msgid "Who is in charge of the warranty return treatment toward the end customer. Company will use the current compagny delivery or default address and so on for supplier and brand manufacturer. Doesn't necessarly 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"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_other_address_id:0
|
||||
msgid "Where the customer has to send back the product(s) if warranty return is setto 'other'."
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_duration:0
|
||||
msgid "Warranty in month for this product/supplier relation. Only for company/supplier relation (purchase order) ; the customer/company relation (sale order) always use the product main warranty field"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:res.company:0
|
||||
msgid "Crm product return address"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_return_instruction
|
||||
#: help:product.supplierinfo,return_instructions:0
|
||||
#: help:return.instruction,instructions:0
|
||||
msgid "Instructions for product return"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_duration
|
||||
#: field:product.supplierinfo,warranty_duration:0
|
||||
msgid "Period"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_name
|
||||
#: field:return.instruction,name:0
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_active_supplier
|
||||
#: field:product.supplierinfo,active_supplier:0
|
||||
msgid "Active supplier"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_is_default
|
||||
#: field:return.instruction,is_default:0
|
||||
msgid "Is default"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,warranty_return_address:0
|
||||
msgid "Where the goods should be returned (computed field based on other infos.)"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:return.instruction,is_default:0
|
||||
msgid "If is default, will be use to set the default value in supplier infos. Be careful to have only one default"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.actions.act_window,name:product_warranty.product_return_instructions_action
|
||||
#: model:ir.ui.menu,name:product_warranty.menu_product_return_instructions_action
|
||||
msgid "Products return instructions"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model,name:product_warranty.model_product_supplierinfo
|
||||
msgid "Information about a product supplier"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: help:product.supplierinfo,active_supplier:0
|
||||
msgid "Is this supplier still active, only for information"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_warranty_return_partner
|
||||
#: field:product.supplierinfo,warranty_return_partner:0
|
||||
msgid "Return type"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: view:return.instruction:0
|
||||
msgid "Return instructions"
|
||||
msgstr ""
|
||||
|
||||
#. module: product_warranty
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_product_supplierinfo_return_instructions
|
||||
#: model:ir.model.fields,field_description:product_warranty.field_return_instruction_instructions
|
||||
#: field:product.supplierinfo,return_instructions:0
|
||||
#: view:return.instruction:0
|
||||
#: field:return.instruction,instructions:0
|
||||
msgid "Instructions"
|
||||
msgstr ""
|
||||
|
||||
BIN
__unported__/product_warranty/images/product_warranty.png
Normal file
BIN
__unported__/product_warranty/images/product_warranty.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 83 KiB |
123
__unported__/product_warranty/product_warranty.py
Normal file
123
__unported__/product_warranty/product_warranty.py
Normal file
@@ -0,0 +1,123 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#########################################################################
|
||||
# #
|
||||
# #
|
||||
#########################################################################
|
||||
# #
|
||||
# Copyright (C) 2009-2011 Akretion, Emmanuel Samyn, Benoît Guillot #
|
||||
# #
|
||||
#This program is free software: you can redistribute it and/or modify #
|
||||
#it under the terms of the GNU General Public License as published by #
|
||||
#the Free Software Foundation, either version 3 of the License, or #
|
||||
#(at your option) any later version. #
|
||||
# #
|
||||
#This program is distributed in the hope that it will be useful, #
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
#GNU General Public License for more details. #
|
||||
# #
|
||||
#You should have received a copy of the GNU General Public License #
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
#########################################################################
|
||||
|
||||
from openerp.osv import orm, fields
|
||||
|
||||
|
||||
class return_instruction(orm.Model):
|
||||
_name = "return.instruction"
|
||||
_description = "Instructions for product return"
|
||||
_columns = {
|
||||
'name': fields.char('Title', required=True),
|
||||
'instructions': fields.text(
|
||||
'Instructions',
|
||||
help="Instructions for product return"),
|
||||
'is_default': fields.boolean(
|
||||
'Is default',
|
||||
help="If is default, will be use to set the default value in "
|
||||
"supplier infos. Be careful to have only one default"),
|
||||
}
|
||||
|
||||
|
||||
class product_supplierinfo(orm.Model):
|
||||
_inherit = "product.supplierinfo"
|
||||
|
||||
def get_warranty_return_partner(self, cr, uid, context=None):
|
||||
result = [('company', 'Company'),
|
||||
('supplier', 'Supplier'),
|
||||
('other', 'Other'),
|
||||
]
|
||||
return result
|
||||
|
||||
def _get_default_instructions(self, cr, uid, context=None):
|
||||
""" Get selected lines to add to exchange """
|
||||
instr_obj = self.pool.get('return.instruction')
|
||||
instruction_ids = instr_obj.search(cr, uid,
|
||||
[('is_default', '=', 'FALSE')],
|
||||
context=context)
|
||||
if instruction_ids:
|
||||
return instruction_ids[0]
|
||||
return False
|
||||
|
||||
def _get_warranty_return_address(self, cr, uid, ids, field_names, arg, context=None):
|
||||
""" Method to return the partner delivery address or if none, the default address
|
||||
|
||||
dedicated_delivery_address stand for the case a new type of
|
||||
address more particularly dedicated to return delivery would be
|
||||
implemented.
|
||||
|
||||
"""
|
||||
result = {}
|
||||
for supplier_info in self.browse(cr, uid, ids, context=context):
|
||||
result[supplier_info.id] = False
|
||||
return_partner = supplier_info.warranty_return_partner
|
||||
partner_id = supplier_info.company_id.partner_id.id
|
||||
if return_partner:
|
||||
if return_partner == 'supplier':
|
||||
partner_id = supplier_info.name.id
|
||||
elif return_partner == 'company':
|
||||
if supplier_info.company_id.crm_return_address_id:
|
||||
partner_id = supplier_info.company_id.crm_return_address_id.id
|
||||
elif return_partner == 'other':
|
||||
if supplier_info.warranty_return_other_address_id:
|
||||
partner_id = supplier_info.warranty_return_other_address_id.id
|
||||
result[supplier_info.id] = partner_id
|
||||
return result
|
||||
|
||||
_columns = {
|
||||
"warranty_duration": fields.float(
|
||||
'Period',
|
||||
help="Warranty in month for this product/supplier relation. Only for "
|
||||
"company/supplier relation (purchase order) ; the customer/company "
|
||||
"relation (sale order) always use the product main warranty field"),
|
||||
"warranty_return_partner": fields.selection(
|
||||
get_warranty_return_partner,
|
||||
'Return type',
|
||||
required=True,
|
||||
help="Who is in charge of the warranty return treatment toward the end customer. "
|
||||
"Company will use the current compagny delivery or default address and so on for "
|
||||
"supplier and brand manufacturer. Doesn't necessarly 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"),
|
||||
'return_instructions': fields.many2one(
|
||||
'return.instruction',
|
||||
'Instructions',
|
||||
help="Instructions for product return"),
|
||||
'active_supplier': fields.boolean(
|
||||
'Active supplier',
|
||||
help="Is this supplier still active, only for information"),
|
||||
'warranty_return_address': fields.function(
|
||||
_get_warranty_return_address,
|
||||
type='many2one', relation='res.partner', string="Return address",
|
||||
help="Where the goods should be returned "
|
||||
"(computed field based on other infos.)"),
|
||||
"warranty_return_other_address_id": fields.many2one(
|
||||
'res.partner',
|
||||
'Return address',
|
||||
help="Where the customer has to send back the product(s) "
|
||||
"if warranty return is set to 'other'."),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'warranty_return_partner': 'company',
|
||||
'return_instructions': _get_default_instructions,
|
||||
}
|
||||
110
__unported__/product_warranty/product_warranty_view.xml
Normal file
110
__unported__/product_warranty/product_warranty_view.xml
Normal file
@@ -0,0 +1,110 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
#########################################################################
|
||||
# #
|
||||
# Copyright (C) 2009-2011 Akretion, Emmanuel Samyn #
|
||||
# #
|
||||
#This program is free software: you can redistribute it and/or modify #
|
||||
#it under the terms of the GNU General Public License as published by #
|
||||
#the Free Software Foundation, either version 3 of the License, or #
|
||||
#(at your option) any later version. #
|
||||
# #
|
||||
#This program is distributed in the hope that it will be useful, #
|
||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
#GNU General Public License for more details. #
|
||||
# #
|
||||
#You should have received a copy of the GNU General Public License #
|
||||
#along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
#########################################################################
|
||||
-->
|
||||
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- return instructions -->
|
||||
<!-- supplier info tree view -->
|
||||
<record model="ir.ui.view" id="product_return_instructions_tree_view">
|
||||
<field name="name">product.return.instructions.tree</field>
|
||||
<field name="model">return.instruction</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Return instructions">
|
||||
<field name="name"/>
|
||||
<field name="instructions"/>
|
||||
<field name="is_default"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- supplier info form view -->
|
||||
<record model="ir.ui.view" id="product_return_instructions_form_view">
|
||||
<field name="name">product.return.instructions.form</field>
|
||||
<field name="model">return.instruction</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Return instructions">
|
||||
<field name="name"/>
|
||||
<field name="is_default"/>
|
||||
<separator string="Instructions" colspan="4"/>
|
||||
<field name="instructions" nolabel="1" colspan="4"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="product_return_instructions_action" model="ir.actions.act_window">
|
||||
<field name="name">Products return instructions</field>
|
||||
<field name="res_model">return.instruction</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="product_return_instructions_tree_view"/>
|
||||
</record>
|
||||
|
||||
<menuitem action="product_return_instructions_action"
|
||||
groups="base.group_no_one"
|
||||
id="menu_product_return_instructions_action"
|
||||
parent="product.prod_config_main" sequence="3"/>
|
||||
<!-- supplier info -->
|
||||
<!-- supplier info tree view -->
|
||||
<record model="ir.ui.view" id="product_supplierinfo_warranty_tree_view">
|
||||
<field name="name">product.supplierinfo.warranty.tree</field>
|
||||
<field name="model">product.supplierinfo</field>
|
||||
<field name="inherit_id" ref="product.product_supplierinfo_tree_view" />
|
||||
<field name="arch" type="xml">
|
||||
<field position="after" name="delay">
|
||||
<field name="warranty_duration"/>
|
||||
<field name="warranty_return_partner"/>
|
||||
<field name="warranty_return_address"/>
|
||||
<field name="active_supplier"/>
|
||||
<field name="return_instructions"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- supplier info form view -->
|
||||
<record model="ir.ui.view" id="product_supplierinfo_warranty_form_view">
|
||||
<field name="name">product.supplierinfo.warranty.form</field>
|
||||
<field name="model">product.supplierinfo</field>
|
||||
<field name="inherit_id" ref="product.product_supplierinfo_form_view" />
|
||||
<field name="arch" type="xml">
|
||||
<field position="after" name="company_id" groups="base.group_multi_company" widget="selection">
|
||||
<group string="Warranty informations" colspan="4">
|
||||
<field name="active_supplier"/>
|
||||
<field name="warranty_duration"/>
|
||||
<field name="return_instructions"/>
|
||||
<group colspan="4" col="6">
|
||||
<group>
|
||||
<field name="warranty_return_partner"/>
|
||||
</group>
|
||||
<group>
|
||||
<div>
|
||||
<label for="warranty_return_other_address_id"/>
|
||||
<field name="warranty_return_other_address_id" attrs="{'invisible':[('warranty_return_partner', '!=', 'other')], 'required':[('warranty_return_partner', '=', 'other')]}" class="oe_inline"/>
|
||||
<field name="warranty_return_address" attrs="{'invisible':[('warranty_return_partner', '=', 'other')]}" class="oe_inline" />
|
||||
</div>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
37
__unported__/product_warranty/res_company.py
Normal file
37
__unported__/product_warranty/res_company.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Copyright 2013 Camptocamp
|
||||
# Copyright 2009-2013 Akretion,
|
||||
# Author: Emmanuel Samyn, Raphaël Valyi, Sébastien Beau, Joel Grand-Guillaume
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import fields, orm
|
||||
|
||||
|
||||
class res_company(orm.Model):
|
||||
|
||||
_inherit = "res.company"
|
||||
|
||||
_columns = {
|
||||
'crm_return_address_id': fields.many2one(
|
||||
'res.partner',
|
||||
'Return address',
|
||||
help="Default address where the customers has to send back the "
|
||||
"returned product. If empty, the address is the "
|
||||
"company address"),
|
||||
}
|
||||
23
__unported__/product_warranty/res_company_view.xml
Normal file
23
__unported__/product_warranty/res_company_view.xml
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<!-- INHERITED VIEW FOR THE OBJECT : res_company -->
|
||||
|
||||
<record id="company_form" model="ir.ui.view">
|
||||
<field name="name">crm_claim_rma.company_form</field>
|
||||
<field name="model">res.company</field>
|
||||
<field name="inherit_id" ref="base.view_company_form" />
|
||||
<field eval="16" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<field name="company_registry" position="after">
|
||||
<separator string="Crm product return address" colspan="4"/>
|
||||
<field name="crm_return_address_id"/>
|
||||
</field>
|
||||
</data>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
@@ -0,0 +1,4 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"access_return_instruction_user","return.instruction.user","model_return_instruction","base.group_user","True","False","False","False"
|
||||
"access_return_instruction_manager","return.instruction.manager","model_return_instruction","base.group_sale_manager","True","True","True","True"
|
||||
"access_return_instruction_salesman","return.instruction.salesman","model_return_instruction","base.group_sale_salesman","True","True","True","True"
|
||||
|
Reference in New Issue
Block a user