def __reconstruct_total_excl_from_tcc_and_taxes(self): """ Set self.total_excl with Amount object The total_excl Amount value is the difference between total_incl and sum of taxes The total_excl Amount probability is the product of self.taxes probabilities multiplied by total_incl probability """ if len(self.taxes) and self.total_incl.value is not None: total_excl = { "value": self.total_incl.value - Field.array_sum(self.taxes), "probability": Field.array_probability(self.taxes) * self.total_incl.probability } self.total_excl = Amount(total_excl, value_key="value", reconstructed=True)
def test_array_sum(): fields = [Field({"value": 1, "probability": 0.1}), Field({"value": 2, "probability": 0.8})] assert Field.array_sum(fields) == 3 fields = [Field({"value": None, "probability": 0.1}), Field({"value": 4, "probability": 0.8})] assert Field.array_sum(fields) == 0.