feat: 编号自动生成

This commit is contained in:
Czw 2021-11-12 15:37:43 +08:00
parent bd07854d74
commit d3112e0745
11 changed files with 180 additions and 35 deletions

View file

@ -19,6 +19,18 @@ class Warehouse(Model):
class Meta: class Meta:
unique_together = [('number', 'team'), ('name', 'team')] unique_together = [('number', 'team'), ('name', 'team')]
@classmethod
def get_number(cls, team):
instance = cls.objects.filter(team=team).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'W001'
return number
class Client(Model): class Client(Model):
"""客户""" """客户"""
@ -51,6 +63,18 @@ class Client(Model):
class Meta: class Meta:
unique_together = [('number', 'team'), ('name', 'team')] unique_together = [('number', 'team'), ('name', 'team')]
@classmethod
def get_number(cls, team):
instance = cls.objects.filter(team=team).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'C001'
return number
def save(self, force_insert=False, force_update=False, using=None, update_fields=None): def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
self.has_arrears = self.arrears_amount > 0 self.has_arrears = self.arrears_amount > 0
if update_fields: if update_fields:
@ -82,6 +106,18 @@ class Supplier(Model):
class Meta: class Meta:
unique_together = [('number', 'team'), ('name', 'team')] unique_together = [('number', 'team'), ('name', 'team')]
@classmethod
def get_number(cls, team):
instance = cls.objects.filter(team=team).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'S001'
return number
def save(self, force_insert=False, force_update=False, using=None, update_fields=None): def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
self.has_arrears = self.arrears_amount > 0 self.has_arrears = self.arrears_amount > 0
if update_fields: if update_fields:
@ -116,6 +152,18 @@ class Account(Model):
class Meta: class Meta:
unique_together = [('number', 'team'), ('name', 'team')] unique_together = [('number', 'team'), ('name', 'team')]
@classmethod
def get_number(cls, team):
instance = cls.objects.filter(team=team).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'A001'
return number
def save(self, force_insert=False, force_update=False, using=None, update_fields=None): def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
self.has_balance = self.balance_amount > 0 self.has_balance = self.balance_amount > 0
if update_fields: if update_fields:

View file

@ -40,13 +40,7 @@ class WarehouseViewSet(BaseViewSet, ReadWriteMixin):
def number(self, request, *args, **kwargs): def number(self, request, *args, **kwargs):
"""获取编号""" """获取编号"""
instance = Warehouse.objects.filter(team=self.team).last() number = Warehouse.get_number(self.team)
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'W001'
return Response(data={'number': number}, status=status.HTTP_200_OK) return Response(data={'number': number}, status=status.HTTP_200_OK)
@ -73,13 +67,7 @@ class ClientViewSet(BaseViewSet, ReadWriteMixin):
def number(self, request, *args, **kwargs): def number(self, request, *args, **kwargs):
"""获取编号""" """获取编号"""
instance = Client.objects.filter(team=self.team).last() number = Client.get_number(self.team)
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'C001'
return Response(data={'number': number}, status=status.HTTP_200_OK) return Response(data={'number': number}, status=status.HTTP_200_OK)
@ -106,13 +94,7 @@ class SupplierViewSet(BaseViewSet, ReadWriteMixin):
def number(self, request, *args, **kwargs): def number(self, request, *args, **kwargs):
"""获取编号""" """获取编号"""
instance = Supplier.objects.filter(team=self.team).last() number = Supplier.get_number(self.team)
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'S001'
return Response(data={'number': number}, status=status.HTTP_200_OK) return Response(data={'number': number}, status=status.HTTP_200_OK)
@ -138,13 +120,7 @@ class AccountViewSet(BaseViewSet, ReadWriteMixin):
def number(self, request, *args, **kwargs): def number(self, request, *args, **kwargs):
"""获取编号""" """获取编号"""
instance = Account.objects.filter(team=self.team).last() number = Account.get_number(self.team)
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'A001'
return Response(data={'number': number}, status=status.HTTP_200_OK) return Response(data={'number': number}, status=status.HTTP_200_OK)

View file

@ -68,6 +68,19 @@ class CollectionOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'CK' + start_date.format('YYYYMMDD') + '0001'
return number
class CollectionAccount(Model): class CollectionAccount(Model):
"""收款账户""" """收款账户"""
@ -108,6 +121,19 @@ class ChargeOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'SZ' + start_date.format('YYYYMMDD') + '0001'
return number
class AccountTransferRecord(Model): class AccountTransferRecord(Model):
"""结算账户转账记录""" """结算账户转账记录"""

View file

@ -32,6 +32,18 @@ class Goods(Model):
class Meta: class Meta:
unique_together = [('number', 'team'), ('name', 'team')] unique_together = [('number', 'team'), ('name', 'team')]
@classmethod
def get_number(cls, team):
instance = cls.objects.filter(team=team).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'G000000000001'
return number
class Batch(Model): class Batch(Model):
"""批次""" """批次"""

View file

@ -40,13 +40,7 @@ class GoodsViewSet(BaseViewSet, ReadWriteMixin):
def number(self, request, *args, **kwargs): def number(self, request, *args, **kwargs):
"""获取编号""" """获取编号"""
instance = Goods.objects.filter(team=self.team).last() number = Goods.get_number(self.team)
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'G000000000001'
return Response(data={'number': number}, status=status.HTTP_200_OK) return Response(data={'number': number}, status=status.HTTP_200_OK)

View file

@ -81,6 +81,19 @@ class PurchaseReturnOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'CR' + start_date.format('YYYYMMDD') + '0001'
return number
class PurchaseReturnGodos(Model): class PurchaseReturnGodos(Model):
"""采购退货商品""" """采购退货商品"""

View file

@ -23,6 +23,19 @@ class SalesOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'XS' + start_date.format('YYYYMMDD') + '0001'
return number
class SalesGoods(Model): class SalesGoods(Model):
"""销售商品""" """销售商品"""
@ -64,6 +77,19 @@ class SalesReturnOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'SR' + start_date.format('YYYYMMDD') + '0001'
return number
class SalesReturnGoods(Model): class SalesReturnGoods(Model):
"""销售退货商品""" """销售退货商品"""

View file

@ -29,6 +29,19 @@ class StockCheckOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'PD' + start_date.format('YYYYMMDD') + '0001'
return number
class StockCheckGoods(Model): class StockCheckGoods(Model):
"""盘点商品""" """盘点商品"""

View file

@ -29,6 +29,19 @@ class StockInOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'RK' + start_date.format('YYYYMMDD') + '0001'
return number
class StockInGoods(Model): class StockInGoods(Model):
"""入库商品""" """入库商品"""

View file

@ -29,6 +29,18 @@ class StockOutOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'CK' + start_date.format('YYYYMMDD') + '0001'
return number
class StockOutGoods(Model): class StockOutGoods(Model):
"""出库商品""" """出库商品"""

View file

@ -21,6 +21,18 @@ class StockTransferOrder(Model):
class Meta: class Meta:
unique_together = [('number', 'team')] unique_together = [('number', 'team')]
@classmethod
def get_number(cls, team):
start_date, end_date = pendulum.now(), pendulum.tomorrow()
instance = cls.objects.filter(team=team, create_time__gte=start_date, create_time__lt=end_date).last()
try:
result = re.match('^(.*?)([1-9]+)$', instance.number)
number = result.group(1) + str(int(result.group(2)) + 1)
except AttributeError:
number = 'DB' + start_date.format('YYYYMMDD') + '0001'
return number
class StockTransferGoods(Model): class StockTransferGoods(Model):