[MERGE] latest trunk
bzr revid: abo@openerp.com-20120830135253-cr29ce1300kd52cz
This commit is contained in:
commit
8222eb3723
|
@ -746,9 +746,11 @@ class account_journal(osv.osv):
|
|||
'profit_account_id' : fields.many2one('account.account', 'Profit Account'),
|
||||
'loss_account_id' : fields.many2one('account.account', 'Loss Account'),
|
||||
'internal_account_id' : fields.many2one('account.account', 'Internal Transfers Account', select=1),
|
||||
'cash_control' : fields.boolean('Cash Control', help='If you want the journal should be control at opening/closing, check this option'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'cash_control' : False,
|
||||
'with_last_closing_balance' : False,
|
||||
'user_id': lambda self, cr, uid, context: uid,
|
||||
'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id,
|
||||
|
|
|
@ -194,12 +194,27 @@ class account_cash_statement(osv.osv):
|
|||
journal = self.pool.get('account.journal').browse(cr, uid, vals['journal_id'], context=context)
|
||||
if journal and (journal.type == 'cash') and not vals.get('details_ids'):
|
||||
vals['details_ids'] = []
|
||||
|
||||
last_pieces = None
|
||||
|
||||
if journal.with_last_closing_balance == True:
|
||||
domain = [('journal_id', '=', journal.id),
|
||||
('state', '=', 'confirm')]
|
||||
last_bank_statement_ids = self.search(cr, uid, domain, limit=1, order='create_date desc', context=context)
|
||||
if last_bank_statement_ids:
|
||||
last_bank_statement = self.browse(cr, uid, last_bank_statement_ids[0], context=context)
|
||||
|
||||
last_pieces = dict(
|
||||
(line.pieces, line.number_closing) for line in last_bank_statement.details_ids
|
||||
)
|
||||
|
||||
for value in journal.cashbox_line_ids:
|
||||
nested_values = {
|
||||
'number_closing' : 0,
|
||||
'number_opening' : 0,
|
||||
'number_opening' : last_pieces.get(value.pieces, 0) if isinstance(last_pieces, dict) else 0,
|
||||
'pieces' : value.pieces
|
||||
}
|
||||
|
||||
vals['details_ids'].append([0, False, nested_values])
|
||||
|
||||
res_id = super(account_cash_statement, self).create(cr, uid, vals, context=context)
|
||||
|
|
|
@ -515,7 +515,7 @@
|
|||
<separator colspan="4" string="Accounts Allowed (empty for no control)"/>
|
||||
<field colspan="4" name="account_control_ids" nolabel="1"/>
|
||||
</page>
|
||||
<page string="Cash Registers" attrs="{'invisible':[('type', '!=', 'cash')]}">
|
||||
<page string="Cash Registers">
|
||||
<group>
|
||||
<group string="Accounts">
|
||||
<field name="profit_account_id"/>
|
||||
|
@ -524,10 +524,11 @@
|
|||
</group>
|
||||
<group string="Miscellaneous">
|
||||
<field name="with_last_closing_balance"/>
|
||||
<field name="cash_control"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator string="Available Coins" colspan="4" />
|
||||
<field name="cashbox_line_ids" nolabel="1" string="Unit Of Currency Definition" colspan="4">
|
||||
<separator string="Available Coins" colspan="4" attrs="{'invisible' : [('cash_control', '=', False)] }"/>
|
||||
<field name="cashbox_line_ids" nolabel="1" string="Unit Of Currency Definition" colspan="4" attrs="{'invisible' : [('cash_control', '=', False)]}">
|
||||
<tree string="CashBox Lines" editable="bottom">
|
||||
<field name="pieces" />
|
||||
</tree>
|
||||
|
|
|
@ -381,6 +381,11 @@
|
|||
<field name="name">Cash Journal - (test)</field>
|
||||
<field name="code">TCSH</field>
|
||||
<field name="type">cash</field>
|
||||
<field name="profit_account_id" model="account.account" ref="rsa" />
|
||||
<field name="loss_account_id" model="account.account" ref="rsa" />
|
||||
<field name="internal_account_id" model="account.account" ref="chart0" />
|
||||
<field name="with_last_closing_balance" eval="True" />
|
||||
<field name="cash_control" eval="True" />
|
||||
<field name="view_id" ref="account_journal_bank_view"/>
|
||||
<field name="sequence_id" ref="sequence_cash_journal"/>
|
||||
<field model="account.account" name="default_debit_account_id" ref="cash"/>
|
||||
|
|
|
@ -40,6 +40,9 @@ Adds menu to show relevant information to each manager.You can also view the rep
|
|||
'account_analytic_analysis_menu.xml',
|
||||
'account_analytic_analysis_cron.xml',
|
||||
],
|
||||
'css': [
|
||||
'static/src/css/analytic.css'
|
||||
],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
|
|
|
@ -451,8 +451,8 @@ class account_analytic_account(osv.osv):
|
|||
'real_margin_rate': fields.function(_real_margin_rate_calc, type='float', string='Real Margin Rate (%)',
|
||||
help="Computes using the formula: (Real Margin / Total Costs) * 100.",
|
||||
digits_compute=dp.get_precision('Account')),
|
||||
'fix_price_invoices' : fields.boolean('Fix Price Invoices'),
|
||||
'invoice_on_timesheets' : fields.boolean("Invoice On Timesheets"),
|
||||
'fix_price_invoices' : fields.boolean('Fixed Price'),
|
||||
'invoice_on_timesheets' : fields.boolean("On Timesheets"),
|
||||
'month_ids': fields.function(_analysis_all, multi='analytic_analysis', type='many2many', relation='account_analytic_analysis.summary.month', string='Month'),
|
||||
'user_ids': fields.function(_analysis_all, multi='analytic_analysis', type="many2many", relation='account_analytic_analysis.summary.user', string='User'),
|
||||
'hours_qtt_est': fields.float('Estimation of Hours to Invoice'),
|
||||
|
|
|
@ -22,30 +22,28 @@
|
|||
<xpath expr='//div[@name="duration"]' position="after" version="7.0">
|
||||
<label for="quantity_max"/>
|
||||
<div>
|
||||
<field name="quantity_max" class="oe_inline"/> / Remaining: <field name="remaining_hours" class="oe_inline"/>
|
||||
<field name="quantity_max" class="oe_inline"/>
|
||||
<field name="company_uom_id" readonly="1" class="oe_inline"/>
|
||||
</div>
|
||||
</xpath>
|
||||
<xpath expr='//group[@name="invoice_on_timesheets"]' position="replace">
|
||||
<group name='invoice_on_timesheets' string="Invoice on Timesheets Options" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}" col="4">
|
||||
<field name="pricelist_id" attrs="{'required': [('invoice_on_timesheets', '=', True)]}"/>
|
||||
<field name="to_invoice" widget="selection" attrs="{'required': [('invoice_on_timesheets', '=', True)]}"/>
|
||||
</group>
|
||||
</xpath>
|
||||
<xpath expr='//group[@name="master"]' position='after'>
|
||||
<xpath expr='//separator[@name="description"]' position='before'>
|
||||
<separator name="toinvoice" string="Invoicing"/>
|
||||
<table width="100%%">
|
||||
<table class="oe_form_analytic_account">
|
||||
<tr>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th><label string="Est.Tot"/></th>
|
||||
<th><label string="Invoiced"/></th>
|
||||
<th><label string="Remaining"/></th>
|
||||
<th><label string="To Invoice"/></th>
|
||||
<th class="oe_grey" width="160px"></th>
|
||||
<th class="oe_grey" width="25px"></th>
|
||||
<th class="oe_grey" width="100px"><label string="Expected"/></th>
|
||||
<th class="oe_grey" width="100px"><label string="Invoiced"/></th>
|
||||
<th class="oe_grey" width="100px"><label string="Remaining"/></th>
|
||||
<th class="oe_grey" width="100px"><label string="To Invoice"/></th>
|
||||
<th width="30px"></th>
|
||||
<th></th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<td class="oe_grey">
|
||||
<label for="fix_price_invoices"/>
|
||||
</td><td>
|
||||
</td><td class="oe_grey">
|
||||
<field name="fix_price_invoices" class="oe_inline"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="amount_max" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
|
@ -56,13 +54,22 @@
|
|||
</td><td>
|
||||
<field class="oe_inline" name="fix_price_to_invoice" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
</td><td>
|
||||
<button name="%(action_sales_order)d" string="All Sales" type="action" context="{'default_partner_id': [partner_id], 'search_default_partner_id': [partner_id],'search_default_project_id': [active_id],'default_project_id': [active_id]}" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
<button name="open_sale_order_lines" string="Lines To Invoice" type="object" context="{'default_partner_id': [partner_id],'default_project_id': active_id,'search_default_uninvoiced': 1,'search_default_project_id': active_id,'search_default_partner_id': [partner_id]}" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
</td>
|
||||
</tr><tr attrs="{'invisible':[('use_timesheets','=',False)]}">
|
||||
<td>
|
||||
<label for="invoice_on_timesheets"/>
|
||||
<button name="open_sale_order_lines"
|
||||
class="oe_link oe_e"
|
||||
string="/" type="object"
|
||||
context="{'default_partner_id': [partner_id],'default_project_id': active_id,'search_default_uninvoiced': 1,'search_default_project_id': active_id,'search_default_partner_id': [partner_id]}"
|
||||
attrs="{'invisible': [('fix_price_to_invoice','=',0)]}"/>
|
||||
</td><td>
|
||||
<button name="%(action_sales_order)d" string="Sale Orders"
|
||||
type="action"
|
||||
class="oe_link"
|
||||
context="{'default_partner_id': [partner_id], 'search_default_partner_id': [partner_id],'search_default_project_id': [active_id],'default_project_id': [active_id]}"
|
||||
attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class="oe_grey">
|
||||
<label for="invoice_on_timesheets"/>
|
||||
</td><td class="oe_grey">
|
||||
<field name="invoice_on_timesheets"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="hours_qtt_est" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
|
@ -73,25 +80,44 @@
|
|||
</td><td>
|
||||
<field class="oe_inline" name="ca_to_invoice" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
</td><td>
|
||||
<button name="%(hr_timesheet.act_hr_timesheet_line_evry1_all_form)d" string="All Timesheets" type="action" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}" context="{'default_account_id': active_id,'search_default_account_id': active_id}"/>
|
||||
<button name="%(hr_timesheet_invoice.act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice)d" string="Timesheets to Invoice" type="action" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
<button name="%(hr_timesheet_invoice.act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice)d"
|
||||
type="action"
|
||||
class="oe_link oe_e"
|
||||
string="/"
|
||||
attrs="{'invisible': [('ca_to_invoice','=',0.0)]}"/>
|
||||
|
||||
</td><td>
|
||||
<button name="%(hr_timesheet.act_hr_timesheet_line_evry1_all_form)d"
|
||||
string="Timesheets" type="action"
|
||||
class="oe_link"
|
||||
attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"
|
||||
context="{'default_account_id': active_id,'search_default_account_id': active_id}"/>
|
||||
</td>
|
||||
</tr><tr name='total'>
|
||||
<th>
|
||||
<th class="oe_grey">
|
||||
<label string="Total"/>
|
||||
</th><td>
|
||||
</td><td>
|
||||
</th><td class="oe_grey">
|
||||
</td><td class="oe_grey">
|
||||
<field name="est_total" class="oe_inline" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
</td><td>
|
||||
</td><td class="oe_grey">
|
||||
<field name="invoiced_total" class="oe_inline"/>
|
||||
</td><td>
|
||||
</td><td class="oe_grey">
|
||||
<field name="remaining_total" class="oe_inline"/>
|
||||
</td><td>
|
||||
</td><td class="oe_grey">
|
||||
<field name="toinvoice_total" class="oe_inline"/>
|
||||
</td><td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<group name='invoice_on_timesheets' attrs="{'invisible': [('invoice_on_timesheets','=',False)]}">
|
||||
<field name="pricelist_id"
|
||||
class="oe_inline"
|
||||
attrs="{'required': [('invoice_on_timesheets', '=', True)]}"/>
|
||||
<field name="to_invoice"
|
||||
class="oe_inline"
|
||||
widget="selection"
|
||||
attrs="{'required': [('invoice_on_timesheets', '=', True)]}"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
analytic.css: analytic.sass
|
||||
sass -t expanded analytic.sass analytic.css
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
@charset "utf-8";
|
||||
.openerp .oe_form table.oe_form_analytic_account tr {
|
||||
height: 28px;
|
||||
}
|
||||
.openerp .oe_form table.oe_form_analytic_account tr td, .openerp .oe_form table.oe_form_analytic_account tr th {
|
||||
vertical-align: middle;
|
||||
}
|
||||
.openerp .oe_form table.oe_form_analytic_account tr td .oe_form_field_float, .openerp .oe_form table.oe_form_analytic_account tr th .oe_form_field_float {
|
||||
float: right;
|
||||
width: auto !important;
|
||||
}
|
||||
.openerp .oe_form table.oe_form_analytic_account .oe_grey {
|
||||
background-color: #eeeeee;
|
||||
color: #404040;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
@charset "utf-8"
|
||||
|
||||
.openerp .oe_form
|
||||
table.oe_form_analytic_account
|
||||
tr
|
||||
height: 28px
|
||||
td,th
|
||||
vertical-align: middle
|
||||
.oe_form_field_float
|
||||
float: right
|
||||
width: auto !important
|
||||
.oe_grey
|
||||
background-color: #eeeeee
|
||||
color: #404040
|
||||
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||
"PO-Revision-Date: 2009-01-30 12:43+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"PO-Revision-Date: 2012-08-29 15:27+0000\n"
|
||||
"Last-Translator: Eric Huang <eh@cenoq.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-28 06:20+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: account_payment
|
||||
|
@ -24,7 +24,7 @@ msgstr ""
|
|||
#. module: account_payment
|
||||
#: field:payment.line,currency:0
|
||||
msgid "Partner Currency"
|
||||
msgstr "伙伴貨幣"
|
||||
msgstr "業務夥伴貨幣"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.order:0
|
||||
|
@ -40,7 +40,7 @@ msgstr "選取要應用之付款模式。"
|
|||
#: view:payment.mode:0
|
||||
#: view:payment.order:0
|
||||
msgid "Group By..."
|
||||
msgstr "分組根據..."
|
||||
msgstr "分類方式..."
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.order,line_ids:0
|
||||
|
@ -84,7 +84,7 @@ msgstr "首選日期"
|
|||
#. module: account_payment
|
||||
#: model:res.groups,name:account_payment.group_account_payment
|
||||
msgid "Accounting / Payments"
|
||||
msgstr ""
|
||||
msgstr "會計/付款"
|
||||
|
||||
#. module: account_payment
|
||||
#: selection:payment.line,state:0
|
||||
|
@ -111,7 +111,7 @@ msgstr "到期日"
|
|||
#. module: account_payment
|
||||
#: view:account.move.line:0
|
||||
msgid "Account Entry Line"
|
||||
msgstr ""
|
||||
msgstr "會計分錄明細"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.order.create:0
|
||||
|
@ -222,7 +222,7 @@ msgstr ""
|
|||
#: view:payment.order:0
|
||||
#: field:payment.order,state:0
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
msgstr "狀態"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.line:0
|
||||
|
@ -307,7 +307,7 @@ msgstr ""
|
|||
#. module: account_payment
|
||||
#: view:payment.order:0
|
||||
msgid "Select Invoices to Pay"
|
||||
msgstr ""
|
||||
msgstr "選擇要付款的發票"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.line:0
|
||||
|
@ -329,12 +329,12 @@ msgstr "通訊類型"
|
|||
#: field:payment.mode,partner_id:0
|
||||
#: report:payment.order:0
|
||||
msgid "Partner"
|
||||
msgstr "伙伴"
|
||||
msgstr "業務夥伴"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.line,bank_statement_line_id:0
|
||||
msgid "Bank statement line"
|
||||
msgstr ""
|
||||
msgstr "銀行對帳單明細"
|
||||
|
||||
#. module: account_payment
|
||||
#: selection:payment.order,date_prefered:0
|
||||
|
@ -399,7 +399,7 @@ msgstr "付款類型"
|
|||
#. module: account_payment
|
||||
#: help:payment.line,amount_currency:0
|
||||
msgid "Payment amount in the partner currency"
|
||||
msgstr "以伙伴貨幣計算之付款總額"
|
||||
msgstr "以業務夥伴貨幣計算之付款總額"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.order:0
|
||||
|
@ -441,7 +441,7 @@ msgstr ""
|
|||
#. module: account_payment
|
||||
#: field:payment.order,user_id:0
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
msgstr "使用者"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:account.payment.populate.statement,lines:0
|
||||
|
@ -504,7 +504,7 @@ msgstr "匯入付款明細"
|
|||
#. module: account_payment
|
||||
#: field:account.move.line,amount_to_pay:0
|
||||
msgid "Amount to pay"
|
||||
msgstr "要付總額"
|
||||
msgstr "應付總額"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.line,amount:0
|
||||
|
|
|
@ -153,9 +153,9 @@ class account_analytic_account(osv.osv):
|
|||
return result
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Account Name', size=128, required=True),
|
||||
'name': fields.char('Account/Contract Name', size=128, required=True),
|
||||
'complete_name': fields.function(_complete_name_calc, type='char', string='Full Account Name'),
|
||||
'code': fields.char('Code/Reference', size=24, select=True),
|
||||
'code': fields.char('Reference', size=24, select=True),
|
||||
'type': fields.selection([('view','Analytic View'), ('normal','Analytic Account'),('contract','Contract or Project'),('template','Template of Project')], 'Type of Account', required=True,
|
||||
help="If you select the View Type, it means you won\'t allow to create journal entries using that account.\n"\
|
||||
"The type 'Analytic account' stands for usual accounts that you only want to use in accounting.\n"\
|
||||
|
@ -171,7 +171,7 @@ class account_analytic_account(osv.osv):
|
|||
'debit': fields.function(_debit_credit_bal_qtty, type='float', string='Debit', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),
|
||||
'credit': fields.function(_debit_credit_bal_qtty, type='float', string='Credit', multi='debit_credit_bal_qtty', digits_compute=dp.get_precision('Account')),
|
||||
'quantity': fields.function(_debit_credit_bal_qtty, type='float', string='Quantity', multi='debit_credit_bal_qtty'),
|
||||
'quantity_max': fields.float('Maximum Time', help='Sets the higher limit of time to work on the contract.'),
|
||||
'quantity_max': fields.float('Prepaid Units', help='Sets the higher limit of time to work on the contract.'),
|
||||
'partner_id': fields.many2one('res.partner', 'Customer'),
|
||||
'user_id': fields.many2one('res.users', 'Project Manager'),
|
||||
'manager_id': fields.many2one('res.users', 'Account Manager'),
|
||||
|
|
|
@ -10,33 +10,35 @@
|
|||
<sheet string="Analytic Account">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
<h1>
|
||||
<field name="name"/>
|
||||
<field name="name" class="oe_inline"/>
|
||||
</h1>
|
||||
<div name="project"/>
|
||||
<group>
|
||||
<group>
|
||||
<field name="partner_id" on_change="on_change_partner_id(partner_id, name)" attrs="{'required':[('type','=','contract')]}"/>
|
||||
<field name="parent_id" on_change="on_change_parent(parent_id)" attrs="{'invisible': [('type','in',['contract','template'])]}"/>
|
||||
<field name="type"/>
|
||||
<field name="template_id" on_change="on_change_template(template_id,context)" domain="[('type','=','template')]" attrs="{'invisible': [('type','in',['view', 'normal','template'])]}" context="{'default_type' : 'template'}"/>
|
||||
<field name="manager_id"/>
|
||||
<field name="code"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="code"/>
|
||||
<field name="manager_id"/>
|
||||
<field name="type"/>
|
||||
<field name="parent_id" on_change="on_change_parent(parent_id)" attrs="{'invisible': [('type','in',['contract','template'])]}"/>
|
||||
<field name="template_id" on_change="on_change_template(template_id,context)" domain="[('type','=','template')]" attrs="{'invisible': [('type','in',['view', 'normal','template'])]}" context="{'default_type' : 'template'}"/>
|
||||
<field name="company_id" on_change="on_change_company(company_id)" widget="selection" groups="base.group_multi_company" attrs="{'required': [('type','<>','view')]}"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Contract Information" name="contract_page" attrs="{'invisible':[('type','not in',['contract', 'template'])]}">
|
||||
<group name="master">
|
||||
<group string="Validity" name="contract">
|
||||
<label for="date_start" string="Duration"/>
|
||||
<div name="duration">
|
||||
<field name="date_start" class="oe_inline"/> - <field name="date" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group name="project">
|
||||
<separator string="Project Management" name="project_sep" invisible="1"/>
|
||||
</group>
|
||||
<group string="Renewal" name="contract">
|
||||
<p colspan="2" class="oe_grey oe_edit_only">
|
||||
Once the end date of the contract is
|
||||
passed or the maximum number of service
|
||||
units is reached, the account manager
|
||||
is warned by email to renew the contract.
|
||||
</p>
|
||||
<label for="date" string="End Date"/>
|
||||
<div name="duration">
|
||||
<field name="date" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<separator string="Terms and Conditions" name="description"/>
|
||||
<field name="description"/>
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import analytic_contract_expense_project
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,41 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
{
|
||||
'name': 'Projects Management: hr_expense link',
|
||||
'version': '1.1',
|
||||
'category': 'Hidden',
|
||||
'description': """
|
||||
This module is for modifying project view to show some data related to the hr_expense module.
|
||||
=============================================================================================
|
||||
""",
|
||||
'author': 'OpenERP S.A.',
|
||||
'website': 'http://www.openerp.com/',
|
||||
'depends': ['analytic_contract_hr_expense','project'],
|
||||
'data': ['analytic_contract_expense_project_view.xml'],
|
||||
'demo': [],
|
||||
'css' : [],
|
||||
'installable': True,
|
||||
'auto_install': True,
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,37 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv
|
||||
|
||||
class project_project(osv.osv):
|
||||
_inherit = "project.project"
|
||||
|
||||
def open_hr_expense(self, cr, uid, ids, context=None):
|
||||
account_ids = [x.analytic_account_id.id for x in self.browse(cr, uid, ids, context=context)]
|
||||
return self.pool.get('account.analytic.account').open_hr_expense(cr, uid, account_ids, context=context)
|
||||
|
||||
def hr_to_invoice_expense(self, cr, uid, ids, context=None):
|
||||
account_ids = [x.analytic_account_id.id for x in self.browse(cr, uid, ids, context=context)]
|
||||
return self.pool.get('account.analytic.account').hr_to_invoice_expense(cr, uid, account_ids, context=context)
|
||||
|
||||
project_project()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,33 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record id="project_form_expense_form" model="ir.ui.view">
|
||||
<field name="name">project.project.form.expense.inherit</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="analytic_contract_project.project_account_analytic_account_form"/>
|
||||
<field eval="20" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//tr[@name="total"]' position='before'>
|
||||
<tr>
|
||||
<td>
|
||||
<label for="charge_expenses"/>
|
||||
</td><td>
|
||||
<field name="charge_expenses"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="est_expenses" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="expense_invoiced" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="remaining_expense" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="expense_to_invoice" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
</td><td>
|
||||
<button name="open_hr_expense" string="All Expenses" type="object" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
<button name="hr_to_invoice_expense" string="Expenses to Invoice" type="object" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
|
@ -5,12 +5,13 @@
|
|||
<field name="name">account.analytic.account.form.expense.inherit</field>
|
||||
<field name="model">account.analytic.account</field>
|
||||
<field eval="60" name="priority"/>
|
||||
<field name="inherit_id" ref="account_analytic_analysis.account_analytic_account_form_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//tr[@name="total"]' position='before'>
|
||||
<tr>
|
||||
<td>
|
||||
<td class="oe_grey">
|
||||
<label for="charge_expenses"/>
|
||||
</td><td>
|
||||
</td><td class="oe_grey">
|
||||
<field name="charge_expenses"/>
|
||||
</td><td>
|
||||
<field class="oe_form_inline" name="est_expenses" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
|
@ -21,10 +22,16 @@
|
|||
</td><td>
|
||||
<field class="oe_form_inline" name="expense_to_invoice" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
</td><td>
|
||||
<group>
|
||||
<button name="open_hr_expense" string="All Expenses" type="object" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
<button name="hr_to_invoice_expense" string="Expenses to Invoice" type="object" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
</group>
|
||||
<button
|
||||
name="hr_to_invoice_expense"
|
||||
class="oe_link oe_e"
|
||||
string="/" type="object"
|
||||
attrs="{'invisible': [('expense_to_invoice','=',0)]}"/>
|
||||
</td><td>
|
||||
<button
|
||||
name="open_hr_expense"
|
||||
class="oe_link"
|
||||
string="Expenses" type="object" attrs="{'invisible': [('charge_expenses','=',False)]}"/>
|
||||
</td>
|
||||
</tr>
|
||||
</xpath>
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import analytic_contract_project
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,38 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
{
|
||||
'name' : 'Contract on Project',
|
||||
'version': '1.1',
|
||||
'author' : 'OpenERP SA',
|
||||
'category': 'Hidden',
|
||||
'website' : 'http://www.openerp.com',
|
||||
'depends' : ['project', 'account_analytic_analysis'],
|
||||
'description': """
|
||||
Add "Contract Data" in project view.
|
||||
====================================
|
||||
""",
|
||||
'data': ['analytic_contract_project_view.xml'],
|
||||
'demo': [],
|
||||
'installable': True,
|
||||
'auto_install': True,
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,84 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
|
||||
class project_project(osv.osv):
|
||||
_inherit = 'project.project'
|
||||
|
||||
_defaults = {
|
||||
'use_timesheets': True,
|
||||
}
|
||||
|
||||
def open_sale_order_lines(self,cr,uid,ids,context=None):
|
||||
account_ids = [x.analytic_account_id.id for x in self.browse(cr, uid, ids, context=context)]
|
||||
return self.pool.get('account.analytic.account').open_sale_order_lines(cr, uid, account_ids, context=context)
|
||||
|
||||
def open_timesheets_to_invoice(self,cr,uid,ids,context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
analytic_account_id = self.browse(cr, uid, ids[0], context=context).analytic_account_id.id
|
||||
context.update({'search_default_account_id': analytic_account_id, 'default_account_id': analytic_account_id, 'search_default_to_invoice': 1})
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': _('Timesheet Lines to Invoice'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'context': context,
|
||||
'domain' : [('invoice_id','=',False),('to_invoice','!=',False), ('journal_id.type', '=', 'general')],
|
||||
'res_model': 'account.analytic.line',
|
||||
'nodestroy': True,
|
||||
}
|
||||
|
||||
def open_timesheets(self, cr, uid, ids, context=None):
|
||||
""" open Timesheets view """
|
||||
project = self.browse(cr, uid, ids[0], context)
|
||||
try:
|
||||
journal_id = self.pool.get('ir.model.data').get_object(cr, uid, 'hr_timesheet', 'analytic_journal').id
|
||||
except ValueError:
|
||||
journal_id = False
|
||||
view_context = {
|
||||
'search_default_account_id': [project.analytic_account_id.id],
|
||||
'default_account_id': project.analytic_account_id.id,
|
||||
'default_journal_id': journal_id,
|
||||
}
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': _('Bill Tasks Works'),
|
||||
'res_model': 'account.analytic.line',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'context': view_context,
|
||||
'nodestroy': True,
|
||||
}
|
||||
project_project()
|
||||
|
||||
class task(osv.osv):
|
||||
_inherit = "project.task"
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
task_id = super(task, self).create(cr, uid, vals, context=context)
|
||||
task_browse = self.browse(cr, uid, task_id, context=context)
|
||||
if task_browse.project_id.analytic_account_id:
|
||||
self.pool.get('account.analytic.account').message_append_note(cr, uid, [task_browse.project_id.analytic_account_id.id], body=_("Task <em>%s</em> has been <b>created</b>.") % (task_browse.name), context=context)
|
||||
return task_id
|
||||
task()
|
|
@ -1,127 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="project_account_analytic_account_form" model="ir.ui.view">
|
||||
<field name="name">project.project.form.inherit</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field eval="18" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//page[@name="team"]' position='after'>
|
||||
<page string="Contract Data">
|
||||
<group>
|
||||
<group string="Validity">
|
||||
<label for="date_start" string="Duration"/>
|
||||
<div name="duration">
|
||||
<field name="date_start" class="oe_inline"/>
|
||||
<label attrs="{'invisible':[('date','=',False)]}" class="oe_inline" string=" - "/>
|
||||
<field name="date" class="oe_inline"/>
|
||||
</div>
|
||||
<label for="quantity_max"/>
|
||||
<div>
|
||||
<field name="quantity_max" class="oe_inline"/>
|
||||
<field name="company_uom_id" readonly="1" class="oe_inline"/> / Remaining:
|
||||
<field name="remaining_hours" class="oe_inline"/>
|
||||
<field name="company_uom_id" readonly="1" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Invoice Options">
|
||||
<field name="manager_id" />
|
||||
<field name="pricelist_id" attrs="{'invisible': [('invoice_on_timesheets','=',0)]}"/>
|
||||
<field name="to_invoice" widget="selection" attrs="{'invisible': [('invoice_on_timesheets','=',0)]}"/>
|
||||
</group>
|
||||
</group>
|
||||
<separator name="toinvoice" string="Invoicing"/>
|
||||
<table width="100%%">
|
||||
<tr>
|
||||
<th></th>
|
||||
<th></th>
|
||||
<th><label string="Est.Tot"/></th>
|
||||
<th><label string="Invoiced"/></th>
|
||||
<th><label string="Remaining"/></th>
|
||||
<th><label string="To Invoice"/></th>
|
||||
<th></th>
|
||||
</tr><tr>
|
||||
<td>
|
||||
<label for="fix_price_invoices"/>
|
||||
</td><td>
|
||||
<field name="fix_price_invoices" class="oe_inline"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="amount_max" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="ca_invoiced" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="remaining_ca" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="fix_price_to_invoice" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
</td><td>
|
||||
<button name="%(account_analytic_analysis.action_sales_order)d" string="All Sales" type="action" context="{'default_partner_id': [partner_id], 'search_default_partner_id': [partner_id], 'default_project_id': analytic_account_id, 'search_default_project_id': analytic_account_id}" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
<button name="open_sale_order_lines" string="Lines To Invoice" type="object" context="{'default_partner_id': [partner_id],'default_project_id': analytic_account_id,'search_default_uninvoiced': 1,'search_default_project_id': analytic_account_id,'search_default_partner_id': [partner_id]}" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/></td>
|
||||
</tr><tr attrs="{'invisible':[('use_timesheets','=',False)]}">
|
||||
<td>
|
||||
<label for="invoice_on_timesheets"/>
|
||||
</td><td>
|
||||
<field name="invoice_on_timesheets"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="hours_qtt_est" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="timesheet_ca_invoiced" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="remaining_hours_to_invoice" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
</td><td>
|
||||
<field class="oe_inline" name="ca_to_invoice" attrs="{'invisible': [('fix_price_invoices','=',False)]}"/>
|
||||
</td><td>
|
||||
<button name="%(hr_timesheet.act_hr_timesheet_line_evry1_all_form)d" string="All Timesheets" type="action" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}" context="{'default_account_id': analytic_account_id,'search_default_account_id': analytic_account_id}"/>
|
||||
<button name="open_timesheets_to_invoice" string="Timesheets to Invoice" type="object" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
</td>
|
||||
</tr><tr name="total">
|
||||
<th>
|
||||
<label string="Total"/>
|
||||
</th><td>
|
||||
</td><td>
|
||||
<field name="est_total" class="oe_inline" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
|
||||
</td><td>
|
||||
<field name="invoiced_total" class="oe_inline"/>
|
||||
</td><td>
|
||||
<field name="remaining_total" class="oe_inline"/>
|
||||
</td><td>
|
||||
<field name="toinvoice_total" class="oe_inline"/>
|
||||
</td><td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<separator string="Terms and Conditions" name="description"/>
|
||||
<field name="description"/>
|
||||
</page>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="project_invoice_form" model="ir.ui.view">
|
||||
<field name="name">Inherit project form : Invoicing Data</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//tr[@name="use_tasks_row"]' position='after'>
|
||||
<tr>
|
||||
<td><group><field name="use_timesheets"/></group></td>
|
||||
<td><button icon="terp-gtk-go-back-rtl" name="open_timesheets" string="Timesheets" type="object" attrs="{'invisible':[('use_timesheets','=', 0)]}"/></td>
|
||||
</tr>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="contract_inherited_form" model="ir.ui.view">
|
||||
<field name="name">Inherit contract form : adding UoM</field>
|
||||
<field name="model">account.analytic.account</field>
|
||||
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
||||
<field name="priority">50</field>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//field[@name="remaining_hours"]' position='after'>
|
||||
<field name="company_uom_id" readonly="1" class="oe_inline"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
|
@ -14,7 +14,7 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-29 05:05+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: anonymization
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,7 +14,7 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-29 05:05+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: crm_caldav
|
||||
|
|
|
@ -8,67 +8,67 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-08-24 03:36+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
|
||||
"PO-Revision-Date: 2012-08-30 03:01+0000\n"
|
||||
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||
"Language-Team: Cenoq Corp. MIME-Version: 1.0\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-28 06:37+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,nbr:0
|
||||
msgid "# of Cases"
|
||||
msgstr ""
|
||||
msgstr "# 業務量"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Group By..."
|
||||
msgstr ""
|
||||
msgstr "分類方式..."
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Responsibilities"
|
||||
msgstr ""
|
||||
msgstr "責任人"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,date_action_next:0
|
||||
msgid "Next Action Date"
|
||||
msgstr ""
|
||||
msgstr "下一動作日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "March"
|
||||
msgstr ""
|
||||
msgstr "3月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,delay_close:0
|
||||
msgid "Delay to close"
|
||||
msgstr ""
|
||||
msgstr "延遲關閉"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,resolution:0
|
||||
msgid "Resolution"
|
||||
msgstr ""
|
||||
msgstr "解決方案"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,company_id:0
|
||||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,company_id:0
|
||||
msgid "Company"
|
||||
msgstr ""
|
||||
msgstr "公司"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,email_cc:0
|
||||
msgid "Watchers Emails"
|
||||
msgstr ""
|
||||
msgstr "視察者的電子郵件"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "#Claim"
|
||||
msgstr ""
|
||||
msgstr "#索賠"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.actions.act_window,help:crm_claim.crm_claim_stage_act
|
||||
|
@ -76,99 +76,99 @@ msgid ""
|
|||
"You can create claim stages to categorize the status of every claim entered "
|
||||
"in the system. The stages define all the steps required for the resolution "
|
||||
"of a claim."
|
||||
msgstr ""
|
||||
msgstr "你能建立索賠階段的分類在系統輸入每個索賠的狀態度。階段定義索賠解決方案的所有需求的步驟。"
|
||||
|
||||
#. module: crm_claim
|
||||
#: code:addons/crm_claim/crm_claim.py:132
|
||||
#, python-format
|
||||
msgid "The claim '%s' has been opened."
|
||||
msgstr ""
|
||||
msgstr "索賠'%s' 已被打開。"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Date Closed"
|
||||
msgstr ""
|
||||
msgstr "結束日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,day:0
|
||||
msgid "Day"
|
||||
msgstr ""
|
||||
msgstr "日"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Add Internal Note"
|
||||
msgstr ""
|
||||
msgstr "加入內部備註"
|
||||
|
||||
#. module: crm_claim
|
||||
#: help:crm.claim,section_id:0
|
||||
msgid ""
|
||||
"Sales team to which Case belongs to.Define Responsible user and Email "
|
||||
"account for mail gateway."
|
||||
msgstr ""
|
||||
msgstr "銷售團隊屬於的業務,定義負責人和郵件地址的郵件閘道。"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Claim Description"
|
||||
msgstr ""
|
||||
msgstr "索陪說明"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,message_ids:0
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
msgstr "訊息"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.categ,name:crm_claim.categ_claim1
|
||||
msgid "Factual Claims"
|
||||
msgstr ""
|
||||
msgstr "實際索賠"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim,state:0
|
||||
#: selection:crm.claim.report,state:0
|
||||
msgid "Cancelled"
|
||||
msgstr ""
|
||||
msgstr "已取消"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.resource.type,name:crm_claim.type_claim2
|
||||
msgid "Preventive"
|
||||
msgstr ""
|
||||
msgstr "預防措施"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,date_closed:0
|
||||
msgid "Close Date"
|
||||
msgstr ""
|
||||
msgstr "結束日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,ref:0
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
msgstr "關聯"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Date of claim"
|
||||
msgstr ""
|
||||
msgstr "索賠日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "All pending Claims"
|
||||
msgstr ""
|
||||
msgstr "所有未決索賠"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "# Mails"
|
||||
msgstr ""
|
||||
msgstr "#郵件"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Reset to Draft"
|
||||
msgstr ""
|
||||
msgstr "重設為草稿"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: field:crm.claim,date_deadline:0
|
||||
#: field:crm.claim.report,date_deadline:0
|
||||
msgid "Deadline"
|
||||
msgstr ""
|
||||
msgstr "截止日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
|
@ -177,116 +177,116 @@ msgstr ""
|
|||
#: field:crm.claim.report,partner_id:0
|
||||
#: model:ir.model,name:crm_claim.model_res_partner
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
msgstr "業務夥伴"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Month of claim"
|
||||
msgstr ""
|
||||
msgstr "索賠月份"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim,type_action:0
|
||||
#: selection:crm.claim.report,type_action:0
|
||||
msgid "Preventive Action"
|
||||
msgstr ""
|
||||
msgstr "預防措施的動作"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,section_id:0
|
||||
msgid "Section"
|
||||
msgstr ""
|
||||
msgstr "劃分"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Root Causes"
|
||||
msgstr ""
|
||||
msgstr "根本原因"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,user_fault:0
|
||||
msgid "Trouble Responsible"
|
||||
msgstr ""
|
||||
msgstr "問題責任"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,priority:0
|
||||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,priority:0
|
||||
msgid "Priority"
|
||||
msgstr ""
|
||||
msgstr "優先級"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Send New Email"
|
||||
msgstr ""
|
||||
msgstr "發送新的電子郵件"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: selection:crm.claim,state:0
|
||||
#: view:crm.claim.report:0
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
msgstr "新建"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
msgstr "類型"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,email_from:0
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
msgstr "電子郵件"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim,priority:0
|
||||
#: selection:crm.claim.report,priority:0
|
||||
msgid "Lowest"
|
||||
msgstr ""
|
||||
msgstr "最低"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,action_next:0
|
||||
msgid "Next Action"
|
||||
msgstr ""
|
||||
msgstr "下一動作"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "My Sales Team(s)"
|
||||
msgstr ""
|
||||
msgstr "我的銷售團隊"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.stage,name:crm_claim.stage_claim3
|
||||
msgid "Won't fix"
|
||||
msgstr ""
|
||||
msgstr "不修正"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,create_date:0
|
||||
msgid "Creation Date"
|
||||
msgstr ""
|
||||
msgstr "建立日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,name:0
|
||||
msgid "Claim Subject"
|
||||
msgstr ""
|
||||
msgstr "索賠主題"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.actions.act_window,help:crm_claim.action_report_crm_claim
|
||||
msgid ""
|
||||
"Have a general overview of all claims processed in the system by sorting "
|
||||
"them with specific criteria."
|
||||
msgstr ""
|
||||
msgstr "為系統內所有的索賠處理指定一個排序標準"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "July"
|
||||
msgstr ""
|
||||
msgstr "7月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.actions.act_window,name:crm_claim.crm_claim_stage_act
|
||||
msgid "Claim Stages"
|
||||
msgstr ""
|
||||
msgstr "索賠階段"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.ui.menu,name:crm_claim.menu_crm_case_claim-act
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
msgstr "分類"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
|
@ -294,108 +294,108 @@ msgstr ""
|
|||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,stage_id:0
|
||||
msgid "Stage"
|
||||
msgstr ""
|
||||
msgstr "階段"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "History Information"
|
||||
msgstr ""
|
||||
msgstr "日誌資訊"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Dates"
|
||||
msgstr ""
|
||||
msgstr "日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
msgstr "聯繫人"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Month-1"
|
||||
msgstr ""
|
||||
msgstr "上月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.actions.act_window,name:crm_claim.action_report_crm_claim
|
||||
#: model:ir.ui.menu,name:crm_claim.menu_report_crm_claim_tree
|
||||
msgid "Claims Analysis"
|
||||
msgstr ""
|
||||
msgstr "索賠分析"
|
||||
|
||||
#. module: crm_claim
|
||||
#: help:crm.claim.report,delay_close:0
|
||||
msgid "Number of Days to close the case"
|
||||
msgstr ""
|
||||
msgstr "到期天數"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.model,name:crm_claim.model_crm_claim_report
|
||||
msgid "CRM Claim Report"
|
||||
msgstr ""
|
||||
msgstr "客戶關係管理索賠報表"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.stage,name:crm_claim.stage_claim1
|
||||
msgid "Accepted as Claim"
|
||||
msgstr ""
|
||||
msgstr "作為索賠接受"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.resource.type,name:crm_claim.type_claim1
|
||||
msgid "Corrective"
|
||||
msgstr ""
|
||||
msgstr "糾正"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
msgstr "9月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "December"
|
||||
msgstr ""
|
||||
msgstr "12月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,month:0
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
msgstr "月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,type_action:0
|
||||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,type_action:0
|
||||
msgid "Action Type"
|
||||
msgstr ""
|
||||
msgstr "動作類型"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,write_date:0
|
||||
msgid "Update Date"
|
||||
msgstr ""
|
||||
msgstr "更新日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Year of claim"
|
||||
msgstr ""
|
||||
msgstr "索賠年份"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Salesman"
|
||||
msgstr ""
|
||||
msgstr "業務員"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,categ_id:0
|
||||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,categ_id:0
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
msgstr "分類"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.categ,name:crm_claim.categ_claim2
|
||||
msgid "Value Claims"
|
||||
msgstr ""
|
||||
msgstr "索賠金額"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Responsible User"
|
||||
msgstr ""
|
||||
msgstr "負責使用者"
|
||||
|
||||
#. module: crm_claim
|
||||
#: help:crm.claim,email_cc:0
|
||||
|
@ -403,30 +403,30 @@ msgid ""
|
|||
"These email addresses will be added to the CC field of all inbound and "
|
||||
"outbound emails for this record before being sent. Separate multiple email "
|
||||
"addresses with a comma"
|
||||
msgstr ""
|
||||
msgstr "這些郵件地址將加入到之前發送記錄的發送和接收郵件的郵件副本欄位,分隔多個郵件地址有逗號。"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,state:0
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
msgstr "草稿"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim,priority:0
|
||||
#: selection:crm.claim.report,priority:0
|
||||
msgid "Low"
|
||||
msgstr ""
|
||||
msgstr "低"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,date_closed:0
|
||||
#: selection:crm.claim,state:0
|
||||
#: selection:crm.claim.report,state:0
|
||||
msgid "Closed"
|
||||
msgstr ""
|
||||
msgstr "已結束"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Reply"
|
||||
msgstr ""
|
||||
msgstr "回覆"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
|
@ -434,99 +434,99 @@ msgstr ""
|
|||
#: view:crm.claim.report:0
|
||||
#: selection:crm.claim.report,state:0
|
||||
msgid "Pending"
|
||||
msgstr ""
|
||||
msgstr "待處理"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Communication & History"
|
||||
msgstr ""
|
||||
msgstr "溝通&日誌"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "August"
|
||||
msgstr ""
|
||||
msgstr "8月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim,priority:0
|
||||
#: selection:crm.claim.report,priority:0
|
||||
msgid "Normal"
|
||||
msgstr ""
|
||||
msgstr "普通"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Global CC"
|
||||
msgstr ""
|
||||
msgstr "完整副本"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
msgstr "6月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:res.partner:0
|
||||
msgid "Partners Claim"
|
||||
msgstr ""
|
||||
msgstr "客戶抱怨"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,partner_phone:0
|
||||
msgid "Phone"
|
||||
msgstr ""
|
||||
msgstr "電話"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,user_id:0
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
msgstr "使用者"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,active:0
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
msgstr "啟用"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "November"
|
||||
msgstr ""
|
||||
msgstr "11月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Extended Filters..."
|
||||
msgstr ""
|
||||
msgstr "增加篩選條件"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Closure"
|
||||
msgstr ""
|
||||
msgstr "關閉"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
msgstr "搜尋"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "October"
|
||||
msgstr ""
|
||||
msgstr "10月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "January"
|
||||
msgstr ""
|
||||
msgstr "1月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: field:crm.claim,date:0
|
||||
msgid "Claim Date"
|
||||
msgstr ""
|
||||
msgstr "索賠日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: help:crm.claim,email_from:0
|
||||
msgid "These people will receive email."
|
||||
msgstr ""
|
||||
msgstr "這些人將收到電子郵件。"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.actions.act_window,name:crm_claim.crm_claim_categ_action
|
||||
msgid "Claim Categories"
|
||||
msgstr ""
|
||||
msgstr "索賠分類"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
|
@ -537,40 +537,40 @@ msgstr ""
|
|||
#: model:ir.ui.menu,name:crm_claim.menu_crm_case_claims
|
||||
#: field:res.partner,claims_ids:0
|
||||
msgid "Claims"
|
||||
msgstr ""
|
||||
msgstr "索賠"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim,type_action:0
|
||||
#: selection:crm.claim.report,type_action:0
|
||||
msgid "Corrective Action"
|
||||
msgstr ""
|
||||
msgstr "糾正的動作"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.categ,name:crm_claim.categ_claim3
|
||||
msgid "Policy Claims"
|
||||
msgstr ""
|
||||
msgstr "索賠政策"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "History"
|
||||
msgstr ""
|
||||
msgstr "日誌"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.model,name:crm_claim.model_crm_claim
|
||||
#: model:ir.ui.menu,name:crm_claim.menu_config_claim
|
||||
msgid "Claim"
|
||||
msgstr ""
|
||||
msgstr "索賠"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim,priority:0
|
||||
#: selection:crm.claim.report,priority:0
|
||||
msgid "Highest"
|
||||
msgstr ""
|
||||
msgstr "最高"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,partner_address_id:0
|
||||
msgid "Partner Contact"
|
||||
msgstr ""
|
||||
msgstr "業務夥伴聯繫方式"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
|
@ -578,109 +578,109 @@ msgstr ""
|
|||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,state:0
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
msgstr "狀態"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
msgstr "完成"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Claim Reporter"
|
||||
msgstr ""
|
||||
msgstr "索賠者"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "取消"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
msgstr "結束"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: view:crm.claim.report:0
|
||||
#: selection:crm.claim.report,state:0
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
msgstr "開啟"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "New Claims"
|
||||
msgstr ""
|
||||
msgstr "新抱怨"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: selection:crm.claim,state:0
|
||||
msgid "In Progress"
|
||||
msgstr ""
|
||||
msgstr "進行中"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
#: field:crm.claim,user_id:0
|
||||
msgid "Responsible"
|
||||
msgstr ""
|
||||
msgstr "負責人"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Claims created in current year"
|
||||
msgstr ""
|
||||
msgstr "本年新建的抱怨"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Unassigned Claims"
|
||||
msgstr ""
|
||||
msgstr "未分配的抱怨"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Claims created in current month"
|
||||
msgstr ""
|
||||
msgstr "本月新建的抱怨"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,delay_expected:0
|
||||
msgid "Overpassed Deadline"
|
||||
msgstr ""
|
||||
msgstr "超過截止日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,cause:0
|
||||
msgid "Root Cause"
|
||||
msgstr ""
|
||||
msgstr "根本原因"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Claim/Action Description"
|
||||
msgstr ""
|
||||
msgstr "索賠/動作說明"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,description:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
msgstr "說明"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Search Claims"
|
||||
msgstr ""
|
||||
msgstr "搜尋索賠"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,section_id:0
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Sales Team"
|
||||
msgstr ""
|
||||
msgstr "銷售團隊"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "May"
|
||||
msgstr ""
|
||||
msgstr "5月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Resolution Actions"
|
||||
msgstr ""
|
||||
msgstr "決定採取的行動"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.actions.act_window,help:crm_claim.crm_case_categ_claim0
|
||||
|
@ -690,31 +690,33 @@ msgid ""
|
|||
"history for a claim (emails sent, intervention type and so on). Claims may "
|
||||
"automatically be linked to an email address using the mail gateway module."
|
||||
msgstr ""
|
||||
"記錄和追蹤你客戶的索賠,索賠可以連結到一個或很多銷售訂單中。你可以發送帶附件的郵件和保留一個索賠的所有日誌(郵件發送,介入類型等)。索賠可以自動連結到電子"
|
||||
"郵件使用的閘道。"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,email:0
|
||||
msgid "# Emails"
|
||||
msgstr ""
|
||||
msgstr "電子郵件"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.stage,name:crm_claim.stage_claim2
|
||||
msgid "Actions Done"
|
||||
msgstr ""
|
||||
msgstr "動作完成"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "Claims created in last month"
|
||||
msgstr ""
|
||||
msgstr "上個月新建的抱怨"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:crm.case.stage,name:crm_claim.stage_claim5
|
||||
msgid "Actions Defined"
|
||||
msgstr ""
|
||||
msgstr "動作定義"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Follow Up"
|
||||
msgstr ""
|
||||
msgstr "跟進"
|
||||
|
||||
#. module: crm_claim
|
||||
#: help:crm.claim,state:0
|
||||
|
@ -727,67 +729,82 @@ msgid ""
|
|||
" \n"
|
||||
"If the case needs to be reviewed then the state is set to 'Pending'."
|
||||
msgstr ""
|
||||
"當一個業務建立時狀態設為'草稿'\n"
|
||||
"如果業務正在處理狀態設為'開啟'\n"
|
||||
"當業務結束狀態設為'完成'\n"
|
||||
"如果業務需要審查狀態設為'待處理'"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "February"
|
||||
msgstr ""
|
||||
msgstr "2月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
#: field:crm.claim.report,name:0
|
||||
msgid "Year"
|
||||
msgstr ""
|
||||
msgstr "年"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "My company"
|
||||
msgstr ""
|
||||
msgstr "我的公司"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim.report,month:0
|
||||
msgid "April"
|
||||
msgstr ""
|
||||
msgstr "4月"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim.report:0
|
||||
msgid "My Case(s)"
|
||||
msgstr ""
|
||||
msgstr "我的業務"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim,id:0
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
msgstr "ID"
|
||||
|
||||
#. module: crm_claim
|
||||
#: constraint:res.partner:0
|
||||
msgid "Error ! You cannot create recursive associated members."
|
||||
msgstr ""
|
||||
msgstr "錯誤,您不能建立循環引用的會員用戶"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
msgstr "動作"
|
||||
|
||||
#. module: crm_claim
|
||||
#: selection:crm.claim,priority:0
|
||||
#: selection:crm.claim.report,priority:0
|
||||
msgid "High"
|
||||
msgstr ""
|
||||
msgstr "高"
|
||||
|
||||
#. module: crm_claim
|
||||
#: model:ir.actions.act_window,help:crm_claim.crm_claim_categ_action
|
||||
msgid ""
|
||||
"Create claim categories to better manage and classify your claims. Some "
|
||||
"example of claims can be: preventive action, corrective action."
|
||||
msgstr ""
|
||||
msgstr "建立索賠的類型以更好管理和分類你的索賠。如:索賠可以是預防措施、糾正措施。"
|
||||
|
||||
#. module: crm_claim
|
||||
#: field:crm.claim.report,create_date:0
|
||||
msgid "Create Date"
|
||||
msgstr ""
|
||||
msgstr "建立日期"
|
||||
|
||||
#. module: crm_claim
|
||||
#: view:crm.claim:0
|
||||
msgid "In Progress Claims"
|
||||
msgstr ""
|
||||
msgstr "正在處理的抱怨"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "The state is set to 'Draft', when a case is created. \n"
|
||||
#~ "If the case is in progress the state is set to 'Open'. \n"
|
||||
#~ "When the case is over, the state is set to 'Done'. \n"
|
||||
#~ "If the case needs to be reviewed then the state is set to 'Pending'."
|
||||
#~ msgstr ""
|
||||
#~ "當一個業務建立時狀態設為'草稿'\n"
|
||||
#~ "如果業務正在處理狀態設為'開啟'\n"
|
||||
#~ "當業務結束狀態設為'完成'\n"
|
||||
#~ "如果業務需要審查狀態設為'待定'"
|
||||
|
|
|
@ -7,19 +7,19 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-05-10 18:26+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"PO-Revision-Date: 2012-08-29 08:56+0000\n"
|
||||
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-28 06:25+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: view:crm_profiling.questionnaire:0
|
||||
msgid "Questions List"
|
||||
msgstr "問題表"
|
||||
msgstr "問題列表"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: model:ir.actions.act_window,help:crm_profiling.open_questionnaires
|
||||
|
@ -28,7 +28,7 @@ msgid ""
|
|||
"in the sales cycle by helping them to ask the right questions. The "
|
||||
"segmentation tool allows you to automatically assign a partner to a category "
|
||||
"according to his answers to the different questionnaires."
|
||||
msgstr ""
|
||||
msgstr "你能建立特定主題的問卷調查去指導你的團隊在銷售週期向客戶詢問合適的問題。這細分工具能根據不同問題的答案自動劃分業務夥伴到不同的類型。"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: field:crm_profiling.answer,question_id:0
|
||||
|
@ -47,12 +47,12 @@ msgstr "開啟問卷"
|
|||
#. module: crm_profiling
|
||||
#: field:crm.segmentation,child_ids:0
|
||||
msgid "Child Profiles"
|
||||
msgstr ""
|
||||
msgstr "子客戶特徵"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: view:crm.segmentation:0
|
||||
msgid "Partner Segmentations"
|
||||
msgstr "伙伴分割"
|
||||
msgstr "業務夥伴分類"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: field:crm_profiling.answer,name:0
|
||||
|
@ -64,17 +64,17 @@ msgstr "答案"
|
|||
#. module: crm_profiling
|
||||
#: model:ir.model,name:crm_profiling.model_open_questionnaire_line
|
||||
msgid "open.questionnaire.line"
|
||||
msgstr ""
|
||||
msgstr "open.questionnaire.line"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: model:ir.model,name:crm_profiling.model_crm_segmentation
|
||||
msgid "Partner Segmentation"
|
||||
msgstr "伙伴區間"
|
||||
msgstr "業務夥伴分類"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: view:res.partner:0
|
||||
msgid "Profiling"
|
||||
msgstr ""
|
||||
msgstr "紀錄運行效能(Profiling)"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: view:crm_profiling.questionnaire:0
|
||||
|
@ -97,7 +97,7 @@ msgstr "答案"
|
|||
#. module: crm_profiling
|
||||
#: model:ir.model,name:crm_profiling.model_open_questionnaire
|
||||
msgid "open.questionnaire"
|
||||
msgstr ""
|
||||
msgstr "open.questionnaire"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: field:open.questionnaire,questionnaire_id:0
|
||||
|
@ -112,12 +112,12 @@ msgstr "使用問卷"
|
|||
#. module: crm_profiling
|
||||
#: view:open.questionnaire:0
|
||||
msgid "_Cancel"
|
||||
msgstr ""
|
||||
msgstr "取消(_C)"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: field:open.questionnaire,question_ans_ids:0
|
||||
msgid "Question / Answers"
|
||||
msgstr ""
|
||||
msgstr "問/答"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: view:crm_profiling.questionnaire:0
|
||||
|
@ -133,22 +133,22 @@ msgid ""
|
|||
"Check this box if you want to use this tab as "
|
||||
"part of the segmentation rule. If not checked, "
|
||||
"the criteria beneath will be ignored"
|
||||
msgstr ""
|
||||
msgstr "勾選這選項,如果你想使用這標籤作為細分規則的一部分。如果勾選,這規則將被忽略"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: constraint:crm.segmentation:0
|
||||
msgid "Error ! You can not create recursive profiles."
|
||||
msgstr ""
|
||||
msgstr "錯誤! 你不能建立相關的簡介。"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: field:crm.segmentation,profiling_active:0
|
||||
msgid "Use The Profiling Rules"
|
||||
msgstr ""
|
||||
msgstr "使用這客戶特徵的規則"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: constraint:res.partner:0
|
||||
msgid "Error ! You cannot create recursive associated members."
|
||||
msgstr ""
|
||||
msgstr "錯誤! 您不能建立相關的會員用戶"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: view:crm_profiling.question:0
|
||||
|
@ -172,7 +172,7 @@ msgstr "問題"
|
|||
#. module: crm_profiling
|
||||
#: field:crm.segmentation,parent_id:0
|
||||
msgid "Parent Profile"
|
||||
msgstr ""
|
||||
msgstr "上級客戶簡介"
|
||||
|
||||
#. module: crm_profiling
|
||||
#: view:open.questionnaire:0
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-08-29 09:15+0000\n"
|
||||
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||
"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: crm_todo
|
||||
#: model:ir.model,name:crm_todo.model_project_task
|
||||
msgid "Task"
|
||||
msgstr "任務"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Timebox"
|
||||
msgstr "時間區間"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "For cancelling the task"
|
||||
msgstr "取消任務"
|
||||
|
||||
#. module: crm_todo
|
||||
#: constraint:project.task:0
|
||||
msgid "Error ! Task end-date must be greater then task start-date"
|
||||
msgstr "錯誤!任務結束日期必須大於任務開始日期"
|
||||
|
||||
#. module: crm_todo
|
||||
#: model:ir.model,name:crm_todo.model_crm_lead
|
||||
msgid "crm.lead"
|
||||
msgstr "crm.lead"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Next"
|
||||
msgstr "下一步"
|
||||
|
||||
#. module: crm_todo
|
||||
#: model:ir.actions.act_window,name:crm_todo.crm_todo_action
|
||||
#: model:ir.ui.menu,name:crm_todo.menu_crm_todo
|
||||
msgid "My Tasks"
|
||||
msgstr "我的任務"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
#: field:crm.lead,task_ids:0
|
||||
msgid "Tasks"
|
||||
msgstr "任務"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Done"
|
||||
msgstr "完成"
|
||||
|
||||
#. module: crm_todo
|
||||
#: constraint:project.task:0
|
||||
msgid "Error ! You cannot create recursive tasks."
|
||||
msgstr "錯誤!不能創建循環引用的任務"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Cancel"
|
||||
msgstr "刪除"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Extra Info"
|
||||
msgstr "額外資訊"
|
||||
|
||||
#. module: crm_todo
|
||||
#: field:project.task,lead_id:0
|
||||
msgid "Lead / Opportunity"
|
||||
msgstr "潛在客戶/機會"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "For changing to done state"
|
||||
msgstr "要設置為完成狀態"
|
||||
|
||||
#. module: crm_todo
|
||||
#: view:crm.lead:0
|
||||
msgid "Previous"
|
||||
msgstr "前一頁"
|
|
@ -8,13 +8,13 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 08:06+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2012-08-29 07:43+0000\n"
|
||||
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||
"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-28 06:34+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: decimal_precision
|
||||
|
@ -46,7 +46,7 @@ msgstr "小數精確度"
|
|||
#. module: decimal_precision
|
||||
#: model:ir.model,name:decimal_precision.model_decimal_precision
|
||||
msgid "decimal.precision"
|
||||
msgstr ""
|
||||
msgstr "decimal.precision"
|
||||
|
||||
#~ msgid "Decimal Precision Configuration"
|
||||
#~ msgstr "小數精確度設定"
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-08-29 09:46+0000\n"
|
||||
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||
"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\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 ""
|
||||
"說明OpenERP的服務器上的網絡地址應該為最終用戶訪問。這取決於您的網絡拓撲和配置,而且只會影響顯示給用戶的鏈接。的格式為HOST:PORT和預設的主機"
|
||||
"(localhost)的訪問從服務器本身只適合.."
|
||||
|
||||
#. module: document_ftp
|
||||
#: model:ir.actions.url,name:document_ftp.action_document_browse
|
||||
msgid "Browse Files"
|
||||
msgstr "瀏覽檔案"
|
||||
|
||||
#. module: document_ftp
|
||||
#: field:document.ftp.configuration,config_logo:0
|
||||
msgid "Image"
|
||||
msgstr "圖像"
|
||||
|
||||
#. module: document_ftp
|
||||
#: field:document.ftp.configuration,host:0
|
||||
msgid "Address"
|
||||
msgstr "地址"
|
||||
|
||||
#. module: document_ftp
|
||||
#: field:document.ftp.browse,url:0
|
||||
msgid "FTP Server"
|
||||
msgstr "FTP 伺服器"
|
||||
|
||||
#. module: document_ftp
|
||||
#: model:ir.actions.act_window,name:document_ftp.action_config_auto_directory
|
||||
msgid "FTP Server Configuration"
|
||||
msgstr "FTP Server Configuration"
|
||||
|
||||
#. module: document_ftp
|
||||
#: view:document.ftp.browse:0
|
||||
msgid "_Browse"
|
||||
msgstr "瀏覽(_B)"
|
||||
|
||||
#. 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 "服務器地址或IP地址和端口,用戶應該連接到DMS訪問"
|
||||
|
||||
#. 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 "取消(_C)"
|
||||
|
||||
#. module: document_ftp
|
||||
#: view:document.ftp.configuration:0
|
||||
msgid "Configure FTP Server"
|
||||
msgstr "設置FTP 伺服器"
|
||||
|
||||
#. module: document_ftp
|
||||
#: view:document.ftp.configuration:0
|
||||
msgid "title"
|
||||
msgstr "標題"
|
||||
|
||||
#. module: document_ftp
|
||||
#: model:ir.model,name:document_ftp.model_document_ftp_browse
|
||||
msgid "Document FTP Browse"
|
||||
msgstr "瀏覽FTP文件"
|
||||
|
||||
#. 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 "res_config_contents"
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 07:58+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"PO-Revision-Date: 2012-08-30 03:33+0000\n"
|
||||
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-28 06:02+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: event
|
||||
|
@ -189,7 +189,7 @@ msgstr "郵件"
|
|||
#. module: event
|
||||
#: model:ir.model,name:event.model_event_registration_badge
|
||||
msgid "event.registration.badge"
|
||||
msgstr ""
|
||||
msgstr "event.registration.badge"
|
||||
|
||||
#. module: event
|
||||
#: field:event.event,mail_auto_confirm:0
|
||||
|
@ -331,7 +331,7 @@ msgstr ""
|
|||
#. module: event
|
||||
#: view:report.event.registration:0
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
msgstr "確認"
|
||||
|
||||
#. module: event
|
||||
#: view:event.event:0
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2009-01-23 17:18+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"PO-Revision-Date: 2012-08-30 03:32+0000\n"
|
||||
"Last-Translator: Bonnie Duan <bonnie.duan@cenoq.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-28 06:27+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: event_project
|
||||
|
@ -29,7 +29,7 @@ msgstr "結束日期"
|
|||
#. module: event_project
|
||||
#: view:event.project:0
|
||||
msgid "Ok"
|
||||
msgstr ""
|
||||
msgstr "確認"
|
||||
|
||||
#. module: event_project
|
||||
#: help:event.project,project_id:0
|
||||
|
@ -37,13 +37,13 @@ msgid ""
|
|||
"This is Template Project. Project of event is a duplicate of this Template. "
|
||||
"After click on 'Create Retro-planning', New Project will be duplicated from "
|
||||
"this template project."
|
||||
msgstr ""
|
||||
msgstr "這是模板專案。專案的事件是重複的,這個模板。點擊打造追朔規劃“後,新專案將被複製此模板的專案。"
|
||||
|
||||
#. module: event_project
|
||||
#: view:event.project:0
|
||||
#: model:ir.actions.act_window,name:event_project.action_event_project
|
||||
msgid "Retro-Planning"
|
||||
msgstr ""
|
||||
msgstr "追溯計畫"
|
||||
|
||||
#. module: event_project
|
||||
#: constraint:event.event:0
|
||||
|
@ -63,23 +63,23 @@ msgstr "專案範本"
|
|||
#. module: event_project
|
||||
#: view:event.event:0
|
||||
msgid "All tasks"
|
||||
msgstr ""
|
||||
msgstr "所有的工作任務"
|
||||
|
||||
#. module: event_project
|
||||
#: view:event.event:0
|
||||
#: model:ir.actions.act_window,name:event_project.act_event_task
|
||||
msgid "Tasks"
|
||||
msgstr ""
|
||||
msgstr "任務"
|
||||
|
||||
#. module: event_project
|
||||
#: constraint:event.event:0
|
||||
msgid "Error ! You cannot create recursive event."
|
||||
msgstr ""
|
||||
msgstr "錯誤!您不能創建遞歸的事件"
|
||||
|
||||
#. module: event_project
|
||||
#: field:event.event,task_ids:0
|
||||
msgid "Project tasks"
|
||||
msgstr ""
|
||||
msgstr "專案任務"
|
||||
|
||||
#. module: event_project
|
||||
#: view:event.project:0
|
||||
|
@ -94,7 +94,7 @@ msgstr "開始日期"
|
|||
#. module: event_project
|
||||
#: view:event.event:0
|
||||
msgid "Create Retro-Planning"
|
||||
msgstr ""
|
||||
msgstr "創建追溯計畫"
|
||||
|
||||
#. module: event_project
|
||||
#: model:ir.model,name:event_project.model_event_event
|
||||
|
@ -104,7 +104,7 @@ msgstr "活動"
|
|||
#. module: event_project
|
||||
#: view:event.event:0
|
||||
msgid "Tasks Management"
|
||||
msgstr ""
|
||||
msgstr "任務管理"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Organization and management of events.\n"
|
||||
|
|
|
@ -83,11 +83,9 @@
|
|||
<field name="model">account.analytic.account</field>
|
||||
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//separator[@name="project_sep"]' position='replace'>
|
||||
<separator name="project_sep" string="Project Management" colspan="4"/> <!-- removal of invisible attribute -->
|
||||
</xpath>
|
||||
<xpath expr='//separator[@name="project_sep"]' position='after'>
|
||||
<xpath expr='//div[@name="project"]' position='inside'>
|
||||
<field name="use_timesheets"/>
|
||||
<label for="use_timesheets"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -0,0 +1,429 @@
|
|||
# German translation for openobject-addons
|
||||
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||
"PO-Revision-Date: 2012-08-29 07:36+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-08-30 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 15864)\n"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:1131
|
||||
#, python-format
|
||||
msgid "Error !!"
|
||||
msgstr "Fehler!"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid ""
|
||||
"Use the SugarSoap API URL (read tooltip) and a full access SugarCRM login."
|
||||
msgstr ""
|
||||
"Nutzen Sie die SugarSoap API URL (siehe Tooltip) und eine SugarCRM-Anmeldung "
|
||||
"mit Vollzugriff."
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "(Coming Soon)"
|
||||
msgstr "(Bald erwartet)"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,document:0
|
||||
msgid "Documents"
|
||||
msgstr "Dokumente"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Import your data from SugarCRM :"
|
||||
msgstr "Importieren Sie Ihre Daten aus SugarCRM:"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid ""
|
||||
"Choose data you want to import. Click 'Import' to get data manually or "
|
||||
"'Schedule Reccurent Imports' to get recurrently and automatically data."
|
||||
msgstr ""
|
||||
"Wählen Sie die zu importierenden Daten aus. Drücken Sie \"Import\", um Daten "
|
||||
"manuell zu holen oder \"Wiederkehrende Importe Terminieren\", um Daten "
|
||||
"automatisch und wiederholt einzuholen."
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,contact:0
|
||||
msgid "Contacts"
|
||||
msgstr "Kontakte"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "HR"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,bug:0
|
||||
msgid "Check this box to import sugarCRM Bugs into OpenERP project issues"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,instance_name:0
|
||||
msgid "Instance's Name"
|
||||
msgstr "Name der Instanz"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,project_task:0
|
||||
msgid "Project Tasks"
|
||||
msgstr "Projekt Aufgaben"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,email_from:0
|
||||
msgid "Notify End Of Import To:"
|
||||
msgstr "Über Abschluss des Imports zu informieren:"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,user:0
|
||||
msgid ""
|
||||
"Check this box to import sugarCRM Users into OpenERP users, warning if a "
|
||||
"user with the same login exist in OpenERP, user information will be erase by "
|
||||
"sugarCRM user information"
|
||||
msgstr ""
|
||||
"Haken Sie dieses Feld an, um SugarCRM-Benutzer als OpenERP-Benutzer zu "
|
||||
"importieren. Hinweis: In OpenERP bestehende Benutzer gleichen Namens werden "
|
||||
"gelöscht und durch die SugarCRM-Information ersetzt."
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/sugarsoap_services.py:23
|
||||
#, python-format
|
||||
msgid "Please install SOAP for python - ZSI-2.0-rc3.tar.gz - python-zci"
|
||||
msgstr ""
|
||||
"Installieren Sie bitte SOAP für Python - ZSI-2.0-rc3.tar.gz - python-zci"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "_Schedule Recurrent Imports"
|
||||
msgstr "_Terminierung wiederkehrender Importe"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid ""
|
||||
"Do not forget the email address to be notified of the success of the import."
|
||||
msgstr ""
|
||||
"Vergessen Sie nicht die über den Erfolg des Imports zu banachrichtende EMail-"
|
||||
"Adresse."
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,call:0
|
||||
msgid "Check this box to import sugarCRM Calls into OpenERP calls"
|
||||
msgstr ""
|
||||
"Haken Sie dieses Feld an, um SugarCRM-Anrufe in OpenERP-Anrufe zu "
|
||||
"importieren."
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid ""
|
||||
"If you make recurrent or ponctual import, data already in OpenERP will be "
|
||||
"updated by SugarCRM data."
|
||||
msgstr ""
|
||||
"Wenn Sie wiederkehrende oder vereinzelte Importe durchführen, werden bereits "
|
||||
"in OpenERP vorliegende Daten aktualsiert."
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,employee:0
|
||||
msgid "Employee"
|
||||
msgstr "Angstellter"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Document"
|
||||
msgstr "Dokument"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,document:0
|
||||
msgid "Check this box to import sugarCRM Documents into OpenERP documents"
|
||||
msgstr ""
|
||||
"Haken Sie dieses Feld an, um Dokumente aus SugarCRM in OpenERP zu importieren"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Import Data From SugarCRM"
|
||||
msgstr "Daten von SugarCRM importieren"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "CRM"
|
||||
msgstr "Kundenbeziehungsverwaltung"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.message:0
|
||||
msgid ""
|
||||
"Data are importing, the process is running in the background, an email will "
|
||||
"be sent to the given email address if it was defined."
|
||||
msgstr ""
|
||||
"Daten werden importiert; der Prozess läuft im Hintergrund. Bei Abschluss "
|
||||
"wird eine Benachrichtigung per EMail verschickt, sofern diese angegeben "
|
||||
"wurde."
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,call:0
|
||||
msgid "Calls"
|
||||
msgstr "Anrufe"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Multi Instance Management"
|
||||
msgstr "Verwaltung von mehrfachen Instanzen"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.message:0
|
||||
msgid "_Ok"
|
||||
msgstr "_OK"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,opportunity:0
|
||||
msgid ""
|
||||
"Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads "
|
||||
"and Opportunities"
|
||||
msgstr ""
|
||||
"Haken Sie dieses Feld an, um Leads aus SugarCRM nach OpenERP zu importieren."
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,email_history:0
|
||||
msgid "Email and Note"
|
||||
msgstr "Nachrichten und Notizen"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,url:0
|
||||
msgid ""
|
||||
"Webservice's url where to get the data. example : "
|
||||
"'http://example.com/sugarcrm/soap.php', or copy the address of your sugarcrm "
|
||||
"application "
|
||||
"http://trial.sugarcrm.com/qbquyj4802/index.php?module=Home&action=index"
|
||||
msgstr ""
|
||||
"URL des Web-Dienstes bei dem Daten geholt werden sollen. Beispiel: "
|
||||
"\"http://example.com/sugarcrm/soap.php\", oder kopieren Sie die Adresse "
|
||||
"Ihrer SugarCRM-Anwendung (z. B. "
|
||||
"http://trial.sugarcrm.com/qbquyj4802/index.php?module=Home&action=index)"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: model:ir.actions.act_window,name:import_sugarcrm.action_import_sugarcrm
|
||||
#: model:ir.ui.menu,name:import_sugarcrm.menu_sugarcrm_import
|
||||
msgid "Import SugarCRM"
|
||||
msgstr "Aus SugarCRM importieren"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "_Import"
|
||||
msgstr "_Import"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,user:0
|
||||
msgid "User"
|
||||
msgstr "Benutzer"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:1131
|
||||
#, python-format
|
||||
msgid "%s data required %s Module to be installed, Please install %s module"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,claim:0
|
||||
msgid "Cases"
|
||||
msgstr "Vorgänge"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,meeting:0
|
||||
msgid ""
|
||||
"Check this box to import sugarCRM Meetings and Tasks into OpenERP meetings"
|
||||
msgstr ""
|
||||
"Haken Sie dieses Feld an, um Termine von SugarCRM nach OpenERP zu importieren"
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,email_history:0
|
||||
msgid ""
|
||||
"Check this box to import sugarCRM Emails, Notes and Attachments into OpenERP "
|
||||
"Messages and Attachments"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,project:0
|
||||
msgid "Projects"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/sugarsoap_services_types.py:14
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please install SOAP for python - ZSI-2.0-rc3.tar.gz from "
|
||||
"http://pypi.python.org/pypi/ZSI/"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,project:0
|
||||
msgid "Check this box to import sugarCRM Projects into OpenERP projects"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:1098
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:1124
|
||||
#, python-format
|
||||
msgid "Select Module to Import."
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,meeting:0
|
||||
msgid "Meetings"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,employee:0
|
||||
msgid "Check this box to import sugarCRM Employees into OpenERP employees"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,url:0
|
||||
msgid "SugarSoap Api url:"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Address Book"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/sugar.py:60
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Authentication error !\n"
|
||||
"Bad Username or Password bad SugarSoap Api url !"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,bug:0
|
||||
msgid "Bugs"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Project"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,project_task:0
|
||||
msgid "Check this box to import sugarCRM Project Tasks into OpenERP tasks"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,opportunity:0
|
||||
msgid "Leads & Opp"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:79
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Authentication error !\n"
|
||||
"Bad Username or Password or bad SugarSoap Api url !"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:79
|
||||
#: code:addons/import_sugarcrm/sugar.py:60
|
||||
#, python-format
|
||||
msgid "Error !"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:1098
|
||||
#: code:addons/import_sugarcrm/import_sugarcrm.py:1124
|
||||
#, python-format
|
||||
msgid "Warning !"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,instance_name:0
|
||||
msgid ""
|
||||
"Prefix of SugarCRM id to differentiate xml_id of SugarCRM models datas come "
|
||||
"from different server."
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,contact:0
|
||||
msgid "Check this box to import sugarCRM Contacts into OpenERP addresses"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,password:0
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Login Information"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,claim:0
|
||||
msgid "Check this box to import sugarCRM Cases into OpenERP claims"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Email Notification When Import is Finished"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,username:0
|
||||
msgid "User Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.message:0
|
||||
#: model:ir.model,name:import_sugarcrm.model_import_message
|
||||
msgid "Import Message"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: help:import.sugarcrm,account:0
|
||||
msgid "Check this box to import sugarCRM Accounts into OpenERP partners"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Online documentation:"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: field:import.sugarcrm,account:0
|
||||
msgid "Accounts"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "_Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: code:addons/import_sugarcrm/sugarsoap_services.py:23
|
||||
#: code:addons/import_sugarcrm/sugarsoap_services_types.py:14
|
||||
#, python-format
|
||||
msgid "ZSI Import Error!"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: model:ir.model,name:import_sugarcrm.model_import_sugarcrm
|
||||
msgid "Import SugarCRM DATA"
|
||||
msgstr ""
|
||||
|
||||
#. module: import_sugarcrm
|
||||
#: view:import.sugarcrm:0
|
||||
msgid "Email Address to Notify"
|
||||
msgstr ""
|
|
@ -362,6 +362,10 @@
|
|||
</group>
|
||||
<group>
|
||||
<field name="type"/>
|
||||
<p colspan="2" class="oe_grey" attrs="{'invisible': [('type','=','normal')]}">
|
||||
When processing a sale order for this product, the delivery order
|
||||
will contain the raw materials, instead of the finished product.
|
||||
</p>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
|
||||
<label for="product_uos_qty" groups="product.group_uos"/>
|
||||
<div groups="product.group_uos" >
|
||||
|
@ -678,11 +682,11 @@
|
|||
</group>
|
||||
<notebook>
|
||||
<page string="Consumed Products">
|
||||
<group groups="stock.group_locations">
|
||||
<group>
|
||||
<group>
|
||||
<field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/>
|
||||
</group>
|
||||
<group>
|
||||
<group groups="stock.group_locations">
|
||||
<field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/>
|
||||
<field name="location_dest_id" domain="[('usage','=','internal')]"/>
|
||||
</group>
|
||||
|
|
|
@ -1,42 +1,64 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from osv import fields, osv
|
||||
import random
|
||||
import re
|
||||
import string
|
||||
import urllib2
|
||||
from tools.translate import _
|
||||
|
||||
class pad_common(osv.osv_memory):
|
||||
_name = 'pad.common'
|
||||
_pad_fields = []
|
||||
|
||||
def pad_content(self, cr, uid, url ,context=None):
|
||||
content = urllib2.urlopen('%s/export/html'%url).read()
|
||||
return content
|
||||
|
||||
def pad_generate_url(self, cr, uid, context=None):
|
||||
pad_url_template = self.pool.get('res.users').browse(cr,uid, uid, context).company_id.pad_url_template
|
||||
pad_server = self.pool.get('res.users').browse(cr, uid, uid, context).company_id.pad_server
|
||||
# make sure pad server in the form of http://hostname
|
||||
if not pad_server:
|
||||
return ''
|
||||
if not pad_server.startswith('http'):
|
||||
pad_server = 'http://' + pad_server
|
||||
pad_server = pad_server.rstrip('/')
|
||||
# generate a salt
|
||||
s = string.ascii_uppercase + string.digits
|
||||
salt = ''.join([s[random.randint(0, len(s) - 1)] for i in range(8)])
|
||||
template_vars = {
|
||||
'db' : cr.dbname,
|
||||
'model' : self._name,
|
||||
'salt' : salt,
|
||||
}
|
||||
url = pad_url_template % template_vars
|
||||
salt = ''.join([s[random.randint(0, len(s) - 1)] for i in range(10)])
|
||||
# contruct the url
|
||||
url = '%s/p/%s-%s-%s' % (pad_server, cr.dbname, self._name, salt)
|
||||
return url
|
||||
|
||||
def pad_get_content(self, cr, uid, url, context=None):
|
||||
content = ''
|
||||
if url:
|
||||
page = urllib2.urlopen('%s/export/html'%url).read()
|
||||
mo = re.search('<body>(.*)</body>',page)
|
||||
if mo:
|
||||
content = mo.group(1)
|
||||
return content
|
||||
|
||||
# TODO
|
||||
# add attribute on columns pad_content_field =
|
||||
# override default write to load the content at write and store it in the field
|
||||
# reverse engineer protocol to be setHtml without using the api key
|
||||
# override default get to generate urls
|
||||
# override read to generate url and store the content if empty
|
||||
# override read and copy to generate url and store the content if empty
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
data = super(pad_common, self).default_get(cr, uid, fields, context)
|
||||
for k in fields:
|
||||
field = self._all_columns[k].column
|
||||
if hasattr(field,'pad_content_field'):
|
||||
data[k] = self.pad_generate_url(cr, uid, context=context)
|
||||
return data
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
for k,v in vals.items():
|
||||
field = self._all_columns[k].column
|
||||
if hasattr(field,'pad_content_field'):
|
||||
vals[field.pad_content_field] = self.pad_get_content(cr, uid, v, context=context)
|
||||
return super(pad_common, self).write(cr, uid, ids, vals, context=context)
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
if not default:
|
||||
default = {}
|
||||
update = [(field,self.pad_generate_url(cr, uid, context)) for field in self._pad_fields]
|
||||
default.update(update)
|
||||
for k,v in self._all_columns:
|
||||
field = v.column
|
||||
if hasattr(field,'pad_content_field'):
|
||||
default[k] = self.pad_generate_url(cr, uid, context)
|
||||
return super(pad_common, self).copy(cr, uid, id, default, context)
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -1,16 +1,11 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from osv import fields, osv
|
||||
|
||||
DEFAULT_PAD_TEMPLATE = 'http://pad.openerp.com/p/%(db)s-%(model)s-%(salt)s'
|
||||
DEFAULT_PAD_TEMPLATE = ''
|
||||
|
||||
class company_pad(osv.osv):
|
||||
_inherit = 'res.company'
|
||||
_columns = {
|
||||
'pad_url_template': fields.char('Pad URL Template', size=128, required=True, help="Template used to generate pad URL."),
|
||||
}
|
||||
_defaults = {
|
||||
'pad_url_template': DEFAULT_PAD_TEMPLATE,
|
||||
'pad_server': fields.char('Pad Server', help="Etherpad lite server. Example: beta.primarypad.com"),
|
||||
'pad_key': fields.char('Pad Api Key', help="Etherpad lite api key."),
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
<field name="arch" type="xml">
|
||||
<xpath expr="//group[@name='account_grp']" position="after">
|
||||
<group string="Pads">
|
||||
<field name="pad_url_template" placeholder="e.g. http://beta.etherpad.org/p/%%(db)s-%%(model)s-%%(salt)s"/>
|
||||
<field name="pad_server" placeholder="e.g. beta.primarypad.org"/>
|
||||
<field name="pad_key"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
|
|
|
@ -16,14 +16,8 @@ instance.web.form.FieldPad = instance.web.form.AbstractField.extend({
|
|||
var self = this;
|
||||
var _super = self._super;
|
||||
_super.apply(self,[val]);
|
||||
if (val === false || val === "") {
|
||||
self.field_manager.dataset.call('pad_generate_url').then(function(r) {
|
||||
_super.apply(self,[r]);
|
||||
self.render_value();
|
||||
});
|
||||
} else {
|
||||
self.render_value();
|
||||
}
|
||||
this._dirty_flag = true;
|
||||
self.render_value();
|
||||
},
|
||||
render_value: function() {
|
||||
console.log("display");
|
||||
|
|
|
@ -12,9 +12,6 @@
|
|||
</t>
|
||||
<t t-name="FieldPad.unconfigured">
|
||||
Please configure your etherpad server.<br/>
|
||||
OpenERP Entreprise customers may safely use pad.openerp.com as a server using the following template:<br/>
|
||||
<blockquote>
|
||||
http://pad.openerp.com/p/%(db)s-%(model)s-%(salt)s
|
||||
</blockquote>
|
||||
OpenERP Entreprise customers may safely use pad.openerp.com<br/>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
|
@ -5,7 +5,6 @@ from osv import fields, osv
|
|||
class task(osv.osv):
|
||||
_name = "project.task"
|
||||
_inherit = ["project.task",'pad.common']
|
||||
_pad_fields = ['description_pad']
|
||||
_columns = {
|
||||
'description_pad': fields.char('Description PAD', size=250)
|
||||
'description_pad': fields.char('Description PAD', pad_content_field='description')
|
||||
}
|
||||
|
|
|
@ -27,15 +27,10 @@ class account_journal(osv.osv):
|
|||
_columns = {
|
||||
'journal_user': fields.boolean('PoS Payment Method', help="Check this box if this journal define a payment method that can be used in point of sales."),
|
||||
|
||||
'opening_control': fields.boolean('Opening Control', help="If you want the journal should be control at opening, check this option"),
|
||||
'closing_control': fields.boolean('Closing Control', help="If you want the journal should be control at closing, check this option"),
|
||||
|
||||
'amount_authorized_diff' : fields.float('Amount Authorized Difference'),
|
||||
'self_checkout_payment_method' : fields.boolean('Self Checkout Payment Method'),
|
||||
}
|
||||
_defaults = {
|
||||
'opening_control' : False,
|
||||
'closing_control' : False,
|
||||
'self_checkout_payment_method' : False,
|
||||
}
|
||||
|
||||
|
@ -46,6 +41,7 @@ class account_cash_statement(osv.osv):
|
|||
_columns = {
|
||||
'pos_session_id' : fields.many2one('pos.session'),
|
||||
}
|
||||
|
||||
account_cash_statement()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
<page string="Point of Sale">
|
||||
<group col="4" colspan="4">
|
||||
<field name="journal_user"/>
|
||||
<field name="opening_control"/>
|
||||
<field name="closing_control"/>
|
||||
<field name="amount_authorized_diff"/>
|
||||
<field name="self_checkout_payment_method" />
|
||||
</group>
|
||||
|
@ -113,37 +111,5 @@
|
|||
<field name="view_id" ref="account.view_bank_statement_form2"/>
|
||||
<field name="act_window_id" ref="action_new_bank_statement_all_tree"/>
|
||||
</record>
|
||||
|
||||
<!--
|
||||
<menuitem name="Cash Register Management" parent="point_of_sale.menu_point_root"
|
||||
id="menu_point_open_config" sequence="10"/>
|
||||
<menuitem
|
||||
name="Open Cash Registers" parent="menu_point_open_config"
|
||||
string="Open Cash Registers"
|
||||
action="action_pos_open_statement"
|
||||
id="menu_open_statement" sequence="1" />
|
||||
|
||||
<menuitem
|
||||
name="Close Cash Registers" parent="menu_point_open_config"
|
||||
string="Close Cash Registers"
|
||||
action="action_pos_close_statement"
|
||||
id="menu_close_statement" sequence="2" />
|
||||
|
||||
<menuitem
|
||||
parent="menu_point_open_config"
|
||||
action="action_pos_confirm"
|
||||
id="menu_wizard_pos_confirm" sequence="8" />
|
||||
|
||||
|
||||
<menuitem
|
||||
name="List of Cash Registers"
|
||||
parent="menu_point_open_config"
|
||||
action="action_new_bank_statement_all_tree"
|
||||
id="menu_all_menu_all_register"
|
||||
sequence="4"
|
||||
/>
|
||||
-->
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -74,6 +74,26 @@ class pos_config(osv.osv):
|
|||
'group_by' : fields.boolean('Group Journal Items', help="Check this if you want to group the Journal Items by Product while closing a Session"),
|
||||
}
|
||||
|
||||
def _check_cash_control(self, cr, uid, ids, context=None):
|
||||
return all(
|
||||
(sum(int(journal.cash_control) for journal in record.journal_ids) <= 1)
|
||||
for record in self.browse(cr, uid, ids, context=context)
|
||||
)
|
||||
|
||||
_constraints = [
|
||||
(_check_cash_control, "You cannot have two cash controls in one Point Of Sale !", ['journal_ids']),
|
||||
]
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
if not default:
|
||||
default = {}
|
||||
d = {
|
||||
'sequence_id' : False,
|
||||
}
|
||||
d.update(default)
|
||||
return super(pos_order, self).copy(cr, uid, id, d, context=context)
|
||||
|
||||
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
result = []
|
||||
states = {
|
||||
|
@ -90,11 +110,6 @@ class pos_config(osv.osv):
|
|||
result.append((record.id, record.name + ' ('+session.user_id.name+')')) #, '+states[session.state]+')'))
|
||||
return result
|
||||
|
||||
|
||||
def _default_payment_journal(self, cr, uid, context=None):
|
||||
res = self.pool.get('account.journal').search(cr, uid, [('type', 'in', ('bank','cash'))], limit=2)
|
||||
return res or []
|
||||
|
||||
def _default_sale_journal(self, cr, uid, context=None):
|
||||
res = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'sale')], limit=1)
|
||||
return res and res[0] or False
|
||||
|
@ -107,7 +122,6 @@ class pos_config(osv.osv):
|
|||
'state' : POS_CONFIG_STATE[0][0],
|
||||
'shop_id': _default_shop,
|
||||
'journal_id': _default_sale_journal,
|
||||
'journal_ids': _default_payment_journal,
|
||||
'group_by' : True,
|
||||
}
|
||||
|
||||
|
@ -148,45 +162,20 @@ class pos_session(osv.osv):
|
|||
('closed', 'Closed & Posted'),
|
||||
]
|
||||
|
||||
def _compute_cash_journal_id(self, cr, uid, ids, fieldnames, args, context=None):
|
||||
result = dict.fromkeys(ids, False)
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
for st in record.statement_ids:
|
||||
if st.journal_id.type == 'cash':
|
||||
result[record.id] = st.journal_id.id
|
||||
break
|
||||
return result
|
||||
|
||||
def _compute_cash_register_id(self, cr, uid, ids, fieldnames, args, context=None):
|
||||
result = dict.fromkeys(ids, False)
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
for st in record.statement_ids:
|
||||
if st.journal_id.type == 'cash':
|
||||
result[record.id] = st.id
|
||||
break
|
||||
return result
|
||||
|
||||
def _compute_controls(self, cr, uid, ids, fieldnames, args, context=None):
|
||||
result = {}
|
||||
def _compute_cash_all(self, cr, uid, ids, fieldnames, args, context=None):
|
||||
result = dict()
|
||||
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
has_opening_control = False
|
||||
has_closing_control = False
|
||||
|
||||
for journal in record.config_id.journal_ids:
|
||||
if journal.opening_control == True:
|
||||
has_opening_control = True
|
||||
if journal.closing_control == True:
|
||||
has_closing_control = True
|
||||
|
||||
if has_opening_control and has_closing_control:
|
||||
break
|
||||
|
||||
values = {
|
||||
'has_opening_control': has_opening_control,
|
||||
'has_closing_control': has_closing_control,
|
||||
result[record.id] = {
|
||||
'cash_journal_id' : False,
|
||||
'cash_register_id' : False,
|
||||
'cash_control' : False,
|
||||
}
|
||||
result[record.id] = values
|
||||
for st in record.statement_ids:
|
||||
if st.journal_id.cash_control == True:
|
||||
result[record.id]['cash_control'] = True
|
||||
result[record.id]['cash_journal_id'] = st.journal_id.id
|
||||
result[record.id]['cash_register_id'] = st.id
|
||||
|
||||
return result
|
||||
|
||||
|
@ -212,12 +201,17 @@ class pos_session(osv.osv):
|
|||
required=True, readonly=True,
|
||||
select=1),
|
||||
|
||||
'cash_journal_id' : fields.function(_compute_cash_journal_id, method=True,
|
||||
type='many2one', relation='account.journal',
|
||||
string='Cash Journal', store=True),
|
||||
'cash_register_id' : fields.function(_compute_cash_register_id, method=True,
|
||||
type='many2one', relation='account.bank.statement',
|
||||
string='Cash Register', store=True),
|
||||
'cash_control' : fields.function(_compute_cash_all,
|
||||
multi='cash',
|
||||
type='boolean', string='Has Cash Control'),
|
||||
'cash_journal_id' : fields.function(_compute_cash_all,
|
||||
multi='cash',
|
||||
type='many2one', relation='account.journal',
|
||||
string='Cash Journal', store=True),
|
||||
'cash_register_id' : fields.function(_compute_cash_all,
|
||||
multi='cash',
|
||||
type='many2one', relation='account.bank.statement',
|
||||
string='Cash Register', store=True),
|
||||
|
||||
'opening_details_ids' : fields.related('cash_register_id', 'opening_details_ids',
|
||||
type='one2many', relation='account.cashbox.line',
|
||||
|
@ -261,8 +255,6 @@ class pos_session(osv.osv):
|
|||
'order_ids' : fields.one2many('pos.order', 'session_id', 'Orders'),
|
||||
|
||||
'statement_ids' : fields.one2many('account.bank.statement', 'pos_session_id', 'Bank Statement', readonly=True),
|
||||
'has_opening_control' : fields.function(_compute_controls, string='Has Opening Control', multi='control', type='boolean'),
|
||||
'has_closing_control' : fields.function(_compute_controls, string='Has Closing Control', multi='control', type='boolean'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
@ -372,10 +364,8 @@ class pos_session(osv.osv):
|
|||
def wkf_action_closing_control(self, cr, uid, ids, context=None):
|
||||
for session in self.browse(cr, uid, ids, context=context):
|
||||
for statement in session.statement_ids:
|
||||
if statement.id <> session.cash_register_id.id:
|
||||
if statement.balance_end<>statement.balance_end_real:
|
||||
self.pool.get('account.bank.statement').write(cr, uid,
|
||||
[statement.id], {'balance_end_real': statement.balance_end})
|
||||
if statement != session.cash_register_id and statement.balance_end != statement.balance_end_real:
|
||||
self.pool.get('account.bank.statement').write(cr, uid, [statement.id], {'balance_end_real': statement.balance_end})
|
||||
return self.write(cr, uid, ids, {'state' : 'closing_control', 'stop_at' : time.strftime('%Y-%m-%d %H:%M:%S')}, context=context)
|
||||
|
||||
def wkf_action_close(self, cr, uid, ids, context=None):
|
||||
|
@ -388,7 +378,7 @@ class pos_session(osv.osv):
|
|||
if not self.pool.get('ir.model.access').check_groups(cr, uid, "point_of_sale.group_pos_manager"):
|
||||
raise osv.except_osv( _('Error!'),
|
||||
_("Your ending balance is too different from the theorical cash closing (%.2f), the maximum allowed is: %.2f. You can contact your manager to force it.") % (st.difference, st.journal_id.amount_authorized_diff))
|
||||
if st.difference:
|
||||
if st.difference and st.journal_id.cash_control == True:
|
||||
if st.difference > 0.0:
|
||||
name= _('Point of Sale Profit')
|
||||
account_id = st.journal_id.profit_account_id.id
|
||||
|
@ -406,6 +396,9 @@ class pos_session(osv.osv):
|
|||
'account_id': account_id
|
||||
}, context=context)
|
||||
|
||||
if st.journal_id.type == 'bank':
|
||||
st.write({'balance_end_real' : st.balance_end})
|
||||
|
||||
getattr(st, 'button_confirm_%s' % st.journal_id.type)(context=context)
|
||||
self._confirm_orders(cr, uid, ids, context=context)
|
||||
self.write(cr, uid, ids, {'state' : 'closed'}, context=context)
|
||||
|
@ -731,7 +724,7 @@ class pos_order(osv.osv):
|
|||
'pos_statement_id' : order_id,
|
||||
'journal_id' : journal_id,
|
||||
'type' : 'customer',
|
||||
'ref' : order.name,
|
||||
'ref' : order.session_id.name,
|
||||
})
|
||||
|
||||
statement_line_obj.create(cr, uid, args, context=context)
|
||||
|
@ -1084,6 +1077,7 @@ class account_bank_statement_line(osv.osv):
|
|||
_columns= {
|
||||
'pos_statement_id': fields.many2one('pos.order', ondelete='cascade'),
|
||||
}
|
||||
|
||||
account_bank_statement_line()
|
||||
|
||||
class pos_order_line(osv.osv):
|
||||
|
@ -1284,8 +1278,30 @@ class product_product(osv.osv):
|
|||
help="If you want to sell this product through the point of sale, select the category it belongs to."),
|
||||
'to_weight' : fields.boolean('To Weight', help="This category contains products that should be weighted, mainly used for the self-checkout interface"),
|
||||
}
|
||||
|
||||
def _default_pos_categ_id(self, cr, uid, context=None):
|
||||
proxy = self.pool.get('ir.model.data')
|
||||
|
||||
try:
|
||||
category_id = proxy.get_object_reference(cr, uid, 'point_of_sale', 'categ_others')[1]
|
||||
except ValueError:
|
||||
values = {
|
||||
'name' : 'Others',
|
||||
}
|
||||
category_id = self.pool.get('pos.category').create(cr, uid, values, context=context)
|
||||
values = {
|
||||
'name' : 'categ_others',
|
||||
'model' : 'pos.category',
|
||||
'module' : 'point_of_sale',
|
||||
'res_id' : category_id,
|
||||
}
|
||||
proxy.create(cr, uid, values, context=context)
|
||||
|
||||
return category_id
|
||||
|
||||
_defaults = {
|
||||
'to_weight' : False,
|
||||
'pos_categ_id' : _default_pos_categ_id,
|
||||
}
|
||||
|
||||
def edit_ean(self, cr, uid, ids, context):
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<field name="groups_id" eval="[(4,ref('group_pos_user'))]"/>
|
||||
<field name="ean13">0410200000005</field>
|
||||
</record>
|
||||
<record id="account.cash_journal" model="account.journal">
|
||||
<record id="account.cash_journal" model="account.journal">
|
||||
<field eval="True" name="journal_user"/>
|
||||
</record>
|
||||
<record id="base.user_jsmith" model="res.users">
|
||||
|
@ -36,6 +36,10 @@
|
|||
<field name="groups_id" eval="[(4,ref('group_pos_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record model="pos.config" id="pos_config_main">
|
||||
<field name="journal_ids" eval="[(6, 0, [ref('account.cash_journal'), ref('account.bank_journal')])]" />
|
||||
</record>
|
||||
|
||||
<!-- Resource: pos.category -->
|
||||
|
||||
<record id="beverage" model="pos.category">
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
</field>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="view_pos_order_tree">
|
||||
<field name="name">Sales</field>
|
||||
<field name="name">Orders</field>
|
||||
<field name="model">pos.order</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="POS Orders" colors="blue:state == 'draft';gray:state in ('done','cancel');black:state not in('done','cancel')">
|
||||
|
@ -138,6 +138,7 @@
|
|||
<field name="amount_total" sum="Amount total"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="state"/>
|
||||
<field name="session_id" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -791,8 +792,7 @@
|
|||
<field name="code" />
|
||||
<field name="name" />
|
||||
<field name="type" />
|
||||
<field name="opening_control" />
|
||||
<field name="closing_control" />
|
||||
<field name="cash_control" />
|
||||
</tree>
|
||||
</field>
|
||||
<group string="Material Interfaces" >
|
||||
|
@ -878,10 +878,10 @@
|
|||
<header>
|
||||
<button name="open" type="workflow" string="Validate & Open Session" states="opening_control" class="oe_highlight"/>
|
||||
<button name="cashbox_control" type="workflow" string="End of Session"
|
||||
attrs="{'invisible' : [('has_closing_control', '=', False),('state', '=', 'opened')]}"
|
||||
attrs="{'invisible' : ['|', ('cash_control', '=', False),('state', '!=', 'opened')]}"
|
||||
class="oe_highlight" />
|
||||
<button name="close" type="workflow" string="Validate Closing & Post Entries"
|
||||
attrs="{'invisible' : [('has_closing_control', '=', True),('state', '=', 'opened')]}"
|
||||
attrs="{'invisible' : ['|', ('cash_control', '=', True),('state', '!=', 'opened')]}"
|
||||
class="oe_highlight" />
|
||||
<button name="close" type="workflow" string="Validate Closing & Post Entries" states="closing_control"
|
||||
class="oe_highlight" />
|
||||
|
@ -900,8 +900,7 @@
|
|||
<field name="name" attrs="{'invisible': [('name','=','/')]}" class="oe_inline"/>
|
||||
</h1>
|
||||
<group>
|
||||
<field name="has_opening_control" invisible="1" />
|
||||
<field name="has_closing_control" invisible="1" />
|
||||
<field name="cash_control" invisible="1" />
|
||||
<group>
|
||||
<field name="user_id"/>
|
||||
<field name="config_id" attrs="{'invisible' : [('config_id', '<>', False)]}"/>
|
||||
|
@ -912,26 +911,26 @@
|
|||
</group>
|
||||
<newline/>
|
||||
|
||||
<group string="Opening Cash Control">
|
||||
<group string="Opening Cash Control" attrs="{'invisible' : ['|', ('cash_control', '=', False),('state', '=', 'closed')]}">
|
||||
<field name="opening_details_ids" nolabel="1" colspan="2" attrs="{'readonly' : [('state', 'not in', ('opening_control',))]}">
|
||||
<tree string="Opening Cashbox Lines" editable="bottom">
|
||||
<field name="pieces" readonly="1" />
|
||||
<field name="number_opening" string="Opening Unit Numbers" on_change="on_change_sub_opening(pieces, number_opening)" />
|
||||
<field name="number_opening" on_change="on_change_sub_opening(pieces, number_opening)" />
|
||||
<field name="subtotal_opening" string="Opening Subtotal" sum="Total"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
<group string="Closing Cash Control" attrs="{'invisible': [('state', '=', 'opening_control')]}">
|
||||
<group string="Closing Cash Control" attrs="{'invisible': ['|', ('cash_control', '=', False), ('state', '!=', 'closing_control')]}">
|
||||
<field name="details_ids" nolabel="1" colspan="2">
|
||||
<tree string="Cashbox Lines" editable="bottom">
|
||||
<field name="pieces" readonly="1" />
|
||||
<field name="number_closing"/>
|
||||
<field name="number_closing" />
|
||||
<field name="subtotal_closing"/>
|
||||
</tree>
|
||||
</field>
|
||||
</group>
|
||||
|
||||
<div>
|
||||
<div attrs="{'invisible': [('state', '=', 'closed')]}">
|
||||
<group class="oe_subtotal_footer oe_right">
|
||||
<field name="cash_register_balance_start" readonly="1" string="Opening Balance" class="oe_subtotal_footer_separator"/>
|
||||
<field name="cash_register_total_entry_encoding" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="+ Transactions"/>
|
||||
|
@ -948,7 +947,7 @@
|
|||
</div>
|
||||
|
||||
|
||||
<group class="oe_subtotal_footer oe_right" attrs="{'invisible' : [('state', '=', 'opening_control')]}">
|
||||
<group class="oe_subtotal_footer oe_right" attrs="{'invisible' : [('state', 'in', ('opening_control', 'closed'))]}">
|
||||
<field name="cash_register_balance_end_real" class="oe_subtotal_footer_separator"/>
|
||||
<field name="cash_register_difference" class="oe_subtotal_footer_separator"/>
|
||||
</group>
|
||||
|
|
|
@ -126,14 +126,14 @@
|
|||
<field name="act_from" ref="act_start" />
|
||||
<field name="act_to" ref="act_opening_control" />
|
||||
<field name="signal" eval="False" /> <!-- >start_to_opening_control</field> -->
|
||||
<field name="condition">has_opening_control == True</field>
|
||||
<field name="condition">cash_control == True</field>
|
||||
</record>
|
||||
|
||||
<record model="workflow.transition" id="trans_start_to_open">
|
||||
<field name="act_from" ref="act_start" />
|
||||
<field name="act_to" ref="act_open" />
|
||||
<field name="signal" eval="False" />
|
||||
<field name="condition">has_opening_control == False</field>
|
||||
<field name="condition">cash_control == False</field>
|
||||
</record>
|
||||
<!-- state:opening_control -> signal:open -> state:opened -> signal:cashbox_control -> state:closing_control -> signal:close -> state:close -->
|
||||
|
||||
|
@ -147,14 +147,14 @@
|
|||
<field name="act_from" ref="act_open" />
|
||||
<field name="act_to" ref="act_closing_control" />
|
||||
<field name="signal">cashbox_control</field>
|
||||
<field name="condition">has_closing_control == True</field>
|
||||
<field name="condition">cash_control == True</field>
|
||||
</record>
|
||||
|
||||
<record model="workflow.transition" id="trans_open_to_close">
|
||||
<field name="act_from" ref="act_open" />
|
||||
<field name="act_to" ref="act_close" />
|
||||
<field name="signal">close</field>
|
||||
<field name="condition">has_closing_control == False</field>
|
||||
<field name="condition">cash_control == False</field>
|
||||
</record>
|
||||
|
||||
<record model="workflow.transition" id="trans_closing_control_to_close">
|
||||
|
|
|
@ -65,7 +65,7 @@ class pos_open_statement(osv.osv_memory):
|
|||
statement_id = statement_obj.create(cr, uid, data, context=context)
|
||||
st_ids.append(int(statement_id))
|
||||
|
||||
if journal.opening_control:
|
||||
if journal.cash_control:
|
||||
statement_obj.button_open(cr, uid, [statement_id], context)
|
||||
|
||||
tree_res = mod_obj.get_object_reference(cr, uid, 'point_of_sale', 'view_cash_statement_pos_tree')
|
||||
|
|
|
@ -210,7 +210,7 @@ class project(osv.osv):
|
|||
'complete_name': fields.function(_complete_name, string="Project Name", type='char', size=250),
|
||||
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the project without removing it."),
|
||||
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of Projects."),
|
||||
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.", ondelete="cascade", required=True),
|
||||
'analytic_account_id': fields.many2one('account.analytic.account', 'Contract/Analytic', help="Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc.", ondelete="cascade", required=True),
|
||||
'priority': fields.integer('Sequence', help="Gives the sequence order when displaying the list of projects"),
|
||||
'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members',
|
||||
help="Project's members are users who can have an access to the tasks related to this project.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
|
||||
|
@ -1265,7 +1265,7 @@ class account_analytic_account(osv.osv):
|
|||
_inherit = 'account.analytic.account'
|
||||
_description = 'Analytic Account'
|
||||
_columns = {
|
||||
'use_tasks': fields.boolean('Tasks Mgmt.',help="If check,this contract will be available in the project menu and you will be able to manage tasks or track issues"),
|
||||
'use_tasks': fields.boolean('Tasks',help="If check,this contract will be available in the project menu and you will be able to manage tasks or track issues"),
|
||||
'company_uom_id': fields.related('company_id', 'project_time_mode_id', type='many2one', relation='product.uom'),
|
||||
}
|
||||
|
||||
|
|
|
@ -76,33 +76,29 @@
|
|||
</header>
|
||||
<sheet string="Project">
|
||||
<field name="analytic_account_id" invisible="1" required="0"/>
|
||||
<label for="name" class="oe_edit_only" string="Project Name"/>
|
||||
<h1>
|
||||
<field name="name" string="Project Name"/>
|
||||
</h1>
|
||||
<div attrs="{'invisible': [('alias_domain', '=', False)]}">
|
||||
<field name="alias_id" invisible="1" required="0"/>
|
||||
<label for="alias_name" class="oe_edit_only "/>
|
||||
<field name="alias_name" class="oe_inline" attrs="{'required': [('alias_id', '!=', False)]}"/>@<field name="alias_domain" class="oe_inline"/>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only" string="Project Name"/>
|
||||
<h1>
|
||||
<field name="name" string="Project Name"/>
|
||||
</h1>
|
||||
<div name="options_active">
|
||||
<field name="use_tasks" class="oe_inline"/>
|
||||
<label for="use_tasks"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_right oe_button_box" name="buttons">
|
||||
<button name="%(act_project_project_2_project_task_all)d" string="Tasks"
|
||||
type="action" attrs="{'invisible':[('use_tasks','=', 0)]}"/>
|
||||
<button name="%(base.action_attachment)d" string="Documents" type="action"/>
|
||||
</div>
|
||||
<group>
|
||||
<group>
|
||||
<field name="user_id" string="Project Manager" attrs="{'readonly':[('state','in',['close', 'cancelled'])]}"/>
|
||||
<field name="partner_id" string="Contact" on_change="onchange_partner_id(partner_id)"/>
|
||||
<field name="privacy_visibility"/>
|
||||
<field name="analytic_account_id" invisible="1" required="0"/>
|
||||
</group>
|
||||
<group>
|
||||
<table>
|
||||
<tr name="use_tasks_row">
|
||||
<td><group><field name="use_tasks"/></group></td>
|
||||
<td><button icon="terp-gtk-go-back-rtl" name="%(act_project_project_2_project_task_all)d" string="Tasks" type="action" attrs="{'invisible':[('use_tasks','=', 0)]}"/></td>
|
||||
</tr>
|
||||
<tr name="use_attachment_row">
|
||||
<td/>
|
||||
<td><button icon="terp-gtk-go-back-rtl" class="oe_btn_width" name="%(base.action_attachment)d" string="Documents" type="action"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
<field name="privacy_visibility"/>
|
||||
<field name="analytic_account_id" readonly="1" required="0"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
|
@ -126,6 +122,13 @@
|
|||
</field>
|
||||
</page>
|
||||
<page string="Other Info">
|
||||
<group string="Email Interface" colspan="2">
|
||||
<div attrs="{'invisible': [('alias_domain', '=', False)]}">
|
||||
<field name="alias_id" invisible="1" required="0"/>
|
||||
<label for="alias_name" class="oe_edit_only "/>
|
||||
<field name="alias_name" class="oe_inline" attrs="{'required': [('alias_id', '!=', False)]}"/>@<field name="alias_domain" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group>
|
||||
<group string="Administration">
|
||||
<field name="planned_hours" widget="float_time"/>
|
||||
|
@ -133,11 +136,11 @@
|
|||
<field name="resource_calendar_id"/>
|
||||
</group>
|
||||
<group string="Miscellaneous" name="misc">
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection" required="1"/>
|
||||
<field name="parent_id" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
|
||||
<field name="priority"/>
|
||||
<field name="active" attrs="{'invisible':[('state','in',['open', 'pending', 'template'])]}"/>
|
||||
<field name="currency_id" groups="base.group_multi_company" required="1"/>
|
||||
<field name="parent_id" domain="[('id','!=',analytic_account_id)]" context="{'current_model': 'project.project'}"/>
|
||||
<field name="company_id" groups="base.group_multi_company" widget="selection" required="1"/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
|
@ -245,8 +248,8 @@
|
|||
<a t-if="record.use_tasks.raw_value" name="%(act_project_project_2_project_task_all)d" type="action"> <field name="task_count"/> Tasks</a>
|
||||
</div>
|
||||
<table>
|
||||
<tr t-if="record.date.raw_value">
|
||||
<th class="oe_kanban_project_fields oe_kanban_project_deadline">Deadline</th>
|
||||
<tr class="oe_kanban_project_fields oe_kanban_project_deadline" t-if="record.date.raw_value">
|
||||
<th>Deadline</th>
|
||||
<td><field name="date"/></td>
|
||||
</tr>
|
||||
<tr class="oe_kanban_project_fields oe_kanban_project_progress">
|
||||
|
@ -312,7 +315,7 @@
|
|||
<field name="search_view_id" ref="view_project_project_filter"/>
|
||||
<field name="context">{}</field>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_form_nocontent_create">
|
||||
<p class="oe_view_nocontent_create">
|
||||
Click to start a new project.
|
||||
</p>
|
||||
<p>
|
||||
|
@ -688,11 +691,9 @@
|
|||
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
||||
<field eval="18" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//separator[@name="project_sep"]' position='replace'>
|
||||
<separator colspan="4" string="Project Management" name="project_sep"/> <!-- removal of invisible attribute -->
|
||||
</xpath>
|
||||
<xpath expr='//separator[@name="project_sep"]' position='after'>
|
||||
<xpath expr='//div[@name="project"]' position='inside'>
|
||||
<field name="use_tasks"/>
|
||||
<label for="use_tasks"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -569,7 +569,7 @@ class account_analytic_account(osv.osv):
|
|||
_description = 'Analytic Account'
|
||||
|
||||
_columns = {
|
||||
'use_issues' : fields.boolean('Issues Tracking', help="Check this field if this project manages issues"),
|
||||
'use_issues' : fields.boolean('Issues', help="Check this field if this project manages issues"),
|
||||
}
|
||||
|
||||
def on_change_template(self, cr, uid, ids, template_id, context=None):
|
||||
|
|
|
@ -355,11 +355,12 @@
|
|||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//tr[@name="use_tasks_row"]' position='after'>
|
||||
<tr>
|
||||
<td><group><field name="use_issues"/></group></td>
|
||||
<td><button icon="terp-gtk-go-back-rtl" name="%(act_project_project_2_project_issue_all)d" string="Issues" type="action" attrs="{'invisible':[('use_issues','=', 0)]}"/></td>
|
||||
</tr>
|
||||
<xpath expr='//div[@name="options_active"]' position='inside'>
|
||||
<field name="use_issues" class="oe_inline"/>
|
||||
<label for="use_issues"/>
|
||||
</xpath>
|
||||
<xpath expr='//div[@name="buttons"]' position='inside'>
|
||||
<button name="%(act_project_project_2_project_issue_all)d" string="Issues" type="action" attrs="{'invisible':[('use_issues','=', 0)]}"/>
|
||||
</xpath>
|
||||
<field name="priority" position="before">
|
||||
<field name="project_escalation_id"/>
|
||||
|
@ -382,7 +383,7 @@
|
|||
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]" position="inside">
|
||||
<a t-if="record.use_issues.raw_value"
|
||||
name="%(act_project_project_2_project_issue_all)d" type="action">
|
||||
Issues(<field name="issue_count"/>)</a>
|
||||
<field name="issue_count"/> Issues</a>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -393,11 +394,9 @@
|
|||
<field name="inherit_id" ref="project.analytic_account_inherited_form"/>
|
||||
<field eval="18" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//separator[@name="project_sep"]' position='replace'>
|
||||
<separator colspan="4" string="Project Management" name="project_sep"/> <!-- removal of invisible attribute -->
|
||||
</xpath>
|
||||
<xpath expr='//separator[@name="project_sep"]' position='after'>
|
||||
<xpath expr='//div[@name="project"]' position='inside'>
|
||||
<field name="use_issues"/>
|
||||
<label for="use_issues"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -273,9 +273,9 @@ class account_analytic_account(osv.osv):
|
|||
_inherit = 'account.analytic.account'
|
||||
_description = 'Analytic Account'
|
||||
_columns = {
|
||||
'use_phases': fields.boolean('Phases Planing', help="Check this field if project manages phases"),
|
||||
'use_phases': fields.boolean('Phases', help="Check this field if you plan to use phase-based scheduling"),
|
||||
}
|
||||
|
||||
|
||||
def on_change_template(self, cr, uid, ids, template_id, context=None):
|
||||
res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context)
|
||||
if template_id and 'value' in res:
|
||||
|
|
|
@ -96,11 +96,14 @@
|
|||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//tr[@name="use_tasks_row"]' position='after'>
|
||||
<tr>
|
||||
<td><group><field name="use_phases"/></group></td>
|
||||
<td><button icon="terp-gtk-go-back-rtl" name="%(act_project_phases)d" string="Phases" type="action" attrs="{'invisible':[('use_phases','=', 0)]}"/></td>
|
||||
</tr>
|
||||
<xpath expr="//div[@name='options_active']" position='inside'>
|
||||
<field name="use_phases" class="oe_inline"/>
|
||||
<label for="use_phases"/>
|
||||
</xpath>
|
||||
<xpath expr="//div[@name='buttons']" position='inside'>
|
||||
<button icon="terp-gtk-go-back-rtl" name="%(act_project_phases)d"
|
||||
string="Phases" type="action"
|
||||
attrs="{'invisible':[('use_phases','=', 0)]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -347,11 +350,9 @@
|
|||
<field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
|
||||
<field eval="18" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//separator[@name="project_sep"]' position='replace'>
|
||||
<separator name="project_sep" string="Project Management" colspan="4"/> <!-- removal of invisible attribute -->
|
||||
</xpath>
|
||||
<xpath expr='//separator[@name="project_sep"]' position='after'>
|
||||
<xpath expr='//div[@name="project"]' position='inside'>
|
||||
<field name="use_phases"/>
|
||||
<label for="use_phases"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -48,7 +48,7 @@ with the effect of creating, editing and deleting either ways.
|
|||
'test/work_timesheet.yml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'auto_install': True,
|
||||
'certificate': '0075123647453',
|
||||
}
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -28,33 +28,6 @@ from tools.translate import _
|
|||
|
||||
class project_project(osv.osv):
|
||||
_inherit = 'project.project'
|
||||
|
||||
def _to_invoice(self, cr, uid, ids, field_name, arg, context=None):
|
||||
account_analytic_line = self.pool.get("account.analytic.line")
|
||||
res = {}
|
||||
for project in self.browse(cr,uid,ids,context=context):
|
||||
line_ids = account_analytic_line.search(cr, uid, [('account_id', '=', project.analytic_account_id.id), ('to_invoice','=',1), ('invoice_id','=',False)])
|
||||
lines = account_analytic_line.browse(cr, uid, line_ids, context)
|
||||
res[project.id] = {
|
||||
'amount_to_invoice': sum(line.amount for line in lines),
|
||||
'time_to_invoice': sum(line.unit_amount for line in lines),
|
||||
}
|
||||
return res
|
||||
|
||||
def _timesheet_count(self, cr, uid, ids, field_name, arg, context=None):
|
||||
account_analytic_line = self.pool.get('account.analytic.line')
|
||||
res = {}
|
||||
for project in self.browse(cr, uid, ids, context):
|
||||
line_ids = account_analytic_line.search(cr, uid, [('account_id', '=', project.analytic_account_id.id)])
|
||||
res[project.id] = len(line_ids)
|
||||
return res
|
||||
|
||||
_columns = {
|
||||
'amount_to_invoice': fields.function(_to_invoice, string="Amount to Invoice", multi="sums"),
|
||||
'time_to_invoice': fields.function(_to_invoice, string="Time to Invoice", multi="sums"),
|
||||
'timesheet_count': fields.function(_timesheet_count, type='integer', string="Issue"),
|
||||
}
|
||||
|
||||
def onchange_partner_id(self, cr, uid, ids, part=False, context=None):
|
||||
res = super(project_project, self).onchange_partner_id(cr, uid, ids, part, context)
|
||||
if part and res and ('value' in res):
|
||||
|
@ -66,6 +39,31 @@ class project_project(osv.osv):
|
|||
res['value'].update({'to_invoice': factor_id})
|
||||
return res
|
||||
|
||||
_defaults = {
|
||||
'use_timesheets': True,
|
||||
}
|
||||
|
||||
def open_timesheets(self, cr, uid, ids, context=None):
|
||||
""" open Timesheets view """
|
||||
project = self.browse(cr, uid, ids[0], context)
|
||||
try:
|
||||
journal_id = self.pool.get('ir.model.data').get_object(cr, uid, 'hr_timesheet', 'analytic_journal').id
|
||||
except ValueError:
|
||||
journal_id = False
|
||||
view_context = {
|
||||
'search_default_account_id': [project.analytic_account_id.id],
|
||||
'default_account_id': project.analytic_account_id.id,
|
||||
'default_journal_id': journal_id,
|
||||
}
|
||||
return {
|
||||
'type': 'ir.actions.act_window',
|
||||
'name': _('Bill Tasks Works'),
|
||||
'res_model': 'account.analytic.line',
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'context': view_context,
|
||||
'nodestroy': True,
|
||||
}
|
||||
project_project()
|
||||
|
||||
class project_work(osv.osv):
|
||||
|
|
|
@ -9,33 +9,29 @@
|
|||
<field name="arch" type="xml">
|
||||
<field name="use_tasks" position="after">
|
||||
<field name="use_timesheets"/>
|
||||
<field name="timesheet_count"/>
|
||||
<field name="hours_quantity"/>
|
||||
<field name="currency_id"/>
|
||||
<field name="partner_id"/>
|
||||
</field>
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_list')]" position="inside">
|
||||
<a t-if="record.use_timesheets.raw_value"
|
||||
name="open_timesheets" type="object">Timesheets(<field name="timesheet_count"/>)</a>
|
||||
</xpath>
|
||||
<xpath expr="//div[contains(@class, 'oe_kanban_project_deadline')]" position="before">
|
||||
<div class="oe_kanban_project_fields oe_kanban_project_invoice" t-if="record.partner_id.raw_value">
|
||||
<div>Amount to invoice</div>
|
||||
<div><field name="amount_to_invoice"/> <t t-esc="record.currency_id.raw_value[1].split(' ')[1][1]"/></div>
|
||||
<div>Time to Invoice</div>
|
||||
<div><field name="time_to_invoice"/> <field name="company_uom_id"/></div>
|
||||
</div>
|
||||
name="open_timesheets" type="object"><field name="hours_quantity"/> Timesheets</a>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="project_invoice_form_cutomer" model="ir.ui.view">
|
||||
<field name="name">Inherit project form : Customer</field>
|
||||
<record id="project_invoice_form" model="ir.ui.view">
|
||||
<field name="name">Inherit project form : Invoicing Data</field>
|
||||
<field name="model">project.project</field>
|
||||
<field name="inherit_id" ref="analytic_contract_project.project_invoice_form"/>
|
||||
<field name="inherit_id" ref="project.edit_project"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="partner_id" position="replace">
|
||||
<field name="partner_id" on_change="onchange_partner_id(partner_id)" string="Contact" attrs="{'required':[('to_invoice','!=',False)]}"/>
|
||||
</field>
|
||||
<xpath expr='//div[@name="options_active"]' position='inside'>
|
||||
<field name="use_timesheets" class="oe_inline"/>
|
||||
<label for="use_timesheets"/>
|
||||
</xpath>
|
||||
<xpath expr='//div[@name="buttons"]' position="inside">
|
||||
<button name="open_timesheets" string="Timesheets" type="object" attrs="{'invisible':[('use_timesheets','=', 0)]}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
@ -45,7 +41,6 @@
|
|||
<field name="inherit_id" ref="project.view_project_project_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr='//filter[@string="Project(s) Manager"]' position='after'>
|
||||
<separator/>
|
||||
<filter icon="terp-camera_test" string="Billable" domain="[('to_invoice','!=', False)]" help="Billable Project"/>
|
||||
</xpath>
|
||||
</field>
|
||||
|
@ -95,7 +90,7 @@
|
|||
Click to add a work to invoice.
|
||||
</p><p>
|
||||
You will find here all works made on tasks that you can
|
||||
invoice.
|
||||
invoice.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -259,8 +259,8 @@
|
|||
</div>
|
||||
</form>
|
||||
<tree string="Sales Order Lines" editable="bottom">
|
||||
<field name="sequence" widget="handle"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="sequence" invisible="1"/>
|
||||
<field name="delay" invisible="1"/>
|
||||
<field name="tax_id" invisible="1"/>
|
||||
<field name="type" invisible="1"/>
|
||||
|
|
Loading…
Reference in New Issue