=== modified file 'account_invoice_cash_discount/account_invoice_cash_discount.py' --- account_invoice_cash_discount/account_invoice_cash_discount.py 2010-09-22 14:21:33 +0000 +++ account_invoice_cash_discount/account_invoice_cash_discount.py 2010-09-23 16:52:44 +0000 @@ -645,6 +645,42 @@ class account_bank_statement(osv.osv): _inherit="account.bank.statement" + def _end_balance(self, cursor, user, ids, name, attr, context=None): + res_currency_obj = self.pool.get('res.currency') + res_users_obj = self.pool.get('res.users') + + res = {} + + company_currency_id = res_users_obj.browse(cursor, user, user, + context=context).company_id.currency_id.id + statements = self.browse(cursor, user, ids, context=context) + for statement in statements: + res[statement.id] = statement.balance_start + currency_id = statement.currency.id + for line in statement.move_line_ids: + if line.debit > 0: + if line.account_id.id == \ + statement.journal_id.default_debit_account_id.id: + res[statement.id] += res_currency_obj.compute(cursor, + user, company_currency_id, currency_id, + line.debit, context=context) + else: + if line.account_id.id == \ + statement.journal_id.default_credit_account_id.id: + res[statement.id] -= res_currency_obj.compute(cursor, + user, company_currency_id, currency_id, + line.credit, context=context) + if statement.state == 'draft': + for line in statement.line_ids: + res[statement.id] += line.amount - line.cash_discount + for r in res: + res[r] = round(res[r], 2) + return res + + _columns = { + 'balance_end': fields.function(_end_balance, method=True, string='Balance'), + } + def button_confirm(self, cr, uid, ids, context={}): done = [] tax_obj = self.pool.get('account.tax') @@ -961,6 +997,8 @@ 'tax_type': fields.selection([('tax_included','Tax included'), ('tax_excluded','Tax excluded')], 'Tax method', required=True,), + 'cash_discount': fields.float('Cash Discount'), + 'transferred_amount': fields.float('Transferred'), } def onchange_account_id(self, cr, uid, ids, account_id, context=None): @@ -986,6 +1024,12 @@ result['tax_id'] = False return {'value': result} + def onchange_cash_discount(self, cr, uid, ids, amount, cash_discount, context=None): + return {'value': {'transferred_amount': amount - cash_discount}} + + def onchange_transferred_amount(self, cr, uid, ids, amount, transferred_amount, context=None): + return {'value': {'cash_discount': amount - transferred_amount}} + _defaults = { 'tax_type':lambda *a :'tax_included', } === modified file 'account_invoice_cash_discount/account_invoice_cash_discount_view.xml' --- account_invoice_cash_discount/account_invoice_cash_discount_view.xml 2010-08-11 12:51:31 +0000 +++ account_invoice_cash_discount/account_invoice_cash_discount_view.xml 2010-09-23 16:29:25 +0000 @@ -237,5 +237,31 @@ + + account.bank.statement.tree1 + account.bank.statement + + form + + + + + + + + + + account.bank.statement.form1 + account.bank.statement + + form + + + + + + + + === modified file 'account_invoice_cash_discount/wizard/invoice_statement_payment.py' --- account_invoice_cash_discount/wizard/invoice_statement_payment.py 2010-09-21 12:22:46 +0000 +++ account_invoice_cash_discount/wizard/invoice_statement_payment.py 2010-09-23 14:19:46 +0000 @@ -116,6 +116,8 @@ tax_obj = pool.get('account.tax') invoice_tax_obj = pool.get("account.invoice.tax") + discount = 0.0 + statement = statement_obj.browse(cursor, user, data['id'], context=context) # for each selected move lines for line in line_obj.browse(cursor, user, line_ids, context=context): @@ -230,6 +232,8 @@ 'ref': line.ref, 'reconcile_id': reconcile_id, 'date':line_date, #time.strftime('%Y-%m-%d'), #line.date_maturity or, + 'cash_discount': discount, + 'transferred_amount': cal_invoice_amount - discount, }, context=context) return {}