Accept Merge Request #2273: (feature/禁止负库存 -> develop)
Merge Request: 添加禁止负库存功能 Created By: @禹翔辉 Reviewed By: @胡尧 Approved By: @胡尧 Accepted By: @禹翔辉 URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/2273
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
# 'security/sf_stock_security.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'wizard/wizard_view.xml',
|
||||
'views/product.xml',
|
||||
'views/view.xml',
|
||||
'views/shelf_location.xml',
|
||||
'views/change_stock_move_views.xml',
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
from . import model
|
||||
from . import sync_common
|
||||
from . import product
|
||||
|
||||
@@ -1082,6 +1082,10 @@ class SfStockPicking(models.Model):
|
||||
重写验证方法,当验证时意味着调拨单已经完成,已经移动到了目标货位,所以需要将当前货位的状态改为空闲
|
||||
"""
|
||||
res = super(SfStockPicking, self).button_validate()
|
||||
if any(ml.state == 'done' for ml in self.move_line_ids):
|
||||
# 验证产品库存为负库存问题
|
||||
self.move_ids.product_id.verify_product_repertory(self.location_id)
|
||||
|
||||
for line in self.move_line_ids:
|
||||
if line:
|
||||
if line.destination_location_id:
|
||||
|
||||
29
sf_warehouse/models/product.py
Normal file
29
sf_warehouse/models/product.py
Normal file
@@ -0,0 +1,29 @@
|
||||
from odoo import models, fields
|
||||
from odoo.exceptions import ValidationError
|
||||
|
||||
|
||||
class SfProductCategory(models.Model):
|
||||
_inherit = 'product.category'
|
||||
|
||||
negative_inventory_allowed = fields.Boolean('可负库存', default=True)
|
||||
|
||||
|
||||
class SfProductTemplate(models.Model):
|
||||
_inherit = 'product.product'
|
||||
|
||||
def verify_product_repertory(self, location_id):
|
||||
"""
|
||||
验证产品 负库存
|
||||
"""
|
||||
if not location_id:
|
||||
raise ValidationError('当前位置为空!!')
|
||||
elif len(location_id) != 1:
|
||||
raise ValidationError(f'存在多个当前位置{[item.name for item in location_id]}')
|
||||
elif location_id.usage == 'supplier':
|
||||
return True
|
||||
for pp in self:
|
||||
if not pp.categ_id.negative_inventory_allowed:
|
||||
sq = pp.stock_quant_ids.filtered(lambda sq: sq.quantity < 0 and sq.location_id == location_id)
|
||||
if sq:
|
||||
raise ValidationError(
|
||||
f'产品{pp.name}的产品类型设置为不可负库存,当前操作会导致产品{pp.name}在库存{location_id.name}上的库存数量为负!!!')
|
||||
17
sf_warehouse/views/product.xml
Normal file
17
sf_warehouse/views/product.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="product_category_form_view_sf_warehouse" model="ir.ui.view">
|
||||
<field name="name">product.category.property.form.warehouse</field>
|
||||
<field name="model">product.category</field>
|
||||
<field name="inherit_id" ref="account.view_category_property_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[@name='account_property']" position="after">
|
||||
<group name="other">
|
||||
<group string="其他">
|
||||
<field name="negative_inventory_allowed"/>
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user