Skip to content
Snippets Groups Projects

voucher validity

Merged Piotr Gawron requested to merge 212-voucher-validity into master
1 unresolved thread
8 files
+ 94
33
Compare changes
  • Side-by-side
  • Inline
Files
8
@@ -57,28 +57,27 @@ class VoucherForm(ModelForm):
if instance and instance.pk:
self.fields['voucher_type'].widget.attrs['readonly'] = True
self.fields['usage_partner'].queryset = Worker.get_workers_by_worker_type(WORKER_VOUCHER_PARTNER).filter(
voucher_types = instance.voucher_type)
voucher_types=instance.voucher_type)
if instance.status != VOUCHER_STATUS_NEW:
self.fields['status'].widget.attrs['readonly'] = True
self.fields['feedback'].widget.attrs['readonly'] = True
self.fields['usage_partner'].widget.attrs['readonly'] = True
def clean(self):
if self.cleaned_data["status"] == VOUCHER_STATUS_USED and not self.cleaned_data["usage_partner"]:
self.add_error('usage_partner', "Partner must be defined for used voucher")
if self.cleaned_data["status"] != VOUCHER_STATUS_USED and self.cleaned_data["usage_partner"]:
self.add_error('status', "Status must be used for voucher with defined partner")
def save(self, commit=True):
instance = super(VoucherForm, self).save(commit=False)
if not instance.id:
instance.issue_date = timezone.now()
instance.expiry_date = instance.issue_date + datetime.timedelta(days=92)
max_id = str(0).zfill(5)
max_id = str(1).zfill(5)
if Voucher.objects.all().count() > 0:
max_id = str(Voucher.objects.latest('id').id).zfill(5)
instance.number = max_id + VerhoeffAlgorithm.calculate_verhoeff_check_sum(max_id)
max_id = str(Voucher.objects.latest('id').id + 1).zfill(5)
# number in format {ND_NUMBER}-{DATE}-{VOUCHER_TYPE_CODE}-{VOUCHER_TYPE}-{SEQ_NUMBER}{CHECKSUM}
instance.number = instance.study_subject.nd_number + "-" + \
datetime.datetime.now().strftime("%Y%m%d") + "-" + \
instance.voucher_type.code + "-" + \
instance.usage_partner.voucher_partner_code + "-" + \
max_id + VerhoeffAlgorithm.calculate_verhoeff_check_sum(max_id)
if instance.status == VOUCHER_STATUS_USED and not instance.use_date:
instance.use_date = timezone.now()
Loading