diff --git a/apps/data/models.py b/apps/data/models.py index 1a9e9ca..315a430 100644 --- a/apps/data/models.py +++ b/apps/data/models.py @@ -19,6 +19,18 @@ class Warehouse(Model): class Meta: 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): """客户""" @@ -51,6 +63,18 @@ class Client(Model): class Meta: 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): self.has_arrears = self.arrears_amount > 0 if update_fields: @@ -82,6 +106,18 @@ class Supplier(Model): class Meta: 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): self.has_arrears = self.arrears_amount > 0 if update_fields: @@ -116,6 +152,18 @@ class Account(Model): class Meta: 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): self.has_balance = self.balance_amount > 0 if update_fields: diff --git a/apps/data/views.py b/apps/data/views.py index 2608ac5..56fb505 100644 --- a/apps/data/views.py +++ b/apps/data/views.py @@ -40,13 +40,7 @@ class WarehouseViewSet(BaseViewSet, ReadWriteMixin): def number(self, request, *args, **kwargs): """获取编号""" - instance = Warehouse.objects.filter(team=self.team).last() - try: - result = re.match('^(.*?)([1-9]+)$', instance.number) - number = result.group(1) + str(int(result.group(2)) + 1) - except AttributeError: - number = 'W001' - + number = Warehouse.get_number(self.team) return Response(data={'number': number}, status=status.HTTP_200_OK) @@ -73,13 +67,7 @@ class ClientViewSet(BaseViewSet, ReadWriteMixin): def number(self, request, *args, **kwargs): """获取编号""" - instance = Client.objects.filter(team=self.team).last() - try: - result = re.match('^(.*?)([1-9]+)$', instance.number) - number = result.group(1) + str(int(result.group(2)) + 1) - except AttributeError: - number = 'C001' - + number = Client.get_number(self.team) return Response(data={'number': number}, status=status.HTTP_200_OK) @@ -106,13 +94,7 @@ class SupplierViewSet(BaseViewSet, ReadWriteMixin): def number(self, request, *args, **kwargs): """获取编号""" - instance = Supplier.objects.filter(team=self.team).last() - try: - result = re.match('^(.*?)([1-9]+)$', instance.number) - number = result.group(1) + str(int(result.group(2)) + 1) - except AttributeError: - number = 'S001' - + number = Supplier.get_number(self.team) return Response(data={'number': number}, status=status.HTTP_200_OK) @@ -138,13 +120,7 @@ class AccountViewSet(BaseViewSet, ReadWriteMixin): def number(self, request, *args, **kwargs): """获取编号""" - instance = Account.objects.filter(team=self.team).last() - try: - result = re.match('^(.*?)([1-9]+)$', instance.number) - number = result.group(1) + str(int(result.group(2)) + 1) - except AttributeError: - number = 'A001' - + number = Account.get_number(self.team) return Response(data={'number': number}, status=status.HTTP_200_OK) diff --git a/apps/finance/models.py b/apps/finance/models.py index a71b98f..9e96ac0 100644 --- a/apps/finance/models.py +++ b/apps/finance/models.py @@ -68,6 +68,19 @@ class CollectionOrder(Model): class Meta: 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): """收款账户""" @@ -108,6 +121,19 @@ class ChargeOrder(Model): class Meta: 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): """结算账户转账记录""" diff --git a/apps/goods/models.py b/apps/goods/models.py index 036555c..6e72f4d 100644 --- a/apps/goods/models.py +++ b/apps/goods/models.py @@ -32,6 +32,18 @@ class Goods(Model): class Meta: 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): """批次""" diff --git a/apps/goods/views.py b/apps/goods/views.py index 08b4992..a26983a 100644 --- a/apps/goods/views.py +++ b/apps/goods/views.py @@ -40,13 +40,7 @@ class GoodsViewSet(BaseViewSet, ReadWriteMixin): def number(self, request, *args, **kwargs): """获取编号""" - instance = Goods.objects.filter(team=self.team).last() - try: - result = re.match('^(.*?)([1-9]+)$', instance.number) - number = result.group(1) + str(int(result.group(2)) + 1) - except AttributeError: - number = 'G000000000001' - + number = Goods.get_number(self.team) return Response(data={'number': number}, status=status.HTTP_200_OK) diff --git a/apps/purchase/models.py b/apps/purchase/models.py index bedc967..8149abd 100644 --- a/apps/purchase/models.py +++ b/apps/purchase/models.py @@ -81,6 +81,19 @@ class PurchaseReturnOrder(Model): class Meta: 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): """采购退货商品""" diff --git a/apps/sales/models.py b/apps/sales/models.py index 272e1d0..d23d9ad 100644 --- a/apps/sales/models.py +++ b/apps/sales/models.py @@ -23,6 +23,19 @@ class SalesOrder(Model): class Meta: 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): """销售商品""" @@ -64,6 +77,19 @@ class SalesReturnOrder(Model): class Meta: 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): """销售退货商品""" diff --git a/apps/stock_check/models.py b/apps/stock_check/models.py index 80e9f6c..4d66df6 100644 --- a/apps/stock_check/models.py +++ b/apps/stock_check/models.py @@ -29,6 +29,19 @@ class StockCheckOrder(Model): class Meta: 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): """盘点商品""" diff --git a/apps/stock_in/models.py b/apps/stock_in/models.py index 733aa2f..47dab6b 100644 --- a/apps/stock_in/models.py +++ b/apps/stock_in/models.py @@ -29,6 +29,19 @@ class StockInOrder(Model): class Meta: 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): """入库商品""" diff --git a/apps/stock_out/models.py b/apps/stock_out/models.py index 23685fa..0e9730c 100644 --- a/apps/stock_out/models.py +++ b/apps/stock_out/models.py @@ -29,6 +29,18 @@ class StockOutOrder(Model): class Meta: 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): """出库商品""" diff --git a/apps/stock_transfer/models.py b/apps/stock_transfer/models.py index 8d8fdc2..a9df530 100644 --- a/apps/stock_transfer/models.py +++ b/apps/stock_transfer/models.py @@ -21,6 +21,18 @@ class StockTransferOrder(Model): class Meta: 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):