|
@@ -1,5 +1,7 @@
|
|
#coding=utf-8
|
|
#coding=utf-8
|
|
|
|
|
|
|
|
+import datetime
|
|
|
|
+
|
|
from django.db import models
|
|
from django.db import models
|
|
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, Group, PermissionsMixin
|
|
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, Group, PermissionsMixin
|
|
from django.utils import timezone
|
|
from django.utils import timezone
|
|
@@ -53,8 +55,7 @@ class Activity(models.Model):
|
|
end_date = models.DateField(verbose_name=u"截止日期")
|
|
end_date = models.DateField(verbose_name=u"截止日期")
|
|
amount = models.FloatField(verbose_name=u"费用", default=0)
|
|
amount = models.FloatField(verbose_name=u"费用", default=0)
|
|
rebate = models.FloatField(verbose_name=u"返利", default=0)
|
|
rebate = models.FloatField(verbose_name=u"返利", default=0)
|
|
- check_status = models.PositiveSmallIntegerField(choices=settings.CHECK_STATUS_CHOICES, verbose_name=u"审核",
|
|
|
|
- editable=False, default=settings.DEFAULT)
|
|
|
|
|
|
+ check_status = models.PositiveSmallIntegerField(choices=settings.CHECK_STATUS_CHOICES, verbose_name=u"审核", editable=False, default=settings.DEFAULT)
|
|
branch_name = models.CharField(max_length=200, verbose_name=u"门店名称", null=True, blank=True)
|
|
branch_name = models.CharField(max_length=200, verbose_name=u"门店名称", null=True, blank=True)
|
|
branch_tel = models.CharField(max_length=50, verbose_name=u"门店电话", null=True, blank=True)
|
|
branch_tel = models.CharField(max_length=50, verbose_name=u"门店电话", null=True, blank=True)
|
|
branch_address = models.CharField(max_length=200, verbose_name=u"门店地址", null=True, blank=True)
|
|
branch_address = models.CharField(max_length=200, verbose_name=u"门店地址", null=True, blank=True)
|
|
@@ -71,9 +72,11 @@ class Activity(models.Model):
|
|
class Order(models.Model):
|
|
class Order(models.Model):
|
|
DEFAULT = 0
|
|
DEFAULT = 0
|
|
FINISH = 1
|
|
FINISH = 1
|
|
|
|
+ FAIL = 2
|
|
STATUS_CHOICES = (
|
|
STATUS_CHOICES = (
|
|
(DEFAULT, u'待付款'),
|
|
(DEFAULT, u'待付款'),
|
|
(FINISH, u'已完成'),
|
|
(FINISH, u'已完成'),
|
|
|
|
+ (FAIL, u'失败'),
|
|
)
|
|
)
|
|
branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT)
|
|
branch = models.ForeignKey(Branch, verbose_name=u"门店", on_delete=models.PROTECT)
|
|
activity = models.ForeignKey(Activity, verbose_name=u"活动", on_delete=models.PROTECT)
|
|
activity = models.ForeignKey(Activity, verbose_name=u"活动", on_delete=models.PROTECT)
|
|
@@ -116,6 +119,7 @@ class Coupon(models.Model):
|
|
class MemberCoupon(models.Model):
|
|
class MemberCoupon(models.Model):
|
|
member = models.ForeignKey(Member, verbose_name=u"会员", on_delete=models.PROTECT)
|
|
member = models.ForeignKey(Member, verbose_name=u"会员", on_delete=models.PROTECT)
|
|
coupon = models.ForeignKey(Coupon, verbose_name=u"优惠券", on_delete=models.PROTECT)
|
|
coupon = models.ForeignKey(Coupon, verbose_name=u"优惠券", on_delete=models.PROTECT)
|
|
|
|
+ activity = models.ForeignKey(Activity, verbose_name=u"活动", on_delete=models.PROTECT)
|
|
receive_date = models.DateField(verbose_name=u"领取日期", null=True, blank=True)
|
|
receive_date = models.DateField(verbose_name=u"领取日期", null=True, blank=True)
|
|
end_date = models.DateField(verbose_name=u"有效期至", null=True, blank=True)
|
|
end_date = models.DateField(verbose_name=u"有效期至", null=True, blank=True)
|
|
write_off = models.BooleanField(verbose_name=u"核销", default=True)
|
|
write_off = models.BooleanField(verbose_name=u"核销", default=True)
|
|
@@ -126,6 +130,38 @@ class MemberCoupon(models.Model):
|
|
ordering = ['-id']
|
|
ordering = ['-id']
|
|
verbose_name = u"会员优惠券"
|
|
verbose_name = u"会员优惠券"
|
|
|
|
|
|
|
|
+ def writeOff(self):
|
|
|
|
+ now = datetime.datetime.date(timezone.now())
|
|
|
|
+ if self.write_off:
|
|
|
|
+ raise CustomError(u'该优惠券已核销,禁止重复使用!')
|
|
|
|
+ if self.end_date and now > self.end_date:
|
|
|
|
+ raise CustomError(u'该优惠券已过有效期,禁止使用!')
|
|
|
|
+
|
|
|
|
+ self.write_off = True
|
|
|
|
+ self.write_off_time = timezone.now()
|
|
|
|
+ self.save()
|
|
|
|
+
|
|
|
|
+ def cancelWriteOff(self):
|
|
|
|
+ if not self.write_off:
|
|
|
|
+ raise CustomError(u'该优惠券尚未核销,禁止撤销!')
|
|
|
|
+
|
|
|
|
+ self.write_off = False
|
|
|
|
+ self.write_off_time = None
|
|
|
|
+ self.save()
|
|
|
|
+
|
|
|
|
+ @staticmethod
|
|
|
|
+ def getById(id):
|
|
|
|
+ try:
|
|
|
|
+ id = int(id)
|
|
|
|
+ except:
|
|
|
|
+ raise CustomError(u'无效的会员优惠券ID')
|
|
|
|
+
|
|
|
|
+ instance = MemberCoupon.objects.filter(pk=id).first()
|
|
|
|
+ if not instance:
|
|
|
|
+ raise CustomError(u'未找到相应的会员优惠券')
|
|
|
|
+ return instance
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
class ActivityCoupon(models.Model):
|
|
class ActivityCoupon(models.Model):
|
|
activity = models.ForeignKey(Activity, verbose_name=u"活动", on_delete=models.PROTECT)
|
|
activity = models.ForeignKey(Activity, verbose_name=u"活动", on_delete=models.PROTECT)
|