res_partner.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. partner_invoice = []
  13. for category in customer.category_id:
  14. categories.append({
  15. 'id': category.id,
  16. 'name': category.name,
  17. 'display_name': category.display_name
  18. })
  19. for invoice_ids in customer.invoice_ids:
  20. if invoice_ids.state == 'open':
  21. partner_invoice.append(invoice_ids.id)
  22. if customer.is_company == True:
  23. for child in customer.child_ids:
  24. for invoice_ids in child.invoice_ids:
  25. if invoice_ids.state == 'open':
  26. partner_invoice.append(invoice_ids.id)
  27. for invoice in self.env['account.invoice'].browse(partner_invoice):
  28. movelines = []
  29. moves = []
  30. currency_symbol = ""
  31. for move in invoice.move_id:
  32. for moveline in move.line_id:
  33. if moveline.amount_residual > 0 and moveline.state != "draft" and moveline.credit <= 0:
  34. movelines.append({
  35. 'id': moveline.id,
  36. 'amount_residual': moveline.amount_residual,
  37. 'credit': moveline.credit,
  38. 'debit': moveline.debit,
  39. 'date_maturity': moveline.date_maturity,
  40. 'invoice': invoice.id
  41. })
  42. for currency in invoice.currency_id:
  43. currency_symbol=currency.symbol
  44. if invoice.state == 'open':
  45. invoices.append({
  46. 'id': invoice.id,
  47. 'number': invoice.number,
  48. 'date_invoice': invoice.date_invoice,
  49. 'amount_total': invoice.amount_total,
  50. 'residual': invoice.residual,
  51. 'moveLines': movelines,
  52. 'currency_symbol' : currency_symbol
  53. })
  54. partners.append({
  55. 'id': customer.id,
  56. 'name': customer.name,
  57. 'display_name': customer.display_name,
  58. 'ruc': customer.ruc,
  59. 'image_medium': customer.image_medium,
  60. 'phone': customer.phone,
  61. 'mobile': customer.mobile,
  62. 'email': customer.email,
  63. 'credit': customer.credit,
  64. 'credit_limit': customer.credit_limit,
  65. 'categories': categories,
  66. 'invoices': invoices,
  67. 'date_server': str(datetime.now().date())
  68. })
  69. return partners