# -*- coding: utf-8 -*- ############################################################################## # # datenpol gmbh # Copyright (C) 2013-TODAY datenpol gmbh () # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # 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 for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # ############################################################################## from odoo import fields, models, api, tools class StockProductionLot(models.Model): _inherit = 'stock.production.lot' assembled = fields.Boolean(string='Zusammengebaut') notes = fields.Text() weight = fields.Float(string='Gewicht') intrastat_id = fields.Many2one(comodel_name='report.intrastat.code', string='Intrastat Nummer (Code)') image = fields.Binary("Produktbild", attachment=True, help="Wenn vorhanden, wird dieses Bild in den Angeboten/Aufträgen angedruckt") image_medium = fields.Binary("Produktbild (resized)", attachment=True, help="Produktbild 'resized' auf 128x128") @api.model def create(self, vals): if vals.get('image'): vals.update(tools.image_get_resized_images(vals['image'], return_big=True, return_medium=True, return_small=False)) return super(StockProductionLot, self).create(vals) @api.multi def write(self, vals): if vals.get('image'): vals.update(tools.image_get_resized_images(vals['image'], return_big=True, return_medium=True, return_small=False)) return super(StockProductionLot, self).write(vals) class StockPicking(models.Model): _inherit = 'stock.picking' @api.model def _formatLang(self, value): lang = self.partner_id.lang lang_objs = self.env['res.lang'].search([('code', '=', lang)]) if not lang_objs: lang_objs = self.env['res.lang'].search([], limit=1) lang_obj = lang_objs[0] res = lang_obj.format('%.' + str(2) + 'f', value, grouping=True, monetary=True) return res class StockMove(models.Model): _inherit = "stock.move" manu_lots_visible = fields.Boolean(compute='_compute_manu_lots_visible') @api.multi def _prepare_move_line_vals(self, quantity=None, reserved_quant=None): self.ensure_one() vals = super(StockMove, self)._prepare_move_line_vals(quantity=quantity, reserved_quant=reserved_quant) if self.sale_line_id.lot_id and not self.sale_line_id.product_id.can_be_sold_unconfigured: move_lot = self.sale_line_id.lot_id.id vals.update({'lot_id': move_lot, }) return vals def _compute_manu_lots_visible(self): for move_line in self: if not move_line.product_id.can_be_sold_unconfigured: move_line.manu_lots_visible = True @api.multi def action_show_lot(self): self.ensure_one() action = self.env.ref('stock.action_production_lot_form').read()[0] action['res_id'] = self.move_line_ids.lot_id.id action['view_mode'] = 'form' action['views'] = [(False, 'form')] return action @api.depends('product_id', 'product_uom_qty', 'product_uom') def _cal_move_weight(self): for move in self: if move.sale_line_id.lot_id and not move.product_id.can_be_sold_unconfigured: move.weight += (move.product_qty * move.sale_line_id.lot_id.weight) else: move.weight += (move.product_qty * move.product_id.weight) # print(move.weight)