|
@@ -14,27 +14,22 @@ class AccountVoucher(models.Model):
|
|
|
date_now = fields.Date.context_today(self)
|
|
|
date_format = '%Y-%m-%d'
|
|
|
|
|
|
- # Step 1: Create Sale Order and Confirm
|
|
|
- sale_order_line_values = [
|
|
|
- [0, False, {
|
|
|
- 'product_id': int(item['id']),
|
|
|
- 'product_uom_qty': float(item['qty']),
|
|
|
- 'price_unit': float(item['price']) ,
|
|
|
- 'state': 'confirmed'
|
|
|
- }] for item in values['cart_items']]
|
|
|
-
|
|
|
- sale_order_values = {
|
|
|
+ # Step 1: Create sale order and confirm
|
|
|
+ sale_order = self.env['sale.order'].create({
|
|
|
'partner_id': int(values['customer_id']),
|
|
|
- 'order_line': sale_order_line_values,
|
|
|
+ 'order_line': [[0, False, {
|
|
|
+ 'product_id': int(v['id']),
|
|
|
+ 'product_uom_qty': float(v['qty']),
|
|
|
+ 'price_unit': float(v['price']),
|
|
|
+ 'state': 'confirmed'
|
|
|
+ }] for v in values['cart_items']],
|
|
|
'picking_policy': 'direct',
|
|
|
'state': 'manual',
|
|
|
'date_confirm': date_now,
|
|
|
'payment_term': 4
|
|
|
- }
|
|
|
-
|
|
|
- sale_order = self.env['sale.order'].create(sale_order_values)
|
|
|
+ })
|
|
|
|
|
|
- # Step 2: Create innvoice and calculate due_date
|
|
|
+ # Step 2: Create invoice and calculate due_date
|
|
|
invoice_id = sale_order.action_invoice_create()
|
|
|
|
|
|
invoice = self.env['account.invoice'].browse(invoice_id)
|
|
@@ -55,7 +50,8 @@ class AccountVoucher(models.Model):
|
|
|
compute_taxes = self.env['account.invoice.tax'].compute(invoice)
|
|
|
invoice.check_tax_lines(compute_taxes)
|
|
|
|
|
|
- total, total_currency, invoice_move_lines = invoice.compute_invoice_totals(invoice.company_id.currency_id, invoice.reference, invoice_move_lines)
|
|
|
+ total, total_currency, invoice_move_lines = invoice.compute_invoice_totals(invoice.company_id.currency_id,\
|
|
|
+ invoice.reference, invoice_move_lines)
|
|
|
|
|
|
percent_paid = amount_paid / total
|
|
|
distribute_percent = -(percent_paid / len(invoice.payment_term.line_ids))
|
|
@@ -89,19 +85,22 @@ class AccountVoucher(models.Model):
|
|
|
'price': current_price if total_line[1] else total - amount_paid,
|
|
|
'account_id': invoice.account_id.id,
|
|
|
'date_maturity': total_line[0],
|
|
|
- 'amount_currency': invoice.company_id.currency_id.compute(total_line[1], invoice.currency_id) if invoice.currency_id != invoice.company_id.currency_id else False,
|
|
|
+ 'amount_currency': invoice.company_id.currency_id.compute(total_line[1], invoice.currency_id) \
|
|
|
+ if invoice.currency_id != invoice.company_id.currency_id else False,
|
|
|
'currency_id': invoice.currency_id != invoice.company_id.currency_id and invoice.currency_id.id,
|
|
|
'ref': invoice.reference
|
|
|
})
|
|
|
|
|
|
total_lines = []
|
|
|
|
|
|
+ # Step 4: Create account move
|
|
|
accounting_partner = self.env['res.partner']._find_accounting_partner(invoice.partner_id)
|
|
|
- move_line_values = [(0, 0, invoice.line_get_convert(line, accounting_partner.id, invoice.date_invoice)) for line in invoice_move_lines]
|
|
|
+ move_line_values = [(0, 0, invoice.line_get_convert(line, accounting_partner.id, invoice.date_invoice)) \
|
|
|
+ for line in invoice_move_lines]
|
|
|
move_line_values = invoice.group_lines(invoice_move_lines, move_line_values)
|
|
|
move_line_values = invoice.finalize_invoice_move_lines(move_line_values)
|
|
|
|
|
|
- move_values = {
|
|
|
+ account_move = self.env['account.move'].create({
|
|
|
'ref': invoice.reference or invoice.name,
|
|
|
'line_id': move_line_values,
|
|
|
'journal_id': invoice.journal_id.id,
|
|
@@ -109,9 +108,7 @@ class AccountVoucher(models.Model):
|
|
|
'narration': invoice.comment,
|
|
|
'company_id': invoice.company_id.id,
|
|
|
'period_id': invoice.period_id.find(invoice.date_invoice).id
|
|
|
- }
|
|
|
-
|
|
|
- account_move = self.env['account.move'].create(move_values)
|
|
|
+ })
|
|
|
|
|
|
invoice.write({
|
|
|
'move_id': account_move.id,
|
|
@@ -121,15 +118,14 @@ class AccountVoucher(models.Model):
|
|
|
|
|
|
account_move.post()
|
|
|
|
|
|
- # Step 4: Validate invoice
|
|
|
+ # Step 5: Validate invoice
|
|
|
invoice.action_number()
|
|
|
invoice.write({
|
|
|
'state': 'open'
|
|
|
})
|
|
|
|
|
|
- # Step 5: Pay Invoice
|
|
|
-
|
|
|
- values = {
|
|
|
+ # Step 6: Pay Invoice
|
|
|
+ account_voucher = self.create({
|
|
|
'reference': account_move.name,
|
|
|
'type': 'receipt',
|
|
|
'journal_id': 7,
|
|
@@ -150,7 +146,6 @@ class AccountVoucher(models.Model):
|
|
|
'amount': abs(l.debit) if account_move.date == l.date_maturity else 0.0,
|
|
|
'reconcile': account_move.date == l.date_maturity
|
|
|
}] for l in account_move.line_id]
|
|
|
- }
|
|
|
+ })
|
|
|
|
|
|
- account_voucher = self.create(values)
|
|
|
return account_voucher.action_move_line_create()
|