mirror of
https://github.com/himool/HimoolERP.git
synced 2024-12-31 03:02:04 +08:00
feat: 项目文档
This commit is contained in:
parent
d3e6f20523
commit
b5406d0a96
6 changed files with 59 additions and 22 deletions
|
@ -13,7 +13,8 @@ class StockInOrder(Model):
|
||||||
STOCK_TRANSFER = ('stock_transfer', '调拨')
|
STOCK_TRANSFER = ('stock_transfer', '调拨')
|
||||||
|
|
||||||
number = CharField(max_length=32, verbose_name='编号')
|
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='入库类型')
|
type = CharField(max_length=32, choices=Type.choices, verbose_name='入库类型')
|
||||||
purchase_order = OneToOneField('purchase.PurchaseOrder', on_delete=CASCADE, null=True,
|
purchase_order = OneToOneField('purchase.PurchaseOrder', on_delete=CASCADE, null=True,
|
||||||
related_name='stock_in_order', verbose_name='采购单据')
|
related_name='stock_in_order', verbose_name='采购单据')
|
||||||
|
|
|
@ -9,29 +9,34 @@ from apps.system.models import *
|
||||||
class StockInOrderSerializer(BaseSerializer):
|
class StockInOrderSerializer(BaseSerializer):
|
||||||
"""入库单据"""
|
"""入库单据"""
|
||||||
|
|
||||||
class StockInGoodsSerializer(BaseSerializer):
|
class StockInGoodsItemSerializer(BaseSerializer):
|
||||||
"""入库商品"""
|
"""入库商品"""
|
||||||
|
|
||||||
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
|
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
|
||||||
goods_name = CharField(source='goods.name', read_only=True, label='商品名称')
|
goods_name = CharField(source='goods.name', read_only=True, label='商品名称')
|
||||||
goods_barcode = CharField(source='goods.barcode', 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='单位名称')
|
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='保质期天数')
|
shelf_life_days = CharField(source='goods.shelf_life_days', read_only=True, label='保质期天数')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = StockInGoods
|
model = StockInGoods
|
||||||
fields = ['id', 'goods', 'goods_number', 'goods_name', 'goods_barcode', 'stock_in_quantity',
|
fields = ['id', 'goods', 'goods_number', 'goods_name', 'goods_barcode',
|
||||||
'remain_quantity', 'unit_name', 'enable_batch_control', 'shelf_life_days', 'is_completed']
|
'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_number = CharField(source='warehouse.number', read_only=True, label='仓库编号')
|
||||||
warehouse_name = CharField(source='warehouse.name', 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='入库类型')
|
type_display = CharField(source='get_type_display', read_only=True, label='入库类型')
|
||||||
purchase_order_number = CharField(source='purchase_order.number', 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='销售退货单据编号')
|
sales_return_order_number = CharField(source='sales_return_order.number',
|
||||||
stock_transfer_order_number = CharField(source='stock_transfer_order.number', read_only=True, label='调拨单据编号')
|
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='创建人名称')
|
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:
|
class Meta:
|
||||||
model = StockInOrder
|
model = StockInOrder
|
||||||
|
@ -45,7 +50,7 @@ class StockInOrderSerializer(BaseSerializer):
|
||||||
class StockInRecordSerializer(BaseSerializer):
|
class StockInRecordSerializer(BaseSerializer):
|
||||||
"""入库记录"""
|
"""入库记录"""
|
||||||
|
|
||||||
class StockInRecordGoodsSerializer(BaseSerializer):
|
class StockInRecordGoodsItemSerializer(BaseSerializer):
|
||||||
"""入库记录商品"""
|
"""入库记录商品"""
|
||||||
|
|
||||||
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
|
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
|
||||||
|
@ -58,7 +63,8 @@ class StockInRecordSerializer(BaseSerializer):
|
||||||
model = StockInRecordGoods
|
model = StockInRecordGoods
|
||||||
read_only_fields = ['id', 'goods', 'goods_number', 'goods_name', 'goods_barcode', 'unit_name',
|
read_only_fields = ['id', 'goods', 'goods_number', 'goods_name', 'goods_barcode', 'unit_name',
|
||||||
'enable_batch_control', 'shelf_life_days', 'expiration_date']
|
'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):
|
def validate_stock_in_goods(self, instance):
|
||||||
instance = self.validate_foreign_key(StockInGoods, instance, message='入库商品不存在')
|
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='仓库名称')
|
warehouse_name = CharField(source='warehouse.name', read_only=True, label='仓库名称')
|
||||||
handler_name = CharField(source='handler.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='创建人名称')
|
creator_name = CharField(source='creator.name', read_only=True, label='创建人名称')
|
||||||
stock_in_record_goods_items = StockInRecordGoodsSerializer(source='stock_in_record_goods_set',
|
stock_in_record_goods_items = StockInRecordGoodsItemSerializer(
|
||||||
many=True, label='入库记录商品')
|
source='stock_in_record_goods_set', many=True, label='入库记录商品')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = StockInRecord
|
model = StockInRecord
|
||||||
|
|
|
@ -13,7 +13,8 @@ class StockOutOrder(Model):
|
||||||
STOCK_TRANSFER = ('stock_transfer', '调拨')
|
STOCK_TRANSFER = ('stock_transfer', '调拨')
|
||||||
|
|
||||||
number = CharField(max_length=32, verbose_name='编号')
|
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='出库类型')
|
type = CharField(max_length=32, choices=Type.choices, verbose_name='出库类型')
|
||||||
sales_order = OneToOneField('sales.SalesOrder', on_delete=CASCADE, null=True,
|
sales_order = OneToOneField('sales.SalesOrder', on_delete=CASCADE, null=True,
|
||||||
related_name='stock_out_order', verbose_name='销售单据')
|
related_name='stock_out_order', verbose_name='销售单据')
|
||||||
|
@ -52,7 +53,8 @@ class StockOutGoods(Model):
|
||||||
|
|
||||||
stock_out_order = ForeignKey('stock_out.StockOutOrder', on_delete=CASCADE,
|
stock_out_order = ForeignKey('stock_out.StockOutOrder', on_delete=CASCADE,
|
||||||
related_name='stock_out_goods_set', verbose_name='出库单据')
|
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='出库总数')
|
stock_out_quantity = FloatField(verbose_name='出库总数')
|
||||||
remain_quantity = FloatField(default=0, verbose_name='出库剩余数量')
|
remain_quantity = FloatField(default=0, verbose_name='出库剩余数量')
|
||||||
is_completed = BooleanField(default=False, 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,
|
stock_out_order = ForeignKey('stock_out.StockOutOrder', on_delete=CASCADE,
|
||||||
related_name='stock_out_records', verbose_name='出库单据')
|
related_name='stock_out_records', verbose_name='出库单据')
|
||||||
warehouse = ForeignKey('data.Warehouse', on_delete=PROTECT, related_name='stock_out_records', verbose_name='仓库')
|
warehouse = ForeignKey('data.Warehouse', on_delete=PROTECT,
|
||||||
handler = ForeignKey('system.User', on_delete=PROTECT, related_name='stock_out_records', verbose_name='经手人')
|
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='处理时间')
|
handle_time = DateTimeField(verbose_name='处理时间')
|
||||||
remark = CharField(max_length=256, null=True, blank=True, verbose_name='备注')
|
remark = CharField(max_length=256, null=True, blank=True, verbose_name='备注')
|
||||||
total_quantity = FloatField(null=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='出库记录')
|
related_name='stock_out_record_goods_set', verbose_name='出库记录')
|
||||||
stock_out_goods = ForeignKey('stock_out.StockOutGoods', on_delete=CASCADE,
|
stock_out_goods = ForeignKey('stock_out.StockOutGoods', on_delete=CASCADE,
|
||||||
related_name='stock_out_record_goods_set', verbose_name='出库商品')
|
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='出库数量')
|
stock_out_quantity = FloatField(verbose_name='出库数量')
|
||||||
enable_batch_control = BooleanField(default=False, verbose_name='启用批次控制')
|
enable_batch_control = BooleanField(default=False, verbose_name='启用批次控制')
|
||||||
batch = OneToOneField('goods.Batch', on_delete=CASCADE, null=True,
|
batch = OneToOneField('goods.Batch', on_delete=CASCADE, null=True,
|
||||||
|
|
|
@ -9,14 +9,15 @@ from apps.system.models import *
|
||||||
class StockOutOrderSerializer(BaseSerializer):
|
class StockOutOrderSerializer(BaseSerializer):
|
||||||
"""出库单据"""
|
"""出库单据"""
|
||||||
|
|
||||||
class StockOutGoodsSerializer(BaseSerializer):
|
class StockOutGoodsItemSerializer(BaseSerializer):
|
||||||
"""出库商品"""
|
"""出库商品"""
|
||||||
|
|
||||||
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
|
goods_number = CharField(source='goods.number', read_only=True, label='商品编号')
|
||||||
goods_name = CharField(source='goods.name', read_only=True, label='商品名称')
|
goods_name = CharField(source='goods.name', read_only=True, label='商品名称')
|
||||||
goods_barcode = CharField(source='goods.barcode', 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='单位名称')
|
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:
|
class Meta:
|
||||||
model = StockOutGoods
|
model = StockOutGoods
|
||||||
|
@ -27,10 +28,13 @@ class StockOutOrderSerializer(BaseSerializer):
|
||||||
warehouse_name = CharField(source='warehouse.name', 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='出库类型')
|
type_display = CharField(source='get_type_display', read_only=True, label='出库类型')
|
||||||
sales_order_number = CharField(source='sales_order.number', 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='采购退货单据编号')
|
purchase_return_order_number = CharField(source='purchase_return_order.number',
|
||||||
stock_transfer_order_number = CharField(source='stock_transfer_order.number', read_only=True, label='调拨单据编号')
|
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='创建人名称')
|
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:
|
class Meta:
|
||||||
model = StockOutOrder
|
model = StockOutOrder
|
||||||
|
|
|
@ -3,5 +3,14 @@
|
||||||
|
|
||||||
## 功能
|
## 功能
|
||||||
|
|
||||||
|
- 查询入库单:
|
||||||
|
[/api/stock_in_orders/]
|
||||||
|
|
||||||
|
- 查询/创建入库记录:
|
||||||
|
[/api/stock_in_records/]
|
||||||
|
|
||||||
|
- 作废入库记录:
|
||||||
|
[/api/stock_in_records/{id}/void/]
|
||||||
|
|
||||||
|
|
||||||
## 其他接口
|
## 其他接口
|
||||||
|
|
|
@ -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}
|
||||||
|
|
Loading…
Reference in a new issue