[FIX] set_warranty_return_address

This commit is contained in:
manu
2012-06-08 16:30:29 +02:00
parent e87d437e38
commit 56f5f2397e
2 changed files with 107 additions and 105 deletions

View File

@@ -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 = {

View File

@@ -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: