Browse Source

[FIX] account voucher creation

Gogs 7 năm trước cách đây
mục cha
commit
fac8eef38e
4 tập tin đã thay đổi với 25 bổ sung43 xóa
  1. 1 3
      .gitignore
  2. 1 2
      __openerp__.py
  3. 23 28
      models/account_voucher.py
  4. 0 10
      workflows/eiru_pos_workflow.xml

+ 1 - 3
.gitignore

@@ -1,5 +1,3 @@
 *.pyc
 node_modules
-static/src
-json
-test
+static/src

+ 1 - 2
__openerp__.py

@@ -6,7 +6,6 @@
     'version': '0.1',
     'depends': ['base', 'sale', 'account'],
     'data': [
-        'templates.xml',
-        'workflows/eiru_pos_workflow.xml'
+        'templates.xml'
     ]
 }

+ 23 - 28
models/account_voucher.py

@@ -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()

+ 0 - 10
workflows/eiru_pos_workflow.xml

@@ -1,10 +0,0 @@
-<?xml version="1.0"?>
-<openerp>
-    <data>
-        <record id="eiru_pos_wkf" model="workflow">
-            <field name="name">eiru.pos.wkf</field>
-            <field name="osv">eiru.pos</field>
-            <field name="on_create">True</field>
-        </record>
-    </data>
-</openerp>