def __init__(self, project, engine, *args, **kwargs): super(InvoiceForm, self).__init__(*args, **kwargs) self.project = project self.engine = engine if engine == 'ideal': self.fields['bank'] = forms.CharField(max_length=4, widget=forms.Select(choices=get_mollie_banklist()))
def __init__(self, project, engine, *args, **kwargs): super(InvoiceForm, self).__init__(*args, **kwargs) self.project = project self.engine = engine if engine == 'ideal': self.fields['bank'] = forms.CharField( max_length=4, widget=forms.Select(choices=get_mollie_banklist()))
def __init__(self, project, engine, *args, **kwargs): super(InvoiceForm, self).__init__(*args, **kwargs) self.project = project self.engine = engine self.fields['email2'] = forms.EmailField() if engine == 'ideal': self.fields['bank'] = forms.CharField(max_length=4, widget=forms.Select(choices=get_mollie_banklist(empty_label=_('Please select your bank'))))
def __init__(self, user, project, engine, add_extra_fields=True, *args, **kwargs): super(InvoiceForm, self).__init__(*args, **kwargs) self.project = project self.engine = engine if user.is_authenticated() and user.email: add_extra_fields == False if add_extra_fields: self.fields["name"] = forms.CharField(label=_("Full name")) self.fields["email"] = forms.EmailField(label=_("Email address")) self.fields["email2"] = forms.EmailField(label=_("Email address (confirm)")) if engine == "ideal": self.fields["bank"] = forms.CharField( max_length=4, widget=forms.Select(choices=get_mollie_banklist(empty_label=_("Please select your bank"))) )
class Invoice(models.Model): PAYPAL_INVOICE_STATUS_PENDING = 1 PAYPAL_INVOICE_STATUS_VOID = 2 PAYPAL_INVOICE_STATUS_COMPLETE = 3 PAYPAL_INVOICE_STATUS_STALE = 4 STATUS_CHOICES = ( (PAYPAL_INVOICE_STATUS_PENDING, 'Pending'), (PAYPAL_INVOICE_STATUS_VOID, 'Void'), (PAYPAL_INVOICE_STATUS_COMPLETE, 'Complete'), (PAYPAL_INVOICE_STATUS_STALE, 'Stale'), ) # NOTE: There are still a few places in templates where the strings 'paypal' and 'ideal' are used PAYMENT_ENGINE_PAYPAL = 'paypal' PAYMENT_ENGINE_IDEAL = 'ideal' PAYMENT_ENGINES = ( (PAYMENT_ENGINE_PAYPAL, u'PayPal'), (PAYMENT_ENGINE_IDEAL, u'iDEAL'), ) test = models.BooleanField( u'test donation', help_text=u'This flag is set if the donation was made in test mode.', default=False) engine = ValidXMLCharField(u'payment engine', choices=PAYMENT_ENGINES, max_length=10, default=PAYMENT_ENGINE_PAYPAL) user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True) project = models.ForeignKey('Project', related_name='invoices') # Common amount = models.PositiveIntegerField(help_text=u'Amount requested by user.') amount_received = models.DecimalField( max_digits=10, decimal_places=2, blank=True, null=True, help_text=u'Amount actually received after charges have been applied.' ) time = models.DateTimeField(auto_now_add=True) name = ValidXMLCharField(max_length=75, blank=True, null=True) email = models.EmailField(blank=True, null=True) status = models.PositiveSmallIntegerField('status', choices=STATUS_CHOICES, default=1) http_referer = ValidXMLCharField(u'HTTP referer', max_length=255, blank=True) campaign_code = ValidXMLCharField(u'Campaign code', blank=True, max_length=15) is_anonymous = models.BooleanField(u'anonymous donation', default=False) # PayPal ipn = ValidXMLCharField(u'PayPal IPN', blank=True, null=True, max_length=75) # Mollie bank = ValidXMLCharField(u'mollie.nl bank ID', max_length=4, choices=get_mollie_banklist(), blank=True) transaction_id = ValidXMLCharField(u'mollie.nl transaction ID', max_length=100, blank=True) notes = ValidXMLTextField(verbose_name=_("Notes and comments"), blank=True, default='') admin_objects = models.Manager() objects = InvoiceManager() def get_favicon(self): pass # TODO: @ grab favicon from HTTP_REFERER site @property def get_name(self): if self.user: return self.user.get_full_name() return self.name @property def get_email(self): if self.user: return self.user.email return self.email @property def currency(self): return self.project.currency @property def gateway(self): if self.engine == self.PAYMENT_ENGINE_PAYPAL: if settings.DONATION_TEST: return settings.PAYPAL_SANDBOX_GATEWAY else: return self.project.paymentgatewayselector.paypal_gateway.account_email elif self.engine == 'ideal': return self.project.paymentgatewayselector.mollie_gateway.partner_id @property def locale(self): return self.project.paymentgatewayselector.paypal_gateway.locale @property def notification_email(self): if getattr(settings, "DONATION_TEST", False): return "*****@*****.**" else: if self.engine == "paypal": return self.project.paymentgatewayselector.paypal_gateway.notification_email elif self.engine == "ideal": return self.project.paymentgatewayselector.mollie_gateway.notification_email @property def donation_fee(self): return (self.amount - self.amount_received) def __unicode__(self): return u'Invoice %(invoice_id)s (Project: %(project_name)s)' % { 'invoice_id': self.id, 'project_name': self.project } class Meta: app_label = 'rsr' verbose_name = u'invoice' ordering = ['-id', ]