registrasion/controllers/invoice.py
def update_status(self):
        ''' Updates the status of this invoice based upon the total
        payments.'''

        old_status = self.invoice.status
        total_paid = self.invoice.total_payments()
        num_payments = commerce.PaymentBase.objects.filter(
            invoice=self.invoice,
        ).count()
        remainder = self.invoice.value - total_paid

        if old_status == commerce.Invoice.STATUS_UNPAID:
            # Invoice had an amount owing
            if remainder <= 0:
                # Invoice no longer has amount owing
                self._mark_paid()

            elif total_paid == 0 and num_payments > 0:
                # Invoice has multiple payments totalling zero
                self._mark_void()
        elif old_status == commerce.Invoice.STATUS_PAID:
            if remainder > 0:
                # Invoice went from having a remainder of zero or less
                # to having a positive remainder -- must be a refund
                self._mark_refunded()
        elif old_status == commerce.Invoice.STATUS_REFUNDED:
            # Should not ever change from here
            pass
        elif old_status == commerce.Invoice.STATUS_VOID:
            # Should not ever change from here
            pass

        # Generate credit notes from residual payments
        residual = 0
        if self.invoice.is_paid:
            if remainder < 0:
                residual = 0 - remainder
        elif self.invoice.is_void or self.invoice.is_refunded:
            residual = total_paid

        if residual != 0:
            CreditNoteController.generate_from_invoice(self.invoice, residual)

        self.email_on_invoice_change(
            self.invoice,
            old_status,
            self.invoice.status,
        )
def update_status(self):
        ''' Updates the status of this invoice based upon the total
        payments.'''

        old_status = self.invoice.status
        total_paid = self.invoice.total_payments()
        num_payments = commerce.PaymentBase.objects.filter(
            invoice=self.invoice,
        ).count()
        remainder = self.invoice.value - total_paid

        if old_status == commerce.Invoice.STATUS_UNPAID:
            # Invoice had an amount owing
            if remainder <= 0:
                # Invoice no longer has amount owing
                self._mark_paid()

            elif total_paid == 0 and num_payments > 0:
                # Invoice has multiple payments totalling zero
                self._mark_void()
        elif old_status == commerce.Invoice.STATUS_PAID:
            if remainder > 0:
                # Invoice went from having a remainder of zero or less
                # to having a positive remainder -- must be a refund
                self._mark_refunded()
        elif old_status == commerce.Invoice.STATUS_REFUNDED:
            # Should not ever change from here
            pass
        elif old_status == commerce.Invoice.STATUS_VOID:
            # Should not ever change from here
            pass

        # Generate credit notes from residual payments
        residual = 0
        if self.invoice.is_paid:
            if remainder < 0:
                residual = 0 - remainder
        elif self.invoice.is_void or self.invoice.is_refunded:
            residual = total_paid

        if residual != 0:
            CreditNoteController.generate_from_invoice(self.invoice, residual)

        self.email_on_invoice_change(
            self.invoice,
            old_status,
            self.invoice.status,
        )
def update_status ( self ) : old_status = self . invoice . status total_paid = self . invoice . total_payments ( ) num_payments = commerce . PaymentBase . objects . filter ( invoice = self . invoice , ) . count ( ) remainder = self . invoice . value - total_paid if old_status == commerce . Invoice . STATUS_UNPAID : # Invoice had an amount owing if remainder <= 0 : # Invoice no longer has amount owing self . _mark_paid ( ) elif total_paid == 0 and num_payments > 0 : # Invoice has multiple payments totalling zero self . _mark_void ( ) elif old_status == commerce . Invoice . STATUS_PAID : if remainder > 0 : # Invoice went from having a remainder of zero or less # to having a positive remainder -- must be a refund self . _mark_refunded ( ) elif old_status == commerce . Invoice . STATUS_REFUNDED : # Should not ever change from here pass elif old_status == commerce . Invoice . STATUS_VOID : # Should not ever change from here pass # Generate credit notes from residual payments residual = 0 if self . invoice . is_paid : if remainder < 0 : residual = 0 - remainder elif self . invoice . is_void or self . invoice . is_refunded : residual = total_paid if residual != 0 : CreditNoteController . generate_from_invoice ( self . invoice , residual ) self . email_on_invoice_change ( self . invoice , old_status , self . invoice . status , )
Updates the status of this invoice based upon the total
        payments.
Updates the status of this invoice based upon the total payments .