diff --git a/system/login/urls.py b/system/login/urls.py index 66911f473fb5907631944c9a5d32b888ee88d0ef..69c6336f92806518f573c471dbf7bf0326eec519 100644 --- a/system/login/urls.py +++ b/system/login/urls.py @@ -1,4 +1,4 @@ -from django.urls import path +from django.urls import path, include from django.urls import re_path as url from . import views from . import view1 @@ -12,7 +12,7 @@ urlpatterns = [ path('create/', views.create, name='create'), path('i_graph1/', views.index_graph1, name='i_graph1'), path('index1/Proc_index/', views.proc_index, name='proc_index'), - path('index1/Sales_index/', views.sale_index, name='sale_index'), + path('index1/Sales_index/', include('sales.urls')), path('index1/Warehouse_index/', views.Warehouse_index, name='warehouse_index'), path('index1/live_info', views.Stream_info, name='stream_info'), url(r'^line/$', view1.ChartView.as_view(), name='demo'), diff --git a/system/login/views.py b/system/login/views.py index cbaf9bfec435be132d32c2c2ad33830b8cd6c23c..cae2d5210f59b06d7ad288fb51c3552f24b8911f 100644 --- a/system/login/views.py +++ b/system/login/views.py @@ -54,11 +54,6 @@ def create(request):##注册并登录界面, def proc_index(request): return render(request, '../templates/Procurement/index.html') - -def sale_index(request): - return render(request, '../templates/Sales/index.html') - - def Warehouse_index(request): return render(request, '../templates/Warehouse/index.html') diff --git a/system/sales/models.py b/system/sales/models.py index 71a836239075aa6e6e4ecb700e9c42c95c022d91..ed0cc9a2beac1d2452f1462c25b27ebe0c1fc3ba 100644 --- a/system/sales/models.py +++ b/system/sales/models.py @@ -1,3 +1,137 @@ from django.db import models # Create your models here. + + +class EmployeeInfo(models.Model): + eid = models.CharField(primary_key=True, max_length=10) + ename = models.CharField(max_length=10, blank=True, null=True) + psword = models.CharField(max_length=20, blank=True, null=True) + etype = models.CharField(max_length=20, blank=True, null=True) + + class Meta: + managed = False + db_table = 'employee_info' + + +class LiveroomInfo(models.Model): + liveroom_id = models.CharField(primary_key=True, max_length=10) + liveroom_status = models.IntegerField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'liveroom_info' + + +class GoodsInfo(models.Model): + goods_id = models.CharField(primary_key=True, max_length=10) + goods_name = models.CharField(max_length=20, blank=True, null=True) + goods_type = models.CharField(max_length=20, blank=True, null=True) + gprice = models.FloatField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'goods_info' + + +class CustomerInfo(models.Model): + cid = models.CharField(primary_key=True, max_length=20) + clevel = models.CharField(max_length=10, blank=True, null=True) + + class Meta: + managed = False + db_table = 'customer_info' + + +class ZbInfo(models.Model): + eid = models.OneToOneField(EmployeeInfo, models.DO_NOTHING, db_column='eid', primary_key=True) + zbname = models.CharField(max_length=10, blank=True, null=True) + zblevel = models.CharField(max_length=1024, blank=True, null=True) + login_status = models.IntegerField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'zb_info' + + +class SalesInfo(models.Model): + eid = models.OneToOneField(EmployeeInfo, models.DO_NOTHING, db_column='eid', primary_key=True) + sales_name = models.CharField(max_length=10, blank=True, null=True) + sales_duty = models.CharField(max_length=20, blank=True, null=True) + login_status = models.IntegerField(blank=True, null=True) + salary = models.FloatField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'sales_info' + + +class LiveRecord(models.Model): + live_record_id = models.CharField(primary_key=True, max_length=20) + liveroom = models.ForeignKey(LiveroomInfo, models.DO_NOTHING) + eid = models.ForeignKey(ZbInfo, models.DO_NOTHING, db_column='eid') + live_starttime = models.DateTimeField(blank=True, null=True) + live_endtime = models.DateTimeField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'live_record' + + +class OrderInfo(models.Model): + order_id = models.CharField(primary_key=True, max_length=25) + live_record = models.ForeignKey(LiveRecord, models.DO_NOTHING) + cid = models.ForeignKey(CustomerInfo, models.DO_NOTHING, db_column='cid') + eid = models.ForeignKey(SalesInfo, models.DO_NOTHING, db_column='eid') + order_time = models.DateTimeField(blank=True, null=True) + address = models.CharField(max_length=100, blank=True, null=True) + sum_price = models.FloatField(blank=True, null=True) + process_status = models.CharField(max_length=10, blank=True, null=True) + + class Meta: + managed = True + db_table = 'order_info' + + +class OrderDetails(models.Model): + order = models.OneToOneField(OrderInfo, models.DO_NOTHING, primary_key=True) # The composite primary key (order_id, goods_id) found, that is not supported. The first column is selected. + goods = models.ForeignKey(GoodsInfo, models.DO_NOTHING) + goods_num = models.IntegerField(blank=True, null=True) + + class Meta: + managed = False + db_table = 'order_details' + unique_together = (('order', 'goods'),) + + +class ReturnInfo(models.Model): + return_id = models.CharField(primary_key=True, max_length=20) + order = models.ForeignKey(OrderInfo, models.DO_NOTHING) + apply_time = models.DateTimeField(blank=True, null=True) + process_time = models.DateTimeField(blank=True, null=True) + process_way = models.CharField(max_length=20, blank=True, null=True) + retrun_status = models.CharField(max_length=20, blank=True, null=True) + + class Meta: + managed = False + db_table = 'return_info' + + +class StockInfo(models.Model): + goods = models.OneToOneField(GoodsInfo, models.DO_NOTHING, primary_key=True) + goods_details = models.CharField(max_length=1024, blank=True, null=True) + stock_num = models.IntegerField() + + class Meta: + managed = True + db_table = 'stock_info' + + +class StockOut(models.Model): + goods = models.OneToOneField(StockInfo, models.DO_NOTHING, primary_key=True) + out_time = models.DateTimeField() + out_num = models.IntegerField() + + class Meta: + managed = True + db_table = 'stock_out' diff --git a/system/sales/urls.py b/system/sales/urls.py index c2805f93ca55909c0410bc25966af845e15240c4..7f3ad81b20cec26ad55f77d5064be850bb52f301 100644 --- a/system/sales/urls.py +++ b/system/sales/urls.py @@ -6,6 +6,11 @@ app_name='sales'#需要添加app名称,不然include无法找到该model,在ht urlpatterns = [ # 主页,用来显示类别等其他数据 + path('', views.sale_index, name='sale_index'), path('order', views.sale_order, name='sale_order'), + path('order_p', views.order_process, name='next_order'), + path('out', views.deliver_process, name='delivery'), + path('inc', views.income_process, name="income"), + path('move', views.sales_movement, name="movement"), ] diff --git a/system/sales/views.py b/system/sales/views.py index 5bde43ec61f86918dea0eb28e2cce55479be7799..569881266095caeffde8f8d446c36d14c31cc4f8 100644 --- a/system/sales/views.py +++ b/system/sales/views.py @@ -1,8 +1,71 @@ from django.shortcuts import render +import datetime +import pyecharts +from sales import models # Create your views here. from django.http import HttpResponse +def sale_index(request): + info = models.OrderInfo.objects.filter(eid='SA42376', process_status='未处理') + if info.exists(): + return render(request, '../templates/Sales/index.html', {'order': info}) + else: + return render(request, '../templates/Sales/index.html') + + def sale_order(request): - return render(request, '../templates/Sales/order-page.html') \ No newline at end of file + info = models.OrderInfo.objects.filter(eid='SA42376', process_status='未处理') + if info.exists(): + order = info[0] + goods = models.OrderDetails.objects.filter(order_id=order.order_id) + if goods.exists(): + return render(request, '../templates/Sales/order-page.html', {'order': order, 'goods': goods}) + else: + return render(request, '../templates/Sales/order-page.html') + + +def order_process(request): + if request.method == "POST": + order_id = request.POST["order_id"] + order_number = request.POST["TotalSum"] + models.OrderInfo.objects.filter(order_id=order_id).update(process_status="已处理") + # order.process_status = "已处理" + # order.save() + if float(order_number) < 0: + # 退货处理订单,规定其总价为负数。 + models.ReturnInfo.objects.create(return_id=f"RET+{order_id}", order=order_id, + apply_time=models.OrderInfo.objects.filter(order_id=order_id).order_time, + process_time=datetime.datetime.now(), + process_way="退货", retrun_status="已处理") + return sale_order(request) + else: + return sale_order(request) + + +def deliver_process(request): + deliver_list = models.OrderInfo.objects.filter(eid='SA42376', process_status='已处理') + if deliver_list.exists(): + goods_list = dict() + for order in deliver_list: + goods = models.OrderDetails.objects.filter(order_id=order.order_id) + for good in goods: + goods_list[good.goods] = goods_list.get(good.goods, 0) + good.goods_num + deliver_list.update(process_status="已发货") + for good in goods_list.keys(): + models.StockOut.objects.create(goods=models.StockInfo.objects.get(goods=good), + out_time=datetime.datetime.now(), out_num=goods_list[good]) + return sale_index(request) + + +def income_process(request): + imcome_list = models.OrderInfo.objects.filter(eid='SA42376', process_status='已发货') + if imcome_list.exists(): + imcome_list.update(process_status="已结算") + else: + return sale_index(request) + + +def sales_movement(request): + return 1 diff --git a/system/templates/Sales/index.html b/system/templates/Sales/index.html index 8d68ee0e5278eb7743f5e29cf840458c2fa1b7f8..9a37ec645e50a47d7dc041c669207003c9c57ef4 100644 --- a/system/templates/Sales/index.html +++ b/system/templates/Sales/index.html @@ -80,7 +80,7 @@