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.
		
		
		
		
		
			
		
			
				
					
					
						
							66 lines
						
					
					
						
							2.7 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							66 lines
						
					
					
						
							2.7 KiB
						
					
					
				| # -*- coding: utf-8 -*- | |
| ############################################################################# | |
| # | |
| #    Cybrosys Technologies Pvt. Ltd. | |
| # | |
| #    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>) | |
| #    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>) | |
| # | |
| #    You can modify it under the terms of the GNU LESSER | |
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |
| # | |
| #    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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. | |
| # | |
| #    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE | |
| #    (LGPL v3) along with this program. | |
| #    If not, see <http://www.gnu.org/licenses/>. | |
| # | |
| ############################################################################# | |
| from odoo import api, fields, models | |
| from odoo.exceptions import UserError | |
| from odoo.tools.translate import _ | |
| 
 | |
| 
 | |
| class SaleOrder(models.Model): | |
|     """The Class inherits the sale.order model for adding the new | |
|         fields and functions""" | |
|     _inherit = 'sale.order' | |
| 
 | |
|     has_due = fields.Boolean(string='Has due') | |
|     is_warning = fields.Boolean(string='Is warning') | |
|     due_amount = fields.Float(string='Due Amount', | |
|                               related='partner_id.due_amount') | |
| 
 | |
|     def _action_confirm(self): | |
|         """To check the selected customers due amount is exceed than | |
|         blocking stage""" | |
|         if self.partner_id.active_limit \ | |
|                 and self.partner_id.enable_credit_limit: | |
|             if self.due_amount >= self.partner_id.blocking_stage: | |
|                 if self.partner_id.blocking_stage != 0: | |
|                     raise UserError(_( | |
|                         "%s is in  Blocking Stage and " | |
|                         "has a due amount of %s %s to pay") % ( | |
|                                         self.partner_id.name, self.due_amount, | |
|                                         self.currency_id.symbol)) | |
|         return super(SaleOrder, self)._action_confirm() | |
| 
 | |
|     @api.onchange('partner_id') | |
|     def check_due(self): | |
|         """To show the due amount and warning stage""" | |
|         if self.partner_id and self.partner_id.due_amount > 0 \ | |
|                 and self.partner_id.active_limit \ | |
|                 and self.partner_id.enable_credit_limit: | |
|             self.has_due = True | |
|         else: | |
|             self.has_due = False | |
|         if self.partner_id and self.partner_id.active_limit\ | |
|                 and self.partner_id.enable_credit_limit: | |
|             if self.due_amount >= self.partner_id.warning_stage: | |
|                 if self.partner_id.warning_stage != 0: | |
|                     self.is_warning = True | |
|         else: | |
|             self.is_warning = False
 | |
| 
 |