From 20af4dfa370c7c61a70e070635de4d756a511e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Tue, 22 Sep 2015 02:18:22 +0200 Subject: [PATCH] refactor sending sms for picking, add a todo for using template --- sms_send_picking/cron.xml | 3 ++- sms_send_picking/stock.py | 53 ++++++++++++++++++++++++++------------- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/sms_send_picking/cron.xml b/sms_send_picking/cron.xml index 5e649ca..9204430 100644 --- a/sms_send_picking/cron.xml +++ b/sms_send_picking/cron.xml @@ -8,8 +8,9 @@ -1 - + + diff --git a/sms_send_picking/stock.py b/sms_send_picking/stock.py index 4b1ea55..c8f7032 100644 --- a/sms_send_picking/stock.py +++ b/sms_send_picking/stock.py @@ -27,23 +27,40 @@ from openerp.tools.translate import _ class StockPicking(models.Model): _inherit = 'stock.picking' - sms_sent = fields.Boolean(default=False) + availability_sent_by_sms = fields.Boolean(default=False) + #TODO use a templating instead @api.model - def _send_sms(self): - sms_sender_obj = self.env['partner.sms.send'] - gateways = self.env['sms.smsclient'].search([('default_gateway', '=', - True)], limit=1) - gateway = gateways[0] - pickings = self.env['stock.picking'].search( - [('state', '=', 'assigned'), ('sms_sent', '=', False), - ('picking_type_id.code', '=', 'outgoing')]) - for pick in pickings: - data = { - 'gateway': gateway.id, - 'text': _('Your picking %s is ready to transfert') % pick.name, - 'mobile_to': pick.partner_id.phone, - } - sms_sender = sms_sender_obj.create(data) - sms_sender.sms_send() - pick.sms_sent = True + def _prepare_availability_sms_notification(self): + gateway = self.env['sms.gateway'].search([ + ('default_gateway', '=', True)], limit=1) + return { + 'gateway': gateway.id, + 'message': _('Your picking %s is ready to transfert') % pick.name, + 'mobile': self.partner_id.phone, + 'partner_id': self.partner_id.id, + 'state': 'draft', + 'validity': gateway.validity, + 'classes': gateway.classes, + 'deferred': gateway.deferred, + 'priority': gateway.priority, + 'coding': gateway.coding, + 'nostop': gateway.nostop, + } + + @api.model + def _get_send_picking_availability_sms_domain(self): + return [ + ('state', '=', 'assigned'), + ('availability_sent_by_sms', '=', False), + ('picking_type_id.code', '=', 'outgoing'), + ] + + @api.model + def _cron_send_picking_availability_by_sms(self): + domain = self._get_send_picking_availability_sms_domain() + pickings = self.env['stock.picking'].search(domain) + for picking in pickings: + vals = picking._prepare_availability_sms_notification() + self.env['sms.sms'].create(vals) + pickings.write({'availability_sent_by_sms': True})