mirror of
https://github.com/OCA/rma.git
synced 2025-02-16 17:11:47 +02:00
[FIX] set_warranty_return_address
This commit is contained in:
@@ -4,8 +4,8 @@
|
||||
# #
|
||||
#########################################################################
|
||||
# #
|
||||
# Copyright (C) 2009-2011 Akretion, Raphaël Valyi, Sébastien Beau, #
|
||||
# Emmanuel Samyn #
|
||||
# Copyright (C) 2009-2011 Akretion, Raphaël Valyi, Sébastien Beau, #
|
||||
# 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 #
|
||||
@@ -54,15 +54,15 @@ class return_line(osv.osv):
|
||||
def _line_total_amount(self, cr, uid, ids, field_name, arg,context):
|
||||
res = {}
|
||||
for line in self.browse(cr,uid,ids):
|
||||
res[line.id] = line.unit_sale_price*line.product_returned_quantity
|
||||
res[line.id] = line.unit_sale_price*line.product_returned_quantity
|
||||
return res
|
||||
|
||||
def _get_claim_seq(self, cr, uid, ids, field_name, arg,context):
|
||||
res = {}
|
||||
for line in self.browse(cr,uid,ids):
|
||||
res[line.id] = line.claim_id.sequence
|
||||
res[line.id] = line.claim_id.sequence
|
||||
return res
|
||||
|
||||
|
||||
_columns = {
|
||||
'name': fields.function(_get_claim_seq, method=True, string='Claim n°', type='char', size=64,store=True),
|
||||
'claim_origine': fields.selection([('none','Not specified'),
|
||||
@@ -112,13 +112,13 @@ class return_line(osv.osv):
|
||||
else :
|
||||
limit = (datetime.strptime(return_line.invoice_id.date_invoice, '%Y-%m-%d') + relativedelta(months=int(return_line.product_id.seller_ids[0].warranty_duration))).strftime('%Y-%m-%d')
|
||||
else :
|
||||
limit = (datetime.strptime(return_line.invoice_id.date_invoice, '%Y-%m-%d') + relativedelta(months=int(return_line.product_id.warranty))).strftime('%Y-%m-%d')
|
||||
limit = (datetime.strptime(return_line.invoice_id.date_invoice, '%Y-%m-%d') + relativedelta(months=int(return_line.product_id.warranty))).strftime('%Y-%m-%d')
|
||||
if limit < return_line.claim_id.date:
|
||||
warning = 'Expired'
|
||||
self.write(cr,uid,ids,{
|
||||
'guarantee_limit' : limit,
|
||||
'warning' : warning,
|
||||
})
|
||||
'guarantee_limit' : limit,
|
||||
'warning' : warning,
|
||||
})
|
||||
else:
|
||||
raise osv.except_osv(_('Error !'), _('Cannot find any date for invoice ! Must be a validated invoice !'))
|
||||
return True
|
||||
@@ -144,40 +144,42 @@ class return_line(osv.osv):
|
||||
def set_warranty_return_address(self, cr, uid, ids,context,return_line):
|
||||
return_address = None
|
||||
warranty_type = 'company'
|
||||
if return_line.prodlot_id :
|
||||
# multi supplier method
|
||||
print "TO BE IMPLEMENTED"
|
||||
else :
|
||||
# first supplier method
|
||||
if return_line.product_id.seller_ids[0]:
|
||||
if return_line.product_id.seller_ids[0].warranty_return_partner:
|
||||
return_partner = return_line.product_id.seller_ids[0].warranty_return_partner
|
||||
if return_partner == 'company':
|
||||
return_address = self._get_partner_address(cr, uid, ids, context,return_line.claim_id.company_id.partner_id)[0]
|
||||
elif return_partner == 'supplier':
|
||||
return_address = self._get_partner_address(cr, uid, ids, context,return_line.product_id.seller_ids[0].name)[0]
|
||||
warranty_type = 'supplier'
|
||||
elif return_partner == 'brand':
|
||||
return_address = self._get_partner_address(cr, uid, ids, context, return_line.product_id.product_brand_id.partner_id)[0]
|
||||
warranty_type = 'brand'
|
||||
else :
|
||||
warranty_type = 'other'
|
||||
# TO BE IMPLEMENTED if something to do...
|
||||
else :
|
||||
raise osv.except_osv(_('Error !'), _('Cannot find any warranty return partner for this product !'))
|
||||
else :
|
||||
raise osv.except_osv(_('Error !'), _('Cannot find any supplier for this product !'))
|
||||
if return_line.product_id.seller_ids:
|
||||
# default : use first supplier method
|
||||
seller = return_line.product_id.seller_ids[0]
|
||||
if len(return_line.product_id.seller_ids) > 1 :
|
||||
# multi supplier method
|
||||
print "TO BE IMPLEMENTED"
|
||||
print "lenght: ",len(return_line.product_id.seller_ids)
|
||||
#seller = set right seller line
|
||||
if seller.warranty_return_partner:
|
||||
return_partner = seller.warranty_return_partner
|
||||
if return_partner == 'company':
|
||||
return_address = self._get_partner_address(cr, uid, ids, context,return_line.claim_id.company_id.partner_id)[0]
|
||||
elif return_partner == 'supplier':
|
||||
return_address = self._get_partner_address(cr, uid, ids, context,return_line.product_id.seller_ids[0].name)[0]
|
||||
warranty_type = 'supplier'
|
||||
elif return_partner == 'brand':
|
||||
return_address = self._get_partner_address(cr, uid, ids, context, return_line.product_id.product_brand_id.partner_id)[0]
|
||||
warranty_type = 'brand'
|
||||
else :
|
||||
warranty_type = 'other'
|
||||
# TO BE IMPLEMENTED if something to do...
|
||||
else :
|
||||
raise osv.except_osv(_('Error !'), _('Cannot find any warranty return partner for this product !'))
|
||||
else :
|
||||
raise osv.except_osv(_('Error !'), _('Cannot find any supplier for this product !'))
|
||||
self.write(cr,uid,ids,{'warranty_return_partner':return_address,'warranty_type':warranty_type})
|
||||
return True
|
||||
|
||||
# Method to calculate warranty limit and validity
|
||||
def set_warranty(self, cr, uid, ids,context=None):
|
||||
for return_line in self.browse(cr,uid,ids):
|
||||
if return_line.product_id and return_line.invoice_id:
|
||||
self.set_warranty_limit(cr, uid, ids,context,return_line)
|
||||
self.set_warranty_return_address(cr, uid, ids,context,return_line)
|
||||
else:
|
||||
raise osv.except_osv(_('Error !'), _('PLEASE SET PRODUCT & INVOICE!'))
|
||||
if return_line.product_id and return_line.invoice_id:
|
||||
self.set_warranty_limit(cr, uid, ids,context,return_line)
|
||||
self.set_warranty_return_address(cr, uid, ids,context,return_line)
|
||||
else:
|
||||
raise osv.except_osv(_('Error !'), _('PLEASE SET PRODUCT & INVOICE!'))
|
||||
return True
|
||||
|
||||
return_line()
|
||||
@@ -194,21 +196,21 @@ class product_exchange(osv.osv):
|
||||
def total_amount_returned(self, cr, uid, ids, field_name, arg,context):
|
||||
res = {}
|
||||
for line in self.browse(cr,uid,ids):
|
||||
res[line.id] = line.returned_unit_sale_price*line.returned_product_qty
|
||||
res[line.id] = line.returned_unit_sale_price*line.returned_product_qty
|
||||
return res
|
||||
|
||||
# Method to calculate total amount of the line : qty*UP
|
||||
def total_amount_replacement(self, cr, uid, ids, field_name, arg,context):
|
||||
res = {}
|
||||
for line in self.browse(cr,uid,ids):
|
||||
res[line.id] = line.replacement_unit_sale_price*line.replacement_product_qty
|
||||
res[line.id] = line.replacement_unit_sale_price*line.replacement_product_qty
|
||||
return res
|
||||
|
||||
# Method to get the replacement product unit price
|
||||
def get_replacement_price(self, cr, uid, ids, field_name, arg,context):
|
||||
res = {}
|
||||
for line in self.browse(cr,uid,ids):
|
||||
res[line.id] = line.replacement_product.list_price
|
||||
res[line.id] = line.replacement_product.list_price
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
|
||||
@@ -41,13 +41,13 @@ class picking_in_from_returned_lines(osv.osv_memory):
|
||||
for line in returned_lines:
|
||||
if line.selected:
|
||||
M2M.append(self.pool.get('temp.return.line').create(cr, uid, {
|
||||
'claim_origine' : "none",
|
||||
'invoice_id' : line.invoice_id.id,
|
||||
'product_id' : line.product_id.id,
|
||||
'product_returned_quantity' : line.product_returned_quantity,
|
||||
'prodlot_id' : line.prodlot_id.id,
|
||||
'price_unit' : line.unit_sale_price,
|
||||
}))
|
||||
'claim_origine' : "none",
|
||||
'invoice_id' : line.invoice_id.id,
|
||||
'product_id' : line.product_id.id,
|
||||
'product_returned_quantity' : line.product_returned_quantity,
|
||||
'prodlot_id' : line.prodlot_id.id,
|
||||
'price_unit' : line.unit_sale_price,
|
||||
}))
|
||||
return M2M
|
||||
|
||||
# Get default destination location
|
||||
@@ -77,7 +77,7 @@ class picking_in_from_returned_lines(osv.osv_memory):
|
||||
location = claim_id.partner_id.property_stock_supplier.id
|
||||
# create picking
|
||||
picking_id = self.pool.get('stock.picking').create(cr, uid, {
|
||||
'origin': "RMA/"+`claim_id.id`,
|
||||
'origin': claim_id.sequence,
|
||||
'type': 'in',
|
||||
'move_type': 'one', # direct
|
||||
'state': 'draft',
|
||||
@@ -87,32 +87,32 @@ class picking_in_from_returned_lines(osv.osv_memory):
|
||||
'company_id': claim_id.company_id.id,
|
||||
'location_id': location,
|
||||
'location_dest_id': picking.return_line_location.id,
|
||||
'note' : 'RMA picking in',
|
||||
})
|
||||
# Create picking lines
|
||||
'note' : 'RMA picking in',
|
||||
})
|
||||
# Create picking lines
|
||||
for picking_line in picking.return_line_ids:
|
||||
move_id = self.pool.get('stock.move').create(cr, uid, {
|
||||
'name' : picking_line.product_id.name_template, # Motif : crm id ? stock_picking_id ?
|
||||
'priority': '0',
|
||||
#'create_date':
|
||||
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'date_expected': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'product_id': picking_line.product_id.id,
|
||||
'product_qty': picking_line.product_returned_quantity,
|
||||
'product_uom': picking_line.product_id.uom_id.id,
|
||||
'address_id': claim_id.partner_address_id.id,
|
||||
'prodlot_id': picking_line.prodlot_id.id,
|
||||
# 'tracking_id':
|
||||
'picking_id': picking_id,
|
||||
'state': 'draft',
|
||||
'price_unit': picking_line.price_unit,
|
||||
# 'price_currency_id': claim_id.company_id.currency_id.id, # from invoice ???
|
||||
'company_id': claim_id.company_id.id,
|
||||
'location_id': location,
|
||||
'location_dest_id': picking.return_line_location.id,
|
||||
#self.pool.get('stock.warehouse').read(cr, uid, [1],['lot_input_id'])[0]['lot_input_id'][0],
|
||||
'note': 'RMA Refound',
|
||||
})
|
||||
'name' : picking_line.product_id.name_template, # Motif : crm id ? stock_picking_id ?
|
||||
'priority': '0',
|
||||
#'create_date':
|
||||
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'date_expected': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'product_id': picking_line.product_id.id,
|
||||
'product_qty': picking_line.product_returned_quantity,
|
||||
'product_uom': picking_line.product_id.uom_id.id,
|
||||
'address_id': claim_id.partner_address_id.id,
|
||||
'prodlot_id': picking_line.prodlot_id.id,
|
||||
# 'tracking_id':
|
||||
'picking_id': picking_id,
|
||||
'state': 'draft',
|
||||
'price_unit': picking_line.price_unit,
|
||||
# 'price_currency_id': claim_id.company_id.currency_id.id, # from invoice ???
|
||||
'company_id': claim_id.company_id.id,
|
||||
'location_id': location,
|
||||
'location_dest_id': picking.return_line_location.id,
|
||||
#self.pool.get('stock.warehouse').read(cr, uid, [1],['lot_input_id'])[0]['lot_input_id'][0],
|
||||
'note': 'RMA Refound',
|
||||
})
|
||||
|
||||
return {
|
||||
'name': 'Customer Picking IN',
|
||||
@@ -141,13 +141,13 @@ class picking_out_from_returned_lines(osv.osv_memory):
|
||||
for line in returned_lines:
|
||||
if line.selected:
|
||||
M2M.append(self.pool.get('temp.return.line').create(cr, uid, {
|
||||
'claim_origine' : "none",
|
||||
'invoice_id' : line.invoice_id.id,
|
||||
'product_id' : line.product_id.id,
|
||||
'product_returned_quantity' : line.product_returned_quantity,
|
||||
'prodlot_id' : line.prodlot_id.id,
|
||||
'price_unit' : line.unit_sale_price,
|
||||
}))
|
||||
'claim_origine' : "none",
|
||||
'invoice_id' : line.invoice_id.id,
|
||||
'product_id' : line.product_id.id,
|
||||
'product_returned_quantity' : line.product_returned_quantity,
|
||||
'prodlot_id' : line.prodlot_id.id,
|
||||
'price_unit' : line.unit_sale_price,
|
||||
}))
|
||||
return M2M
|
||||
|
||||
_defaults = {
|
||||
@@ -172,7 +172,7 @@ class picking_out_from_returned_lines(osv.osv_memory):
|
||||
location = claim_id.partner_id.property_stock_supplier.id
|
||||
# create picking
|
||||
picking_id = self.pool.get('stock.picking').create(cr, uid, {
|
||||
'origin': "RMA/"+`claim_id.id`,
|
||||
'origin': "RMA/"+`claim_id.id`,
|
||||
'type': 'out',
|
||||
'move_type': 'one', # direct
|
||||
'state': 'draft',
|
||||
@@ -183,32 +183,32 @@ class picking_out_from_returned_lines(osv.osv_memory):
|
||||
# 'stock_journal_id': fields.many2one('stock.journal','Stock Journal', select=True),
|
||||
'location_id': self.pool.get('stock.warehouse').read(cr, uid, [1],['lot_input_id'])[0]['lot_input_id'][0],
|
||||
'location_dest_id': location,
|
||||
'note' : 'RMA picking in',
|
||||
})
|
||||
|
||||
# Create picking lines
|
||||
'note' : 'RMA picking in',
|
||||
})
|
||||
|
||||
# Create picking lines
|
||||
for picking_line in picking.return_line_ids:
|
||||
move_id = self.pool.get('stock.move').create(cr, uid, {
|
||||
'name' : picking_line.product_id.name_template, # Motif : crm id ? stock_picking_id ?
|
||||
'priority': '0',
|
||||
#'create_date':
|
||||
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'date_expected': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'product_id': picking_line.product_id.id,
|
||||
'product_qty': picking_line.product_returned_quantity,
|
||||
'product_uom': picking_line.product_id.uom_id.id,
|
||||
'address_id': claim_id.partner_address_id.id,
|
||||
'prodlot_id': picking_line.prodlot_id.id,
|
||||
# 'tracking_id':
|
||||
'picking_id': picking_id,
|
||||
'state': 'draft',
|
||||
'price_unit': picking_line.price_unit,
|
||||
# 'price_currency_id': claim_id.company_id.currency_id.id, # from invoice ???
|
||||
'company_id': claim_id.company_id.id,
|
||||
'location_id': self.pool.get('stock.warehouse').read(cr, uid, [1],['lot_input_id'])[0]['lot_input_id'][0],
|
||||
'location_dest_id': location,
|
||||
'note': 'RMA Refound',
|
||||
})
|
||||
'name' : picking_line.product_id.name_template, # Motif : crm id ? stock_picking_id ?
|
||||
'priority': '0',
|
||||
#'create_date':
|
||||
'date': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'date_expected': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'product_id': picking_line.product_id.id,
|
||||
'product_qty': picking_line.product_returned_quantity,
|
||||
'product_uom': picking_line.product_id.uom_id.id,
|
||||
'address_id': claim_id.partner_address_id.id,
|
||||
'prodlot_id': picking_line.prodlot_id.id,
|
||||
# 'tracking_id':
|
||||
'picking_id': picking_id,
|
||||
'state': 'draft',
|
||||
'price_unit': picking_line.price_unit,
|
||||
# 'price_currency_id': claim_id.company_id.currency_id.id, # from invoice ???
|
||||
'company_id': claim_id.company_id.id,
|
||||
'location_id': self.pool.get('stock.warehouse').read(cr, uid, [1],['lot_input_id'])[0]['lot_input_id'][0],
|
||||
'location_dest_id': location,
|
||||
'note': 'RMA Refound',
|
||||
})
|
||||
|
||||
return {
|
||||
'name': 'Customer Picking OUT',
|
||||
@@ -218,7 +218,7 @@ class picking_out_from_returned_lines(osv.osv_memory):
|
||||
'res_model': 'stock.picking',
|
||||
'type': 'ir.actions.act_window',
|
||||
}
|
||||
|
||||
|
||||
picking_out_from_returned_lines()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
Reference in New Issue
Block a user