Exemple #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
        logger.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
Exemple #2
0
 def rendre_monnaie(self, paiement):
     '''Régularisation si le montant payé est superieur au montant
     de la facture'''
     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
Exemple #3
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
Exemple #4
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
        logger.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
Exemple #5
0
 def add_payment(self, type_payment, montant, valeur_unitaire="1.0"):
     """
     :param type_payment: Un TypePaiement
     :param montant: String convertissable en décimal
     :param valeur_unitaire : String convertissable en décimal
     :return: Boolean
     """
     if not self.is_valid_payment(montant):
         return False
     paiement = Paiement()
     paiement.type = type_payment
     paiement.valeur_unitaire = Decimal(valeur_unitaire)
     logger.debug("Création d'un nouveau paiement : {0}".format(paiement))
     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
     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
Exemple #6
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