Good ask a question regarding this same topic little while ago..
I need help I want to do a double tour and be able to compare that invoces in credit status belongs to each employee and perform a subtraction of the discount_id field in class hr.employee minus the total invoce, and the remaning discount_id is subtracte from another bill.
the subtraction I want to make from the discount class
class employee
class DiningRoomIndexCord(models.Model):
_rec_name = 'ficha'
_inherit = ['hr.employee']
ficha = fields.Integer(string='Ficha', required=True)
user_float = fields.Float ('suma total')
state = fields.Selection([
('draft', 'Borrador'),
], string=_('Status'), readonly=True, copy=False, index=True, default='draft',)
fixed = fields.Float(string='Base imponible', digits=(64, 2))
fact_id = fields.Many2one('dining.room.invoice', 'factura', readonly="True")
limit_id = fields.Float(string='Limite de Credito', digits=(64, 2) )
discount_id = fields.Float(string='Bono', digits=(64, 2))
currency_id = fields.Many2one('res.currency', 'Currency',
default=lambda self: self.env.user.company_id.currency_id.id, required=True)
class invoice
class DiningRoom(models.Model):
_name = 'dining.room.invoice'
_order = 'create_date desc'
_rec_name = 'number_invoice'
number_invoice = fields.Char(default=lambda self: _('New'), required=True, string='Nro. de Factura')
amount_untaxed = fields.Float(string='Base imponible', readonly=True, track_visibility='always', compute='_amount_all', store=True, digits=(64, 2))
amount_total = fields.Float(string='Total', readonly=True, track_visibility='always', compute='_amount_all', store=True, digits=(64, 2))
surplus = fields.Float(string='Restante', store=True, digits=(64, 2))
reference = fields.Char(string='Referencia Bancaria:',)
worker = fields.Many2one('hr.employee', 'Ficha del Trabajador:')
available = fields.Integer(string='Cantidad disponible', compute='_remaning')
client = fields.Many2one('dining.room.client', 'Cedula del Cliente:')
currency_id = fields.Many2one('res.currency', 'Currency',
default=lambda self: self.env.user.company_id.currency_id.id, required=True)
product_id = fields.Many2one('dining.products', related='product_ids.product_id', string='Comida')
product_ids = fields.One2many('dining.room.order', 'order_id', string='Productos', required=True, copy=True, store=True)
state = fields.Selection([
('draft', 'Borrador'),
('credit', 'Credito'),
('transfer', 'Tranferencia'),
('cash', 'Efectivo'),
('cancel', 'Anular'),
('paymet', 'Pago'),
], string=_('Status'), readonly=True, copy=False, index=True, default='draft',)
model_room = fields.Selection([
('credit', "Credito"),
('transfer', "Transferencia"),
('cash', "Efectivo"),
],string="Pago", required=True, default='credit')
date = fields.Datetime(string='Fecha', default=fields.Datetime.now)
date2 = fields.Date(string='Fecha')
option = fields.Selection([
('worker','Trabajador'),
('client','Cliente')
],string="Opcion", required=True, default='worker')
prueba = fields.Float(string='Base imponible', digits=(64, 2))
class discount
class DiningRoomDiscount(models.Model):
_name = 'dining.room.discount'
prueba = fields.Integer(string='Base imponible', )
worker = fields.Many2one('hr.employee', 'Ficha del Trabajador:',)
fact_id = fields.Many2one('dining.room.invoice', 'factura',)
bond_id = fields.Many2one('dining.room.configuration.bond', 'bono',)
invoice_id = fields.Many2one('dining.room.invoice', 'invoice',)
ficha = fields.Char(string='ficha', )
currency_id = fields.Many2one('res.currency', 'Currency',
default=lambda self: self.env.user.company_id.currency_id.id, required=True)
@api.multi
def discount_method(self):
for r in self:
bond = r.bond_id.bond
worker = r.worker.name
result = self.env['hr.employee'].search([])
result.write({
'discount_id': bond,
})
for invoice in r.invoice_id:
for worker in invoice.worker:
for record in result:
result_same = self.env['dining.room.invoice'].search([('state','ilike','credit'),('amount_total', '=', bond),('worker.name', '=', record.name)])
for h in result_invoice:
resultado = record.discount_id - h.surplus
h.write({
'surplus': resultado,
})