Azioni automatiche in Odoo
Come impostare da codice le azioni automatiche in Odoo, ad esempio in un modulo aggiuntivo.
Creiamo l’xml:
<?xml version="1.0" encoding="utf-8"?> <openerp> <data> <record forcecreate="True" id="ir_cron_ticket_close" model="ir.cron"> <field name="name">Close Ticket after 24H solved</field> <field eval="True" name="active" /> <field name="user_id" ref="base.user_root" /> <field name="interval_number">1</field> <field name="interval_type">days</field> <field name="numbercall">-1</field> <field eval="False" name="doall" /> <field eval="'crm.claim'" name="model"/> <field eval="'close_ticket'" name="function"/> <field eval="'()'" name="args" /> </record> </data> </openerp>
Definiamo l’azione nel codice python:
class ClaimsTicket(models.Model): _inherit = 'crm.claim' @api.model def close_ticket(self): ticket_ids = self.search([]) out_file = open("c:\\temp\\dev_log.txt","w") for ticket in ticket_ids: if (ticket.stage_id.id==3): time_difference = datetime.now() - datetime.strptime(ticket.date_solved, "%Y-%m-%d %H:%M:%S") #time_difference.total_seconds() giorno = datetime.strptime(ticket.date_solved, "%Y-%m-%d %H:%M:%S").weekday() passed_hours = time_difference.total_seconds()/3600 out_file.write('giorno:%s ore trascorse:%s\n' % (str(giorno),str(passed_hours))) if (passed_hours>48): ticket.write({'stage_id': 5,'date_closed': fields.datetime.now()}) out_file.close() return True