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.
		
		
		
		
		
			
		
			
				
					
					
						
							29 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							29 lines
						
					
					
						
							1.3 KiB
						
					
					
				| # -*- coding: utf-8 -*- | |
| 
 | |
| from odoo import models, api | |
| from odoo.tools import float_is_zero | |
| 
 | |
| 
 | |
| class PosReconciliation(models.Model): | |
|     _inherit = "pos.order" | |
| 
 | |
|     @api.model | |
|     def _process_order(self, pos_order): | |
|         prec_acc = self.env['decimal.precision'].precision_get('Account') | |
|         pos_session = self.env['pos.session'].browse(pos_order['pos_session_id']) | |
|         if pos_session.state == 'closing_control' or pos_session.state == 'closed': | |
|             pos_order['pos_session_id'] = self._get_valid_session(pos_order).id | |
|         order = self.create(self._order_fields(pos_order)) | |
|         journal_ids = set() | |
|         payment_sum = 0 | |
|         for payments in pos_order['statement_ids']: | |
|             if not float_is_zero(payments[2]['amount'], precision_digits=prec_acc): | |
|                 payment_sum = payment_sum + payments[2]['amount'] | |
|                 if payment_sum > pos_order['amount_total']: | |
|                     payments[2]['amount'] = payments[2]['amount'] - pos_order['amount_return'] | |
|                 order.add_payment(self._payment_fields(payments[2])) | |
|             journal_ids.add(payments[2]['journal_id']) | |
|         if pos_session.sequence_number <= pos_order['sequence_number']: | |
|             pos_session.write({'sequence_number': pos_order['sequence_number'] + 1}) | |
|             pos_session.refresh() | |
|         return order
 | |
| 
 |