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.
		
		
		
		
		
			
		
			
				
					
					
						
							82 lines
						
					
					
						
							4.0 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							82 lines
						
					
					
						
							4.0 KiB
						
					
					
				| # -*- coding: utf-8 -*- | |
| ################################################################################ | |
| # | |
| #    Cybrosys Technologies Pvt. Ltd. | |
| # | |
| #    Copyright (C) 2023-TODAY Cybrosys Technologies (<https://www.cybrosys.com>) | |
| #    Author: Jumana Haseen (<https://www.cybrosys.com>) | |
| # | |
| #    This program is free software: you can modify | |
| #    it under the terms of the GNU Affero General Public License (AGPL) 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 <https://www.gnu.org/licenses/>. | |
| # | |
| ############################################################################# | |
| from odoo import fields, models | |
| 
 | |
| 
 | |
| class StockBackorderConfirmation(models.TransientModel): | |
|     """This class inherits 'stock.backorder.confirmation' and adds | |
|     required fields """ | |
|     _inherit = 'stock.backorder.confirmation' | |
| 
 | |
|     stock_id = fields.Many2one('stock.picking', setring="Stock", | |
|                                help="Stock") | |
| 
 | |
|     def process(self): | |
|         """Initialize variables to store pickings to be done and not to be done | |
|                 Iterate through backorder_confirmation_line_ids to categorize pickings, | |
|                  Get pickings to be validated from the context,Retrieve pickings to | |
|                  validate from the context,If there are pickings_not_to_do, | |
|                  check quantities and update context, If pickings_to_validate | |
|                  are not auto-generated, create Inter company transfer""" | |
|         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): | |
|         """ Retrieve pickings to be validated from the context,If | |
|         pickings_to_validate_ids is specified, validate and cancel backorders""" | |
|         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
 | |
| 
 |