Skip to Content
Menu
This question has been flagged
1 Reply
2021 Views

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,

})

Avatar
Discard
Author Best Answer

solved by me after so much thinking..

with one button.

we place a bonus to the employee, then subtract the total amount of each invoce less bonus from the employee to whom the invoice belongs.


we perform the subtraction if the bonus is less than the total oh the invoice, if it is less and if it is greater.

and the invoice the is paid goes to this payment


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

## SEND BONUS TO EACH EMPLOYEE ##

result = self.env['hr.employee'].search([])

result.write({

'discount_id': bond,

})

## IF THE BONUS IS EQUAL TO THE TOTAL ##

result_same = self.env['dining.room.invoice'].search([('state','ilike','credit'),('amount_total', '=', bond)])

for h in result_same:

for o in h.worker:

resultado = o.discount_id - h.amount_total

result_worker = self.env['hr.employee'].search([('name', '=', o.name)])

for worker in result_worker:

worker.write({

'discount_id': resultado,

})

h.write({

'surplus': resultado,

'state': 'paymet',

})

## IF THE BONUS IS LESS TO THE TOTAL ##

result_less = self.env['dining.room.invoice'].search([('state','ilike','credit'),('amount_total', '<', bond)])

for h in result_less:

for o in h.worker:

resultado = o.discount_id - h.amount_total

result_worker_less = self.env['hr.employee'].search([('name', '=', o.name)])

for worker in result_worker_less:

worker.write({

'discount_id': resultado,

})

h.write({

'state': 'paymet',

'surplus': resultado,

})

## IF THE GREATER IS EQUAL TO THE TOTAL ##

result_higher = self.env['dining.room.invoice'].search([('state','ilike','credit'),('amount_total', '>', bond)])

for h in result_higher:

for o in h.worker:

resultado = h.amount_total - o.discount_id

result_worker_higher = self.env['hr.employee'].search([('name', '=', o.name)])

for worker in result_worker_higher:

worker.write({

'discount_id': resultado,

})

h.write({

'surplus': resultado,

})

Avatar
Discard