浏览代码

[FIX] get the customers, journal selection

Gogs 7 年之前
父节点
当前提交
cbe714ed01
共有 4 个文件被更改,包括 62 次插入14 次删除
  1. 1 1
      __openerp__.py
  2. 48 4
      models/account_journal.py
  3. 12 8
      models/account_voucher.py
  4. 1 1
      models/res_partner.py

+ 1 - 1
__openerp__.py

@@ -4,7 +4,7 @@
     'author': "Robert Gauto",
     'category': 'Uncategorized',
     'version': '0.1',
-    'depends': ['base', 'sale', 'account'],
+    'depends': ['base', 'sale', 'account', 'multi_store'],
     'data': [
         'templates.xml'
     ]

+ 48 - 4
models/account_journal.py

@@ -6,10 +6,17 @@ class AccountJournal(models.Model):
 
     @api.model
     def get_journals(self):
-        domain = [('active', '=', True), ('type', 'in', ['bank', 'cash'])]
+        domain = [
+            ('active', '=', True),
+            ('type', 'in', ['bank', 'cash']),
+            ('default_credit_account_id.currency_id', '=', False)
+        ]
         journals = []
 
-        for journal in self.env['account.journal'].search(domain):
+        for journal in self.env['account.journal'].search(domain, order='id'):
+            if not (journal.store_ids >= self.env.user.store_ids):
+                continue
+
             journals.append({
                 'id': journal.id,
                 'name': journal.name,
@@ -17,17 +24,54 @@ class AccountJournal(models.Model):
                 'code': journal.code,
                 'cash_control': journal.cash_control,
                 'type': journal.type,
+                'currency': {
+                    'id': journal.currency.id,
+                    'name': journal.currency.name,
+                    'display_name': journal.currency.display_name
+                },
                 'default_credit_account': {
                     'id': journal.default_credit_account_id.id,
                     'name': journal.default_credit_account_id.name,
                     'display_name': journal.default_credit_account_id.display_name,
-                    'code': journal.default_credit_account_id.code
+                    'code': journal.default_credit_account_id.code,
+                    'exchange_rate': journal.default_credit_account_id.exchange_rate,
+                    'foreign_balance': journal.default_credit_account_id.foreign_balance,
+                    'reconcile': journal.default_credit_account_id.reconcile,
+                    'debit': journal.default_credit_account_id.debit,
+                    'credit': journal.default_credit_account_id.credit,
+                    'currency_mode': journal.default_credit_account_id.currency_mode,
+                    'company_currency': {
+                        'id': journal.default_credit_account_id.company_currency_id.id,
+                        'name': journal.default_credit_account_id.company_currency_id.name,
+                        'display_name': journal.default_credit_account_id.company_currency_id.display_name,
+                    },
+                    'currency': {
+                        'id': journal.default_credit_account_id.currency_id.id,
+                        'name': journal.default_credit_account_id.currency_id.name,
+                        'display_name': journal.default_credit_account_id.currency_id.display_name
+                    }
                 },
                 'default_debit_account': {
                     'id': journal.default_debit_account_id.id,
                     'name': journal.default_debit_account_id.name,
                     'display_name': journal.default_debit_account_id.display_name,
-                    'code': journal.default_debit_account_id.code
+                    'code': journal.default_debit_account_id.code,
+                    'exchange_rate': journal.default_credit_account_id.exchange_rate,
+                    'foreign_balance': journal.default_credit_account_id.foreign_balance,
+                    'reconcile': journal.default_credit_account_id.reconcile,
+                    'debit': journal.default_credit_account_id.debit,
+                    'credit': journal.default_credit_account_id.credit,
+                    'currency_mode': journal.default_credit_account_id.currency_mode,
+                    'company_currency': {
+                        'id': journal.default_credit_account_id.company_currency_id.id,
+                        'name': journal.default_credit_account_id.company_currency_id.name,
+                        'display_name': journal.default_credit_account_id.company_currency_id.display_name,
+                    },
+                    'currency': {
+                        'id': journal.default_credit_account_id.currency_id.id,
+                        'name': journal.default_credit_account_id.currency_id.name,
+                        'display_name': journal.default_credit_account_id.currency_id.display_name
+                    }
                 }
             })
 

+ 12 - 8
models/account_voucher.py

@@ -14,7 +14,10 @@ class AccountVoucher(models.Model):
         date_now = fields.Date.context_today(self)
         date_format = '%Y-%m-%d'
 
-        # Step 1: Create sale order and confirm
+        # Step 1: Select currency based on selected journal
+        journal = self.env['account.journal'].browse(int(values['journal_id']))
+
+        # Step 2: Create sale order and confirm
         sale_order = self.env['sale.order'].create({
             'partner_id': int(values['customer_id']),
             'order_line': [[0, False, { 
@@ -29,17 +32,18 @@ class AccountVoucher(models.Model):
             'payment_term': int(values['payment_term_id'])
         })
 
-        # Step 2: Create invoice and calculate due_date
+        # Step 3: Create invoice and calculate due date
         invoice = self.env['account.invoice'].browse(sale_order.action_invoice_create())
 
         due_date = parse(date_now) + rd(days=max(invoice.payment_term.line_ids.mapped(lambda x: x.days + x.days2)))
 
         invoice.write({
+            'currency_id': journal.default_credit_account_id.currency_id.id or journal.default_credit_account_id.company_currency_id.id,
             'date_invoice': date_now,
             'date_due': due_date.strftime(date_format)
         })
 
-        # Step 3: Create invoice move lines
+        # Step 4: Create invoice move lines
         amount_paid = float(values['amount_paid'])
         decimal_precision = self.env['decimal.precision'].precision_get('Account')
 
@@ -63,8 +67,8 @@ class AccountVoucher(models.Model):
                 total_lines.append([date_now, percent_paid])
                 percent_paid = amount_paid = 0
 
-                if due_date == date_now:
-                    distribute_percent = -((total_lines[0] - line.value_amount)  / (len(invoice.payment_term.line_ids) - 1))
+                if due_date == date_now and line.value_amount:
+                    distribute_percent = -((total_lines[0][1] - line.value_amount)  / (len(invoice.payment_term.line_ids) - 1))
                     continue
 
             if line.value != 'balance':
@@ -91,7 +95,7 @@ class AccountVoucher(models.Model):
 
             total_lines = []
 
-        # Step 4: Create account move
+        # Step 5: 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]
@@ -116,13 +120,13 @@ class AccountVoucher(models.Model):
 
         account_move.post()
 
-        # Step 5: Validate invoice
+        # Step 6: Validate invoice
         invoice.action_number()
         invoice.write({
             'state': 'open'
         })
 
-        # Step 6: Create voucher
+        # Step 7: Create voucher
         account_voucher = self.create({
             'reference': account_move.name,
             'type': 'receipt',

+ 1 - 1
models/res_partner.py

@@ -5,7 +5,7 @@ class ResPartner(models.Model):
 
     @api.model
     def get_customers(self):
-        domain = [('customer', '=', True), ('is_company', '=', False), ('active', '=', True)]
+        domain = [('customer', '=', True), ('active', '=', True)]
         customers = []
 
         for customer in self.env['res.partner'].search(domain):