|
@@ -19,6 +19,7 @@
|
|
##############################################################################
|
|
##############################################################################
|
|
|
|
|
|
from openerp import models, fields, api, _
|
|
from openerp import models, fields, api, _
|
|
|
|
+from openerp.exceptions import Warning
|
|
import logging
|
|
import logging
|
|
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
_logger = logging.getLogger(__name__)
|
|
@@ -50,14 +51,28 @@ class SisStockTransfer(models.Model):
|
|
rec.state = 'done'
|
|
rec.state = 'done'
|
|
else:
|
|
else:
|
|
rec.state = 'draft'
|
|
rec.state = 'draft'
|
|
|
|
+ @api.model
|
|
|
|
+ def _get_default_source_warehouse(self):
|
|
|
|
+ warehouse = self.env['stock.warehouse'].search([('user_id','=',self.env.user.id)])
|
|
|
|
+ if warehouse:
|
|
|
|
+ return warehouse[0].id
|
|
|
|
+
|
|
|
|
+ @api.model
|
|
|
|
+ def _get_default_dest_warehouse(self):
|
|
|
|
+ if (self._context.get('type') == 'appointment'):
|
|
|
|
+ warehouse = self.env['stock.warehouse'].search([('name','ilike','Cliente')])
|
|
|
|
+ if warehouse:
|
|
|
|
+ return warehouse[0].id
|
|
|
|
+ else:
|
|
|
|
+ raise Warning(_("No existe un almacén asignado para clientes"))
|
|
|
|
|
|
name = fields.Char(string='Referencia')
|
|
name = fields.Char(string='Referencia')
|
|
date = fields.Date(string='Fecha',default=_get_default_date)
|
|
date = fields.Date(string='Fecha',default=_get_default_date)
|
|
partner_id = fields.Many2one('res.partner', string="Paciente")
|
|
partner_id = fields.Many2one('res.partner', string="Paciente")
|
|
- doctor_id = fields.Many2one('res.users', string="Doctor")
|
|
|
|
|
|
+ doctor_id = fields.Many2one('res.users', string="Doctor", default=lambda self: self.env.user.id)
|
|
appointment_reason = fields.Char('Motivo')
|
|
appointment_reason = fields.Char('Motivo')
|
|
- source_warehouse = fields.Many2one(comodel_name='stock.warehouse',string='Déposito de Origen')
|
|
|
|
- dest_warehouse = fields.Many2one(comodel_name='stock.warehouse',string='Déposito de Destino')
|
|
|
|
|
|
+ source_warehouse = fields.Many2one(comodel_name='stock.warehouse',string='Déposito de Origen', default=_get_default_source_warehouse)
|
|
|
|
+ dest_warehouse = fields.Many2one(comodel_name='stock.warehouse',string='Déposito de Destino', default=_get_default_dest_warehouse)
|
|
state = fields.Selection(
|
|
state = fields.Selection(
|
|
selection=[
|
|
selection=[
|
|
('draft', 'Borrador'),
|
|
('draft', 'Borrador'),
|
|
@@ -84,15 +99,21 @@ class SisStockTransfer(models.Model):
|
|
vals['name'] = self.env['ir.sequence'].get('sis.stock.appointment') or '/'
|
|
vals['name'] = self.env['ir.sequence'].get('sis.stock.appointment') or '/'
|
|
return super(SisStockTransfer, self).create(vals)
|
|
return super(SisStockTransfer, self).create(vals)
|
|
|
|
|
|
|
|
+ @api.one
|
|
|
|
+ @api.onchange('doctor_id')
|
|
|
|
+ def onchange_doctor_id(self):
|
|
|
|
+ if self.doctor_id:
|
|
|
|
+ warehouse = self.env['stock.warehouse'].search([('user_id','=',self.doctor_id.id)])
|
|
|
|
+ if warehouse:
|
|
|
|
+ self.source_warehouse = warehouse.id
|
|
|
|
+ else:
|
|
|
|
+ raise Warning(_("El Doctor seleccionado no posee almacén asignado"))
|
|
|
|
+
|
|
def get_transfer_picking_type(self):
|
|
def get_transfer_picking_type(self):
|
|
self.ensure_one()
|
|
self.ensure_one()
|
|
|
|
|
|
- picking_types = self.env['stock.picking.type'].search(
|
|
|
|
- [
|
|
|
|
- ('default_location_src_id', '=', self.source_warehouse.lot_stock_id.id),
|
|
|
|
- ('code', '=', 'outgoing')
|
|
|
|
- ]
|
|
|
|
- )
|
|
|
|
|
|
+ picking_types = self.env['stock.picking.type'].search([('default_location_src_id', '=', self.source_warehouse.lot_stock_id.id),('code', '=', 'outgoing')])
|
|
|
|
+
|
|
if not picking_types:
|
|
if not picking_types:
|
|
_logger.error("No picking tye found")
|
|
_logger.error("No picking tye found")
|
|
#TODO: Exception Raise
|
|
#TODO: Exception Raise
|