01.04.26
This commit is contained in:
@@ -198,6 +198,9 @@ class ValuationBase(ModelSQL):
|
||||
|
||||
@classmethod
|
||||
def _get_basis_premium_delta(cls, record):
|
||||
premium_getter = getattr(record, '_get_premium_price', None)
|
||||
if premium_getter:
|
||||
return round(Decimal(premium_getter() or 0), 4)
|
||||
total = Decimal(record.get_basis_price() or 0)
|
||||
components = cls._get_basis_component_total(record)
|
||||
return round(total - components, 4)
|
||||
@@ -320,7 +323,34 @@ class ValuationBase(ModelSQL):
|
||||
|
||||
if line.price_type == 'basis':
|
||||
premium_delta = cls._get_basis_premium_delta(line)
|
||||
for pc in line.price_summary or []:
|
||||
summaries = line.price_summary or []
|
||||
if not summaries:
|
||||
values = cls._build_simple_pnl(
|
||||
line=line,
|
||||
lot=lot,
|
||||
sale_line=None,
|
||||
price=Decimal(line.unit_price or 0) + premium_delta,
|
||||
state='unfixed',
|
||||
sign=-1,
|
||||
pnl_type='pur. priced'
|
||||
)
|
||||
if values and lot.sale_line:
|
||||
values['sale'] = lot.sale_line.sale.id
|
||||
values['sale_line'] = lot.sale_line.id
|
||||
if line.mtm and cls._supports_strategy_mtm(values):
|
||||
for strat in line.mtm:
|
||||
values['mtm_price'] = cls._get_strategy_mtm_price(strat, line)
|
||||
values['mtm'] = strat.get_mtm(line, values['quantity'])
|
||||
values['strategy'] = strat
|
||||
|
||||
if values:
|
||||
price_lines.append(values)
|
||||
else:
|
||||
if values:
|
||||
price_lines.append(values)
|
||||
continue
|
||||
|
||||
for pc in summaries:
|
||||
values = cls._build_basis_pnl(
|
||||
line=line, lot=lot, sale_line=None, pc=pc, sign=-1,
|
||||
extra_price=premium_delta)
|
||||
@@ -522,11 +552,12 @@ class ValuationBase(ModelSQL):
|
||||
for lot in sale_line.lots or []:
|
||||
if sale_line.price_type == 'basis':
|
||||
summaries = sale_line.price_summary or []
|
||||
premium_delta = cls._get_basis_premium_delta(sale_line)
|
||||
if not summaries:
|
||||
values = cls._build_simple_pnl_from_sale_line(
|
||||
sale_line=sale_line,
|
||||
lot=lot,
|
||||
price=Decimal(sale_line.unit_price or 0),
|
||||
price=Decimal(sale_line.unit_price or 0) + premium_delta,
|
||||
state='unfixed',
|
||||
pnl_type='sale priced'
|
||||
)
|
||||
@@ -543,7 +574,6 @@ class ValuationBase(ModelSQL):
|
||||
price_lines.append(values)
|
||||
continue
|
||||
|
||||
premium_delta = cls._get_basis_premium_delta(sale_line)
|
||||
for pc in summaries:
|
||||
values = cls._build_basis_pnl_from_sale_line(
|
||||
sale_line=sale_line, lot=lot, pc=pc,
|
||||
|
||||
Reference in New Issue
Block a user