|
- # -*- coding: utf-8 -*-
- # Part of Odoo. See LICENSE file for full copyright and licensing details.
-
- from odoo import api, fields, models, _
- from odoo.exceptions import ValidationError
- from odoo.osv import expression
-
- try:
- from cn2an import an2cn
- except ImportError:
- an2cn = None
-
- class AccountMove(models.Model):
- _inherit = 'account.move'
-
- fapiao = fields.Char(string='Fapiao Number', size=8, copy=False, tracking=True)
-
- @api.constrains('fapiao')
- def _check_fapiao(self):
- for record in self:
- if record.fapiao and (len(record.fapiao) != 8 or not record.fapiao.isdecimal()):
- raise ValidationError(_("Fapiao number is an 8-digit number. Please enter a correct one."))
-
- @api.model
- def check_cn2an(self):
- return an2cn
-
- @api.model
- def _convert_to_amount_in_word(self, number):
- """Convert number to ``amount in words`` for Chinese financial usage."""
- if not self.check_cn2an():
- return None
- return an2cn(number, 'rmb')
-
- def _count_attachments(self):
- domains = [[('res_model', '=', 'account.move'), ('res_id', '=', self.id)]]
- statement_ids = self.line_ids.mapped('statement_id')
- payment_ids = self.line_ids.mapped('payment_id')
- if statement_ids:
- domains.append([('res_model', '=', 'account.bank.statement'), ('res_id', 'in', statement_ids)])
- if payment_ids:
- domains.append([('res_model', '=', 'account.payment'), ('res_id', 'in', payment_ids)])
- return self.env['ir.attachment'].search_count(expression.OR(domains))
|