def get_amount(self): """ Returns the reversed tva amount """ tva_amount = self.payment.tva.value ht_value = reverse_tva(self.payment.amount, tva_amount) tva_value = compute_tva(ht_value, tva_amount) return floor(tva_value)
def get_amount(self): """ Returns the reversed tva amount """ tva_amount = self.payment.tva.value ht_value = reverse_tva(self.payment.amount, tva_amount) tva_value = compute_tva(ht_value, tva_amount) return floor(tva_value)
def manual_payment_line_amounts(self): """ Computes the ht and tva needed to reach each payment line total self.payment_lines are configured with TTC amounts return a list of dict: [{tva1:ht_amount, tva2:ht_amount}] each dict represents a configured payment line """ # Cette méthode recompose un paiement qui a été configuré TTC, sous # forme de part HT + TVA au regard des différentes tva configurées dans # le devis ret_data = [] parts = self.tva_ht_parts() # On enlève déjà ce qui est inclu dans l'accompte for tva, ht_amount in self.deposit_amounts().items(): parts[tva] -= ht_amount for payment in self.payment_lines[:-1]: payment_ttc = payment.amount payment_lines = {} for tva, total_ht in parts.items(): payment_ht = math_utils.reverse_tva( payment_ttc, tva, False, ) if total_ht >= payment_ht: # Le total ht de cette tranche de tva est suffisant pour # recouvrir notre paiement # on la récupère payment_lines[tva] = payment_ht # On enlève ce qu'on vient de prendre de la tranche de tva # pour le calcul des autres paiements parts[tva] = total_ht - payment_ht ret_data.append(payment_lines) break else: # On a besoin d'une autre tranche de tva pour atteindre # notre paiement, on prend déjà ce qu'il y a payment_lines[tva] = parts.pop(tva) # On enlève la part qu'on a récupéré dans cette tranche de # tva du total de notre paiement payment_ttc -= total_ht + math_utils.compute_tva( total_ht, tva, ) # Ce qui reste c'est donc pour notre facture de solde sold = parts ret_data.append(sold) return ret_data
def manual_payment_line_amounts(self): """ Computes the ht and tva needed to reach each payment line total self.payment_lines are configured with TTC amounts return a list of dict: [{tva1:ht_amount, tva2:ht_amount}] each dict represents a configured payment line """ # Cette méthode recompose un paiement qui a été configuré TTC, sous # forme de part HT + TVA au regard des différentes tva configurées dans # le devis ret_data = [] parts = self.tva_ht_parts() # On enlève déjà ce qui est inclu dans l'accompte for tva, ht_amount in self.deposit_amounts().items(): parts[tva] -= ht_amount for payment in self.payment_lines[:-1]: payment_ttc = payment.amount payment_lines = {} for tva, total_ht in parts.items(): payment_ht = math_utils.reverse_tva( payment_ttc, tva, False, ) if total_ht >= payment_ht: # Le total ht de cette tranche de tva est suffisant pour # recouvrir notre paiement # on la récupère payment_lines[tva] = payment_ht # On enlève ce qu'on vient de prendre de la tranche de tva # pour le calcul des autres paiements parts[tva] = total_ht - payment_ht ret_data.append(payment_lines) break else: # On a besoin d'une autre tranche de tva pour atteindre # notre paiement, on prend déjà ce qu'il y a payment_lines[tva] = parts.pop(tva) # On enlève la part qu'on a récupéré dans cette tranche de # tva du total de notre paiement payment_ttc -= total_ht + math_utils.compute_tva( total_ht, tva, ) # Ce qui reste c'est donc pour notre facture de solde sold = parts ret_data.append(sold) return ret_data
def tva_amount(self): """ compute the tva amount of a line """ totalht = self.total_ht() return math_utils.compute_tva(totalht, self.tva)
def test_compute_tva(): assert compute_tva(10000, 2000) == 2000
def tva_amount(self): """ compute the tva amount of a line """ totalht = self.total_ht() return math_utils.compute_tva(totalht, self.tva)
def test_compute_tva(): assert compute_tva(10000, 2000) == 2000