完成 委外加工采购订单增加BOM内物料的采购申请与采购订单 需求
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
'data': [
|
'data': [
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'views/sale_order_view.xml',
|
'views/sale_order_view.xml',
|
||||||
|
'views/purchase_order.xml',
|
||||||
'views/mrp_production.xml',
|
'views/mrp_production.xml',
|
||||||
'views/purchase_request_view.xml',
|
'views/purchase_request_view.xml',
|
||||||
'wizard/purchase_request_line_make_purchase_order_view.xml',
|
'wizard/purchase_request_line_make_purchase_order_view.xml',
|
||||||
|
|||||||
@@ -16,6 +16,69 @@ class PurchaseOrder(models.Model):
|
|||||||
('rejected', '已驳回')
|
('rejected', '已驳回')
|
||||||
], string='Status', readonly=True, index=True, copy=False, default='draft', tracking=True)
|
], string='Status', readonly=True, index=True, copy=False, default='draft', tracking=True)
|
||||||
|
|
||||||
|
# 成品采购订单对应的坯料采购申请单和采购订单数量
|
||||||
|
purchase_request_count = fields.Integer('子·采购申请数量', compute='_compute_purchase_request')
|
||||||
|
purchase_order_count = fields.Integer('子·采购订单数量', compute='_compute_purchase_request')
|
||||||
|
|
||||||
|
@api.depends('state')
|
||||||
|
def _compute_purchase_request(self):
|
||||||
|
for record in self:
|
||||||
|
purchase_request_ids, purchase_order_ids = record.get_purchase_request_order()
|
||||||
|
record.purchase_request_count = len(purchase_request_ids)
|
||||||
|
record.purchase_order_count = len(purchase_order_ids)
|
||||||
|
|
||||||
|
def action_view_preform_body_purchase_request(self):
|
||||||
|
self.ensure_one()
|
||||||
|
name_list = self._get_pinking_name()
|
||||||
|
purchase_request_ids = self.env['purchase.request'].search([('origin', 'in', name_list)])
|
||||||
|
|
||||||
|
action = {
|
||||||
|
'res_model': 'purchase.request',
|
||||||
|
'type': 'ir.actions.act_window',
|
||||||
|
}
|
||||||
|
if len(purchase_request_ids) == 1:
|
||||||
|
action.update({
|
||||||
|
'view_mode': 'form',
|
||||||
|
'res_id': purchase_request_ids[0].id,
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
action.update({
|
||||||
|
'name': _("子·采购申请"),
|
||||||
|
'domain': [('id', 'in', purchase_request_ids.ids)],
|
||||||
|
'view_mode': 'tree,form',
|
||||||
|
})
|
||||||
|
return action
|
||||||
|
|
||||||
|
def action_view_preform_body_purchase_order(self):
|
||||||
|
self.ensure_one()
|
||||||
|
name_list = self._get_pinking_name()
|
||||||
|
purchase_order_ids = self.env['purchase.order'].search([('origin', 'in', name_list)])
|
||||||
|
|
||||||
|
action = {
|
||||||
|
'res_model': 'purchase.order',
|
||||||
|
'type': 'ir.actions.act_window',
|
||||||
|
}
|
||||||
|
if len(purchase_order_ids) == 1:
|
||||||
|
action.update({
|
||||||
|
'view_mode': 'form',
|
||||||
|
'res_id': purchase_order_ids[0].id,
|
||||||
|
})
|
||||||
|
else:
|
||||||
|
action.update({
|
||||||
|
'name': _("子·采购订单"),
|
||||||
|
'domain': [('id', 'in', purchase_order_ids.ids)],
|
||||||
|
'view_mode': 'tree,form',
|
||||||
|
})
|
||||||
|
return action
|
||||||
|
|
||||||
|
def get_purchase_request_order(self):
|
||||||
|
name_list = self._get_pinking_name()
|
||||||
|
purchase_request_ids = self.env['purchase.request'].search([('origin', 'in', name_list)])
|
||||||
|
purchase_order_ids = self.env['purchase.order'].search([('origin', 'in', name_list)])
|
||||||
|
return purchase_request_ids, purchase_order_ids
|
||||||
|
|
||||||
|
def _get_pinking_name(self):
|
||||||
|
return [picking_id.name for picking_id in self.picking_ids if picking_id.name]
|
||||||
|
|
||||||
def button_confirm(self):
|
def button_confirm(self):
|
||||||
res = super(PurchaseOrder, self).button_confirm()
|
res = super(PurchaseOrder, self).button_confirm()
|
||||||
|
|||||||
28
jikimo_purchase_request/views/purchase_order.xml
Normal file
28
jikimo_purchase_request/views/purchase_order.xml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<odoo>
|
||||||
|
<record id="purchase_order_form_jikimo_purchase_request" model="ir.ui.view">
|
||||||
|
<field name="name">purchase.order.inherited.form.jikimo.purchase.request</field>
|
||||||
|
<field name="model">purchase.order</field>
|
||||||
|
<field name="inherit_id" ref="mrp_subcontracting_purchase.purchase_order_form_mrp_subcontracting_purchase"/>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<xpath expr="//div[hasclass('oe_button_box')]/button[@name='action_view_subcontracting_resupply']" position="before">
|
||||||
|
<button
|
||||||
|
class="oe_stat_button" name="action_view_preform_body_purchase_order"
|
||||||
|
type="object" icon="fa-truck" attrs="{'invisible': [('purchase_order_count', '=', 0)]}" groups="stock.group_stock_user">
|
||||||
|
<div class="o_field_widget o_stat_info">
|
||||||
|
<span class="o_stat_value"><field name="purchase_order_count"/></span>
|
||||||
|
<span class="o_stat_text">子·采购订单</span>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="oe_stat_button" name="action_view_preform_body_purchase_request"
|
||||||
|
type="object" icon="fa-truck" attrs="{'invisible': [('purchase_request_count', '=', 0)]}" groups="stock.group_stock_user">
|
||||||
|
<div class="o_field_widget o_stat_info">
|
||||||
|
<span class="o_stat_value"><field name="purchase_request_count"/></span>
|
||||||
|
<span class="o_stat_text">子·采购申请</span>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</xpath>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
</odoo>
|
||||||
Reference in New Issue
Block a user