diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/l10n_it_stock_ddt/models/stock_picking.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/l10n_it_stock_ddt/models/stock_picking.py')
| -rw-r--r-- | addons/l10n_it_stock_ddt/models/stock_picking.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/addons/l10n_it_stock_ddt/models/stock_picking.py b/addons/l10n_it_stock_ddt/models/stock_picking.py new file mode 100644 index 00000000..439d5c9f --- /dev/null +++ b/addons/l10n_it_stock_ddt/models/stock_picking.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models, api, _ + + +class StockPicking(models.Model): + _inherit = "stock.picking" + + l10n_it_transport_reason = fields.Selection([('sale', 'Sale'), + ('outsourcing', 'Outsourcing'), + ('evaluation', 'Evaluation'), + ('gift', 'Gift'), + ('transfer', 'Transfer'), + ('substitution', 'Substitution'), + ('attemped_sale', 'Attempted Sale'), + ('loaned_use', 'Loaned for Use'), + ('repair', 'Repair')], default="sale", tracking=True, string='Transport Reason') + l10n_it_transport_method = fields.Selection([('sender', 'Sender'), ('recipient', 'Recipient'), ('courier', 'Courier service')], + default="sender", string='Transport Method') + l10n_it_transport_method_details = fields.Char('Transport Note') + l10n_it_parcels = fields.Integer(string="Parcels", default=1) + l10n_it_country_code = fields.Char(related="company_id.country_id.code") + l10n_it_ddt_number = fields.Char('DDT Number', readonly=True) + + def _action_done(self): + super(StockPicking, self)._action_done() + for picking in self.filtered(lambda p: p.picking_type_id.l10n_it_ddt_sequence_id): + picking.l10n_it_ddt_number = picking.picking_type_id.l10n_it_ddt_sequence_id.next_by_id() + + +class StockPickingType(models.Model): + _inherit = 'stock.picking.type' + + l10n_it_ddt_sequence_id = fields.Many2one('ir.sequence') + + def _get_dtt_ir_seq_vals(self, warehouse_id, sequence_code): + if warehouse_id: + wh = self.env['stock.warehouse'].browse(warehouse_id) + ir_seq_name = wh.name + ' ' + _('Sequence') + ' ' + sequence_code + ir_seq_prefix = wh.code + '/' + sequence_code + '/DDT' + else: + ir_seq_name = _('Sequence') + ' ' + sequence_code + ir_seq_prefix = sequence_code + '/DDT' + return ir_seq_name, ir_seq_prefix + + @api.model + def create(self, vals): + company = self.env['res.company'].browse(vals['company_id']) + if 'l10n_it_ddt_sequence_id' not in vals or not vals['l10n_it_ddt_sequence_id'] and vals['code'] == 'outgoing' \ + and company.country_id.code == 'IT': + ir_seq_name, ir_seq_prefix = self._get_dtt_ir_seq_vals(vals.get('warehouse_id'), vals['sequence_code']) + vals['l10n_it_ddt_sequence_id'] = self.env['ir.sequence'].create({ + 'name': ir_seq_name, + 'prefix': ir_seq_prefix, + 'padding': 5, + 'company_id': vals['company_id'], + 'implementation': 'no_gap', + }).id + return super(StockPickingType, self).create(vals) + + def write(self, vals): + if 'sequence_code' in vals: + for picking_type in self.filtered(lambda p: p.l10n_it_ddt_sequence_id): + warehouse = picking_type.warehouse_id.id if 'warehouse_id' not in vals else vals['warehouse_ids'] + ir_seq_name, ir_seq_prefix = self._get_dtt_ir_seq_vals(warehouse, vals['sequence_code']) + picking_type.l10n_it_ddt_sequence_id.write({ + 'name': ir_seq_name, + 'prefix': ir_seq_prefix, + }) + return super(StockPickingType, self).write(vals)
\ No newline at end of file |
