Bug premium sale
This commit is contained in:
@@ -509,7 +509,10 @@ class Sale(metaclass=PoolMeta):
|
||||
def _get_report_display_price_value(self, line):
|
||||
if getattr(line, 'price_type', None) == 'basis':
|
||||
if getattr(line, 'enable_linked_currency', False) and getattr(line, 'linked_currency', None):
|
||||
return Decimal(str(line.premium or 0))
|
||||
premium = getattr(line, 'premium', None)
|
||||
if premium is None and hasattr(line, '_get_premium_price'):
|
||||
premium = line._get_premium_price()
|
||||
return Decimal(str(premium or 0))
|
||||
return Decimal(str(line._get_premium_price() or 0))
|
||||
if getattr(line, 'linked_price', None):
|
||||
return Decimal(str(line.linked_price or 0))
|
||||
@@ -1854,7 +1857,10 @@ class SaleLine(metaclass=PoolMeta):
|
||||
}])
|
||||
|
||||
def _get_premium_price(self):
|
||||
return Decimal(self.premium or 0)
|
||||
premium = getattr(self, 'premium', None)
|
||||
if premium is None:
|
||||
premium = self.get_premium('premium')
|
||||
return Decimal(str(premium or 0))
|
||||
|
||||
def _get_amount_quantity(self):
|
||||
if getattr(self, 'finished', False):
|
||||
|
||||
@@ -2164,6 +2164,22 @@ class PurchaseTradeTestCase(ModuleTestCase):
|
||||
|
||||
self.assertEqual(line.get_premium('premium'), Decimal('10.2500'))
|
||||
|
||||
def test_sale_line_premium_price_falls_back_to_decomposition(self):
|
||||
'sale line premium price works when the function field is not loaded'
|
||||
class LineWithoutPremium:
|
||||
premium_decomposition = [
|
||||
Mock(base_amount=Decimal('7.25')),
|
||||
Mock(base_amount=Decimal('-1.00')),
|
||||
]
|
||||
|
||||
get_premium = sale_module.SaleLine.get_premium
|
||||
|
||||
line = LineWithoutPremium()
|
||||
|
||||
self.assertEqual(
|
||||
sale_module.SaleLine._get_premium_price(line),
|
||||
Decimal('6.2500'))
|
||||
|
||||
def test_purchase_and_sale_line_premium_fields_are_readonly_totals(self):
|
||||
'line premium fields are readonly totals from premium decomposition'
|
||||
PurchaseLine = Pool().get('purchase.line')
|
||||
|
||||
Reference in New Issue
Block a user