Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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