def _unit_compute(cls, taxes, price_unit, date):
res = []
for _, group_taxes in groupby(taxes, key=cls._group_taxes):
unit_price_variation = 0
for tax in group_taxes:
start_date = tax.start_date or datetime.date.min
end_date = tax.end_date or datetime.date.max
if not (start_date <= date <= end_date):
continue
if tax.type != 'none':
value = tax._process_tax(price_unit)
res.append(value)
if tax.update_unit_price:
unit_price_variation += value['amount']
if len(tax.childs):
res.extend(cls._unit_compute(tax.childs, price_unit, date))
price_unit += unit_price_variation
return res
评论列表
文章目录