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.
		
		
		
		
		
			
		
			
				
					
					
						
							110 lines
						
					
					
						
							5.1 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							110 lines
						
					
					
						
							5.1 KiB
						
					
					
				| # -*- coding: utf-8 -*- | |
| ############################################################################## | |
| # | |
| #    Cybrosys Technologies Pvt. Ltd. | |
| #    Copyright (C) 2017-TODAY Cybrosys Technologies(<http://www.cybrosys.com>). | |
| #    Author: Cybrosys Technologies(<http://www.cybrosys.com>) | |
| #    you can modify it under the terms of the GNU LESSER | |
| #    GENERAL PUBLIC LICENSE (LGPL v3), Version 3. | |
| # | |
| #    It is forbidden to publish, distribute, sublicense, or sell copies | |
| #    of the Software or modified copies of the Software. | |
| # | |
| #    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 | |
| #    GENERAL PUBLIC LICENSE (LGPL v3) along with this program. | |
| #    If not, see <http://www.gnu.org/licenses/>. | |
| # | |
| ############################################################################## | |
| 
 | |
| from odoo import models, fields, api, _ | |
| from odoo.exceptions import UserError | |
| 
 | |
| 
 | |
| class AccountRegisterPayments(models.TransientModel): | |
|     _inherit = "account.register.payments" | |
| 
 | |
|     bank_reference = fields.Char(copy=False) | |
|     cheque_reference = fields.Char(copy=False) | |
|     effective_date = fields.Date('Effective Date', help='Effective date of PDC', copy=False, default=False) | |
| 
 | |
|     def get_payment_vals(self): | |
|         res = super(AccountRegisterPayments, self).get_payment_vals() | |
|         if self.payment_method_id == self.env.ref('account_check_printing.account_payment_method_check'): | |
|             res.update({ | |
|                 'check_amount_in_words': self.check_amount_in_words, | |
|                 'check_manual_sequencing': self.check_manual_sequencing, | |
|                 'effective_date': self.effective_date, | |
|             }) | |
|         return res | |
| 
 | |
| 
 | |
| class AccountPayment(models.Model): | |
|     _inherit = "account.payment" | |
| 
 | |
|     bank_reference = fields.Char(copy=False) | |
|     cheque_reference = fields.Char(copy=False) | |
|     effective_date = fields.Date('Effective Date', help='Effective date of PDC', copy=False, default=False) | |
| 
 | |
|     @api.multi | |
|     def print_checks(self): | |
|         """ Check that the recordset is valid, set the payments state to sent and call print_checks() """ | |
|         # Since this method can be called via a client_action_multi, we need to make sure the received records are what we expect | |
|         self = self.filtered(lambda r: r.payment_method_id.code in ['check_printing', 'pdc'] and r.state != 'reconciled') | |
| 
 | |
|         if len(self) == 0: | |
|             raise UserError(_("Payments to print as a checks must have 'Check' or 'PDC' selected as payment method and " | |
|                               "not have already been reconciled")) | |
|         if any(payment.journal_id != self[0].journal_id for payment in self): | |
|             raise UserError(_("In order to print multiple checks at once, they must belong to the same bank journal.")) | |
| 
 | |
|         if not self[0].journal_id.check_manual_sequencing: | |
|             # The wizard asks for the number printed on the first pre-printed check | |
|             # so payments are attributed the number of the check the'll be printed on. | |
|             last_printed_check = self.search([ | |
|                 ('journal_id', '=', self[0].journal_id.id), | |
|                 ('check_number', '!=', 0)], order="check_number desc", limit=1) | |
|             next_check_number = last_printed_check and last_printed_check.check_number + 1 or 1 | |
|             return { | |
|                 'name': _('Print Pre-numbered Checks'), | |
|                 'type': 'ir.actions.act_window', | |
|                 'res_model': 'print.prenumbered.checks', | |
|                 'view_type': 'form', | |
|                 'view_mode': 'form', | |
|                 'target': 'new', | |
|                 'context': { | |
|                     'payment_ids': self.ids, | |
|                     'default_next_check_number': next_check_number, | |
|                 } | |
|             } | |
|         else: | |
|             self.filtered(lambda r: r.state == 'draft').post() | |
|             self.write({'state': 'sent'}) | |
|             return self.do_print_checks() | |
| 
 | |
| 
 | |
|     def _get_move_vals(self, journal=None): | |
|         """ Return dict to create the payment move | |
|         """ | |
|         journal = journal or self.journal_id | |
|         if not journal.sequence_id: | |
|             raise UserError(_('Configuration Error !'), | |
|                             _('The journal %s does not have a sequence, please specify one.') % journal.name) | |
|         if not journal.sequence_id.active: | |
|             raise UserError(_('Configuration Error !'), _('The sequence of journal %s is deactivated.') % journal.name) | |
|         name = self.move_name or journal.with_context(ir_sequence_date=self.payment_date).sequence_id.next_by_id() | |
|         if self.payment_method_code =='pdc': | |
|             date = self.effective_date | |
|         else: | |
|             date = self.payment_date | |
|         return { | |
|             'name': name, | |
|             'date': date, | |
|             'ref': self.communication or '', | |
|             'company_id': self.company_id.id, | |
|             'journal_id': journal.id, | |
|         }
 | |
| 
 |