Fabien Pinckaers 2012-07-13 16:18:55 +02:00
commit 8d7f1c5b22
71 changed files with 2495 additions and 2431 deletions

View File

@ -1862,8 +1862,10 @@ class account_tax(osv.osv):
'applicable_type': fields.selection( [('true','Always'), ('code','Given by Python Code')], 'Applicability', required=True,
help="If not applicable (computed through a Python code), the tax won't appear on the invoice."),
'domain':fields.char('Domain', size=32, help="This field is only used if you develop your own module allowing developers to create specific taxes in a custom domain."),
'account_collected_id':fields.many2one('account.account', 'Invoice Tax Account'),
'account_paid_id':fields.many2one('account.account', 'Refund Tax Account'),
'account_collected_id':fields.many2one('account.account', 'Invoice Tax Account', help="Set the account that will be set by default on invoice tax lines for invoices. Leave empty to use the expense account."),
'account_paid_id':fields.many2one('account.account', 'Refund Tax Account', help="Set the account that will be set by default on invoice tax lines for refunds. Leave empty to use the expense account."),
'account_analytic_collected_id':fields.many2one('account.analytic.account', 'Invoice Tax Analytic Account', help="Set the analytic account that will be used by default on the invoice tax lines for invoices. Leave empty if you don't want to use an analytic account on the invoice tax lines by default."),
'account_analytic_paid_id':fields.many2one('account.analytic.account', 'Refund Tax Analytic Account', help="Set the analytic account that will be used by default on the invoice tax lines for refunds. Leave empty if you don't want to use an analytic account on the invoice tax lines by default."),
'parent_id':fields.many2one('account.tax', 'Parent Tax Account', select=True),
'child_ids':fields.one2many('account.tax', 'parent_id', 'Child Tax Accounts'),
'child_depend':fields.boolean('Tax on Children', help="Set if the tax computation is based on the computation of child taxes rather than on the total amount."),
@ -2001,6 +2003,8 @@ class account_tax(osv.osv):
'name':tax.description and tax.description + " - " + tax.name or tax.name,
'account_collected_id':tax.account_collected_id.id,
'account_paid_id':tax.account_paid_id.id,
'account_analytic_collected_id': tax.account_analytic_collected_id.id,
'account_analytic_paid_id': tax.account_analytic_paid_id.id,
'base_code_id': tax.base_code_id.id,
'ref_base_code_id': tax.ref_base_code_id.id,
'sequence': tax.sequence,
@ -2066,7 +2070,20 @@ class account_tax(osv.osv):
'taxes': [] # List of taxes, see compute for the format
}
"""
# By default, for each tax, tax amount will first be computed
# and rounded at the 'Account' decimal precision for each
# PO/SO/invoice line and then these rounded amounts will be
# summed, leading to the total amount for that tax. But, if the
# company has tax_calculation_rounding_method = round_globally,
# we still follow the same method, but we use a much larger
# precision when we round the tax amount for each line (we use
# the 'Account' decimal precision + 5), and that way it's like
# rounding after the sum of the tax amounts of each line
precision = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account')
tax_compute_precision = precision
if taxes and taxes[0].company_id.tax_calculation_rounding_method == 'round_globally':
tax_compute_precision += 5
totalin = totalex = round(price_unit * quantity, precision)
tin = []
tex = []
@ -2075,7 +2092,7 @@ class account_tax(osv.osv):
tex.append(tax)
else:
tin.append(tax)
tin = self.compute_inv(cr, uid, tin, price_unit, quantity, product=product, partner=partner)
tin = self.compute_inv(cr, uid, tin, price_unit, quantity, product=product, partner=partner, precision=tax_compute_precision)
for r in tin:
totalex -= r.get('amount', 0.0)
totlex_qty = 0.0
@ -2083,7 +2100,7 @@ class account_tax(osv.osv):
totlex_qty = totalex/quantity
except:
pass
tex = self._compute(cr, uid, tex, totlex_qty, quantity,product=product, partner=partner)
tex = self._compute(cr, uid, tex, totlex_qty, quantity, product=product, partner=partner, precision=tax_compute_precision)
for r in tex:
totalin += r.get('amount', 0.0)
return {
@ -2096,7 +2113,7 @@ class account_tax(osv.osv):
_logger.warning("Deprecated, use compute_all(...)['taxes'] instead of compute(...) to manage prices with tax included")
return self._compute(cr, uid, taxes, price_unit, quantity, product, partner)
def _compute(self, cr, uid, taxes, price_unit, quantity, product=None, partner=None):
def _compute(self, cr, uid, taxes, price_unit, quantity, product=None, partner=None, precision=None):
"""
Compute tax values for given PRICE_UNIT, QUANTITY and a buyer/seller ADDRESS_ID.
@ -2105,14 +2122,15 @@ class account_tax(osv.osv):
tax = {'name':'', 'amount':0.0, 'account_collected_id':1, 'account_paid_id':2}
one tax for each tax id in IDS and their children
"""
if not precision:
precision = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account')
res = self._unit_compute(cr, uid, taxes, price_unit, product, partner, quantity)
total = 0.0
precision_pool = self.pool.get('decimal.precision')
for r in res:
if r.get('balance',False):
r['amount'] = round(r.get('balance', 0.0) * quantity, precision_pool.precision_get(cr, uid, 'Account')) - total
r['amount'] = round(r.get('balance', 0.0) * quantity, precision) - total
else:
r['amount'] = round(r.get('amount', 0.0) * quantity, precision_pool.precision_get(cr, uid, 'Account'))
r['amount'] = round(r.get('amount', 0.0) * quantity, precision)
total += r['amount']
return res
@ -2160,6 +2178,8 @@ class account_tax(osv.osv):
'amount': amount,
'account_collected_id': tax.account_collected_id.id,
'account_paid_id': tax.account_paid_id.id,
'account_analytic_collected_id': tax.account_analytic_collected_id.id,
'account_analytic_paid_id': tax.account_analytic_paid_id.id,
'base_code_id': tax.base_code_id.id,
'ref_base_code_id': tax.ref_base_code_id.id,
'sequence': tax.sequence,
@ -2188,7 +2208,7 @@ class account_tax(osv.osv):
r['todo'] = 0
return res
def compute_inv(self, cr, uid, taxes, price_unit, quantity, product=None, partner=None):
def compute_inv(self, cr, uid, taxes, price_unit, quantity, product=None, partner=None, precision=None):
"""
Compute tax values for given PRICE_UNIT, QUANTITY and a buyer/seller ADDRESS_ID.
Price Unit is a VAT included price
@ -2198,15 +2218,15 @@ class account_tax(osv.osv):
tax = {'name':'', 'amount':0.0, 'account_collected_id':1, 'account_paid_id':2}
one tax for each tax id in IDS and their children
"""
if not precision:
precision = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account')
res = self._unit_compute_inv(cr, uid, taxes, price_unit, product, partner=None)
total = 0.0
obj_precision = self.pool.get('decimal.precision')
for r in res:
prec = obj_precision.precision_get(cr, uid, 'Account')
if r.get('balance',False):
r['amount'] = round(r['balance'] * quantity, prec) - total
r['amount'] = round(r['balance'] * quantity, precision) - total
else:
r['amount'] = round(r['amount'] * quantity, prec)
r['amount'] = round(r['amount'] * quantity, precision)
total += r['amount']
return res

View File

@ -34,8 +34,8 @@ class account_analytic_line(osv.osv):
'journal_id': fields.many2one('account.analytic.journal', 'Analytic Journal', required=True, ondelete='restrict', select=True),
'code': fields.char('Code', size=8),
'ref': fields.char('Ref.', size=64),
'currency_id': fields.related('move_id', 'currency_id', type='many2one', relation='res.currency', string='Account currency', store=True, help="The related account currency if not equal to the company one.", readonly=True),
'amount_currency': fields.related('move_id', 'amount_currency', type='float', string='Amount currency', store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True),
'currency_id': fields.related('move_id', 'currency_id', type='many2one', relation='res.currency', string='Account Currency', store=True, help="The related account currency if not equal to the company one.", readonly=True),
'amount_currency': fields.related('move_id', 'amount_currency', type='float', string='Amount Currency', store=True, help="The amount expressed in the related account currency if not equal to the company one.", readonly=True),
}
_defaults = {

View File

@ -43,6 +43,12 @@ class bank(osv.osv):
"Return the name to use when creating a bank journal"
return (bank.bank_name or '') + ' ' + bank.acc_number
def _prepare_name_get(self, cr, uid, bank_type_obj, bank_obj, context=None):
"""Add ability to have %(currency_name)s in the format_layout of
res.partner.bank.type"""
bank_obj._data[bank_obj.id]['currency_name'] = bank_obj.currency_id and bank_obj.currency_id.name or ''
return super(bank, self)._prepare_name_get(cr, uid, bank_type_obj, bank_obj, context=context)
def post_write(self, cr, uid, ids, context={}):
if isinstance(ids, (int, long)):
ids = [ids]

View File

@ -756,7 +756,7 @@ class account_invoice(osv.osv):
for tax in inv.tax_line:
if tax.manual:
continue
key = (tax.tax_code_id.id, tax.base_code_id.id, tax.account_id.id)
key = (tax.tax_code_id.id, tax.base_code_id.id, tax.account_id.id, tax.account_analytic_id.id)
tax_key.append(key)
if not key in compute_taxes:
raise osv.except_osv(_('Warning !'), _('Global taxes defined, but they are not in invoice lines !'))
@ -1578,6 +1578,7 @@ class account_invoice_tax(osv.osv):
'invoice_id': fields.many2one('account.invoice', 'Invoice Line', ondelete='cascade', select=True),
'name': fields.char('Tax Description', size=64, required=True),
'account_id': fields.many2one('account.account', 'Tax Account', required=True, domain=[('type','<>','view'),('type','<>','income'), ('type', '<>', 'closed')]),
'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic account'),
'base': fields.float('Base', digits_compute=dp.get_precision('Account')),
'amount': fields.float('Amount', digits_compute=dp.get_precision('Account')),
'manual': fields.boolean('Manual'),
@ -1648,14 +1649,16 @@ class account_invoice_tax(osv.osv):
val['base_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['base'] * tax['base_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False)
val['tax_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['amount'] * tax['tax_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False)
val['account_id'] = tax['account_collected_id'] or line.account_id.id
val['account_analytic_id'] = tax['account_analytic_collected_id']
else:
val['base_code_id'] = tax['ref_base_code_id']
val['tax_code_id'] = tax['ref_tax_code_id']
val['base_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['base'] * tax['ref_base_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False)
val['tax_amount'] = cur_obj.compute(cr, uid, inv.currency_id.id, company_currency, val['amount'] * tax['ref_tax_sign'], context={'date': inv.date_invoice or time.strftime('%Y-%m-%d')}, round=False)
val['account_id'] = tax['account_paid_id'] or line.account_id.id
val['account_analytic_id'] = tax['account_analytic_paid_id']
key = (val['tax_code_id'], val['base_code_id'], val['account_id'])
key = (val['tax_code_id'], val['base_code_id'], val['account_id'], val['account_analytic_id'])
if not key in tax_grouped:
tax_grouped[key] = val
else:
@ -1687,7 +1690,8 @@ class account_invoice_tax(osv.osv):
'price': t['amount'] or 0.0,
'account_id': t['account_id'],
'tax_code_id': t['tax_code_id'],
'tax_amount': t['tax_amount']
'tax_amount': t['tax_amount'],
'account_analytic_id': t['account_analytic_id'],
})
return res

View File

@ -98,6 +98,7 @@
<field name="name"/>
<field name="sequence"/>
<field name="account_id" groups="account.group_account_user"/>
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" groups="analytic.group_analytic_accounting"/>
<field name="manual"/>
<field name="amount"/>
<field name="base" readonly="0"/>
@ -215,6 +216,7 @@
<tree editable="bottom" string="Taxes">
<field name="name"/>
<field name="account_id" groups="account.group_account_invoice"/>
<field name="account_analytic_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" groups="analytic.group_analytic_accounting"/>
<field name="base" on_change="base_change(base,parent.currency_id,parent.company_id,parent.date_invoice)" readonly="1"/>
<field name="amount" on_change="amount_change(amount,parent.currency_id,parent.company_id,parent.date_invoice)"/>
@ -269,9 +271,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>
@ -404,9 +406,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -909,9 +909,9 @@
<field name="amount" attrs="{'readonly':[('type','in',('none', 'code', 'balance'))]}"/>
<separator colspan="4" string="Accounting Information"/>
<field name="account_collected_id" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<label colspan="2" nolabel="1" string="Keep empty to use the income account"/>
<field name="account_analytic_collected_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', company_id), ('parent_id', '&lt;&gt;', False)]" groups="analytic.group_analytic_accounting"/>
<field name="account_paid_id" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<label colspan="2" nolabel="1" string="Keep empty to use the expense account"/>
<field name="account_analytic_paid_id" domain="[('type','&lt;&gt;','view'), ('company_id', '=', company_id), ('parent_id', '&lt;&gt;', False)]" groups="analytic.group_analytic_accounting"/>
<separator colspan="4" string="Tax Declaration: Invoices"/>
<field name="base_code_id"/>
<field name="base_sign"/>

View File

@ -25,6 +25,11 @@ class res_company(osv.osv):
_inherit = "res.company"
_columns = {
'expects_chart_of_accounts': fields.boolean('Expects a Chart of Accounts'),
'tax_calculation_rounding_method': fields.selection([
('round_per_line', 'Round per Line'),
('round_globally', 'Round Globally'),
], 'Tax Calculation Rounding Method',
help="If you select 'Round per Line' : for each tax, the tax amount will first be computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, leading to the total amount for that tax. If you select 'Round Globally': for each tax, the tax amount will be computed for each PO/SO/invoice line, then these amounts will be summed and eventually this total tax amount will be rounded. If you sell with tax included, you should choose 'Round per line' because you certainly want the sum of your tax-included line subtotals to be equal to the total amount with taxes."),
'paypal_account': fields.char("Paypal Account", size=128, help="Paypal username (usually email) for receiving online payments."),
'overdue_msg': fields.text('Overdue Payments Message', translate=True),
'property_reserve_and_surplus_account': fields.property(
@ -39,6 +44,7 @@ class res_company(osv.osv):
_defaults = {
'expects_chart_of_accounts': True,
'tax_calculation_rounding_method': 'round_per_line',
'overdue_msg': '''Dear Sir, dear Madam,
Our records indicate that some payments on your account are still due. Please find details below.

View File

@ -24,6 +24,7 @@
<field name="arch" type="xml">
<field name="currency_id" position="after">
<field name="property_reserve_and_surplus_account" colspan="2"/>
<field name="tax_calculation_rounding_method"/>
<field name="paypal_account" placeholder="sales@openerp.com"/>
</field>
</field>

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-06-20 16:17+0000\n"
"Last-Translator: Jeff Wang <wjfonhand@hotmail.com>\n"
"PO-Revision-Date: 2012-07-11 03:05+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-22 04:44+0000\n"
"X-Generator: Launchpad (build 15461)\n"
"X-Launchpad-Export-Date: 2012-07-12 04:41+0000\n"
"X-Generator: Launchpad (build 15593)\n"
#. module: account
#: view:account.invoice.report:0
@ -4963,7 +4963,7 @@ msgstr "资产负债表"
#: view:account.general.journal:0
#: model:ir.ui.menu,name:account.menu_account_general_journal
msgid "General Journals"
msgstr "一般账簿"
msgstr "总账账簿"
#. module: account
#: field:account.journal,allow_date:0
@ -5702,7 +5702,7 @@ msgstr "发票税科目"
#: model:ir.actions.act_window,name:account.action_account_general_journal
#: model:ir.model,name:account.model_account_general_journal
msgid "Account General Journal"
msgstr "一般账簿"
msgstr "科目总账账簿"
#. module: account
#: field:account.payment.term.line,days:0
@ -10184,7 +10184,7 @@ msgstr "周期次数"
#: report:account.general.journal:0
#: model:ir.actions.report.xml,name:account.account_general_journal
msgid "General Journal"
msgstr "一般账簿"
msgstr "总账账簿"
#. module: account
#: view:account.invoice:0

View File

@ -241,19 +241,33 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Project line" version="7.0">
<group col="4">
<field name="name"/>
<field name="account_id"/>
<field name="date" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
<field name="journal_id"/>
<field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
<field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id, journal_id)"/>
<field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
<field invisible="True" name="general_account_id"/>
<field name="amount"/>
<field name="currency_id" />
<field name="amount_currency" />
<field name="company_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
<group>
<group>
<field name="name"/>
<field name="account_id"/>
<field name="journal_id"/>
</group>
<group>
<field name="date" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
<field name="company_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)"/>
</group>
<group string="Amount">
<field name="amount"/>
<label for="amount_currency"/>
<div>
<field name="amount_currency" class="oe_inline"/>
<field name="currency_id" class="oe_inline"/>
</div>
<field invisible="1" name="general_account_id"/>
</group>
<group string="Product Information">
<field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id, journal_id)"/>
<label for="unit_amount"/>
<div>
<field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
<field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, company_id, product_uom_id)" class="oe_inline"/>
</div>
</group>
</group>
</form>
</field>

View File

@ -49,6 +49,12 @@ class account_config_settings(osv.osv_memory):
'has_chart_of_accounts': fields.boolean('Company has a chart of accounts'),
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', domain="[('visible','=', True)]"),
'code_digits': fields.integer('# of Digits', help="No. of Digits to use for account code"),
'tax_calculation_rounding_method': fields.related('company_id',
'tax_calculation_rounding_method', type='selection', selection=[
('round_per_line', 'Round per Line'),
('round_globally', 'Round Globally'),
], string='Tax Calculation Rounding Method',
help="If you select 'Round per Line' : for each tax, the tax amount will first be computed and rounded for each PO/SO/invoice line and then these rounded amounts will be summed, leading to the total amount for that tax. If you select 'Round Globally': for each tax, the tax amount will be computed for each PO/SO/invoice line, then these amounts will be summed and eventually this total tax amount will be rounded. If you sell with tax included, you should choose 'Round per line' because you certainly want the sum of your tax-included line subtotals to be equal to the total amount with taxes."),
'sale_tax': fields.many2one("account.tax.template", "Default Sale Tax"),
'purchase_tax': fields.many2one("account.tax.template", "Default Purchase Tax"),
'sale_tax_rate': fields.float('Sales Tax (%)'),
@ -152,6 +158,7 @@ class account_config_settings(osv.osv_memory):
'has_chart_of_accounts': has_chart_of_accounts,
'has_fiscal_year': bool(fiscalyear_count),
'chart_template_id': False,
'tax_calculation_rounding_method': company.tax_calculation_rounding_method,
}
# update journals and sequences
for journal_type in ('sale', 'sale_refund', 'purchase', 'purchase_refund'):

View File

@ -76,6 +76,7 @@
<group>
<field name="default_purchase_tax" domain="[('type_tax_use','=','purchase'), ('company_id','=',company_id)]"
attrs="{'invisible': [('has_chart_of_accounts','=',False)]}"/>
<field name="tax_calculation_rounding_method"/>
<field name="module_account_asset"/>
<field name="module_account_budget"/>
</group>

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-10 05:34+0000\n"
"X-Generator: Launchpad (build 15558)\n"
"X-Launchpad-Export-Date: 2012-07-11 05:15+0000\n"
"X-Generator: Launchpad (build 15593)\n"
#. module: account_asset
#: view:account.asset.asset:0

View File

@ -111,9 +111,9 @@
</page>
</notebook>
</sheet>
<footer>
<field name="message_ids" widget="mail_thread"/>
</footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>

View File

@ -257,9 +257,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>
@ -430,9 +430,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -167,9 +167,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>
@ -320,9 +320,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -43,9 +43,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -15,13 +15,13 @@
</td><td>
<field name="charge_expenses"/>
</td><td>
<field class="oe_form_inline" name="est_expenses" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
<field class="oe_inline" name="est_expenses" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
</td><td>
<field class="oe_form_inline" name="expense_invoiced" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
<field class="oe_inline" name="expense_invoiced" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
</td><td>
<field class="oe_form_inline" name="remaining_expense" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
<field class="oe_inline" name="remaining_expense" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
</td><td>
<field class="oe_form_inline" name="expense_to_invoice" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
<field class="oe_inline" name="expense_to_invoice" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
</td><td>
<button name="open_hr_expense" string="All Expenses" type="object" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
<button name="hr_to_invoice_expense" string="Expenses to Invoice" type="object" attrs="{'invisible': [('charge_expenses','=',False)]}"/>

View File

@ -15,7 +15,9 @@
<group string="Validity">
<label for="date_start" string="Duration"/>
<div name="duration">
<field name="date_start" class="oe_inline"/> - <field name="date" class="oe_inline"/>
<field name="date_start" class="oe_inline"/>
<label attrs="{'invisible':[('date','=',False)]}" class="oe_inline" string=" - "/>
<field name="date" class="oe_inline"/>
</div>
<label for="quantity_max"/>
<div>

View File

@ -40,7 +40,7 @@ openerp.anonymous = function(instance) {
var am = p.action_manager;
p.$element.find('.oe_leftbar').hide();
am.do_action({type:'ir.actions.client', tag:'login'});
am.client_widget.on('login', p, p.restart);
am.inner_widget.on('login', p, p.restart);
});
}
});

View File

@ -245,9 +245,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-06-25 05:03+0000\n"
"Last-Translator: Tomomi Mengelberg <tomomi.mengelberg@aquasys.co.jp>\n"
"PO-Revision-Date: 2012-07-12 01:34+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-26 05:22+0000\n"
"X-Generator: Launchpad (build 15482)\n"
"X-Launchpad-Export-Date: 2012-07-13 04:46+0000\n"
"X-Generator: Launchpad (build 15614)\n"
#. module: base_setup
#: field:user.preferences.config,menu_tips:0
@ -200,17 +200,17 @@ msgstr "どのように顧客を呼びますか"
#. module: base_setup
#: field:migrade.application.installer.modules,quickbooks_ippids:0
msgid "Quickbooks Ippids"
msgstr "Quickbooks lppids"
msgstr "QuickBooksのIPP / IDS"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Client"
msgstr "取引先"
msgstr "顧客"
#. module: base_setup
#: field:migrade.application.installer.modules,import_saleforce:0
msgid "Import Saleforce"
msgstr "Saleforceを取り込む"
msgstr "Salesforceのインポート"
#. module: base_setup
#: field:user.preferences.config,context_tz:0
@ -249,22 +249,22 @@ msgstr "user.preferences.config"
#. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_config_access_other_user
msgid "Create Additional Users"
msgstr "追加ユーザを作成します。"
msgstr "追加ユーザの作成"
#. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_import_create_installer
msgid "Create or Import Customers"
msgstr "顧客を作成または取り込みます。"
msgstr "顧客の作成 / インポート"
#. module: base_setup
#: field:migrade.application.installer.modules,import_sugarcrm:0
msgid "Import Sugarcrm"
msgstr "SugarCRMを取り込みます。"
msgstr "SugarCRMのインポート"
#. module: base_setup
#: help:product.installer,customers:0
msgid "Import or create customers"
msgstr "顧客を取り込みまたは作成します。"
msgstr "顧客の作成 / インポート"
#. module: base_setup
#: selection:user.preferences.config,view:0
@ -279,7 +279,7 @@ msgstr "SugarCRMを取り込むために"
#. module: base_setup
#: selection:base.setup.terminology,partner:0
msgid "Partner"
msgstr "パートナ"
msgstr "パートナ"
#. module: base_setup
#: view:base.setup.terminology:0

View File

@ -212,9 +212,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>
@ -520,11 +520,11 @@
<div>
<field name="street" placeholder="Street..."/>
<field name="street2"/>
<div>
<field name="zip" class="oe_inline" placeholder="ZIP"/>
<field name="city" class="oe_inline" placeholder="City"/>
<div class="address_format">
<field name="city" placeholder="City" style="width: 40%%"/>
<field name="state_id" class="oe_no_button" placeholder="State" style="width: 24%%"/>
<field name="zip" placeholder="ZIP" style="width: 34%%"/>
</div>
<field name="state_id" placeholder="State"/>
<field name="country_id" placeholder="Country"/>
</div>
</group>
@ -532,8 +532,8 @@
<group>
<label for="contact_name" />
<div>
<field name="contact_name" class="oe_inline"/>,
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline"/>
<field name="contact_name" class="oe_inline"/>
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline oe_no_button"/>
</div>
<field name="function" />
<field name="mobile"/>
@ -564,9 +564,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -145,9 +145,9 @@
<field name="description" placeholder="Description..." />
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -168,9 +168,9 @@
</notebook>
</group>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -128,9 +128,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -99,9 +99,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -189,9 +189,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</form>
</field>
</record>
@ -484,9 +484,9 @@
</group>
</group>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -309,6 +309,10 @@ class res_users(osv.osv):
return user_id
_columns = {
'employee_ids': fields.one2many('hr.employee', 'user_id', 'Related employees'),
}
res_users()

View File

@ -122,9 +122,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -418,7 +418,7 @@ class resource_calendar_leaves(osv.osv):
_inherit = "resource.calendar.leaves"
_description = "Leave Detail"
_columns = {
'holiday_id': fields.many2one("hr.holidays", "Holiday"),
'holiday_id': fields.many2one("hr.holidays", "Leave Request"),
}
resource_calendar_leaves()

View File

@ -146,9 +146,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</form>
</field>
</record>
@ -193,9 +193,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</form>
</field>
</record>
@ -501,7 +501,7 @@
<field name="type">form</field>
<field name="inherit_id" ref="resource.resource_calendar_leave_form"/>
<field name="arch" type="xml">
<field name="date_to" position="after">
<field name="name" position="after">
<field name="holiday_id"/>
</field>
</field>

View File

@ -191,9 +191,9 @@
<separator string="Application Summary"/>
<field name="description" placeholder="Feedback of interviews..."/>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -123,7 +123,7 @@
<!-- Menus -->
<record id="action_hr_analytic_timesheet_open_tree" model="ir.actions.act_window">
<field name="name">Bill Tasks Works</field>
<field name="name">Invoice Tasks Work</field>
<field name="res_model">account.analytic.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>

File diff suppressed because it is too large Load Diff

View File

@ -80,9 +80,9 @@
<label for="description"/><newline/>
<field name="description"/>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

File diff suppressed because it is too large Load Diff

View File

@ -72,10 +72,10 @@
</group>
</group>
</sheet>
<footer class="openerp_mail_group_footer">
<div class="oe_chatter oe_mail_group_footer">
<field name="message_ids" widget="mail_thread"
options='{"thread_level": 1}'/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -9,10 +9,10 @@
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//sheet" position="after">
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"
options='{"thread_level": 1}'/>
</footer>
</div>
</xpath>
</field>
</record>

View File

@ -16,7 +16,7 @@
}
/* Resize footer width */
.openerp .oe_form footer.openerp_mail_group_footer {
.openerp .oe_form div.oe_mail_group_footer {
max-width: 80%;
}

View File

@ -52,38 +52,41 @@
<field name="model">product.product</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Membership products">
<group col="6">
<field name="name"/>
<field name="default_code"/>
<field name="active"/>
<field name="membership" invisible="1"/>
<field name="membership_date_from" required="1"/>
<field name="membership_date_to" required="1"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<notebook colspan="4">
<page string="General">
<separator string="Accounting Info" colspan="2"/>
<separator string="Categorization" colspan="2"/>
<field name="list_price" string="Membership Fee"/>
<field name="type" />
<field name="property_account_income" domain="[('type', '!=', 'view')]"/>
<field name="categ_id"/>
<separator string="Sale Taxes" colspan="2"/>
<newline/>
<field name="taxes_id" nolabel="1" colspan="4"/>
</page>
<page string="Description">
<separator string="Description"/>
<field colspan="4" name="description" nolabel="1"/>
<separator string="Sale Description"/>
<field colspan="4" name="description_sale" nolabel="1"/>
<separator string="Purchase Description"/>
<field colspan="4" name="description_purchase" nolabel="1"/>
</page>
</notebook>
</form>
<form string="Membership products" version="7.0">
<sheet>
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name"/>
</h1>
<group>
<group>
<field name="default_code"/>
<field name="categ_id"/>
<field name="membership" invisible="1"/>
<field name="company_id"
groups="base.group_multi_company"
widget="selection"/>
<field name="active"/>
</group>
<group>
<label for="membership_date_from" string="Membership Duration"/>
<div>
<field name="membership_date_from" required="1" class="oe_inline"/> -
<field name="membership_date_to" required="1" class="oe_inline"/>
</div>
<field name="list_price" string="Membership Fee"/>
<field
name="property_account_income"
domain="[('type', '!=', 'view')]"/>
<field name="taxes_id" widget="many2many_tags" string="Taxes"/>
</group>
</group>
<label for="description"/>
<field colspan="4" name="description" placeholder="Add a description..."/>
<label for="description_sale"/>
<field colspan="4" name="description_sale" placeholder="This note will be displayed on quotations..."/>
</sheet>
</form>
</field>
</record>

View File

@ -795,9 +795,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -111,9 +111,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-06-08 02:57+0000\n"
"PO-Revision-Date: 2012-07-11 05:37+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-09 05:39+0000\n"
"X-Generator: Launchpad (build 15376)\n"
"X-Launchpad-Export-Date: 2012-07-12 04:40+0000\n"
"X-Generator: Launchpad (build 15593)\n"
#. module: point_of_sale
#: field:report.transaction.pos,product_nb:0
@ -765,7 +765,7 @@ msgstr "小計の合計"
#. module: point_of_sale
#: field:pos.order,lines:0
msgid "Order Lines"
msgstr "受注行"
msgstr "オーダー行"
#. module: point_of_sale
#: view:report.transaction.pos:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-07-02 15:03+0000\n"
"PO-Revision-Date: 2012-07-12 08:29+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-03 05:35+0000\n"
"X-Generator: Launchpad (build 15531)\n"
"X-Launchpad-Export-Date: 2012-07-13 04:46+0000\n"
"X-Generator: Launchpad (build 15614)\n"
#. module: point_of_sale
#: field:report.transaction.pos,product_nb:0
@ -1393,7 +1393,7 @@ msgstr "Kassabon afdrukken"
#. module: point_of_sale
#: field:pos.make.payment,journal:0
msgid "Payment Mode"
msgstr "Betalingsvorm"
msgstr "Betaalwijze"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.lays_paprika_45g_product_template

View File

@ -93,9 +93,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -155,7 +155,6 @@ class product_pricelist(osv.osv):
currency_obj = self.pool.get('res.currency')
product_obj = self.pool.get('product.product')
product_template_obj = self.pool.get('product.template')
product_category_obj = self.pool.get('product.category')
product_uom_obj = self.pool.get('product.uom')
supplierinfo_obj = self.pool.get('product.supplierinfo')
@ -246,7 +245,7 @@ class product_pricelist(osv.osv):
price = 0.0
if sinfo:
qty_in_product_uom = qty
product_default_uom = product_template_obj.read(cr, uid, [tmpl_id], ['uom_id'])[0]['uom_id'][0]
product_default_uom = product_obj.read(cr, uid, [product_id], ['uom_id'])[0]['uom_id'][0]
supplier = supplierinfo_obj.browse(cr, uid, sinfo, context=context)[0]
seller_uom = supplier.product_uom and supplier.product_uom.id or False
if seller_uom and product_default_uom and product_default_uom != seller_uom:

View File

@ -559,8 +559,8 @@ class product_product(osv.osv):
return False
def _check_ean_key(self, cr, uid, ids, context=None):
for product in self.browse(cr, uid, ids, context=context):
res = check_ean(product.ean13)
for product in self.read(cr, uid, ids, ['ean13'], context=context):
res = check_ean(product['ean13'])
return res
_constraints = [(_check_ean_key, 'Error: Invalid ean code', ['ean13'])]

View File

@ -183,9 +183,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -47,7 +47,6 @@ class sale_order_line(osv.osv):
item_obj = self.pool.get('product.pricelist.item')
price_type_obj = self.pool.get('product.price.type')
product_obj = self.pool.get('product.product')
template_obj = self.pool.get('product.template')
field_name = 'list_price'
if res_dict.get('item_id',False) and res_dict['item_id'].get(pricelist,False):
@ -57,9 +56,7 @@ class sale_order_line(osv.osv):
field_name = price_type_obj.browse(cr, uid, item_base).field
product = product_obj.browse(cr, uid, product_id, context)
product_tmpl_id = product.product_tmpl_id.id
product_read = template_obj.read(cr, uid, product_tmpl_id, [field_name], context)
product_read = product_obj.read(cr, uid, product_id, [field_name], context=context)
factor = 1.0
if uom and uom != product.uom_id.id:
@ -110,7 +107,6 @@ class account_invoice_line(osv.osv):
item_obj = self.pool.get('product.pricelist.item')
price_type_obj = self.pool.get('product.price.type')
product_obj = self.pool.get('product.product')
template_obj = self.pool.get('product.template')
field_name = 'list_price'
if res_dict.get('item_id',False) and res_dict['item_id'].get(pricelist,False):
@ -120,9 +116,7 @@ class account_invoice_line(osv.osv):
field_name = price_type_obj.browse(cr, uid, item_base).field
product = product_obj.browse(cr, uid, product_id, context)
product_tmpl_id = product.product_tmpl_id.id
product_read = template_obj.read(cr, uid, product_tmpl_id, [field_name], context)
product_read = product_obj.read(cr, uid, product_id, [field_name], context=context)
factor = 1.0
if uom and uom != product.uom_id.id:

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-10 05:33+0000\n"
"X-Generator: Launchpad (build 15558)\n"
"X-Launchpad-Export-Date: 2012-07-11 05:14+0000\n"
"X-Generator: Launchpad (build 15593)\n"
#. module: project
#: view:report.project.task.user:0

View File

@ -714,14 +714,14 @@ class task(base_stage, osv.osv):
'parent_ids': fields.many2many('project.task', 'project_task_parent_rel', 'task_id', 'parent_id', 'Parent Tasks'),
'child_ids': fields.many2many('project.task', 'project_task_parent_rel', 'parent_id', 'task_id', 'Delegated Tasks'),
'notes': fields.text('Notes'),
'planned_hours': fields.float('Planned Hours', help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'),
'planned_hours': fields.float('Initially Planned Hours', help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'),
'effective_hours': fields.function(_hours_get, string='Hours Spent', multi='hours', help="Computed using the sum of the task work done.",
store = {
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10),
'project.task.work': (_get_task, ['hours'], 10),
}),
'remaining_hours': fields.float('Remaining Hours', digits=(16,2), help="Total remaining time, can be re-estimated periodically by the assignee of the task."),
'total_hours': fields.function(_hours_get, string='Total Hours', multi='hours', help="Computed as: Time Spent + Remaining Time.",
'total_hours': fields.function(_hours_get, string='Total', multi='hours', help="Computed as: Time Spent + Remaining Time.",
store = {
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10),
'project.task.work': (_get_task, ['hours'], 10),
@ -1222,7 +1222,7 @@ class account_analytic_account(osv.osv):
_inherit = 'account.analytic.account'
_description = 'Analytic Account'
_columns = {
'use_tasks': fields.boolean('Tasks Management',help="If check,this contract will be available in the project menu and you will be able to manage tasks or track issues"),
'use_tasks': fields.boolean('Tasks Mgmt.',help="If check,this contract will be available in the project menu and you will be able to manage tasks or track issues"),
'company_uom_id': fields.related('company_id', 'project_time_mode_id', type='many2one', relation='product.uom'),
}

View File

@ -82,17 +82,12 @@
<h1>
<field name="name" string="Project Name"/>
</h1>
<label for="parent_id" class="oe_edit_only" string="Parent Project"/>
<h2>
<field name="parent_id" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
</h2>
<group>
<group>
<field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
<field name="user_id" string="Project Manager" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
<field name="analytic_account_id" invisible="1" required="0"/>
<field name="parent_id" invisible="1" string="Parent" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
<field name="privacy_visibility"/>
<field name="analytic_account_id" invisible="1" required="0"/>
</group>
<group>
<table>
@ -139,6 +134,7 @@
<field name="priority"/>
<field name="active" attrs="{'invisible':[('state','in',['open', 'pending', 'template'])]}"/>
<field name="currency_id" groups="base.group_multi_company" required="1"/>
<field name="parent_id" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
</group>
</group>
</page>
@ -147,9 +143,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>
@ -404,11 +400,9 @@
states="cancel,done"/>
-->
<button name="%(action_project_task_reevaluate)d" string="Reactivate" type="action"
states="done" context="{'button_reactivate':True}" class="oe_highlight"/>
<button name="%(action_project_task_reevaluate)d" string="Reactivate" type="action"
states="cancelled" context="{'button_reactivate':True}"/>
states="cancelled,done" context="{'button_reactivate':True}"/>
<button name="action_close" string="Done" type="object"
states="draft,open,pending"/>
states="draft,open,pending" class="oe_highlight"/>
<button name="do_pending" string="Pending" type="object"
states="open"/>
<button name="%(action_project_task_delegate)d" string="Delegate" type="action"
@ -417,7 +411,7 @@
states="draft,open,pending"/>
<button name="stage_previous" string="Previous Stage" type="object"
states="open,pending" icon="gtk-go-back" attrs="{'invisible': [('stage_id','=', False)]}"/>
<button name="stage_next" string="Next Stage" type="object"
<button name="stage_next" string="Next Stage" type="object" class="oe_highlight"
states="open,pending" icon="gtk-go-forward" attrs="{'invisible': [('stage_id','=', False)]}"/>
</span>
<field name="stage_id" widget="statusbar"/>
@ -427,23 +421,16 @@
<h1>
<field name="name"/>
</h1>
<label for="project_id" class="oe_edit_only"/>
<h2>
<field name="project_id" on_change="onchange_project(project_id)"/>
</h2>
<group>
<group>
<field name="project_id" on_change="onchange_project(project_id)"/>
<field name="user_id" attrs="{'readonly':[('state','in',['done', 'cancelled'])]}"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
<group>
<field name="date_deadline" attrs="{'readonly':[('state','in',['done', 'cancelled'])]}"/>
<field name="planned_hours" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}"
groups="project.group_time_work_estimation_tasks"
on_change="onchange_planned(planned_hours, effective_hours)"/>
<field name="progress" widget="progressbar"
groups="project.group_time_work_estimation_tasks"
invisible="1"/>
groups="project.group_time_work_estimation_tasks"/>
</group>
</group>
<notebook>
@ -457,14 +444,15 @@
<field name="hours" widget="float_time" sum="Spent Hours"/>
</tree>
</field>
<group class="oe_subtotal_footer oe_right" name="project_hours" groups="project.group_time_work_estimation_tasks">
<group>
<group class="oe_subtotal_footer oe_right" name="project_hours" groups="project.group_time_work_estimation_tasks">
<field name="effective_hours" widget="float_time"/>
<label for="remaining_hours" string="Remaining" groups="project.group_time_work_estimation_tasks"/>
<div>
<button name="%(action_project_task_reevaluate)d" string="Reevaluate" type="action" target="new" states="open,pending" icon="gtk-edit"/>
<field name="remaining_hours" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}" groups="project.group_time_work_estimation_tasks"/>
<field name="remaining_hours" widget="float_time" attrs="{'readonly':[('state','in',('done','cancelled'))]}" groups="project.group_time_work_estimation_tasks"/>
</div>
<field name="total_hours" widget="float_time" class="oe_subtotal_footer_separator"/>
</group>
</group>
<div class="oe_clear"/>
</page>
@ -490,14 +478,17 @@
<field name="priority" groups="base.group_user"/>
<field name="sequence"/>
<field name="partner_id"/>
<field name="planned_hours" widget="float_time" attrs="{'readonly':[('state','!=','draft')]}"
groups="project.group_time_work_estimation_tasks"
on_change="onchange_planned(planned_hours, effective_hours)"/>
<field name="state" groups="base.group_no_one"/>
</group>
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -119,26 +119,35 @@
<sheet string="Issue">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
<label for="project_id" class="oe_edit_only"/>
<h2><field name="project_id" required="True" on_change="on_change_project(project_id)"/></h2>
<group>
<group>
<field name="user_id"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)"/>
<field name="email_from"/>
</group><group>
<field name="task_id" on_change="onchange_task_id(task_id)"/>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'project.issue')]"/>
<field name="version_id" widget="selection"/>
</group>
<group>
<field name="priority"/>
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
<field name="state" groups="base.group_no_one"/>
<field name="project_id" required="True" on_change="on_change_project(project_id)"/>
<label for="task_id"/>
<div>
<field name="task_id" on_change="onchange_task_id(task_id)" class="oe_inline"/>
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}" class="oe_inline"/>
</div>
</group>
</group>
<field name="description" placeholder="Add a description..."/>
<notebook groups="base.group_no_one">
<page string="Extra Info">
<notebook>
<page string="Description">
<group>
<group>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'project.issue')]"/>
</group>
<group>
<field name="version_id" widget="selection"/>
</group>
</group>
<field name="description" placeholder="Add a description..."/>
</page>
<page string="Extra Info" groups="base.group_no_one">
<group col="4" colspan="4">
<separator string="Statistics" colspan="4" col="4"/>
<field name="day_open"/>
@ -153,12 +162,16 @@
<field name="id"/>
<field name="active"/>
</group>
<group colspan="4" col="4">
<separator string="Status" colspan="4"/>
<field name="state" groups="base.group_no_one" string="Status"/>
</group>
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -10,11 +10,14 @@
<field name="project_id" position="attributes">
<attribute name="on_change">on_change_project(project_id)</attribute>
</field>
<xpath expr="//notebook" position="before">
<field name="analytic_account_id"
domain="[('parent_id','!=',False),('partner_id', '=', partner_id),('type', '!=', 'view')]"
on_change='on_change_account_id(analytic_account_id)'/>
</xpath>
<field name="active" position="after">
<newline/>
<group colspan="4">
<field name="analytic_account_id"
domain="[('parent_id','!=',False),('partner_id', '=', partner_id),('type', '!=', 'view')]"
on_change='on_change_account_id(analytic_account_id)'/>
</group>
</field>
<xpath expr="//notebook/page[@string='Extra Info']" position="before">
<page string="Worklogs">
<field name="timesheet_ids" colspan="4" nolabel="1" context="{'default_user_id' : user_id, 'default_account_id' : analytic_account_id}">

View File

@ -155,20 +155,21 @@
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
<label for="project_id" class="oe_edit_only"/>
<h2>
<field name="project_id" on_change="onchange_project(project_id)" colspan="3"/>
</h2>
</div>
<group>
<label for="date_start" string="Duration"/>
<div>
<div>
<field name="duration" class="oe_inline"/>
<field name="product_uom" class="oe_inline"/>
</div>
<field name="date_start" class="oe_inline"/><label string=" - " class="oe_inline"/><field name="date_end" class="oe_inline"/>
</div>
<group>
<label for="date_start" string="Duration"/>
<div>
<div>
<field name="duration" class="oe_inline"/>
<field name="product_uom" class="oe_inline"/>
</div>
<field name="date_start" class="oe_inline"/><label string=" - " class="oe_inline"/><field name="date_end" class="oe_inline"/>
</div>
</group>
<group>
<field name="project_id" on_change="onchange_project(project_id)"/>
</group>
</group>
<notebook>
<page string="Planning of Users">
@ -211,10 +212,9 @@
</group>
<group>
<field name="sequence"/>
<field name="user_force_ids" widget="many2many_tags"/>
</group>
</group>
<separator string="Force Assigned Users"/>
<field name="user_force_ids" widget="many2many_tags" />
<separator string="Previous Phases"/>
<field name="previous_phase_ids"/>
<separator string="Next Phases"/>
@ -327,7 +327,7 @@
<field name="type">form</field>
<field name="inherit_id" ref="project.view_task_form2"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='effective_hours']" position="after">
<xpath expr="//field[@name='user_id']" position="after">
<field name="phase_id" context="{'default_project_id' : project_id}"/>
</xpath>
</field>

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-06-24 16:46+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-07-11 03:11+0000\n"
"Last-Translator: gobi <Unknown>\n"
"Language-Team: Mongolian <mn@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-25 05:15+0000\n"
"X-Generator: Launchpad (build 15482)\n"
"X-Launchpad-Export-Date: 2012-07-12 04:41+0000\n"
"X-Generator: Launchpad (build 15593)\n"
#. module: project_timesheet
#: model:ir.actions.act_window,help:project_timesheet.action_project_timesheet_bill_task
@ -45,12 +45,12 @@ msgid ""
"Fill in the timesheet tab of the employee form."
msgstr ""
"Холбогдох ажилтанд журнал тодорхойлогдоогүй байна.\n"
"Ажилтны формын цагийн хуваарь хавтасыг бөглө."
"Ажилтны формын цагийн хуудас хавтасыг бөглө."
#. module: project_timesheet
#: model:process.node,name:project_timesheet.process_node_timesheettask0
msgid "Timesheet task"
msgstr "Цагийн хуваарийн даалгавар"
msgstr "Цагийн хуудсын даалгавар"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
@ -90,31 +90,33 @@ msgid ""
"You cannot delete a partner which is assigned to project, we suggest you to "
"uncheck the active box!"
msgstr ""
"Та төсөлд оноогдсон харилцагчийг устгах боломжгүй, тиймээс идэвхтэй "
"тэмдэглэгээг арилгахыг зөвлөе!"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid "Group By..."
msgstr ""
msgstr "Бүлэглэх..."
#. module: project_timesheet
#: model:process.node,note:project_timesheet.process_node_triggerinvoice0
msgid "Trigger invoices from sale order lines"
msgstr ""
msgstr "Борлуулалтын захиалгын мөрөөс нэхэмжлэх үүсгэх"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "October"
msgstr ""
msgstr "10-р сар"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid "Timesheet/Task hours Report Per Month"
msgstr ""
msgstr "Цагийн хуудас/Даалгавар цагийн тайлан сарын хэмжээнд"
#. module: project_timesheet
#: view:project.project:0
msgid "Billable"
msgstr ""
msgstr "Нэхэмжлэх боломжтой"
#. module: project_timesheet
#: model:ir.actions.act_window,help:project_timesheet.action_account_analytic_overdue
@ -122,225 +124,227 @@ msgid ""
"You will find here the contracts related to your customer projects in order "
"to track the invoicing progress."
msgstr ""
"Энд захиалагчийн төсөлтэй холбогдсон гэрээнүүдийг харах болно. Энэ нь "
"нэхэмжлэх явцыг зөвх хянахад туслана."
#. module: project_timesheet
#: view:account.analytic.line:0
msgid "Analytic account/project"
msgstr ""
msgstr "Шинжилгээний данс/төсөл"
#. module: project_timesheet
#: field:report.timesheet.task.user,task_hrs:0
msgid "Task Hours"
msgstr ""
msgstr "Даалгаврын цагууд"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
#: field:report.timesheet.task.user,year:0
msgid "Year"
msgstr ""
msgstr "Он"
#. module: project_timesheet
#: constraint:project.project:0
msgid "Error! project start-date must be lower then project end-date."
msgstr ""
msgstr "Алдаа! төслийн эхлэх огноо дуусах огноогоос бага байх ёстой."
#. module: project_timesheet
#: model:ir.actions.act_window,name:project_timesheet.action_account_analytic_overdue
msgid "Customer Projects"
msgstr ""
msgstr "Захиалагчийн төслууд"
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_account_analytic_line
msgid "Analytic Line"
msgstr ""
msgstr "Шинжилгээний мөр"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "August"
msgstr ""
msgstr "8-р сар"
#. module: project_timesheet
#: model:process.transition,name:project_timesheet.process_transition_taskinvoice0
msgid "Task invoice"
msgstr ""
msgstr "Даалгаврын нэхэмжлэл"
#. module: project_timesheet
#: model:process.node,name:project_timesheet.process_node_taskwork0
msgid "Task Work"
msgstr ""
msgstr "Даалгаврын ажил"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "May"
msgstr ""
msgstr "5-р сар"
#. module: project_timesheet
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr ""
msgstr "Алдаа ! Та рекурсив цэс үүсгэж болохгүй!"
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_project_working_hours
msgid "Timesheet Lines"
msgstr ""
msgstr "Цагийн хуудсын мөрүүд"
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:231
#, python-format
msgid "Invalid action !"
msgstr ""
msgstr "Алдаатай үйлдэл !"
#. module: project_timesheet
#: view:project.project:0
msgid "Billable Project"
msgstr ""
msgstr "Нэхэмжлэх боломжтой Төсөл"
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_invoicing_contracts
msgid "Contracts to Renew"
msgstr ""
msgstr "Шинэчлэх Гэрээнүүд"
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_hr_timesheet_sign_in
msgid "Sign in / Sign out by project"
msgstr ""
msgstr "Орох/Гарах үйлдлийг төслөөр харах"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid "Group by month of date"
msgstr ""
msgstr "Огнооны сараар бүлэглэх"
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_project_task
msgid "Task"
msgstr ""
msgstr "Даалгавар"
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_project_billing_line
msgid "Invoice Tasks Work"
msgstr ""
msgstr "Даалгаврын Ажлыг Нэхэмжлэх"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
#: field:report.timesheet.task.user,user_id:0
msgid "User"
msgstr ""
msgstr "Хэрэглэгч"
#. module: project_timesheet
#: constraint:project.project:0
msgid "Error! You cannot assign escalation to the same project!"
msgstr ""
msgstr "Алдаа! Ижил төсөлд томруулалтыг олгох боломжгүй."
#. module: project_timesheet
#: field:report.timesheet.task.user,name:0
msgid "Date"
msgstr ""
msgstr "Огноо"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "July"
msgstr ""
msgstr "7-р сар"
#. module: project_timesheet
#: model:process.node,note:project_timesheet.process_node_timesheettask0
msgid "Complete Your Timesheet."
msgstr ""
msgstr "Цагийн Хуудсаа Гүйцээ"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid "Task Hours in current year"
msgstr ""
msgstr "Энэ жилийн даалгаврын цаг"
#. module: project_timesheet
#: view:project.project:0
msgid "Customer"
msgstr ""
msgstr "Захиалагч"
#. module: project_timesheet
#: model:process.node,note:project_timesheet.process_node_taskwork0
msgid "Work on task"
msgstr ""
msgstr "Даалгавар дахь ажил"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "February"
msgstr ""
msgstr "2-р сар"
#. module: project_timesheet
#: model:ir.actions.act_window,name:project_timesheet.action_project_timesheet_bill_task
msgid "Bill Tasks Works"
msgstr ""
msgstr "Даалгаврын ажлуудын тооцоо"
#. module: project_timesheet
#: field:report.timesheet.task.user,timesheet_hrs:0
msgid "Timesheet Hours"
msgstr ""
msgstr "Цагийн хуудас дахь цагууд"
#. module: project_timesheet
#: model:process.transition,name:project_timesheet.process_transition_taskencoding0
msgid "Task encoding"
msgstr ""
msgstr "Даалгаврыг шивнэ үү"
#. module: project_timesheet
#: model:process.transition,note:project_timesheet.process_transition_filltimesheet0
msgid "Task summary is comes into the timesheet line"
msgstr ""
msgstr "Даалгаврын товчоо нь цагийн хуудсын мөр рүү очдог."
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "January"
msgstr ""
msgstr "1-р сар"
#. module: project_timesheet
#: model:process.node,name:project_timesheet.process_node_triggerinvoice0
msgid "Trigger Invoice"
msgstr ""
msgstr "Нэхэмжлэлийг Үүсгэх"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "November"
msgstr ""
msgstr "11-р сар"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid "Task hours of last month"
msgstr ""
msgstr "Өнгөрсөн сарын ажлын цагууд"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "March"
msgstr ""
msgstr "3-р сар"
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_project_project
msgid "Project"
msgstr ""
msgstr "Төсөл"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "April"
msgstr ""
msgstr "4-р сар"
#. module: project_timesheet
#: view:project.project:0
msgid "Invoicing Data"
msgstr ""
msgstr "Нэхэмжлэх өгөгдөл"
#. module: project_timesheet
#: model:process.transition,note:project_timesheet.process_transition_taskencoding0
msgid "Encode how much time u spent on your task"
msgstr ""
msgstr "Өөрийн даалгавар дээр хичнээн цаг зарцуулснаа оруулна уу"
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_res_partner
msgid "Partner"
msgstr ""
msgstr "Харилцагч"
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:247
#, python-format
msgid "Invalid Analytic Account !"
msgstr ""
msgstr "Буруу Шинжилгээний Данс !"
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:59
@ -349,6 +353,8 @@ msgid ""
"No product defined on the related employee.\n"
"Fill in the timesheet tab of the employee form."
msgstr ""
"Холбогдох ажилтан дээр бараа тодорхойлогдоогүй байна.\n"
"Ажилтны формын цагийн хуудас хавтас дээр бөглөнө үү."
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:54
@ -357,17 +363,17 @@ msgstr ""
#: code:addons/project_timesheet/project_timesheet.py:69
#, python-format
msgid "Bad Configuration !"
msgstr ""
msgstr "Буруу Тохиргоо !"
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_project_billing
msgid "Invoicing"
msgstr ""
msgstr "Нэхэмжлэл"
#. module: project_timesheet
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
msgstr "Алдаа ! Рекурсив холбогдсон гишүүдийг үүсгэх боломжгүй."
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:247
@ -375,57 +381,58 @@ msgstr ""
msgid ""
"You cannot select a Analytic Account which is in Close or Cancelled state"
msgstr ""
"Хаагдсан эсвэл Цуцлагдсан төлөвтэй Шинжилгээний Дансыг сонгох боломжгүй"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
msgid " Month-1 "
msgstr ""
msgstr " Сар-1 "
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "September"
msgstr ""
msgstr "9-р сар"
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "December"
msgstr ""
msgstr "12-р сар"
#. module: project_timesheet
#: model:process.transition,note:project_timesheet.process_transition_taskinvoice0
msgid "After task is completed, Create its invoice."
msgstr ""
msgstr "Даалгавар дуусмагц харгалзах нэхэмжлэл үүсгэнэ."
#. module: project_timesheet
#: selection:report.timesheet.task.user,month:0
msgid "June"
msgstr ""
msgstr "6-р сар"
#. module: project_timesheet
#: model:ir.model,name:project_timesheet.model_report_timesheet_task_user
msgid "report.timesheet.task.user"
msgstr ""
msgstr "report.timesheet.task.user"
#. module: project_timesheet
#: view:report.timesheet.task.user:0
#: field:report.timesheet.task.user,month:0
msgid "Month"
msgstr ""
msgstr "Сар"
#. module: project_timesheet
#: model:ir.ui.menu,name:project_timesheet.menu_act_project_management_timesheet_sheet_form
msgid "My Timesheet"
msgstr ""
msgstr "Өөрийн цагийн хуудас"
#. module: project_timesheet
#: constraint:account.analytic.line:0
msgid "You can not create analytic line on view account."
msgstr ""
msgstr "Харагдац төрлийн данс дээр шинжилгээний мөрийг үүсгэх боломжгүй."
#. module: project_timesheet
#: view:project.project:0
msgid "Invoice Task Work"
msgstr ""
msgstr "Даалгаврын Ажлыг Нэхэмжлэх"
#. module: project_timesheet
#: code:addons/project_timesheet/project_timesheet.py:70
@ -435,15 +442,18 @@ msgid ""
"employee.\n"
"Fill in the timesheet tab of the employee form."
msgstr ""
"Холбогдох ажилтан дээр бараа болон барааны ангилалын үзүүлэлтийн данс "
"тодорхойлогдоогүй байна.\n"
"Ажилтны формын цагийн хуудас хавтсыг бөглөнө үү."
#. module: project_timesheet
#: model:ir.actions.act_window,name:project_timesheet.action_report_timesheet_task_user
#: model:ir.ui.menu,name:project_timesheet.menu_timesheet_task_user
#: view:report.timesheet.task.user:0
msgid "Task Hours Per Month"
msgstr ""
msgstr "Даалгаврын цагууд сарын хэмжээнд"
#. module: project_timesheet
#: model:process.transition,name:project_timesheet.process_transition_filltimesheet0
msgid "Fill Timesheet"
msgstr ""
msgstr "Цагийн хуудсыг бөглөх"

View File

@ -88,7 +88,7 @@
<!-- Menus -->
<record id="action_project_timesheet_bill_task" model="ir.actions.act_window">
<field name="name">Bill Tasks Works</field>
<field name="name">Invoice Tasks Work</field>
<field name="res_model">account.analytic.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>

View File

@ -256,9 +256,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -104,9 +104,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -262,8 +262,8 @@ class resource_calendar_attendance(osv.osv):
'name' : fields.char("Name", size=64, required=True),
'dayofweek': fields.selection([('0','Monday'),('1','Tuesday'),('2','Wednesday'),('3','Thursday'),('4','Friday'),('5','Saturday'),('6','Sunday')], 'Day of Week', required=True, select=True),
'date_from' : fields.date('Starting Date'),
'hour_from' : fields.float('Work from', size=8, required=True, help="Working time will start from", select=True),
'hour_to' : fields.float("Work to", size=8, required=True, help="Working time will end at"),
'hour_from' : fields.float('Work from', required=True, help="Start and End time of working.", select=True),
'hour_to' : fields.float("Work to", required=True),
'calendar_id' : fields.many2one("resource.calendar", "Resource's Calendar", required=True),
}

View File

@ -120,11 +120,12 @@
<field name="model">resource.calendar.attendance</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Working Time">
<tree string="Working Time" editable="top">
<field name="name"/>
<field name="dayofweek"/>
<field name="hour_from" widget="float_time" />
<field name="hour_to" widget="float_time" />
<field name="hour_from" widget="float_time"/>
<field name="hour_to" widget="float_time"/>
<field name="date_from"/>
</tree>
</field>
</record>
@ -135,11 +136,16 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Working Time" version="7.0">
<field colspan="4" name="name"/>
<field name="date_from"/>
<field name="dayofweek"/>
<field name="hour_from" widget="float_time"/>
<field name="hour_to" widget="float_time"/>
<group>
<field name="name"/>
<field name="date_from"/>
<field name="dayofweek"/>
<label for="hour_from" string="Hours"/>
<div>
<field name="hour_from" widget="float_time" class="oe_inline"/> -
<field name="hour_to" widget="float_time" class="oe_inline"/>
</div>
</group>
</form>
</field>
</record>
@ -179,16 +185,18 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Resource" version="7.0">
<group col="4">
<field name="name" colspan="4"/>
<field name="active"/>
<newline/>
<field name="user_id" attrs="{'required':[('resource_type','=','user')], 'readonly':[('resource_type','=','material')]}"/>
<field name="resource_type" />
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<newline/>
<field name="calendar_id" string="Working Period"/>
<field name="time_efficiency"/>
<group>
<group>
<field name="name"/>
<field name="user_id" attrs="{'required':[('resource_type','=','user')], 'readonly':[('resource_type','=','material')]}"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<field name="active"/>
</group>
<group>
<field name="resource_type" />
<field name="calendar_id"/>
<field name="time_efficiency"/>
</group>
</group>
</form>
</field>
@ -204,7 +212,7 @@
<field name="user_id" />
<field name="company_id" groups="base.group_multi_company"/>
<field name="resource_type" />
<field name="calendar_id" string="Working Period"/>
<field name="calendar_id"/>
<field name="time_efficiency"/>
</tree>
</field>
@ -225,25 +233,29 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Leave Detail" version="7.0">
<sheet>
<group>
<group>
<field name="resource_id" on_change="onchange_resource(resource_id)"/>
<field name="name" string="Reason"/>
</group>
<group>
<field name="calendar_id"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
</group>
<group>
<group>
<field name="resource_id" on_change="onchange_resource(resource_id)"/>
<field name="name" string="Reason"/>
<label for="date_from" string="Duration"/>
<div>
<field name="date_from" class="oe_inline"/> -
<field name="date_to" class="oe_inline"/>
</div>
</group>
<group>
<field name="date_from"/>
<field name="calendar_id" string="Working Period"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
<group>
<field name="date_to"/>
</group>
</group>
</sheet>
</group>
</form>
</field>
</record>
<record id="resource_calendar_leave_tree" model="ir.ui.view">
<field name="name">resource.calendar.leaves.tree</field>
<field name="model">resource.calendar.leaves</field>

View File

@ -845,7 +845,8 @@ class sale_order(osv.osv):
'procure_method': line.type,
'move_id': move_id,
'company_id': order.company_id.id,
'note': line.notes
'note': line.notes,
'property_ids': [(6, 0, [x.id for x in line.property_ids])]
}
def _prepare_order_line_move(self, cr, uid, order, line, picking_id, date_planned, context=None):

View File

@ -318,9 +318,9 @@
</page>
</notebook>
</sheet>
<footer>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</footer>
</div>
</form>
</field>
</record>

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-06-29 23:16+0000\n"
"PO-Revision-Date: 2012-07-11 05:35+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-07-01 04:39+0000\n"
"X-Generator: Launchpad (build 15520)\n"
"X-Launchpad-Export-Date: 2012-07-12 04:40+0000\n"
"X-Generator: Launchpad (build 15593)\n"
#. module: stock
#: field:product.product,track_outgoing:0

View File

@ -243,13 +243,16 @@ class product_product(osv.osv):
child_location_ids = location_obj.search(cr, uid, [('location_id', 'child_of', location_ids)])
location_ids = child_location_ids or location_ids
# this will be a dictionary of the UoM resources we need for conversion purposes, by UoM id
uoms_o = {}
# this will be a dictionary of the product UoM by product id
product2uom = {}
for product in self.browse(cr, uid, ids, context=context):
product2uom[product.id] = product.uom_id.id
uoms_o[product.uom_id.id] = product.uom_id
uom_ids = []
for product in self.read(cr, uid, ids, ['uom_id'], context=context):
product2uom[product['id']] = product['uom_id'][0]
uom_ids.append(product['uom_id'][0])
# this will be a dictionary of the UoM resources we need for conversion purposes, by UoM id
uoms_o = {}
for uom in self.pool.get('product.uom').browse(cr, uid, uom_ids, context=context):
uoms_o[uom.id] = uom
results = []
results2 = []

View File

@ -977,9 +977,9 @@
<field name="partner_id" on_change="onchange_partner_in(partner_id)" colspan="4" string="Customer"/>
</xpath>
<xpath expr="/form/sheet" position="after">
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</xpath>
</data>
</field>
@ -1090,9 +1090,9 @@
<field name="partner_id" on_change="onchange_partner_in(partner_id)" colspan="4" string="Supplier"/>
</xpath>
<xpath expr="/form/sheet" position="after">
<footer>
<div class="oe_chatter">
<field name="message_ids" colspan="4" widget="mail_thread" nolabel="1"/>
</footer>
</div>
</xpath>
</data>
</field>

View File

@ -103,20 +103,14 @@ class stock_change_product_qty(osv.osv_memory):
self.change_product_qty_send_note(cr, uid, [data.id], context)
return {}
def change_product_qty_send_note (self, cr, uid, ids, context=None):
def change_product_qty_send_note(self, cr, uid, ids, context=None):
prod_obj = self.pool.get('product.product')
location_obj = self.pool.get('stock.location')
prod_temp_obj = self.pool.get('product.template')
uom_obj = self.pool.get('product.uom')
for data in self.browse(cr, uid, ids, context=context):
for location in location_obj.browse(cr, uid, [data.location_id.id], context=context):
location_name = location.name
for prod in prod_obj.browse(cr, uid, [data.product_id.id], context=context):
for prod_temp in prod_temp_obj.browse(cr, uid, [prod.product_tmpl_id.id], context=context):
for uom in uom_obj.browse(cr, uid, [prod_temp.uom_id.id], context=context):
message = _("<b>Quantity has been changed</b> to <em>%s %s </em> for <em>%s</em> location.") % (data.new_quantity,uom.name,location_name)
prod_obj.message_append_note(cr, uid, [prod.id], body=message, context=context)
location_name = location_obj.browse(cr, uid, data.location_id.id, context=context).name
message = _("<b>Quantity has been changed</b> to <em>%s %s </em> for <em>%s</em> location.") % (data.new_quantity, data.product_id.uom_id.name, location_name)
prod_obj.message_append_note(cr, uid, [data.product_id.id], body=message, context=context)
stock_change_product_qty()

View File

@ -36,7 +36,7 @@ class stock_invoice_onshipping(osv.osv_memory):
context = {}
model = context.get('active_model')
if not model or model != 'stock.picking':
if not model or 'stock.picking' not in model:
return []
model_pool = self.pool.get(model)

View File

@ -56,7 +56,6 @@ class stock_planning_createlines(osv.osv_memory):
planning_obj = self.pool.get('stock.planning')
mod_obj = self.pool.get('ir.model.data')
prod_categ_obj = self.pool.get('product.category')
template_obj = self.pool.get('product.template')
planning_lines = []
for f in self.browse(cr, uid, ids, context=context):
if f.forecasted_products:
@ -67,8 +66,7 @@ class stock_planning_createlines(osv.osv_memory):
else:
categ_ids = f.product_categ_id.id and [f.product_categ_id.id] or []
prod_categ_ids = prod_categ_obj.search(cr,uid,[('parent_id','child_of',categ_ids)])
templates_ids = template_obj.search(cr,uid,[('categ_id','in',prod_categ_ids)])
products_id1 = product_obj.search(cr,uid,[('product_tmpl_id','in',templates_ids)])
products_id1 = product_obj.search(cr,uid,[('categ_id','in',prod_categ_ids)])
if len(products_id1)==0:
raise osv.except_osv(_('Error !'), _('No forecasts for selected period or no products in selected category !'))

View File

@ -49,13 +49,11 @@ class stock_sale_forecast_createlines(osv.osv_memory):
forecast_obj = self.pool.get('stock.sale.forecast')
mod_obj = self.pool.get('ir.model.data')
prod_categ_obj = self.pool.get('product.category')
template_obj = self.pool.get('product.template')
forecast_lines = []
for f in self.browse(cr, uid, ids, context=context):
categ_ids = f.product_categ_id.id and [f.product_categ_id.id] or []
prod_categ_ids = prod_categ_obj.search(cr, uid, [('parent_id','child_of', categ_ids)])
templates_ids = template_obj.search(cr, uid, [('categ_id','in',prod_categ_ids)])
products_ids = product_obj.search(cr, uid, [('product_tmpl_id','in',templates_ids)])
products_ids = product_obj.search(cr, uid, [('categ_id','in',prod_categ_ids)])
if len(products_ids) == 0:
raise osv.except_osv(_('Error !'), _('No products in selected category !'))
copy = f.copy_forecast