feat: 项目文档

This commit is contained in:
Czw996 2021-12-18 15:23:08 +08:00
parent d3e6f20523
commit b5406d0a96
6 changed files with 59 additions and 22 deletions

View file

@ -13,7 +13,8 @@ class StockInOrder(Model):
STOCK_TRANSFER = ('stock_transfer', '调拨')
number = CharField(max_length=32, verbose_name='编号')
warehouse = ForeignKey('data.Warehouse', on_delete=PROTECT, related_name='stock_in_orders', verbose_name='仓库')
warehouse = ForeignKey('data.Warehouse', on_delete=PROTECT,
related_name='stock_in_orders', verbose_name='仓库')
type = CharField(max_length=32, choices=Type.choices, verbose_name='入库类型')
purchase_order = OneToOneField('purchase.PurchaseOrder', on_delete=CASCADE, null=True,
related_name='stock_in_order', verbose_name='采购单据')

View file

@ -9,29 +9,34 @@ from apps.system.models import *
class StockInOrderSerializer(BaseSerializer):
"""入库单据"""
class StockInGoodsSerializer(BaseSerializer):
class StockInGoodsItemSerializer(BaseSerializer):
"""入库商品"""
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
goods_name = CharField(source='goods.name', read_only=True, label='商品名称')
goods_barcode = CharField(source='goods.barcode', read_only=True, label='商品条码')
unit_name = CharField(source='goods.unit.name', read_only=True, label='单位名称')
enable_batch_control = BooleanField(source='goods.enable_batch_control', read_only=True, label='启用批次控制')
enable_batch_control = BooleanField(source='goods.enable_batch_control',
read_only=True, label='启用批次控制')
shelf_life_days = CharField(source='goods.shelf_life_days', read_only=True, label='保质期天数')
class Meta:
model = StockInGoods
fields = ['id', 'goods', 'goods_number', 'goods_name', 'goods_barcode', 'stock_in_quantity',
'remain_quantity', 'unit_name', 'enable_batch_control', 'shelf_life_days', 'is_completed']
fields = ['id', 'goods', 'goods_number', 'goods_name', 'goods_barcode',
'stock_in_quantity', 'remain_quantity', 'unit_name', 'enable_batch_control',
'shelf_life_days', 'is_completed']
warehouse_number = CharField(source='warehouse.number', read_only=True, label='仓库编号')
warehouse_name = CharField(source='warehouse.name', read_only=True, label='仓库名称')
type_display = CharField(source='get_type_display', read_only=True, label='入库类型')
purchase_order_number = CharField(source='purchase_order.number', read_only=True, label='采购单据编号')
sales_return_order_number = CharField(source='sales_return_order.number', read_only=True, label='销售退货单据编号')
stock_transfer_order_number = CharField(source='stock_transfer_order.number', read_only=True, label='调拨单据编号')
sales_return_order_number = CharField(source='sales_return_order.number',
read_only=True, label='销售退货单据编号')
stock_transfer_order_number = CharField(source='stock_transfer_order.number',
read_only=True, label='调拨单据编号')
creator_name = CharField(source='creator.name', read_only=True, label='创建人名称')
stock_in_goods_items = StockInGoodsSerializer(source='stock_in_goods_set', many=True, label='入库商品')
stock_in_goods_items = StockInGoodsItemSerializer(
source='stock_in_goods_set', many=True, label='入库商品Item')
class Meta:
model = StockInOrder
@ -45,7 +50,7 @@ class StockInOrderSerializer(BaseSerializer):
class StockInRecordSerializer(BaseSerializer):
"""入库记录"""
class StockInRecordGoodsSerializer(BaseSerializer):
class StockInRecordGoodsItemSerializer(BaseSerializer):
"""入库记录商品"""
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
@ -58,7 +63,8 @@ class StockInRecordSerializer(BaseSerializer):
model = StockInRecordGoods
read_only_fields = ['id', 'goods', 'goods_number', 'goods_name', 'goods_barcode', 'unit_name',
'enable_batch_control', 'shelf_life_days', 'expiration_date']
fields = ['stock_in_goods', 'stock_in_quantity', 'production_date', 'batch_number', *read_only_fields]
fields = ['stock_in_goods', 'stock_in_quantity', 'production_date', 'batch_number',
*read_only_fields]
def validate_stock_in_goods(self, instance):
instance = self.validate_foreign_key(StockInGoods, instance, message='入库商品不存在')
@ -91,8 +97,8 @@ class StockInRecordSerializer(BaseSerializer):
warehouse_name = CharField(source='warehouse.name', read_only=True, label='仓库名称')
handler_name = CharField(source='handler.name', read_only=True, label='经手人名称')
creator_name = CharField(source='creator.name', read_only=True, label='创建人名称')
stock_in_record_goods_items = StockInRecordGoodsSerializer(source='stock_in_record_goods_set',
many=True, label='入库记录商品')
stock_in_record_goods_items = StockInRecordGoodsItemSerializer(
source='stock_in_record_goods_set', many=True, label='入库记录商品')
class Meta:
model = StockInRecord

View file

