On account move line:Added tax and analytic account fields.modified create and write method on account move line creation

bzr revid: jvo@tinyerp.com-20080814133758-z76lxtj88yqm7hlc
This commit is contained in:
Jay Vora 2008-08-14 19:07:58 +05:30
parent 5bcd697627
commit da09f02140
4 changed files with 143 additions and 31 deletions

View File

@ -1127,7 +1127,7 @@ class account_tax(osv.osv):
'ref_tax_sign': fields.float('Tax Code Sign', help="Usualy 1 or -1."),
'include_base_amount': fields.boolean('Include in base amount', help="Indicate if the amount of tax must be included in the base amount for the computation of the next taxes"),
'company_id': fields.many2one('res.company', 'Company', required=True),
'description': fields.char('Internal Name', 32),
'description': fields.char('Internal Name',size=32),
}
def name_get(self, cr, uid, ids, context={}):

View File

@ -49,9 +49,9 @@ class account_move_line(osv.osv):
if state:
if state.lower() not in ['all']:
where_move_state= " AND "+obj+".move_id in (select id from account_move where account_move.state = '"+state+"')"
if context.get('periods', False):
ids = ','.join([str(x) for x in context['periods']])
ids = ','.join([str(x) for x in context['periods']])
return obj+".active AND "+obj+".state<>'draft' AND "+obj+".period_id in (SELECT id from account_period WHERE fiscalyear_id in (%s) AND id in (%s)) %s" % (fiscalyear_clause, ids,where_move_state)
else:
return obj+".active AND "+obj+".state<>'draft' AND "+obj+".period_id in (SELECT id from account_period WHERE fiscalyear_id in (%s) %s)" % (fiscalyear_clause,where_move_state)
@ -71,6 +71,9 @@ class account_move_line(osv.osv):
return data
period_obj = self.pool.get('account.period')
tax_obj=self.pool.get('account.tax')
tax_line=context.get('tax_line',False)
# Compute the current move
move_id = False
@ -86,6 +89,7 @@ class account_move_line(osv.osv):
(context['journal_id'], context['period_id'], uid, 'draft'))
res = cr.fetchone()
move_id = (res and res[0]) or False
if not move_id:
return data
else:
@ -113,10 +117,33 @@ class account_move_line(osv.osv):
ref_id = False
taxes = {}
move = self.pool.get('account.move').browse(cr, uid, move_id, context)
for l in move.line_id:
partner_id = partner_id or l.partner_id.id
ref_id = ref_id or l.ref
total += (l.debit - l.credit)
final_debit=l.debit
final_credit=l.credit
if 'name' in fields:
data.setdefault('name', l.name)
if l.amount_taxed:
if l.debit:
final_debit=l.amount_taxed
if not tax_line:
final_debit= l.debit - final_debit
if l.credit:
final_credit=l.amount_taxed
if not tax_line:
final_credit =l.credit - final_credit
total += (final_debit - final_credit)
else:
if len(move.line_id)==1:
total += (final_debit - final_credit)
for tax in l.account_id.tax_ids:
if move.journal_id.type == 'sale':
if l.debit:
@ -134,8 +161,7 @@ class account_move_line(osv.osv):
acc = tax.account_paid_id.id
taxes.setdefault((acc, code), False)
taxes[(l.account_id.id, l.tax_code_id.id)] = True
if 'name' in fields:
data.setdefault('name', l.name)
if 'ref' in fields:
data['ref'] = ref_id
@ -172,7 +198,9 @@ class account_move_line(osv.osv):
s -= tax['amount']
tax_amount += tax['amount'] * \
tax[field_base + 'tax_sign']
if ('debit' in fields) or ('credit' in fields):
data['debit'] = s>0 and s or 0.0
data['credit'] = s<0 and -s or 0.0
@ -334,6 +362,9 @@ class account_move_line(osv.osv):
'tax_amount': fields.float('Tax/Base Amount', digits=(16,2), select=True),
'invoice': fields.function(_invoice, method=True, string='Invoice',
type='many2one', relation='account.invoice', fnct_search=_invoice_search),
'account_tax_id':fields.many2one('account.tax', 'Tax'),
'analytic_account_id' : fields.many2one('account.analytic.account', 'Analytic Account'),
'amount_taxed':fields.float("Taxed Amount",digits=(16,2)),
}
def _get_date(self, cr, uid, context):
@ -632,7 +663,19 @@ class account_move_line(osv.osv):
def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True):
if not context:
context={}
raise_ex=False
account_obj = self.pool.get('account.account')
acc=account_obj.browse(cr,uid,ids)[0]
if ('debit' in vals and 'credit' in vals) and not vals['debit'] and not vals['credit']:
raise_ex=True
if ('debit' in vals and 'credit' not in vals) and not vals['debit'] and not acc.credit:
raise_ex=True
if ('credit' in vals and 'debit' not in vals) and not vals['credit'] and not acc.debit:
raise_ex=True
if raise_ex:
raise osv.except_osv(_('Wrong Accounting Entry!'), _('Both Credit and Debit cannot be zero!'))
if ('account_id' in vals) and not account_obj.read(cr, uid, vals['account_id'], ['active'])['active']:
raise osv.except_osv(_('Bad account!'), _('You can not use an inactive account!'))
@ -680,7 +723,11 @@ class account_move_line(osv.osv):
def create(self, cr, uid, vals, context=None, check=True):
if not context:
context={}
if not vals['debit'] and not vals['credit']:
raise osv.except_osv(_('Wrong Accounting Entry!'), _('Both Credit and Debit cannot be zero!'))
account_obj = self.pool.get('account.account')
tax_obj=self.pool.get('account.tax')
if ('account_id' in vals) and not account_obj.read(cr, uid, vals['account_id'], ['active'])['active']:
raise osv.except_osv(_('Bad account!'), _('You can not use an inactive account!'))
@ -743,7 +790,26 @@ class account_move_line(osv.osv):
vals['amount_currency'] = cur_obj.compute(cr, uid, account.company_id.currency_id.id, account.currency_id.id, vals.get('debit', 0.0)-vals.get('credit', 0.0), context=ctx)
if not ok:
raise osv.except_osv(_('Bad account !'), _('You can not use this general account in this journal !'))
tax_go=False
if 'account_tax_id' in vals and vals['account_tax_id']:
tax_id=tax_obj.browse(cr,uid,vals['account_tax_id'])
if vals['debit']:
vals['amount_taxed']=tax_obj.compute(cr,uid,[tax_id],vals['debit'],1.00)[0]['amount']
vals['debit'] +=vals['amount_taxed']
if vals['credit']:
vals['amount_taxed']=tax_obj.compute(cr,uid,[tax_id],vals['credit'],1.00)[0]['amount']
vals['credit'] +=vals['amount_taxed']
fields=[x for x in vals]
tax_go=True
result = super(osv.osv, self).create(cr, uid, vals, context)
if tax_go:
context['tax_line']=True
if vals['amount_taxed']:
data_tax=self._default_get(cr, uid, fields, context=context)
self.create(cr,uid,data_tax)
if check:
self.pool.get('account.move').validate(cr, uid, [vals['move_id']], context)
return result

