This commit is contained in:
2026-05-24 18:35:59 +02:00
parent c7146dd8a7
commit 01c23c1ec2

View File

@@ -1,7 +1,7 @@
from sql import Literal, Null
from sql import Literal, Null, Window
from sql.aggregate import Max, Min, Sum
from sql.conditionals import Case, Coalesce
from sql.functions import CurrentTimestamp
from sql.functions import CurrentTimestamp, RowNumber
from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import Pool
@@ -721,22 +721,13 @@ class CTRMPnlDimension(ModelSQL, ModelView):
val.state,
val.strategy,
]
row_id = (
Coalesce(Max(dimension_expr), 0) * 1000000
+ Coalesce(Max(value_expr), 0))
return (
grouped = (
val
.join(purchase_assignment, 'LEFT',
condition=purchase_assignment.purchase == val.purchase)
.join(sale_assignment, 'LEFT',
condition=sale_assignment.sale == val.sale)
.select(
Literal(0).as_('create_uid'),
CurrentTimestamp().as_('create_date'),
Literal(None).as_('write_uid'),
Literal(None).as_('write_date'),
row_id.as_('id'),
val.date.as_('valuation_date'),
dimension_expr.as_('dimension'),
value_expr.as_('value'),
@@ -753,3 +744,36 @@ class CTRMPnlDimension(ModelSQL, ModelView):
'mtm_delta'),
where=where,
group_by=group_by))
row_number = RowNumber(window=Window([],
order_by=[
grouped.valuation_date.asc,
grouped.dimension.asc,
grouped.value.asc,
grouped.product.asc,
grouped.counterparty.asc,
grouped.currency.asc,
grouped.unit.asc,
grouped.state.asc,
grouped.strategy.asc,
]))
return grouped.select(
Literal(0).as_('create_uid'),
CurrentTimestamp().as_('create_date'),
Literal(None).as_('write_uid'),
Literal(None).as_('write_date'),
row_number.as_('id'),
grouped.valuation_date.as_('valuation_date'),
grouped.dimension.as_('dimension'),
grouped.value.as_('value'),
grouped.product.as_('product'),
grouped.counterparty.as_('counterparty'),
grouped.currency.as_('currency'),
grouped.unit.as_('unit'),
grouped.state.as_('state'),
grouped.strategy.as_('strategy'),
grouped.quantity.as_('quantity'),
grouped.amount.as_('amount'),
grouped.mtm.as_('mtm'),
grouped.mtm_delta.as_('mtm_delta'))