增加采购申请对于单件制造非首个制造订单的显示,修改采购申请对于同一个补货组同一个产品的合并
This commit is contained in:
@@ -9,12 +9,16 @@ class MrpProduction(models.Model):
|
|||||||
@api.depends('state')
|
@api.depends('state')
|
||||||
def _compute_pr_mp_count(self):
|
def _compute_pr_mp_count(self):
|
||||||
for item in self:
|
for item in self:
|
||||||
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', item.name)])
|
if item.product_id.product_tmpl_id.single_manufacturing == True and not item.is_remanufacture:
|
||||||
# pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', item.name), ('is_subcontract', '!=', 'True')])
|
first_order = self.env['mrp.production'].search(
|
||||||
if pr_ids:
|
[('origin', '=', item.origin), ('product_id', '=', item.product_id.id)], limit=1, order='id asc')
|
||||||
|
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', first_order.name)])
|
||||||
item.pr_mp_count = len(pr_ids)
|
item.pr_mp_count = len(pr_ids)
|
||||||
else:
|
else:
|
||||||
item.pr_mp_count = 0
|
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', item.name)])
|
||||||
|
item.pr_mp_count = len(pr_ids)
|
||||||
|
|
||||||
|
# pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', item.name), ('is_subcontract', '!=', 'True')])
|
||||||
|
|
||||||
def action_view_pr_mp(self):
|
def action_view_pr_mp(self):
|
||||||
"""
|
"""
|
||||||
@@ -22,7 +26,13 @@ class MrpProduction(models.Model):
|
|||||||
"""
|
"""
|
||||||
self.ensure_one()
|
self.ensure_one()
|
||||||
# pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', self.name),('is_subcontract', '!=', True)])
|
# pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', self.name),('is_subcontract', '!=', True)])
|
||||||
|
if self.product_id.product_tmpl_id.single_manufacturing == True and not self.is_remanufacture:
|
||||||
|
first_order = self.env['mrp.production'].search(
|
||||||
|
[('origin', '=', self.origin), ('product_id', '=', self.product_id.id)], limit=1, order='id asc')
|
||||||
|
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', first_order.name)])
|
||||||
|
else:
|
||||||
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', self.name)])
|
pr_ids = self.env['purchase.request'].sudo().search([('origin', 'like', self.name)])
|
||||||
|
|
||||||
action = {
|
action = {
|
||||||
'res_model': 'purchase.request',
|
'res_model': 'purchase.request',
|
||||||
'type': 'ir.actions.act_window',
|
'type': 'ir.actions.act_window',
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
from odoo import api, fields, models
|
from odoo import api, fields, models
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
|
||||||
class StockRule(models.Model):
|
class StockRule(models.Model):
|
||||||
@@ -44,7 +45,39 @@ class StockRule(models.Model):
|
|||||||
purchase_request_line_model.create(request_line_data)
|
purchase_request_line_model.create(request_line_data)
|
||||||
|
|
||||||
def _run_buy(self, procurements):
|
def _run_buy(self, procurements):
|
||||||
res = super(StockRule, self)._run_buy(procurements)
|
# 如果补货组相同,并且产品相同,则合并
|
||||||
|
procurements_dict = defaultdict()
|
||||||
|
for procurement, rule in procurements:
|
||||||
|
if (procurement.product_id, procurement.values['group_id'], rule) not in procurements_dict:
|
||||||
|
procurements_dict[(procurement.product_id, procurement.values['group_id'], rule)] = {
|
||||||
|
'product_id': procurement.product_id,
|
||||||
|
'product_qty': procurement.product_qty,
|
||||||
|
'product_uom': procurement.product_uom,
|
||||||
|
'location_id': procurement.location_id,
|
||||||
|
'name': procurement.name,
|
||||||
|
'origin': procurement.origin,
|
||||||
|
'company_id': procurement.company_id,
|
||||||
|
'values': procurement.values,
|
||||||
|
'rule': rule
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
procurements_dict[(procurement.product_id, procurement.values['group_id'], rule)]['product_qty'] += procurement.product_qty
|
||||||
|
new_procurements = []
|
||||||
|
for k, p in procurements_dict.items():
|
||||||
|
new_procurements.append((
|
||||||
|
self.env['procurement.group'].Procurement(
|
||||||
|
product_id=p['product_id'],
|
||||||
|
product_qty=p['product_qty'],
|
||||||
|
product_uom=p['product_uom'],
|
||||||
|
location_id=p['location_id'],
|
||||||
|
name=p['name'],
|
||||||
|
origin=p['origin'],
|
||||||
|
company_id=p['company_id'],
|
||||||
|
values=p['values']
|
||||||
|
), p['rule'])
|
||||||
|
)
|
||||||
|
|
||||||
|
res = super(StockRule, self)._run_buy(new_procurements)
|
||||||
# 判断是否根据规则生成新的采购申请单据,如果生成则修改状态为 approved
|
# 判断是否根据规则生成新的采购申请单据,如果生成则修改状态为 approved
|
||||||
origins = list(set([procurement[0].origin for procurement in procurements]))
|
origins = list(set([procurement[0].origin for procurement in procurements]))
|
||||||
for origin in origins:
|
for origin in origins:
|
||||||
|
|||||||
Reference in New Issue
Block a user