res_partner.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from openerp import api, fields, models
  2. from datetime import datetime, date, time, timedelta
  3. class ResPartner(models.Model):
  4. _inherit = 'res.partner'
  5. @api.model
  6. def get_partners(self):
  7. domain = [('customer', '=', True), ('active', '=', True), ('credit', '>', 0)]
  8. partners = []
  9. for customer in self.env['res.partner'].search(domain):
  10. categories = []
  11. invoices = []
  12. for category in customer.category_id:
  13. categories.append({
  14. 'id': category.id,
  15. 'name': category.name,
  16. 'display_name': category.display_name
  17. })
  18. for invoice in customer.invoice_ids:
  19. movelines = []
  20. moves = []
  21. currency_symbol = ""
  22. for move in invoice.move_id:
  23. for moveline in move.line_id:
  24. if moveline.amount_residual > 0 and moveline.state != "draft":
  25. movelines.append({
  26. 'id': moveline.id,
  27. 'amount_residual': moveline.amount_residual,
  28. 'credit': moveline.credit,
  29. 'debit': moveline.debit,
  30. 'date_maturity': moveline.date_maturity
  31. })
  32. for currency in invoice.currency_id:
  33. currency_symbol=currency.symbol
  34. if invoice.state == 'open':
  35. invoices.append({
  36. 'id': invoice.id,
  37. 'number': invoice.number,
  38. 'date_invoice': invoice.date_invoice,
  39. 'amount_total': invoice.amount_total,
  40. 'residual': invoice.residual,
  41. 'moveLines': movelines,
  42. 'currency_symbol' : currency_symbol,
  43. 'moves' :{
  44. 'id': invoice.move_id.id,
  45. 'name': invoice.move_id.name,
  46. 'date': invoice.move_id.date
  47. }
  48. })
  49. partners.append({
  50. 'id': customer.id,
  51. 'name': customer.name,
  52. 'display_name': customer.display_name,
  53. 'ruc': customer.ruc,
  54. 'image_medium': customer.image_medium,
  55. 'phone': customer.phone,
  56. 'mobile': customer.mobile,
  57. 'email': customer.email,
  58. 'credit': customer.credit,
  59. 'credit_limit': customer.credit_limit,
  60. 'categories': categories,
  61. 'invoices': invoices,
  62. 'date_server': str(datetime.now().date())
  63. })
  64. return partners