# -*- coding: utf-8 -*- from openerp import models, fields, api from openerp.osv import osv class invoice_interes(models.Model): _inherit = "account.invoice" _name = "account.invoice" move_line_debt = fields.One2many('account.move.line', inverse_name="invoice", string="id Move line", domain=['&', ('reconcile_id', '=', False), '&', ('account_id.active','=', True), '&', ('account_id.type', '=', 'receivable'), ('state', '!=', 'draft')]) state_move_line= fields.Boolean(readonly=True, default=False) # # # @api.multi # def update_ammount_move(self): # # Variables # total_voucher=0 # monto_residual=0 # cuota_dividida=0 # estado =None # cambio_py=0 # # if len(self.payment_ids) < 1: # raise osv.except_osv('Advertencia','No es posible continuar con la operación, para generar la división del saldo es necesario que pague su primera entrega') # return # #Verifica si existe mas de una linea en move live # if len(self.move_line_debt) > 1: # # Actulizar estado del journal cuando tipo es venta # datos_journal = self.env['account.journal'].search([('type', '=', 'sale')]) # datos_journal.write({'entry_posted' : True}) # # # rate_model = self.env['res.currency.rate'].search([('currency_id', '=', 166)]) # # rate_py = rate_model[len(rate_model)-1] # # cambio_py =rate_py.rate # # if self.currency_id.id == 3: # monto_residual = self.residual # else: # monto_residual = self.residual/self.currency_id.rate_ids.rate # # # Calular la divicion la cuota # cuota_dividida = (monto_residual / len(self.move_line_debt)) # print(monto_residual) # print(cuota_dividida) # for move_line in self.move_line_debt: # move_dato = self.env['account.move'].search([('id', 'in', move_line.move_id.ids)]) # if move_dato: # estado = move_dato.state # move_dato.write({'state' : 'draft'}) # # line_voucher = self.env['account.voucher.line'].search([('move_line_id', '=', move_line.id), ('amount', '>', 0)],order='id') # print(line_voucher) # if line_voucher: # for voucher in line_voucher: # # if voucher.voucher_id.payment_rate_currency_id.id == 3: # print("moneda Dolar ") # total_voucher += voucher.amount # else: # print("ota moneda") # print("Cambio "+str(voucher.voucher_id.payment_rate_currency_id)) # total_voucher +=(voucher.amount / voucher.voucher_id.payment_rate_currency_id.rate_ids.rate) # # print("cuota "+str(cuota_dividida)) # print("pagado " +str(total_voucher)) # print('total '+str(cuota_dividida + total_voucher)) # move_line_dato = self.env['account.move.line'].search([('id', '=', move_line.id)]) # move_line_dato.write({'debit' : (cuota_dividida + total_voucher)}) # # # move_line_dato.write({'amount_currency' : ((move_line_dato.debit - move_line_dato.credit)*cambio_py)}) # # if estado == None: # estado='draft' # move_dato.write({'state' : estado}) # # # move_line_dato._amount_residual(move_line_dato.amount_residual_currency) # # datos_journal.write({'entry_posted' : False}) # incoice_datos = self.env['account.invoice'].search([('id', '=',self.id )]) # incoice_datos.write({'state_move_line' : True}) # # move_line_state = self.env['account.move.line'].search([('ref', '=', self.number)]) # move_line_state.write({'state' : 'valid'}) # # else: # raise osv.except_osv('Advertencia','No es posible generar la división del saldo sobre una única linea') # return