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