其他出库

This commit is contained in:
caoqianming 2022-03-14 11:11:46 +08:00
parent 13f29342c6
commit 0bae0d4c53
4 changed files with 47 additions and 6 deletions

View File

@ -4,7 +4,7 @@ from rest_framework.response import Response
from celery import shared_task from celery import shared_task
import os import os
import subprocess import subprocess
from server.settings_pro import DATABASES, BACKUP_DATABASE_PATH from server.settings_pro import DATABASES, BACKUP_PATH, SH_PATH
@shared_task @shared_task
def backup_database(): def backup_database():
@ -17,14 +17,14 @@ def backup_database():
DATABASES['default']['USER'], DATABASES['default']['USER'],
DATABASES['default']['PASSWORD'], DATABASES['default']['PASSWORD'],
DATABASES['default']['NAME'], DATABASES['default']['NAME'],
BACKUP_DATABASE_PATH, BACKUP_PATH + '/database',
name) name)
completed = subprocess.run(command, shell=True, capture_output=True, text=True) completed = subprocess.run(command, shell=True, capture_output=True, text=True)
return completed return completed
@shared_task @shared_task
def reload_server(): def reload_server():
command = 'bash /home/lighthouse/hberp/hb_server/sh/git.sh' command = 'bash {}/git.sh'.format(SH_PATH)
completed = subprocess.run(command, shell=True, capture_output=True, text=True) completed = subprocess.run(command, shell=True, capture_output=True, text=True)
return completed return completed
@ -36,7 +36,7 @@ def reload_server_only():
@shared_task @shared_task
def backup_media(): def backup_media():
command = 'bash /home/lighthouse/hberp/hb_server/sh/backup_media.sh' command = 'bash {}/backup_media.sh'.format(SH_PATH)
completed = subprocess.run(command, shell=True, capture_output=True, text=True) completed = subprocess.run(command, shell=True, capture_output=True, text=True)
return completed return completed

View File

@ -142,6 +142,36 @@ class MaterialBatchQuerySerializer(serializers.Serializer):
warehouse = serializers.IntegerField(label="仓库ID", required=False) warehouse = serializers.IntegerField(label="仓库ID", required=False)
materials = serializers.ListField(child=serializers.IntegerField(label="物料ID"), required=False) materials = serializers.ListField(child=serializers.IntegerField(label="物料ID"), required=False)
class FIFODetailOutOtherSerializer(serializers.Serializer):
material_batch = serializers.PrimaryKeyRelatedField(queryset=MaterialBatch.objects.all(), label="物料批次ID")
count = serializers.IntegerField(label="数量", min_value=0)
class FIFOOutOtherSerializer(serializers.ModelSerializer):
"""
其他出库序列化
"""
details = FIFODetailOutOtherSerializer(many=True, required=False)
class Meta:
model = FIFO
fields = ['details']
def create(self, validated_data):
details = validated_data.pop('details')
with transaction.atomic():
validated_data['type'] = FIFO.FIFO_TYPE_OTHER_OUT
validated_data['number'] = 'CK' + ranstr(7)
obj = FIFO(**validated_data)
obj.save()
for i in details:
mb = i['material_batch']
i['material'] = mb.material
i['batch'] = mb.batch
i['warehouse'] = mb.warehouse
i['fifo'] = obj
FIFOItem.objects.create(**i)
return obj
class FIFOInOtherSerializer(serializers.ModelSerializer): class FIFOInOtherSerializer(serializers.ModelSerializer):
""" """
其他入库序列化 其他入库序列化

View File

@ -59,7 +59,7 @@ class InmService:
pu_order_item.delivered_count = delivered_count pu_order_item.delivered_count = delivered_count
pu_order_item.save() pu_order_item.save()
elif instance.type in [FIFO.FIFO_TYPE_DO_OUT, FIFO.FIFO_TYPE_SALE_OUT]: # 生产领料 销售出库 elif instance.type in [FIFO.FIFO_TYPE_DO_OUT, FIFO.FIFO_TYPE_SALE_OUT, FIFO.FIFO_TYPE_OTHER_OUT]: # 生产领料 销售出库
# 更新相关表 # 更新相关表
for i in FIFOItem.objects.filter(fifo=instance): for i in FIFOItem.objects.filter(fifo=instance):
material = i.material material = i.material

View File

@ -6,7 +6,7 @@ from rest_framework.viewsets import GenericViewSet, ModelViewSet
from apps.inm.filters import IProductFilterSet, MbFilterSet from apps.inm.filters import IProductFilterSet, MbFilterSet
from apps.inm.models import FIFO, FIFOItem, IProduct, MaterialBatch, WareHouse, Inventory from apps.inm.models import FIFO, FIFOItem, IProduct, MaterialBatch, WareHouse, Inventory
from apps.inm.serializers import FIFOInOtherSerializer, FIFOItemCreateSerializer, FIFOItemSerializer, FIFOInPurSerializer, FIFOItemUpdateSerializer, FIFOListSerializer, IProductListSerializer, \ from apps.inm.serializers import FIFOInOtherSerializer, FIFOItemCreateSerializer, FIFOItemSerializer, FIFOInPurSerializer, FIFOItemUpdateSerializer, FIFOListSerializer, FIFOOutOtherSerializer, IProductListSerializer, \
InmTestRecordCreateSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, \ InmTestRecordCreateSerializer, MaterialBatchQuerySerializer, MaterialBatchSerializer, WareHouseSerializer, \
WareHouseCreateUpdateSerializer, InventorySerializer WareHouseCreateUpdateSerializer, InventorySerializer
from apps.inm.services import InmService from apps.inm.services import InmService
@ -183,6 +183,17 @@ class FIFOViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
serializer.save(create_by=request.user) serializer.save(create_by=request.user)
return Response() return Response()
@action(methods=['post'], detail=False, perms_map={'post': 'fifo_out_other'},
serializer_class=FIFOOutOtherSerializer)
def out_other(self, request, pk=None):
"""
其他出库
"""
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save(create_by=request.user)
return Response()
@action(methods=['post'], detail=True, perms_map={'post': 'fifo_audit'}, serializer_class=serializers.Serializer) @action(methods=['post'], detail=True, perms_map={'post': 'fifo_audit'}, serializer_class=serializers.Serializer)
@transaction.atomic @transaction.atomic
def audit(self, request, pk=None): def audit(self, request, pk=None):