MULTI_COMPANY_ACCOUNT, ACCOUNT, KERNEL, SALE, PURCHASE: add multi-company for accounting with a lot improvement
bzr revid: ced-06b4cfd8bad40aa5781f29d0f0dfa066191bbccd
This commit is contained in:
parent
38690b0da6
commit
408b1ee9f0
|
@ -406,17 +406,10 @@ class account_fiscalyear(osv.osv):
|
|||
'date_stop': fields.date('End date', required=True),
|
||||
'period_ids': fields.one2many('account.period', 'fiscalyear_id', 'Periods'),
|
||||
'state': fields.selection([('draft','Draft'), ('done','Done')], 'State', redonly=True),
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
}
|
||||
|
||||
def _default_company(self, cr, uid, context={}):
|
||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||
if user.company_id:
|
||||
return user.company_id.id
|
||||
return self.pool.get('res.company').search(cr, uid, [('parent_id', '=', False)])[0]
|
||||
_defaults = {
|
||||
'state': lambda *a: 'draft',
|
||||
'company_id': _default_company,
|
||||
}
|
||||
_order = "code"
|
||||
def create_period3(self,cr, uid, ids, context={}):
|
||||
|
|
|
@ -17,73 +17,73 @@
|
|||
Fiscal Periods
|
||||
-->
|
||||
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_1">
|
||||
<field name="name" eval="'Jan.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-01-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-01-31'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_2">
|
||||
<field name="name" eval="'Feb.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-02-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-02-28'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_3">
|
||||
<field name="name" eval="'Mar.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-03-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-03-31'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_4">
|
||||
<field name="name" eval="'Apr.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-04-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-04-30'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_5">
|
||||
<field name="name" eval="'May.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-05-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-05-31'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_6">
|
||||
<field name="name" eval="'Jun.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-06-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-06-30'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_7">
|
||||
<field name="name" eval="'Jul.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-07-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-07-31'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_8">
|
||||
<field name="name" eval="'Aug.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-08-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-08-31'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_9">
|
||||
<field name="name" eval="'Sep.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-09-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-09-30'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_10">
|
||||
<field name="name" eval="'Oct.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-10-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-10-31'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_11">
|
||||
<field name="name" eval="'Nov.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-11-01'"/>
|
||||
<field name="date_stop" eval="time.strftime('%Y')+'-11-30'"/>
|
||||
</record>
|
||||
<record model="account.period">
|
||||
<record model="account.period" id="period_12">
|
||||
<field name="name" eval="'Dec.'+time.strftime('%Y')"/>
|
||||
<field name="fiscalyear_id" ref="data_fiscalyear"/>
|
||||
<field name="date_start" eval="time.strftime('%Y')+'-12-01'"/>
|
||||
|
@ -95,7 +95,7 @@
|
|||
<field name="code">FSB</field>
|
||||
</record>
|
||||
|
||||
<record model="account.bank.account">
|
||||
<record model="account.bank.account" id="bank_account_fs">
|
||||
<field name="name">001-123456789-73</field>
|
||||
<field name="journal_id" ref="bank_journal"/>
|
||||
<field name="bank_id" ref="fs"/>
|
||||
|
|
|
@ -120,7 +120,7 @@
|
|||
|
||||
<record model="ir.ui.view" id="invoice_supplier_form">
|
||||
<field name="name">account.invoice.supplier.form</field>
|
||||
<field name="model">account.invoice</field>
|
||||
<field name="model">account.invoice.supplier</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Supplier invoice">
|
||||
|
@ -285,7 +285,7 @@
|
|||
|
||||
<record model="ir.actions.act_window" id="action_invoice_tree2">
|
||||
<field name="name">account.invoice.supplier</field>
|
||||
<field name="res_model">account.invoice</field>
|
||||
<field name="res_model">account.invoice.supplier</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form,tree</field>
|
||||
<field name="view_id" eval="invoice_supplier_form"/>
|
||||
|
|
|
@ -19,7 +19,14 @@
|
|||
<field name="date_start"/>
|
||||
<field name="date_stop"/>
|
||||
<separator string="Periods" colspan="4"/>
|
||||
<field name="period_ids" colspan="3" widget="one2many_list"/>
|
||||
<field name="period_ids" colspan="3" widget="one2many_list">
|
||||
<form string="Period">
|
||||
<field name="name" select="1"/>
|
||||
<field name="code" select="1"/>
|
||||
<field name="date_start"/>
|
||||
<field name="date_stop"/>
|
||||
</form>
|
||||
</field>
|
||||
<separator string="States" colspan="4"/>
|
||||
<field name="state" select="1"/>
|
||||
<group col="2" colspan="2">
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
<field name="type">receivable</field>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="parent_id" eval="[(6,0,[])]"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.account" id="a_pay">
|
||||
<field name="name">Main Payable</field>
|
||||
|
@ -19,6 +20,7 @@
|
|||
<field name="type">payable</field>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="parent_id" eval="[(6,0,[])]"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
|
||||
<record model="account.account" id="cash">
|
||||
|
@ -27,22 +29,25 @@
|
|||
<field name="type">cash</field>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="parent_id" eval="[(6,0,[])]"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
|
||||
<record model="account.account" id="a_expense">
|
||||
<field name="name">Products Purchase</field>
|
||||
<field name="code">600</field>
|
||||
<field name="type">expense</field>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="parent_id" eval="[(6,0,[])]"/>
|
||||
</record>
|
||||
<record model="account.account" id="a_sale">
|
||||
<field name="name">Products Sales</field>
|
||||
<field name="code">701</field>
|
||||
<field name="type">income</field>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="parent_id" eval="[(6,0,[])]"/>
|
||||
</record>
|
||||
<record model="account.account" id="a_expense">
|
||||
<field name="name">Products Purchase</field>
|
||||
<field name="code">600</field>
|
||||
<field name="type">expense</field>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="parent_id" eval="[(6,0,[])]"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.account" id="a_sale">
|
||||
<field name="name">Products Sales</field>
|
||||
<field name="code">701</field>
|
||||
<field name="type">income</field>
|
||||
<field name="currency_id" ref="base.EUR"/>
|
||||
<field name="parent_id" eval="[(6,0,[])]"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.property" id="property_account_receivable" forcecreate="True">
|
||||
<field name="name">property_account_receivable</field>
|
||||
|
|
|
@ -60,8 +60,12 @@ class account_invoice(osv.osv):
|
|||
def _get_journal(self, cr, uid, context):
|
||||
type_inv = context.get('type', 'out_invoice')
|
||||
type2journal = {'out_invoice': 'sale', 'in_invoice': 'purchase', 'out_refund': 'sale', 'in_refund': 'purchase'}
|
||||
cr.execute("select id from account_journal where type=%s limit 1", (type2journal.get(type_inv, 'sale'),))
|
||||
return cr.fetchone()[0]
|
||||
journal_obj = self.pool.get('account.journal')
|
||||
res = journal_obj.search(cr, uid, [('type', '=', type2journal.get(type_inv, 'sale'))], limit=1)
|
||||
if res:
|
||||
return res[0]
|
||||
else:
|
||||
return False
|
||||
|
||||
def _get_currency(self, cr, uid, context):
|
||||
user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, [uid])[0]
|
||||
|
@ -131,7 +135,6 @@ class account_invoice(osv.osv):
|
|||
'journal_id': fields.many2one('account.journal', 'Journal', required=True, relate=True,readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
|
||||
'check_total': fields.float('Total', digits=(16,2)),
|
||||
}
|
||||
_defaults = {
|
||||
'type': lambda *a: 'out_invoice',
|
||||
|
@ -263,8 +266,6 @@ class account_invoice(osv.osv):
|
|||
for inv in self.browse(cr, uid, ids):
|
||||
if inv.move_id:
|
||||
continue
|
||||
if inv.check_total <> inv.amount_total:
|
||||
raise osv.except_osv('Bad total !', 'Please verify the price of the invoice !\nThe real total does not match the computed total.')
|
||||
|
||||
company_currency = inv.account_id.company_id.currency_id.id
|
||||
# create the analytical lines
|
||||
|
@ -523,6 +524,24 @@ class account_invoice(osv.osv):
|
|||
return True
|
||||
account_invoice()
|
||||
|
||||
class account_invoice_supplier(osv.osv):
|
||||
_name = "account.invoice.supplier"
|
||||
_description = "Supplier invoice"
|
||||
_inherits = {'account.invoice': 'account_invoice_id'}
|
||||
_columns = {
|
||||
'account_invoice_id': fields.many2one('account.invoice', 'Account invoice', required=True),
|
||||
'check_total': fields.float('Total', digits=(16,2)),
|
||||
}
|
||||
|
||||
def action_move_create(self, cr, uid, ids, context={}):
|
||||
for inv in self.browse(cr, uid, ids):
|
||||
if inv.move_id:
|
||||
continue
|
||||
if inv.check_total <> inv.amount_total:
|
||||
raise osv.except_osv('Bad total !', 'Please verify the price of the invoice !\nThe real total does not match the computed total.')
|
||||
return super(account_invoice_supplier, self).action_move_create(cr, uid, ids, context=context)
|
||||
account_invoice_supplier()
|
||||
|
||||
class account_invoice_line(osv.osv):
|
||||
def _amount_line(self, cr, uid, ids, prop, unknow_none,unknow_dict):
|
||||
res = {}
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
import multi_company_account
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"name" : "Multi company for accounting module",
|
||||
"version" : "0.1",
|
||||
"author" : "Tiny",
|
||||
"depends" : ["base", "account", "multi_company"],
|
||||
"category" : "Generic Modules/Accounting",
|
||||
"init_xml" : [],
|
||||
"demo_xml" : ["multi_company_account_demo.xml",],
|
||||
"update_xml" : ["multi_company_account_data.xml", "multi_company_account_view.xml",],
|
||||
"active": False,
|
||||
"installable": True
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2007 TINY SPRL. (http://tiny.be) All Rights Reserved.
|
||||
# Fabien Pinckaers <fp@tiny.Be>
|
||||
#
|
||||
# WARNING: This program as such is intended to be used by professional
|
||||
# programmers who take the whole responsability of assessing all potential
|
||||
# consequences resulting from its eventual inadequacies and bugs
|
||||
# End users who are looking for a ready-to-use solution with commercial
|
||||
# garantees and support are strongly adviced to contract a Free Software
|
||||
# Service Company
|
||||
#
|
||||
# This program is Free Software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv, fields
|
||||
|
||||
class account_journal(osv.osv):
|
||||
_name = "account.journal"
|
||||
_inherit = "account.journal"
|
||||
_columns = {
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
|
||||
}
|
||||
account_journal()
|
||||
|
||||
class account_analytic_journal(osv.osv):
|
||||
_name = "account.analytic.journal"
|
||||
_inherit = "account.analytic.journal"
|
||||
_columns = {
|
||||
'company_id': fields.many2one('res.company', 'Company'),
|
||||
}
|
||||
_defaults = {
|
||||
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
|
||||
}
|
||||
account_analytic_journal()
|
||||
|
||||
class account_budget_post(osv.osv):
|
||||
_name = 'account.budget.post'
|
||||
_inherit = 'account.budget.post'
|
||||
_columns ={
|
||||
'company_id': fields.many2one('res.company', 'Company'),
|
||||
}
|
||||
_defaults = {
|
||||
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
|
||||
}
|
||||
account_budget_post()
|
||||
|
||||
class account_period(osv.osv):
|
||||
_name = 'account.period'
|
||||
_inherit = 'account.period'
|
||||
_columns = {
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
|
||||
}
|
||||
account_period()
|
||||
|
||||
class account_fiscalyear(osv.osv):
|
||||
_name = 'account.fiscalyear'
|
||||
_inherit = 'account.fiscalyear'
|
||||
_columns = {
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
|
||||
}
|
||||
account_fiscalyear()
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0"?>
|
||||
<terp>
|
||||
<data>
|
||||
|
||||
<record model="account.journal" id="account.sales_journal">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.journal" id="account.expenses_journal">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.journal" id="account.bank_journal">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</terp>
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0"?>
|
||||
<terp>
|
||||
<data noupdate="1">
|
||||
<record model="account.fiscalyear" id="account.data_fiscalyear">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
|
||||
<record model="account.period" id="account.period_1">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_2">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_3">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_4">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_5">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_6">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_7">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_8">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_9">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_10">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_11">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
<record model="account.period" id="account.period_12">
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
</record>
|
||||
</data>
|
||||
</terp>
|
|
@ -0,0 +1,65 @@
|
|||
<terp>
|
||||
<data>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_journal_form_multi_company">
|
||||
<field name="name">account.journal.form</field>
|
||||
<field name="model">account.journal</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="account.view_account_journal_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="user_id" position="after">
|
||||
<field name="company_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_analytic_journal_form_multi_company">
|
||||
<field name="name">account.analytic.journal.form</field>
|
||||
<field name="model">account.analytic.journal</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="account.view_account_analytic_journal_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="active" position="after">
|
||||
<field name="company_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_budget_post_form_multi_company">
|
||||
<field name="name">account.budget.post.form</field>
|
||||
<field name="model">account.budget.post</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="account.view_budget_post_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="sens" position="after">
|
||||
<field name="company_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_fiscalyear_form_multi_company">
|
||||
<field name="name">account.fiscalyear.form</field>
|
||||
<field name="model">account.fiscalyear</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="account.view_account_fiscalyear_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="date_stop" position="after">
|
||||
<field name="company_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_account_period_form_multi_company">
|
||||
<field name="name">account.period.form</field>
|
||||
<field name="model">account.period</field>
|
||||
<field name="type">form</field>
|
||||
<field name="inherit_id" ref="account.view_account_period_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="date_stop" position="after">
|
||||
<field name="company_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</terp>
|
|
@ -187,9 +187,10 @@ class purchase_order(osv.osv):
|
|||
if ol.product_id:
|
||||
a = ol.product_id.product_tmpl_id.property_account_expense
|
||||
if not a:
|
||||
a = ol.product_id.categ_id.property_account_expense_categ[0]
|
||||
else:
|
||||
a = a[0]
|
||||
a = ol.product_id.categ_id.property_account_expense_categ
|
||||
if not a:
|
||||
raise osv.except_osv('Error !', 'There is no income account define for this product: "%s" (id:%d)' % (line.product_id.name, line.product_id.id,))
|
||||
a = a[0]
|
||||
else:
|
||||
a = self.pool.get('ir.property').get(cr, uid, 'property_account_expense_categ', 'product.category')
|
||||
il.append((0, False, {
|
||||
|
|
|
@ -574,9 +574,10 @@ class sale_order_line(osv.osv):
|
|||
if line.product_id:
|
||||
a = line.product_id.product_tmpl_id.property_account_income
|
||||
if not a:
|
||||
a = line.product_id.categ_id.property_account_income_categ[0]
|
||||
else:
|
||||
a = a[0]
|
||||
a = line.product_id.categ_id.property_account_income_categ
|
||||
if not a:
|
||||
raise osv.except_osv('Error !', 'There is no income account define for this product: "%s" (id:%d)' % (line.product_id.name, line.product_id.id,))
|
||||
a = a[0]
|
||||
else:
|
||||
a = self.pool.get('ir.property').get(cr, uid, 'property_account_income_categ', 'product.category', context=context)
|
||||
uosqty = _get_line_qty(line)
|
||||
|
|
Loading…
Reference in New Issue