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) 2018-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
							 | 
						|
								#    Author: Fasluca(<faslu@cybrosys.in>)
							 | 
						|
								#    you can modify it under the terms of the GNU AFFERO
							 | 
						|
								#    GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
							 | 
						|
								#
							 | 
						|
								#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
							 | 
						|
								#    GENERAL PUBLIC LICENSE (AGPL 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,
							 | 
						|
								        }
							 | 
						|
								
							 |