From 9d57f95a597e8120c442252834f3d44b69f1d73b Mon Sep 17 00:00:00 2001 From: devCbssolutionsRo Date: Wed, 29 Jan 2020 21:59:44 +0200 Subject: [PATCH] now fiedls no more on onghange but computed --- invoice_stock_move/models/invoice_stock.py | 101 ++++++++---------- .../views/invoice_stock_move_view.xml | 7 +- 2 files changed, 48 insertions(+), 60 deletions(-) diff --git a/invoice_stock_move/models/invoice_stock.py b/invoice_stock_move/models/invoice_stock.py index e5dab82cf..cc4366563 100644 --- a/invoice_stock_move/models/invoice_stock.py +++ b/invoice_stock_move/models/invoice_stock.py @@ -22,78 +22,63 @@ from odoo.exceptions import UserError from odoo import models, fields, api, _ import logging - _logger = logging.getLogger(__name__) - - class InvoiceStockMove(models.Model): _inherit = 'account.move' - @api.onchange('type','invoice_line_ids','id','state') - def onchange_invoice_type(self): - - if self.env.context.get('default_team_id',False) or (self._fields.get('team_id',False) and self.invoice_origin): # is a invoice from sale order - transfer_state = 'make_the_transfer_from_sale' - self.picking_type_id = False - self.transfer_state = transfer_state - return - if self.env.context.get('default_purchase_id',False) or (self._fields.get('purchase_id',False) and self.purchase_id): # is a invoice from purchase order - transfer_state = 'make_the_transfer_from_purchase' - self.picking_type_id = False - self.transfer_state = transfer_state - return - - transfer_state = 'nothing_to_transfer' - for line in self.invoice_line_ids: - if line.product_id: - if line.product_id.type == 'product': - transfer_state = 'not_initiated' - break - self.transfer_state = transfer_state - domain=[('id','=',0)] - if transfer_state == 'not_initiated': - if self.type in ['out_invoice','out_receipt']: - domain=[('code','=','outgoing')] - - elif self.type in ['in_invoice','in_receipt']: - domain=[('code','=','incoming')] - if not self.picking_type_id: - type_obj = self.env['stock.picking.type'] - company_id = self.env.context.get('company_id') or self.env.user.company_id.id - full_domain = domain+ [('warehouse_id.company_id', '=', company_id)] - self.picking_type_id = type_obj.search(full_domain, limit=1) - # types = type_obj.search([('code', '=', 'incoming'), ('warehouse_id', '=', False)]) - return {'domain': {'picking_type_id': domain}} - - @api.model - def _get_default_statep(self): - if self._context.get('active_model') == 'sale.order': - return 'make_the_transfer_from_sale' - if self._context.get('active_model') == 'purchase.order': - return 'make_the_transfer_from_purchase' - - return 'created_from_another_object_edit_lines_to_make_tranfer' - - - + picking_type_code = fields.Char(compute="_compute_picking_type_code_ANDtrasferANDpicking_type",store=True, help="field used as domain filter for picking_type_id and is based on type of invoice") transfer_state = fields.Selection([('not_initiated','not_initiated'), ('nothing_to_transfer','nothing_to_transfer'), - ('transfered','transfered'), + ('transfer_created','transfer created'), ('waiting_transfer','waiting_transfer'), ('make_the_transfer_from_purchase','make_the_transfer_from_purchase'), ('make_the_transfer_from_sale','make_the_transfer_from_sale'), - ('created_from_another_object_edit_lines_to_make_tranfer','created_from_another_object_edit_lines_to_make_tranfer'), + # ('created_from_another_object_edit_lines_to_make_tranfer','created_from_another_object_edit_lines_to_make_tranfer'), ],string='Stock Transfer State', help='If the transfer form invoice was done or not', - default=_get_default_statep, copy=False) + compute='_compute_picking_type_code_ANDtrasferANDpicking_type', ) + picking_type_id = fields.Many2one('stock.picking.type', 'Picking Type', required=False, - help="This will determine picking type of incoming shipment", + help="This will determine picking type of incoming shipment where will go the goods", copy=False, ) invoice_picking_id = fields.Many2one('stock.picking', string="Picking Id",copy=False) - picking_status = fields.Selection(related='invoice_picking_id.state') - - + picking_status = fields.Selection(related='invoice_picking_id.state', string='Picking Status') + + @api.depends('type','state','invoice_line_ids','invoice_picking_id') + def _compute_picking_type_code_ANDtrasferANDpicking_type(self): + for record in self: + code = '' + if record.type in ['out_invoice','out_receipt']: + code='outgoing' + elif record.type in ['in_invoice','in_receipt']: + code='incoming' + record.picking_type_code = code + + if (record._context.get('active_model') == 'sale.order') or (record.env.context.get('default_team_id',False)) or (record._fields.get('team_id',False) and record.invoice_origin): # is a invoice from sale order + transfer_state = 'make_the_transfer_from_sale' +# record.picking_type_id = False + record.transfer_state = transfer_state + return + if ( record._context.get('active_model') == 'purchase.order') or (record.env.context.get('default_purchase_id',False)) or (record._fields.get('purchase_id',False) and record.purchase_id): # is a invoice from purchase order + transfer_state = 'make_the_transfer_from_purchase' +# record.picking_type_id = False + record.transfer_state = transfer_state + return + + if record.invoice_picking_id: + record.transfer_state = 'transfer_created' + return + + transfer_state = 'nothing_to_transfer' + for line in record.invoice_line_ids: + if line.product_id: + if line.product_id.type == 'product': + transfer_state = 'not_initiated' + break + record.transfer_state = transfer_state + + def action_stock_move(self): "will be executed at the pressing of transfer button" for order in self: # order is account.move meaning also invoice @@ -118,7 +103,7 @@ class InvoiceStockMove(models.Model): } picking = self.env['stock.picking'].create(pick) self.invoice_picking_id = picking.id - self.transfer_state = 'transfered' + self.transfer_state = 'transfer_created' moves = order.invoice_line_ids.filtered(lambda r: r.product_id.type in ['product', 'consu'])._create_stock_moves(picking) move_ids = moves._action_confirm() diff --git a/invoice_stock_move/views/invoice_stock_move_view.xml b/invoice_stock_move/views/invoice_stock_move_view.xml index 1f6df3829..dc69ead97 100644 --- a/invoice_stock_move/views/invoice_stock_move_view.xml +++ b/invoice_stock_move/views/invoice_stock_move_view.xml @@ -11,14 +11,17 @@ attrs="{'invisible':['|',('state', '=', 'draft'),('transfer_state', '!=', 'not_initiated')]}"/> - + + +