73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
#This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
#this repository contains the full copyright notices and license terms.
|
|
from trytond.model import ModelView, ModelSQL, fields
|
|
from trytond.transaction import Transaction
|
|
from trytond.pool import Pool
|
|
|
|
|
|
class Carrier(ModelSQL, ModelView):
|
|
'Carrier'
|
|
_name = 'carrier'
|
|
_inherits = {'party.party': 'party'}
|
|
|
|
party = fields.Many2One('party.party', 'Party', required=True,
|
|
ondelete='CASCADE')
|
|
carrier_product = fields.Many2One('product.product', 'Carrier Product',
|
|
required=True, domain=[
|
|
('type', '=', 'service'),
|
|
])
|
|
carrier_cost_method = fields.Selection([
|
|
('product', 'Product Price'),
|
|
], 'Carrier Cost Method', required=True,
|
|
help='Method to compute carrier cost')
|
|
|
|
def default_carrier_cost_method(self):
|
|
return 'product'
|
|
|
|
def get_rec_name(self, ids, name):
|
|
if not ids:
|
|
return {}
|
|
names = {}
|
|
for carrier in self.browse(ids):
|
|
names[carrier.id] = '%s - %s' % (carrier.party.rec_name,
|
|
carrier.carrier_product.rec_name)
|
|
return names
|
|
|
|
def copy(self, ids, default=None):
|
|
party_obj = Pool().get('party.party')
|
|
|
|
int_id = False
|
|
if isinstance(ids, (int, long)):
|
|
int_id = True
|
|
ids = [ids]
|
|
if default is None:
|
|
default = {}
|
|
default = default.copy()
|
|
new_ids = []
|
|
for carrier in self.browse(ids):
|
|
default['party'] = party_obj.copy(carrier.party.id)
|
|
new_id = super(Carrier, self).copy(carrier.id, default=default)
|
|
new_ids.append(new_id)
|
|
if int_id:
|
|
return new_ids[0]
|
|
return new_ids
|
|
|
|
def get_sale_price(self, carrier):
|
|
'Compute carrier sale price with currency'
|
|
user_obj = Pool().get('res.user')
|
|
if carrier.carrier_cost_method == 'product':
|
|
user = user_obj.browse(Transaction().user
|
|
or Transaction().context.get('user'))
|
|
return carrier.carrier_product.list_price, user.company.currency.id
|
|
return 0, None
|
|
|
|
def get_purchase_price(self, carrier):
|
|
'Compute carrier purchase price with currency'
|
|
user_obj = Pool().get('res.user')
|
|
if carrier.carrier_cost_method == 'product':
|
|
user = user_obj.browse(Transaction().user)
|
|
return carrier.carrier_product.cost_price, user.company.currency.id
|
|
return 0, None
|
|
|
|
Carrier()
|