123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- # -*- coding: utf-8 -*-
- # @authors: Alexander Ezquevo <alexander@acysos.com>
- # Copyright (C) 2015 Acysos S.L.
- # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
- from openerp import models, fields, api
- class MedicationEvent(models.Model):
- _name = 'farm.medication.event'
- _inherit = {'farm.event.feed_mixin': 'FeedEventMixin_id'}
- _auto = True
- medication_in_feed = fields.Boolean(string='Medication in feed',
- default=False)
- medicated_feed = fields.Many2one(string='Medicated Feed',
- comodel_name='product.product')
- feed_product_uom_category = fields.Many2one(
- comodel_name='product.uom.categ', string='Feed Uom Category',
- readonly=True)
- @api.one
- def confirm(self):
- if not self.medication_in_feed:
- quants_obj = self.env['stock.quant']
- moves_obj = self.env['stock.move']
- target_quant = quants_obj.search([
- ('lot_id', '=', self.feed_lot.id),
- ('location_id', '=', self.feed_location.id)])
- medication_cost = 0
- for tq in target_quant:
- medication_cost = tq.cost
- if len(self.move) == 0:
- new_move = moves_obj.create({
- 'name': self.job_order.name+'-'+self.lot.name+'-mov',
- 'create_date': fields.Date.today(),
- 'date': self.start_date,
- 'product_id': self.feed_product.id,
- 'product_uom_qty': self.feed_quantity,
- 'product_uom': self.uom.id,
- 'location_id': self.feed_location.id,
- 'location_dest_id': self.location.id,
- 'company_id': self.location.company_id.id,
- 'origin': self.job_order.name,
- })
- self.move = new_move
- for q in target_quant:
- q.reservation_id = new_move.id
- new_move.action_done()
- self.consume_feed('consume_feed', self.end_date, self.feed_product,
- self.feed_lot, self.specie, self.location,
- self.feed_quantity, self.uom)
- if self.animal_type == 'group':
- account = self.animal_group.account
- else:
- account = self.animal.account
- self.set_cost(account, medication_cost, self.feed_quantity)
- super(MedicationEvent, self).confirm()
- @api.multi
- def set_cost(self, account, cost, qty):
- company = self.env['res.company'].search([
- ('id', '=', self.farm.company_id.id)])
- journal = self.env['account.analytic.journal'].search([
- ('code', '=', 'FAR')])
- analytic_line_obj = self.env['account.analytic.line']
- analytic_line_obj.create({
- 'name': self.job_order.name,
- 'date': self.end_date,
- 'amount': -(cost * qty),
- 'unit_amount': qty,
- 'account_id': account.id,
- 'general_account_id': company.feed_account.id,
- 'journal_id': journal.id,
- })
|