# -*- coding: utf-8 -*- from openerp import models, fields, api class AccountInvoice(models.Model): _inherit = 'account.invoice' @api.model def getAccountInvoiceQuoteAnalysis(self,idInvoice): values = [] ''' Account Invoice ''' invoice = self.env['account.invoice'].browse(idInvoice) if (not invoice): return False ''' Move line''' moveLines = self.env['account.move.line'].search([('invoice','=',invoice.id),('debit','>',0),('date_maturity','!=', False)], order='date_maturity') quotaCont = 0 for moveLine in moveLines: quotaCont += 1 state = 'No pagado' if(moveLine.reconcile_ref and moveLine.amount_residual == 0): state = 'Pagado' elif (moveLine.reconcile_ref and moveLine.amount_residual > 0): state = 'Amortizado' interestIDS = map(lambda x: x.id, moveLine.interest_line_ids) interest = self.env['account.interest.line'].search([('id','in',interestIDS ),('state', '=', 'open')]) values.append({ 'dateMaturity' : moveLine.date_maturity, 'quotaNumber' : "%s/%s" %(quotaCont, len(moveLines)), 'amountQuota' : moveLine.debit, 'amountResidual' : moveLine.amount_residual, 'expiredDays' : interest.expired_days if(interest) else 0, 'amountInterest' : interest.amount_interest if(interest and interest.state == 'open') else 0, 'amountTotal' : (moveLine.amount_residual + interest.amount_interest) if(interest and interest.state == 'open') else moveLine.amount_residual, 'state' : state, 'value': moveLine.debit - moveLine.amount_residual, }) return values @api.model def getInvoiceAccountStatemnete(self, invoiceId): return [{ 'id': invoice.id, 'number': invoice.number, 'partner': { 'id' : invoice.partner_id.id, 'name' : invoice.partner_id.name, 'ruc' : invoice.partner_id.ruc or '', }, 'amountTotal': invoice.amount_total, 'amountResidual': invoice.residual, 'currency': { 'thousandsSeparator': invoice.currency_id.thousands_separator, 'decimalPlaces': invoice.currency_id.decimal_places, 'decimalSeparator': invoice.currency_id.decimal_separator, 'name': invoice.currency_id.local_name, 'symbol ':invoice.currency_id.symbol, }, 'company':{ 'id': invoice.company_id.id, 'name': invoice.company_id.name, 'currencyCompany':{ 'thousandsSeparator': invoice.company_id.currency_id.thousands_separator, 'decimalPlaces': invoice.company_id.currency_id.decimal_places, 'decimalSeparator': invoice.company_id.currency_id.decimal_separator, 'name': invoice.company_id.currency_id.local_name, 'symbol ':invoice.company_id.currency_id.symbol, }, 'logo': invoice.company_id.logo, }, } for invoice in self.env['account.invoice'].browse(invoiceId)] class ResCurrrency(models.Model): _inherit = 'res.currency' @api.model def getResCurrencyQuoteAnalysis(self,domain): AccountInvoice = self.env['account.invoice'].search(domain) ResCurrency = self.env['res.currency'].search([('id','=',AccountInvoice.currency_id.id)]) values = [] for currency in ResCurrency: values.append({ 'symbol': currency.symbol, 'decimal_separator': currency.decimal_separator, 'decimal_places': currency.decimal_places, 'thousands_separator': currency.thousands_separator, 'symbol_position': currency.symbol_position, }) return values