def add_payment(self, type_payment, montant, valeur_unitaire="1.0"): """Add a payment to Facture(). :param TypePaiement type_payment: :param String montant: will be use with Decimal() :param String valeur_unitaire: will be use with Decimal() :return: True if payment added :rtype: Boolean""" if not self.is_valid_payment(montant): return False paiement = Paiement() paiement.type = type_payment paiement.valeur_unitaire = Decimal(valeur_unitaire) if type_payment.fixed_value: # Dans ce cas le montant est le nombre de ticket paiement.nb_tickets = int(montant) paiement.montant = paiement.nb_tickets * paiement.valeur_unitaire else: paiement.montant = Decimal(montant) # On enregistre ce paiement LOG.debug("Nouveau paiement : {0}".format(paiement)) paiement.save() self.paiements.add(paiement) if paiement.montant > self.restant_a_payer: # Si le montant est superieur au restant du alors on rembourse en # espece. self.rendre_monnaie(paiement) self.restant_a_payer -= paiement.montant self.save() return True
def rendre_monnaie(self, paiement): """Adjustment if the amount paid is greater than the amount invoice :param Paiement paiement: payment bigger than bill """ monnaie = Paiement() payment_for_refunds = Config.objects.get(key="payment_for_refunds" ).value monnaie.type = PaiementType.objects.get(id=payment_for_refunds) monnaie.montant = self.restant_a_payer - paiement.montant monnaie.save() self.paiements.add(monnaie) self.restant_a_payer -= monnaie.montant
def rendre_monnaie(self, paiement): """Adjustment if the amount paid is greater than the amount invoice :param Paiement paiement: payment bigger than bill """ monnaie = Paiement() payment_for_refunds = Config.objects.get( key="payment_for_refunds").value monnaie.type = PaiementType.objects.get(id=payment_for_refunds) monnaie.montant = self.restant_a_payer - paiement.montant monnaie.save() self.paiements.add(monnaie) self.restant_a_payer -= monnaie.montant