[MERGE]: Merge with latest trunk-addons

bzr revid: rpa@tinyerp.com-20111018050447-ua2onimiucrhr5o3
This commit is contained in:
Rucha (Open ERP)
2011-10-18 10:34:47 +05:30
126 changed files with 7762 additions and 1252 deletions
+8 -19
View File
@@ -1213,22 +1213,10 @@ class account_move(osv.osv):
return False
return True
def _check_period_journal(self, cursor, user, ids, context=None):
for move in self.browse(cursor, user, ids, context=context):
for line in move.line_id:
if line.period_id.id != move.period_id.id:
return False
if line.journal_id.id != move.journal_id.id:
return False
return True
_constraints = [
(_check_centralisation,
'You can not create more than one move per period on centralized journal',
['journal_id']),
(_check_period_journal,
'You can not create journal items on different periods/journals in the same journal entry',
['line_id']),
]
def post(self, cr, uid, ids, context=None):
@@ -1511,8 +1499,6 @@ class account_move(osv.osv):
# Update the move lines (set them as valid)
obj_move_line.write(cr, uid, line_draft_ids, {
'journal_id': move.journal_id.id,
'period_id': move.period_id.id,
'state': 'valid'
}, context, check=False)
@@ -1553,8 +1539,6 @@ class account_move(osv.osv):
# We can't validate it (it's unbalanced)
# Setting the lines as draft
obj_move_line.write(cr, uid, line_ids, {
'journal_id': move.journal_id.id,
'period_id': move.period_id.id,
'state': 'draft'
}, context, check=False)
# Create analytic lines for the valid moves
@@ -1579,11 +1563,15 @@ class account_move_reconcile(osv.osv):
_defaults = {
'name': lambda self,cr,uid,ctx={}: self.pool.get('ir.sequence').get(cr, uid, 'account.reconcile') or '/',
}
def reconcile_partial_check(self, cr, uid, ids, type='auto', context=None):
total = 0.0
for rec in self.browse(cr, uid, ids, context=context):
for line in rec.line_partial_ids:
total += (line.debit or 0.0) - (line.credit or 0.0)
if line.account_id.currency_id:
total += line.amount_currency
else:
total += (line.debit or 0.0) - (line.credit or 0.0)
if not total:
self.pool.get('account.move.line').write(cr, uid,
map(lambda x: x.id, rec.line_partial_ids),
@@ -2634,7 +2622,8 @@ class account_fiscal_position_template(osv.osv):
'name': fields.char('Fiscal Position Template', size=64, required=True),
'chart_template_id': fields.many2one('account.chart.template', 'Chart Template', required=True),
'account_ids': fields.one2many('account.fiscal.position.account.template', 'position_id', 'Account Mapping'),
'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping')
'tax_ids': fields.one2many('account.fiscal.position.tax.template', 'position_id', 'Tax Mapping'),
'note': fields.text('Notes', translate=True),
}
account_fiscal_position_template()
@@ -2718,7 +2707,7 @@ class account_financial_report(osv.osv):
return res
_columns = {
'name': fields.char('Report Name', size=128, required=True),
'name': fields.char('Report Name', size=128, required=True, translate=True),
'parent_id': fields.many2one('account.financial.report', 'Parent'),
'children_ids': fields.one2many('account.financial.report', 'parent_id', 'Account Report'),
'sequence': fields.integer('Sequence'),
+1 -1
View File
@@ -880,7 +880,7 @@ class account_invoice(osv.osv):
'account_id': acc_id,
'date_maturity': t[0],
'amount_currency': diff_currency_p \
and amount_currency or False,
and amount_currency or False,
'currency_id': diff_currency_p \
and inv.currency_id.id or False,
'ref': ref,
+1 -1
View File
@@ -305,8 +305,8 @@
<button name="invoice_cancel" states="draft,proforma2,sale,open" string="Cancel" icon="gtk-cancel"/>
<button name="action_cancel_draft" states="cancel" string="Reset to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' attrs="{'invisible':['|', ('state','&lt;&gt;','paid'), ('reconciled', '=', True)]}" icon="gtk-convert" help="This button only appears when the state of the invoice is 'paid' (showing that it has been fully reconciled) and auto-computed boolean 'reconciled' is False (depicting that it's not the case anymore). In other words, the invoice has been dereconciled and it does not fit anymore the 'paid' state. You should press this button to re-open it and let it continue its normal process after having resolved the eventual exceptions it may have created."/>
<button name="%(action_account_invoice_refund)d" type='action' string='Refund' states='open,paid' icon="gtk-execute"/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' states='paid' icon="gtk-convert" groups="base.group_no_one"/>
<button name="invoice_proforma2" states="draft" string="PRO-FORMA" icon="terp-gtk-media-pause" groups="account.group_account_user"/>
<button name="invoice_open" states="draft,proforma2" string="Validate" icon="gtk-go-forward"/>
<button name="%(account_invoices)d" string="Print Invoice" type="action" icon="gtk-print" states="open,paid,proforma,sale,proforma2"/>
+32 -9
View File
@@ -494,8 +494,14 @@ class account_move_line(osv.osv):
'amount_residual_currency': fields.function(_amount_residual, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in its currency (maybe different of the company currency)."),
'amount_residual': fields.function(_amount_residual, string='Residual Amount', multi="residual", help="The residual amount on a receivable or payable of a journal entry expressed in the company currency."),
'currency_id': fields.many2one('res.currency', 'Currency', help="The optional other currency if it is a multi-currency entry."),
'period_id': fields.many2one('account.period', 'Period', required=True, select=2),
'journal_id': fields.many2one('account.journal', 'Journal', required=True, select=1),
'journal_id': fields.related('move_id', 'journal_id', string='Journal', type='many2one', relation='account.journal', required=True, select=True, readonly=True,
store = {
'account.move': (_get_move_lines, ['journal_id'], 20)
}),
'period_id': fields.related('move_id', 'period_id', string='Period', type='many2one', relation='account.period', required=True, select=True, readonly=True,
store = {
'account.move': (_get_move_lines, ['period_id'], 20)
}),
'blocked': fields.boolean('Litigation', help="You can check this box to mark this journal item as a litigation with the associated partner"),
'partner_id': fields.many2one('res.partner', 'Partner', select=1, ondelete='restrict'),
'date_maturity': fields.date('Due date', select=True ,help="This field is used for payable and receivable journal entries. You can put the limit date for the payment of this line."),
@@ -597,11 +603,19 @@ class account_move_line(osv.osv):
return False
return True
def _check_currency(self, cr, uid, ids, context=None):
for l in self.browse(cr, uid, ids, context=context):
if l.account_id.currency_id:
if not l.currency_id or not l.currency_id.id == l.account_id.currency_id.id:
return False
return True
_constraints = [
(_check_no_view, 'You can not create move line on view account.', ['account_id']),
(_check_no_closed, 'You can not create move line on closed account.', ['account_id']),
(_check_company_id, 'Company must be same for its related account and period.',['company_id'] ),
(_check_date, 'The date of your Journal Entry is not in the defined period!',['date'] ),
(_check_company_id, 'Company must be same for its related account and period.', ['company_id']),
(_check_date, 'The date of your Journal Entry is not in the defined period!', ['date']),
(_check_currency, 'The selected account of your Journal Entry must receive a value in its secondary currency', ['currency_id']),
]
#TODO: ONCHANGE_ACCOUNT_ID: set account_tax_id
@@ -735,7 +749,10 @@ class account_move_line(osv.osv):
company_list.append(line.company_id.id)
for line in self.browse(cr, uid, ids, context=context):
company_currency_id = line.company_id.currency_id
if line.account_id.currency_id:
currency_id = line.account_id.currency_id
else:
currency_id = line.company_id.currency_id
if line.reconcile_id:
raise osv.except_osv(_('Warning'), _('Already Reconciled!'))
if line.reconcile_partial_id:
@@ -743,12 +760,18 @@ class account_move_line(osv.osv):
if not line2.reconcile_id:
if line2.id not in merges:
merges.append(line2.id)
total += (line2.debit or 0.0) - (line2.credit or 0.0)
if line2.account_id.currency_id:
total += line2.amount_currency
else:
total += (line2.debit or 0.0) - (line2.credit or 0.0)
merges_rec.append(line.reconcile_partial_id.id)
else:
unmerge.append(line.id)
total += (line.debit or 0.0) - (line.credit or 0.0)
if self.pool.get('res.currency').is_zero(cr, uid, company_currency_id, total):
if line.account_id.currency_id:
total += line.amount_currency
else:
total += (line.debit or 0.0) - (line.credit or 0.0)
if self.pool.get('res.currency').is_zero(cr, uid, currency_id, total):
res = self.reconcile(cr, uid, merges+unmerge, context=context, writeoff_acc_id=writeoff_acc_id, writeoff_period_id=writeoff_period_id, writeoff_journal_id=writeoff_journal_id)
return res
r_id = move_rec_obj.create(cr, uid, {
@@ -1259,7 +1282,7 @@ class account_move_line(osv.osv):
break
# Automatically convert in the account's secondary currency if there is one and
# the provided values were not already multi-currency
if account.currency_id and not vals.get('ammount_currency') and account.currency_id.id != account.company_id.currency_id.id:
if account.currency_id and (vals.get('amount_currency', False) is False) and account.currency_id.id != account.company_id.currency_id.id:
vals['currency_id'] = account.currency_id.id
ctx = {}
if 'date' in vals:
+2 -2
View File
@@ -455,9 +455,9 @@
<!-- <field name="invoice_sequence_id"/>-->
<field name="group_invoice_lines"/>
</group>
<group colspan="2" col="2" groups="base.group_extended">
<group colspan="2" col="2"> <!-- can't set the field as hidden for certain groups as it's required in the object and not in the view, and GTK doesn't handle that correctly -->
<separator string="Sequence" colspan="4"/>
<field name="sequence_id"/>
<field name="sequence_id" required="0"/>
</group>
</page>
<page string="Entry Controls" groups="base.group_extended">
+8 -8
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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-03-30 13:55+0000\n"
"PO-Revision-Date: 2011-10-13 07:32+0000\n"
"Last-Translator: Rolv Råen (adEgo) <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@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: 2011-09-17 04:58+0000\n"
"X-Generator: Launchpad (build 13955)\n"
"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@@ -4933,7 +4933,7 @@ msgstr "Analytisk bokføring"
#: selection:account.invoice.report,type:0
#: selection:report.invoice.created,type:0
msgid "Customer Refund"
msgstr "Kunderefusjon"
msgstr "Kreditnota"
#. module: account
#: view:account.account:0
@@ -5489,7 +5489,7 @@ msgstr " 365 dager "
#: model:ir.actions.act_window,name:account.action_invoice_tree3
#: model:ir.ui.menu,name:account.menu_action_invoice_tree3
msgid "Customer Refunds"
msgstr "Kunderefusjon"
msgstr "Kreditnota"
#. module: account
#: view:account.payment.term.line:0
@@ -5945,7 +5945,7 @@ msgstr "Legg inn en startdato !"
#: selection:account.invoice.report,type:0
#: selection:report.invoice.created,type:0
msgid "Supplier Refund"
msgstr "Leverandørrefusjon"
msgstr "Kreditnota"
#. module: account
#: model:ir.ui.menu,name:account.menu_dashboard_acc
@@ -6815,7 +6815,7 @@ msgstr "Kommentar"
#: field:account.tax,domain:0
#: field:account.tax.template,domain:0
msgid "Domain"
msgstr "Område"
msgstr "Domene"
#. module: account
#: model:ir.model,name:account.model_account_use_model
@@ -9616,7 +9616,7 @@ msgstr "Søk faktura"
#: view:account.invoice.report:0
#: model:ir.actions.act_window,name:account.action_account_invoice_refund
msgid "Refund"
msgstr "Refusjon"
msgstr "Kreditnota"
#. module: account
#: field:wizard.multi.charts.accounts,bank_accounts_id:0
+2 -3
View File
@@ -149,7 +149,7 @@ class account_installer(osv.osv_memory):
}
new_paid_tax_code_temp = obj_tax_code_temp.create(cr, uid, vals_paid_tax_code_temp, context=context)
sales_tax_temp = obj_tax_temp.create(cr, uid, {
'name': _('TAX %s%%') % (s_tax*100),
'name': _('Sale TAX %s%%') % (s_tax*100),
'amount': s_tax,
'base_code_id': new_tax_code_temp,
'tax_code_id': new_paid_tax_code_temp,
@@ -178,8 +178,7 @@ class account_installer(osv.osv_memory):
}
new_paid_tax_code_temp = obj_tax_code_temp.create(cr, uid, vals_paid_tax_code_temp, context=context)
purchase_tax_temp = obj_tax_temp.create(cr, uid, {
'name': _('TAX %s%%') % (p_tax*100),
'description': _('TAX %s%%') % (p_tax*100),
'name': _('Purchase TAX %s%%') % (p_tax*100),
'amount': p_tax,
'base_code_id': new_tax_code_temp,
'tax_code_id': new_paid_tax_code_temp,
+2 -1
View File
@@ -45,7 +45,7 @@
<filter string="Associated Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<separator orientation="vertical"/>
<filter string="Parent" icon="terp-folder-orange" domain="[]" context="{'group_by':'parent_id'}"/>
<filter string="State" icon="terp-folder-green" domain="[]" context="{'group_by':'state'}"/>
<filter string="State" icon="terp-folder-green" domain="[]" context="{'group_by':'state'}" groups="base.group_no_one"/>
</group>
</search>
</field>
@@ -65,6 +65,7 @@
<field name="debit"/>
<field name="credit"/>
<field name="balance"/>
<field name="state" invisible="1"/>
<field name="currency_id" groups="base.group_extended"/>
<field name="date" invisible="1"/>
<field name="user_id" invisible="1"/>
@@ -33,11 +33,11 @@
-
!python {model: account.change.currency}: |
self.view_init(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US',
"active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids":
"active_model": "account.invoice", "tz": False, "active_ids":
[ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"),
})
self.change_currency(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US',
"active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids":
"active_model": "account.invoice", "tz": False, "active_ids":
[ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"),
})
-
@@ -71,7 +71,7 @@
-
!python {model: account.change.currency}: |
self.change_currency(cr, uid, [ref("account_change_currency_0")], {"lang": 'en_US',
"active_model": "account.invoice", "tz": False, "record_id": 4, "active_ids":
"active_model": "account.invoice", "tz": False, "active_ids":
[ref("account_invoice_currency")], "type": "out_invoice", "active_id": ref("account_invoice_currency"),
})
-
@@ -42,7 +42,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="account_automatic_reconcile_view"/>
<field name="context">{'record_id':active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
</record>
@@ -25,7 +25,7 @@
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_account_change_currency"/>
<field name="context">{'record_id' : active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
</record>
</data>
@@ -28,7 +28,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="account_partner_reconcile_view"/>
<field name="context">{'record_id':active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
</record>
<record model="ir.values" id="action_partner_reconcile_actino">
@@ -37,7 +37,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="account_aged_balance_view"/>
<field name="context">{'record_id':active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
</record>
@@ -29,7 +29,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="account_partner_balance_view"/>
<field name="context">{'record_id':active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
<field name="help">This report is analysis by partner. It is a PDF report containing one line per partner representing the cumulative credit balance.</field>
</record>
@@ -34,7 +34,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="account_partner_ledger_view"/>
<field name="context">{'record_id':active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
</record>
@@ -27,7 +27,7 @@
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_account_state_open"/>
<field name="context">{'record_id' : active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
</record>
@@ -64,7 +64,7 @@
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="account_unreconcile_reconcile_view"/>
<field name="context">{'record_id' : active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
</record>
@@ -66,7 +66,7 @@
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="validate_account_move_line_view"/>
<field name="context">{'record_id' : active_id}</field>
<field name="context">{}</field>
<field name="target">new</field>
<field name="help">This wizard will validate all journal entries of a particular journal and period. Once journal entries are validated, you can not update them anymore.</field>
</record>
+8 -3
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: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-08-17 23:03+0000\n"
"PO-Revision-Date: 2011-10-16 23:06+0000\n"
"Last-Translator: mgaja (GrupoIsep.com) <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: 2011-09-05 05:11+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
"X-Generator: Launchpad (build 14155)\n"
#. module: account_followup
#: code:addons/account_followup/wizard/account_followup_print.py:298
@@ -90,6 +90,11 @@ msgid ""
"\n"
"%s"
msgstr ""
"\n"
"\n"
"Correu electrònic enviat a les empreses amb èxit!\n"
"\n"
"%s"
#. module: account_followup
#: view:account_followup.followup:0
+6 -1
View File
@@ -59,7 +59,12 @@ Account Voucher module includes all the basic requirements of Voucher Entries fo
"test/account_voucher.yml",
"test/sales_receipt.yml",
"test/sales_payment.yml",
"test/account_voucher_report.yml"
"test/account_voucher_report.yml",
"test/case1_usd_usd.yml",
"test/case2_usd_eur_debtor_in_eur.yml",
"test/case2_usd_eur_debtor_in_usd.yml",
"test/case3_eur_eur.yml",
"test/case4_cad_chf.yml",
],
'certificate': '0037580727101',
"active": False,
+324 -189
View File
@@ -651,13 +651,302 @@ class account_voucher(osv.osv):
res['account_id'] = account_id
return {'value':res}
def _sel_context(self, cr, uid, voucher_id,context=None):
"""
Select the context to use accordingly if it needs to be multicurrency or not.
:param voucher_id: Id of the actual voucher
:return: The returned context will be the same as given in parameter if the voucher currency is the same
than the company currency, otherwise it's a copy of the parameter with an extra key 'date' containing
the date of the voucher.
:rtype: dict
"""
company_currency = self._get_company_currency(cr, uid, voucher_id, context)
current_currency = self._get_current_currency(cr, uid, voucher_id, context)
if current_currency <> company_currency:
context_multi_currency = context.copy()
voucher_brw = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context)
context_multi_currency.update({'date': voucher_brw.date})
return context_multi_currency
return context
def first_move_line_get(self, cr, uid, voucher_id, move_id, company_currency, current_currency, context=None):
'''
Return a dict to be use to create the first account move line of given voucher.
:param voucher_id: Id of voucher what we are creating account_move.
:param move_id: Id of account move where this line will be added.
:param company_currency: id of currency of the company to which the voucher belong
:param current_currency: id of currency of the voucher
:return: mapping between fieldname and value of account move line to create
:rtype: dict
'''
move_line_obj = self.pool.get('account.move.line')
currency_obj = self.pool.get('res.currency')
voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
debit = credit = 0.0
# TODO: is there any other alternative then the voucher type ??
# ANSWER: We can have payment and receipt "In Advance".
# TODO: Make this logic available.
# -for sale, purchase we have but for the payment and receipt we do not have as based on the bank/cash journal we can not know its payment or receipt
if voucher_brw.type in ('purchase', 'payment'):
credit = currency_obj.compute(cr, uid, current_currency, company_currency, voucher_brw.amount, context=context)
elif voucher_brw.type in ('sale', 'receipt'):
debit = currency_obj.compute(cr, uid, current_currency, company_currency, voucher_brw.amount, context=context)
if debit < 0: credit = -debit; debit = 0.0
if credit < 0: debit = -credit; credit = 0.0
sign = debit - credit < 0 and -1 or 1
#set the first line of the voucher
move_line = {
'name': voucher_brw.name or '/',
'debit': debit,
'credit': credit,
'account_id': voucher_brw.account_id.id,
'move_id': move_id,
'journal_id': voucher_brw.journal_id.id,
'period_id': voucher_brw.period_id.id,
'partner_id': voucher_brw.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'amount_currency': company_currency <> current_currency and sign * voucher_brw.amount or 0.0,
'date': voucher_brw.date,
'date_maturity': voucher_brw.date_due
}
return move_line
def account_move_get(self, cr, uid, voucher_id, context=None):
'''
This method prepare the creation of the account move related to the given voucher.
:param voucher_id: Id of voucher for which we are creating account_move.
:return: mapping between fieldname and value of account move to create
:rtype: dict
'''
move_obj = self.pool.get('account.move')
seq_obj = self.pool.get('ir.sequence')
voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
if voucher_brw.number:
name = voucher_brw.number
elif voucher_brw.journal_id.sequence_id:
name = seq_obj.next_by_id(cr, uid, voucher_brw.journal_id.sequence_id.id)
else:
raise osv.except_osv(_('Error !'),
_('Please define a sequence on the journal !'))
if not voucher_brw.reference:
ref = name.replace('/','')
else:
ref = voucher_brw.reference
move = {
'name': name,
'journal_id': voucher_brw.journal_id.id,
'narration': voucher_brw.narration,
'date': voucher_brw.date,
'ref': ref,
'period_id': voucher_brw.period_id and voucher_brw.period_id.id or False
}
return move
def _get_exchange_lines(self, cr, uid, line, move_id, amount_residual, company_currency, current_currency, context=None):
'''
Prepare the two lines due to currency rate difference.
:param line: browse record of the voucher.line for which we want to create currency rate difference accounting entries
:param move_id: Account move wher the move lines will be.
:param amount_residual: Amount to be posted.
:param company_currency: id of currency of the company to which the voucher belong
:param current_currency: id of currency of the voucher
:return: the account move line and its counterpart to create, depicted as mapping between fieldname and value
:rtype: tuple of dict
'''
if not line.voucher_id.exchange_acc_id.id:
raise osv.except_osv(_('Error!'), _('You must provide an account for the exchange difference.'))
move_line = {
'journal_id': line.voucher_id.journal_id.id,
'period_id': line.voucher_id.period_id.id,
'name': _('change')+': '+(line.name or '/'),
'account_id': line.account_id.id,
'move_id': move_id,
'partner_id': line.voucher_id.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'amount_currency': 0.0,
'quantity': 1,
'credit': amount_residual > 0 and amount_residual or 0.0,
'debit': amount_residual < 0 and -amount_residual or 0.0,
'date': line.voucher_id.date,
}
move_line_counterpart = {
'journal_id': line.voucher_id.journal_id.id,
'period_id': line.voucher_id.period_id.id,
'name': _('change')+': '+(line.name or '/'),
'account_id': line.voucher_id.exchange_acc_id.id,
'move_id': move_id,
'amount_currency': 0.0,
'partner_id': line.voucher_id.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'quantity': 1,
'debit': amount_residual > 0 and amount_residual or 0.0,
'credit': amount_residual < 0 and -amount_residual or 0.0,
'date': line.voucher_id.date,
}
return (move_line, move_line_counterpart)
def voucher_move_line_create(self, cr, uid, voucher_id, line_total, move_id, company_currency, current_currency, context=None):
'''
Create one account move line, on the given account move, per voucher line where amount is not 0.0.
It returns Tuple with tot_line what is total of difference between debit and credit and
a list of lists with ids to be reconciled with this format (total_deb_cred,list_of_lists).
:param voucher_id: Voucher id what we are working with
:param line_total: Amount of the first line, which correspond to the amount we should totally split among all voucher lines.
:param move_id: Account move wher those lines will be joined.
:param company_currency: id of currency of the company to which the voucher belong
:param current_currency: id of currency of the voucher
:return: Tuple build as (remaining amount not allocated on voucher lines, list of account_move_line created in this method)
:rtype: tuple(int, list of int)
'''
move_line_obj = self.pool.get('account.move.line')
currency_obj = self.pool.get('res.currency')
tot_line = line_total
rec_lst_ids = []
voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
for line in voucher_brw.line_ids:
#create one move line per voucher line where amount is not 0.0
if not line.amount:
continue
#we check if the voucher line is fully paid or not and create a move line to balance the payment and initial invoice if needed
if line.amount == line.amount_unreconciled:
amount = currency_obj.compute(cr, uid, current_currency, company_currency, line.untax_amount or line.amount, context=context)
amount_residual = line.move_line_id.amount_residual - amount #residual amount in company currency
else:
amount = currency_obj.compute(cr, uid, current_currency, company_currency, line.untax_amount or line.amount, context=context)
amount_residual = 0.0
move_line = {
'journal_id': voucher_brw.journal_id.id,
'period_id': voucher_brw.period_id.id,
'name': line.name or '/',
'account_id': line.account_id.id,
'move_id': move_id,
'partner_id': voucher_brw.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'analytic_account_id': line.account_analytic_id and line.account_analytic_id.id or False,
'quantity': 1,
'credit': 0.0,
'debit': 0.0,
'date': voucher_brw.date
}
if amount < 0:
amount = -amount
if line.type == 'dr':
line.type = 'cr'
else:
line.type = 'dr'
if (line.type=='dr'):
tot_line += amount
move_line['debit'] = amount
else:
tot_line -= amount
move_line['credit'] = amount
if voucher_brw.tax_id and voucher_brw.type in ('sale', 'purchase'):
move_line.update({
'account_tax_id': voucher_brw.tax_id.id,
})
if move_line.get('account_tax_id', False):
tax_data = tax_obj.browse(cr, uid, [move_line['account_tax_id']], context=context)[0]
if not (tax_data.base_code_id and tax_data.tax_code_id):
raise osv.except_osv(_('No Account Base Code and Account Tax Code!'),_("You have to configure account base code and account tax code on the '%s' tax!") % (tax_data.name))
sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1
move_line['amount_currency'] = company_currency <> current_currency and sign * line.amount or False
voucher_line = move_line_obj.create(cr, uid, move_line)
rec_ids = [voucher_line, line.move_line_id.id]
if amount_residual:
# Change difference entry
exch_lines = self._get_exchange_lines(cr, uid, line, move_id, amount_residual, company_currency, current_currency, context=context)
new_id = move_line_obj.create(cr, uid, exch_lines[0],context)
move_line_obj.create(cr, uid, exch_lines[1], context)
rec_ids.append(new_id)
if line.move_line_id.id:
rec_lst_ids.append(rec_ids)
return (tot_line, rec_lst_ids)
def writeoff_move_line_get(self, cr, uid, voucher_id, line_total, move_id, name, company_currency, current_currency, context=None):
'''
Set a dict to be use to create the writeoff move line.
:param voucher_id: Id of voucher what we are creating account_move.
:param line_total: Amount remaining to be allocated on lines.
:param move_id: Id of account move where this line will be added.
:param name: Description of account move line.
:param company_currency: id of currency of the company to which the voucher belong
:param current_currency: id of currency of the voucher
:return: mapping between fieldname and value of account move line to create
:rtype: dict
'''
move_line_obj = self.pool.get('account.move.line')
currency_obj = self.pool.get('res.currency')
move_line = {}
voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
current_currency_obj = voucher_brw.currency_id or voucher_brw.journal_id.company_id.currency_id
if not currency_obj.is_zero(cr, uid, current_currency_obj, line_total):
diff = line_total
account_id = False
write_off_name = ''
if voucher_brw.payment_option == 'with_writeoff':
account_id = voucher_brw.writeoff_acc_id.id
write_off_name = voucher_brw.comment
elif voucher_brw.type in ('sale', 'receipt'):
account_id = voucher_brw.partner_id.property_account_receivable.id
else:
account_id = voucher_brw.partner_id.property_account_payable.id
move_line = {
'name': write_off_name or name,
'account_id': account_id,
'move_id': move_id,
'partner_id': voucher_brw.partner_id.id,
'date': voucher_brw.date,
'credit': diff > 0 and diff or 0.0,
'debit': diff < 0 and -diff or 0.0,
'amount_currency': company_currency <> current_currency and voucher_brw.writeoff_amount or False,
'currency_id': company_currency <> current_currency and current_currency or False,
}
return move_line
def _get_company_currency(self, cr, uid, voucher_id, context=None):
'''
Get the currency of the actual company.
:param voucher_id: Id of the voucher what i want to obtain company currency.
:return: currency id of the company of the voucher
:rtype: int
'''
return self.pool.get('account.voucher').browse(cr,uid,voucher_id,context).journal_id.company_id.currency_id.id
def _get_current_currency(self, cr, uid, voucher_id, context=None):
'''
Get the currency of the voucher.
:param voucher_id: Id of the voucher what i want to obtain current currency.
:return: currency id of the voucher
:rtype: int
'''
voucher = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
return voucher.currency_id.id or self._get_company_currency(cr,uid,voucher.id,context)
def action_move_line_create(self, cr, uid, ids, context=None):
def _get_payment_term_lines(term_id, amount):
term_pool = self.pool.get('account.payment.term')
if term_id and amount:
terms = term_pool.compute(cr, uid, term_id, amount)
return terms
return False
'''
Confirm the vouchers given in ids and create the journal entries for each of them
'''
if context is None:
context = {}
move_pool = self.pool.get('account.move')
@@ -665,198 +954,44 @@ class account_voucher(osv.osv):
currency_pool = self.pool.get('res.currency')
tax_obj = self.pool.get('account.tax')
seq_obj = self.pool.get('ir.sequence')
for inv in self.browse(cr, uid, ids, context=context):
if inv.move_id:
for voucher in self.browse(cr, uid, ids, context=context):
if voucher.move_id:
continue
context_multi_currency = context.copy()
context_multi_currency.update({'date': inv.date})
if inv.number:
name = inv.number
elif inv.journal_id.sequence_id:
name = seq_obj.next_by_id(cr, uid, inv.journal_id.sequence_id.id)
else:
raise osv.except_osv(_('Error !'), _('Please define a sequence on the journal !'))
if not inv.reference:
ref = name.replace('/','')
else:
ref = inv.reference
move = {
'name': name,
'journal_id': inv.journal_id.id,
'narration': inv.narration,
'date': inv.date,
'ref': ref,
'period_id': inv.period_id and inv.period_id.id or False
}
move_id = move_pool.create(cr, uid, move)
#create the first line manually
company_currency = inv.journal_id.company_id.currency_id.id
current_currency = inv.currency_id.id or company_currency
current_currency_obj = inv.currency_id or inv.journal_id.company_id.currency_id
debit = 0.0
credit = 0.0
# TODO: is there any other alternative then the voucher type ??
# -for sale, purchase we have but for the payment and receipt we do not have as based on the bank/cash journal we can not know its payment or receipt
if inv.type in ('purchase', 'payment'):
credit = currency_pool.compute(cr, uid, current_currency, company_currency, inv.amount, context=context_multi_currency)
elif inv.type in ('sale', 'receipt'):
debit = currency_pool.compute(cr, uid, current_currency, company_currency, inv.amount, context=context_multi_currency)
if debit < 0:
credit = -debit
debit = 0.0
if credit < 0:
debit = -credit
credit = 0.0
sign = debit - credit < 0 and -1 or 1
#create the first line of the voucher, the payment made
move_line = {
'name': inv.name or '/',
'debit': debit,
'credit': credit,
'account_id': inv.account_id.id,
'move_id': move_id,
'journal_id': inv.journal_id.id,
'period_id': inv.period_id.id,
'partner_id': inv.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'amount_currency': company_currency <> current_currency and sign * inv.amount or 0.0,
'date': inv.date,
'date_maturity': inv.date_due
}
move_line_pool.create(cr, uid, move_line)
company_currency = self._get_company_currency(cr, uid, voucher.id, context)
current_currency = self._get_current_currency(cr, uid, voucher.id, context)
context = self._sel_context(cr, uid, voucher.id, context)
#Create the account move record.
move_id = move_pool.create(cr, uid, self.account_move_get(cr, uid, voucher.id, context=context), context=context)
# Get the name of the account_move just created
name = move_pool.browse(cr, uid, move_id, context=context).name
#Create the first line of the voucher
move_line_id = move_line_pool.create(cr, uid, self.first_move_line_get(cr,uid,voucher.id, move_id, company_currency, current_currency, context), context)
move_line_brw = move_line_pool.browse(cr, uid, move_line_id, context=context)
line_total = move_line_brw.debit - move_line_brw.credit
rec_list_ids = []
line_total = debit - credit
if inv.type == 'sale':
line_total = line_total - currency_pool.compute(cr, uid, current_currency, company_currency, inv.tax_amount, context=context_multi_currency)
elif inv.type == 'purchase':
line_total = line_total + currency_pool.compute(cr, uid, current_currency, company_currency, inv.tax_amount, context=context_multi_currency)
if voucher.type == 'sale':
line_total = line_total - currency_pool.compute(cr, uid, current_currency, company_currency, voucher.tax_amount, context=context)
elif voucher.type == 'purchase':
line_total = line_total + currency_pool.compute(cr, uid, current_currency, company_currency, voucher.tax_amount, context=context)
#create one move line per voucher line where amount is not 0.0
line_total, rec_list_ids = self.voucher_move_line_create(cr, uid, voucher.id, line_total, move_id, company_currency, current_currency, context)
for line in inv.line_ids:
#create one move line per voucher line where amount is not 0.0
if not line.amount:
continue
#we check if the voucher line is fully paid or not and create a move line to balance the payment and initial invoice if needed
if line.amount == line.amount_unreconciled:
amount = currency_pool.compute(cr, uid, current_currency, company_currency, line.untax_amount or line.amount, context=context_multi_currency)
amount_residual = line.move_line_id.amount_residual - amount #residual amount in company currency
else:
amount = currency_pool.compute(cr, uid, current_currency, company_currency, line.untax_amount or line.amount, context=context_multi_currency)
amount_residual = 0.0
move_line = {
'journal_id': inv.journal_id.id,
'period_id': inv.period_id.id,
'name': line.name or '/',
'account_id': line.account_id.id,
'move_id': move_id,
'partner_id': inv.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'analytic_account_id': line.account_analytic_id and line.account_analytic_id.id or False,
'quantity': 1,
'credit': 0.0,
'debit': 0.0,
'date': inv.date
}
if amount < 0:
amount = -amount
if line.type == 'dr':
line.type = 'cr'
else:
line.type = 'dr'
if (line.type=='dr'):
line_total += amount
move_line['debit'] = amount
else:
line_total -= amount
move_line['credit'] = amount
if inv.tax_id and inv.type in ('sale', 'purchase'):
move_line.update({
'account_tax_id': inv.tax_id.id,
})
if move_line.get('account_tax_id', False):
tax_data = tax_obj.browse(cr, uid, [move_line['account_tax_id']], context=context)[0]
if not (tax_data.base_code_id and tax_data.tax_code_id):
raise osv.except_osv(_('No Account Base Code and Account Tax Code!'),_("You have to configure account base code and account tax code on the '%s' tax!") % (tax_data.name))
sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1
move_line['amount_currency'] = company_currency <> current_currency and sign * line.amount or 0.0
voucher_line = move_line_pool.create(cr, uid, move_line)
rec_ids = [voucher_line, line.move_line_id.id]
# Change difference entry
if amount_residual:
if not inv.exchange_acc_id.id:
raise osv.except_osv(_('Error!'), _('You must provide an account for the exchange difference.'))
move_line = {
'journal_id': inv.journal_id.id,
'period_id': inv.period_id.id,
'name': _('change')+': '+(line.name or '/'),
'account_id': line.account_id.id,
'move_id': move_id,
'partner_id': inv.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'amount_currency': 0.0,
'quantity': 1,
'credit': amount_residual > 0 and amount_residual or 0.0,
'debit': amount_residual < 0 and -amount_residual or 0.0,
'date': inv.date
}
new_id = move_line_pool.create(cr, uid, move_line)
move_line = {
'journal_id': inv.journal_id.id,
'period_id': inv.period_id.id,
'name': _('change')+': '+(line.name or '/'),
'account_id': inv.exchange_acc_id.id,
'move_id': move_id,
'amount_currency': 0.0,
'partner_id': inv.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False,
'quantity': 1,
'debit': amount_residual > 0 and amount_residual or 0.0,
'credit': amount_residual < 0 and -amount_residual or 0.0,
'date': inv.date
}
move_line_pool.create(cr, uid, move_line)
rec_ids.append(new_id)
if line.move_line_id.id:
rec_list_ids.append(rec_ids)
if not currency_pool.is_zero(cr, uid, current_currency_obj, line_total):
diff = line_total
account_id = False
write_off_name = ''
if inv.payment_option == 'with_writeoff':
account_id = inv.writeoff_acc_id.id
write_off_name = inv.comment
elif inv.type in ('sale', 'receipt'):
account_id = inv.partner_id.property_account_receivable.id
else:
account_id = inv.partner_id.property_account_payable.id
move_line = {
'name': write_off_name or name,
'account_id': account_id,
'move_id': move_id,
'partner_id': inv.partner_id.id,
'date': inv.date,
'credit': diff > 0 and diff or 0.0,
'debit': diff < 0 and -diff or 0.0,
#'amount_currency': company_currency <> current_currency and currency_pool.compute(cr, uid, company_currency, current_currency, diff * -1, context=context_multi_currency) or 0.0,
#'currency_id': company_currency <> current_currency and current_currency or False,
}
move_line_pool.create(cr, uid, move_line)
self.write(cr, uid, [inv.id], {
#create the writeoff line if needed
ml_writeoff = self.writeoff_move_line_get(cr, uid, voucher.id, line_total, move_id, name, company_currency, current_currency, context)
if ml_writeoff:
ml_writeoff_id = move_line_pool.create(cr, uid, ml_writeoff, context)
#We post the voucher.
self.write(cr, uid, [voucher.id], {
'move_id': move_id,
'state': 'posted',
'number': name,
})
if inv.journal_id.entry_posted:
if voucher.journal_id.entry_posted:
move_pool.post(cr, uid, [move_id], context={})
#We automatically reconcile the account move lines.
for rec_ids in rec_list_ids:
if len(rec_ids) >= 2:
move_line_pool.reconcile_partial(cr, uid, rec_ids, writeoff_acc_id=inv.exchange_acc_id.id, writeoff_period_id=inv.period_id.id, writeoff_journal_id=inv.journal_id.id)
move_line_pool.reconcile_partial(cr, uid, rec_ids, writeoff_acc_id=voucher.exchange_acc_id.id, writeoff_period_id=voucher.period_id.id, writeoff_journal_id=voucher.journal_id.id)
return True
def copy(self, cr, uid, id, default={}, context=None):
@@ -1056,7 +1191,7 @@ class account_bank_statement_line(osv.osv):
for obj in self.browse(cr, uid, ids, context=context):
if obj.voucher_id:
diff = abs(obj.amount) - obj.voucher_id.amount
if not self.pool.get('res.currency').is_zero(cr, uid, obj.voucher_id.currency_id, diff):
if not self.pool.get('res.currency').is_zero(cr, uid, obj.statement_id.currency, diff):
return False
return True
@@ -0,0 +1,344 @@
-
In order to check the Account_voucher module with multi-currency in OpenERP,
I create 2 Invoices in USD and make 2 Payments in USD based on the currency rating on that particular date
-
I create currency USD in OpenERP for January of 1.333333 Rate
-
!python {model: res.currency.rate}: |
from datetime import datetime
curr_id = self.pool.get('res.currency').search(cr, uid, [('name', '=', 'USD')])[0]
date = '%s-01-01' %(datetime.now().year)
ids = self.search(cr, uid, [('currency_id','=',curr_id), ('name', '=', date)])
self.write(cr, uid, ids, {'rate': 1.333333})
-
I create currency USD in OpenERP for February of 1.250000 Rate
-
!record {model: res.currency.rate, id: feb_usd}:
currency_id: base.USD
name: !eval "'%s-02-01' %(datetime.now().year)"
rate: 1.250000
-
I create currency USD in OpenERP for March of 1.111111 Rate
-
!record {model: res.currency.rate, id: mar_usd}:
currency_id: base.USD
name: !eval "'%s-03-01' %(datetime.now().year)"
rate: 1.111111
-
I create currency USD in OpenERP for April of 1.052632 Rate
-
!record {model: res.currency.rate, id: apr_usd}:
currency_id: base.USD
name: !eval "'%s-04-01' %(datetime.now().year)"
rate: 1.052632
-
I create a bank journal with USD as currency
-
!record {model: account.journal, id: bank_journal_USD}:
name: Bank Journal(USD)
code: BUSD
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.USD
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create new partner Mark Strauss.
-
!record {model: res.partner, id: res_partner_strauss0}:
address:
- city: paris
country_id: base.fr
name: Mark Strauss
street: 1 rue Rockfeller
type: invoice
zip: '75016'
name: Mr. Mark Strauss
-
I create the first invoice on 1st January for 200 USD
-
!record {model: account.invoice, id: account_invoice_jan}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
period_id: account.period_1
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 200.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_strauss0
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_invoice_jan}
-
I check that first invoice move is correct for debtor account (debit - credit == 150.0)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_jan"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 150.0), "Invoice move is not correct for debtors account"
-
I create the second invoice on 1st February for 100 USD
-
!record {model: account.invoice, id: account_invoice_feb}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
period_id: account.period_2
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 100.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_strauss0
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_invoice_feb}
-
I check that second invoice move is correct for debtor account (debit - credit == 80)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_feb"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 80), "Invoice move is not correct for debtors account"
-
I create the first voucher of payment
<create with values 240 USD, journal USD, and fill amounts 180 for the invoice of 200$ and 70 for the invoice of 100$>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_strauss0"), ref('bank_journal_USD'), 240.00, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 240.00,
'company_id': ref('base.main_company'),
'currency_id': ref('base.USD'),
'journal_id': ref('bank_journal_USD'),
'partner_id': ref('res_partner_strauss0'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-03-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'comment': 'Write Off',
'name': 'First payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 200.00:
item['amount'] = 180.00
else:
item['amount'] = 70.00
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 10.0
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.writeoff_amount == 10.0), "Writeoff amount is not 10.0"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that the move of my first voucher is valid
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with -180 and -70 as amount_currency columns and that their credit columns are respectively 162 and 63
-
I check that my write-off is correct. 9 debit and 10 amount_currency
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == -180.00:
assert move_line.credit == 162.00, "Debtor account has wrong entry."
elif move_line.amount_currency == -70.00:
assert move_line.credit == 63.00, "Debtor account has wrong entry."
elif move_line.amount_currency == 10.00:
assert move_line.debit == 9.00, "Writeoff amount is wrong."
-
I check the residual amount of Invoice1, should be 20 in amount_currency
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_jan"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 20.0) , "Residual amount is not correct for first Invoice"
-
I check the residual amuont of Invoice2, should be 30 in residual currency and 24 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_feb"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 30.0) , "Residual amount is not correct for first Invoice"
-
I create the second voucher of payment
<create with values 45 USD, journal USD, and fill amounts 20 for the invoice of 200$ and 30 for the invoice of 100$>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_strauss0"), ref('bank_journal_USD'), 45.00, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 45.00,
'exchange_acc_id': ref('account.o_expense'),
'company_id': ref('base.main_company'),
'currency_id': ref('base.USD'),
'journal_id': ref('bank_journal_USD'),
'partner_id': ref('res_partner_strauss0'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-04-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'comment': 'Write Off',
'name': 'Second payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 20.00:
item['amount'] = 20.00
else:
item['amount'] = 30.00
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 5.0
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.writeoff_amount == 5.0), "Writeoff amount is not 5.0"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that the move of my second voucher is valid
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with -20 and -30 as amount_currency columns and their credit columns are respectively 19 and 28.5
-
I check that my currency rate difference is correct. 8.5 in credit with no amount_currency
-
I check that the total reconcilation created entries as expected
-
I check that my writeoff is correct. 4.75 debit and 5 amount_currency
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_strauss0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
reconcile_a = reconcile_b = False
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == -20.00:
assert move_line.reconcile_id.id, "The invoice of 200$ is not fully reconciled"
reconcile_b = move_line.reconcile_id.id
elif move_line.amount_currency == -30.00:
assert move_line.reconcile_id.id, "The invoice of 100$ is not fully reconciled"
reconcile_a = move_line.reconcile_id.id
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == -20.00:
assert move_line.credit == 19.00, "Debtor account has wrong entry."
elif move_line.amount_currency == -30.00:
assert move_line.credit == 28.50, "Debtor account has wrong entry."
elif move_line.amount_currency == 5.00:
assert move_line.debit == 4.75, "Writeoff amount is wrong."
elif move_line.debit == 11.5 and move_line.account_id.reconcile:
assert move_line.amount_currency == 0.0 and move_line.reconcile_id.id == reconcile_a, "Exchange difference entry for the invoice of 100$ is wrong"
elif move_line.debit == 31.0 and move_line.account_id.reconcile:
assert move_line.amount_currency == 0.0 and move_line.reconcile_id.id == reconcile_b, "Exchange difference entry for the invoice of 200$ is wrong"
-
I check the residual amount of Invoice1, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_jan"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
-
I check the residual amuont of Invoice2, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_feb"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for second Invoice"
@@ -0,0 +1,328 @@
-
In order to check the Account_voucher module with multi-currency in OpenERP,
I create 2 Invoices in USD and make 2 Payments one in USD and another in EUR, based on the currency rating on that particular date
-
I create a bank journal with EUR as currency
-
!record {model: account.journal, id: bank_journal_EUR}:
name: Bank Journal(EUR)
code: BEUR
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.EUR
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create a bank journal with USD as currency
-
!record {model: account.journal, id: bank_journal_USD}:
name: Bank Journal(USD)
code: BUSD
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.USD
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create a new partner Robert Clements
-
!record {model: res.partner, id: res_partner_clements0}:
address:
- city: marseille
country_id: base.fr
name: Robert
street: 1 rue Rockfeller
type: invoice
zip: '13016'
name: Mr.Robert Clements
-
I create the first invoice on 1st January for 200 USD
-
!record {model: account.invoice, id: account_first_invoice_jan_suppl}:
account_id: account.a_pay
type : in_invoice
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
period_id: account.period_1
invoice_line:
- account_id: account.a_expense
name: '[PC1] Basic PC'
price_unit: 200.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_clements0
reference_type: none
check_total : 200
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan_suppl}
-
I check that first invoice move is correct for debtor account(debit - credit == -150)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_suppl"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == -150.00), "Invoice move is incorrect for debtors account"
-
I create the second invoice on 1st February for 100 USD
-
!record {model: account.invoice, id: account_second_invoice_feb_suppl}:
account_id: account.a_pay
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
period_id: account.period_2
type : in_invoice
invoice_line:
- account_id: account.a_expense
name: '[PC1] Basic PC'
price_unit: 100.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_clements0
reference_type: none
check_total : 100.0
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_second_invoice_feb_suppl}
-
I check that second invoice move is correct for debtor account (debit - credit == -80)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_suppl"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == -80), "Invoice move is incorrect for debtors account"
-
I create the first voucher of payment
<create with values 240 EUR, journal EUR, and fills amount 180 for the invoice of 200$ and 70 for the invoice of 100$>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_clements0"), ref('bank_journal_EUR'), 240.0, 2, ttype='payment', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 240.0,
'company_id': ref('base.main_company'),
'currency_id': ref('base.EUR'),
'journal_id': ref('bank_journal_EUR'),
'partner_id': ref('res_partner_clements0'),
'period_id': ref('account.period_3'),
'type': 'payment',
'date': time.strftime("%Y-03-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'comment': 'Write Off',
'name': 'First payment',
}
if not res['value']['line_dr_ids']:
res['value']['line_dr_ids'] = [{'type': 'dr', 'account_id': ref('account.a_pay'),}]
for item in res['value']['line_dr_ids']:
if item['amount_unreconciled'] == 200.00:
item['amount'] = 180.00
else:
item['amount'] = 70.00
vals['line_dr_ids'] = [(0,0,i) for i in res['value']['line_dr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is -15.0
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.writeoff_amount == -15.0), "Writeoff amount is not -15.0"
-
I check that currency rate difference is 34.0
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.currency_rate_difference == 34.0), "Currency rate difference is not 34.0"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that the move of my voucher is valid
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
-
I check that my creditor account is correct
-
I check that the creditor account has 2 new lines with 180 and 70 in amount_currency columns and their debit columns are respectively 135 and 56 and currency is USD($).
-
I check that my currency rate difference is correct. -34 in credit with no amount_currency
-
I check that my writeoff is correct. -15 in credit with no amount_currency
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_clements0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == 180.00:
assert move_line.debit == 135.00, "Creditor account has wrong entry."
elif move_line.amount_currency == 70.00:
assert move_line.debit == 56.00, "Debtor account has wrong entry."
elif move_line.debit == 34.00:
assert move_line.amount_currency == 0.00, "Incorrect Currency Difference."
elif move_line.debit == 15.00:
assert move_line.amount_currency == 0.00, "Writeoff amount is wrong."
-
I check the residual amount of Invoice1, should be 20 in residual currency and 15 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_suppl"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 20.0 and move_line.amount_residual == 15) , "Residual amount is not correct for first Invoice"
-
I check the residual amuont of Invoice2, should be 30 in residual currency and 24 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_suppl"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 30 and move_line.amount_residual == 24) , "Residual amount is not correct for second Invoice"
-
I create the second voucher of payment
<create with values 45 USD, journal USD, and fill amounts 20 for the invoice of 200$ and 30 for the invoice of 100$>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_clements0"), ref('bank_journal_EUR'), 45.0, 2, ttype='payment', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 45.0,
'company_id': ref('base.main_company'),
'currency_id': ref('base.USD'),
'journal_id': ref('bank_journal_USD'),
'partner_id': ref('res_partner_clements0'),
'period_id': ref('account.period_3'),
'type': 'payment',
'date': time.strftime("%Y-04-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'comment': 'Write Off',
'name': 'Second payment',
}
if not res['value']['line_dr_ids']:
res['value']['line_dr_ids'] = [{'type': 'dr', 'account_id': ref('account.a_pay'),}]
for item in res['value']['line_dr_ids']:
if item['amount_unreconciled'] == 20.00:
item['amount'] = 20.00
else:
item['amount'] = 30.00
vals['line_dr_ids'] = [(0,0,i) for i in res['value']['line_dr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is -5.0
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.writeoff_amount == 5.0), "Writeoff amount is not 5.0"
-
I check that currency rate difference is 8.50
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.currency_rate_difference == 8.50), "Currency rate difference is not 8.50"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that my voucher state is posted
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert voucher_id.state == 'posted', "Voucher state is not posted"
-
I check that my creditor account is correct
-
I check that the creditor account has 2 new lines with 20 and 30 in amount_currency columns and their debit columns are respectively 15 and 24 and currency is USD($).
-
I check that my currency rate difference is correct. 8.50 in debit with no amount_currency
-
I check that my writeoff is correct. 4.75 in credit and 5 in amount_currency
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_clements0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == 20.00:
assert move_line.debit == 15.00, "Debtor account has wrong entry."
elif move_line.amount_currency == 30.00:
assert move_line.debit == 24.00, "Debtor account has wrong entry."
elif move_line.debit == 8.50:
assert move_line.amount_currency == 0.00, "Incorrect Currency Difference."
elif move_line.amount_currency == -5.00:
assert move_line.credit == 4.75, "Writeoff amount is wrong."
-
I check the residual amount of invoice 1, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_suppl"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
-
I check the residual amount of invoice 2, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_suppl"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for second Invoice"
@@ -0,0 +1,340 @@
-
In order to check the Account_voucher module with multi-currency in OpenERP,
I create 2 Invoices in USD and make 2 Payments one in USD and another in EUR, based on the currency rating on that particular date
-
I modify the debtor account in order to make sure there is no currency_id linked
-
!python {model: account.account}: |
from datetime import datetime
ids = self.search(cr, uid, [('name', 'ilike', 'debtor')])
self.write(cr, uid, ids, {'currency_id': False})
-
I create currency USD in OpenERP for January of 1.333333 Rate
-
!python {model: res.currency.rate}: |
from datetime import datetime
curr_id = self.pool.get('res.currency').search(cr, uid, [('name', '=', 'USD')])[0]
date = '%s-01-01' %(datetime.now().year)
ids = self.search(cr, uid, [('currency_id', '=', curr_id), ('name', '=', date)])
self.write(cr, uid, ids, {'rate': 1.333333})
-
I create currency USD in OpenERP for February of 1.250000 Rate
-
!record {model: res.currency.rate, id: febr_usd}:
currency_id: base.USD
name: !eval "'%s-02-01' %(datetime.now().year)"
rate: 1.250000
-
I create currency USD in OpenERP for March of 1.111111 Rate
-
!record {model: res.currency.rate, id: marc_usd}:
currency_id: base.USD
name: !eval "'%s-03-01' %(datetime.now().year)"
rate: 1.111111
-
I create currency USD in OpenERP for April of 1.052632 Rate
-
!record {model: res.currency.rate, id: apri_usd}:
currency_id: base.USD
name: !eval "'%s-04-01' %(datetime.now().year)"
rate: 1.052632
-
I create a bank journal with EUR as currency
-
!record {model: account.journal, id: bank_journal_EUR}:
name: Bank Journal(EUR)
code: BEUR
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.EUR
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create a bank journal with USD as currency
-
!record {model: account.journal, id: bank_journal_USD}:
name: Bank Journal(USD)
code: BUSD
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.USD
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create a new partner Michael Geller
-
!record {model: res.partner, id: res_partner_michael0}:
address:
- city: paris
country_id: base.fr
name: Michael
street: 1 rue Rockfeller
type: invoice
zip: '75016'
name: Mr.Michael Geller
-
I create the first invoice on 1st January for 200 USD
-
!record {model: account.invoice, id: account_first_invoice_jan}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
period_id: account.period_1
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 200.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_michael0
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan}
-
I check that first invoice move is correct for debtor account(debit - credit == 150)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 150.00), "Invoice move is incorrect for debtors account"
-
I create the second invoice on 1st February for 100 USD
-
!record {model: account.invoice, id: account_second_invoice_feb}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
period_id: account.period_2
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 100.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_michael0
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_second_invoice_feb}
-
I check that second invoice move is correct for debtor account (debit - credit == 80)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 80), "Invoice move is incorrect for debtors account"
-
I create the first voucher of payment
<create with values 200 EUR (€), journal EUR, and fills amount 130€ for the invoice of 200$ and 70€ for the invoice of 100$>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_michael0"), ref('bank_journal_EUR'), 240.0, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 200.0,
'company_id': ref('base.main_company'),
'currency_id': ref('base.EUR'),
'journal_id': ref('bank_journal_EUR'),
'partner_id': ref('res_partner_michael0'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-03-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'comment': 'Write Off',
'name': 'First payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 150.00:
item['amount'] = 130.00
else:
item['amount'] = 70.00
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michael0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that the move of my voucher is valid
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michael0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with 0 in amount_currency columns and their credit columns are 130 and 70
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michael0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.amount_currency == 0.00, "A line has the 'amount_currency' column filled"
-
I check the residual amount of Invoice1, should be 55.56 in residual currency and 20 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 55.56 and move_line.amount_residual == 20) , "Residual amount is not correct for first Invoice"
- toto
I check the residual amuont of Invoice2, should be 22.22 in residual currency and 10 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 22.22 and move_line.amount_residual == 10) , "Residual amount is not correct for second Invoice"
-
I create the second voucher of payment
<create with values 80 USD, journal USD, and fully reconcile the 2 invoices>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_michael0"), ref('bank_journal_USD'), 80.0, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 80.0,
'company_id': ref('base.main_company'),
'currency_id': ref('base.USD'),
'journal_id': ref('bank_journal_USD'),
'partner_id': ref('res_partner_michael0'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-04-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'exchange_acc_id': ref('account.o_expense'),
'comment': 'Write Off',
'name': 'Second payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 55.56:
item['amount'] = 55.56
else:
item['amount'] = 22.22
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 2.22
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michael0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (round(voucher_id.writeoff_amount, 2) == 2.22), "Writeoff amount is not 2.22$"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michael0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that my voucher state is posted
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michael0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert voucher_id.state == 'posted', "Voucher state is not posted"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with -55.56 and -22.22 in amount_currency columns and their credit columns are respectively 52.78 and 21.11 and currency is USD($).
-
I check that my currency rate difference is correct.
-
I check that my writeoff is correct. 2.11 in credit and 2.22 in amount_currency
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michael0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
reconcile_a = reconcile_b = False
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == -22.22:
assert move_line.reconcile_id.id, "The invoice of 200$ is not fully reconciled"
reconcile_b = move_line.reconcile_id.id
elif move_line.amount_currency == -55.56:
assert move_line.reconcile_id.id, "The invoice of 100$ is not fully reconciled"
reconcile_a = move_line.reconcile_id.id
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == -55.56:
assert move_line.credit == 52.78, "Debtor account has wrong entry."
elif move_line.amount_currency == -22.22:
assert move_line.credit == 21.11, "Debtor account has wrong entry."
elif move_line.credit == 11.11 and move_line.account_id.reconcile:
assert move_line.amount_currency == 0.00 and move_line.reconcile_id.id == reconcile_b, "Incorrect Currency Difference."
elif move_line.credit == 32.78 and move_line.account_id.reconcile:
assert move_line.amount_currency == 0.00 and move_line.reconcile_id.id == reconcile_a, "Incorrect Currency Difference."
elif move_line.amount_currency == 2.22:
assert move_line.credit == 2.11, "Writeoff amount is wrong."
-
I check the residual amount of invoice 1, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
-
I check the residual amuont of invoice 2, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for second Invoice"
@@ -0,0 +1,343 @@
-
In order to check the Account_voucher module with multi-currency in OpenERP,
I create 2 Invoices in USD and make 2 Payments one in USD and another in EUR, based on the currency rating on that particular date
-
I modify the debtor account in order to set the currency_id = USD
-
!python {model: account.account}: |
from datetime import datetime
ids = self.search(cr, uid, [('name', 'ilike', 'debtor')])
self.write(cr, uid, ids, {'currency_id': ref('base.USD')})
-
I create currency USD in OpenERP for January of 1.333333 Rate
-
!python {model: res.currency.rate}: |
from datetime import datetime
curr_id = self.pool.get('res.currency').search(cr, uid, [('name', '=', 'USD')])[0]
date = '%s-01-01' %(datetime.now().year)
ids = self.search(cr, uid, [('currency_id', '=', curr_id), ('name', '=', date)])
self.write(cr, uid, ids, {'rate': 1.333333})
-
I create currency USD in OpenERP for February of 1.250000 Rate
-
!record {model: res.currency.rate, id: febr_usd}:
currency_id: base.USD
name: !eval "'%s-02-01' %(datetime.now().year)"
rate: 1.250000
-
I create currency USD in OpenERP for March of 1.111111 Rate
-
!record {model: res.currency.rate, id: marc_usd}:
currency_id: base.USD
name: !eval "'%s-03-01' %(datetime.now().year)"
rate: 1.111111
-
I create currency USD in OpenERP for April of 1.052632 Rate
-
!record {model: res.currency.rate, id: apri_usd}:
currency_id: base.USD
name: !eval "'%s-04-01' %(datetime.now().year)"
rate: 1.052632
-
I create a bank journal with EUR as currency
-
!record {model: account.journal, id: bank_journal_EUR}:
name: Bank Journal(EUR)
code: BEUR
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.EUR
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create a bank journal with USD as currency
-
!record {model: account.journal, id: bank_journal_USD}:
name: Bank Journal(USD)
code: BUSD
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.USD
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create a new partner Michal Gallette
-
!record {model: res.partner, id: res_partner_michal1}:
address:
- city: paris
country_id: base.fr
name: Michal
street: 1 rue Rockfeller
type: invoice
zip: '75016'
name: Mr.Michal Gallette
-
I create the first invoice on 1st January for 200 USD
-
!record {model: account.invoice, id: account_first_invoice_jan_michal}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
period_id: account.period_1
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 200.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_michal1
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan_michal}
-
I check that first invoice move is correct for debtor account(debit - credit == 150)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_michal"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 150.00), "Invoice move is incorrect for debtors account"
-
I create the second invoice on 1st February for 100 USD
-
!record {model: account.invoice, id: account_second_invoice_feb_michal}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
period_id: account.period_2
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 100.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_michal1
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_second_invoice_feb_michal}
-
I check that second invoice move is correct for debtor account (debit - credit == 80)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_michal"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 80), "Invoice move is incorrect for debtors account"
-
I create the first voucher of payment
<create with values 200 EUR (€), journal EUR, and fills amount 130€ for the invoice of 200$ and 70€ for the invoice of 100$>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_michal1"), ref('bank_journal_EUR'), 200.0, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 200.0,
'company_id': ref('base.main_company'),
'currency_id': ref('base.EUR'),
'journal_id': ref('bank_journal_EUR'),
'partner_id': ref('res_partner_michal1'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-03-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'comment': 'Write Off',
'name': 'First payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 150.00:
item['amount'] = 130.00
else:
item['amount'] = 70.00
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michal1'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that the move of my voucher is valid
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michal1'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with 144.44 and 77.78 in amount_currency columns and their credit columns are 130 and 70
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_michal1'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.credit == 70.0:
assert move_line.amount_currency == -77.78, "Wrong debtor entry"
if move_line.credit == 130.0:
assert move_line.amount_currency == -144.44, "Wrong debtor entry"
-
I check the residual amount of Invoice1, should be 55.56 in residual currency and 20 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_michal"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 55.56 and move_line.amount_residual == 20) , "Residual amount is not correct for first Invoice"
- toto
I check the residual amuont of Invoice2, should be 22.22 in residual currency and 10 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_michal"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 22.22 and move_line.amount_residual == 10) , "Residual amount is not correct for second Invoice"
-
I create the second voucher of payment
<create with values 80 USD, journal USD, and fully reconcile the 2 invoices>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_michal1"), ref('bank_journal_USD'), 80.0, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 80.0,
'company_id': ref('base.main_company'),
'currency_id': ref('base.USD'),
'journal_id': ref('bank_journal_USD'),
'partner_id': ref('res_partner_michal1'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-04-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'exchange_acc_id': ref('account.o_expense'),
'comment': 'Write Off',
'name': 'Second payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 55.56:
item['amount'] = 55.56
else:
item['amount'] = 22.22
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 2.22
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michal1'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (round(voucher_id.writeoff_amount, 2) == 2.22), "Writeoff amount is not 2.22$"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michal1'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that my voucher state is posted
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michal1'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert voucher_id.state == 'posted', "Voucher state is not posted"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with -55.56 and -22.22 in amount_currency columns and their credit columns are respectively 52.78 and 21.11 and currency is USD($).
-
I check that my currency rate difference is correct.
-
I check that my writeoff is correct. 2.11 in credit and 2.22 in amount_currency
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_michal1'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
reconcile_a = reconcile_b = False
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == -22.22:
assert move_line.reconcile_id.id, "The invoice of 200$ is not fully reconciled"
reconcile_b = move_line.reconcile_id.id
elif move_line.amount_currency == -55.56:
assert move_line.reconcile_id.id, "The invoice of 100$ is not fully reconciled"
reconcile_a = move_line.reconcile_id.id
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == -55.56:
assert move_line.credit == 52.78, "Debtor account has wrong entry."
elif move_line.amount_currency == -22.22:
assert move_line.credit == 21.11, "Debtor account has wrong entry."
elif move_line.credit == 11.11 and move_line.account_id.reconcile:
assert move_line.amount_currency == 0.00 and move_line.reconcile_id.id == reconcile_b, "Incorrect Currency Difference."
elif move_line.credit == 32.78 and move_line.account_id.reconcile:
assert move_line.amount_currency == 0.00 and move_line.reconcile_id.id == reconcile_a, "Incorrect Currency Difference."
elif move_line.amount_currency == 2.22:
assert move_line.credit == 2.11, "Writeoff amount is wrong."
-
I check the residual amount of invoice 1, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_michal"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
-
I check the residual amuont of invoice 2, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_michal"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for second Invoice"
@@ -0,0 +1,297 @@
-
In order to check the Account_voucher module with multi-currency in OpenERP,
I create 2 Invoices in EUR and make 2 Payments in EUR based on the currency rating on that particular date.
-
I create currency EUR in OpenERP for January of 1.000000 Rate
-
!record {model: res.currency.rate, id: jan_eur}:
currency_id: base.EUR
name: !eval "'%s-01-01' %(datetime.now().year)"
rate: 1.000000
-
I modify the debtor account in order to make sure there is no currency_id linked
-
!python {model: account.account}: |
from datetime import datetime
ids = self.search(cr, uid, [('name', 'ilike', 'debtor')])
self.write(cr, uid, ids, {'currency_id': False})
-
I create a bank journal with EUR as currency
-
!record {model: account.journal, id: bank_journal_EUR}:
name: Bank Journal(EUR)
code: BEUR
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.EUR
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create a new partner Peter Lawson.
-
!record {model: res.partner, id: res_partner_peter0}:
address:
- city: paris
country_id: base.fr
name: Peter
street: 1 rue Rockfeller
type: invoice
zip: '75016'
name: Mr.Peter Lawson
-
I create the first invoice on 1st January for 150 EUR
-
!record {model: account.invoice, id: account_first_invoice_jan_eur}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.EUR
date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
period_id: account.period_1
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 150.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_peter0
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan_eur}
-
I check that first invoice move is correct for debtor account(debit - credit == 150)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_eur"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 150.00), "Invoice move is incorrect for debtors account"
-
I create the second invoice on 1st February for 80 EUR
-
!record {model: account.invoice, id: account_second_invoice_feb_eur}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.EUR
date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
period_id: account.period_1
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 80.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_peter0
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_second_invoice_feb_eur}
-
I check that second invoice move is correct for debtor account (debit - credit == 80)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_eur"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 80.00), "Invoice move is incorrect for debtors account"
-
I create the first voucher of payment
<create with values 120 EUR, journal EUR, and fill amounts 100 for the invoice of 150 EUR and 20 for the invoice of 80 EUR>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_peter0"), ref('bank_journal_EUR'), 120.00, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 120.00,
'company_id': ref('base.main_company'),
'currency_id': ref('base.EUR'),
'journal_id': ref('bank_journal_EUR'),
'partner_id': ref('res_partner_peter0'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-03-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'comment': 'Write Off',
'name': 'First payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 150.00:
item['amount'] = 100.00
else:
item['amount'] = 20.00
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 0.00
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'),('partner_id', '=', ref('res_partner_peter0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.writeoff_amount == 0.00), "Writeoff amount is not 0.00"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment'),('partner_id', '=', ref('res_partner_peter0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that the move of my first voucher is valid
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'),('partner_id', '=', ref('res_partner_peter0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with 0.00 and 0.00 in amount_currency columns and their credit are 20 and 100 respectively
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'),('partner_id', '=', ref('res_partner_peter0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.credit == 20.00:
assert move_line.amount_currency == 0.00, "Debtor account has wrong entry."
elif move_line.credit == 100.00:
assert move_line.amount_currency == 0.00, "Debtor account has wrong entry."
-
I check the residual amount of Invoice1 is 50
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_eur"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 50.0 and move_line.amount_residual == 50.0) , "Residual amount is not correct for first Invoice"
-
I check the residual amuont of Invoice2 is 60
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_eur"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 60.0 and move_line.amount_residual == 60.0) , "Residual amount is not correct for second Invoice"
-
I create the second voucher of payment and check to let open the debtor overpaid amount.
<create with values 120 EUR, journal EUR, and fill amounts 50 for the invoice of 150 EUR and 70 for the invoice of 80 EUR>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_peter0"), ref('bank_journal_EUR'), 120.00, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 120.00,
'company_id': ref('base.main_company'),
'currency_id': ref('base.EUR'),
'journal_id': ref('bank_journal_EUR'),
'partner_id': ref('res_partner_peter0'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-04-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'comment': 'Write Off',
'name': 'Second payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 50.00:
item['amount'] = 50.00
elif item['amount_unreconciled'] == 60.00:
item['amount'] = 70.00
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 0.00
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'),('partner_id', '=', ref('res_partner_peter0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.writeoff_amount == 0.00), "Writeoff amount is not 0"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_peter0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that the move of my second voucher is valid
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_peter0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with 0.00 and 0.00 in amount_currency columns and their credit are 70 and 50
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment'), ('partner_id', '=', ref('res_partner_peter0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.credit == 70.00:
assert move_line.amount_currency == 0.00, "Debtor account has wrong entry."
elif move_line.credit == 50.00:
assert move_line.amount_currency == 0.00, "Debtor account has wrong entry."
-
I check the residual amount of Invoice1 is 0
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_eur"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0 and move_line.amount_residual == 0) , "Residual amount is not correct for first Invoice"
-
I check the residual amuont of Invoice2 is -10
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_second_invoice_feb_eur"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == -10.0 and move_line.amount_residual == -10.0) , "Residual amount is not correct for second Invoice"
@@ -0,0 +1,185 @@
-
In order to check the Account_voucher module with multi-currency in OpenERP,
I create an invoice in CAD and make its Payment in CHF based on the currency rating on that particular date.
-
I create currency CAD in OpenERP for January of 1.338800 Rate
-
!record {model: res.currency.rate, id: jan_cad}:
currency_id: base.CAD
name: !eval "'%s-01-01' %(datetime.now().year)"
rate: 1.338800
-
I create currency CAD in OpenERP for March of 2.000000 Rate
-
!record {model: res.currency.rate, id: mar_cad}:
currency_id: base.CAD
name: !eval "'%s-03-01' %(datetime.now().year)"
rate: 2.000000
-
I create currency CHF in OpenERP for January of 1.308600 Rate
-
!record {model: res.currency.rate, id: jan_chf}:
currency_id: base.CHF
name: !eval "'%s-01-01' %(datetime.now().year)"
rate: 1.308600
-
I create currency CHF in OpenERP for March of 1.250000 Rate
-
!record {model: res.currency.rate, id: mar_chf}:
currency_id: base.CHF
name: !eval "'%s-03-01' %(datetime.now().year)"
rate: 1.25000
-
I create a bank journal with CHF as currency
-
!record {model: account.journal, id: bank_journal_CHF}:
name: Bank Journal(CHF)
code: BCHF
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account.cash
default_credit_account_id: account.cash
currency: base.CHF
company_id: base.main_company
view_id: account.account_journal_bank_view
-
I create a new partner John Armani.
-
!record {model: res.partner, id: res_partner_john0}:
address:
- city: paris
country_id: base.fr
name: John
street: 1 rue Rockfeller
type: invoice
zip: '75016'
name: Mr.John Armani
-
I create the first invoice on 1st January for 200 CAD
-
!record {model: account.invoice, id: account_first_invoice_jan_cad}:
account_id: account.a_recv
address_contact_id: base.res_partner_address_3000
address_invoice_id: base.res_partner_address_3000
company_id: base.main_company
currency_id: base.CAD
date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
period_id: account.period_1
invoice_line:
- account_id: account.a_sale
name: '[PC1] Basic PC'
price_unit: 200.0
quantity: 1.0
product_id: product.product_product_pc1
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_john0
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_first_invoice_jan_cad}
-
I check that first invoice move is correct for debtor account (debit - credit == 149.39)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_cad"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 149.39), "Invoice move is incorrect for debtors account"
-
I create the first voucher of payment
<create with values 200 CHF, journal CHF, and completly pat the invoice of 200 CAD>
-
!python {model: account.voucher}: |
import netsvc, time
vals = {}
res = self.onchange_partner_id(cr, uid, [], ref("res_partner_john0"), ref('bank_journal_CHF'), 200.00, 2, ttype='receipt', date=False)
vals = {
'account_id': ref('account.cash'),
'amount': 200.00,
'company_id': ref('base.main_company'),
'currency_id': ref('base.CHF'),
'journal_id': ref('bank_journal_CHF'),
'partner_id': ref('res_partner_john0'),
'period_id': ref('account.period_3'),
'type': 'receipt',
'date': time.strftime("%Y-03-01"),
'payment_option': 'with_writeoff',
'writeoff_acc_id': ref('account.a_expense'),
'exchange_acc_id': ref('account.o_expense'),
'comment': 'Write Off',
'name': 'First payment',
}
if not res['value']['line_cr_ids']:
res['value']['line_cr_ids'] = [{'type': 'cr', 'account_id': ref('account.a_recv'),}]
for item in res['value']['line_cr_ids']:
if item['amount_unreconciled'] == 186.74:
item['amount'] = 186.74
vals['line_cr_ids'] = [(0,0,i) for i in res['value']['line_cr_ids']]
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 13.26
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_john0'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (round(voucher_id.writeoff_amount,2) == 13.26), "Writeoff amount is not 13.26 CHF"
-
I confirm the voucher
-
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_john0'))])
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
-
I check that the move of my voucher is valid
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_john0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
assert voucher_id.state == 'posted', "Voucher state is not posted"
-
I check that my debtor account is correct
-
I check that the debtor account has 1 new line with -186.74 as amount_currency columns and 149.39 of credit and currency is CHF.
-
I check that my currency rate difference is correct. 0 in debit with no amount_currency
-
I check that my writeoff is correct. 11.05 credit and 13.26 amount_currency
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment'), ('partner_id', '=', ref('res_partner_john0'))])
voucher_id = self.browse(cr, uid, voucher[0])
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == 200:
assert move_line.debit == 160.00, "Bank account has wrong entry."
elif move_line.amount_currency == -186.74:
assert move_line.credit == 149.39, "Debtor account has wrong entry."
elif move_line.debit == 0.00 and move_line.credit == 0.00:
assert move_line.amount_currency == 0.00, "Incorrect Currency Difference."
elif move_line.credit == 10.61:
assert move_line.amount_currency == 13.26, "Writeoff amount is wrong."
else:
assert False, "Wrong entry"
-
I check the residual amount of Invoice1, should be 0 in residual currency and 0 in amount_residual and paid
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_first_invoice_jan_cad"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for first Invoice"
+226
View File
@@ -0,0 +1,226 @@
# Estonian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-10-11 18:09+0000\n"
"Last-Translator: Aare Vesi <Unknown>\n"
"Language-Team: Estonian <et@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: 2011-10-12 04:40+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard
msgid "ir.model.fields.anonymize.wizard"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,field_name:0
msgid "Field Name"
msgstr "Välja Nimi:"
#. module: anonymization
#: field:ir.model.fields.anonymization,field_id:0
msgid "Field"
msgstr "Väli"
#. module: anonymization
#: field:ir.model.fields.anonymization.history,state:0
#: field:ir.model.fields.anonymize.wizard,state:0
msgid "State"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_import:0
msgid "Import"
msgstr "Import"
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization
msgid "ir.model.fields.anonymization"
msgstr ""
#. module: anonymization
#: model:ir.module.module,shortdesc:anonymization.module_meta_information
msgid "Database anonymization module"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization.history,direction:0
msgid "Direction"
msgstr "Suund"
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree
#: view:ir.model.fields.anonymization:0
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields
msgid "Anonymized Fields"
msgstr ""
#. module: anonymization
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization
msgid "Database anonymization"
msgstr ""
#. module: anonymization
#: code:addons/anonymization/anonymization.py:55
#: sql_constraint:ir.model.fields.anonymization:0
#, python-format
msgid "You cannot have two records having the same model and the same field"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Anonymized"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,state:0
msgid "unknown"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_id:0
msgid "Object"
msgstr "Objekt"
#. module: anonymization
#: field:ir.model.fields.anonymization.history,filepath:0
msgid "File path"
msgstr "Faili asukoht"
#. module: anonymization
#: field:ir.model.fields.anonymization.history,date:0
msgid "Date"
msgstr "Kuupäev"
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,file_export:0
msgid "Export"
msgstr "Eksport"
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
msgid "Reverse the Database Anonymization"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
msgid "Database Anonymization"
msgstr ""
#. module: anonymization
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard
msgid "Anonymize database"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
#: field:ir.model.fields.anonymization.history,field_ids:0
msgid "Fields"
msgstr "Väljad"
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Clear"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "clear -> anonymized"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymize.wizard:0
#: field:ir.model.fields.anonymize.wizard,summary:0
msgid "Summary"
msgstr "Kokkuvõte"
#. module: anonymization
#: view:ir.model.fields.anonymization:0
msgid "Anonymized Field"
msgstr ""
#. module: anonymization
#: model:ir.module.module,description:anonymization.module_meta_information
msgid ""
"\n"
"This module allows you to anonymize a database.\n"
" "
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Unstable"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Exception occured"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization,state:0
#: selection:ir.model.fields.anonymize.wizard,state:0
msgid "Not Existing"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymization,model_name:0
msgid "Object Name"
msgstr "Objekti nimi"
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree
#: view:ir.model.fields.anonymization.history:0
#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history
msgid "Anonymization History"
msgstr ""
#. module: anonymization
#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history
msgid "ir.model.fields.anonymization.history"
msgstr ""
#. module: anonymization
#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard
#: view:ir.model.fields.anonymize.wizard:0
msgid "Anonymize Database"
msgstr ""
#. module: anonymization
#: field:ir.model.fields.anonymize.wizard,name:0
msgid "File Name"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,direction:0
msgid "anonymized -> clear"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Started"
msgstr ""
#. module: anonymization
#: selection:ir.model.fields.anonymization.history,state:0
msgid "Done"
msgstr ""
#. module: anonymization
#: view:ir.model.fields.anonymization.history:0
#: field:ir.model.fields.anonymization.history,msg:0
#: field:ir.model.fields.anonymize.wizard,msg:0
msgid "Message"
msgstr ""
@@ -15,7 +15,7 @@ instance.web.Login = instance.web.Login.extend({
var openIdProvider = null;
if (this.has_local_storage && this.remember_creditentials) {
if (this.has_local_storage && this.remember_credentials) {
openIdProvider = localStorage.getItem('openid-provider');
}
@@ -23,7 +23,7 @@ instance.web.Login = instance.web.Login.extend({
$openid_selected_provider = openIdProvider;
this.do_openid_select('a[href="#' + openIdProvider + '"]', openIdProvider, true);
if (this.has_local_storage && this.remember_creditentials) {
if (this.has_local_storage && this.remember_credentials) {
this.$openid_selected_input.find('input').val(localStorage.getItem('openid-login'));
}
}
@@ -54,7 +54,7 @@ instance.web.Login = instance.web.Login.extend({
self.$openid_selected_input.find('input:first').focus();
self.$openid_selected_provider = (self.$openid_selected_button.attr('href') || '').substr(1);
if (self.has_local_storage && self.remember_creditentials) {
if (self.has_local_storage && self.remember_credentials) {
localStorage.setItem('openid-provider', self.$openid_selected_provider);
}
@@ -91,7 +91,7 @@ instance.web.Login = instance.web.Login.extend({
ev.preventDefault();
var id = this.$openid_selected_input.find('input').val();
if (this.has_local_storage && this.remember_creditentials) {
if (this.has_local_storage && this.remember_credentials) {
localStorage.setItem('openid-login', id);
}
+1 -1
View File
@@ -1005,7 +1005,7 @@ class calendar_event(osv.osv):
return result
_columns = {
'id': fields.integer('ID'),
'id': fields.integer('ID', readonly=True),
'sequence': fields.integer('Sequence'),
'name': fields.char('Description', size=64, required=False, states={'done': [('readonly', True)]}),
'date': fields.datetime('Date', states={'done': [('readonly', True)]}),
File diff suppressed because it is too large Load Diff
+5 -6
View File
@@ -8,15 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2010-12-27 09:16+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"PO-Revision-Date: 2011-10-16 22:58+0000\n"
"Last-Translator: David Acevedo Toledo <Unknown>\n"
"Language-Team: Spanish <es@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: 2011-09-05 05:42+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
"X-Generator: Launchpad (build 14155)\n"
#. module: base_module_quality
#: code:addons/base_module_quality/object_test/object_test.py:187
@@ -391,7 +390,7 @@ msgstr "¡Error! El módulo no está cargado/instalado correctamente"
#: code:addons/base_module_quality/speed_test/speed_test.py:116
#, python-format
msgid "Error in Read method: %s"
msgstr ""
msgstr "Error en el metodo de entrada %s"
#. module: base_module_quality
#: code:addons/base_module_quality/speed_test/speed_test.py:138
+3 -2
View File
@@ -35,7 +35,7 @@ DEFAULT_MODULES = {
'Project Management' : ['project',],
'Knowledge Management' : ['document',],
'Warehouse Management' : ['stock',],
'Manufacturing' : ['mrp', 'procurement'],
'Manufacturing' : ['mrp'],
'Accounting & Finance' : ['account'],
'Purchase Management' : ['purchase'],
'Human Resources' : ['hr',],
@@ -107,7 +107,8 @@ class base_setup_installer(osv.osv_memory):
for cat in cat_proxy.browse(cr, uid, cat_ids, context=context):
m = DEFAULT_MODULES.get(cat.name,[])
r = module_proxy.search(cr, uid, [('state','=','installed'),('name','in',m)])
result['category_%d' % (cat.id,)] = bool(r)
result['category_%d' % (cat.id,)] = bool(r) and (len(r) == len(m))
return result
+289
View File
@@ -0,0 +1,289 @@
# Estonian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
"PO-Revision-Date: 2011-10-11 17:56+0000\n"
"Last-Translator: Aare Vesi <Unknown>\n"
"Language-Team: Estonian <et@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: 2011-10-12 04:40+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: base_synchro
#: model:ir.actions.act_window,name:base_synchro.action_view_base_synchro
msgid "Base Synchronization"
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,server_db:0
msgid "Server Database"
msgstr "Serveri andmebaas"
#. module: base_synchro
#: view:base.synchro.server:0
#: model:ir.model,name:base_synchro.model_base_synchro_server
msgid "Synchronized server"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj.avoid,name:0
msgid "Field Name"
msgstr "Välja Nimi:"
#. module: base_synchro
#: field:base.synchro.obj,synchronize_date:0
msgid "Latest Synchronization"
msgstr "Viimane sünkroniseerimine"
#. module: base_synchro
#: field:base.synchro,user_id:0
msgid "Send Result To"
msgstr ""
#. module: base_synchro
#: model:ir.model,name:base_synchro.model_base_synchro_obj_avoid
msgid "Fields to not synchronize"
msgstr ""
#. module: base_synchro
#: view:base.synchro:0
msgid "_Close"
msgstr "_Sulge"
#. module: base_synchro
#: view:base.synchro:0
msgid "Transfer Data To Server"
msgstr ""
#. module: base_synchro
#: model:ir.model,name:base_synchro.model_base_synchro_obj
msgid "Register Class"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
#: model:ir.actions.act_window,name:base_synchro.action_transfer_tree
#: model:ir.ui.menu,name:base_synchro.transfer_menu_id
msgid "Synchronized objects"
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,obj_ids:0
msgid "Models"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj.avoid,obj_id:0
#: view:base.synchro.obj.line:0
#: field:base.synchro.obj.line,obj_id:0
msgid "Object"
msgstr "Objekt"
#. module: base_synchro
#: field:base.synchro.server,login:0
msgid "User Name"
msgstr "Kasutajanimi"
#. module: base_synchro
#: view:base.synchro.obj:0
#: view:base.synchro.obj.line:0
msgid "Group By"
msgstr "Rühmitamise alus"
#. module: base_synchro
#: selection:base.synchro.obj,action:0
msgid "Upload"
msgstr "Lae üles"
#. module: base_synchro
#: view:base.synchro.obj:0
msgid "Latest synchronization"
msgstr ""
#. module: base_synchro
#: model:ir.module.module,description:base_synchro.module_meta_information
msgid "Synchronization with all objects."
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj.line:0
#: field:base.synchro.obj.line,name:0
msgid "Date"
msgstr "Kuupäev"
#. module: base_synchro
#: field:base.synchro.server,password:0
msgid "Password"
msgstr "Salasõna"
#. module: base_synchro
#: field:base.synchro.obj,avoid_ids:0
msgid "Fields Not Sync."
msgstr ""
#. module: base_synchro
#: selection:base.synchro.obj,action:0
msgid "Both"
msgstr "Mõlemad"
#. module: base_synchro
#: field:base.synchro.obj,name:0
msgid "Name"
msgstr "Nimi"
#. module: base_synchro
#: view:base.synchro.obj:0
msgid "Fields"
msgstr "Väljad"
#. module: base_synchro
#: view:base.synchro.obj.line:0
msgid "Transfered Ids Details"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,action:0
msgid "Synchronisation direction"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,server_id:0
msgid "Server"
msgstr "Server"
#. module: base_synchro
#: model:ir.actions.act_window,name:base_synchro.action_base_synchro_obj_line_tree
#: model:ir.model,name:base_synchro.model_base_synchro_obj_line
#: model:ir.ui.menu,name:base_synchro.menu_action_base_synchro_obj_line_tree
msgid "Synchronized instances"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,active:0
msgid "Active"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
#: field:base.synchro.obj,model_id:0
msgid "Object to synchronize"
msgstr ""
#. module: base_synchro
#: model:ir.module.module,shortdesc:base_synchro.module_meta_information
msgid "Base Synchro"
msgstr ""
#. module: base_synchro
#: model:ir.actions.act_window,name:base_synchro.action_base_synchro_server_tree
#: model:ir.ui.menu,name:base_synchro.synchro_server_tree_menu_id
msgid "Servers to be synchronized"
msgstr ""
#. module: base_synchro
#: view:base.synchro.obj:0
msgid "Transfer Details"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj.line,remote_id:0
msgid "Remote Id"
msgstr ""
#. module: base_synchro
#: field:base.synchro.obj,line_id:0
msgid "Ids Affected"
msgstr ""
#. module: base_synchro
#: model:ir.ui.menu,name:base_synchro.next_id_63
msgid "History"
msgstr "Ajalugu"
#. module: base_synchro
#: model:ir.ui.menu,name:base_synchro.next_id_62
#: model:ir.ui.menu,name:base_synchro.synch_config
msgid "Synchronization"
msgstr "Sünkroniseerimine"
#. module: base_synchro
#: field:base.synchro.obj,domain:0
msgid "Domain"
msgstr "Domeen"
#. module: base_synchro
#: view:base.synchro:0
msgid "_Synchronize"
msgstr "_Sünkroniseeri"
#. module: base_synchro
#: view:base.synchro:0
msgid "OK"
msgstr "OK"
#. module: base_synchro
#: field:base.synchro.server,name:0
msgid "Server name"
msgstr "Serveri nimi"
#. module: base_synchro
#: field:base.synchro.obj,sequence:0
msgid "Sequence"
msgstr "Järgnevus"
#. module: base_synchro
#: view:base.synchro:0
msgid ""
"The synchronisation has been started.You will receive a request when it's "
"done."
msgstr ""
#. module: base_synchro
#: field:base.synchro.server,server_port:0
msgid "Server Port"
msgstr "Serveri port"
#. module: base_synchro
#: model:ir.ui.menu,name:base_synchro.menu_action_view_base_synchro
msgid "Synchronize objects"
msgstr ""
#. module: base_synchro
#: view:base.synchro:0
msgid "Synchronization Complited!"
msgstr ""
#. module: base_synchro
#: model:ir.model,name:base_synchro.model_base_synchro
msgid "base.synchro"
msgstr "base.synchro"
#. module: base_synchro
#: field:base.synchro.obj.line,local_id:0
msgid "Local Id"
msgstr ""
#. module: base_synchro
#: model:ir.actions.act_window,name:base_synchro.actions_regclass_tree
#: model:ir.actions.act_window,name:base_synchro.actions_transfer_line_form
msgid "Filters"
msgstr "Filtrid"
#. module: base_synchro
#: selection:base.synchro.obj,action:0
msgid "Download"
msgstr "Lae alla"
#. module: base_synchro
#: field:base.synchro,server_url:0
#: field:base.synchro.server,server_url:0
msgid "Server URL"
msgstr ""
+11 -3
View File
@@ -34,10 +34,18 @@ The user can also publish notes.
""",
'author': 'OpenERP SA',
'depends': ['base'],
'update_xml': ['security/board_security.xml','security/ir.model.access.csv', 'wizard/board_menu_create_view.xml', 'board_view.xml','board_administration_view.xml'],
'demo_xml': ['board_demo.xml'],
'update_xml': [
'security/ir.model.access.csv',
'wizard/board_menu_create_view.xml',
'board_view.xml',
'board_data_admin.xml',
'board_data_home.xml',
],
'demo_xml': [
'board_demo.xml'
],
'installable': True,
'active': False,
'active': True,
'certificate': '0076912305725',
'images': ['images/1_dashboard_definition.jpeg','images/2_publish_note.jpeg','images/3_admin_dashboard.jpeg',],
}
-5
View File
@@ -168,9 +168,6 @@ class board_board(osv.osv):
'name':lambda *args: 'Dashboard'
}
board_board()
class board_line(osv.osv):
"""
Board Line
@@ -193,8 +190,6 @@ class board_line(osv.osv):
'position': lambda *args: 'left'
}
board_line()
class res_log_report(osv.osv):
""" Log Report """
_name = "res.log.report"
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<data>
<!-- User Connection -->
<record model="ir.ui.view" id="view_user_connection_tree">
<field name="name">user.connection.tree</field>
@@ -158,23 +157,13 @@
<field name="view_id" ref="board_administration_form"/>
</record>
<menuitem id="base.menu_reporting" name="Reporting" parent="base.menu_administration" sequence="11"
groups="base.group_extended"/>
<menuitem id="board.admin_menu_dasboard" name="Dashboard" sequence="0" parent="base.menu_reporting"/>
<menuitem id="menu_board_admin" action="open_board_administration_form" icon="terp-graph" parent="board.admin_menu_dasboard" />
<menuitem icon="terp-administration" id="base.menu_administration" name="Administration" sequence="50" action="open_board_administration_form"/>
<!-- bind adminitration dashboard to the root administration -->
<menuitem id="base.menu_administration" icon="terp-administration" name="Administration" sequence="50" action="open_board_administration_form"/>
</data>
<!-- add a menu item in adminitration/reporting/dashboards -->
<menuitem id="base.menu_reporting" name="Reporting" parent="base.menu_administration" sequence="11" groups="base.group_extended"/>
<menuitem id="base.menu_dashboard" name="Dashboards" parent="base.menu_reporting" sequence="0"/>
<menuitem id="base.menu_dashboard_admin" action="open_board_administration_form" parent="base.menu_dashboard" icon="terp-graph"/>
</data>
</openerp>
+76
View File
@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- neat client actions that can be used in dashboards to display res_widgets -->
<record id="action_application_tiles" model="ir.actions.client">
<field name="name">Applications Tiles</field>
<field name="tag">board.home.applications</field>
</record>
<record id="action_res_widgets_tweets" model="ir.actions.client">
<field name="name">Tweets Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.openerp_favorites_twitter_widget')}"/>
</record>
<record id="action_res_widgets_events" model="ir.actions.client">
<field name="name">Events Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.events_widget')}"/>
</record>
<record id="action_res_widgets_facebook" model="ir.actions.client">
<field name="name">Facebook Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.facebook_widget')}"/>
</record>
<record id="action_res_widgets_note" model="ir.actions.client">
<field name="name">Note Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.note_widget')}"/>
</record>
<record id="action_res_widgets_map" model="ir.actions.client">
<field name="name">Google Maps Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.google_maps_widget')}"/>
</record>
<record id="action_res_widgets_currency_converter" model="ir.actions.client">
<field name="name">Currency Converter Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.currency_converter_widget')}"/>
</record>
<!-- default homepage definition -->
<record id="board_homepage_view" model="ir.ui.view">
<field name="name">Homepage Board</field>
<field name="model">board.board</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="">
<hpaned>
<child1>
<action name="%(action_application_tiles)d"/>
</child1>
<child2>
<action name="%(action_res_widgets_tweets)d"/>
<action name="%(action_res_widgets_events)d"/>
</child2>
</hpaned>
</form>
</field>
</record>
<record id="board_homepage_action" model="ir.actions.act_window">
<field name="name">Home Page</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="board_homepage_view"/>
</record>
<!-- set the default homepage of admin -->
<record id="base.user_admin" model="res.users">
<field name="action_id" ref="board_homepage_action"/>
</record>
<!-- and of every new users -->
<function eval="('default',False,'action_id', [('res.users', False)], board_homepage_action, True, False, False, False, True)" id="ir_default_home" model="ir.values" name="set"/>
</data>
</openerp>
+7 -6
View File
@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="base.user_demo" model="res.users">
<field eval="[(4, ref('base.group_sale_salesman'))]" name="groups_id"/>
</record>
</data>
</openerp>
<data>
<!-- set the default homepage of demo -->
<record id="base.user_demo" model="res.users">
<field name="action_id" ref="board_homepage_action"/>
</record>
</data>
</openerp>
+62 -134
View File
@@ -1,146 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="action_application_tiles" model="ir.actions.client">
<field name="name">Applications Tiles</field>
<field name="tag">board.home.applications</field>
</record>
<record id="action_res_widgets_tweets" model="ir.actions.client">
<field name="name">Tweets Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.openerp_favorites_twitter_widget')}"/>
</record>
<record id="action_res_widgets_events" model="ir.actions.client">
<field name="name">Events Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.events_widget')}"/>
</record>
<record id="action_res_widgets_facebook" model="ir.actions.client">
<field name="name">Facebook Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.facebook_widget')}"/>
</record>
<record id="action_res_widgets_note" model="ir.actions.client">
<field name="name">Note Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.note_widget')}"/>
</record>
<record id="action_res_widgets_map" model="ir.actions.client">
<field name="name">Google Maps Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.google_maps_widget')}"/>
</record>
<record id="action_res_widgets_currency_converter" model="ir.actions.client">
<field name="name">Currency Converter Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.currency_converter_widget')}"/>
</record>
<record id="view_board_homepage" model="ir.ui.view">
<field name="name">Homepage Board</field>
<data>
<!-- Board Search View -->
<record id="view_board_search" model="ir.ui.view">
<field name="name">board.board.search</field>
<field name="model">board.board</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Dashboard">
<field name="name"/>
<field name="line_ids"/>
</search>
</field>
</record>
<!-- Board Tree View -->
<record id="view_board_tree" model="ir.ui.view">
<field name="name">board.board.tree</field>
<field name="model">board.board</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Dashboard">
<field name="name"/>
</tree>
</field>
</record>
<!-- Board Form View -->
<record id="view_board_form" model="ir.ui.view">
<field name="name">board.board.form</field>
<field name="model">board.board</field>
<field name="type">form</field>
<field eval="1" name="priority"/>
<field name="arch" type="xml">
<form string="">
<hpaned>
<child1>
<action name="%(action_application_tiles)d"/>
</child1>
<child2>
<action name="%(action_res_widgets_tweets)d"/>
<action name="%(action_res_widgets_events)d"/>
</child2>
</hpaned>
</form>
</field>
</record>
<record id="homepage_action" model="ir.actions.act_window">
<field name="name">Home Page</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_board_homepage"/>
</record>
<!-- Board Tree View -->
<record id="view_board_tree" model="ir.ui.view">
<field name="name">board.board.tree</field>
<field name="model">board.board</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Dashboard">
<form string="Dashboard">
<group col="6" colspan="4">
<field name="name"/>
</tree>
</field>
</record>
<!-- Dashboard Definition Form View -->
<record id="view_board_form" model="ir.ui.view">
<field name="name">board.board.form</field>
<field name="model">board.board</field>
<field name="type">form</field>
<field eval="1" name="priority"/>
<field name="arch" type="xml">
<form string="Dashboard">
<group col="6" colspan="4">
<field name="view_id"/>
<button colspan="2" name="%(action_board_menu_create)d" string="Create Menu" type="action" icon="gtk-justify-fill" />
</group>
<field colspan="4" name="line_ids" nolabel="1">
<tree string="Dashboard View">
<field name="name"/>
<field name="view_id"/>
<button colspan="2"
name="%(action_board_menu_create)d"
string="Create Menu" type="action"
icon="gtk-justify-fill" />
</group>
<field colspan="4" name="line_ids" nolabel="1">
<tree string="Dashboard View">
<field name="name"/>
<field name="sequence"/>
<field name="action_id"/>
<field name="position"/>
</tree>
<form string="Dashboard View">
<field name="name"/>
<field name="sequence"/>
<field name="width"/>
<field name="height"/>
<field name="action_id"
domain="[('view_type','!=','tree')]" />
<field name="position"/>
</form>
</field>
</form>
</field>
</record>
<record id="view_board_search" model="ir.ui.view">
<field name="name">board.board.search</field>
<field name="model">board.board</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Dashboard">
<field name="name"/>
<field name="line_ids"/>
</search>
</field>
</record>
<field name="sequence"/>
<field name="action_id"/>
<field name="position"/>
</tree>
<form string="Dashboard View">
<field name="name"/>
<field name="sequence"/>
<field name="width"/>
<field name="height"/>
<field name="action_id" domain="[('view_type','!=','tree')]" />
<field name="position"/>
</form>
</field>
</form>
</field>
</record>
<!-- Action for DashBoard Definition form -->
<record id="action_view_board_list_form" model="ir.actions.act_window">
<field name="name">Dashboard Definition</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_board_search"/>
</record>
<record id="action_view_board_list_form" model="ir.actions.act_window">
<field name="name">Dashboard Definition</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_board_search"/>
</record>
<menuitem action="action_view_board_list_form" id="menu_view_board_form" parent="base.reporting_menu" sequence="1"/>
<menuitem
action="action_view_board_list_form"
id="menu_view_board_form" parent="base.reporting_menu" sequence="1"/>
<act_window context="{'view': active_id}" id="dashboard_open"
multi="True" name="Open Dashboard" res_model="board.board"
src_model="board.board" />
</data>
</data>
</openerp>
-10
View File
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="0">
<record id="base.group_sale_salesman" model="res.groups">
<field name="name">Sales / User</field>
</record>
</data>
</openerp>
@@ -1,7 +1,6 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_board_board","board.board","model_board_board","base.group_user",1,1,1,1
"access_board_board_line","board.board.line","model_board_board_line","base.group_user",1,1,1,1
"access_board_board_sale_salesman","board.board.sale.salesman","model_board_board","base.group_sale_salesman",1,1,1,1
"access_res_log_report","res.log.report","model_res_log_report","base.group_user",1,1,1,1
"access_res_log_report_system","res.log.report system","model_res_log_report",base.group_system,1,0,0,0
"access_res_log_report_erp_manager","res.log.report erp_manager","model_res_log_report",base.group_erp_manager,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_board_board board.board model_board_board base.group_user 1 1 1 1
3 access_board_board_line board.board.line model_board_board_line base.group_user 1 1 1 1
access_board_board_sale_salesman board.board.sale.salesman model_board_board base.group_sale_salesman 1 1 1 1
4 access_res_log_report res.log.report model_res_log_report base.group_user 1 1 1 1
5 access_res_log_report_system res.log.report system model_res_log_report base.group_system 1 0 0 0
6 access_res_log_report_erp_manager res.log.report erp_manager model_res_log_report base.group_erp_manager 1 0 0 0
+1 -1
View File
@@ -133,7 +133,7 @@ class crm_lead(crm_case, osv.osv):
'partner_id': fields.many2one('res.partner', 'Partner', ondelete='set null',
select=True, help="Optional linked partner, usually after conversion of the lead"),
'id': fields.integer('ID'),
'id': fields.integer('ID', readonly=True),
'name': fields.char('Name', size=64, select=1),
'active': fields.boolean('Active', required=False),
'date_action_last': fields.datetime('Last Action', readonly=1),
+1 -1
View File
@@ -52,7 +52,7 @@ class crm_meeting(crm_base, osv.osv):
'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]}, \
select=True, help='Sales team to which Case belongs to.'),
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
'id': fields.integer('ID'),
'id': fields.integer('ID', readonly=True),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Write Date' , readonly=True),
'date_action_last': fields.datetime('Last Action', readonly=1),
+1 -1
View File
@@ -34,7 +34,7 @@ class crm_phonecall(crm_base, osv.osv):
_order = "id desc"
_columns = {
# From crm.case
'id': fields.integer('ID'),
'id': fields.integer('ID', readonly=True),
'name': fields.char('Call Summary', size=64),
'active': fields.boolean('Active', required=False),
'date_action_last': fields.datetime('Last Action', readonly=1),
+5 -5
View File
@@ -8,26 +8,26 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-08-23 11:25+0000\n"
"PO-Revision-Date: 2011-10-13 07:42+0000\n"
"Last-Translator: Rolv Råen (adEgo) <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@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: 2011-09-05 05:07+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: crm
#: view:crm.lead.report:0
msgid "# Leads"
msgstr ""
msgstr "# Leads"
#. module: crm
#: view:crm.lead:0
#: selection:crm.lead,type:0
#: selection:crm.lead.report,type:0
msgid "Lead"
msgstr ""
msgstr "Lead"
#. module: crm
#: model:crm.case.categ,name:crm.categ_oppor3
+3 -3
View File
@@ -53,7 +53,7 @@
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<page string="History" position="inside">
<field name="opportunity_ids" colspan="4" nolabel="1" context="{'default_partner_id': active_id}">
<field name="opportunity_ids" colspan="4" nolabel="1">
<tree string="Leads and Opportunities" colors="blue:state=='pending';gray:state=='cancel'">
<field name="create_date"/>
<field name="name"/>
@@ -84,7 +84,7 @@
icon="gtk-go-up" />
</tree>
</field>
<field name="meeting_ids" colspan="4" nolabel="1" context="{'default_partner_id': active_id}">
<field name="meeting_ids" colspan="4" nolabel="1">
<tree string="Meetings" colors="gray:state in ('draft', 'cancel','done','pending')">
<field name="user_id" string="Responsible"/>
<field name="name" string="Subject" />
@@ -92,7 +92,7 @@
<field name="date_deadline" string="End Date"/>
</tree>
</field>
<field name="phonecall_ids" colspan="4" nolabel="1" context="{'default_partner_id': active_id}">
<field name="phonecall_ids" colspan="4" nolabel="1">
<tree string="Phone Calls" colors="gray:state in ('draft', 'cancel','done','pending')">
<field name="date" string="Date"/>
<field name="name" string="Call Summary"/>
+1 -1
View File
@@ -33,7 +33,7 @@ class crm_fundraising(crm.crm_case, osv.osv):
_order = "id desc"
_inherit = ['mail.thread']
_columns = {
'id': fields.integer('ID'),
'id': fields.integer('ID', readonly=True),
'name': fields.char('Name', size=128, required=True),
'active': fields.boolean('Active', required=False),
'date_action_last': fields.datetime('Last Action', readonly=1),
+24 -24
View File
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-10-30 13:40+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2011-10-11 17:52+0000\n"
"Last-Translator: Aare Vesi <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: 2011-09-05 05:00+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-12 04:39+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: delivery
#: report:sale.shipping:0
msgid "Order Ref."
msgstr ""
msgstr "Tellimuse viide"
#. module: delivery
#: model:product.template,name:delivery.delivery_product_product_template
@@ -34,12 +34,12 @@ msgstr "Sihtpunkt"
#. module: delivery
#: field:stock.move,weight_net:0
msgid "Net weight"
msgstr ""
msgstr "Netokaal"
#. module: delivery
#: view:stock.picking:0
msgid "Delivery Order"
msgstr ""
msgstr "Tarnekorraldus"
#. module: delivery
#: code:addons/delivery/delivery.py:141
@@ -77,7 +77,7 @@ msgstr ""
#. module: delivery
#: model:ir.actions.report.xml,name:delivery.report_shipping
msgid "Delivery order"
msgstr ""
msgstr "Tarnetellimus"
#. module: delivery
#: view:res.partner:0
@@ -103,7 +103,7 @@ msgstr "Riigid"
#. module: delivery
#: report:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
msgstr "Tarnetellimus :"
#. module: delivery
#: field:delivery.grid.line,variable_factor:0
@@ -137,7 +137,7 @@ msgstr "Tarneviis"
#. module: delivery
#: model:ir.model,name:delivery.model_stock_move
msgid "Stock Move"
msgstr ""
msgstr "Laoseisu liikumine"
#. module: delivery
#: code:addons/delivery/delivery.py:141
@@ -153,7 +153,7 @@ msgstr ""
#. module: delivery
#: field:stock.picking,weight_net:0
msgid "Net Weight"
msgstr ""
msgstr "Netokaal"
#. module: delivery
#: model:ir.actions.act_window,help:delivery.action_delivery_carrier_form
@@ -177,7 +177,7 @@ msgstr ""
#. module: delivery
#: view:delivery.sale.order:0
msgid "_Cancel"
msgstr ""
msgstr "_Tühista"
#. module: delivery
#: field:delivery.grid.line,operator:0
@@ -187,12 +187,12 @@ msgstr "Operaator"
#. module: delivery
#: model:ir.model,name:delivery.model_res_partner
msgid "Partner"
msgstr ""
msgstr "Partner"
#. module: delivery
#: model:ir.model,name:delivery.model_sale_order
msgid "Sales Order"
msgstr ""
msgstr "Müügitellimus"
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_grid
@@ -207,7 +207,7 @@ msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_stock_picking
msgid "Picking List"
msgstr ""
msgstr "Noppeleht"
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_sale_order
@@ -250,7 +250,7 @@ msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Order Date"
msgstr ""
msgstr "Tellimuse Kuupäev"
#. module: delivery
#: field:delivery.grid,name:0
@@ -260,12 +260,12 @@ msgstr ""
#. module: delivery
#: view:stock.move:0
msgid "Weights"
msgstr ""
msgstr "Kaalud"
#. module: delivery
#: field:stock.picking,number_of_packages:0
msgid "Number of Packages"
msgstr ""
msgstr "Pakkide arv"
#. module: delivery
#: selection:delivery.grid.line,type:0
@@ -309,7 +309,7 @@ msgstr "Viga! Sa ei saa luua rekursiivseid seotud liikmeid."
#. module: delivery
#: report:sale.shipping:0
msgid "Lot"
msgstr ""
msgstr "Partii"
#. module: delivery
#: constraint:stock.move:0
@@ -325,7 +325,7 @@ msgstr "Aktiivne"
#. module: delivery
#: report:sale.shipping:0
msgid "Shipping Date"
msgstr ""
msgstr "Tarnimise kuupäev"
#. module: delivery
#: field:delivery.carrier,product_id:0
@@ -361,7 +361,7 @@ msgstr "Maksimumväärtus"
#. module: delivery
#: report:sale.shipping:0
msgid "Quantity"
msgstr ""
msgstr "Kogus"
#. module: delivery
#: field:delivery.grid,zip_from:0
@@ -387,7 +387,7 @@ msgstr "Müügid ja ostud"
#. module: delivery
#: selection:delivery.grid.line,operator:0
msgid "<="
msgstr ""
msgstr "<="
#. module: delivery
#: constraint:stock.move:0
@@ -408,7 +408,7 @@ msgstr "Tarnekulud"
#. module: delivery
#: report:sale.shipping:0
msgid "Description"
msgstr ""
msgstr "Kirjeldus"
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_delivery_grid_form
@@ -469,7 +469,7 @@ msgstr "Tarnija"
#. module: delivery
#: view:delivery.sale.order:0
msgid "_Apply"
msgstr ""
msgstr "_Rakenda"
#. module: delivery
#: field:sale.order,id:0
+135
View File
@@ -0,0 +1,135 @@
# Estonian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-10-11 18:05+0000\n"
"Last-Translator: Aare Vesi <Unknown>\n"
"Language-Team: Estonian <et@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: 2011-10-12 04:40+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_configuration
msgid "Auto Directory Configuration"
msgstr ""
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid ""
"Indicate the network address on which your OpenERP server should be "
"reachable for end-users. This depends on your network topology and "
"configuration, and will only affect the links displayed to the users. The "
"format is HOST:PORT and the default host (localhost) is only suitable for "
"access from the server machine itself.."
msgstr ""
#. module: document_ftp
#: field:document.ftp.configuration,progress:0
msgid "Configuration Progress"
msgstr ""
#. module: document_ftp
#: model:ir.actions.url,name:document_ftp.action_document_browse
msgid "Browse Files"
msgstr "Failide sirvimine"
#. module: document_ftp
#: field:document.ftp.configuration,config_logo:0
msgid "Image"
msgstr "Pilt"
#. module: document_ftp
#: field:document.ftp.configuration,host:0
msgid "Address"
msgstr "Aadress"
#. module: document_ftp
#: field:document.ftp.browse,url:0
msgid "FTP Server"
msgstr "FTP server"
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_config_auto_directory
msgid "FTP Server Configuration"
msgstr "FTP serveri konfiguratsioon"
#. module: document_ftp
#: model:ir.module.module,description:document_ftp.module_meta_information
msgid ""
"This is a support FTP Interface with document management system.\n"
" With this module you would not only be able to access documents through "
"OpenERP\n"
" but you would also be able to connect with them through the file system "
"using the\n"
" FTP client.\n"
msgstr ""
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Browse"
msgstr "_Sirvi"
#. module: document_ftp
#: help:document.ftp.configuration,host:0
msgid ""
"Server address or IP and port to which users should connect to for DMS access"
msgstr ""
#. module: document_ftp
#: model:ir.ui.menu,name:document_ftp.menu_document_browse
msgid "Shared Repository (FTP)"
msgstr ""
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "_Cancel"
msgstr "_Tühista"
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Configure FTP Server"
msgstr ""
#. module: document_ftp
#: model:ir.module.module,shortdesc:document_ftp.module_meta_information
msgid "Integrated FTP Server with Document Management System"
msgstr ""
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "title"
msgstr "pealkiri"
#. module: document_ftp
#: model:ir.model,name:document_ftp.model_document_ftp_browse
msgid "Document FTP Browse"
msgstr ""
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "Knowledge Application Configuration"
msgstr ""
#. module: document_ftp
#: model:ir.actions.act_window,name:document_ftp.action_ftp_browse
msgid "Document Browse"
msgstr ""
#. module: document_ftp
#: view:document.ftp.browse:0
msgid "Browse Document"
msgstr ""
#. module: document_ftp
#: view:document.ftp.configuration:0
msgid "res_config_contents"
msgstr ""
File diff suppressed because it is too large Load Diff
+305
View File
@@ -0,0 +1,305 @@
# Estonian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-10-11 18:02+0000\n"
"Last-Translator: Aare Vesi <Unknown>\n"
"Language-Team: Estonian <et@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: 2011-10-12 04:40+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: fetchmail
#: constraint:email.server:0
msgid ""
"Warning! Record for selected Model can not be created\n"
"Please choose valid Model"
msgstr ""
#. module: fetchmail
#: selection:email.server,state:0
msgid "Confirmed"
msgstr "Kinnitatud"
#. module: fetchmail
#: view:email.server:0
msgid "Confirm"
msgstr "Kinnita"
#. module: fetchmail
#: view:email.server:0
msgid "Group By..."
msgstr "Grupeeri..."
#. module: fetchmail
#: view:email.server:0
#: field:email.server,state:0
msgid "State"
msgstr "Olek"
#. module: fetchmail
#: view:email.server:0
msgid "POP"
msgstr "POP"
#. module: fetchmail
#: selection:email.server,state:0
msgid "Not Confirmed"
msgstr "Kinnitamata"
#. module: fetchmail
#: field:email.server,user:0
msgid "User Name"
msgstr "Kasutajanimi"
#. module: fetchmail
#: view:email.server:0
msgid "Type"
msgstr "Tüüp"
#. module: fetchmail
#: view:email.server:0
msgid "POP/IMAP Servers"
msgstr "POP/IMAP serverid"
#. module: fetchmail
#: model:ir.module.module,shortdesc:fetchmail.module_meta_information
msgid "Fetchmail Server"
msgstr "Fetchmail server"
#. module: fetchmail
#: view:email.server:0
#: field:email.server,note:0
msgid "Description"
msgstr "Kirjeldus"
#. module: fetchmail
#: help:email.server,object_id:0
msgid ""
"OpenObject Model. Generates a record of this model.\n"
"Select Object with message_new attrbutes."
msgstr ""
#. module: fetchmail
#: field:email.server,attach:0
msgid "Add Attachments ?"
msgstr ""
#. module: fetchmail
#: view:email.server:0
msgid "# of emails"
msgstr ""
#. module: fetchmail
#: model:ir.actions.act_window,name:fetchmail.act_server_history
msgid "Email History"
msgstr ""
#. module: fetchmail
#: field:email.server,user_id:0
msgid "User"
msgstr "Kasutaja"
#. module: fetchmail
#: field:email.server,date:0
msgid "Date"
msgstr "Kuupäev"
#. module: fetchmail
#: selection:email.server,state:0
msgid "Waiting for Verification"
msgstr ""
#. module: fetchmail
#: field:email.server,password:0
msgid "Password"
msgstr "Salasõna"
#. module: fetchmail
#: model:ir.actions.act_window,name:fetchmail.act_server_history
#: view:mailgate.message:0
msgid "Emails"
msgstr "E-kirjad"
#. module: fetchmail
#: view:email.server:0
msgid "Search Email Servers"
msgstr ""
#. module: fetchmail
#: view:email.server:0
msgid "Server & Login"
msgstr ""
#. module: fetchmail
#: view:email.server:0
msgid "Auto Reply?"
msgstr "Automaatvastus"
#. module: fetchmail
#: field:email.server,name:0
msgid "Name"
msgstr "Nimi"
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_mailgate_message
msgid "Mailgateway Message"
msgstr ""
#. module: fetchmail
#: model:ir.actions.act_window,name:fetchmail.action_email_server_tree
msgid "POP Servers"
msgstr "POP serverid"
#. module: fetchmail
#: view:email.server:0
msgid "Set to Draft"
msgstr "Määra mustandiks"
#. module: fetchmail
#: field:email.server,message_ids:0
#: model:ir.actions.act_window,name:fetchmail.action_view_mail_message_emails
msgid "Messages"
msgstr "Sõnumid"
#. module: fetchmail
#: model:ir.ui.menu,name:fetchmail.menu_action_fetchmail_server_tree
msgid "Fetchmail Services"
msgstr "Fetchmail teenused"
#. module: fetchmail
#: field:email.server,server:0
msgid "Server"
msgstr "Server"
#. module: fetchmail
#: field:email.server,active:0
msgid "Active"
msgstr "Aktiivne"
#. module: fetchmail
#: view:email.server:0
msgid "Process Parameter"
msgstr ""
#. module: fetchmail
#: field:email.server,is_ssl:0
msgid "SSL ?"
msgstr "SSL ?"
#. module: fetchmail
#: selection:email.server,type:0
#: selection:mailgate.message,server_type:0
msgid "IMAP Server"
msgstr "IMAP server"
#. module: fetchmail
#: field:email.server,object_id:0
msgid "Model"
msgstr "Mudel"
#. module: fetchmail
#: view:email.server:0
msgid "IMAP"
msgstr "IMAP"
#. module: fetchmail
#: view:email.server:0
#: model:ir.model,name:fetchmail.model_email_server
msgid "POP/IMAP Server"
msgstr "POP/IMAP server"
#. module: fetchmail
#: constraint:email.server:0
msgid "Warning! Can't have duplicate server configuration!"
msgstr ""
#. module: fetchmail
#: field:email.server,type:0
#: field:mailgate.message,server_type:0
msgid "Server Type"
msgstr "Serveri tüüp"
#. module: fetchmail
#: view:email.server:0
msgid "Login Information"
msgstr "Sisselogimise info"
#. module: fetchmail
#: view:email.server:0
msgid "Server Information"
msgstr "Serveri info"
#. module: fetchmail
#: help:email.server,attach:0
msgid "Fetches mail with attachments if true."
msgstr ""
#. module: fetchmail
#: selection:email.server,type:0
#: selection:mailgate.message,server_type:0
msgid "POP Server"
msgstr "POP server"
#. module: fetchmail
#: field:email.server,port:0
msgid "Port"
msgstr "Port"
#. module: fetchmail
#: model:ir.module.module,description:fetchmail.module_meta_information
msgid ""
"Fetchmail: \n"
" * Fetch email from Pop / IMAP server\n"
" * Support SSL\n"
" * Integrated with all Modules\n"
" * Automatic Email Receive\n"
" * Email based Records (Add, Update)\n"
" "
msgstr ""
#. module: fetchmail
#: view:email.server:0
msgid "SSL"
msgstr "SSL"
#. module: fetchmail
#: help:email.server,action_id:0
msgid ""
"An Email Server Action. It will be run whenever an e-mail is fetched from "
"server."
msgstr ""
#. module: fetchmail
#: help:email.server,priority:0
msgid "Priority between 0 to 10, select define the order of Processing"
msgstr ""
#. module: fetchmail
#: field:email.server,action_id:0
msgid "Email Server Action"
msgstr ""
#. module: fetchmail
#: field:email.server,priority:0
msgid "Server Priority"
msgstr ""
#. module: fetchmail
#: view:mailgate.message:0
#: field:mailgate.message,server_id:0
msgid "Mail Server"
msgstr ""
#. module: fetchmail
#: view:email.server:0
msgid "Fetch Emails"
msgstr ""
+3 -4
View File
@@ -48,13 +48,12 @@ You can manage:
'process/hr_process.xml',
'hr_installer.xml',
'hr_data.xml',
'board_hr_view.xml',
'board_hr_manager_view.xml',
],
'hr_board.xml',
],
'demo_xml': [
'hr_demo.xml',
'hr_department_demo.xml',
],
],
'test': ['test/test_hr.yml'],
'installable': True,
'active': False,
-31
View File
@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- This board view will be complete by other hr_* modules-->
<record id="board_hr_manager_form" model="ir.ui.view">
<field name="name">board.hr.manager.form</field>
<field name="model">board.board</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="HR Manager Board">
<hpaned>
<child1>
</child1>
<child2>
</child2>
</hpaned>
</form>
</field>
</record>
<record id="open_board_hr_manager" model="ir.actions.act_window">
<field name="name">HR Manager Dashboard</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="usage">menu</field>
<field name="view_id" ref="board_hr_manager_form"/>
</record>
</data>
</openerp>
-40
View File
@@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<menuitem id="base.dashboard" name="Dashboards" sequence="2" parent="base.reporting_menu"/>
<!-- This board view will be complete by other hr_* modules-->
<record id="board_hr_form" model="ir.ui.view">
<field name="name">board.hr.form</field>
<field name="model">board.board</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="My Board">
<hpaned>
<child1>
</child1>
<child2>
</child2>
</hpaned>
</form>
</field>
</record>
<record id="open_board_hr" model="ir.actions.act_window">
<field name="name">Human Resources Dashboard</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="usage">menu</field>
<field name="view_id" ref="board_hr_form"/>
</record>
<menuitem
id="menu_hr_deshboard"
name="Human Resources"
parent="base.dashboard"
action="open_board_hr"/>
<menuitem id="menu_hr_root" icon="terp-hr" name="Human Resources" sequence="15" action="open_board_hr"/>
</data>
</openerp>
+62
View File
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- This board view will be complete by other hr_* modules-->
<record id="board_hr_form" model="ir.ui.view">
<field name="name">board.hr.form</field>
<field name="model">board.board</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="My Board">
<hpaned>
<child1>
</child1>
<child2>
</child2>
</hpaned>
</form>
</field>
</record>
<record id="open_board_hr" model="ir.actions.act_window">
<field name="name">Human Resources Dashboard</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="usage">menu</field>
<field name="view_id" ref="board_hr_form"/>
</record>
<menuitem id="menu_hr_root" icon="terp-hr" name="Human Resources" sequence="15" action="open_board_hr"/>
<menuitem id="menu_hr_reporting" parent="menu_hr_root" name="Reporting" sequence="10" />
<menuitem id="menu_hr_dashboard" parent="menu_hr_reporting" name="Dashboard" sequence="0"/>
<menuitem id="menu_hr_dashboard_user" parent="menu_hr_dashboard" action="open_board_hr" icon="terp-graph" sequence="4"/>
<!-- This board view will be complete by other hr_* modules-->
<record id="board_hr_manager_form" model="ir.ui.view">
<field name="name">board.hr.manager.form</field>
<field name="model">board.board</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="HR Manager Board">
<hpaned>
<child1>
</child1>
<child2>
</child2>
</hpaned>
</form>
</field>
</record>
<record id="open_board_hr_manager" model="ir.actions.act_window">
<field name="name">HR Manager Dashboard</field>
<field name="res_model">board.board</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="usage">menu</field>
<field name="view_id" ref="board_hr_manager_form"/>
</record>
<menuitem id="menu_hr_dashboard_manager" parent="menu_hr_dashboard" icon="terp-graph" action="open_board_hr_manager" groups="base.group_hr_manager" sequence="5"/>
</data>
</openerp>
@@ -21,12 +21,5 @@
</xpath>
</field>
</record>
<menuitem
action="hr.open_board_hr_manager"
icon="terp-graph"
id="base.menu_hr_manager"
parent="base.menu_hr_dasboard"
groups = "base.group_hr_manager"
sequence="5"/>
</data>
</openerp>
@@ -2,13 +2,6 @@
<openerp>
<data>
<menuitem id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting" sequence="0"/>
<menuitem
action="hr.open_board_hr"
icon="terp-graph"
id="base.menu_hr_project"
parent="base.menu_hr_dasboard"
sequence="4"/>
<record id="action_my_expense" model="ir.actions.act_window">
<field name="name">My Expenses</field>
<field name="res_model">hr.expense.expense</field>
@@ -1,17 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<menuitem id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting" sequence="0"/>
<menuitem
action="hr.open_board_hr"
icon="terp-graph"
id="base.menu_hr_project"
parent="base.menu_hr_dasboard"
sequence="4"/>
<!-- Need to merge in above view -->
<record model="ir.actions.act_window" id="action_hr_holidays_leaves_by_month">
<field name="name">My Leaves</field>
<field name="res_model">hr.holidays.status</field>
@@ -15,7 +15,7 @@
<record id="board_hr_holidays_manager_form" model="ir.ui.view">
<field name="name">board.hr.holidays.manager.form</field>
<field name="model">board.board</field>
<field name="inherit_id" ref="hr.board_hr_manager_form"/>
<field name="inherit_id" ref="hr.board_hr_manager_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="/form/hpaned/child1" position="inside">
@@ -24,12 +24,5 @@
</field>
</record>
<menuitem
action="hr.open_board_hr_manager"
icon="terp-graph"
id="base.menu_hr_manager"
parent="base.menu_hr_dasboard"
groups = "base.group_hr_manager"
sequence="5"/>
</data>
</openerp>
@@ -1,12 +1,6 @@
<?xml version="1.0" ?>
<openerp>
<data>
<menuitem
id="hr.menu_hr_reporting"
name="Reporting"
parent="hr.menu_hr_root"
sequence="10" />
<menuitem
id="menu_hr_reporting_holidays"
name="Holidays"
@@ -38,13 +38,5 @@
</xpath>
</field>
</record>
<menuitem id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting" sequence="0"/>
<menuitem
action="hr.open_board_hr_manager"
icon="terp-graph"
id="base.menu_hr_manager"
parent="base.menu_hr_dasboard"
groups = "base.group_hr_manager"
sequence="5"/>
</data>
</openerp>
@@ -89,7 +89,8 @@
<field name="user_id"/>
<field name="survey" invisible="1"/>
<button name="action_print_survey" string="Interview" type="object" icon="gtk-print" attrs="{'readonly':[('survey','=',False)]}"/>
<button name="%(survey.action_view_survey_question_message)d" string="Answer" type="action" icon="gtk-execute" context="{'survey_id': survey, 'response_id': [response], 'response_no':0 ,'active' : response, 'object' : 'hr.applicant', 'cur_id' :active_id}" attrs="{'readonly':[('survey','=',False)]}" groups="base.group_extended"/>
<button name="%(survey.action_view_survey_question_message)d" string="Answer" type="action" icon="gtk-execute" context="{'survey_id': survey, 'response_id': [response], 'response_no':0 ,'active' : response, 'object' : 'hr.applicant'}" attrs="{'readonly':[('survey','=',False)]}" groups="base.group_extended"/>
<field name="response" invisible="1"/>
<newline/>
<field name="date_action"/>
<field name="title_action"/>
@@ -1,11 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<menuitem
id="hr.menu_hr_reporting"
name="Reporting"
parent="hr.menu_hr_root"
sequence="10" />
<menuitem
id="menu_hr_reporting_timesheet"
name="Timesheet"
@@ -1,11 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<menuitem
id="hr.menu_hr_reporting"
name="Reporting"
parent="hr.menu_hr_root"
sequence="10" />
<report auto="False" id="account_analytic_account_cost_ledger" menu="False" model="account.analytic.account" name="hr.timesheet.invoice.account.analytic.account.cost_ledger" rml="account/project/report/cost_ledger.rml" string="Cost Ledger"/>
<report
@@ -1,16 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<menuitem
id="base.menu_hr_dasboard" name="Dashboard" parent="hr.menu_hr_reporting"
sequence="0"/>
<menuitem
action="hr.open_board_hr"
icon="terp-graph"
id="base.menu_hr_project"
parent="base.menu_hr_dasboard"
sequence="4"/>
<record id="action_hr_timesheet_sheet_graph" model="ir.actions.act_window">
<field name="name">Timesheets</field>
<field name="type">ir.actions.act_window</field>
@@ -19,7 +9,6 @@
<field name="view_mode">graph,tree</field>
<field name="view_id" ref="hr_timesheet_sheet.hr_timesheet_sheet_graph"/>
</record>
<record id="hr_timesheet_sheet_tree" model="ir.ui.view">
<field name="name">hr.timesheet.sheet.tree.simplified.board</field>
<field name="model">hr_timesheet_sheet.sheet</field>
@@ -55,12 +44,5 @@
</xpath>
</field>
</record>
<menuitem
action="hr.open_board_hr_manager"
icon="terp-graph"
id="base.menu_hr_manager"
parent="base.menu_hr_dasboard"
groups = "base.group_hr_manager"
sequence="5"/>
</data>
</openerp>
+63
View File
@@ -0,0 +1,63 @@
# Estonian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-10-11 17:49+0000\n"
"Last-Translator: Aare Vesi <Unknown>\n"
"Language-Team: Estonian <et@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: 2011-10-12 04:40+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: html_view
#: field:html.view,name:0
msgid "Name"
msgstr "Nimi"
#. module: html_view
#: field:html.view,comp_id:0
msgid "Company"
msgstr ""
#. module: html_view
#: model:ir.actions.act_window,name:html_view.action_html_view_form
#: model:ir.ui.menu,name:html_view.html_form
msgid "Html Test"
msgstr ""
#. module: html_view
#: view:html.view:0
msgid "Html Example"
msgstr ""
#. module: html_view
#: model:ir.module.module,shortdesc:html_view.module_meta_information
msgid "Html View"
msgstr ""
#. module: html_view
#: field:html.view,bank_ids:0
msgid "Banks"
msgstr "Pangad"
#. module: html_view
#: model:ir.module.module,description:html_view.module_meta_information
msgid ""
"\n"
" This is the test module which shows html tag supports in normal xml form "
"view.\n"
" "
msgstr ""
#. module: html_view
#: model:ir.model,name:html_view.model_html_view
msgid "html.view"
msgstr ""
+4 -4
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-10-10 19:38+0000\n"
"PO-Revision-Date: 2011-10-11 17:58+0000\n"
"Last-Translator: Aare Vesi <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: 2011-10-11 05:35+0000\n"
"X-Generator: Launchpad (build 14123)\n"
"X-Launchpad-Export-Date: 2011-10-12 04:40+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: idea
#: help:idea.category,visibility:0
@@ -434,7 +434,7 @@ msgstr "Juuni"
#: field:report.vote,creater_id:0
#: field:report.vote,user_id:0
msgid "User Name"
msgstr "Kasutaja nimi"
msgstr "Kasutajanimi"
#. module: idea
#: model:ir.model,name:idea.model_idea_vote_stat
+55
View File
@@ -0,0 +1,55 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-07 05:27+0000\n"
"PO-Revision-Date: 2011-10-13 15:14+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@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: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_cn
#: model:ir.module.module,shortdesc:l10n_cn.module_meta_information
msgid "中国会计科目表"
msgstr ""
#. module: l10n_cn
#: model:ir.module.module,description:l10n_cn.module_meta_information
msgid ""
"\n"
" 添加中文省份数据\n"
" 科目类型\\会计科目表模板\\增值税\\辅助核算类别\\管理会计凭证簿\\财务会计凭证簿\n"
" "
msgstr ""
"\n"
" 添加中文省份数据\n"
" 科目类型\\会计科目表模板\\增值税\\辅助核算类别\\管理会计凭证簿\\财务会计凭证簿\n"
" "
#. module: l10n_cn
#: model:ir.actions.todo,note:l10n_cn.config_call_account_template_cn_chart
msgid ""
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
"the name of the company, the chart template to follow, the no. of digits to "
"generate the code for your accounts and Bank account, currency to create "
"Journals. Thus,the pure copy of chart Template is generated.\n"
"\tThis is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
"generiše čista kopija šablona tabelâ.\n"
"\tTo je isti setup wizard koji se pokreće iz Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
+15 -5
View File
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-12-10 18:18+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2011-10-13 15:18+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian latin <sr@latin@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: 2011-09-05 05:58+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_es
#: model:ir.module.module,shortdesc:l10n_es.module_meta_information
msgid "Spanish Charts of Accounts (PGCE 2008)"
msgstr ""
msgstr "Računske tabele za Španiju (PGCE 2008)"
#. module: l10n_es
#: model:ir.module.module,description:l10n_es.module_meta_information
@@ -37,3 +37,13 @@ msgid ""
"Note: You should install the l10n_ES_account_balance_report module\n"
"for yearly account reporting (balance, profit & losses).\n"
msgstr ""
"Računske tabele za Španiju (PGCE 2008)\n"
"\n"
"*Definiše sledeće modele za računske tabele:\n"
" *Opšte računske tabele za Španiju 2008.\n"
" *OPšte računske tabele za Španiju za mala i srednja preduzeća.\n"
"*Definiše modele za prodaju i nabavku VAT-a.\n"
"*Definiše model za takseni kod.\n"
"\n"
"Beleška: Trebalo bi da instalirate modul ''l10n_ES_account_balance_report''\n"
"za godišnje izveštaje o računu (balans, prihod i rashod).\n"
+11 -5
View File
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-12-10 18:19+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2011-10-13 15:20+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian latin <sr@latin@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: 2011-09-05 05:58+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_gt
#: model:ir.module.module,shortdesc:l10n_gt.module_meta_information
msgid "Guatemala - Plan contable general"
msgstr ""
msgstr "Gvatemala - Plan contable general"
#. module: l10n_gt
#: model:ir.actions.todo,note:l10n_gt.config_call_account_template_gt_minimal
@@ -29,6 +29,9 @@ msgid ""
"una compañía, el modelo a utilizar, el número de digitos a usar en la "
"nomenclatura, la moneda para crear los diarios."
msgstr ""
"Generar la nomenclatura contable a partir de un modelo. Deberá seleccionar "
"una compañía, el modelo a utilizar, el número de digitos a usar en la "
"nomenclatura, la moneda para crear los diarios."
#. module: l10n_gt
#: model:ir.module.module,description:l10n_gt.module_meta_information
@@ -37,3 +40,6 @@ msgid ""
"la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also "
"includes taxes and the Quetzal currency"
msgstr ""
"Agrega una nomenclatura contable para Guatemala. También icluye impuestos y "
"la moneda del Quetzal. -- Dodaje računske tabele za Gvatemalu. Takođe "
"uključuje porez i Kvetzal valutu."
+4 -4
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: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-03-12 20:48+0000\n"
"Last-Translator: mgaja (GrupoIsep.com) <Unknown>\n"
"PO-Revision-Date: 2011-10-12 06:36+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Catalan <ca@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: 2011-03-13 06:16+0000\n"
"X-Generator: Launchpad (build 12559)\n"
"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
+4 -4
View File
@@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-01-19 12:00+0000\n"
"Last-Translator: Nicolas Vanhoren (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2011-10-12 06:36+0000\n"
"Last-Translator: OpenERP Administrators <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: 2011-01-25 06:47+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
+3 -3
View File
@@ -8,15 +8,15 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-01-19 12:00+0000\n"
"PO-Revision-Date: 2011-10-12 06:36+0000\n"
"Last-Translator: Maxime Chambreuil (http://www.savoirfairelinux.com) "
"<maxime.chambreuil@savoirfairelinux.com>\n"
"Language-Team: French <fr@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: 2011-01-25 06:47+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
+4 -4
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: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-02-11 13:05+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2011-10-12 06:36+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Galician <gl@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: 2011-02-12 06:06+0000\n"
"X-Generator: Launchpad (build 12351)\n"
"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
+3 -3
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: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-01-19 12:00+0000\n"
"PO-Revision-Date: 2011-10-12 06:34+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Hungarian <hu@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: 2011-01-25 06:47+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
+4 -4
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: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-01-19 12:00+0000\n"
"Last-Translator: Nicola Riolini - Micronaet <Unknown>\n"
"PO-Revision-Date: 2011-10-12 06:36+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Italian <it@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: 2011-01-25 06:47+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
+4 -4
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: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-03-10 23:09+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2011-10-12 06:36+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@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: 2011-03-11 06:00+0000\n"
"X-Generator: Launchpad (build 12559)\n"
"X-Launchpad-Export-Date: 2011-10-13 04:38+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
+11 -5
View File
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-01-19 12:00+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2011-10-13 15:22+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian latin <sr@latin@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: 2011-01-25 06:47+0000\n"
"X-Generator: Launchpad (build 12177)\n"
"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_hn
#: model:ir.module.module,shortdesc:l10n_hn.module_meta_information
msgid "Honduras - Plan contable general"
msgstr ""
msgstr "Honduras - Plan contable general"
#. module: l10n_hn
#: model:ir.actions.todo,note:l10n_hn.config_call_account_template_hn_minimal
@@ -29,6 +29,9 @@ msgid ""
"una compañía, el modelo a utilizar, el número de digitos a usar en la "
"nomenclatura, la moneda para crear los diarios."
msgstr ""
"Generar la nomenclatura contable a partir de un modelo. Deberá seleccionar "
"una compañía, el modelo a utilizar, el número de digitos a usar en la "
"nomenclatura, la moneda para crear los diarios."
#. module: l10n_hn
#: model:ir.module.module,description:l10n_hn.module_meta_information
@@ -37,3 +40,6 @@ msgid ""
"la moneda del Lempira. -- Adds accounting chart for Honduras. It also "
"includes taxes and the Lempira currency"
msgstr ""
"Agrega una nomenclatura contable para Honduras. También icluye impuestos y "
"la moneda del Lempira. -- Dodaje računske tabele za Gvatemalu. Takođe "
"uključuje porez i lempira valutu."
+48
View File
@@ -0,0 +1,48 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-07 06:07+0000\n"
"PO-Revision-Date: 2011-10-13 15:04+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@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: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_mx
#: model:ir.module.module,description:l10n_mx.module_meta_information
msgid ""
"This is the module to manage the accounting chart for Mexico in Open ERP."
msgstr "Ovo je modul za sređivanje računskih tabela za Meksiko u OPenERP-u."
#. module: l10n_mx
#: model:ir.actions.todo,note:l10n_mx.config_call_account_template_mx_chart
msgid ""
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
"the name of the company, the chart template to follow, the no. of digits to "
"generate the code for your accounts and Bank account, currency to create "
"Journals. Thus,the pure copy of chart Template is generated.\n"
"\tThis is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
"generiše čista kopija šablona tabelâ.\n"
"\tTo je isti setup wizard koji se pokreće iz Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
#. module: l10n_mx
#: model:ir.module.module,shortdesc:l10n_mx.module_meta_information
msgid "Mexico - Chart of Account"
msgstr "Meksiko - računske tabele"
+127
View File
@@ -0,0 +1,127 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-07 06:11+0000\n"
"PO-Revision-Date: 2011-10-13 15:02+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@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: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_nl
#: model:ir.actions.todo,note:l10n_nl.config_call_account_template
msgid ""
"Na installatie van deze module word de configuratie wizard voor "
"\"Accounting\" aangeroepen.\n"
"* U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het "
"Nederlandse grootboekschema bevind.\n"
"* Als de configuratie wizard start, wordt u gevraagd om de naam van uw "
"bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel "
"cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en "
"de currency om Journalen te creeren.\n"
" \n"
"Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit "
"4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal "
"verhogen. De extra cijfers worden dan achter het rekeningnummer aangevult "
"met \"nullen\"\n"
" \n"
"* Dit is dezelfe configuratie wizard welke aangeroepen kan worden via "
"Financial Management/Configuration/Financial Accounting/Financial "
"Accounts/Generate Chart of Accounts from a Chart Template.\n"
msgstr ""
"Na installatie van deze module word de configuratie wizard voor "
"\"Accounting\" aangeroepen.\n"
" * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het "
"Nederlandse grootboekschema bevind.\n"
" * Als de configuratie wizard start, wordt u gevraagd om de naam van uw "
"bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel "
"cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en "
"de currency om Journalen te creeren.\n"
" \n"
" Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit "
"4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal "
"verhogen. De extra cijfers worden dan achter het rekeningnummer aangevult "
"met \"nullen\"\n"
" \n"
" * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via "
"Financial Management/Configuration/Financial Accounting/Financial "
"Accounts/Generate Chart of Accounts from a Chart Template.\n"
#. module: l10n_nl
#: model:ir.module.module,shortdesc:l10n_nl.module_meta_information
msgid "Netherlands - Grootboek en BTW rekeningen"
msgstr "Holandija - Grootboek en BTW rekeningen"
#. module: l10n_nl
#: model:ir.module.module,description:l10n_nl.module_meta_information
msgid ""
"\n"
"Read changelog in file __terp__.py for version information. \n"
"Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor "
"Nederlandse bedrijven te installeren in OpenERP versie 5.\n"
" De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te "
"genereren, denk b.v. aan intracommunautaire verwervingen\n"
" waarbij u 19% BTW moet opvoeren, maar tegelijkertijd ook 19% als "
"voorheffing weer mag aftrekken.\n"
" \n"
" Na installatie van deze module word de configuratie wizard voor "
"\"Accounting\" aangeroepen.\n"
" * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook "
"het Nederlandse grootboekschema bevind.\n"
" \n"
" * Als de configuratie wizard start, wordt u gevraagd om de naam van uw "
"bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel "
"cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en "
"de currency om Journalen te creeren.\n"
" \n"
" Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd "
"uit 4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het "
"aantal verhogen. De extra cijfers worden dan achter het rekeningnummer "
"aangevult met \"nullen\"\n"
" \n"
" * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via "
"Financial Management/Configuration/Financial Accounting/Financial "
"Accounts/Generate Chart of Accounts from a Chart Template.\n"
"\n"
" "
msgstr ""
"\n"
"Pročitajte spisak izmena u datoteci file __terp__.py za podatke o verziji. "
"\n"
"Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor "
"Nederlandse bedrijven te installeren in OpenERP versie 5\n"
" De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te "
"genereren, denk b.v. aan intracommunautaire verwervingen\n"
" waarbij u 19% BTW moet opvoeren, maar tegelijkertijd ook 19% als "
"voorheffing weer mag aftrekken.\n"
" \n"
" Na installatie van deze module word de configuratie wizard voor "
"\"Accounting\" aangeroepen\n"
" * U krijgt een lijst met grootboektemplates aangeboden waarin zich ook "
"het Nederlandse grootboekschema bevind\n"
" \n"
"\n"
" * Als de configuratie wizard start, wordt u gevraagd om de naam van uw "
"bedrijf in te voeren, welke grootboekschema te installeren, uit hoeveel "
"cijfers een grootboekrekening mag bestaan, het rekeningnummer van uw bank en "
"de currency om Journalen te creeren.\n"
" \n"
" Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd "
"uit 4 cijfers. Dit is het minimale aantal welk u moet invullen, u mag het "
"aantal verhogen. De extra cijfers worden dan achter het rekeningnummer "
"aangevult met \"nullen\"\n"
" \n"
" * Dit is dezelfe configuratie wizard welke aangeroepen kan worden via "
"Financial Management/Configuration/Financial Accounting/Financial "
"Accounts/Generate Chart of Accounts from a Chart Template\n"
"\n"
" "
+68
View File
@@ -0,0 +1,68 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-07 06:14+0000\n"
"PO-Revision-Date: 2011-10-13 14:58+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@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: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_pl
#: model:ir.module.module,description:l10n_pl.module_meta_information
msgid ""
"\n"
" This is the module to manage the accounting chart and taxes for Poland "
"in Open ERP.\n"
" \n"
" To jest moduł do tworzenia wzorcowego planu kont i podstawowych "
"ustawień do podatków\n"
" VAT 0%, 7% i 22%. Moduł ustawia też konta do kupna i sprzedaży towarów "
"zakładając,\n"
" że wszystkie towary są w obrocie hurtowym.\n"
" "
msgstr ""
"\n"
" Ovo je modul za sređivanje računskih tabelai taksi za Poljsku u OpenERP-"
"u.\n"
" \n"
" To jest moduł do tworzenia wzorcowego planu kont i podstawowych "
"ustawień do podatków\n"
" VAT 0%, 7% i 22%. Moduł ustawia też konta do kupna i sprzedaży towarów "
"zakładając,\n"
" że wszystkie towary są w obrocie hurtowym.\n"
" "
#. module: l10n_pl
#: model:ir.module.module,shortdesc:l10n_pl.module_meta_information
msgid "Poland - Chart of Accounts"
msgstr "Poljska - računske tabele"
#. module: l10n_pl
#: model:ir.actions.todo,note:l10n_pl.config_call_account_template_pl_chart
msgid ""
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
"the name of the company, the chart template to follow, the no. of digits to "
"generate the code for your accounts and Bank account, currency to create "
"Journals. Thus,the pure copy of chart Template is generated.\n"
"\tThis is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
"generiše čista kopija šablona tabelâ.\n"
"\n"
"\tTo je isti setup wizard koji se pokreće iz Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
+67
View File
@@ -0,0 +1,67 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-07 06:16+0000\n"
"PO-Revision-Date: 2011-10-13 14:55+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@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: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_ro
#: help:res.partner,nrc:0
msgid "Registration number at the Registry of Commerce"
msgstr "Registracioni broj pri Trgovinskom registru"
#. module: l10n_ro
#: field:res.partner,nrc:0
msgid "NRC"
msgstr "NRC"
#. module: l10n_ro
#: model:ir.actions.todo,note:l10n_ro.config_call_account_template_ro
msgid ""
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
"the name of the company, the chart template to follow, the no. of digits to "
"generate the code for your accounts and Bank account, currency to create "
"Journals. Thus,the pure copy of chart Template is generated.\n"
"\tThis is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
"generiše čista kopija šablona tabelâ.\n"
"\n"
"\tTo je isti setup wizard koji se pokreće iz Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
#. module: l10n_ro
#: model:ir.module.module,shortdesc:l10n_ro.module_meta_information
msgid "Romania - Chart of Accounts"
msgstr "Rumunija - računske tabele"
#. module: l10n_ro
#: model:ir.model,name:l10n_ro.model_res_partner
msgid "Partner"
msgstr "Partner"
#. module: l10n_ro
#: model:ir.module.module,description:l10n_ro.module_meta_information
msgid ""
"This is the module to manage the accounting chart, VAT structure and "
"Registration Number for Romania in Open ERP."
msgstr ""
"Ovo je model za sređivanje računskih tabela, VAT strukture i Registracioni "
"broj za Rumuniju u OPenERP-u"
+54
View File
@@ -0,0 +1,54 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-07 06:19+0000\n"
"PO-Revision-Date: 2011-10-13 14:53+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@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: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_th
#: model:ir.actions.todo,note:l10n_th.config_call_account_template_th
msgid ""
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
"the name of the company, the chart template to follow, the no. of digits to "
"generate the code for your accounts and Bank account, currency to create "
"Journals. Thus,the pure copy of chart Template is generated.\n"
"This is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
"generiše čista kopija šablona tabelâ.\n"
"\n"
" To je isti setup wizard koji se pokreće iz Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
#. module: l10n_th
#: model:ir.module.module,shortdesc:l10n_th.module_meta_information
msgid "Thailand - Thai Chart of Accounts"
msgstr "Tajland - tajlandske računske tabele"
#. module: l10n_th
#: model:ir.module.module,description:l10n_th.module_meta_information
msgid ""
"\n"
"Chart of accounts for Thailand.\n"
" "
msgstr ""
"\n"
"Računske tabele za Tajland.\n"
" "
+14 -4
View File
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2010-12-10 18:22+0000\n"
"PO-Revision-Date: 2011-10-13 14:51+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian latin <sr@latin@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: 2011-09-05 05:57+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_uk
#: model:ir.module.module,shortdesc:l10n_uk.module_meta_information
msgid "United Kingdom - minimal"
msgstr ""
msgstr "Ujedinjeno Kraljevstvo - minimalno"
#. module: l10n_uk
#: model:ir.module.module,description:l10n_uk.module_meta_information
@@ -28,6 +28,8 @@ msgid ""
"This is the base module to manage the accounting chart for United Kingdom in "
"OpenERP."
msgstr ""
"Ovo je osnovni modul za sređivanje računskih tabela za Ujedinjeno "
"kraljevstvo u OpenERP-u."
#. module: l10n_uk
#: model:ir.actions.todo,note:l10n_uk.config_call_account_template_uk_minimal
@@ -40,3 +42,11 @@ msgid ""
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
"generiše čista kopija šablona tabelâ.\n"
"\n"
" To je isti setup wizard koji se pokreće iz Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
+70
View File
@@ -0,0 +1,70 @@
# Serbian Latin translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-07 06:21+0000\n"
"PO-Revision-Date: 2011-10-13 15:23+0000\n"
"Last-Translator: Milan Milosevic <Unknown>\n"
"Language-Team: Serbian Latin <sr@latin@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: 2011-10-14 05:34+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: l10n_ve
#: model:ir.actions.todo,note:l10n_ve.config_call_account_template_ve_chart
msgid ""
"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
"the name of the company, the chart template to follow, the no. of digits to "
"generate the code for your accounts and Bank account, currency to create "
"Journals. Thus,the pure copy of chart Template is generated.\n"
"This is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template.\n"
"Genere el Plan de cuentas de una Plantilla de Carta. Le pedirán pasar el "
"nombre de la compania, la plantilla de carta para seguir, el no. de digitos "
"para generar el codigo para sus cuentas y cuenta Bancaria, dinero para crear "
"Diarios. Asi, la copia pura de la carta la Plantilla es generada.\n"
"Esto es el mismo wizard que corre de la Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template.\n"
" "
msgstr ""
"Generiše tabelu računâ iz šablona tabelâ. Bićete upitani za ime kompanije, "
"šablon tabelâ koji ćete pratiti, broj cifara za generisanje koda za Vaše "
"naloge i bankovni račun, valuta za pravljenje dnevnika. Na taj način se "
"generiše čista kopija šablona tabelâ.\n"
"To je isti setup wizard koji se pokreće iz Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template.\n"
"Genere el Plan de cuentas de una Plantilla de Carta. Le pedirán pasar el "
"nombre de la compania, la plantilla de carta para seguir, el no. de digitos "
"para generar el codigo para sus cuentas y cuenta Bancaria, dinero para crear "
"Diarios. Asi, la copia pura de la carta la Plantilla es generada.\n"
" Esto es el mismo wizard que corre de la Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template.\n"
" "
#. module: l10n_ve
#: model:ir.module.module,description:l10n_ve.module_meta_information
msgid ""
"\n"
"This is the module to manage the accounting chart for Venezuela in Open "
"ERP.\n"
"Este módulo es para manejar un catálogo de cuentas ejemplo para Venezuela.\n"
msgstr ""
"\n"
"Ovo je modul za uređivanje računskih tabela za Venecuelu u OPenERP-u.\n"
"Este módulo es para manejar un catálogo de cuentas ejemplo para Venezuela.\n"
#. module: l10n_ve
#: model:ir.module.module,shortdesc:l10n_ve.module_meta_information
msgid "Venezuela -Chart of Account"
msgstr "Venecuela - računske tabele"
+111
View File
@@ -0,0 +1,111 @@
# Slovenian translation for openobject-addons
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-10-11 16:48+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Slovenian <sl@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: 2011-10-12 04:40+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: marketing
#: model:ir.module.module,description:marketing.module_meta_information
msgid "Menu for Marketing"
msgstr ""
#. module: marketing
#: help:marketing.installer,marketing_campaign:0
msgid ""
"Helps you to manage marketing campaigns and automate actions and "
"communication steps."
msgstr ""
#. module: marketing
#: field:marketing.installer,progress:0
msgid "Configuration Progress"
msgstr "Potek konfiguracije"
#. module: marketing
#: view:marketing.installer:0
msgid "title"
msgstr ""
#. module: marketing
#: field:marketing.installer,email_template:0
msgid "Automated E-Mails"
msgstr ""
#. module: marketing
#: field:marketing.installer,config_logo:0
msgid "Image"
msgstr "Slika"
#. module: marketing
#: view:marketing.installer:0
msgid "Configure Your Marketing Application"
msgstr ""
#. module: marketing
#: help:marketing.installer,email_template:0
msgid ""
"Helps you to design templates of emails and integrate them in your different "
"processes."
msgstr ""
#. module: marketing
#: model:ir.model,name:marketing.model_marketing_installer
msgid "marketing.installer"
msgstr ""
#. module: marketing
#: model:ir.module.module,shortdesc:marketing.module_meta_information
msgid "Marketing"
msgstr "Marketing"
#. module: marketing
#: field:marketing.installer,crm_profiling:0
msgid "Profiling Tools"
msgstr "Orodja za profiliranje"
#. module: marketing
#: view:marketing.installer:0
msgid ""
"OpenERP provides Addons to better manage your sales and marketing processes. "
"Select the ones you would be interested in."
msgstr ""
#. module: marketing
#: view:marketing.installer:0
msgid "Marketing Application Configuration"
msgstr ""
#. module: marketing
#: model:ir.actions.act_window,name:marketing.action_marketing_installer
msgid "Marketing Modules Installation"
msgstr ""
#. module: marketing
#: field:marketing.installer,marketing_campaign:0
msgid "Marketing Campaigns"
msgstr ""
#. module: marketing
#: help:marketing.installer,crm_profiling:0
msgid ""
"Helps you to perform segmentation of partners and design segmentation "
"questionnaires"
msgstr ""
#. module: marketing
#: view:marketing.installer:0
msgid "Configure"
msgstr "Nastavitve"
+1 -1
View File
@@ -122,7 +122,7 @@ class mrp_repair(osv.osv):
'prodlot_id': fields.many2one('stock.production.lot', 'Lot Number', select=True, domain="[('product_id','=',product_id)]"),
'state': fields.selection([
('draft','Quotation'),
('confirmed','Confirmed, to repair'),
('confirmed','Confirmed'),
('ready','Ready to Repair'),
('under_repair','Under Repair'),
('2binvoiced','To be Invoiced'),
+78 -79
View File
@@ -7,17 +7,17 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-03 16:58+0000\n"
"PO-Revision-Date: 2010-10-30 09:04+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"PO-Revision-Date: 2011-10-11 18:22+0000\n"
"Last-Translator: Aare Vesi <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: 2011-09-05 05:05+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-12 04:39+0000\n"
"X-Generator: Launchpad (build 14124)\n"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:1206
#: code:addons/point_of_sale/point_of_sale.py:1202
#, python-format
msgid "Create line failed !"
msgstr "Rea loomine ebaõnnestus!"
@@ -29,7 +29,7 @@ msgid "Invalid action !"
msgstr "Vigane tegevus !"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:1214
#: code:addons/point_of_sale/point_of_sale.py:1210
#, python-format
msgid "Modify line failed !"
msgstr "Rea muutmine ebaõnnestus!"
@@ -73,7 +73,7 @@ msgstr "Kassa"
#. module: point_of_sale
#: view:report.pos.order:0
msgid "Today"
msgstr ""
msgstr "Täna"
#. module: point_of_sale
#: view:pos.add.product:0
@@ -121,7 +121,7 @@ msgstr "Scanneeri toodet"
#: view:report.pos.order:0
#: field:report.pos.order,day:0
msgid "Day"
msgstr ""
msgstr "Päev"
#. module: point_of_sale
#: view:pos.make.payment:0
@@ -132,7 +132,7 @@ msgstr "Lisa maksmine :"
#: view:report.cash.register:0
#: view:report.pos.order:0
msgid "My Sales"
msgstr ""
msgstr "Minu müügid"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_box_out
@@ -163,7 +163,7 @@ msgstr "Käibemaks"
#. module: point_of_sale
#: report:pos.invoice:0
msgid "Origin"
msgstr ""
msgstr "Päritolu"
#. module: point_of_sale
#: report:pos.invoice:0
@@ -196,7 +196,7 @@ msgstr "Päevasumma"
#: view:report.pos.order:0
#: field:report.pos.order,average_price:0
msgid "Average Price"
msgstr ""
msgstr "Keskmine hind"
#. module: point_of_sale
#: report:pos.lines:0
@@ -248,24 +248,24 @@ msgstr ""
#: field:pos.box.entries,ref:0
#: field:pos.box.out,ref:0
msgid "Ref"
msgstr ""
msgstr "Viide"
#. module: point_of_sale
#: view:report.pos.order:0
#: field:report.pos.order,price_total:0
msgid "Total Price"
msgstr ""
msgstr "Hind kokku"
#. module: point_of_sale
#: view:product.product:0
msgid "Miscelleanous"
msgstr ""
msgstr "Mitmesugune"
#. module: point_of_sale
#: model:ir.actions.report.xml,name:point_of_sale.pos_sales_user
#: report:pos.sales.user:0
msgid "Sales Report"
msgstr ""
msgstr "Müügiaruanne"
#. module: point_of_sale
#: code:addons/point_of_sale/wizard/pos_discount.py:52
@@ -276,18 +276,18 @@ msgstr ""
#. module: point_of_sale
#: view:pos.order:0
msgid "Other Information"
msgstr ""
msgstr "Muu info"
#. module: point_of_sale
#: view:product.product:0
msgid "Product Type"
msgstr ""
msgstr "Toote tüüp"
#. module: point_of_sale
#: view:pos.order:0
#: view:pos.payment.report.date:0
msgid "Dates"
msgstr ""
msgstr "Kuupäevad"
#. module: point_of_sale
#: field:res.company,company_discount:0
@@ -300,8 +300,8 @@ msgid "Cash register management"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:1056
#: code:addons/point_of_sale/point_of_sale.py:1075
#: code:addons/point_of_sale/point_of_sale.py:1057
#: code:addons/point_of_sale/point_of_sale.py:1076
#, python-format
msgid "No valid pricelist line found !"
msgstr "Kehtiv hinnakirja rida ei ole leitud !"
@@ -314,13 +314,13 @@ msgstr "Kehtiv hinnakirja rida ei ole leitud !"
#: report:pos.payment.report.user:0
#: report:pos.user.product:0
msgid "["
msgstr ""
msgstr "["
#. module: point_of_sale
#: field:report.sales.by.margin.pos,total:0
#: field:report.sales.by.margin.pos.month,total:0
msgid "Margin"
msgstr ""
msgstr "Kate"
#. module: point_of_sale
#: field:pos.order.line,discount:0
@@ -380,13 +380,13 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "August"
msgstr ""
msgstr "August"
#. module: point_of_sale
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "June"
msgstr ""
msgstr "Juuni"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.action_report_sales_by_user_pos_month
@@ -409,7 +409,7 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "October"
msgstr ""
msgstr "Oktoober"
#. module: point_of_sale
#: field:account.bank.statement.line,am_out:0
@@ -425,7 +425,7 @@ msgstr "Üldistus"
#. module: point_of_sale
#: view:pos.order:0
msgid "Quotations"
msgstr ""
msgstr "Pakkumised"
#. module: point_of_sale
#: field:report.pos.order,delay_payment:0
@@ -450,7 +450,7 @@ msgstr ""
#. module: point_of_sale
#: view:account.bank.statement:0
msgid "Period"
msgstr ""
msgstr "Periood"
#. module: point_of_sale
#: report:pos.invoice:0
@@ -466,7 +466,7 @@ msgstr "Rea kirjeldus"
#. module: point_of_sale
#: view:product.product:0
msgid "Codes"
msgstr ""
msgstr "Koodid"
#. module: point_of_sale
#: view:pos.box.out:0
@@ -483,7 +483,7 @@ msgstr ""
#: view:pos.sales.user.today:0
#: view:pos.sales.user.today.current_user:0
msgid "Print Report"
msgstr ""
msgstr "Trüki aruanne"
#. module: point_of_sale
#: report:pos.invoice:0
@@ -509,7 +509,7 @@ msgstr ""
#: model:ir.model,name:point_of_sale.model_pos_add_product
#, python-format
msgid "Add Product"
msgstr ""
msgstr "Lisa toode"
#. module: point_of_sale
#: field:report.transaction.pos,invoice_am:0
@@ -581,7 +581,7 @@ msgstr ""
#. module: point_of_sale
#: constraint:product.product:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "Viga: vigane EAN kood"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_open_statement
@@ -626,7 +626,7 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "March"
msgstr ""
msgstr "Märts"
#. module: point_of_sale
#: model:ir.actions.report.xml,name:point_of_sale.pos_users_product_re
@@ -635,8 +635,8 @@ msgid "User's Product"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:1042
#: code:addons/point_of_sale/point_of_sale.py:1067
#: code:addons/point_of_sale/point_of_sale.py:1043
#: code:addons/point_of_sale/point_of_sale.py:1068
#, python-format
msgid ""
"You have to select a pricelist in the sale form !\n"
@@ -749,7 +749,7 @@ msgstr "Kokku :"
#: field:report.sales.by.margin.pos,product_name:0
#: field:report.sales.by.margin.pos.month,product_name:0
msgid "Product Name"
msgstr ""
msgstr "Toote nimi"
#. module: point_of_sale
#: field:pos.make.payment,pricelist_id:0
@@ -767,7 +767,7 @@ msgstr "Kokku arves"
#: view:report.pos.order:0
#: field:report.pos.order,product_qty:0
msgid "# of Qty"
msgstr ""
msgstr "Kogus"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_return
@@ -786,7 +786,7 @@ msgstr ""
#: field:report.sales.by.user.pos,date_order:0
#: field:report.sales.by.user.pos.month,date_order:0
msgid "Order Date"
msgstr ""
msgstr "Tellimuse Kuupäev"
#. module: point_of_sale
#: report:all.closed.cashbox.of.the.day:0
@@ -825,7 +825,7 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "September"
msgstr ""
msgstr "September"
#. module: point_of_sale
#: report:account.statement:0
@@ -836,7 +836,7 @@ msgstr ""
#. module: point_of_sale
#: report:pos.lines:0
msgid "Taxes :"
msgstr ""
msgstr "Maksud :"
#. module: point_of_sale
#: field:report.transaction.pos,disc:0
@@ -859,7 +859,6 @@ msgid "Receipt :"
msgstr ""
#. module: point_of_sale
#: field:account.bank.statement.line,pos_statement_id:0
#: field:pos.order,amount_return:0
msgid "unknown"
msgstr "teadmata"
@@ -878,7 +877,7 @@ msgstr ""
#. module: point_of_sale
#: field:pos.order,num_sale:0
msgid "Internal Note"
msgstr ""
msgstr "Sisemine märkus"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_res_company
@@ -916,7 +915,7 @@ msgstr ""
#. module: point_of_sale
#: report:pos.invoice:0
msgid "Your Reference"
msgstr ""
msgstr "Teie viide"
#. module: point_of_sale
#: field:report.transaction.pos,no_trans:0
@@ -948,7 +947,7 @@ msgstr "Müük (üldistus)"
#. module: point_of_sale
#: view:product.product:0
msgid "Information"
msgstr ""
msgstr "informatsioon"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_wizard_enter_jrnl
@@ -974,7 +973,7 @@ msgstr ""
#. module: point_of_sale
#: field:pos.order,first_name:0
msgid "First Name"
msgstr ""
msgstr "Eesnimi"
#. module: point_of_sale
#: view:res.company:0
@@ -1002,7 +1001,7 @@ msgstr ""
#: view:account.journal:0
#: field:account.journal,journal_users:0
msgid "Users"
msgstr ""
msgstr "Kasutajad"
#. module: point_of_sale
#: report:pos.details:0
@@ -1028,7 +1027,7 @@ msgstr "POS"
#. module: point_of_sale
#: field:report.cash.register,date:0
msgid "Create Date"
msgstr ""
msgstr "Loomise kuupäev"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_wizard_enter_jrnl2
@@ -1047,7 +1046,7 @@ msgstr ""
#: report:pos.sales.user.today:0
#: report:pos.sales.user.today.current.user:0
msgid "Name"
msgstr ""
msgstr "Nimi"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_open_statement
@@ -1062,7 +1061,7 @@ msgstr ""
#: report:pos.payment.report.user:0
#: report:pos.user.product:0
msgid "]"
msgstr ""
msgstr "]"
#. module: point_of_sale
#: sql_constraint:account.journal:0
@@ -1080,7 +1079,7 @@ msgstr "Tarnija tagasimakse"
#: view:report.cash.register:0
#: view:report.pos.order:0
msgid "Group By..."
msgstr ""
msgstr "Grupeeri..."
#. module: point_of_sale
#: view:pos.order:0
@@ -1093,8 +1092,8 @@ msgid "All Closed CashBox"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:1041
#: code:addons/point_of_sale/point_of_sale.py:1066
#: code:addons/point_of_sale/point_of_sale.py:1042
#: code:addons/point_of_sale/point_of_sale.py:1067
#, python-format
msgid "No Pricelist !"
msgstr "Puudub hinnakiri !"
@@ -1118,7 +1117,7 @@ msgstr "Baas"
#. module: point_of_sale
#: view:product.product:0
msgid "Account"
msgstr ""
msgstr "Konto"
#. module: point_of_sale
#: field:pos.order,sale_manager:0
@@ -1161,7 +1160,7 @@ msgstr "Tootekood"
#: model:ir.ui.menu,name:point_of_sale.menu_point_of_sale_product
#: model:ir.ui.menu,name:point_of_sale.menu_pos_products
msgid "Products"
msgstr ""
msgstr "Tooted"
#. module: point_of_sale
#: model:ir.actions.report.xml,name:point_of_sale.pos_payment_report
@@ -1250,15 +1249,15 @@ msgid "Sale by User"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:555
#: code:addons/point_of_sale/point_of_sale.py:743
#: code:addons/point_of_sale/point_of_sale.py:851
#: code:addons/point_of_sale/point_of_sale.py:558
#: code:addons/point_of_sale/point_of_sale.py:744
#: code:addons/point_of_sale/point_of_sale.py:852
#: code:addons/point_of_sale/report/pos_invoice.py:46
#: code:addons/point_of_sale/wizard/pos_box_entries.py:103
#: code:addons/point_of_sale/wizard/pos_box_entries.py:107
#: code:addons/point_of_sale/wizard/pos_box_out.py:95
#: code:addons/point_of_sale/wizard/pos_box_out.py:99
#: code:addons/point_of_sale/wizard/pos_box_out.py:97
#: code:addons/point_of_sale/wizard/pos_box_out.py:101
#: code:addons/point_of_sale/wizard/pos_box_out.py:103
#, python-format
msgid "Error !"
msgstr "Viga !"
@@ -1282,10 +1281,10 @@ msgstr ""
#: selection:report.cash.register,month:0
#: selection:report.pos.order,month:0
msgid "July"
msgstr ""
msgstr "Juuli"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:544
#: code:addons/point_of_sale/point_of_sale.py:547
#, python-format
msgid "Please provide an account for the product: %s"
msgstr ""
@@ -1338,7 +1337,7 @@ msgstr ""
#: view:report.pos.order:0
#: field:report.pos.order,month:0
msgid "Month"
msgstr ""
msgstr "Kuu"
#. module: point_of_sale
#: view:pos.order:0
@@ -1386,7 +1385,7 @@ msgid "Customer Note"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:337
#: code:addons/point_of_sale/point_of_sale.py:340
#, python-format
msgid "No order lines defined for this sale."
msgstr ""
@@ -1595,7 +1594,7 @@ msgid "Yes"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:743
#: code:addons/point_of_sale/point_of_sale.py:744
#, python-format
msgid "There is no income account defined for this product: \"%s\" (id:%d)"
msgstr ""
@@ -1696,8 +1695,8 @@ msgid "Invoice Date"
msgstr "Arve Kuupäev"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:1057
#: code:addons/point_of_sale/point_of_sale.py:1076
#: code:addons/point_of_sale/point_of_sale.py:1058
#: code:addons/point_of_sale/point_of_sale.py:1077
#, python-format
msgid ""
"Couldn't find a pricelist line matching this product and quantity.\n"
@@ -1715,9 +1714,9 @@ msgid "Reprint"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:555
#: code:addons/point_of_sale/point_of_sale.py:558
#: code:addons/point_of_sale/wizard/pos_box_entries.py:103
#: code:addons/point_of_sale/wizard/pos_box_out.py:101
#: code:addons/point_of_sale/wizard/pos_box_out.py:103
#, python-format
msgid "You have to open at least one cashbox"
msgstr ""
@@ -1907,8 +1906,8 @@ msgid "Validation Date"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:504
#: code:addons/point_of_sale/point_of_sale.py:506
#: code:addons/point_of_sale/point_of_sale.py:507
#: code:addons/point_of_sale/point_of_sale.py:509
#, python-format
msgid "You don't have enough access to validate this sale!"
msgstr ""
@@ -2027,13 +2026,13 @@ msgid "PRO-FORMA"
msgstr "Ettemaks"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:637
#: code:addons/point_of_sale/point_of_sale.py:638
#, python-format
msgid "Please provide a partner for the sale."
msgstr "Palun lisa müügipartnerit"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:852
#: code:addons/point_of_sale/point_of_sale.py:853
#, python-format
msgid ""
"There is no receivable account defined for this journal: \"%s\" (id:%d)"
@@ -2091,13 +2090,13 @@ msgid "POS Orders lines"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:337
#: code:addons/point_of_sale/point_of_sale.py:504
#: code:addons/point_of_sale/point_of_sale.py:506
#: code:addons/point_of_sale/point_of_sale.py:544
#: code:addons/point_of_sale/point_of_sale.py:637
#: code:addons/point_of_sale/point_of_sale.py:1206
#: code:addons/point_of_sale/point_of_sale.py:1214
#: code:addons/point_of_sale/point_of_sale.py:340
#: code:addons/point_of_sale/point_of_sale.py:507
#: code:addons/point_of_sale/point_of_sale.py:509
#: code:addons/point_of_sale/point_of_sale.py:547
#: code:addons/point_of_sale/point_of_sale.py:638
#: code:addons/point_of_sale/point_of_sale.py:1202
#: code:addons/point_of_sale/point_of_sale.py:1210
#, python-format
msgid "Error"
msgstr "Viga"
@@ -2193,7 +2192,7 @@ msgid "Please fill these fields for entries to the box:"
msgstr ""
#. module: point_of_sale
#: code:addons/point_of_sale/wizard/pos_box_out.py:99
#: code:addons/point_of_sale/wizard/pos_box_out.py:101
#, python-format
msgid "please check that account is set to %s"
msgstr ""
+2 -2
View File
@@ -670,7 +670,7 @@
<field name="res_model">product.product</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('income_pdt','=',True)]</field>
<field name="domain">[('expense_pdt','=',True)]</field>
</record>
<record model="ir.actions.act_window.view" id="action_product_input_tree_tag">
<field name="sequence" eval="1"/>
@@ -696,7 +696,7 @@
<field name="res_model">product.product</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('expense_pdt','=',True)]</field>
<field name="domain">[('income_pdt','=',True)]</field>
</record>
<record model="ir.actions.act_window.view" id="action_product_output_tree_tag">
<field name="sequence" eval="1"/>
+1 -1
View File
@@ -33,7 +33,7 @@
var db = openerp.init();
openerp.point_of_sale(db);
var session = new db.web.Session('DEBUG');
session.session_login('trunk', 'admin', 'a').then(function() {
session.session_login('addons-trunk_all', 'admin', 'admin').then(function() {
var pos = new db.point_of_sale.PointOfSale({session: session});
pos.appendTo($("body"));
});
+1 -1
View File
@@ -10,7 +10,7 @@
<field name="arch" type="xml">
<search string="Product">
<filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/>
<filter string="Stockable" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]"/>
<filter string="Products" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]" help="Both stockable and consumable products"/>
<separator orientation="vertical"/>
<filter string="To Sell" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
<filter name="filter_to_purchase" string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]" />
+2 -2
View File
@@ -48,7 +48,7 @@
</record>
<record id="action_view_task_tree" model="ir.actions.act_window">
<record id="my_open_tasks_action" model="ir.actions.act_window">
<field name="name">My Open Tasks</field>
<field name="res_model">project.task</field>
<field name="view_type">form</field>
@@ -83,7 +83,7 @@
<form string="My Board">
<hpaned>
<child1>
<action colspan="4" height="100" name="%(action_view_task_tree)d" string="My Open Tasks" width="510"/>
<action colspan="4" height="100" name="%(my_open_tasks_action)d" string="My Open Tasks" width="510"/>
<action colspan="4" height="100" name="%(action_view_delegate_task_tree)d" string="My Delegated Tasks" width="510"/>
</child1>
<child2>
+4 -4
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: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-08-17 22:31+0000\n"
"PO-Revision-Date: 2011-10-16 23:02+0000\n"
"Last-Translator: mgaja (GrupoIsep.com) <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: 2011-09-05 04:53+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
"X-Generator: Launchpad (build 14155)\n"
#. module: project
#: model:ir.actions.act_window,name:project.act_res_users_2_project_task_opened
@@ -71,7 +71,7 @@ msgstr "Operació no permesa!"
#: code:addons/project/wizard/project_task_delegate.py:67
#, python-format
msgid "CHECK: %s"
msgstr "CHECK: %s"
msgstr "COMPROVA: %s"
#. module: project
#: code:addons/project/wizard/project_task_delegate.py:55
+5 -6
View File
@@ -7,15 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2011-01-16 18:25+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"PO-Revision-Date: 2011-10-16 23:01+0000\n"
"Last-Translator: mgaja (GrupoIsep.com) <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: 2011-09-05 04:54+0000\n"
"X-Generator: Launchpad (build 13830)\n"
"X-Launchpad-Export-Date: 2011-10-17 04:43+0000\n"
"X-Generator: Launchpad (build 14155)\n"
#. module: project
#: model:ir.actions.act_window,name:project.act_res_users_2_project_task_opened
@@ -72,7 +71,7 @@ msgstr "¡Operación no permitida!"
#: code:addons/project/wizard/project_task_delegate.py:67
#, python-format
msgid "CHECK: %s"
msgstr ""
msgstr "CONSULTAR: %s"
#. module: project
#: code:addons/project/wizard/project_task_delegate.py:55
+1 -1
View File
@@ -469,7 +469,7 @@ class task(osv.osv):
'work_ids': fields.one2many('project.task.work', 'task_id', 'Work done'),
'manager_id': fields.related('project_id', 'analytic_account_id', 'user_id', type='many2one', relation='res.users', string='Project Manager'),
'company_id': fields.many2one('res.company', 'Company'),
'id': fields.integer('ID'),
'id': fields.integer('ID', readonly=True),
'color': fields.integer('Color Index'),
}
-14
View File
@@ -511,20 +511,6 @@
<field name="search_view_id" ref="view_task_search_form"/>
<field name="help">A task represents a work that has to be done. Each user works in his own list of tasks where he can record his task work in hours. He can work and close the task itself or delegate it to another user. If you delegate a task to another user, you get a new task in pending state, which will be reopened when you have to review the work achieved. If you install the project_timesheet module, task work can be invoiced based on the project configuration. With the project_mrp module, sales orders can create tasks automatically when they are confirmed.</field>
</record>
<record id="action_view_task_tree" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_task_tree2"/>
<field name="act_window_id" ref="action_view_task"/>
</record>
<record id="action_view_task_form" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_task_form2"/>
<field name="act_window_id" ref="action_view_task"/>
</record>
<menuitem action="action_view_task" id="menu_action_view_task" parent="project.menu_project_management" sequence="3"/>
+3 -2
View File
@@ -128,6 +128,7 @@ class project_vs_hours(osv.osv):
_columns = {
'project': fields.char('Project', size=128, required=True),
'remaining_hours': fields.float('Remaining Hours', readonly=True),
'user_id': fields.many2one('res.users', 'Assigned To', readonly=True),
'planned_hours': fields.float('Planned Hours', readonly=True),
'total_hours': fields.float('Total Hours', readonly=True),
'state': fields.selection([('draft','Draft'),('open','Open'), ('pending','Pending'),('cancelled', 'Cancelled'),('close','Close'),('template', 'Template')], 'State', required=True, readonly=True)
@@ -140,7 +141,7 @@ class project_vs_hours(osv.osv):
CREATE or REPLACE view project_vs_hours as (
select
min(pt.id) as id,
aaa.user_id as uid,
aaa.user_id as user_id,
aaa.name as project,
aaa.state,
sum(pt.remaining_hours) as remaining_hours,
@@ -154,7 +155,7 @@ class project_vs_hours(osv.osv):
UNION All
SELECT
min(pt.id) as id,
pur.uid as uid,
pur.uid as user_id,
aaa.name as project,
aaa.state,
sum(pt.remaining_hours) as remaining_hours,
@@ -184,7 +184,7 @@
<field name="res_model">project.vs.hours</field>
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="domain">[('uid','=',uid),('state','=','open')]</field>
<field name="domain">[('user_id','=',uid),('state','=','open')]</field>
<field name="view_id" ref="view_project_vs_remaining_hours_graph"/>
</record>
@@ -272,7 +272,7 @@
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
<field name="context">{}</field>
<field name="domain">[('uid','=',uid),('state','=','open')]</field>
<field name="domain">[('user_id','=',uid),('state','=','open')]</field>
<field name="view_id" ref="view_project_vs_planned_total_hours_graph"/>
</record>
@@ -73,11 +73,11 @@ class project_task_reevaluate(osv.osv_memory):
if context is None:
context = {}
data = self.browse(cr, uid, ids, context=context)[0]
task_pool = self.pool.get('project.task')
task_id = context.get('active_id', False)
task_id = context.get('active_id')
if task_id:
task_pool = self.pool.get('project.task')
task_pool.write(cr, uid, task_id, {'remaining_hours': data.remaining_hours})
if context.get('button_reactivate', False):
if context.get('button_reactivate'):
task_pool.do_reopen(cr, uid, [task_id], context=context)
return {'type': 'ir.actions.act_window_close'}
project_task_reevaluate()

Some files were not shown because too many files have changed in this diff Show More