account_invoice.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # -*- coding: utf-8 -*-
  2. from openerp.http import request as r
  3. def create_invoice(
  4. supplier_id,
  5. cart_items,
  6. currency_id,
  7. payment_term_id=None,
  8. supplier_invoice_number=None
  9. ):
  10. partner = r.env['res.partner'].browse(supplier_id)
  11. journal = r.env['account.journal'].search([('type', 'in', ['purchase']), ('company_id', '=', partner.company_id.id)])
  12. return r.env['account.invoice'].create({
  13. 'name': '/',
  14. 'partner_id': partner.id,
  15. 'invoice_line': [[0, False, {
  16. 'name': line.get('name'),
  17. 'product_id': int(line.get('id')),
  18. 'quantity': float(line.get('quantity')),
  19. 'price_unit': float(line.get('price'))
  20. }] for line in cart_items],
  21. 'account_id': partner.property_account_payable.id,
  22. 'journal_id': journal.id,
  23. 'currency_id': currency_id,
  24. 'payment_term': payment_term_id,
  25. 'supplier_invoice_number': supplier_invoice_number,
  26. 'type': 'in_invoice'
  27. })
  28. def prepare_invoice(invoice_ids, currency_id, date_today):
  29. assert len(invoice_ids) == 1
  30. invoice = r.env['account.invoice'].browse(invoice_ids)
  31. date_due = parse(date_today) + rd(days=max(invoice.payment_term.line_ids.mapped(lambda x: x.days + x.days2)))
  32. invoice.write({
  33. 'currency_id': currency_id,
  34. 'date_invoice': date_today,
  35. 'date_due': date_due.strftime(DATE_FORMAT),
  36. 'state': 'open'
  37. })