You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
4.2 KiB
104 lines
4.2 KiB
# -*- coding: utf-8 -*-
|
|
#############################################################################
|
|
#
|
|
# Cybrosys Technologies Pvt. Ltd.
|
|
#
|
|
# Copyright (C) 2020-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
|
|
# Author: Nimisha Muralidhar (odoo@cybrosys.com)
|
|
#
|
|
# You can modify it under the terms of the GNU AFFERO
|
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
|
#
|
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
# (AGPL v3) along with this program.
|
|
# If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
#############################################################################
|
|
from odoo import models, fields, api, _
|
|
|
|
|
|
class MrpProductWizard(models.TransientModel):
|
|
_name = 'mrp.product.produce.wizard'
|
|
|
|
produce_line_ids = fields.One2many('mrp.product.produce.wizard.line', 'product_produce_id',
|
|
string='Product to Track')
|
|
|
|
# Method to check availability and produce the products for mrp orders
|
|
def action_check_availability_produce(self):
|
|
for line in self.produce_line_ids.mapped('production_id'):
|
|
line.with_context({'active_id': line.id,
|
|
'active_ids': [line.id],
|
|
}).action_assign()
|
|
for move_line in line.move_raw_ids:
|
|
move_line.quantity_done = move_line.product_uom_qty
|
|
produce_wizard = self.env['mrp.product.produce'].with_context({
|
|
'active_id': line.id,
|
|
'active_ids': [line.id],
|
|
}).create({
|
|
'qty_producing': line.product_qty,
|
|
})
|
|
produce_wizard.do_produce()
|
|
|
|
# Method to mark the mrp orders as done
|
|
def action_done(self):
|
|
for line in self.produce_line_ids.mapped('production_id'):
|
|
line.button_mark_done()
|
|
|
|
|
|
class MrpProduction(models.Model):
|
|
_inherit = 'mrp.production'
|
|
|
|
# Method for the wizard check availability and produce
|
|
def action_product_availability_produce_show_wizard(self):
|
|
production_ids = self.env['mrp.production'].browse(self._context.get('active_ids', False))
|
|
lines = []
|
|
for line in production_ids:
|
|
vals = (0, 0, {
|
|
'production_id': line.id,
|
|
'product_id': line.product_id.id,
|
|
'qty': line.product_qty
|
|
})
|
|
lines.append(vals)
|
|
return {'type': 'ir.actions.act_window',
|
|
'name': _('Produce'),
|
|
'res_model': 'mrp.product.produce.wizard',
|
|
'target': 'new',
|
|
'view_id': self.env.ref('multiple_mrp_orders.view_mrp_product_availability_wizard').id,
|
|
'view_mode': 'form',
|
|
'context': {'default_produce_line_ids': lines}
|
|
}
|
|
|
|
# Method for the wizard Mark as Done
|
|
def action_done_show_wizard(self):
|
|
production_ids = self.env['mrp.production'].browse(self._context.get('active_ids', False))
|
|
lines = []
|
|
for line in production_ids:
|
|
vals = (0, 0, {
|
|
'production_id': line.id,
|
|
'product_id': line.product_id.id,
|
|
'qty': line.product_qty
|
|
})
|
|
lines.append(vals)
|
|
return {'type': 'ir.actions.act_window',
|
|
'name': _('Mark as Done'),
|
|
'res_model': 'mrp.product.produce.wizard',
|
|
'target': 'new',
|
|
'view_id': self.env.ref('multiple_mrp_orders.view_mrp_product_done_wizard').id,
|
|
'view_mode': 'form',
|
|
'context': {'default_produce_line_ids': lines}
|
|
}
|
|
|
|
|
|
class MrpProductProduceWizardLine(models.TransientModel):
|
|
_name = "mrp.product.produce.wizard.line"
|
|
_description = "Record Production Line"
|
|
|
|
product_produce_id = fields.Many2one('mrp.product.produce.wizard')
|
|
production_id = fields.Many2one('mrp.production')
|
|
product_id = fields.Many2one('product.product', 'Product')
|
|
qty = fields.Float('Quantity')
|
|
|