@ -13,7 +13,8 @@ class StockOutOrder(Model):
STOCK_TRANSFER = ('stock_transfer', '调拨')
number = CharField(max_length=32, verbose_name='编号')
warehouse = ForeignKey('data.Warehouse', on_delete=PROTECT, related_name='stock_out_orders', verbose_name='仓库')
warehouse = ForeignKey('data.Warehouse', on_delete=PROTECT,
related_name='stock_out_orders', verbose_name='仓库')
type = CharField(max_length=32, choices=Type.choices, verbose_name='出库类型')
sales_order = OneToOneField('sales.SalesOrder', on_delete=CASCADE, null=True,
related_name='stock_out_order', verbose_name='销售单据')
@ -52,7 +53,8 @@ class StockOutGoods(Model):
stock_out_order = ForeignKey('stock_out.StockOutOrder', on_delete=CASCADE,
related_name='stock_out_goods_set', verbose_name='出库单据')
goods = ForeignKey('goods.Goods', on_delete=PROTECT, related_name='stock_out_goods_set', verbose_name='商品')
goods = ForeignKey('goods.Goods', on_delete=PROTECT,
related_name='stock_out_goods_set', verbose_name='商品')
stock_out_quantity = FloatField(verbose_name='出库总数')
remain_quantity = FloatField(default=0, verbose_name='出库剩余数量')
is_completed = BooleanField(default=False, verbose_name='完成状态')
@ -67,8 +69,10 @@ class StockOutRecord(Model):
stock_out_order = ForeignKey('stock_out.StockOutOrder', on_delete=CASCADE,
related_name='stock_out_records', verbose_name='出库单据')
warehouse = ForeignKey('data.Warehouse', on_delete=PROTECT, related_name='stock_out_records', verbose_name='仓库')
handler = ForeignKey('system.User', on_delete=PROTECT, related_name='stock_out_records', verbose_name='经手人')
warehouse = ForeignKey('data.Warehouse', on_delete=PROTECT,
related_name='stock_out_records', verbose_name='仓库')
handler = ForeignKey('system.User', on_delete=PROTECT,
related_name='stock_out_records', verbose_name='经手人')
handle_time = DateTimeField(verbose_name='处理时间')
remark = CharField(max_length=256, null=True, blank=True, verbose_name='备注')
total_quantity = FloatField(null=True, verbose_name='出库总数')
@ -86,7 +90,8 @@ class StockOutRecordGoods(Model):
related_name='stock_out_record_goods_set', verbose_name='出库记录')
stock_out_goods = ForeignKey('stock_out.StockOutGoods', on_delete=CASCADE,
related_name='stock_out_record_goods_set', verbose_name='出库商品')
goods = ForeignKey('goods.Goods', on_delete=PROTECT, related_name='stock_out_record_goods_set', verbose_name='商品')
goods = ForeignKey('goods.Goods', on_delete=PROTECT,
related_name='stock_out_record_goods_set', verbose_name='商品')
stock_out_quantity = FloatField(verbose_name='出库数量')
enable_batch_control = BooleanField(default=False, verbose_name='启用批次控制')
batch = OneToOneField('goods.Batch', on_delete=CASCADE, null=True,

View file

@ -9,14 +9,15 @@ from apps.system.models import *
class StockOutOrderSerializer(BaseSerializer):
"""出库单据"""
class StockOutGoodsSerializer(BaseSerializer):
class StockOutGoodsItemSerializer(BaseSerializer):
"""出库商品"""
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
goods_name = CharField(source='goods.name', read_only=True, label='商品名称')
goods_barcode = CharField(source='goods.barcode', read_only=True, label='商品条码')
unit_name = CharField(source='goods.unit.name', read_only=True, label='单位名称')
enable_batch_control = BooleanField(source='goods.enable_batch_control', read_only=True, label='启用批次控制')
enable_batch_control = BooleanField(source='goods.enable_batch_control',
read_only=True, label='启用批次控制')
class Meta:
model = StockOutGoods
@ -27,10 +28,13 @@ class StockOutOrderSerializer(BaseSerializer):
warehouse_name = CharField(source='warehouse.name', read_only=True, label='仓库名称')
type_display = CharField(source='get_type_display', read_only=True, label='出库类型')
sales_order_number = CharField(source='sales_order.number', read_only=True, label='销售单据编号')
purchase_return_order_number = CharField(source='purchase_return_order.number', read_only=True, label='采购退货单据编号')
stock_transfer_order_number = CharField(source='stock_transfer_order.number', read_only=True, label='调拨单据编号')
purchase_return_order_number = CharField(source='purchase_return_order.number',
read_only=True, label='采购退货单据编号')
stock_transfer_order_number = CharField(source='stock_transfer_order.number',
read_only=True, label='调拨单据编号')
creator_name = CharField(source='creator.name', read_only=True, label='创建人名称')
stock_out_goods_items = StockOutGoodsSerializer(source='stock_out_goods_set', many=True, label='出库商品')
stock_out_goods_items = StockOutGoodsItemSerializer(
source='stock_out_goods_set', many=True, label='出库商品')
class Meta:
model = StockOutOrder

View file

@ -3,5 +3,14 @@
## 功能
- 查询入库单:
[/api/stock_in_orders/]
- 查询/创建入库记录:
[/api/stock_in_records/]
- 作废入库记录:
[/api/stock_in_records/{id}/void/]
## 其他接口

View file

@ -3,5 +3,17 @@
## 功能
- 查询出库单:
[/api/stock_out_orders/]
- 查询/创建出库记录:
[/api/stock_out_records/]
- 作废出库记录:
[/api/stock_out_records/{id}/void/]
## 其他接口
- 批次选项:
[/api/batchs/options/]{page, warehouse, goods, has_stock: true}