View File

@ -674,6 +674,8 @@
<field name="journal_id"/>
<field name="debit" sum="Total debit"/>
<field name="credit" sum="Total credit"/>
<field name="account_tax_id"/>
<field name="analytic_account_id"/>
<field name="amount_currency"/>
<field name="currency_id"/>
<field name="state"/>
@ -716,6 +718,9 @@
<newline/>
<field name="tax_code_id"/>
<field name="tax_amount"/>
<newline/>
<field name="account_tax_id"/>
<field name="analytic_account_id"/>
<separator colspan="4" string="State"/>
<field name="journal_id" select="2"/>
@ -764,6 +769,9 @@
<field name="date_created"/>
<field name="date_created"/>
<field name="blocked" select="3"/>
<newline/>
<field name="account_tax_id"/>
<field name="analytic_account_id"/>
<separator colspan="4" string="State"/>
<newline/>
@ -1365,6 +1373,8 @@
<field name="tax_amount"/>
<field name="debit" sum="Total debit"/>
<field name="credit" sum="Total credit"/>
<field name="account_tax_id"/>
<field name="analytic_account_id"/>
<field name="state"/>
</tree>
</field>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<terp>
<data noupdate="1">
<!--
Payment term
-->
-->
<record id="account_payment_term" model="account.payment.term">
<field name="name">30 Days Net</field>
</record>
@ -15,7 +15,7 @@
<field name="condition">net days</field>
<field eval="account_payment_term" name="payment_id"/>
</record>
<!--
Account Journal View
-->
@ -74,6 +74,18 @@
<field name="field">credit</field>
<field eval="11" name="sequence"/>
</record>
<record id="bank_col11" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Tax</field>
<field name="field">account_tax_id</field>
<field eval="12" name="sequence"/>
</record>
<record id="bank_col12" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Analytic Account</field>
<field name="field">analytic_account_id</field>
<field eval="13" name="sequence"/>
</record>
<record id="bank_col3" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">Ref</field>
@ -84,9 +96,9 @@
<field name="view_id" ref="account_journal_bank_view"/>
<field name="name">State</field>
<field name="field">state</field>
<field eval="12" name="sequence"/>
<field eval="14" name="sequence"/>
</record>
<record id="account_journal_bank_view_multi" model="account.journal.view">
<field name="name">Multi-Currency Cash Journal View</field>
</record>
@ -142,17 +154,29 @@
<field name="field">credit</field>
<field eval="11" name="sequence"/>
</record>
<record id="bank_col11_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Tax</field>
<field name="field">account_tax_id</field>
<field eval="12" name="sequence"/>
</record>
<record id="bank_col12_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Analytic Account</field>
<field name="field">analytic_account_id</field>
<field eval="13" name="sequence"/>
</record>
<record id="bank_col17_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Currency Amt.</field>
<field name="field">amount_currency</field>
<field eval="12" name="sequence"/>
<field eval="14" name="sequence"/>
</record>
<record id="bank_col18_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">Currency</field>
<field name="field">currency_id</field>
<field eval="13" name="sequence"/>
<field eval="15" name="sequence"/>
</record>
<record id="bank_col3_multi" model="account.journal.column">
<field name="view_id" ref="account_journal_bank_view_multi"/>
@ -164,10 +188,10 @@
<field name="view_id" ref="account_journal_bank_view_multi"/>
<field name="name">State</field>
<field name="field">state</field>
<field eval="14" name="sequence"/>
<field eval="16" name="sequence"/>
</record>
<record id="account_journal_view" model="account.journal.view">
<field name="name">Journal View</field>
</record>
@ -229,30 +253,42 @@
<field name="field">credit</field>
<field eval="9" name="sequence"/>
</record>
<record id="journal_col10" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Tax</field>
<field name="field">account_tax_id</field>
<field eval="10" name="sequence"/>
</record>
<record id="journal_col11" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Analytic Account</field>
<field name="field">analytic_account_id</field>
<field eval="11" name="sequence"/>
</record>
<record id="journal_col25" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Tax Acc.</field>
<field name="field">tax_code_id</field>
<field eval="10" name="sequence"/>
<field eval="12" name="sequence"/>
</record>
<record id="journal_col26" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">Tax</field>
<field name="field">tax_amount</field>
<field eval="11" name="sequence"/>
<field eval="13" name="sequence"/>
</record>
<record id="journal_col24" model="account.journal.column">
<field name="view_id" ref="account_journal_view"/>
<field name="name">State</field>
<field name="field">state</field>
<field eval="12" name="sequence"/>
<field eval="14" name="sequence"/>
</record>
<!--
Account Journal Sequences
-->
<record id="sequence_journal_type" model="ir.sequence.type">
<field name="name">Account Journal</field>
<field name="code">account.journal</field>
@ -262,11 +298,11 @@
<field name="code">account.journal</field>
<field name="prefix"/>
</record>
<!--
Account Statement Sequences
-->
<record id="sequence_reconcile" model="ir.sequence.type">
<field name="name">Account reconcile sequence</field>
<field name="code">account.reconcile</field>
@ -278,8 +314,8 @@
<field eval="1" name="number_next"/>
<field eval="1" name="number_increment"/>
</record>
<record id="sequence_statement_type" model="ir.sequence.type">
<field name="name">Bank Statement</field>
<field name="code">account.bank.statement</field>
@ -291,11 +327,11 @@
<field eval="0" name="number_next"/>
<field eval="1" name="number_increment"/>
</record>
<!--
Account Journal
-->
<record id="sales_journal" model="account.journal">
<field name="name">Sales Journal</field>
<field name="code">SAJ</field>
@ -316,7 +352,7 @@
<field model="account.account" name="default_credit_account_id" search="[('type','=','payable')]"/>
<field name="user_id" ref="base.user_admin"/>
</record>
<record id="bank_journal" model="account.journal">
<field name="name">Bank Journal</field>
<field name="code">BNK</field>
@ -327,7 +363,7 @@
<field model="account.account" name="default_credit_account_id" search="[('type','=','cash')]"/>
<field name="user_id" ref="base.user_admin"/>
</record>
<record forcecreate="1" id="stock_journal" model="account.journal">
<field name="name">Stock Journal</field>
<field name="code">STJ</field>
@ -336,6 +372,6 @@
<field name="sequence_id" ref="sequence_journal"/>
<field name="user_id" ref="base.user_admin"/>
</record>
</data>
</terp>