6 changed files with 139 additions and 23 deletions
@ -0,0 +1,2 @@ |
|||
from . import stock_immediate_transfer |
|||
from . import stock_backorder_confirmation |
@ -0,0 +1,49 @@ |
|||
from odoo import fields, models |
|||
|
|||
|
|||
class StockBackorderConfirmation(models.TransientModel): |
|||
_inherit = 'stock.backorder.confirmation' |
|||
|
|||
stock_id = fields.Many2one('stock.picking', setring="Stock", help="Stock") |
|||
|
|||
def process(self): |
|||
pickings_to_do = self.env['stock.picking'] |
|||
pickings_not_to_do = self.env['stock.picking'] |
|||
for line in self.backorder_confirmation_line_ids: |
|||
if line.to_backorder is True: |
|||
pickings_to_do |= line.picking_id |
|||
else: |
|||
pickings_not_to_do |= line.picking_id |
|||
pickings_to_validate = self.env.context.get( |
|||
'button_validate_picking_ids') |
|||
if pickings_to_validate: |
|||
pickings_to_validate = self.env['stock.picking'].browse( |
|||
pickings_to_validate).with_context(skip_backorder=True) |
|||
if pickings_not_to_do: |
|||
self._check_less_quantities_than_expected(pickings_not_to_do) |
|||
pickings_to_validate = pickings_to_validate.with_context( |
|||
picking_ids_not_to_backorder=pickings_not_to_do.ids) |
|||
result_validate = pickings_to_validate.button_validate() |
|||
result_transfer = '' |
|||
if not pickings_to_validate.auto_generated: |
|||
result_transfer = pickings_to_validate.create_intercompany_transfer() |
|||
pickings_to_validate.write( |
|||
{'is_backorder_button_clicked': True}) |
|||
return result_validate, result_transfer |
|||
return True |
|||
|
|||
def process_cancel_backorder(self): |
|||
pickings_to_validate_ids = self.env.context.get( |
|||
'button_validate_picking_ids') |
|||
if pickings_to_validate_ids: |
|||
pickings_to_validate = self.env['stock.picking'].browse( |
|||
pickings_to_validate_ids) |
|||
self._check_less_quantities_than_expected(pickings_to_validate) |
|||
result_validate = pickings_to_validate.with_context( |
|||
skip_backorder=True, |
|||
picking_ids_not_to_backorder=self.pick_ids.ids).button_validate() |
|||
result_transfer = '' |
|||
if not pickings_to_validate.auto_generated: |
|||
result_transfer = pickings_to_validate.create_intercompany_transfer() |
|||
return result_validate, result_transfer |
|||
return True |
@ -0,0 +1,37 @@ |
|||
from odoo import models, _ |
|||
from odoo.exceptions import UserError |
|||
|
|||
|
|||
class StockImmediateTransfer(models.TransientModel): |
|||
_inherit = 'stock.immediate.transfer' |
|||
|
|||
def process(self): |
|||
pickings_to_do = self.env['stock.picking'] |
|||
pickings_not_to_do = self.env['stock.picking'] |
|||
for line in self.immediate_transfer_line_ids: |
|||
if line.to_immediate is True: |
|||
pickings_to_do |= line.picking_id |
|||
else: |
|||
pickings_not_to_do |= line.picking_id |
|||
|
|||
for picking in pickings_to_do: |
|||
# If still in draft => confirm and assign |
|||
if picking.state == 'draft': |
|||
picking.action_confirm() |
|||
if picking.state != 'assigned': |
|||
picking.action_assign() |
|||
if picking.state != 'assigned': |
|||
raise UserError( |
|||
_("Could not reserve all requested products. Please use the \'Mark as Todo\' button to handle the reservation manually.")) |
|||
picking.move_ids._set_quantities_to_reservation() |
|||
pickings_to_validate = self.env.context.get( |
|||
'button_validate_picking_ids') |
|||
if pickings_to_validate: |
|||
pickings_to_validate = self.env['stock.picking'].browse( |
|||
pickings_to_validate) |
|||
pickings_to_validate = pickings_to_validate - pickings_not_to_do |
|||
pickings_to_validate.write({'state': 'done'}) |
|||
if not pickings_to_validate.auto_generated: |
|||
return pickings_to_validate.with_context( |
|||
skip_immediate=True).create_intercompany_transfer() |
|||
return True |
Loading…
Reference in new issue