sale_order.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # -*- coding: utf-8 -*-
  2. from openerp import models, fields, api
  3. class SaleOrder(models.Model):
  4. _inherit = 'sale.order'
  5. is_delivery = fields.Boolean(string='Delivery?')
  6. delivery_type = fields.Selection([
  7. ('local', 'Local'),
  8. ('envio', 'Envio al Interior'),
  9. ('pickup', 'Pickup')],
  10. string='Tipo de delivery', default='local')
  11. @api.multi
  12. def order_process_now(self):
  13. """
  14. Confirms order and creates and validates invoice, confirms pickings.
  15. """
  16. for sale in self:
  17. sale.action_button_confirm()
  18. inv_id = sale.action_invoice_create()
  19. if inv_id:
  20. inv = self.env['account.invoice'].browse(inv_id)
  21. inv.write({
  22. 'is_delivery':self.is_delivery,
  23. 'delivery_type':self.delivery_type,
  24. })
  25. self.update_state()
  26. inv.signal_workflow('invoice_open')
  27. for picking in sale.picking_ids:
  28. picking.force_assign()
  29. picking.action_done()
  30. @api.multi
  31. def update_state(self):
  32. for order in self:
  33. order.write({'state': 'done'})
  34. return True
  35. class AccountInvoice(models.Model):
  36. _inherit = 'account.invoice'
  37. is_delivery = fields.Boolean(string='Delivery?')
  38. delivery_type = fields.Selection([
  39. ('local', 'Local'),
  40. ('envio', 'Envio al Interior'),
  41. ('pickup', 'Pickup')],
  42. string='Tipo de delivery', default='local')