[FIX] crm_claim.date is a datetime, error when a product has no supplier, in such case, returns the product to the company's address

This commit is contained in:
Guewen Baconnier
2013-12-03 11:21:07 +01:00
committed by Maxime Chambreuil
parent e7cc2e33ae
commit 4acafa0cbf
2 changed files with 54 additions and 42 deletions

View File

@@ -21,48 +21,54 @@
######################################################################### #########################################################################
from openerp.osv import orm, fields from openerp.osv import orm, fields
from tools.translate import _
class return_instruction(orm.Model): class return_instruction(orm.Model):
_name = "return.instruction" _name = "return.instruction"
_description = "Instructions for product return" _description = "Instructions for product return"
_columns = { _columns = {
'name': fields.char('Title', size=128, required=True), 'name': fields.char('Title', required=True),
'instructions' : fields.text('Instructions', 'instructions': fields.text(
'Instructions',
help="Instructions for product return"), help="Instructions for product return"),
'is_default' : fields.boolean('Is default', 'is_default': fields.boolean(
'Is default',
help="If is default, will be use to set the default value in " help="If is default, will be use to set the default value in "
"supplier infos. Be careful to have only one default"), "supplier infos. Be careful to have only one default"),
} }
class product_supplierinfo(orm.Model): class product_supplierinfo(orm.Model):
_inherit = "product.supplierinfo" _inherit = "product.supplierinfo"
def get_warranty_return_partner(self, cr, uid, context=None): def get_warranty_return_partner(self, cr, uid, context=None):
result = [ result = [('company', 'Company'),
('company','Company'), ('supplier', 'Supplier'),
('supplier','Supplier'), ('other', 'Other'),
('other','Other'),] ]
return result return result
# Get selected lines to add to exchange
def _get_default_instructions(self, cr, uid, context=None): def _get_default_instructions(self, cr, uid, context=None):
instruction_ids = self.pool.get('return.instruction').search(cr, uid, """ Get selected lines to add to exchange """
[('is_default','=','FALSE')]) instr_obj = self.pool.get('return.instruction')
instruction_ids = instr_obj.search(cr, uid,
[('is_default', '=', 'FALSE')],
context=context)
if instruction_ids: if instruction_ids:
return instruction_ids[0] return instruction_ids[0]
# TODO f(supplier) + other.
return False return False
def _get_warranty_return_address(self, cr, uid, ids, field_names, arg, context=None): 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 """ 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. dedicated_delivery_address stand for the case a new type of
result ={} address more particularly dedicated to return delivery would be
address_obj = self.pool.get('res.partner') implemented.
"""
result = {}
for supplier_info in self.browse(cr, uid, ids, context=context): for supplier_info in self.browse(cr, uid, ids, context=context):
result[supplier_info.id] = {} result[supplier_info.id] = False
address_id = False
return_partner = supplier_info.warranty_return_partner return_partner = supplier_info.warranty_return_partner
partner_id = supplier_info.company_id.partner_id.id partner_id = supplier_info.company_id.partner_id.id
if return_partner: if return_partner:
@@ -78,33 +84,40 @@ class product_supplierinfo(orm.Model):
return result return result
_columns = { _columns = {
"warranty_duration": fields.float('Period', "warranty_duration": fields.float(
'Period',
help="Warranty in month for this product/supplier relation. Only for " help="Warranty in month for this product/supplier relation. Only for "
"company/supplier relation (purchase order) ; the customer/company " "company/supplier relation (purchase order) ; the customer/company "
"relation (sale order) always use the product main warranty field"), "relation (sale order) always use the product main warranty field"),
"warranty_return_partner": fields.selection(get_warranty_return_partner, "warranty_return_partner": fields.selection(
get_warranty_return_partner,
'Return type', 'Return type',
required=True, required=True,
help="Who is in charge of the warranty return treatment toward the end customer. " 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 " "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 " "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 " "applied is the one of the return partner (ie: can be returned to the company and "
"be under the brand warranty"), "be under the brand warranty"),
'return_instructions': fields.many2one('return.instruction', 'return_instructions': fields.many2one(
'return.instruction',
'Instructions', 'Instructions',
help="Instructions for product return"), help="Instructions for product return"),
'active_supplier': fields.boolean('Active supplier', 'active_supplier': fields.boolean(
'Active supplier',
help="Is this supplier still active, only for information"), help="Is this supplier still active, only for information"),
'warranty_return_address': fields.function(_get_warranty_return_address, 'warranty_return_address': fields.function(
_get_warranty_return_address,
type='many2one', relation='res.partner', string="Return address", type='many2one', relation='res.partner', string="Return address",
help="Where the goods should be returned (computed field based on other infos.)"), help="Where the goods should be returned "
"warranty_return_other_address_id" : fields.many2one('res.partner', "(computed field based on other infos.)"),
"warranty_return_other_address_id": fields.many2one(
'res.partner',
'Return address', 'Return address',
help="Where the customer has to send back the product(s) if warranty return is set" help="Where the customer has to send back the product(s) "
"to 'other'."), "if warranty return is set to 'other'."),
}
_defaults = {
'warranty_return_partner': lambda *a: 'company',
'return_instructions': _get_default_instructions,
} }
_defaults = {
'warranty_return_partner': 'company',
'return_instructions': _get_default_instructions,
}

View File

@@ -20,19 +20,18 @@
# #
############################################################################## ##############################################################################
from openerp.osv import fields, orm, osv from openerp.osv import fields, orm
class res_company(orm.Model): class res_company(orm.Model):
_inherit = "res.company" _inherit = "res.company"
_columns = { _columns = {
'crm_return_address_id': fields.many2one('res.partner', 'crm_return_address_id': fields.many2one(
'res.partner',
'Return address', 'Return address',
help="Default address where the customers has to send back the " help="Default address where the customers has to send back the "
"returned product. If empty, the address is the " "returned product. If empty, the address is the "
"company address"), "company address"),
} }