sale_fast_confirm.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. # -*- encoding: utf-8 -*-
  2. from openerp import models, api, fields
  3. from pytz import timezone
  4. from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT, DEFAULT_SERVER_DATE_FORMAT
  5. from datetime import datetime,timedelta
  6. DATE_FORMAT = '%Y-%m-%d'
  7. class SaleOrder(models.Model):
  8. _inherit = 'sale.order'
  9. _name = 'sale.order'
  10. invoice_number = fields.Char('Numero de Factura')
  11. contado = fields.Boolean('Contado')
  12. credito = fields.Boolean('Crédito')
  13. _defaults = {
  14. 'contado': True
  15. }
  16. @api.one
  17. @api.onchange('credito')
  18. def cambiar_estado_credito(self):
  19. self.contado = not self.credito
  20. @api.one
  21. @api.onchange('contado')
  22. def cambiar_estado_contado(self):
  23. self.credito = not self.contado
  24. ''' Timezone '''
  25. def get_timezone(self):
  26. return timezone(self._context.get('tz') or self.env.user.tz)
  27. def _convert_str_to_datetime(self, date):
  28. return datetime.strptime(date,DEFAULT_SERVER_DATETIME_FORMAT)
  29. @api.multi
  30. def order_process_now(self):
  31. """
  32. Confirms order and creates and validates invoice, confirms pickings.
  33. """
  34. for sale in self:
  35. sale.action_button_confirm()
  36. inv_id = sale.action_invoice_create()
  37. if inv_id:
  38. inv = self.env['account.invoice'].browse(inv_id)
  39. date = self._convert_str_to_datetime(sale.date_order)
  40. date = date.strftime(DATE_FORMAT)
  41. inv.write({
  42. 'date_invoice':date,
  43. 'supplier_invoice_number':self.invoice_number,
  44. 'contado':self.contado,
  45. 'credito':self.credito
  46. })
  47. self.update_state()
  48. inv.signal_workflow('invoice_open')
  49. for picking in sale.picking_ids:
  50. picking.force_assign()
  51. picking.action_done()
  52. @api.multi
  53. def update_state(self):
  54. for order in self:
  55. order.write({'state': 'done'})
  56. return True
  57. class account_invoice(models.Model):
  58. _inherit = 'account.invoice'
  59. _name = 'account.invoice'
  60. contado = fields.Boolean('Contado')
  61. credito = fields.Boolean('Crédito')
  62. _defaults = {
  63. 'contado': True
  64. }
  65. @api.one
  66. @api.onchange('credito')
  67. def cambiar_estado_credito(self):
  68. self.contado = not self.credito
  69. @api.one
  70. @api.onchange('contado')
  71. def cambiar_estado_contado(self):
  72. self.credito = not self.contado