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:
parent
5bcd697627
commit
da09f02140
|
@ -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={}):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,7 +96,7 @@
|
|||
<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">
|
||||
|
@ -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,7 +188,7 @@
|
|||
<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>
|
||||
|
||||
|
||||
|
@ -229,23 +253,35 @@
|
|||
<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>
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue