[MERGE]: Merge with lp:openobject-addons
bzr revid: aag@tinyerp.com-20110929051822-ryuc49nnl99ai910
This commit is contained in:
commit
88fe247a3e
|
@ -1256,7 +1256,7 @@ class account_move(osv.osv):
|
|||
context = {}
|
||||
c = context.copy()
|
||||
c['novalidate'] = True
|
||||
result = super(osv.osv, self).write(cr, uid, ids, vals, c)
|
||||
result = super(account_move, self).write(cr, uid, ids, vals, c)
|
||||
self.validate(cr, uid, ids, context=context)
|
||||
return result
|
||||
|
||||
|
|
|
@ -1273,7 +1273,7 @@ class account_move_line(osv.osv):
|
|||
'user_id': uid
|
||||
})]
|
||||
|
||||
result = super(osv.osv, self).create(cr, uid, vals, context=context)
|
||||
result = super(account_move_line, self).create(cr, uid, vals, context=context)
|
||||
# CREATE Taxes
|
||||
if vals.get('account_tax_id', False):
|
||||
tax_id = tax_obj.browse(cr, uid, vals['account_tax_id'])
|
||||
|
|
|
@ -32,7 +32,7 @@ class res_company(osv.osv):
|
|||
string="Reserve and Profit/Loss Account",
|
||||
view_load=True,
|
||||
domain="[('type', '=', 'other')]",
|
||||
help="This Account is used for transferring Profit/Loss(If It is Profit: Amount will be added, Loss : Amount will be deducted.), Which is calculated from Profit & Loss Report"),
|
||||
help="This account is used for transferring Profit/Loss (If It is Profit: Amount will be added, Loss : Amount will be deducted.), as calculated in Profit & Loss Report"),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
<record model="account.account.type" id="conf_account_type_equity">
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">asset</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
<record id="account_type_cash_equity" model="account.account.type">
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">asset</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
<record id="account_type_cash_moves" model="account.account.type">
|
||||
|
|
|
@ -7,24 +7,24 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2010-12-12 00:12+0000\n"
|
||||
"Last-Translator: qdp (OpenERP) <qdp-launchpad@tinyerp.com>\n"
|
||||
"PO-Revision-Date: 2011-09-28 14:57+0000\n"
|
||||
"Last-Translator: Raiko Pajur <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-17 04:56+0000\n"
|
||||
"X-Generator: Launchpad (build 13955)\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-29 04:36+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: account
|
||||
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
|
||||
msgid "System payment"
|
||||
msgstr ""
|
||||
msgstr "Süsteemi maksed"
|
||||
|
||||
#. module: account
|
||||
#: view:account.journal:0
|
||||
msgid "Other Configuration"
|
||||
msgstr ""
|
||||
msgstr "Muud konfiguratsioonid"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/wizard/account_open_closed_fiscalyear.py:40
|
||||
|
@ -39,6 +39,8 @@ msgid ""
|
|||
"You cannot remove/deactivate an account which is set as a property to any "
|
||||
"Partner."
|
||||
msgstr ""
|
||||
"Sa ei saa kustutada / desaktiveerida kontot, mis on määratud mis tahes "
|
||||
"\"Partner\" varaks."
|
||||
|
||||
#. module: account
|
||||
#: view:account.move.reconcile:0
|
||||
|
@ -48,7 +50,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.installer.modules,account_voucher:0
|
||||
msgid "Voucher Management"
|
||||
msgstr ""
|
||||
msgstr "Voucheri juhtimine"
|
||||
|
||||
#. module: account
|
||||
#: view:account.account:0
|
||||
|
@ -133,13 +135,13 @@ msgstr "Raamatupidamise kirjed-"
|
|||
#: code:addons/account/account.py:1291
|
||||
#, python-format
|
||||
msgid "You can not delete posted movement: \"%s\"!"
|
||||
msgstr ""
|
||||
msgstr "Sa ei saa kustutada postitatud liikumist: \"%s\"!"
|
||||
|
||||
#. module: account
|
||||
#: report:account.invoice:0
|
||||
#: field:account.invoice.line,origin:0
|
||||
msgid "Origin"
|
||||
msgstr "Päritolu"
|
||||
msgstr "Allikas"
|
||||
|
||||
#. module: account
|
||||
#: view:account.account:0
|
||||
|
@ -164,7 +166,7 @@ msgstr "Viide"
|
|||
#. module: account
|
||||
#: view:account.open.closed.fiscalyear:0
|
||||
msgid "Choose Fiscal Year "
|
||||
msgstr ""
|
||||
msgstr "Vali eelarveaasta "
|
||||
|
||||
#. module: account
|
||||
#: help:account.payment.term,active:0
|
||||
|
@ -172,12 +174,14 @@ msgid ""
|
|||
"If the active field is set to False, it will allow you to hide the payment "
|
||||
"term without removing it."
|
||||
msgstr ""
|
||||
"Kui aktiivne ala on väärne ( False ), siis see võimaldab teil peita/varjata "
|
||||
"maksetähtaeg seda kustutamata."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/invoice.py:1421
|
||||
#, python-format
|
||||
msgid "Warning!"
|
||||
msgstr ""
|
||||
msgstr "Hoiatus!"
|
||||
|
||||
#. module: account
|
||||
#: field:account.fiscal.position.account,account_src_id:0
|
||||
|
@ -204,7 +208,7 @@ msgstr "Negatiivne"
|
|||
#: code:addons/account/wizard/account_move_journal.py:95
|
||||
#, python-format
|
||||
msgid "Journal: %s"
|
||||
msgstr ""
|
||||
msgstr "Päevik: %s"
|
||||
|
||||
#. module: account
|
||||
#: help:account.analytic.journal,type:0
|
||||
|
@ -231,7 +235,7 @@ msgstr "konto.maks"
|
|||
msgid ""
|
||||
"No period defined for this date: %s !\n"
|
||||
"Please create a fiscal year."
|
||||
msgstr ""
|
||||
msgstr "Periood ei ole defineeritud sellele kuupäevale: %s"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_move_line_reconcile_select
|
||||
|
@ -259,7 +263,7 @@ msgstr ""
|
|||
#: code:addons/account/invoice.py:1210
|
||||
#, python-format
|
||||
msgid "Invoice '%s' is paid partially: %s%s of %s%s (%s%s remaining)"
|
||||
msgstr ""
|
||||
msgstr "Arve '%s' on makstud osaliselt: %s%s on tasutud %s%s (%s%s maksmata)"
|
||||
|
||||
#. module: account
|
||||
#: model:process.transition,note:account.process_transition_supplierentriesreconcile0
|
||||
|
@ -280,7 +284,7 @@ msgstr "Teie ei saa lisada/muuta suletud päeviku kirjeid."
|
|||
#. module: account
|
||||
#: view:account.bank.statement:0
|
||||
msgid "Calculated Balance"
|
||||
msgstr ""
|
||||
msgstr "Välja arvutatud tasakaal (Calculated Balance)"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
|
||||
|
@ -352,7 +356,7 @@ msgstr "Ostu omadused"
|
|||
#: view:account.installer:0
|
||||
#: view:account.installer.modules:0
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
msgstr "Seadista"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.entries.report,month:0
|
||||
|
@ -361,7 +365,7 @@ msgstr ""
|
|||
#: selection:report.account.sales,month:0
|
||||
#: selection:report.account_type.sales,month:0
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
msgstr "Juuni"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,help:account.action_account_moves_bank
|
||||
|
@ -395,12 +399,12 @@ msgstr ""
|
|||
#. module: account
|
||||
#: selection:account.journal,type:0
|
||||
msgid "Opening/Closing Situation"
|
||||
msgstr ""
|
||||
msgstr "Avamise/Sulgemise situatsioon"
|
||||
|
||||
#. module: account
|
||||
#: help:account.journal,currency:0
|
||||
msgid "The currency used to enter statement"
|
||||
msgstr ""
|
||||
msgstr "Valuuta väite sisestamiseks"
|
||||
|
||||
#. module: account
|
||||
#: field:account.open.closed.fiscalyear,fyear_id:0
|
||||
|
@ -498,17 +502,17 @@ msgstr "Päevik"
|
|||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_invoice_confirm
|
||||
msgid "Confirm the selected invoices"
|
||||
msgstr ""
|
||||
msgstr "Kinnita valitud arved"
|
||||
|
||||
#. module: account
|
||||
#: field:account.addtmpl.wizard,cparent_id:0
|
||||
msgid "Parent target"
|
||||
msgstr ""
|
||||
msgstr "Lapsevanema sihtmärk"
|
||||
|
||||
#. module: account
|
||||
#: field:account.bank.statement,account_id:0
|
||||
msgid "Account used in this journal"
|
||||
msgstr ""
|
||||
msgstr "Konto kasutatud selles arveraamatus"
|
||||
|
||||
#. module: account
|
||||
#: help:account.aged.trial.balance,chart_account_id:0
|
||||
|
@ -527,7 +531,7 @@ msgstr ""
|
|||
#: help:account.report.general.ledger,chart_account_id:0
|
||||
#: help:account.vat.declaration,chart_account_id:0
|
||||
msgid "Select Charts of Accounts"
|
||||
msgstr ""
|
||||
msgstr "Vali Kontode graafikud"
|
||||
|
||||
#. module: account
|
||||
#: view:product.product:0
|
||||
|
@ -537,7 +541,7 @@ msgstr "Ostumaksud"
|
|||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_invoice_refund
|
||||
msgid "Invoice Refund"
|
||||
msgstr ""
|
||||
msgstr "Arveraamatu tagasimakse"
|
||||
|
||||
#. module: account
|
||||
#: report:account.overdue:0
|
||||
|
@ -560,7 +564,7 @@ msgstr ""
|
|||
#: field:account.fiscal.position,tax_ids:0
|
||||
#: field:account.fiscal.position.template,tax_ids:0
|
||||
msgid "Tax Mapping"
|
||||
msgstr ""
|
||||
msgstr "Maksude kaardistamine"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_account_fiscalyear_close_state
|
||||
|
@ -571,7 +575,7 @@ msgstr "Sule majandusaasta"
|
|||
#. module: account
|
||||
#: model:process.transition,note:account.process_transition_confirmstatementfromdraft0
|
||||
msgid "The accountant confirms the statement."
|
||||
msgstr ""
|
||||
msgstr "Raamatupidaja kinnitab selle avalduse"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.balance.report,display_account:0
|
||||
|
@ -587,12 +591,12 @@ msgstr "Kõik"
|
|||
#. module: account
|
||||
#: field:account.invoice.report,address_invoice_id:0
|
||||
msgid "Invoice Address Name"
|
||||
msgstr ""
|
||||
msgstr "Arveraamatu Aadressi Nimi"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.installer,period:0
|
||||
msgid "3 Monthly"
|
||||
msgstr ""
|
||||
msgstr "Iga 3 kuu tagant"
|
||||
|
||||
#. module: account
|
||||
#: view:account.unreconcile.reconcile:0
|
||||
|
@ -604,7 +608,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:analytic.entries.report:0
|
||||
msgid " 30 Days "
|
||||
msgstr ""
|
||||
msgstr " 30 päeva "
|
||||
|
||||
#. module: account
|
||||
#: field:ir.sequence,fiscal_ids:0
|
||||
|
@ -624,7 +628,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: sql_constraint:account.sequence.fiscalyear:0
|
||||
msgid "Main Sequence must be different from current !"
|
||||
msgstr ""
|
||||
msgstr "Pea"
|
||||
|
||||
#. module: account
|
||||
#: field:account.invoice.tax,tax_amount:0
|
||||
|
@ -652,12 +656,12 @@ msgstr "Sulge periood"
|
|||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_common_partner_report
|
||||
msgid "Account Common Partner Report"
|
||||
msgstr ""
|
||||
msgstr "Konto tava \"Partner\" aruanne"
|
||||
|
||||
#. module: account
|
||||
#: field:account.fiscalyear.close,period_id:0
|
||||
msgid "Opening Entries Period"
|
||||
msgstr ""
|
||||
msgstr "Avatud sissekanete periood"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_journal_period
|
||||
|
@ -791,7 +795,7 @@ msgstr "J.C./liiguta nime"
|
|||
#: selection:report.account.sales,month:0
|
||||
#: selection:report.account_type.sales,month:0
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
msgstr "September"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.subscription,period_type:0
|
||||
|
@ -802,7 +806,7 @@ msgstr "päevad"
|
|||
#: help:account.account.template,nocreate:0
|
||||
msgid ""
|
||||
"If checked, the new chart of accounts will not contain this by default."
|
||||
msgstr ""
|
||||
msgstr "Kui märgitud, siis uus kontode graafik ei sisalda seda puudujääki."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/wizard/account_invoice_refund.py:102
|
||||
|
@ -825,7 +829,7 @@ msgstr "Arvutus"
|
|||
#. module: account
|
||||
#: view:account.move.line:0
|
||||
msgid "Next Partner to reconcile"
|
||||
msgstr ""
|
||||
msgstr "Kooskõlastama järgmise \"Partner\"-iga"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_move_line.py:1191
|
||||
|
@ -834,12 +838,14 @@ msgid ""
|
|||
"You can not do this modification on a confirmed entry ! Please note that you "
|
||||
"can just change some non important fields !"
|
||||
msgstr ""
|
||||
"Teie ei saa teha see muudatus kinnitatud kirjel ! Teie saate muuta ainult "
|
||||
"mõned vähetähtsad väljad !"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice.report:0
|
||||
#: field:account.invoice.report,delay_to_pay:0
|
||||
msgid "Avg. Delay To Pay"
|
||||
msgstr ""
|
||||
msgstr "Keskmine viivitus maksete tegemisel"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_account_tax_chart
|
||||
|
@ -862,7 +868,7 @@ msgstr "Tähtaeg"
|
|||
#: view:account.invoice.report:0
|
||||
#: field:account.invoice.report,price_total_tax:0
|
||||
msgid "Total With Tax"
|
||||
msgstr ""
|
||||
msgstr "Kokku koos maksudega"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice:0
|
||||
|
@ -870,7 +876,7 @@ msgstr ""
|
|||
#: view:validate.account.move:0
|
||||
#: view:validate.account.move.lines:0
|
||||
msgid "Approve"
|
||||
msgstr ""
|
||||
msgstr "Nõustu"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice:0
|
||||
|
@ -925,7 +931,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.analytic.line:0
|
||||
msgid "Purchases"
|
||||
msgstr ""
|
||||
msgstr "Ostud"
|
||||
|
||||
#. module: account
|
||||
#: field:account.model,lines_id:0
|
||||
|
@ -972,7 +978,7 @@ msgstr "Partneri bilanss"
|
|||
#. module: account
|
||||
#: field:account.bank.accounts.wizard,acc_name:0
|
||||
msgid "Account Name."
|
||||
msgstr ""
|
||||
msgstr "Konto nimi."
|
||||
|
||||
#. module: account
|
||||
#: field:account.chart.template,property_reserve_and_surplus_account:0
|
||||
|
@ -983,7 +989,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:report.account.receivable,name:0
|
||||
msgid "Week of Year"
|
||||
msgstr ""
|
||||
msgstr "Nädal"
|
||||
|
||||
#. module: account
|
||||
#: field:account.bs.report,display_type:0
|
||||
|
@ -995,12 +1001,12 @@ msgstr "Rõhtpaigutus"
|
|||
#. module: account
|
||||
#: view:board.board:0
|
||||
msgid "Customer Invoices to Approve"
|
||||
msgstr ""
|
||||
msgstr "Kliendi arved kinnitamiseks"
|
||||
|
||||
#. module: account
|
||||
#: help:account.fiscalyear.close,fy_id:0
|
||||
msgid "Select a Fiscal year to close"
|
||||
msgstr ""
|
||||
msgstr "Vali eelarve aasta mida sulgeda"
|
||||
|
||||
#. module: account
|
||||
#: help:account.account,user_type:0
|
||||
|
@ -1018,13 +1024,13 @@ msgstr ""
|
|||
#. module: account
|
||||
#: report:account.partner.balance:0
|
||||
msgid "In dispute"
|
||||
msgstr ""
|
||||
msgstr "Vaidlustatav"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_view_bank_statement_tree
|
||||
#: model:ir.ui.menu,name:account.journal_cash_move_lines
|
||||
msgid "Cash Registers"
|
||||
msgstr ""
|
||||
msgstr "Raha register"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.account.type,report_type:0
|
||||
|
@ -1042,7 +1048,7 @@ msgstr "-"
|
|||
#. module: account
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
msgstr "Juhataja"
|
||||
|
||||
#. module: account
|
||||
#: view:account.subscription.generate:0
|
||||
|
@ -1052,7 +1058,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: selection:account.bank.accounts.wizard,account_type:0
|
||||
msgid "Bank"
|
||||
msgstr ""
|
||||
msgstr "Pank"
|
||||
|
||||
#. module: account
|
||||
#: field:account.period,date_start:0
|
||||
|
@ -1062,13 +1068,13 @@ msgstr "Perioodi algus"
|
|||
#. module: account
|
||||
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
|
||||
msgid "Confirm statement"
|
||||
msgstr ""
|
||||
msgstr "Kinnita avaldus"
|
||||
|
||||
#. module: account
|
||||
#: field:account.fiscal.position.tax,tax_dest_id:0
|
||||
#: field:account.fiscal.position.tax.template,tax_dest_id:0
|
||||
msgid "Replacement Tax"
|
||||
msgstr ""
|
||||
msgstr "Vahetus maks"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.move.line,centralisation:0
|
||||
|
@ -1087,12 +1093,12 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.invoice.cancel:0
|
||||
msgid "Cancel Invoices"
|
||||
msgstr ""
|
||||
msgstr "Peata arved"
|
||||
|
||||
#. module: account
|
||||
#: view:account.unreconcile.reconcile:0
|
||||
msgid "Unreconciliation transactions"
|
||||
msgstr ""
|
||||
msgstr "Mittesobivad tehingud"
|
||||
|
||||
#. module: account
|
||||
#: field:account.invoice.tax,tax_code_id:0
|
||||
|
@ -1110,7 +1116,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: help:account.move.line,move_id:0
|
||||
msgid "The move of this entry line."
|
||||
msgstr ""
|
||||
msgstr "Selle rea liigutus."
|
||||
|
||||
#. module: account
|
||||
#: field:account.move.line.reconcile,trans_nbr:0
|
||||
|
@ -1174,7 +1180,7 @@ msgstr "Konto"
|
|||
#. module: account
|
||||
#: field:account.tax,include_base_amount:0
|
||||
msgid "Included in base amount"
|
||||
msgstr ""
|
||||
msgstr "Lisa baas osa"
|
||||
|
||||
#. module: account
|
||||
#: view:account.entries.report:0
|
||||
|
@ -1186,7 +1192,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.account,level:0
|
||||
msgid "Level"
|
||||
msgstr ""
|
||||
msgstr "Tase"
|
||||
|
||||
#. module: account
|
||||
#: report:account.invoice:0
|
||||
|
@ -1207,7 +1213,7 @@ msgstr "Maksud"
|
|||
#: code:addons/account/wizard/account_report_common.py:120
|
||||
#, python-format
|
||||
msgid "Select a starting and an ending period"
|
||||
msgstr ""
|
||||
msgstr "Vali algus ja lõpp periood"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_account_template
|
||||
|
@ -1217,12 +1223,12 @@ msgstr "Mallid kontodele"
|
|||
#. module: account
|
||||
#: view:account.tax.code.template:0
|
||||
msgid "Search tax template"
|
||||
msgstr ""
|
||||
msgstr "Otsi maksu templati"
|
||||
|
||||
#. module: account
|
||||
#: report:account.invoice:0
|
||||
msgid "Your Reference"
|
||||
msgstr ""
|
||||
msgstr "Teie viide"
|
||||
|
||||
#. module: account
|
||||
#: view:account.move.reconcile:0
|
||||
|
@ -1246,7 +1252,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.invoice:0
|
||||
msgid "Reset to Draft"
|
||||
msgstr ""
|
||||
msgstr "Lähtesta mustandiks"
|
||||
|
||||
#. module: account
|
||||
#: view:wizard.multi.charts.accounts:0
|
||||
|
@ -1268,7 +1274,7 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:account.action_partner_all
|
||||
#: model:ir.ui.menu,name:account.next_id_22
|
||||
msgid "Partners"
|
||||
msgstr ""
|
||||
msgstr "Partnerid"
|
||||
|
||||
#. module: account
|
||||
#: view:account.bank.statement:0
|
||||
|
@ -1323,7 +1329,7 @@ msgstr "Bilanss pole 0"
|
|||
#. module: account
|
||||
#: view:account.tax:0
|
||||
msgid "Search Taxes"
|
||||
msgstr ""
|
||||
msgstr "Otsi maksu"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_analytic_cost_ledger
|
||||
|
@ -1338,7 +1344,7 @@ msgstr "Loo sissekanded"
|
|||
#. module: account
|
||||
#: field:account.entries.report,nbr:0
|
||||
msgid "# of Items"
|
||||
msgstr ""
|
||||
msgstr "# detaile"
|
||||
|
||||
#. module: account
|
||||
#: field:account.automatic.reconcile,max_amount:0
|
||||
|
@ -1353,7 +1359,7 @@ msgstr "Arvuta maksud"
|
|||
#. module: account
|
||||
#: field:wizard.multi.charts.accounts,code_digits:0
|
||||
msgid "# of Digits"
|
||||
msgstr ""
|
||||
msgstr "# numbrit"
|
||||
|
||||
#. module: account
|
||||
#: field:account.journal,entry_posted:0
|
||||
|
@ -1364,7 +1370,7 @@ msgstr ""
|
|||
#: view:account.invoice.report:0
|
||||
#: field:account.invoice.report,price_total:0
|
||||
msgid "Total Without Tax"
|
||||
msgstr ""
|
||||
msgstr "Kokku ilma maksudeta"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,help:account.action_move_journal_line
|
||||
|
@ -1378,7 +1384,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.entries.report:0
|
||||
msgid "# of Entries "
|
||||
msgstr ""
|
||||
msgstr "# sisestusi "
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model,name:account.model_temp_range
|
||||
|
@ -1435,7 +1441,7 @@ msgstr "Mall finantspositsioonile"
|
|||
#. module: account
|
||||
#: model:account.tax.code,name:account.account_tax_code_0
|
||||
msgid "Tax Code Test"
|
||||
msgstr ""
|
||||
msgstr "Maksu koodi test"
|
||||
|
||||
#. module: account
|
||||
#: field:account.automatic.reconcile,reconciled:0
|
||||
|
@ -1445,22 +1451,22 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.journal.view,columns_id:0
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
msgstr "Veerud"
|
||||
|
||||
#. module: account
|
||||
#: report:account.overdue:0
|
||||
msgid "."
|
||||
msgstr ""
|
||||
msgstr "."
|
||||
|
||||
#. module: account
|
||||
#: view:account.analytic.cost.ledger.journal.report:0
|
||||
msgid "and Journals"
|
||||
msgstr ""
|
||||
msgstr "ja arveraamatud"
|
||||
|
||||
#. module: account
|
||||
#: field:account.journal,groups_id:0
|
||||
msgid "Groups"
|
||||
msgstr ""
|
||||
msgstr "Grupid"
|
||||
|
||||
#. module: account
|
||||
#: field:account.invoice,amount_untaxed:0
|
||||
|
@ -1471,18 +1477,20 @@ msgstr "Maksuvaba"
|
|||
#. module: account
|
||||
#: view:account.partner.reconcile.process:0
|
||||
msgid "Go to next partner"
|
||||
msgstr ""
|
||||
msgstr "Mine järgmise \"Partner\"-ile"
|
||||
|
||||
#. module: account
|
||||
#: view:account.bank.statement:0
|
||||
msgid "Search Bank Statements"
|
||||
msgstr ""
|
||||
msgstr "Otsi panga avaldust"
|
||||
|
||||
#. module: account
|
||||
#: sql_constraint:account.model.line:0
|
||||
msgid ""
|
||||
"Wrong credit or debit value in model (Credit + Debit Must Be greater \"0\")!"
|
||||
msgstr ""
|
||||
"Vale krediidi või deebeti arv mudelis ( Krediit + Deebet Peab olema suurem "
|
||||
"kui \"0\" ) !"
|
||||
|
||||
#. module: account
|
||||
#: view:account.chart.template:0
|
||||
|
@ -1516,14 +1524,14 @@ msgstr ""
|
|||
#. module: account
|
||||
#: report:account.analytic.account.cost_ledger:0
|
||||
msgid "Date/Code"
|
||||
msgstr ""
|
||||
msgstr "Kuupäev/Kood"
|
||||
|
||||
#. module: account
|
||||
#: field:account.analytic.line,general_account_id:0
|
||||
#: view:analytic.entries.report:0
|
||||
#: field:analytic.entries.report,general_account_id:0
|
||||
msgid "General Account"
|
||||
msgstr ""
|
||||
msgstr "Üldine konto"
|
||||
|
||||
#. module: account
|
||||
#: field:res.partner,debit_limit:0
|
||||
|
@ -1554,13 +1562,13 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:wizard.multi.charts.accounts,seq_journal:0
|
||||
msgid "Separated Journal Sequences"
|
||||
msgstr ""
|
||||
msgstr "Eraldatud päeviku järjekorrad"
|
||||
|
||||
#. module: account
|
||||
#: field:account.bank.statement,user_id:0
|
||||
#: view:account.invoice:0
|
||||
msgid "Responsible"
|
||||
msgstr ""
|
||||
msgstr "Vastutav"
|
||||
|
||||
#. module: account
|
||||
#: report:account.overdue:0
|
||||
|
@ -1570,7 +1578,7 @@ msgstr "Vahesumma:"
|
|||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_report_account_type_sales_tree_all
|
||||
msgid "Sales by Account Type"
|
||||
msgstr ""
|
||||
msgstr "Müügid konto järgi"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice.refund:0
|
||||
|
@ -1582,7 +1590,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
|
||||
msgid "Invoicing"
|
||||
msgstr ""
|
||||
msgstr "Arveldamine"
|
||||
|
||||
#. module: account
|
||||
#: field:account.chart.template,tax_code_root_id:0
|
||||
|
@ -1598,17 +1606,17 @@ msgstr "Kaasa algsed"
|
|||
#. module: account
|
||||
#: field:account.tax.code,sum:0
|
||||
msgid "Year Sum"
|
||||
msgstr ""
|
||||
msgstr "Aasta kokkuvõtte"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.report.xml,name:account.report_account_voucher_new
|
||||
msgid "Print Voucher"
|
||||
msgstr ""
|
||||
msgstr "Prindi voucher"
|
||||
|
||||
#. module: account
|
||||
#: view:account.change.currency:0
|
||||
msgid "This wizard will change the currency of the invoice"
|
||||
msgstr ""
|
||||
msgstr "See wizard muudab valuuta arvelduses"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,help:account.action_account_chart
|
||||
|
@ -1632,7 +1640,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.cashbox.line,pieces:0
|
||||
msgid "Values"
|
||||
msgstr ""
|
||||
msgstr "Väärtused"
|
||||
|
||||
#. module: account
|
||||
#: help:account.journal.period,active:0
|
||||
|
@ -1675,7 +1683,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: report:account.move.voucher:0
|
||||
msgid "Ref. :"
|
||||
msgstr ""
|
||||
msgstr "Viide:"
|
||||
|
||||
#. module: account
|
||||
#: view:account.analytic.chart:0
|
||||
|
@ -1685,7 +1693,7 @@ msgstr "Analüütilised kontoplaanid"
|
|||
#. module: account
|
||||
#: view:account.analytic.line:0
|
||||
msgid "My Entries"
|
||||
msgstr ""
|
||||
msgstr "Minu sisestused"
|
||||
|
||||
#. module: account
|
||||
#: report:account.overdue:0
|
||||
|
@ -1696,7 +1704,7 @@ msgstr "Kliendi viide:"
|
|||
#: code:addons/account/account_cash_statement.py:328
|
||||
#, python-format
|
||||
msgid "User %s does not have rights to access %s journal !"
|
||||
msgstr ""
|
||||
msgstr "Kasutajal %s ei ole õigusi et siseneda %s arveraamatusse !"
|
||||
|
||||
#. module: account
|
||||
#: help:account.period,special:0
|
||||
|
@ -1717,12 +1725,12 @@ msgstr ""
|
|||
#: code:addons/account/account.py:499
|
||||
#, python-format
|
||||
msgid "You cannot deactivate an account that contains account moves."
|
||||
msgstr ""
|
||||
msgstr "Sa ei saa deaktiveerida kontot mis sisaldab konto liikumisi."
|
||||
|
||||
#. module: account
|
||||
#: field:account.move.line.reconcile,credit:0
|
||||
msgid "Credit amount"
|
||||
msgstr ""
|
||||
msgstr "Kreedidi kogus"
|
||||
|
||||
#. module: account
|
||||
#: constraint:account.move.line:0
|
||||
|
@ -1745,7 +1753,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: sql_constraint:account.move.line:0
|
||||
msgid "Wrong credit or debit value in accounting entry !"
|
||||
msgstr ""
|
||||
msgstr "Vale kreedit või deebeti raamatupidamise sisend !"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice.report:0
|
||||
|
@ -1757,7 +1765,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_period_close
|
||||
msgid "period close"
|
||||
msgstr ""
|
||||
msgstr "Periood suletud"
|
||||
|
||||
#. module: account
|
||||
#: view:account.installer:0
|
||||
|
@ -1767,18 +1775,18 @@ msgstr ""
|
|||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_project_account_analytic_line_form
|
||||
msgid "Entries By Line"
|
||||
msgstr ""
|
||||
msgstr "SIsestused ridade kaupa"
|
||||
|
||||
#. module: account
|
||||
#: report:account.tax.code.entries:0
|
||||
msgid "A/c Code"
|
||||
msgstr ""
|
||||
msgstr "A/c kood"
|
||||
|
||||
#. module: account
|
||||
#: field:account.invoice,move_id:0
|
||||
#: field:account.invoice,move_name:0
|
||||
msgid "Journal Entry"
|
||||
msgstr ""
|
||||
msgstr "Päevaraamatu kanne"
|
||||
|
||||
#. module: account
|
||||
#: view:account.tax:0
|
||||
|
@ -1788,7 +1796,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.cashbox.line,subtotal:0
|
||||
msgid "Sub Total"
|
||||
msgstr ""
|
||||
msgstr "Vahesumma"
|
||||
|
||||
#. module: account
|
||||
#: view:account.account:0
|
||||
|
@ -1798,7 +1806,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: constraint:res.company:0
|
||||
msgid "Error! You can not create recursive companies."
|
||||
msgstr ""
|
||||
msgstr "Viga! Sa ei saa luua rekursiivseid ettevõtteid."
|
||||
|
||||
#. module: account
|
||||
#: view:account.analytic.account:0
|
||||
|
@ -1821,12 +1829,12 @@ msgstr "Kehtiv"
|
|||
#: model:ir.actions.act_window,name:account.action_account_print_journal
|
||||
#: model:ir.model,name:account.model_account_print_journal
|
||||
msgid "Account Print Journal"
|
||||
msgstr ""
|
||||
msgstr "Prindi konto arveraamat"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model,name:account.model_product_category
|
||||
msgid "Product Category"
|
||||
msgstr ""
|
||||
msgstr "Toote kategooria"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.account.type,report_type:0
|
||||
|
@ -1836,7 +1844,7 @@ msgstr "/"
|
|||
#. module: account
|
||||
#: field:account.bs.report,reserve_account_id:0
|
||||
msgid "Reserve & Profit/Loss Account"
|
||||
msgstr ""
|
||||
msgstr "Reservi & kasumi/kahjumi konto"
|
||||
|
||||
#. module: account
|
||||
#: help:account.bank.statement,balance_end:0
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2010-12-11 23:34+0000\n"
|
||||
"Last-Translator: BlueT - Matthew Lien - 練喆明 <bluet@ubuntu-tw.org>\n"
|
||||
"PO-Revision-Date: 2011-09-27 10:01+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-17 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 13955)\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: account
|
||||
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
|
||||
|
@ -48,7 +48,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.installer.modules,account_voucher:0
|
||||
msgid "Voucher Management"
|
||||
msgstr ""
|
||||
msgstr "換票券管理"
|
||||
|
||||
#. module: account
|
||||
#: view:account.account:0
|
||||
|
@ -3550,7 +3550,7 @@ msgstr ""
|
|||
#: view:product.template:0
|
||||
#: view:res.partner:0
|
||||
msgid "Accounting"
|
||||
msgstr "账号"
|
||||
msgstr "會計"
|
||||
|
||||
#. module: account
|
||||
#: help:account.central.journal,amount_currency:0
|
||||
|
@ -6779,7 +6779,7 @@ msgstr ""
|
|||
#: field:account.invoice.tax,invoice_id:0
|
||||
#: model:ir.model,name:account.model_account_invoice_line
|
||||
msgid "Invoice Line"
|
||||
msgstr "发票行"
|
||||
msgstr "發票明細"
|
||||
|
||||
#. module: account
|
||||
#: field:account.balance.report,display_account:0
|
||||
|
@ -6788,7 +6788,7 @@ msgstr "发票行"
|
|||
#: field:account.pl.report,display_account:0
|
||||
#: field:account.report.general.ledger,display_account:0
|
||||
msgid "Display accounts"
|
||||
msgstr ""
|
||||
msgstr "顯示帳號"
|
||||
|
||||
#. module: account
|
||||
#: field:account.account.type,sign:0
|
||||
|
@ -9305,7 +9305,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.invoice,invoice_line:0
|
||||
msgid "Invoice Lines"
|
||||
msgstr "发票行"
|
||||
msgstr "發票明細"
|
||||
|
||||
#. module: account
|
||||
#: constraint:account.account.template:0
|
||||
|
|
|
@ -29,7 +29,7 @@ class account_analytic_cost_ledger_journal_report(osv.osv_memory):
|
|||
_columns = {
|
||||
'date1': fields.date('Start of period', required=True),
|
||||
'date2': fields.date('End of period', required=True),
|
||||
'journal': fields.many2many('account.analytic.journal', 'ledger_journal_rel', 'ledger_id', 'Journal_id', 'Journals'),
|
||||
'journal': fields.many2many('account.analytic.journal', 'ledger_journal_rel', 'ledger_id', 'journal_id', 'Journals'),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
|
|
@ -147,7 +147,7 @@
|
|||
!python {model: account.account}: |
|
||||
ctx={}
|
||||
ctx.update({'model': 'account.account','active_ids':[ref('account.chart0')]})
|
||||
data_dict = {'chart_account_id':ref('account.chart0'),'display_type': False}
|
||||
data_dict = {'chart_account_id':ref('account.chart0'),'display_type': False,'target_move': 'all'}
|
||||
from tools import test_reports
|
||||
test_reports.try_report_action(cr, uid, 'action_account_pl_report',wiz_data=data_dict, context=ctx, our_module='account')
|
||||
-
|
||||
|
@ -156,7 +156,7 @@
|
|||
!python {model: account.account}: |
|
||||
ctx={}
|
||||
ctx.update({'model': 'account.account','active_ids':[ref('account.chart0')]})
|
||||
data_dict = {'chart_account_id':ref('account.chart0'),'display_type': True}
|
||||
data_dict = {'chart_account_id':ref('account.chart0'),'display_type': True,'target_move': 'all'}
|
||||
from tools import test_reports
|
||||
test_reports.try_report_action(cr, uid, 'action_account_pl_report',wiz_data=data_dict, context=ctx, our_module='account')
|
||||
-
|
||||
|
|
|
@ -19,13 +19,17 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv
|
||||
from osv import osv, fields
|
||||
|
||||
class account_balance_report(osv.osv_memory):
|
||||
_inherit = "account.common.account.report"
|
||||
_name = 'account.balance.report'
|
||||
_description = 'Trial Balance Report'
|
||||
|
||||
_columns = {
|
||||
'journal_ids': fields.many2many('account.journal', 'account_balance_report_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'journal_ids': [],
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ class account_aged_trial_balance(osv.osv_memory):
|
|||
'direction_selection': fields.selection([('past','Past'),
|
||||
('future','Future')],
|
||||
'Analysis Direction', required=True),
|
||||
'journal_ids': fields.many2many('account.journal', 'account_aged_trial_balance_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'period_length': 30,
|
||||
|
|
|
@ -40,11 +40,9 @@ class account_bs_report(osv.osv_memory):
|
|||
_columns = {
|
||||
'display_type': fields.boolean("Landscape Mode"),
|
||||
'reserve_account_id': fields.many2one('account.account', 'Reserve & Profit/Loss Account',
|
||||
required=True,
|
||||
help='This Account is used for transfering Profit/Loss ' \
|
||||
'(Profit: Amount will be added, Loss: Amount will be duducted), ' \
|
||||
'which is calculated from Profilt & Loss Report',
|
||||
help='This account is used for transferring Profit/Loss (If It is Profit: Amount will be added, Loss : Amount will be deducted.), as calculated in Profit & Loss Report',
|
||||
domain = [('type','=','other')]),
|
||||
'journal_ids': fields.many2many('account.journal', 'account_bs_report_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
|
||||
_defaults={
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
</xpath>
|
||||
<xpath expr="//field[@name='target_move']" position="after">
|
||||
<field name="display_account"/>
|
||||
<field name="reserve_account_id" required="1"/>
|
||||
<field name="reserve_account_id"/>
|
||||
<field name="display_type"/>
|
||||
<newline/>
|
||||
</xpath>
|
||||
|
|
|
@ -19,13 +19,17 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv
|
||||
from osv import osv, fields
|
||||
|
||||
class account_central_journal(osv.osv_memory):
|
||||
_name = 'account.central.journal'
|
||||
_description = 'Account Central Journal'
|
||||
_inherit = "account.common.journal.report"
|
||||
|
||||
_columns = {
|
||||
'journal_ids': fields.many2many('account.journal', 'account_central_journal_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
|
||||
def _print_report(self, cr, uid, ids, data, context=None):
|
||||
data = self.pre_print_report(cr, uid, ids, data, context=context)
|
||||
return {
|
||||
|
|
|
@ -35,7 +35,7 @@ class account_common_report(osv.osv_memory):
|
|||
'filter': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods')], "Filter by", required=True),
|
||||
'period_from': fields.many2one('account.period', 'Start Period'),
|
||||
'period_to': fields.many2one('account.period', 'End Period'),
|
||||
'journal_ids': fields.many2many('account.journal', 'account_common_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
'journal_ids': fields.many2many('account.journal', string='Journals', required=True),
|
||||
'date_from': fields.date("Start Date"),
|
||||
'date_to': fields.date("End Date"),
|
||||
'target_move': fields.selection([('posted', 'All Posted Entries'),
|
||||
|
|
|
@ -19,17 +19,21 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv
|
||||
from osv import osv, fields
|
||||
|
||||
class account_general_journal(osv.osv_memory):
|
||||
_inherit = "account.common.journal.report"
|
||||
_name = 'account.general.journal'
|
||||
_description = 'Account General Journal'
|
||||
|
||||
_columns = {
|
||||
'journal_ids': fields.many2many('account.journal', 'account_general_journal_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
|
||||
def _print_report(self, cr, uid, ids, data, context=None):
|
||||
data = self.pre_print_report(cr, uid, ids, data, context=context)
|
||||
return {'type': 'ir.actions.report.xml', 'report_name': 'account.general.journal', 'datas': data}
|
||||
|
||||
account_general_journal()
|
||||
|
||||
#vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
#vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -32,6 +32,7 @@ class account_report_general_ledger(osv.osv_memory):
|
|||
help='If you selected to filter by date or period, this field allow you to add a row to display the amount of debit/credit/balance that precedes the filter you\'ve set.'),
|
||||
'amount_currency': fields.boolean("With Currency", help="It adds the currency column if the currency is different then the company currency"),
|
||||
'sortby': fields.selection([('sort_date', 'Date'), ('sort_journal_partner', 'Journal & Partner')], 'Sort by', required=True),
|
||||
'journal_ids': fields.many2many('account.journal', 'account_report_general_ledger_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'landscape': True,
|
||||
|
|
|
@ -31,6 +31,7 @@ class account_partner_balance(osv.osv_memory):
|
|||
_columns = {
|
||||
'display_partner': fields.selection([('non-zero_balance', 'With balance is not equal to 0'), ('all', 'All Partners')]
|
||||
,'Display Partners'),
|
||||
'journal_ids': fields.many2many('account.journal', 'account_partner_balance_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
|
@ -51,4 +52,4 @@ class account_partner_balance(osv.osv_memory):
|
|||
|
||||
account_partner_balance()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -35,6 +35,7 @@ class account_partner_ledger(osv.osv_memory):
|
|||
'filter': fields.selection([('filter_no', 'No Filters'), ('filter_date', 'Date'), ('filter_period', 'Periods'), ('unreconciled', 'Unreconciled Entries')], "Filter by", required=True),
|
||||
'page_split': fields.boolean('One Partner Per Page', help='Display Ledger Report with One partner per page'),
|
||||
'amount_currency': fields.boolean("With Currency", help="It adds the currency column if the currency is different then the company currency"),
|
||||
'journal_ids': fields.many2many('account.journal', 'account_partner_ledger_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'initial_balance': False,
|
||||
|
|
|
@ -30,6 +30,7 @@ class account_print_journal(osv.osv_memory):
|
|||
'sort_selection': fields.selection([('date', 'Date'),
|
||||
('ref', 'Reference Number'),],
|
||||
'Entries Sorted by', required=True),
|
||||
'journal_ids': fields.many2many('account.journal', 'account_print_journal_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'sort_selection': 'date',
|
||||
|
@ -44,4 +45,4 @@ class account_print_journal(osv.osv_memory):
|
|||
|
||||
account_print_journal()
|
||||
|
||||
#vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
#vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -28,14 +28,15 @@ class account_pl_report(osv.osv_memory):
|
|||
_inherit = "account.common.account.report"
|
||||
_name = "account.pl.report"
|
||||
_description = "Account Profit And Loss Report"
|
||||
|
||||
_columns = {
|
||||
'display_type': fields.boolean("Landscape Mode"),
|
||||
'journal_ids': fields.many2many('account.journal', 'account_pl_report_journal_rel', 'account_id', 'journal_id', 'Journals', required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'display_type': False,
|
||||
'journal_ids': [],
|
||||
'target_move': False
|
||||
}
|
||||
|
||||
def _print_report(self, cr, uid, ids, data, context=None):
|
||||
|
|
|
@ -9,9 +9,6 @@
|
|||
<field name="inherit_id" ref="account.account_common_report_view" />
|
||||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//field[@name='target_move']" position="replace">
|
||||
<field name="target_move" required="0" readonly="1"/>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='journal_ids']" position="replace">
|
||||
<field name="journal_ids" required="0" colspan="4" nolabel="1" readonly="1"/>
|
||||
</xpath>
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 09:57+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: account_accountant
|
||||
#: model:ir.module.module,description:account_accountant.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
"This module gives the admin user the access to all the accounting features "
|
||||
"like the journal\n"
|
||||
"items and the chart of accounts.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: account_accountant
|
||||
#: model:ir.module.module,shortdesc:account_accountant.module_meta_information
|
||||
msgid "Accountant"
|
||||
msgstr "會計師"
|
|
@ -366,7 +366,7 @@ class account_move_line(osv.osv):
|
|||
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
if context is None:
|
||||
context = {}
|
||||
result = super(osv.osv, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
|
||||
result = super(account_move_line, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
|
||||
return result
|
||||
|
||||
account_move_line()
|
||||
|
@ -496,4 +496,4 @@ class account_bank_statement_line(osv.osv):
|
|||
}
|
||||
account_bank_statement_line()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -0,0 +1,107 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 10:28+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: view:product.category:0
|
||||
msgid " Accounting Property"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: sql_constraint:purchase.order:0
|
||||
msgid "Order Reference must be unique !"
|
||||
msgstr "訂單參考不能重覆!"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: constraint:product.category:0
|
||||
msgid "Error ! You can not create recursive categories."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: constraint:product.template:0
|
||||
msgid ""
|
||||
"Error: The default UOM and the purchase UOM must be in the same category."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.model,name:account_anglo_saxon.model_account_invoice_line
|
||||
msgid "Invoice Line"
|
||||
msgstr "發票明細"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.model,name:account_anglo_saxon.model_purchase_order
|
||||
msgid "Purchase Order"
|
||||
msgstr "購貨單"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.model,name:account_anglo_saxon.model_product_template
|
||||
msgid "Product Template"
|
||||
msgstr "產品範本"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.model,name:account_anglo_saxon.model_product_category
|
||||
msgid "Product Category"
|
||||
msgstr "產品分類"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.module.module,shortdesc:account_anglo_saxon.module_meta_information
|
||||
msgid "Stock Accounting for Anglo Saxon countries"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: field:product.category,property_account_creditor_price_difference_categ:0
|
||||
#: field:product.template,property_account_creditor_price_difference:0
|
||||
msgid "Price Difference Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.model,name:account_anglo_saxon.model_account_invoice
|
||||
msgid "Invoice"
|
||||
msgstr "發票"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.model,name:account_anglo_saxon.model_stock_picking
|
||||
msgid "Picking List"
|
||||
msgstr "提貨清單"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.module.module,description:account_anglo_saxon.module_meta_information
|
||||
msgid ""
|
||||
"This module will support the Anglo-Saxons accounting methodology by\n"
|
||||
" changing the accounting logic with stock transactions. The difference "
|
||||
"between the Anglo-Saxon accounting countries\n"
|
||||
" and the Rhine or also called Continental accounting countries is the "
|
||||
"moment of taking the Cost of Goods Sold versus Cost of Sales.\n"
|
||||
" Anglo-Saxons accounting does take the cost when sales invoice is "
|
||||
"created, Continental accounting will take the cost at the moment the goods "
|
||||
"are shipped.\n"
|
||||
" This module will add this functionality by using a interim account, to "
|
||||
"store the value of shipped goods and will contra book this interim account\n"
|
||||
" when the invoice is created to transfer this amount to the debtor or "
|
||||
"creditor account.\n"
|
||||
" Secondly, price differences between actual purchase price and fixed "
|
||||
"product standard price are booked on a separate account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: help:product.category,property_account_creditor_price_difference_categ:0
|
||||
#: help:product.template,property_account_creditor_price_difference:0
|
||||
msgid ""
|
||||
"This account will be used to value price difference between purchase price "
|
||||
"and cost price."
|
||||
msgstr ""
|
|
@ -0,0 +1,259 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 10:40+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: account_coda
|
||||
#: help:account.coda,journal_id:0
|
||||
#: field:account.coda.import,journal_id:0
|
||||
msgid "Bank Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
#: field:account.coda.import,note:0
|
||||
msgid "Log"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.model,name:account_coda.model_account_coda_import
|
||||
msgid "Account Coda Import"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,name:0
|
||||
msgid "Coda file"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
msgid "Group By..."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda.import,awaiting_account:0
|
||||
msgid "Default Account for Unrecognized Movement"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: help:account.coda,date:0
|
||||
msgid "Import Date"
|
||||
msgstr "匯入日期"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,note:0
|
||||
msgid "Import log"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
msgid "Import"
|
||||
msgstr "匯入"
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
msgid "Coda import"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: code:addons/account_coda/account_coda.py:51
|
||||
#, python-format
|
||||
msgid "Coda file not found for bank statement !!"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: help:account.coda.import,awaiting_account:0
|
||||
msgid ""
|
||||
"Set here the default account that will be used, if the partner is found but "
|
||||
"does not have the bank account, or if he is domiciled"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
#: field:account.coda,company_id:0
|
||||
msgid "Company"
|
||||
msgstr "公司"
|
||||
|
||||
#. module: account_coda
|
||||
#: help:account.coda.import,def_payable:0
|
||||
msgid ""
|
||||
"Set here the payable account that will be used, by default, if the partner "
|
||||
"is not found"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
msgid "Search Coda"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
#: field:account.coda,user_id:0
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
#: field:account.coda,date:0
|
||||
msgid "Date"
|
||||
msgstr "日期"
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.ui.menu,name:account_coda.menu_account_coda_statement
|
||||
msgid "Coda Import Logs"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.model,name:account_coda.model_account_coda
|
||||
msgid "coda for an Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda.import,def_payable:0
|
||||
msgid "Default Payable Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: help:account.coda,name:0
|
||||
msgid "Store the detail of bank statements"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
msgid "Open Statements"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: code:addons/account_coda/wizard/account_coda_import.py:167
|
||||
#, python-format
|
||||
msgid "The bank account %s is not defined for the partner %s.\n"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.ui.menu,name:account_coda.menu_account_coda_import
|
||||
msgid "Import Coda Statements"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
#: model:ir.actions.act_window,name:account_coda.action_account_coda_import
|
||||
msgid "Import Coda Statement"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.module.module,description:account_coda.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" Module provides functionality to import\n"
|
||||
" bank statements from coda files.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
msgid "Statements"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.bank.statement,coda_id:0
|
||||
msgid "Coda"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
msgid "Results :"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
msgid "Result of Imported Coda Statements"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: help:account.coda.import,def_receivable:0
|
||||
msgid ""
|
||||
"Set here the receivable account that will be used, by default, if the "
|
||||
"partner is not found"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda.import,coda:0
|
||||
#: model:ir.actions.act_window,name:account_coda.act_account_payment_account_bank_statement
|
||||
msgid "Coda File"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.model,name:account_coda.model_account_bank_statement
|
||||
msgid "Bank Statement"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.actions.act_window,name:account_coda.action_account_coda
|
||||
msgid "Coda Logs"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: code:addons/account_coda/wizard/account_coda_import.py:311
|
||||
#, python-format
|
||||
msgid "Result"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
msgid "Click on 'New' to select your file :"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda.import,def_receivable:0
|
||||
msgid "Default Receivable Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
msgid "Close"
|
||||
msgstr "關閉"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,statement_ids:0
|
||||
msgid "Generated Bank Statements"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.module.module,shortdesc:account_coda.module_meta_information
|
||||
msgid "Account CODA - import bank statements from coda file"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda.import:0
|
||||
msgid "Configure Your Journal and Account :"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
msgid "Coda Import"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
#: field:account.coda,journal_id:0
|
||||
msgid "Journal"
|
||||
msgstr ""
|
|
@ -0,0 +1,221 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 11:32+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer
|
||||
msgid "Account Sequence Application Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move:0
|
||||
msgid ""
|
||||
"You cannot create entries on different periods/journals in the same move"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.move,internal_sequence_number:0
|
||||
#: help:account.move.line,internal_sequence_number:0
|
||||
msgid "Internal Sequence Number"
|
||||
msgstr "內部序列號碼"
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,number_next:0
|
||||
msgid "Next number of this sequence"
|
||||
msgstr "本序列下個號碼"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,number_next:0
|
||||
msgid "Next Number"
|
||||
msgstr "下個號碼"
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,number_increment:0
|
||||
msgid "Increment Number"
|
||||
msgstr "編號增量"
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.module.module,description:account_sequence.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" This module maintains internal sequence number for accounting entries.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.module.module,shortdesc:account_sequence.module_meta_information
|
||||
msgid "Entries Sequence Numbering"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,number_increment:0
|
||||
msgid "The next number of the sequence will be incremented by this number"
|
||||
msgstr "序列下個號碼按此數字遞增"
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "Configure Your Account Sequence Application"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,progress:0
|
||||
msgid "Configuration Progress"
|
||||
msgstr "配置進度"
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,suffix:0
|
||||
msgid "Suffix value of the record for the sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,company_id:0
|
||||
msgid "Company"
|
||||
msgstr "公司"
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.journal,internal_sequence_id:0
|
||||
msgid ""
|
||||
"This sequence will be used to maintain the internal number for the journal "
|
||||
"entries related to this journal."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,padding:0
|
||||
msgid "Number padding"
|
||||
msgstr "數字位數"
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_move_line
|
||||
msgid "Journal Items"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.move,internal_sequence_number:0
|
||||
#: field:account.move.line,internal_sequence_number:0
|
||||
msgid "Internal Number"
|
||||
msgstr "內部號碼"
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "Company must be same for its related account and period."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,padding:0
|
||||
msgid ""
|
||||
"OpenERP will automatically adds some '0' on the left of the 'Next Number' to "
|
||||
"get the required padding size."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,name:0
|
||||
msgid "Name"
|
||||
msgstr "名稱"
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "You can not create move line on closed account."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move:0
|
||||
msgid ""
|
||||
"You cannot create more than one move per period on centralized journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.move.line:0
|
||||
msgid "Wrong credit or debit value in accounting entry !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.journal,internal_sequence_id:0
|
||||
msgid "Internal Sequence"
|
||||
msgstr "內部序列"
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_sequence_installer
|
||||
msgid "account.sequence.installer"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "Configure"
|
||||
msgstr "設定"
|
||||
|
||||
#. module: account_sequence
|
||||
#: help:account.sequence.installer,prefix:0
|
||||
msgid "Prefix value of the record for the sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_move
|
||||
msgid "Account Entry"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,suffix:0
|
||||
msgid "Suffix"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,config_logo:0
|
||||
msgid "Image"
|
||||
msgstr "圖像"
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The name of the journal must be unique per company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: field:account.sequence.installer,prefix:0
|
||||
msgid "Prefix"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: sql_constraint:account.journal:0
|
||||
msgid "The code of the journal must be unique per company !"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid ""
|
||||
"You can not create move line on receivable/payable account without partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: model:ir.model,name:account_sequence.model_account_journal
|
||||
msgid "Journal"
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: view:account.sequence.installer:0
|
||||
msgid "You can enhance the Account Sequence Application by installing ."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_sequence
|
||||
#: constraint:account.move.line:0
|
||||
msgid "You can not create move line on view account."
|
||||
msgstr ""
|
|
@ -29,6 +29,17 @@ from tools.translate import _
|
|||
|
||||
|
||||
class account_voucher(osv.osv):
|
||||
def _check_paid(self, cr, uid, ids, name, args, context=None):
|
||||
res = {}
|
||||
for voucher in self.browse(cr, uid, ids, context=context):
|
||||
ok = True
|
||||
for line in voucher.move_ids:
|
||||
if (line.account_id.type, 'in', ('receivable', 'payable')) and not line.reconcile_id:
|
||||
ok = False
|
||||
res[voucher.id] = ok
|
||||
return res
|
||||
|
||||
|
||||
|
||||
def _get_type(self, cr, uid, context=None):
|
||||
if context is None:
|
||||
|
@ -89,9 +100,7 @@ class account_voucher(osv.osv):
|
|||
journal = journal_pool.browse(cr, uid, journal_id, context=context)
|
||||
# currency_id = journal.company_id.currency_id.id
|
||||
if journal.currency:
|
||||
print 'Default', journal.currency.id
|
||||
return journal.currency.id
|
||||
print 'Default', False
|
||||
return False
|
||||
|
||||
def _get_partner(self, cr, uid, context=None):
|
||||
|
@ -216,6 +225,7 @@ class account_voucher(osv.osv):
|
|||
'move_ids': fields.related('move_id','line_id', type='one2many', relation='account.move.line', string='Journal Items', readonly=True),
|
||||
'partner_id':fields.many2one('res.partner', 'Partner', change_default=1, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'audit': fields.related('move_id','to_check', type='boolean', help='Check this box if you are unsure of that journal entry and if you want to note it as \'to be reviewed\' by an accounting expert.', relation='account.move', string='To Review'),
|
||||
'paid': fields.function(_check_paid, string='Paid', type='boolean', help="The Voucher has been totally paid."),
|
||||
'pay_now':fields.selection([
|
||||
('pay_now','Pay Directly'),
|
||||
('pay_later','Pay Later or Group Funds'),
|
||||
|
@ -483,13 +493,20 @@ class account_voucher(osv.osv):
|
|||
#elif company_currency != currency_id and ttype == 'receipt':
|
||||
# total_credit = currency_pool.compute(cr, uid, currency_id, company_currency, total_credit, context=context_multi_currency)
|
||||
|
||||
company_currency = journal.company_id.currency_id.id
|
||||
for line in moves:
|
||||
if line.credit and line.reconcile_partial_id and ttype == 'receipt':
|
||||
continue
|
||||
if line.debit and line.reconcile_partial_id and ttype == 'payment':
|
||||
continue
|
||||
total_credit += line.credit or 0.0
|
||||
total_debit += line.debit or 0.0
|
||||
|
||||
if line.currency_id and currency_id==line.currency_id.id:
|
||||
total_credit += line.amount_currency <0 and -line.amount_currency or 0.0
|
||||
total_debit += line.amount_currency >0 and line.amount_currency or 0.0
|
||||
else:
|
||||
total_credit += currency_pool.compute(cr, uid, company_currency, currency_id, line.credit or 0.0)
|
||||
total_debit += currency_pool.compute(cr, uid, company_currency, currency_id, line.debit or 0.0)
|
||||
|
||||
for line in moves:
|
||||
if line.credit and line.reconcile_partial_id and ttype == 'receipt':
|
||||
continue
|
||||
|
@ -500,7 +517,6 @@ class account_voucher(osv.osv):
|
|||
amount_original = abs(line.amount_currency)
|
||||
amount_unreconciled = abs(line.amount_residual_currency)
|
||||
else:
|
||||
company_currency = journal.company_id.currency_id.id
|
||||
amount_original = currency_pool.compute(cr, uid, company_currency, currency_id, line.credit or line.debit or 0.0)
|
||||
amount_unreconciled = currency_pool.compute(cr, uid, company_currency, currency_id, abs(line.amount_residual))
|
||||
|
||||
|
@ -538,7 +554,6 @@ class account_voucher(osv.osv):
|
|||
elif ttype == 'receipt' and len(default['value']['line_dr_ids']) > 0:
|
||||
default['value']['pre_line'] = 1
|
||||
default['value']['writeoff_amount'] = self._compute_writeoff_amount(cr, uid, default['value']['line_dr_ids'], default['value']['line_cr_ids'], price)
|
||||
print default
|
||||
return default
|
||||
|
||||
def onchange_date(self, cr, uid, ids, partner_id, journal_id, price, currency_id, ttype, date, context=None):
|
||||
|
@ -573,7 +588,6 @@ class account_voucher(osv.osv):
|
|||
if journal.currency:
|
||||
currency_id = journal.currency.id
|
||||
vals['value'].update({'currency_id':currency_id})
|
||||
print 'oc_journal', vals['value']
|
||||
return vals
|
||||
|
||||
def proforma_voucher(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -162,8 +162,9 @@
|
|||
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
|
||||
on_change="onchange_move_line_id(move_line_id)"
|
||||
domain="[('account_id.type','=','payable'), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"
|
||||
required="1"
|
||||
/>
|
||||
<field name="account_id" groups="base.group_extended" domain="[('type','=','payable')]"/>
|
||||
<field name="account_id" groups="base.group_no_one" domain="[('type','=','payable')]"/>
|
||||
<field name="date_original" readonly="1"/>
|
||||
<field name="date_due" readonly="1"/>
|
||||
<field name="amount_original" readonly="1"/>
|
||||
|
@ -186,6 +187,11 @@
|
|||
</group>
|
||||
<group col="2" colspan="1">
|
||||
<group col="2" colspan="1">
|
||||
<field name="exchange_acc_id"
|
||||
attrs="{'invisible':[('currency_id','=',False)]}"
|
||||
domain="[('type','=','other')]"/>
|
||||
<field name="analytic_id"
|
||||
groups="analytic.group_analytic_accounting"/>
|
||||
<separator string="Payment Options" colspan="2"/>
|
||||
<field name="payment_option" required="1"/>
|
||||
<field name="writeoff_amount"
|
||||
|
@ -196,11 +202,6 @@
|
|||
<field name="comment"
|
||||
attrs="{'invisible':[('payment_option','!=','with_writeoff')]}"/>
|
||||
|
||||
<field name="exchange_acc_id"
|
||||
attrs="{'invisible':[('currency_id','=',False)]}"
|
||||
domain="[('type','=','other')]"/>
|
||||
<field name="analytic_id"
|
||||
groups="analytic.group_analytic_accounting"/>
|
||||
</group>
|
||||
<separator string="Other Information" colspan="2"/>
|
||||
<group col="2" colspan="1">
|
||||
|
@ -306,8 +307,9 @@
|
|||
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
|
||||
on_change="onchange_move_line_id(move_line_id)"
|
||||
domain="[('account_id.type','in',('receivable','payable')), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"
|
||||
required="1"
|
||||
/>
|
||||
<field name="account_id" groups="base.group_extended" domain="[('type','=','receivable')]"/>
|
||||
<field name="account_id" groups="base.group_no_one" domain="[('type','=','receivable')]"/>
|
||||
<field name="date_original" readonly="1"/>
|
||||
<field name="date_due" readonly="1"/>
|
||||
<field name="amount_original" readonly="1"/>
|
||||
|
@ -331,6 +333,11 @@
|
|||
<group col="2" colspan="1">
|
||||
<group col="2" colspan="1">
|
||||
<separator string="Payment Options" colspan="2"/>
|
||||
<field name="analytic_id"
|
||||
groups="analytic.group_analytic_accounting"/>
|
||||
<field name="exchange_acc_id"
|
||||
attrs="{'invisible':[('currency_id','=',False)]}"
|
||||
domain="[('type','=','other')]"/>
|
||||
<field name="payment_option" required="1"/>
|
||||
<field name="writeoff_amount"
|
||||
attrs="{'invisible':[('payment_option','!=','with_writeoff')]}"/>
|
||||
|
@ -339,14 +346,9 @@
|
|||
domain="[('type','=','other')]"/>
|
||||
<field name="comment"
|
||||
attrs="{'invisible':[('payment_option','!=','with_writeoff')]}"/>
|
||||
<field name="analytic_id"
|
||||
groups="analytic.group_analytic_accounting"/>
|
||||
<field name="exchange_acc_id"
|
||||
domain="[('type','=','other')]"/>
|
||||
</group>
|
||||
<separator string="Other Information" colspan="2"/>
|
||||
<group col="4" colspan="1">
|
||||
<field name="currency_id"/>
|
||||
<field name="number"/>
|
||||
</group>
|
||||
</group>
|
||||
|
|
|
@ -239,7 +239,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory):
|
|||
return res
|
||||
|
||||
_columns = {
|
||||
'name': fields.char(size='64', string='File Name'),
|
||||
'name': fields.char(size=64, string='File Name'),
|
||||
'summary': fields.function(_get_summary, type='text', string='Summary'),
|
||||
'file_export': fields.binary(string='Export'),
|
||||
'file_import': fields.binary(string='Import'),
|
||||
|
|
|
@ -0,0 +1,502 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 12:38+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_mail_to_user:0
|
||||
msgid ""
|
||||
"Check this if you want the rule to send an email to the responsible person."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_remind_partner:0
|
||||
msgid "Remind Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_partner_categ_id:0
|
||||
msgid "Partner Category"
|
||||
msgstr "伙伴分類"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_mail_to_watchers:0
|
||||
msgid "Mail to Watchers (CC)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_state_to:0
|
||||
msgid "Button Pressed"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,model_id:0
|
||||
msgid "Object"
|
||||
msgstr "物件"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_mail_to_email:0
|
||||
msgid "Mail to these Emails"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_state:0
|
||||
msgid "Set State to"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_email_from:0
|
||||
msgid "Email From"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Email Body"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_range_type:0
|
||||
msgid "Days"
|
||||
msgstr "日"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,last_run:0
|
||||
msgid "Last Run"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: code:addons/base_action_rule/base_action_rule.py:313
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_reply_to:0
|
||||
msgid "Reply-To"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_email_cc:0
|
||||
msgid ""
|
||||
"These people will receive a copy of the future communication between partner "
|
||||
"and users by email"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_range_type:0
|
||||
msgid "Minutes"
|
||||
msgstr "分鐘"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,name:0
|
||||
msgid "Rule Name"
|
||||
msgstr "規則名稱"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_remind_partner:0
|
||||
msgid ""
|
||||
"Check this if you want the rule to send a reminder by email to the partner."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions on Model Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "Deadline"
|
||||
msgstr "最後限期"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr "伙伴"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_subject)s = Object subject"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Email Reminders"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Special Keywords to Be Used in The Body"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_state_from:0
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act
|
||||
msgid ""
|
||||
"Use automated actions to automatically trigger actions for various screens. "
|
||||
"Example: a lead created by a specific user may be automatically set to a "
|
||||
"specific sales team, or an opportunity which still has status pending after "
|
||||
"14 days might trigger an automatic reminder email."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_mail_to_email:0
|
||||
msgid "Email-id of the persons whom mail is to be sent"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
#: model:ir.module.module,shortdesc:base_action_rule.module_meta_information
|
||||
msgid "Action Rule"
|
||||
msgstr "動作規則"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Fields to Change"
|
||||
msgstr "要變更欄位"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "Creation Date"
|
||||
msgstr "建立日期"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "Last Action Date"
|
||||
msgstr "最後動作日期"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_range_type:0
|
||||
msgid "Hours"
|
||||
msgstr "小時"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_id)s = Object ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Delay After Trigger Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_remind_attach:0
|
||||
msgid "Remind with Attachment"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: constraint:ir.cron:0
|
||||
msgid "Invalid arguments"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_user_id:0
|
||||
msgid "Set Responsible to"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "None"
|
||||
msgstr "無"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_email_to:0
|
||||
msgid ""
|
||||
"Use a python expression to specify the right field on which one than we will "
|
||||
"use for the 'To' field of the header"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_user_phone)s = Responsible phone"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid ""
|
||||
"The rule uses the AND operator. The model must match all non-empty fields so "
|
||||
"that the rule executes the action described in the 'Actions' tab."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_date_range_type:0
|
||||
msgid "Delay type"
|
||||
msgstr "延遲類型"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,regex_name:0
|
||||
msgid ""
|
||||
"Regular expression for matching name of the resource\n"
|
||||
"e.g.: 'urgent.*' will search for records having name starting with the "
|
||||
"string 'urgent'\n"
|
||||
"Note: This is case sensitive search."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_method:0
|
||||
msgid "Call Object Method"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_email_to:0
|
||||
msgid "Email To"
|
||||
msgstr "電郵至"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_mail_to_watchers:0
|
||||
msgid ""
|
||||
"Check this if you want the rule to mark CC(mail to any other person defined "
|
||||
"in actions)."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(partner)s = Partner name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Note"
|
||||
msgstr "備註"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_email_from:0
|
||||
msgid ""
|
||||
"Use a python expression to specify the right field on which one than we will "
|
||||
"use for the 'From' field of the header"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_date_range:0
|
||||
msgid "Delay after trigger date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions"
|
||||
msgstr "條件"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,trg_date_range:0
|
||||
msgid ""
|
||||
"Delay After Trigger Date,specifies you can put a negative number. If you "
|
||||
"need a delay before the trigger date, like sending a reminder 15 minutes "
|
||||
"before a meeting."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,active:0
|
||||
msgid "Active"
|
||||
msgstr "活躍"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: code:addons/base_action_rule/base_action_rule.py:314
|
||||
#, python-format
|
||||
msgid "No E-Mail ID Found for your Company address!"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_remind_user:0
|
||||
msgid "Remind Responsible"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.module.module,description:base_action_rule.module_meta_information
|
||||
msgid "This module allows to implement action rules for any object."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,sequence:0
|
||||
msgid "Gives the sequence order when displaying a list of rules."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_range_type:0
|
||||
msgid "Months"
|
||||
msgstr "月"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,filter_id:0
|
||||
msgid "Filter"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: selection:base.action.rule,trg_date_type:0
|
||||
msgid "Date"
|
||||
msgstr "日期"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,server_action_id:0
|
||||
msgid ""
|
||||
"Describes the action name.\n"
|
||||
"eg:on which object which action to be taken on basis of which condition"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.model,name:base_action_rule.model_ir_cron
|
||||
msgid "ir.cron"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_description)s = Object description"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: constraint:base.action.rule:0
|
||||
msgid "Error: The mail is not well formated"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Email Actions"
|
||||
msgstr "電郵動作"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Email Information"
|
||||
msgstr "電郵資料"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.model,name:base_action_rule.model_base_action_rule
|
||||
msgid "Action Rules"
|
||||
msgstr "動作規則"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_mail_body:0
|
||||
msgid "Content of mail"
|
||||
msgstr "郵件內容"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_user_id:0
|
||||
msgid "Responsible"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(partner_email)s = Partner Email"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_date)s = Creation date"
|
||||
msgstr "%(object_date)s = 建立日期"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_user_email)s = Responsible Email"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_mail_body:0
|
||||
msgid "Mail body"
|
||||
msgstr "郵件內文"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_remind_user:0
|
||||
msgid ""
|
||||
"Check this if you want the rule to send a reminder by email to the user."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Server Action to be Triggered"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_mail_to_user:0
|
||||
msgid "Mail to Responsible"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,act_email_cc:0
|
||||
msgid "Add Watchers (Cc)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions on Model Fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act
|
||||
#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form
|
||||
msgid "Automated Actions"
|
||||
msgstr "自動化動作"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,server_action_id:0
|
||||
msgid "Server Action"
|
||||
msgstr "伺服器動作"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,regex_name:0
|
||||
msgid "Regex on Resource Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,act_remind_attach:0
|
||||
msgid ""
|
||||
"Check this if you want that all documents attached to the object be attached "
|
||||
"to the reminder email sent."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions on Timing"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,sequence:0
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Actions"
|
||||
msgstr "動作"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: help:base.action.rule,active:0
|
||||
msgid ""
|
||||
"If the active field is set to False, it will allow you to hide the rule "
|
||||
"without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "%(object_user)s = Responsible name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,create_date:0
|
||||
msgid "Create Date"
|
||||
msgstr "建立日期"
|
||||
|
||||
#. module: base_action_rule
|
||||
#: view:base.action.rule:0
|
||||
msgid "Conditions on States"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_action_rule
|
||||
#: field:base.action.rule,trg_date_type:0
|
||||
msgid "Trigger Date"
|
||||
msgstr ""
|
|
@ -0,0 +1,71 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 13:07+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: base_crypt
|
||||
#: sql_constraint:res.users:0
|
||||
msgid "You can not have two users with the same login !"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_crypt
|
||||
#: model:ir.model,name:base_crypt.model_res_users
|
||||
msgid "res.users"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_crypt
|
||||
#: constraint:res.users:0
|
||||
msgid "The chosen company is not in the allowed companies for this user"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_crypt
|
||||
#: code:addons/base_crypt/crypt.py:132
|
||||
#, python-format
|
||||
msgid "Please specify the password !"
|
||||
msgstr "請指定密碼 !"
|
||||
|
||||
#. module: base_crypt
|
||||
#: model:ir.module.module,shortdesc:base_crypt.module_meta_information
|
||||
msgid "Base - Password Encryption"
|
||||
msgstr "基礎 - 密碼加密"
|
||||
|
||||
#. module: base_crypt
|
||||
#: code:addons/base_crypt/crypt.py:132
|
||||
#, python-format
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_crypt
|
||||
#: model:ir.module.module,description:base_crypt.module_meta_information
|
||||
msgid ""
|
||||
"This module replaces the cleartext password in the database with a password "
|
||||
"hash,\n"
|
||||
"preventing anyone from reading the original password.\n"
|
||||
"For your existing user base, the removal of the cleartext passwords occurs "
|
||||
"the first time\n"
|
||||
"a user logs into the database, after installing base_crypt.\n"
|
||||
"After installing this module it won't be possible to recover a forgotten "
|
||||
"password for your\n"
|
||||
"users, the only solution is for an admin to set a new password.\n"
|
||||
"\n"
|
||||
"Note: installing this module does not mean you can ignore basic security "
|
||||
"measures,\n"
|
||||
"as the password is still transmitted unencrypted on the network (by the "
|
||||
"client),\n"
|
||||
"unless you are using a secure protocol such as XML-RPCS.\n"
|
||||
" "
|
||||
msgstr ""
|
|
@ -0,0 +1,518 @@
|
|||
# Chinese (Hong Kong) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 13:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Chinese (Hong Kong) <zh_HK@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: base_report_creator
|
||||
#: help:base_report_creator.report.filter,expression:0
|
||||
msgid ""
|
||||
"Provide an expression for the field based on which you want to filter the "
|
||||
"records.\n"
|
||||
" e.g. res_partner.id=3"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: model:ir.model,name:base_report_creator.model_report_menu_create
|
||||
msgid "Menu Create"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,view_graph_type:0
|
||||
msgid "Graph Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Used View"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_view:base_report_creator.report_filter.fields,set_value_select_field:0
|
||||
msgid "Filter Values"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report.fields,graph_mode:0
|
||||
msgid "Graph Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: code:addons/base_report_creator/base_report_creator.py:310
|
||||
#, python-format
|
||||
msgid ""
|
||||
"These is/are model(s) (%s) in selection which is/are not related to any "
|
||||
"other model"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Legend"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Graph View"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report.filter,expression:0
|
||||
msgid "Value"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: model:ir.actions.wizard,name:base_report_creator.wizard_set_filter_fields
|
||||
msgid "Set Filter Fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,calendar_mode:0
|
||||
msgid "Ending Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: model:ir.model,name:base_report_creator.model_base_report_creator_report_filter
|
||||
msgid "Report Filters"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
#: field:base_report_creator.report,sql_query:0
|
||||
msgid "SQL Query"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
#: view:report.menu.create:0
|
||||
msgid "Create Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,group_method:0
|
||||
msgid "Minimum"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_field:base_report_creator.report_filter.fields,set_value_select_field,operator:0
|
||||
msgid "Operator"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.filter,condition:0
|
||||
#: selection:base_report_creator.report_filter.fields,set_value_select_field,condition:0
|
||||
msgid "OR"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: model:ir.actions.act_window,name:base_report_creator.base_report_creator_action
|
||||
msgid "Custom Reports"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: code:addons/base_report_creator/base_report_creator.py:310
|
||||
#, python-format
|
||||
msgid "No Related Models!!"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:report.menu.create:0
|
||||
msgid "Menu Information"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,group_method:0
|
||||
msgid "Sum"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: constraint:base_report_creator.report:0
|
||||
msgid "You must have to give calendar view's color,start date and delay."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,model_ids:0
|
||||
msgid "Reported Objects"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Field List"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,type:0
|
||||
msgid "Report Type"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Add filter"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: model:ir.actions.act_window,name:base_report_creator.action_report_menu_create
|
||||
msgid "Create Menu for Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_type1:0
|
||||
#: selection:base_report_creator.report,view_type2:0
|
||||
#: selection:base_report_creator.report,view_type3:0
|
||||
msgid "Form"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_type2:0
|
||||
#: selection:base_report_creator.report,view_type3:0
|
||||
#: selection:base_report_creator.report.fields,calendar_mode:0
|
||||
#: selection:base_report_creator.report.fields,graph_mode:0
|
||||
msgid "/"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
#: field:base_report_creator.report.fields,report_id:0
|
||||
#: field:base_report_creator.report.filter,report_id:0
|
||||
#: model:ir.model,name:base_report_creator.model_base_report_creator_report
|
||||
#: model:ir.model,name:base_report_creator.model_base_report_creator_report_result
|
||||
msgid "Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,calendar_mode:0
|
||||
msgid "Starting Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Filters on Fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,group_ids:0
|
||||
msgid "Authorized Groups"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_type1:0
|
||||
#: selection:base_report_creator.report,view_type2:0
|
||||
#: selection:base_report_creator.report,view_type3:0
|
||||
msgid "Tree"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,view_graph_orientation:0
|
||||
msgid "Graph Orientation"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Authorized Groups (empty for all)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Security"
|
||||
msgstr "保安"
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:report.menu.create,menu_name:0
|
||||
msgid "Menu Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.filter,condition:0
|
||||
#: selection:base_report_creator.report_filter.fields,set_value_select_field,condition:0
|
||||
msgid "AND"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: constraint:base_report_creator.report:0
|
||||
msgid "You can not display field which are not stored in Database."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report.fields,calendar_mode:0
|
||||
msgid "Calendar Mode"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: model:ir.model,name:base_report_creator.model_base_report_creator_report_fields
|
||||
msgid "Display Fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,graph_mode:0
|
||||
msgid "Y Axis"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_type1:0
|
||||
#: selection:base_report_creator.report,view_type2:0
|
||||
#: selection:base_report_creator.report,view_type3:0
|
||||
msgid "Calendar"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_type1:0
|
||||
#: selection:base_report_creator.report,view_type2:0
|
||||
#: selection:base_report_creator.report,view_type3:0
|
||||
msgid "Graph"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_field:base_report_creator.report_filter.fields,set_value_select_field,field_id:0
|
||||
msgid "Field Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_view:base_report_creator.report_filter.fields,set_value_select_field:0
|
||||
msgid "Set Filter Values"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_graph_orientation:0
|
||||
msgid "Vertical"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,type:0
|
||||
msgid "Rows And Columns Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "General Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: help:base_report_creator.report.fields,sequence:0
|
||||
msgid "Gives the sequence order when displaying a list of fields."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_view:base_report_creator.report_filter.fields,init:0
|
||||
msgid "Select Field to filter"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,active:0
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_graph_orientation:0
|
||||
msgid "Horizontal"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report.fields,group_method:0
|
||||
msgid "Grouping Method"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report.filter,condition:0
|
||||
#: wizard_field:base_report_creator.report_filter.fields,set_value_select_field,condition:0
|
||||
msgid "Condition"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,group_method:0
|
||||
msgid "Count"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,graph_mode:0
|
||||
msgid "X Axis"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:report.menu.create,menu_parent_id:0
|
||||
msgid "Parent Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_button:base_report_creator.report_filter.fields,set_value_select_field,set_value:0
|
||||
msgid "Confirm Filter"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report.filter,name:0
|
||||
msgid "Filter Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Open Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,group_method:0
|
||||
msgid "Grouped"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
#: model:ir.module.module,shortdesc:base_report_creator.module_meta_information
|
||||
msgid "Report Creator"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_button:base_report_creator.report_filter.fields,init,end:0
|
||||
#: wizard_button:base_report_creator.report_filter.fields,set_value_select_field,end:0
|
||||
#: view:report.menu.create:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: constraint:base_report_creator.report:0
|
||||
msgid "You can apply aggregate function to the non calculated field."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,menu_id:0
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,view_type1:0
|
||||
msgid "First View"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,calendar_mode:0
|
||||
msgid "Delay"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report.fields,field_id:0
|
||||
msgid "Field"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,calendar_mode:0
|
||||
msgid "Unique Colors"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: help:base_report_creator.report,active:0
|
||||
msgid ""
|
||||
"If the active field is set to False, it will allow you to hide the report "
|
||||
"without removing it."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_graph_type:0
|
||||
msgid "Pie Chart"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,view_type3:0
|
||||
msgid "Third View"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,calendar_mode:0
|
||||
msgid "End Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,name:0
|
||||
msgid "Report Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Fields"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,group_method:0
|
||||
msgid "Average"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "Use %(uid)s to filter by the connected user"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report.fields,group_method:0
|
||||
msgid "Maximum"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_button:base_report_creator.report_filter.fields,init,set_value_select_field:0
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_field:base_report_creator.report_filter.fields,set_value_select_field,value:0
|
||||
msgid "Values"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: selection:base_report_creator.report,view_graph_type:0
|
||||
msgid "Bar Chart"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report,view_type2:0
|
||||
msgid "Second View"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:report.menu.create:0
|
||||
msgid "Create Menu For This Report"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
msgid "View parameters"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: field:base_report_creator.report.fields,sequence:0
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: wizard_field:base_report_creator.report_filter.fields,init,field_id:0
|
||||
msgid "Filter Field"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
#: field:base_report_creator.report,field_ids:0
|
||||
msgid "Fields to Display"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: view:base_report_creator.report:0
|
||||
#: field:base_report_creator.report,filter_ids:0
|
||||
msgid "Filters"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_report_creator
|
||||
#: model:ir.module.module,description:base_report_creator.module_meta_information
|
||||
msgid ""
|
||||
"This module allows you to create any statistic\n"
|
||||
"report on several objects. It's a SQL query builder and browser\n"
|
||||
"for and users.\n"
|
||||
"\n"
|
||||
"After installing the module, it adds a menu to define custom report in\n"
|
||||
"the \"Dashboard\" menu.\n"
|
||||
msgstr ""
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2009-01-30 12:44+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"PO-Revision-Date: 2011-09-27 14:38+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-05 05:28+0000\n"
|
||||
"X-Generator: Launchpad (build 13830)\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.model,name:base_report_designer.model_base_report_sxw
|
||||
|
@ -24,12 +24,12 @@ msgstr ""
|
|||
#. module: base_report_designer
|
||||
#: view:base_report_designer.installer:0
|
||||
msgid "OpenERP Report Designer Configuration"
|
||||
msgstr ""
|
||||
msgstr "OpenERP 報表設計師配置"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.module.module,shortdesc:base_report_designer.module_meta_information
|
||||
msgid "Report designer interface module"
|
||||
msgstr ""
|
||||
msgstr "報表設計師介面模組"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base_report_designer.installer:0
|
||||
|
@ -41,7 +41,7 @@ msgstr ""
|
|||
#. module: base_report_designer
|
||||
#: view:base.report.file.sxw:0
|
||||
msgid "Upload the modified report"
|
||||
msgstr ""
|
||||
msgstr "上載已修改報表"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.module.module,description:base_report_designer.module_meta_information
|
||||
|
@ -59,7 +59,7 @@ msgstr ""
|
|||
#. module: base_report_designer
|
||||
#: view:base.report.file.sxw:0
|
||||
msgid "The .SXW report"
|
||||
msgstr ""
|
||||
msgstr ".SXW 報表"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.model,name:base_report_designer.model_base_report_designer_installer
|
||||
|
@ -69,33 +69,33 @@ msgstr ""
|
|||
#. module: base_report_designer
|
||||
#: field:base_report_designer.installer,description:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
msgstr "說明"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base_report_designer.installer:0
|
||||
msgid "_Close"
|
||||
msgstr ""
|
||||
msgstr "關閉(_C)"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base.report.rml.save:0
|
||||
msgid "The RML report"
|
||||
msgstr ""
|
||||
msgstr "RML 報表"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base_report_designer.installer:0
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
msgstr "配置"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base_report_designer.installer:0
|
||||
msgid "title"
|
||||
msgstr ""
|
||||
msgstr "標題"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: field:base.report.file.sxw,report_id:0
|
||||
#: field:base.report.sxw,report_id:0
|
||||
msgid "Report"
|
||||
msgstr ""
|
||||
msgstr "報表"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.model,name:base_report_designer.model_base_report_rml_save
|
||||
|
@ -105,62 +105,62 @@ msgstr ""
|
|||
#. module: base_report_designer
|
||||
#: model:ir.ui.menu,name:base_report_designer.menu_action_report_designer_wizard
|
||||
msgid "Report Designer"
|
||||
msgstr ""
|
||||
msgstr "報表設計師"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: field:base_report_designer.installer,name:0
|
||||
msgid "File name"
|
||||
msgstr ""
|
||||
msgstr "檔案名稱"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base.report.file.sxw:0
|
||||
#: view:base.report.sxw:0
|
||||
msgid "Get a report"
|
||||
msgstr ""
|
||||
msgstr "取得報表"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base_report_designer.installer:0
|
||||
#: model:ir.actions.act_window,name:base_report_designer.action_report_designer_wizard
|
||||
msgid "OpenERP Report Designer"
|
||||
msgstr ""
|
||||
msgstr "OpenERP 報表設計師"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base.report.sxw:0
|
||||
msgid "Continue"
|
||||
msgstr ""
|
||||
msgstr "繼續"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: field:base.report.rml.save,file_rml:0
|
||||
msgid "Save As"
|
||||
msgstr ""
|
||||
msgstr "另存為..."
|
||||
|
||||
#. module: base_report_designer
|
||||
#: help:base_report_designer.installer,plugin_file:0
|
||||
msgid ""
|
||||
"OpenObject Report Designer plug-in file. Save as this file and install this "
|
||||
"plug-in in OpenOffice."
|
||||
msgstr ""
|
||||
msgstr "OpenObject 報表設計師插件檔。儲存此檔並於 OpenOffice 安裝此插件。"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base.report.rml.save:0
|
||||
msgid "Save RML FIle"
|
||||
msgstr ""
|
||||
msgstr "儲存 RML 檔案"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: field:base.report.file.sxw,file_sxw:0
|
||||
#: field:base.report.file.sxw,file_sxw_upload:0
|
||||
msgid "Your .SXW file"
|
||||
msgstr ""
|
||||
msgstr "您的 .SXW 檔案"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base_report_designer.installer:0
|
||||
msgid "Installation and Configuration Steps"
|
||||
msgstr ""
|
||||
msgstr "安裝及配置步驟"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: field:base_report_designer.installer,progress:0
|
||||
msgid "Configuration Progress"
|
||||
msgstr ""
|
||||
msgstr "配置進度"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base.report.file.sxw:0
|
||||
|
@ -174,17 +174,17 @@ msgstr ""
|
|||
#. module: base_report_designer
|
||||
#: view:base_report_designer.installer:0
|
||||
msgid "Skip"
|
||||
msgstr ""
|
||||
msgstr "略過"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: field:base_report_designer.installer,config_logo:0
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
msgstr "圖像"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.actions.act_window,name:base_report_designer.action_view_base_report_sxw
|
||||
msgid "Base Report sxw"
|
||||
msgstr ""
|
||||
msgstr "基礎報表 sxw"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.model,name:base_report_designer.model_base_report_file_sxw
|
||||
|
@ -194,19 +194,19 @@ msgstr ""
|
|||
#. module: base_report_designer
|
||||
#: field:base_report_designer.installer,plugin_file:0
|
||||
msgid "OpenObject Report Designer Plug-in"
|
||||
msgstr ""
|
||||
msgstr "OpenObject 報表設計師插件"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.actions.act_window,name:base_report_designer.action_report_designer_installer
|
||||
msgid "OpenERP Report Designer Installation"
|
||||
msgstr ""
|
||||
msgstr "OpenERP 報表設計師安裝"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: view:base.report.file.sxw:0
|
||||
#: view:base.report.rml.save:0
|
||||
#: view:base.report.sxw:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "取消"
|
||||
|
||||
#. module: base_report_designer
|
||||
#: model:ir.model,name:base_report_designer.model_ir_actions_report_xml
|
||||
|
@ -216,4 +216,4 @@ msgstr ""
|
|||
#. module: base_report_designer
|
||||
#: view:base.report.sxw:0
|
||||
msgid "Select your report"
|
||||
msgstr ""
|
||||
msgstr "選取您的報表"
|
||||
|
|
|
@ -289,7 +289,7 @@ class specify_partner_terminology(osv.osv_memory):
|
|||
field_ref = f_id.model_id.model + ',' + f_id.name
|
||||
self.make_translations(cr, uid, ids, field_ref, 'field', f_id.field_description, _case_insensitive_replace(f_id.field_description,'Customer',o.partner), context=context)
|
||||
#translate help tooltip of field
|
||||
for obj in self.pool.obj_pool.values():
|
||||
for obj in self.pool.models.values():
|
||||
for field_name, field_rec in obj._columns.items():
|
||||
if field_rec.help.lower().count('customer'):
|
||||
field_ref = obj._name + ',' + field_name
|
||||
|
|
|
@ -0,0 +1,289 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 14:38+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.actions.act_window,name:base_synchro.action_view_base_synchro
|
||||
msgid "Base Synchronization"
|
||||
msgstr "基礎同步化"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.server,server_db:0
|
||||
msgid "Server Database"
|
||||
msgstr "伺服器資料庫"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.server:0
|
||||
#: model:ir.model,name:base_synchro.model_base_synchro_server
|
||||
msgid "Synchronized server"
|
||||
msgstr "同步化伺服器"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj.avoid,name:0
|
||||
msgid "Field Name"
|
||||
msgstr "欄位名稱"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,synchronize_date:0
|
||||
msgid "Latest Synchronization"
|
||||
msgstr "最新同步化"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro,user_id:0
|
||||
msgid "Send Result To"
|
||||
msgstr "將結果發送至"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.model,name:base_synchro.model_base_synchro_obj_avoid
|
||||
msgid "Fields to not synchronize"
|
||||
msgstr "不同步化之欄位"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro:0
|
||||
msgid "_Close"
|
||||
msgstr "關閉(_C)"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro:0
|
||||
msgid "Transfer Data To Server"
|
||||
msgstr "將資料轉至伺服器"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.model,name:base_synchro.model_base_synchro_obj
|
||||
msgid "Register Class"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.obj:0
|
||||
#: model:ir.actions.act_window,name:base_synchro.action_transfer_tree
|
||||
#: model:ir.ui.menu,name:base_synchro.transfer_menu_id
|
||||
msgid "Synchronized objects"
|
||||
msgstr "同步化物件"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.server,obj_ids:0
|
||||
msgid "Models"
|
||||
msgstr "模型"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj.avoid,obj_id:0
|
||||
#: view:base.synchro.obj.line:0
|
||||
#: field:base.synchro.obj.line,obj_id:0
|
||||
msgid "Object"
|
||||
msgstr "物件"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.server,login:0
|
||||
msgid "User Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.obj:0
|
||||
#: view:base.synchro.obj.line:0
|
||||
msgid "Group By"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_synchro
|
||||
#: selection:base.synchro.obj,action:0
|
||||
msgid "Upload"
|
||||
msgstr "上載"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.obj:0
|
||||
msgid "Latest synchronization"
|
||||
msgstr "最新同步化"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.module.module,description:base_synchro.module_meta_information
|
||||
msgid "Synchronization with all objects."
|
||||
msgstr "與所有物件同步化。"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.obj.line:0
|
||||
#: field:base.synchro.obj.line,name:0
|
||||
msgid "Date"
|
||||
msgstr "日期"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.server,password:0
|
||||
msgid "Password"
|
||||
msgstr "密碼"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,avoid_ids:0
|
||||
msgid "Fields Not Sync."
|
||||
msgstr "無同步化欄位"
|
||||
|
||||
#. module: base_synchro
|
||||
#: selection:base.synchro.obj,action:0
|
||||
msgid "Both"
|
||||
msgstr "兩者"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,name:0
|
||||
msgid "Name"
|
||||
msgstr "名稱"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.obj:0
|
||||
msgid "Fields"
|
||||
msgstr "欄位"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.obj.line:0
|
||||
msgid "Transfered Ids Details"
|
||||
msgstr "已傳送 Ids 詳情"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,action:0
|
||||
msgid "Synchronisation direction"
|
||||
msgstr "同步化方向"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,server_id:0
|
||||
msgid "Server"
|
||||
msgstr "伺服器"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.actions.act_window,name:base_synchro.action_base_synchro_obj_line_tree
|
||||
#: model:ir.model,name:base_synchro.model_base_synchro_obj_line
|
||||
#: model:ir.ui.menu,name:base_synchro.menu_action_base_synchro_obj_line_tree
|
||||
msgid "Synchronized instances"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,active:0
|
||||
msgid "Active"
|
||||
msgstr "作用中"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.obj:0
|
||||
#: field:base.synchro.obj,model_id:0
|
||||
msgid "Object to synchronize"
|
||||
msgstr "要同步化物件"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.module.module,shortdesc:base_synchro.module_meta_information
|
||||
msgid "Base Synchro"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.actions.act_window,name:base_synchro.action_base_synchro_server_tree
|
||||
#: model:ir.ui.menu,name:base_synchro.synchro_server_tree_menu_id
|
||||
msgid "Servers to be synchronized"
|
||||
msgstr "要同步化伺服器"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro.obj:0
|
||||
msgid "Transfer Details"
|
||||
msgstr "傳送詳情"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj.line,remote_id:0
|
||||
msgid "Remote Id"
|
||||
msgstr "遠端 Id"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,line_id:0
|
||||
msgid "Ids Affected"
|
||||
msgstr "受影響 Ids"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.ui.menu,name:base_synchro.next_id_63
|
||||
msgid "History"
|
||||
msgstr "歷史紀錄"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.ui.menu,name:base_synchro.next_id_62
|
||||
#: model:ir.ui.menu,name:base_synchro.synch_config
|
||||
msgid "Synchronization"
|
||||
msgstr "同步化"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,domain:0
|
||||
msgid "Domain"
|
||||
msgstr "領域"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro:0
|
||||
msgid "_Synchronize"
|
||||
msgstr "同步化(_S)"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro:0
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.server,name:0
|
||||
msgid "Server name"
|
||||
msgstr "伺服器名稱"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj,sequence:0
|
||||
msgid "Sequence"
|
||||
msgstr "次序"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro:0
|
||||
msgid ""
|
||||
"The synchronisation has been started.You will receive a request when it's "
|
||||
"done."
|
||||
msgstr "同步化已開始。完成時會收到要求。"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.server,server_port:0
|
||||
msgid "Server Port"
|
||||
msgstr "伺服器連接埠"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.ui.menu,name:base_synchro.menu_action_view_base_synchro
|
||||
msgid "Synchronize objects"
|
||||
msgstr "同步化物件"
|
||||
|
||||
#. module: base_synchro
|
||||
#: view:base.synchro:0
|
||||
msgid "Synchronization Complited!"
|
||||
msgstr "同步化完成!"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.model,name:base_synchro.model_base_synchro
|
||||
msgid "base.synchro"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro.obj.line,local_id:0
|
||||
msgid "Local Id"
|
||||
msgstr "本機 Id"
|
||||
|
||||
#. module: base_synchro
|
||||
#: model:ir.actions.act_window,name:base_synchro.actions_regclass_tree
|
||||
#: model:ir.actions.act_window,name:base_synchro.actions_transfer_line_form
|
||||
msgid "Filters"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_synchro
|
||||
#: selection:base.synchro.obj,action:0
|
||||
msgid "Download"
|
||||
msgstr "下載"
|
||||
|
||||
#. module: base_synchro
|
||||
#: field:base.synchro,server_url:0
|
||||
#: field:base.synchro.server,server_url:0
|
||||
msgid "Server URL"
|
||||
msgstr "伺服器 URL"
|
|
@ -0,0 +1,32 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 14:45+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: base_tools
|
||||
#: model:ir.module.module,shortdesc:base_tools.module_meta_information
|
||||
msgid "Common base for tools modules"
|
||||
msgstr "工具模組共同基礎"
|
||||
|
||||
#. module: base_tools
|
||||
#: model:ir.module.module,description:base_tools.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" "
|
|
@ -381,7 +381,7 @@ class crm_case(crm_base):
|
|||
default.update({ 'date_closed': False, })
|
||||
if self._columns.get('date_open'):
|
||||
default.update({ 'date_open': False })
|
||||
return super(osv.osv, self).copy(cr, uid, id, default, context=context)
|
||||
return super(crm_case, self).copy(cr, uid, id, default, context=context)
|
||||
|
||||
|
||||
def case_open(self, cr, uid, ids, *args):
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-01-27 05:08+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 07:26+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-05 05:08+0000\n"
|
||||
"X-Generator: Launchpad (build 13830)\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-28 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead.report:0
|
||||
|
@ -78,7 +78,7 @@ msgstr "今日"
|
|||
#. module: crm
|
||||
#: view:crm.merge.opportunity:0
|
||||
msgid "Select Opportunities"
|
||||
msgstr "選取機會"
|
||||
msgstr "選擇機會"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.meeting:0
|
||||
|
@ -184,7 +184,7 @@ msgstr "搜尋機會"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"Opportunity must have Partner assigned before merging with other Opportunity."
|
||||
msgstr "機會要先安排伙伴才可合併。"
|
||||
msgstr "機會要先安排伙伴才可與其他機會合併。"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/wizard/crm_merge_opportunities.py:46
|
||||
|
@ -249,7 +249,7 @@ msgstr ""
|
|||
#: view:res.partner:0
|
||||
#, python-format
|
||||
msgid "Phone Call"
|
||||
msgstr "打電話"
|
||||
msgstr "致電"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.lead,optout:0
|
||||
|
@ -260,7 +260,7 @@ msgstr ""
|
|||
#: code:addons/crm/crm_opportunity.py:108
|
||||
#, python-format
|
||||
msgid "The opportunity '%s' has been marked as lost."
|
||||
msgstr ""
|
||||
msgstr "「%s」機會已標為丟失。"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.actions.act_window,help:crm.action_report_crm_lead
|
||||
|
@ -309,7 +309,7 @@ msgid ""
|
|||
"If you select Merge with existing Opportunity, the lead details(with the "
|
||||
"communication history) will be merged with existing Opportunity of Selected "
|
||||
"partner."
|
||||
msgstr ""
|
||||
msgstr "如選擇與現有機會合併,潛在客戶之詳情(包括通訊記錄)會與選取之伙伴的現有機會合併。"
|
||||
|
||||
#. module: crm
|
||||
#: selection:crm.meeting,class:0
|
||||
|
@ -389,7 +389,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: model:process.transition,name:crm.process_transition_opportunitymeeting0
|
||||
msgid "Opportunity Meeting"
|
||||
msgstr ""
|
||||
msgstr "商機會談"
|
||||
|
||||
#. module: crm
|
||||
#: help:crm.lead.report,delay_close:0
|
||||
|
@ -400,7 +400,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: model:process.node,note:crm.process_node_opportunities0
|
||||
msgid "When a real project/opportunity is detected"
|
||||
msgstr ""
|
||||
msgstr "當偵測到真正專案/機會"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.installer,crm_fundraising:0
|
||||
|
@ -446,7 +446,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_lead2opportunity_action
|
||||
msgid "Convert/Merge Opportunity"
|
||||
msgstr ""
|
||||
msgstr "轉變/合併機會"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.lead,write_date:0
|
||||
|
@ -457,7 +457,7 @@ msgstr "更新日期"
|
|||
#: view:crm.lead2opportunity.action:0
|
||||
#: field:crm.lead2opportunity.action,name:0
|
||||
msgid "Select Action"
|
||||
msgstr ""
|
||||
msgstr "選擇動作"
|
||||
|
||||
#. module: crm
|
||||
#: field:base.action.rule,trg_categ_id:0
|
||||
|
@ -475,7 +475,7 @@ msgstr "分類"
|
|||
#. module: crm
|
||||
#: view:crm.lead.report:0
|
||||
msgid "#Opportunities"
|
||||
msgstr ""
|
||||
msgstr "#機會"
|
||||
|
||||
#. module: crm
|
||||
#: model:crm.case.resource.type,name:crm.type_oppor2
|
||||
|
@ -495,7 +495,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: view:crm.lead.report:0
|
||||
msgid "Opportunity Analysis"
|
||||
msgstr ""
|
||||
msgstr "機會分析"
|
||||
|
||||
#. module: crm
|
||||
#: help:crm.meeting,location:0
|
||||
|
@ -525,7 +525,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: model:process.transition,note:crm.process_transition_opportunitymeeting0
|
||||
msgid "Normal or phone meeting for opportunity"
|
||||
msgstr ""
|
||||
msgstr "與機會的正常或電話會談"
|
||||
|
||||
#. module: crm
|
||||
#: model:process.node,note:crm.process_node_leads0
|
||||
|
@ -544,7 +544,7 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:crm.crm_partner2opportunity
|
||||
#, python-format
|
||||
msgid "Create Opportunity"
|
||||
msgstr ""
|
||||
msgstr "建立機會"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.installer:0
|
||||
|
@ -631,7 +631,7 @@ msgstr "滿意度調查"
|
|||
msgid ""
|
||||
"Thick this box if you want that on escalation, the responsible of this sale "
|
||||
"team automatically becomes responsible of the lead/opportunity escaladed"
|
||||
msgstr ""
|
||||
msgstr "如想提升注意級別,勾選此項;此銷售隊伍之負責人會自動成為已提升注意潛在客戶/機會之負責人"
|
||||
|
||||
#. module: crm
|
||||
#: help:crm.installer,outlook:0
|
||||
|
@ -671,7 +671,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: view:crm.phonecall.report:0
|
||||
msgid "#Phone calls"
|
||||
msgstr ""
|
||||
msgstr "致電數"
|
||||
|
||||
#. module: crm
|
||||
#: help:crm.segmentation,categ_id:0
|
||||
|
@ -691,7 +691,7 @@ msgid ""
|
|||
"The channels represent the different communication "
|
||||
"modes available with the customer. With each commercial opportunity, you can "
|
||||
"indicate the canall which is this opportunity source."
|
||||
msgstr ""
|
||||
msgstr "渠道代表該顧客之不同通訊模式。對於每個商機,您可指明此機會來源之管道。"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_meeting.py:93
|
||||
|
@ -720,7 +720,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: view:res.users:0
|
||||
msgid "Current Activity"
|
||||
msgstr "目前活動"
|
||||
msgstr "當前動態"
|
||||
|
||||
#. module: crm
|
||||
#: help:crm.meeting,exrule:0
|
||||
|
@ -835,7 +835,7 @@ msgstr "停止處理"
|
|||
#. module: crm
|
||||
#: view:crm.phonecall:0
|
||||
msgid "Search Phonecalls"
|
||||
msgstr ""
|
||||
msgstr "搜尋致電"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead2opportunity.partner:0
|
||||
|
@ -953,7 +953,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: view:crm.phonecall2opportunity:0
|
||||
msgid "Convert To Opportunity "
|
||||
msgstr ""
|
||||
msgstr "轉變為機會 "
|
||||
|
||||
#. module: crm
|
||||
#: help:crm.case.stage,sequence:0
|
||||
|
@ -1016,7 +1016,7 @@ msgstr "三月"
|
|||
#: code:addons/crm/crm_lead.py:230
|
||||
#, python-format
|
||||
msgid "The opportunity '%s' has been closed."
|
||||
msgstr ""
|
||||
msgstr "「%s」機會已結束。"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.lead,day_open:0
|
||||
|
@ -1033,7 +1033,7 @@ msgstr "將時間顯示為"
|
|||
#: view:crm.phonecall2partner:0
|
||||
#, python-format
|
||||
msgid "Create Partner"
|
||||
msgstr ""
|
||||
msgstr "建立伙伴"
|
||||
|
||||
#. module: crm
|
||||
#: selection:crm.segmentation.line,expr_operator:0
|
||||
|
@ -1056,7 +1056,7 @@ msgstr ""
|
|||
#, python-format
|
||||
msgid ""
|
||||
"There are no other 'Open' or 'Pending' Opportunities for the partner '%s'."
|
||||
msgstr ""
|
||||
msgstr "「%s」伙伴並無「開放」或「待處理」之機會。"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
|
@ -1105,7 +1105,7 @@ msgstr ""
|
|||
#: field:crm.meeting,date_action_next:0
|
||||
#: field:crm.phonecall,date_action_next:0
|
||||
msgid "Next Action"
|
||||
msgstr ""
|
||||
msgstr "下個動作"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.meeting,end_date:0
|
||||
|
@ -1128,7 +1128,7 @@ msgstr ""
|
|||
#: code:addons/crm/wizard/crm_phonecall_to_opportunity.py:57
|
||||
#, python-format
|
||||
msgid "Closed/Cancelled Phone Call Could not convert into Opportunity"
|
||||
msgstr ""
|
||||
msgstr "已結束/已取消之致電不能轉為機會"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.segmentation:0
|
||||
|
@ -1353,7 +1353,7 @@ msgstr "已處理最大伙伴ID"
|
|||
#: model:ir.actions.act_window,name:crm.action_report_crm_phonecall
|
||||
#: model:ir.ui.menu,name:crm.menu_report_crm_phonecalls_tree
|
||||
msgid "Phone Calls Analysis"
|
||||
msgstr ""
|
||||
msgstr "致電分析"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.lead.report,opening_date:0
|
||||
|
@ -1493,7 +1493,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: field:crm.phonecall2opportunity,name:0
|
||||
msgid "Opportunity Summary"
|
||||
msgstr ""
|
||||
msgstr "機會摘要"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.phonecall.report:0
|
||||
|
@ -1584,7 +1584,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_crm_merge_opportunity
|
||||
msgid "Merge two Opportunities"
|
||||
msgstr ""
|
||||
msgstr "合併兩個機會"
|
||||
|
||||
#. module: crm
|
||||
#: selection:crm.meeting,end_type:0
|
||||
|
@ -1611,7 +1611,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: model:ir.actions.act_window,name:crm.crm_phonecall_categ_action
|
||||
msgid "Phonecall Categories"
|
||||
msgstr ""
|
||||
msgstr "致電分類"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.meeting:0
|
||||
|
@ -1804,7 +1804,7 @@ msgstr "上級團隊"
|
|||
#. module: crm
|
||||
#: field:crm.lead,date_action:0
|
||||
msgid "Next Action Date"
|
||||
msgstr ""
|
||||
msgstr "下個動作日期"
|
||||
|
||||
#. module: crm
|
||||
#: selection:crm.segmentation,state:0
|
||||
|
@ -1850,7 +1850,7 @@ msgstr ""
|
|||
#: view:crm.phonecall.report:0
|
||||
#: model:ir.actions.act_window,name:crm.act_crm_opportunity_crm_phonecall_new
|
||||
msgid "Phone calls"
|
||||
msgstr ""
|
||||
msgstr "致電"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
|
@ -2070,7 +2070,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: model:process.node,note:crm.process_node_meeting0
|
||||
msgid "Schedule a normal or phone meeting"
|
||||
msgstr ""
|
||||
msgstr "安排正常或電話會談"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm.py:375
|
||||
|
@ -2331,7 +2331,7 @@ msgstr ""
|
|||
#: model:ir.ui.menu,name:crm.menu_crm_case_phone
|
||||
#: view:res.partner:0
|
||||
msgid "Phone Calls"
|
||||
msgstr ""
|
||||
msgstr "致電"
|
||||
|
||||
#. module: crm
|
||||
#: help:crm.lead.report,delay_open:0
|
||||
|
@ -2358,7 +2358,7 @@ msgstr "活躍"
|
|||
#: code:addons/crm/crm_lead.py:306
|
||||
#, python-format
|
||||
msgid "The stage of opportunity '%s' has been changed to '%s'."
|
||||
msgstr ""
|
||||
msgstr "機會階段已由「%s」變為「%s」。"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:282
|
||||
|
@ -2414,7 +2414,7 @@ msgstr ""
|
|||
#: field:crm.lead2partner,action:0
|
||||
#: field:crm.phonecall2partner,action:0
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
msgstr "動作"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.installer,crm_claim:0
|
||||
|
@ -2544,7 +2544,7 @@ msgstr ""
|
|||
#: view:board.board:0
|
||||
#: model:ir.actions.act_window,name:crm.act_my_oppor
|
||||
msgid "My Open Opportunities"
|
||||
msgstr ""
|
||||
msgstr "我的開放機會"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.actions.act_window,name:crm.open_board_statistical_dash
|
||||
|
@ -2585,7 +2585,7 @@ msgstr "會議類型"
|
|||
#: code:addons/crm/wizard/crm_lead_to_opportunity.py:314
|
||||
#, python-format
|
||||
msgid "Merge with Existing Opportunity"
|
||||
msgstr "與既有機會合併"
|
||||
msgstr "與現有機會合併"
|
||||
|
||||
#. module: crm
|
||||
#: help:crm.lead,state:0
|
||||
|
@ -2714,7 +2714,7 @@ msgstr ""
|
|||
#: field:crm.meeting,date_action_last:0
|
||||
#: field:crm.phonecall,date_action_last:0
|
||||
msgid "Last Action"
|
||||
msgstr ""
|
||||
msgstr "最後動作"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.meeting,duration:0
|
||||
|
@ -3485,7 +3485,7 @@ msgstr "各階段機會"
|
|||
#. module: crm
|
||||
#: model:ir.actions.act_window,name:crm.crm_case_categ_phone_create_partner
|
||||
msgid "Schedule Phone Call"
|
||||
msgstr ""
|
||||
msgstr "安排致電"
|
||||
|
||||
#. module: crm
|
||||
#: selection:crm.lead.report,month:0
|
||||
|
@ -3564,7 +3564,7 @@ msgstr ""
|
|||
#: code:addons/crm/wizard/crm_merge_opportunities.py:100
|
||||
#, python-format
|
||||
msgid "Merged into Opportunity: %s"
|
||||
msgstr "合併至機會:%s"
|
||||
msgstr "已合併至機會: %s"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm.py:347
|
||||
|
@ -3584,7 +3584,7 @@ msgstr "分類化"
|
|||
#. module: crm
|
||||
#: model:ir.model,name:crm.model_base_action_rule
|
||||
msgid "Action Rules"
|
||||
msgstr ""
|
||||
msgstr "動作規則"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.meeting,rrule_type:0
|
||||
|
@ -3594,7 +3594,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: field:crm.meeting,phonecall_id:0
|
||||
msgid "Phonecall"
|
||||
msgstr ""
|
||||
msgstr "致電"
|
||||
|
||||
#. module: crm
|
||||
#: selection:crm.meeting,week_list:0
|
||||
|
@ -3763,7 +3763,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: selection:crm.lead2opportunity.action,name:0
|
||||
msgid "Merge with existing Opportunity"
|
||||
msgstr ""
|
||||
msgstr "與現有機會合併"
|
||||
|
||||
#. module: crm
|
||||
#: field:crm.meeting,select1:0
|
||||
|
@ -3816,7 +3816,7 @@ msgstr ""
|
|||
#. module: crm
|
||||
#: field:res.partner,phonecall_ids:0
|
||||
msgid "Phonecalls"
|
||||
msgstr ""
|
||||
msgstr "致電"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead.report:0
|
||||
|
|
|
@ -92,7 +92,6 @@
|
|||
-
|
||||
!record {model: crm.lead2opportunity.partner, id: crm_lead2opportunity_partner_create_1}:
|
||||
action: 'exist'
|
||||
name: 'existing partner'
|
||||
-
|
||||
Then, Click on "Create Opportunity" button.
|
||||
-
|
||||
|
@ -104,7 +103,6 @@
|
|||
-
|
||||
!record {model: crm.lead2opportunity.partner, id: crm_lead2opportunity_partner_create_2}:
|
||||
action: 'nothing'
|
||||
name: 'Do not link to a partner'
|
||||
-
|
||||
Then, Click on "Create Opportunity" button.
|
||||
-
|
||||
|
|
|
@ -37,7 +37,7 @@ class crm_lead2opportunity_partner(osv.osv_memory):
|
|||
('nothing', 'Do not link to a partner')], \
|
||||
'Action', required=True),
|
||||
'name': fields.selection([('convert', 'Convert to Opportunity'), ('merge', 'Merge with existing Opportunity')],'Select Action', required=True),
|
||||
'opportunity_ids': fields.many2many('crm.lead', 'merge_opportunity_rel', 'merge_id', 'opportunity_id', 'Opportunities', domain=[('type', '=', 'opportunity')]),
|
||||
'opportunity_ids': fields.many2many('crm.lead', string='Opportunities', domain=[('type', '=', 'opportunity')]),
|
||||
}
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
|
@ -236,7 +236,7 @@ class crm_lead2opportunity_mass_convert(osv.osv_memory):
|
|||
|
||||
|
||||
_columns = {
|
||||
'user_ids': fields.many2many('res.users', 'mass_convert_rel', 'user_id', 'wizard_id', 'Salesmans'),
|
||||
'user_ids': fields.many2many('res.users', string='Salesmans'),
|
||||
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
|
||||
|
||||
}
|
||||
|
|
|
@ -142,7 +142,7 @@ class crm_merge_opportunity(osv.osv_memory):
|
|||
count+=1
|
||||
|
||||
for history in opp.message_ids:
|
||||
message_obj.write(cr, uid, history.id, {'res_id': first_opportunity.id, 'name' : _("From %s : %s") % (opp.name, history.name) }, context=context)
|
||||
message_obj.write(cr, uid, history.id, {'res_id': first_opportunity.id, 'subject' : _("From %s : %s") % (opp.name, history.subject) }, context=context)
|
||||
|
||||
#Notification about loss of information
|
||||
details = []
|
||||
|
|
|
@ -108,6 +108,7 @@
|
|||
'email_to': 'info@axelor.com',
|
||||
'email_from': 'Administrator <admin@openerp.com>',
|
||||
'reply_to': 'sales_openerp@openerp.com',
|
||||
'state': 'draft',
|
||||
'history': 'latest',
|
||||
}
|
||||
ids = self.create(cr, uid, vals, context={'active_id': ref('crm_lead_questionnaireonopenerp0'), 'active_model': 'crm.lead'})
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
</group>
|
||||
<separator string="" colspan="4" />
|
||||
<group col="6" colspan="4">
|
||||
<field name="smtp_server_id" widget="selection" colspan="4"/>
|
||||
<field name="email_from" colspan="4" required="1"/>
|
||||
<field name="email_to" colspan="4" required="1"/>
|
||||
<field name="email_cc" colspan="4"/>
|
||||
|
|
|
@ -264,7 +264,7 @@ class crm_segmentation(osv.osv):
|
|||
}
|
||||
|
||||
_constraints = [
|
||||
(orm.orm._check_recursion, 'Error ! You can not create recursive profiles.', ['parent_id'])
|
||||
(osv.osv._check_recursion, 'Error ! You can not create recursive profiles.', ['parent_id'])
|
||||
]
|
||||
|
||||
def process_continue(self, cr, uid, ids, start=False):
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 08:06+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: decimal_precision
|
||||
#: field:decimal.precision,digits:0
|
||||
msgid "Digits"
|
||||
msgstr "數字"
|
||||
|
||||
#. module: decimal_precision
|
||||
#: view:decimal.precision:0
|
||||
msgid "Decimal Precision"
|
||||
msgstr "小數精確度"
|
||||
|
||||
#. module: decimal_precision
|
||||
#: model:ir.actions.act_window,name:decimal_precision.action_decimal_precision_form
|
||||
#: model:ir.ui.menu,name:decimal_precision.menu_decimal_precision_form
|
||||
msgid "Decimal Accuracy Definitions"
|
||||
msgstr ""
|
||||
|
||||
#. module: decimal_precision
|
||||
#: model:ir.module.module,description:decimal_precision.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
"This module allows to configure the price accuracy you need for different "
|
||||
"kind\n"
|
||||
"of usage: accounting, sales, purchases, ...\n"
|
||||
"\n"
|
||||
"The decimal precision is configured per company.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"此模組讓您為會計、銷售、採購...等不同用途設定價錢準確度。\n"
|
||||
"\n"
|
||||
"每間公司之小數精確度可以不同。\n"
|
||||
|
||||
#. module: decimal_precision
|
||||
#: field:decimal.precision,name:0
|
||||
msgid "Usage"
|
||||
msgstr "用途"
|
||||
|
||||
#. module: decimal_precision
|
||||
#: sql_constraint:decimal.precision:0
|
||||
msgid "Only one value can be defined for each given usage!"
|
||||
msgstr "每種用途只可定義一個值!"
|
||||
|
||||
#. module: decimal_precision
|
||||
#: model:ir.module.module,shortdesc:decimal_precision.module_meta_information
|
||||
msgid "Decimal Precision Configuration"
|
||||
msgstr "小數精確度設定"
|
||||
|
||||
#. module: decimal_precision
|
||||
#: model:ir.model,name:decimal_precision.model_decimal_precision
|
||||
msgid "decimal.precision"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Decimal Accuracy"
|
||||
#~ msgstr "小數準確度"
|
|
@ -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: 2011-01-11 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-01-28 03:29+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 10:27+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-05 05:01+0000\n"
|
||||
"X-Generator: Launchpad (build 13830)\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-28 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: delivery
|
||||
#: report:sale.shipping:0
|
||||
msgid "Order Ref."
|
||||
msgstr "單號參照"
|
||||
msgstr "訂單參考"
|
||||
|
||||
#. module: delivery
|
||||
#: model:product.template,name:delivery.delivery_product_product_template
|
||||
|
@ -67,7 +67,7 @@ msgstr "體積"
|
|||
#. module: delivery
|
||||
#: sql_constraint:sale.order:0
|
||||
msgid "Order Reference must be unique !"
|
||||
msgstr "交貨參照不能重覆!"
|
||||
msgstr "訂單參考不能重覆!"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.grid,line_ids:0
|
||||
|
@ -82,17 +82,17 @@ msgstr "交貨單"
|
|||
#. module: delivery
|
||||
#: view:res.partner:0
|
||||
msgid "Deliveries Properties"
|
||||
msgstr ""
|
||||
msgstr "交貨性質"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.actions.act_window,name:delivery.action_picking_tree4
|
||||
msgid "Picking to be invoiced"
|
||||
msgstr ""
|
||||
msgstr "要開立發票的提貨"
|
||||
|
||||
#. module: delivery
|
||||
#: help:delivery.grid,sequence:0
|
||||
msgid "Gives the sequence order when displaying a list of delivery grid."
|
||||
msgstr ""
|
||||
msgstr "提供顯示交貨格線清單的次序。"
|
||||
|
||||
#. module: delivery
|
||||
#: view:delivery.grid:0
|
||||
|
@ -103,12 +103,12 @@ msgstr "國家"
|
|||
#. module: delivery
|
||||
#: report:sale.shipping:0
|
||||
msgid "Delivery Order :"
|
||||
msgstr "交貨單:"
|
||||
msgstr "交貨單 :"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.grid.line,variable_factor:0
|
||||
msgid "Variable Factor"
|
||||
msgstr ""
|
||||
msgstr "可變因子"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.actions.act_window,help:delivery.action_delivery_grid_form
|
||||
|
@ -132,7 +132,7 @@ msgstr "固定"
|
|||
#: field:res.partner,property_delivery_carrier:0
|
||||
#: field:sale.order,carrier_id:0
|
||||
msgid "Delivery Method"
|
||||
msgstr "交貨方式"
|
||||
msgstr "交貨方法"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.model,name:delivery.model_stock_move
|
||||
|
@ -143,12 +143,12 @@ msgstr "庫存調動"
|
|||
#: code:addons/delivery/delivery.py:141
|
||||
#, python-format
|
||||
msgid "No line matched this order in the choosed delivery grids !"
|
||||
msgstr ""
|
||||
msgstr "選擇的交貨格無一行符合此訂單 !"
|
||||
|
||||
#. module: delivery
|
||||
#: field:stock.picking,carrier_tracking_ref:0
|
||||
msgid "Carrier Tracking Ref"
|
||||
msgstr "運輸公司追蹤編號"
|
||||
msgstr "運輸公司追蹤參考"
|
||||
|
||||
#. module: delivery
|
||||
#: field:stock.picking,weight_net:0
|
||||
|
@ -172,7 +172,7 @@ msgstr "警告"
|
|||
#. module: delivery
|
||||
#: view:delivery.grid:0
|
||||
msgid "Grid definition"
|
||||
msgstr ""
|
||||
msgstr "格線定義"
|
||||
|
||||
#. module: delivery
|
||||
#: view:delivery.sale.order:0
|
||||
|
@ -197,12 +197,12 @@ msgstr "銷貨單"
|
|||
#. module: delivery
|
||||
#: model:ir.model,name:delivery.model_delivery_grid
|
||||
msgid "Delivery Grid"
|
||||
msgstr ""
|
||||
msgstr "交貨格線"
|
||||
|
||||
#. module: delivery
|
||||
#: report:sale.shipping:0
|
||||
msgid "Invoiced to"
|
||||
msgstr "發票交至"
|
||||
msgstr "發票開立對象:"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.model,name:delivery.model_stock_picking
|
||||
|
@ -212,7 +212,7 @@ msgstr "提貨清單"
|
|||
#. module: delivery
|
||||
#: model:ir.model,name:delivery.model_delivery_sale_order
|
||||
msgid "Make Delievery"
|
||||
msgstr ""
|
||||
msgstr "進行交貨"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.module.module,description:delivery.module_meta_information
|
||||
|
@ -228,12 +228,12 @@ msgstr ""
|
|||
#. module: delivery
|
||||
#: view:delivery.grid.line:0
|
||||
msgid "Grid Lines"
|
||||
msgstr ""
|
||||
msgstr "格線"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.grid.line,grid_id:0
|
||||
msgid "Grid"
|
||||
msgstr ""
|
||||
msgstr "網格"
|
||||
|
||||
#. module: delivery
|
||||
#: help:delivery.grid,active:0
|
||||
|
@ -245,17 +245,17 @@ msgstr ""
|
|||
#. module: delivery
|
||||
#: field:delivery.grid,zip_to:0
|
||||
msgid "To Zip"
|
||||
msgstr ""
|
||||
msgstr "至郵遞區號"
|
||||
|
||||
#. module: delivery
|
||||
#: report:sale.shipping:0
|
||||
msgid "Order Date"
|
||||
msgstr "單子日期"
|
||||
msgstr "訂單日期"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.grid,name:0
|
||||
msgid "Grid Name"
|
||||
msgstr ""
|
||||
msgstr "網格名稱"
|
||||
|
||||
#. module: delivery
|
||||
#: view:stock.move:0
|
||||
|
@ -287,7 +287,7 @@ msgstr ""
|
|||
#: code:addons/delivery/wizard/delivery_sale_order.py:95
|
||||
#, python-format
|
||||
msgid "No grid available !"
|
||||
msgstr ""
|
||||
msgstr "無可用網格 !"
|
||||
|
||||
#. module: delivery
|
||||
#: selection:delivery.grid.line,operator:0
|
||||
|
@ -299,7 +299,7 @@ msgstr ""
|
|||
#: code:addons/delivery/wizard/delivery_sale_order.py:98
|
||||
#, python-format
|
||||
msgid "Order not in draft state !"
|
||||
msgstr ""
|
||||
msgstr "訂單不在草稿階段 !"
|
||||
|
||||
#. module: delivery
|
||||
#: constraint:res.partner:0
|
||||
|
@ -314,7 +314,7 @@ msgstr "批次"
|
|||
#. module: delivery
|
||||
#: constraint:stock.move:0
|
||||
msgid "You try to assign a lot which is not from the same product"
|
||||
msgstr ""
|
||||
msgstr "指定了不同產品的批次"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.carrier,active:0
|
||||
|
@ -325,7 +325,7 @@ msgstr "活躍"
|
|||
#. module: delivery
|
||||
#: report:sale.shipping:0
|
||||
msgid "Shipping Date"
|
||||
msgstr ""
|
||||
msgstr "貨運日期"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.carrier,product_id:0
|
||||
|
@ -382,7 +382,7 @@ msgstr "運輸公司伙伴"
|
|||
#. module: delivery
|
||||
#: view:res.partner:0
|
||||
msgid "Sales & Purchases"
|
||||
msgstr "銷售&採購"
|
||||
msgstr "銷售 及 購貨"
|
||||
|
||||
#. module: delivery
|
||||
#: selection:delivery.grid.line,operator:0
|
||||
|
@ -392,12 +392,12 @@ msgstr ""
|
|||
#. module: delivery
|
||||
#: constraint:stock.move:0
|
||||
msgid "You must assign a production lot for this product"
|
||||
msgstr "須為此產品分配生產批次"
|
||||
msgstr "須為此產品指定生產批次"
|
||||
|
||||
#. module: delivery
|
||||
#: view:delivery.sale.order:0
|
||||
msgid "Create Deliveries"
|
||||
msgstr ""
|
||||
msgstr "進行交貨"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.actions.act_window,name:delivery.action_delivery_cost
|
||||
|
@ -481,7 +481,7 @@ msgstr ""
|
|||
#: code:addons/delivery/wizard/delivery_sale_order.py:98
|
||||
#, python-format
|
||||
msgid "The order state have to be draft to add delivery lines."
|
||||
msgstr ""
|
||||
msgstr "訂單狀態要是草稿才能添加交貨明細。"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.module.module,shortdesc:delivery.module_meta_information
|
||||
|
@ -491,12 +491,12 @@ msgstr "運輸公司與交貨"
|
|||
#. module: delivery
|
||||
#: field:delivery.carrier,grids_id:0
|
||||
msgid "Delivery Grids"
|
||||
msgstr ""
|
||||
msgstr "交貨網格"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.grid,sequence:0
|
||||
msgid "Sequence"
|
||||
msgstr ""
|
||||
msgstr "次序"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.grid.line,list_price:0
|
||||
|
@ -507,7 +507,7 @@ msgstr "銷售價"
|
|||
#: view:delivery.grid:0
|
||||
#: field:delivery.grid,state_ids:0
|
||||
msgid "States"
|
||||
msgstr ""
|
||||
msgstr "狀態"
|
||||
|
||||
#. module: delivery
|
||||
#: field:delivery.grid.line,price_type:0
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -65,7 +65,9 @@ class mail_compose_message(osv.osv_memory):
|
|||
|
||||
_columns = {
|
||||
'use_template': fields.boolean('Use Template'),
|
||||
'template_id': fields.selection(_get_templates, 'Template'),
|
||||
'template_id': fields.selection(_get_templates, 'Template',
|
||||
size=-1 # means we want an int db column
|
||||
),
|
||||
}
|
||||
|
||||
def on_change_template(self, cr, uid, ids, use_template, template_id, email_from=None, email_to=None, context=None):
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-01-28 15:50+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 07:58+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-05 05:04+0000\n"
|
||||
"X-Generator: Launchpad (build 13830)\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-28 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: event
|
||||
#: view:event.event:0
|
||||
|
@ -717,7 +717,7 @@ msgstr "八月"
|
|||
#: field:res.partner,event_ids:0
|
||||
#: field:res.partner,event_registration_ids:0
|
||||
msgid "unknown"
|
||||
msgstr "不明"
|
||||
msgstr "不詳"
|
||||
|
||||
#. module: event
|
||||
#: selection:report.event.registration,month:0
|
||||
|
|
|
@ -30,9 +30,10 @@ from report.interface import toxml
|
|||
|
||||
from report import report_sxw
|
||||
from tools import ustr
|
||||
from tools.translate import _
|
||||
|
||||
one_day = relativedelta(days=1)
|
||||
month2name = [0, 'January', 'February', 'March', 'April', 'May', 'Jun', 'July', 'August', 'September', 'October', 'November', 'December']
|
||||
month2name = [0, 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
|
||||
|
||||
def hour2str(h):
|
||||
hours = int(h)
|
||||
|
@ -52,7 +53,7 @@ class report_custom(report_rml):
|
|||
context = {}
|
||||
month = datetime(datas['form']['year'], datas['form']['month'], 1)
|
||||
emp_ids = context.get('active_ids', [])
|
||||
user_xml = ['<month>%s</month>' % month2name[month.month], '<year>%s</year>' % month.year]
|
||||
user_xml = ['<month>%s</month>' % _(month2name[month.month]), '<year>%s</year>' % month.year]
|
||||
if emp_ids:
|
||||
for emp in obj_emp.read(cr, uid, emp_ids, ['name']):
|
||||
stop, days_xml = False, []
|
||||
|
@ -95,7 +96,7 @@ class report_custom(report_rml):
|
|||
days_xml.append(today_xml)
|
||||
today, tomor = tomor, tomor + one_day
|
||||
user_xml.append(user_repr % '\n'.join(days_xml))
|
||||
|
||||
|
||||
rpt_obj = pooler.get_pool(cr.dbname).get('hr.employee')
|
||||
rml_obj=report_sxw.rml_parse(cr, uid, rpt_obj._name,context)
|
||||
header_xml = '''
|
||||
|
@ -104,7 +105,7 @@ class report_custom(report_rml):
|
|||
<company>%s</company>
|
||||
</header>
|
||||
''' % (str(rml_obj.formatLang(time.strftime("%Y-%m-%d"),date=True))+' ' + str(time.strftime("%H:%M")),pooler.get_pool(cr.dbname).get('res.users').browse(cr,uid,uid).company_id.name)
|
||||
|
||||
|
||||
first_date = str(month)
|
||||
som = datetime.strptime(first_date, '%Y-%m-%d %H:%M:%S')
|
||||
eom = som + timedelta(int(dy)-1)
|
||||
|
@ -113,12 +114,12 @@ class report_custom(report_rml):
|
|||
cell=1
|
||||
date_xml.append('<days>')
|
||||
if day_diff.days>=30:
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som.replace(day=x).strftime('%a')),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
|
||||
else:
|
||||
if day_diff.days>=(lengthmonth(som.year, som.month)-som.day):
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som.replace(day=x).strftime('%a')),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
|
||||
else:
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, eom.day+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som.replace(day=x).strftime('%a')),x-som.day+1) for x in range(som.day, eom.day+1)]
|
||||
cell=x-som.day+1
|
||||
day_diff1=day_diff.days-cell+1
|
||||
width_dict={}
|
||||
|
@ -129,12 +130,12 @@ class report_custom(report_rml):
|
|||
month=som.month
|
||||
month_dict[j]=som.strftime('%B')
|
||||
width_dict[j]=cell
|
||||
|
||||
|
||||
while day_diff1>0:
|
||||
if month+i<=12:
|
||||
if day_diff1 > lengthmonth(year,i+month): # Not on 30 else you have problems when entering 01-01-2009 for example
|
||||
som1=datetime.date(year,month+i,1)
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, lengthmonth(year,i+month)+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som1.replace(day=x).strftime('%a')),cell+x) for x in range(1, lengthmonth(year,i+month)+1)]
|
||||
i=i+1
|
||||
j=j+1
|
||||
month_dict[j]=som1.strftime('%B')
|
||||
|
@ -142,7 +143,7 @@ class report_custom(report_rml):
|
|||
width_dict[j]=x
|
||||
else:
|
||||
som1=datetime.date(year,month+i,1)
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, eom.day+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som1.replace(day=x).strftime('%a')),cell+x) for x in range(1, eom.day+1)]
|
||||
i=i+1
|
||||
j=j+1
|
||||
month_dict[j]=som1.strftime('%B')
|
||||
|
@ -156,7 +157,7 @@ class report_custom(report_rml):
|
|||
i=1
|
||||
if day_diff1>=30:
|
||||
som1=datetime.date(years,i,1)
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, lengthmonth(years,i)+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som1.replace(day=x).strftime('%a')),cell+x) for x in range(1, lengthmonth(years,i)+1)]
|
||||
i=i+1
|
||||
j=j+1
|
||||
month_dict[j]=som1.strftime('%B')
|
||||
|
@ -167,7 +168,7 @@ class report_custom(report_rml):
|
|||
i=i+1
|
||||
j=j+1
|
||||
month_dict[j]=som1.strftime('%B')
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, eom.day+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som1.replace(day=x).strftime('%a')),cell+x) for x in range(1, eom.day+1)]
|
||||
cell=cell+x
|
||||
width_dict[j]=x
|
||||
day_diff1=day_diff1-x
|
||||
|
@ -176,10 +177,11 @@ class report_custom(report_rml):
|
|||
xml = '''<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<report>
|
||||
%s
|
||||
<title>%s</title>
|
||||
%s
|
||||
%s
|
||||
</report>
|
||||
''' % (header_xml,'\n'.join(user_xml),date_xml)
|
||||
''' % (header_xml,_('Attendances By Month'),'\n'.join(user_xml),date_xml)
|
||||
return xml
|
||||
|
||||
report_custom('report.hr.attendance.bymonth', 'hr.employee', '', 'addons/hr_attendance/report/bymonth.xsl')
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
|
||||
<xsl:template name="stylesheet">
|
||||
<paraStyle name="title" fontName="Helvetica-Bold" fontSize="15.0" leading="17" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="14.0" leading="17" alignment="CENTER" spaceBefore="12.0" spaceAfter="6.0"/>
|
||||
<paraStyle name="name" fontName="Helvetica" textColor="green" fontSize="7"/>
|
||||
<paraStyle name="normal" fontName="Helvetica" fontSize="6"/>
|
||||
|
@ -29,7 +30,7 @@
|
|||
|
||||
<xsl:template name="story">
|
||||
<spacer length="1cm" />
|
||||
<para style="terp_header_Centre" t="1">Attendances By Month</para>
|
||||
<xsl:apply-templates select="report/title"/>
|
||||
<spacer length="1cm" />
|
||||
<blockTable>
|
||||
<xsl:attribute name="style">week</xsl:attribute>
|
||||
|
@ -53,7 +54,14 @@
|
|||
<xsl:apply-templates select="report/user"/>
|
||||
</blockTable>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="title">
|
||||
<para style="title">
|
||||
<xsl:value-of select="."/>
|
||||
</para>
|
||||
<spacer length="1cm"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="user">
|
||||
<!-- <tr></tr>-->
|
||||
<tr>
|
||||
|
|
|
@ -29,7 +29,7 @@ class hr_si_so_ask(osv.osv_memory):
|
|||
_columns = {
|
||||
'name': fields.char('Employees name', size=32, required=True, readonly=True),
|
||||
'last_time': fields.datetime('Your last sign out', required=True),
|
||||
'emp_id': fields.char('Empoyee ID', size=32, required=True, readonly=True),
|
||||
'emp_id': fields.many2one('hr.employee', 'Empoyee ID', readonly=True),
|
||||
}
|
||||
|
||||
def _get_empname(self, cr, uid, context=None):
|
||||
|
@ -52,10 +52,12 @@ class hr_si_so_ask(osv.osv_memory):
|
|||
|
||||
def sign_in(self, cr, uid, ids, context=None):
|
||||
data = self.read(cr, uid, ids, [], context=context)[0]
|
||||
data['emp_id'] = data['emp_id'] and data['emp_id'][0]
|
||||
return self.pool.get('hr.sign.in.out').sign_in(cr, uid, data, context)
|
||||
|
||||
def sign_out(self, cr, uid, ids, context=None):
|
||||
data = self.read(cr, uid, ids, [], context=context)[0]
|
||||
data['emp_id'] = data['emp_id'] and data['emp_id'][0]
|
||||
return self.pool.get('hr.sign.in.out').sign_out(cr, uid, data, context)
|
||||
|
||||
hr_si_so_ask()
|
||||
|
@ -68,7 +70,7 @@ class hr_sign_in_out(osv.osv_memory):
|
|||
_columns = {
|
||||
'name': fields.char('Employees name', size=32, required=True, readonly=True),
|
||||
'state': fields.char('Current state', size=32, required=True, readonly=True),
|
||||
'emp_id': fields.char('Employee ID', size=32, required=True, readonly=True),
|
||||
'emp_id': fields.many2one('hr.employee', 'Empoyee ID', readonly=True),
|
||||
}
|
||||
|
||||
def _get_empid(self, cr, uid, context=None):
|
||||
|
@ -88,6 +90,7 @@ class hr_sign_in_out(osv.osv_memory):
|
|||
obj_model = self.pool.get('ir.model.data')
|
||||
att_obj = self.pool.get('hr.attendance')
|
||||
data = self.read(cr, uid, ids, [], context=context)[0]
|
||||
data['emp_id'] = data['emp_id'] and data['emp_id'][0]
|
||||
emp_id = data['emp_id']
|
||||
att_id = att_obj.search(cr, uid, [('employee_id', '=', emp_id)], limit=1, order='name desc')
|
||||
last_att = att_obj.browse(cr, uid, att_id, context=context)
|
||||
|
@ -113,6 +116,7 @@ class hr_sign_in_out(osv.osv_memory):
|
|||
obj_model = self.pool.get('ir.model.data')
|
||||
att_obj = self.pool.get('hr.attendance')
|
||||
data = self.read(cr, uid, ids, [], context=context)[0]
|
||||
data['emp_id'] = data['emp_id'] and data['emp_id'][0]
|
||||
emp_id = data['emp_id']
|
||||
att_id = att_obj.search(cr, uid, [('employee_id', '=', emp_id),('action', '!=', 'action')], limit=1, order='name desc')
|
||||
last_att = att_obj.browse(cr, uid, att_id, context=context)
|
||||
|
|
|
@ -30,6 +30,7 @@ import pooler
|
|||
import time
|
||||
from report import report_sxw
|
||||
from tools import ustr
|
||||
from tools.translate import _
|
||||
|
||||
def lengthmonth(year, month):
|
||||
if month == 2 and ((year % 4 == 0) and ((year % 100 != 0) or (year % 400 == 0))):
|
||||
|
@ -69,9 +70,9 @@ def emp_create_xml(self, cr, uid, dept, holiday_type, row_id, empid, name, som,
|
|||
for index in range(1,61):
|
||||
display[index]=' '
|
||||
count=''
|
||||
|
||||
|
||||
data_xml=['<info id="%d" number="%d" val="%s" />' % (row_id,x,display[x]) for x in range(1,len(display)+1) ]
|
||||
|
||||
|
||||
# Computing the xml
|
||||
xml = '''
|
||||
%s
|
||||
|
@ -120,18 +121,17 @@ class report_custom(report_rml):
|
|||
|
||||
# date_xml=[]
|
||||
for l in range(0,len(legend)):
|
||||
date_xml += ['<legend row="%d" id="%d" name="%s" color="%s" />' % (l+1,legend[l][0],legend[l][1],legend[l][2])]
|
||||
|
||||
date_xml += ['<legend row="%d" id="%d" name="%s" color="%s" />' % (l+1,legend[l][0],_(legend[l][1]),legend[l][2])]
|
||||
date_xml += ['<date month="%s" year="%d" />' % (som.strftime('%B'), som.year),'<days>']
|
||||
|
||||
cell=1
|
||||
if day_diff.days>=30:
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som.replace(day=x).strftime('%a')),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
|
||||
else:
|
||||
if day_diff.days>=(lengthmonth(som.year, som.month)-som.day):
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som.replace(day=x).strftime('%a')),x-som.day+1) for x in range(som.day, lengthmonth(som.year, som.month)+1)]
|
||||
else:
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som.replace(day=x).strftime('%a'),x-som.day+1) for x in range(som.day, eom.day+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som.replace(day=x).strftime('%a')),x-som.day+1) for x in range(som.day, eom.day+1)]
|
||||
|
||||
cell=x-som.day+1
|
||||
day_diff1=day_diff.days-cell+1
|
||||
|
@ -150,7 +150,7 @@ class report_custom(report_rml):
|
|||
if month+i<=12:
|
||||
if day_diff1 > lengthmonth(year,i+month): # Not on 30 else you have problems when entering 01-01-2009 for example
|
||||
som1=datetime.date(year,month+i,1)
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, lengthmonth(year,i+month)+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som1.replace(day=x).strftime('%a')),cell+x) for x in range(1, lengthmonth(year,i+month)+1)]
|
||||
i=i+1
|
||||
j=j+1
|
||||
month_dict[j]=som1.strftime('%B')
|
||||
|
@ -159,7 +159,7 @@ class report_custom(report_rml):
|
|||
|
||||
else:
|
||||
som1=datetime.date(year,month+i,1)
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, eom.day+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som1.replace(day=x).strftime('%a')),cell+x) for x in range(1, eom.day+1)]
|
||||
i=i+1
|
||||
j=j+1
|
||||
month_dict[j]=som1.strftime('%B')
|
||||
|
@ -174,7 +174,7 @@ class report_custom(report_rml):
|
|||
i=1
|
||||
if day_diff1>=30:
|
||||
som1=datetime.date(years,i,1)
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, lengthmonth(years,i)+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som1.replace(day=x).strftime('%a')),cell+x) for x in range(1, lengthmonth(years,i)+1)]
|
||||
i=i+1
|
||||
j=j+1
|
||||
month_dict[j]=som1.strftime('%B')
|
||||
|
@ -186,7 +186,7 @@ class report_custom(report_rml):
|
|||
i=i+1
|
||||
j=j+1
|
||||
month_dict[j]=som1.strftime('%B')
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, som1.replace(day=x).strftime('%a'),cell+x) for x in range(1, eom.day+1)]
|
||||
date_xml += ['<dayy number="%d" name="%s" cell="%d"/>' % (x, _(som1.replace(day=x).strftime('%a')),cell+x) for x in range(1, eom.day+1)]
|
||||
cell=cell+x
|
||||
width_dict[j]=x
|
||||
|
||||
|
@ -200,16 +200,16 @@ class report_custom(report_rml):
|
|||
st+=',' + str(0.4 *width_dict[m])+'cm'
|
||||
st+=',0.4cm</cols_months>\n'
|
||||
|
||||
months_xml =['<months number="%d" name="%s" />' % (x,month_dict[x]) for x in range(1,len(month_dict)+1) ]
|
||||
months_xml =['<months number="%d" name="%s"/>' % (x, _(month_dict[x])) for x in range(1,len(month_dict)+1) ]
|
||||
months_xml.append(st)
|
||||
|
||||
|
||||
emp_xml=''
|
||||
row_id=1
|
||||
|
||||
|
||||
if data['model']=='hr.employee':
|
||||
for id in data['form']['emp']:
|
||||
items = obj_emp.read(cr, uid, id, ['id','name'])
|
||||
|
||||
|
||||
emp_xml += emp_create_xml(self, cr, uid, 0, holiday_type, row_id, items['id'], items['name'], som, eom)
|
||||
row_id = row_id +1
|
||||
|
||||
|
@ -229,7 +229,7 @@ class report_custom(report_rml):
|
|||
dept_done=1
|
||||
emp_xml += emp_create_xml(self, cr, uid, 0, holiday_type, row_id, item['id'], item['name'], som, eom)
|
||||
row_id = row_id +1
|
||||
|
||||
|
||||
header_xml = '''
|
||||
<header>
|
||||
<date>%s</date>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<group col="9" colspan="8">
|
||||
<field name="state" readonly="1"/>
|
||||
<button name="set_cancel" string="Cancel" type="object" states="open,pending" icon="gtk-cancel"/>
|
||||
<button name="set_open" string="Reactivate Account" type="object" states="pending,cancelled,close" icon="gtk-ok"/>
|
||||
<button name="set_open" string="Reactivate Account" type="object" states="pending,cancelled,close,draft" icon="gtk-ok"/>
|
||||
<button name="set_pending" string="Pending" type="object" states="open" icon="gtk-media-pause"/>
|
||||
<button name="set_close" string="Close" type="object" states="open,pending" icon="terp-dialog-close"/>
|
||||
</group>
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
-
|
||||
!python {model: idea.post.vote}: |
|
||||
uid2 = ref('test_idea_user1')
|
||||
new_id = self.create(cr, uid2, {'vote': 50}, {"active_ids": [ref("idea_idea_0")]})
|
||||
new_id = self.create(cr, uid2, {'vote': "50"}, {"active_ids": [ref("idea_idea_0")]})
|
||||
self.do_vote(cr, uid2, [new_id], {"active_ids": [ref("idea_idea_0")]})
|
||||
|
||||
- |
|
||||
|
@ -69,7 +69,7 @@
|
|||
-
|
||||
!python {model: idea.post.vote}: |
|
||||
uid2 = ref('test_idea_user2')
|
||||
new_id = self.create(cr, uid2, {'vote': 100, 'note': 'We can learn many things from technical presentation'}, {"active_ids": [ref("idea_idea_0")]})
|
||||
new_id = self.create(cr, uid2, {'vote': "100", 'note': 'We can learn many things from technical presentation'}, {"active_ids": [ref("idea_idea_0")]})
|
||||
self.do_vote(cr, uid2, [new_id], {'active_ids': [ref('idea_idea_0')]})
|
||||
|
||||
- |
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
<record model="account.account.type" id="account_type_equity">
|
||||
<field name="name">Eigenkapital</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -117,7 +117,8 @@ class partner_vat_list_13(osv.osv_memory):
|
|||
""" Partner Vat Listing """
|
||||
_name = "partner.vat.list_13"
|
||||
_columns = {
|
||||
'partner_ids': fields.many2many('vat.listing.clients', 'vat_partner_rel', 'vat_id', 'partner_id', 'Clients', required=False, help='You can remove clients/partners which you do not want to show in xml file'),
|
||||
# TODO the referenced model has been deleted at revno 4672.1.2.
|
||||
#'partner_ids': fields.many2many('vat.listing.clients', 'vat_partner_rel', 'vat_id', 'partner_id', 'Clients', required=False, help='You can remove clients/partners which you do not want to show in xml file'),
|
||||
'name': fields.char('File Name', size=32),
|
||||
'msg': fields.text('File created', size=64, readonly=True),
|
||||
'file_save' : fields.binary('Save File', readonly=True),
|
||||
|
@ -127,7 +128,8 @@ class partner_vat_list_13(osv.osv_memory):
|
|||
return context.get('partner_ids', [])
|
||||
|
||||
_defaults={
|
||||
'partner_ids': _get_partners
|
||||
# TODO the referenced model has been deleted at revno 4672.1.2.
|
||||
# 'partner_ids': _get_partners
|
||||
}
|
||||
|
||||
def create_xml(self, cursor, user, ids, context=None):
|
||||
|
|
|
@ -83,9 +83,10 @@ class partner_vat_intra(osv.osv_memory):
|
|||
else:
|
||||
data_cmpny = obj_user.browse(cursor, user, user).company_id
|
||||
data = self.read(cursor, user, ids)[0]
|
||||
company_vat = data_cmpny.partner_id.vat.replace(' ','').upper()
|
||||
company_vat = data_cmpny.partner_id.vat
|
||||
if not company_vat:
|
||||
raise osv.except_osv(_('Data Insufficient'),_('No VAT Number Associated with Main Company!'))
|
||||
company_vat = company_vat.replace(' ','').upper()
|
||||
|
||||
seq_controlref = obj_sequence.get(cursor, user, 'controlref')
|
||||
seq_declarantnum = obj_sequence.get(cursor, user, 'declarantnum')
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
<record model="account.account.type" id="user_type_equity_en">
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
<field name="code">Eq</field>
|
||||
<field name="name">Equity</field>
|
||||
<field name="sign" eval="-1"/>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">detail</field>
|
||||
</record>
|
||||
<record id="account_account_type_expense" model="account.account.type">
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
<record model="account.account.type" id="account_type_equity">
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">asset</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
<record id="account_type_cash_equity" model="account.account.type">
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">asset</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
<record id="account_type_income" model="account.account.type">
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<record id="cpt_type_cp" model="account.account.type">
|
||||
<field name="name">Capitaux Propres</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">asset</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
<record id="cpt_type_dlt" model="account.account.type">
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
<record model="account.account.type" id="account_type_equity">
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
<record model="account.account.type" id="account_type_equity"> <!-- de capital -->
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
<record model="account.account.type" id="account_type_equity">
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">asset</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
<record model="account.account.type" id="account_type_provision">
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
<record model="account.account.type" id="account_type_equity">
|
||||
<field name="name">Equity</field>
|
||||
<field name="code">equity</field>
|
||||
<field name="report_type">liability</field>
|
||||
<field name="close_method">balance</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -0,0 +1,540 @@
|
|||
# Chinese (Traditional) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 08:10+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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: 2011-09-28 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_view:lunch.cashbox.clean,init:0
|
||||
msgid "Reset cashbox"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.act_window,name:lunch.action_lunch_order_form
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch_order_form
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch_reporting_order
|
||||
msgid "Lunch Orders"
|
||||
msgstr "午膳訂單"
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_view:lunch.order.cancel,init:0
|
||||
msgid "Are you sure you want to cancel this order ?"
|
||||
msgstr "是否取消此訂單?"
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch_cashmove_form
|
||||
msgid "Cash Moves"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.cashmove:0
|
||||
#: view:lunch.order:0
|
||||
#: view:report.lunch.amount:0
|
||||
#: view:report.lunch.order:0
|
||||
msgid "Group By..."
|
||||
msgstr "分組根據..."
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.model,name:lunch.model_lunch_order_confirm
|
||||
msgid "confirm Order"
|
||||
msgstr "確認訂單"
|
||||
|
||||
#. module: lunch
|
||||
#: view:report.lunch.order:0
|
||||
msgid " 7 Days "
|
||||
msgstr " 7 天 "
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.module.module,description:lunch.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" The base module to manage lunch\n"
|
||||
"\n"
|
||||
" keep track for the Lunch Order ,Cash Moves ,CashBox ,Product.\n"
|
||||
" Apply Different Category for the product.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.cashmove:0
|
||||
#: view:lunch.order:0
|
||||
msgid "Today"
|
||||
msgstr "今日"
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "March"
|
||||
msgstr "三月"
|
||||
|
||||
#. module: lunch
|
||||
#: report:lunch.order:0
|
||||
msgid "Total :"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:report.lunch.amount,day:0
|
||||
#: view:report.lunch.order:0
|
||||
#: field:report.lunch.order,day:0
|
||||
msgid "Day"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.wizard,name:lunch.wizard_id_cancel
|
||||
#: wizard_view:lunch.order.cancel,init:0
|
||||
msgid "Cancel Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.cashmove,amount:0
|
||||
#: field:report.lunch.amount,amount:0
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch_product_form
|
||||
#: view:lunch.product:0
|
||||
msgid "Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.model,name:lunch.model_report_lunch_amount
|
||||
msgid "Amount available by user and box"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:report.lunch.amount:0
|
||||
msgid " Month "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.model,name:lunch.model_report_lunch_order
|
||||
msgid "Lunch Orders Statistics"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.act_window,name:lunch.action_lunch_cashmove_form
|
||||
#: view:lunch.cashmove:0
|
||||
#: field:lunch.order,cashmove:0
|
||||
msgid "CashMove"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:lunch.order,state:0
|
||||
msgid "Confirmed"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.order.confirm:0
|
||||
msgid "Confirm"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.module.module,shortdesc:lunch.module_meta_information
|
||||
msgid "Lunch Module"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.order:0
|
||||
msgid "Search Lunch Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.order,state:0
|
||||
msgid "State"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:report.lunch.order,price_total:0
|
||||
msgid "Total Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch_report_amount_tree
|
||||
#: view:report.lunch.amount:0
|
||||
msgid "Box Amount by User"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.cashmove,create_date:0
|
||||
msgid "Creation Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: report:lunch.order:0
|
||||
msgid "Name/Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.order,descript:0
|
||||
msgid "Description Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.wizard,name:lunch.lunch_order_confirm
|
||||
#: wizard_button:lunch.order.confirm,init,go:0
|
||||
msgid "Confirm Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "July"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.cashmove:0
|
||||
#: view:report.lunch.amount:0
|
||||
#: view:report.lunch.order:0
|
||||
msgid "Box"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:report.lunch.order:0
|
||||
msgid " 365 Days "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:report.lunch.amount:0
|
||||
msgid " Month-1 "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:report.lunch.amount,date:0
|
||||
msgid "Created Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.act_window,name:lunch.action_lunch_category_form
|
||||
msgid " Product Categories "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_button:lunch.cashbox.clean,init,zero:0
|
||||
msgid "Set to Zero"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.model,name:lunch.model_lunch_cashmove
|
||||
msgid "Cash Move"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "April"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "September"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "December"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:report.lunch.amount,month:0
|
||||
#: view:report.lunch.order:0
|
||||
#: field:report.lunch.order,month:0
|
||||
msgid "Month"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_field:lunch.order.confirm,init,confirm_cashbox:0
|
||||
msgid "Name of box"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_button:lunch.order.cancel,init,cancel:0
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.model,name:lunch.model_lunch_category
|
||||
#: view:lunch.category:0
|
||||
#: field:lunch.product,category_id:0
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:report.lunch.amount:0
|
||||
msgid " Year "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch_category_form
|
||||
msgid "Product Categories"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_button:lunch.order.cancel,init,end:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_view:lunch.order.confirm,init:0
|
||||
msgid "Orders Confirmation"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_view:lunch.cashbox.clean,init:0
|
||||
msgid "Are you sure you want to reset this cashbox ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:lunch.order,state:0
|
||||
msgid "Draft"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "August"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.act_window,name:lunch.action_report_lunch_order_all
|
||||
#: view:report.lunch.order:0
|
||||
msgid "Lunch Order Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "June"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.cashmove,user_cashmove:0
|
||||
#: field:lunch.order,user_id:0
|
||||
#: field:report.lunch.amount,user_id:0
|
||||
msgid "User Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:report.lunch.order:0
|
||||
msgid "Sales Analysis"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch
|
||||
msgid "Lunch"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.cashmove:0
|
||||
#: view:report.lunch.order:0
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.order,date:0
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "November"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "October"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "January"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.model,name:lunch.model_lunch_cashbox_clean
|
||||
msgid "clean cashbox"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.cashmove,active:0
|
||||
#: field:lunch.product,active:0
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:report.lunch.order,date:0
|
||||
msgid "Date Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.model,name:lunch.model_lunch_cashbox
|
||||
msgid "Cashbox for Lunch "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.wizard,name:lunch.wizard_clean_cashbox
|
||||
msgid "Set CashBox to Zero"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.cashmove,box:0
|
||||
#: field:report.lunch.amount,box:0
|
||||
msgid "Box Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: wizard_button:lunch.cashbox.clean,init,end:0
|
||||
#: wizard_button:lunch.order.confirm,init,end:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.act_window,name:lunch.action_lunch_cashbox_form
|
||||
msgid " Cashboxes "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: rml:lunch.order:0
|
||||
msgid "Unit Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.act_window,name:lunch.action_lunch_product_form
|
||||
#: field:lunch.order,product:0
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: rml:lunch.order:0
|
||||
#: field:lunch.product,description:0
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "May"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.order,price:0
|
||||
#: field:lunch.product,price:0
|
||||
msgid "Price"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.cashmove:0
|
||||
msgid "Search CashMove"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:report.lunch.amount:0
|
||||
msgid "Total box"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.model,name:lunch.model_lunch_product
|
||||
msgid "Lunch Product"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.cashbox,sum_remain:0
|
||||
msgid "Total Remaining"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.order:0
|
||||
msgid "Total price"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: selection:report.lunch.amount,month:0
|
||||
#: selection:report.lunch.order,month:0
|
||||
msgid "February"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.cashbox,name:0
|
||||
#: field:lunch.cashmove,name:0
|
||||
#: field:lunch.category,name:0
|
||||
#: rml:lunch.order:0
|
||||
#: field:lunch.product,name:0
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.cashmove:0
|
||||
msgid "Total amount"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.category:0
|
||||
msgid "Category related to Products"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch_cashbox_form
|
||||
#: view:lunch.cashbox:0
|
||||
msgid "Cashboxes"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.category:0
|
||||
#: rml:lunch.order:0
|
||||
#: view:lunch.order:0
|
||||
msgid "Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.report.xml,name:lunch.report_lunch_order
|
||||
#: model:ir.model,name:lunch.model_lunch_order
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch
|
||||
#: report:lunch.order:0
|
||||
msgid "Lunch Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: model:ir.actions.act_window,name:lunch.action_report_lunch_amount_tree
|
||||
#: model:ir.ui.menu,name:lunch.menu_lunch_report_amount_tree
|
||||
msgid "Cash Position by User"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:lunch.cashbox,manager:0
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:report.lunch.order:0
|
||||
msgid " 30 Days "
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: view:lunch.order:0
|
||||
msgid "To Confirm"
|
||||
msgstr ""
|
||||
|
||||
#. module: lunch
|
||||
#: field:report.lunch.amount,year:0
|
||||
#: view:report.lunch.order:0
|
||||
#: field:report.lunch.order,year:0
|
||||
msgid "Year"
|
||||
msgstr ""
|
|
@ -82,9 +82,9 @@ class mail_compose_message(osv.osv_memory):
|
|||
else:
|
||||
# default mode
|
||||
result['model'] = context.get('active_model', False)
|
||||
if vals:
|
||||
for field in fields:
|
||||
result.update({field : vals.get(field, False)})
|
||||
for field in vals:
|
||||
if field in fields:
|
||||
result.update({field : vals[field]})
|
||||
|
||||
# link to model and record if not done yet
|
||||
if not result.get('model') or not result.get('res_id'):
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import time
|
||||
import pooler
|
||||
from report.interface import report_rml
|
||||
#from report.interface import toxml
|
||||
|
@ -39,6 +40,7 @@ class report_custom(report_rml):
|
|||
workcenter_pool = pool.get('mrp.workcenter')
|
||||
user_pool = pool.get('res.users')
|
||||
bom_pool = pool.get('mrp.bom')
|
||||
pricelist_pool = pool.get('product.pricelist')
|
||||
rml_obj=report_sxw.rml_parse(cr, uid, product_pool._name,context)
|
||||
rml_obj.localcontext.update({'lang':context.get('lang',False)})
|
||||
company_currency = user_pool.browse(cr, uid, uid).company_id.currency_id
|
||||
|
@ -56,8 +58,12 @@ class report_custom(report_rml):
|
|||
|
||||
if prod.seller_id:
|
||||
main_sp_name = "<b>%s</b>\r\n" %(prod.seller_id.name)
|
||||
price = supplier_info_pool.price_get(cr, uid, prod.seller_id.id, prod.id, number*prod_qtty)[prod.seller_id.id]
|
||||
price = product_uom_pool._compute_price(cr, uid, prod.uom_id.id, price, to_uom_id=product_uom.id)
|
||||
pricelist = prod.seller_id.property_product_pricelist_purchase
|
||||
price = pricelist_pool.price_get(cr,uid,[pricelist.id],
|
||||
prod.id, number*prod_qtty or 1.0, prod.seller_id.id, {
|
||||
'uom': prod.uom_po_id.id,
|
||||
'date': time.strftime('%Y-%m-%d'),
|
||||
})[pricelist.id]
|
||||
main_sp_price = """<b>"""+rml_obj.formatLang(price)+' '+ company_currency.symbol+"""</b>\r\n"""
|
||||
sum += prod_qtty*price
|
||||
std_price = product_uom_pool._compute_price(cr, uid, prod.uom_id.id, prod.standard_price, to_uom_id=product_uom.id)
|
||||
|
@ -65,8 +71,12 @@ class report_custom(report_rml):
|
|||
sum_strd = prod_qtty*std_price
|
||||
for seller_id in prod.seller_ids:
|
||||
sellers += '- <i>'+ seller_id.name.name +'</i>\r\n'
|
||||
price = supplier_info_pool.price_get(cr, uid, seller_id.name.id, prod.id, number*prod_qtty)[seller_id.name.id]
|
||||
price = product_uom_pool._compute_price(cr, uid, prod.uom_id.id, price, to_uom_id=product_uom.id)
|
||||
pricelist = seller_id.name.property_product_pricelist_purchase
|
||||
price = pricelist_pool.price_get(cr,uid,[pricelist.id],
|
||||
prod.id, number*prod_qtty or 1.0, seller_id.name.id, {
|
||||
'uom': prod.uom_po_id.id,
|
||||
'date': time.strftime('%Y-%m-%d'),
|
||||
})[pricelist.id]
|
||||
sellers_price += """<i>"""+rml_obj.formatLang(price) +' '+ company_currency.symbol +"""</i>\r\n"""
|
||||
xml += """<col para='yes'> """+ prod_name +""" </col>
|
||||
<col para='yes'> """+ main_sp_name + sellers + """ </col>
|
||||
|
|
|
@ -205,9 +205,8 @@
|
|||
I am checking Procurement orders. There are 3 orders generated for Oranges, Sugar and Water.
|
||||
-
|
||||
!python {model: procurement.order}: |
|
||||
from tools.translate import _
|
||||
proc_ids = self.search(cr, uid, [('product_id','in',[ref('product_product_orange0'),ref('product_product_sugar0'),ref('product_product_water0')])])
|
||||
assert proc_ids, _('No Procurements!')
|
||||
assert proc_ids, 'No Procurements!'
|
||||
-
|
||||
The scheduler runs.
|
||||
-
|
||||
|
@ -219,9 +218,8 @@
|
|||
stock moves for Oranges, Sugar and Water made correctly.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
from tools.translate import _
|
||||
pick_ids = self.search(cr, uid, [('type','=','internal')])
|
||||
assert pick_ids, _('No Internal Pickings!')
|
||||
assert pick_ids, 'No Internal Pickings!'
|
||||
-
|
||||
According to minimum stock rules. I have 2 purchase orders for
|
||||
Sugar with 6 Kg from Axelor and Orange 60 Kg from ASUStek.
|
||||
|
@ -229,50 +227,24 @@
|
|||
I confirm the purchase order of Sugar and Orange.
|
||||
-
|
||||
!python {model: purchase.order}: |
|
||||
from tools.translate import _
|
||||
import netsvc
|
||||
purch_ids = self.search(cr, uid, [('state','=','draft')])
|
||||
assert purch_ids, _('No Purchase Orders were made!')
|
||||
assert purch_ids, 'No Purchase Orders were made!'
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for p_id in purch_ids:
|
||||
wf_service.trg_validate(uid, 'purchase.order', p_id, 'purchase_confirm', cr)
|
||||
-
|
||||
I see two incoming pickings for Orange and Sugar.
|
||||
I see two incoming pickings for Orange and Sugar, and receive them.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
from tools.translate import _
|
||||
pick_ids = self.search(cr, uid, [('type','=','in')])
|
||||
assert pick_ids, _('No Incoming Shipments found!')
|
||||
-
|
||||
I receive both the products. My incoming pickings are done.
|
||||
-
|
||||
I create record for the incoming picking wizard.
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking0}:
|
||||
date: !eval datetime.today().strftime("%Y-%m-%d %H:%M:%S")
|
||||
-
|
||||
I make my pickings done.
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
picking_ids = pick_obj.search(cr, uid, [('type','=','in'),('state','=','assigned')])
|
||||
partial = self.browse(cr, uid, 1, context)
|
||||
partial_datas = {
|
||||
'delivery_date': partial.date
|
||||
}
|
||||
for pick in pick_obj.browse(cr, uid, picking_ids):
|
||||
for m in pick.move_lines:
|
||||
partial_datas['move%s'%(m.id)] = {
|
||||
'product_id': m.product_id.id,
|
||||
'product_qty': m.product_qty,
|
||||
'product_uom': m.product_uom.id
|
||||
}
|
||||
if (pick.type == 'in') and (m.product_id.cost_method == 'average'):
|
||||
partial_datas['move%s'%(m.id)].update({
|
||||
'product_price': m.product_price,
|
||||
'product_currency': m.product_currency
|
||||
})
|
||||
pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context)
|
||||
assert pick_ids, 'No Incoming Shipments found!'
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
for pick_id in pick_ids:
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick_id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
Again the scheduler runs.
|
||||
-
|
||||
|
@ -283,19 +255,15 @@
|
|||
I check my internal picking of "Orange Juice" is done.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
from tools.translate import _
|
||||
pick_ids = self.search(cr, uid, [('type','=','internal'),('state','=','done')])
|
||||
assert pick_ids, _('Internal Picking is not done yet!')
|
||||
assert pick_ids, 'Internal Picking is not done yet!'
|
||||
-
|
||||
I check my manufacturing order for "Orange Juice" is ready or not.
|
||||
-
|
||||
!python {model: mrp.production}: |
|
||||
from tools.translate import _
|
||||
pick_ids = self.search(cr, uid, [('state','=','ready'),('id','=',ref('mrp_production_mo0'))])
|
||||
assert pick_ids, _('Manufacturing order is not ready!')
|
||||
prod_ids = self.search(cr, uid, [('state','=','ready'),('id','=',ref('mrp_production_mo0'))])
|
||||
assert prod_ids, 'Manufacturing order is not ready!'
|
||||
-
|
||||
I start the production order.
|
||||
-
|
||||
!workflow {model: mrp.production, action: button_produce, ref: mrp_production_mo0}
|
||||
|
||||
|
||||
|
|
|
@ -195,74 +195,26 @@
|
|||
I Check incoming shipments for cloth. And receive products.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
from tools.translate import _
|
||||
pick_ids = self.search(cr, uid, [('address_id.name','=','Wong'),('state','=','assigned')])
|
||||
assert pick_ids, _('No Incoming Shipments found!')
|
||||
-
|
||||
I create record for partial picking.
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking0}:
|
||||
date: !eval datetime.today().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
-
|
||||
I make my picking done.
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
picking_ids = pick_obj.search(cr, uid, [('address_id.name','=','Wong'),('state','=','assigned')])
|
||||
partial = self.browse(cr, uid, 1, context)
|
||||
partial_datas = {
|
||||
'delivery_date' : partial.date
|
||||
}
|
||||
for pick in pick_obj.browse(cr, uid, picking_ids):
|
||||
for m in pick.move_lines:
|
||||
partial_datas['move%s'%(m.id)] = {
|
||||
'product_id' : m.product_id.id,
|
||||
'product_qty' : m.product_qty,
|
||||
'product_uom' : m.product_uom.id
|
||||
}
|
||||
if (pick.type == 'in') and (m.product_id.cost_method == 'average'):
|
||||
partial_datas['move%s'%(m.id)].update({
|
||||
'product_price' : m.product_price,
|
||||
'product_currency': m.product_currency
|
||||
})
|
||||
pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context)
|
||||
assert pick_ids, 'No Incoming Shipments found!'
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
for pick_id in pick_ids:
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick_id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I Check incoming shipments for buttons and receive products.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
from tools.translate import _
|
||||
pick_ids = self.search(cr, uid, [('address_id.name','=','Tang'),('state','=','assigned')])
|
||||
assert pick_ids, _('No Incoming Shipments found!')
|
||||
-
|
||||
I create record for partial picking.
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking0}:
|
||||
date: !eval datetime.today().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
-
|
||||
I make my picking done.
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
picking_ids = pick_obj.search(cr, uid, [('address_id.name','=','Tang'),('state','=','assigned')])
|
||||
partial = self.browse(cr, uid, 1, context)
|
||||
partial_datas = {
|
||||
'delivery_date': partial.date
|
||||
}
|
||||
for pick in pick_obj.browse(cr, uid, picking_ids):
|
||||
for m in pick.move_lines:
|
||||
partial_datas['move%s'%(m.id)] = {
|
||||
'product_id': m.product_id.id,
|
||||
'product_qty': m.product_qty,
|
||||
'product_uom': m.product_uom.id
|
||||
}
|
||||
if (pick.type == 'in') and (m.product_id.cost_method == 'average'):
|
||||
partial_datas['move%s'%(m.id)].update({
|
||||
'product_price': m.product_price,
|
||||
'product_currency': m.product_currency
|
||||
})
|
||||
pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context)
|
||||
assert pick_ids, 'No Incoming Shipments found!'
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
for pick_id in pick_ids:
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick_id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
Run scheduler again.
|
||||
-
|
||||
|
@ -297,7 +249,6 @@
|
|||
I produce 2 products with 5.00 quantities each.
|
||||
-
|
||||
!python {model: mrp.product.produce}: |
|
||||
from tools.translate import _
|
||||
prod_obj = self.pool.get('mrp.production')
|
||||
prod_ids = prod_obj.search(cr, uid, [('product_id.name','=','Shirt')])
|
||||
self.do_produce(cr, uid, [ref('mrp_product_produce0')], context={'active_ids': prod_ids})
|
||||
|
@ -321,8 +272,7 @@
|
|||
And finally production order is done.
|
||||
-
|
||||
!python {model: mrp.product.produce}: |
|
||||
from tools.translate import _
|
||||
prod_obj = self.pool.get('mrp.production')
|
||||
prod_ids = prod_obj.search(cr, uid, [('product_id.name','=','Shirt')])
|
||||
self.do_produce(cr, uid, [1], context={'active_ids': prod_ids})
|
||||
self.do_produce(cr, uid, [ref('mrp_product_produce0')], context={'active_ids': prod_ids})
|
||||
|
||||
|
|
|
@ -235,6 +235,8 @@ class mrp_production(osv.osv):
|
|||
obj = self.browse(cr, uid, ids)[0]
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for workcenter_line in obj.workcenter_lines:
|
||||
if workcenter_line.state == 'draft':
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_start_working', cr)
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_done', cr)
|
||||
return super(mrp_production,self).action_production_end(cr, uid, ids)
|
||||
|
||||
|
@ -243,9 +245,11 @@ class mrp_production(osv.osv):
|
|||
@return: True
|
||||
"""
|
||||
obj = self.browse(cr, uid, ids)[0]
|
||||
workcenter_pool = self.pool.get('mrp.production.workcenter.line')
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for workcenter_line in obj.workcenter_lines:
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_start_working', cr)
|
||||
for prod in self.browse(cr, uid, ids):
|
||||
if prod.workcenter_lines:
|
||||
wf_service.trg_validate(uid, 'mrp.production.workcenter.line', prod.workcenter_lines[0].id, 'button_start_working', cr)
|
||||
return super(mrp_production,self).action_in_production(cr, uid, ids)
|
||||
|
||||
def action_cancel(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -41,7 +41,7 @@ class outlook_installer(osv.osv_memory):
|
|||
'doc_name':fields.char('File name', size=64),
|
||||
'outlook':fields.boolean('Outlook Plug-in ', help="Allows you to select an object that you would like to add to your email and its attachments."),
|
||||
'plugin_file':fields.binary('Outlook Plug-in', readonly=True, help="outlook plug-in file. Save as this file and install this plug-in in outlook."),
|
||||
'doc_file':fields.char('Installation Manual',size="264",help="The documentation file :- how to install Outlook Plug-in.", readonly=True),
|
||||
'doc_file':fields.char('Installation Manual',size=264,help="The documentation file :- how to install Outlook Plug-in.", readonly=True),
|
||||
'description':fields.text('Description', readonly=True)
|
||||
}
|
||||
|
||||
|
|
|
@ -264,7 +264,7 @@ class pos_order(osv.osv):
|
|||
args['partner_id'] = order.partner_id and order.partner_id.id or None
|
||||
|
||||
statement_id = statement_obj.search(cr,uid, [
|
||||
('journal_id', '=', data['journal']),
|
||||
('journal_id', '=', int(data['journal'])),
|
||||
('company_id', '=', curr_company),
|
||||
('user_id', '=', uid),
|
||||
('state', '=', 'open')], context=context)
|
||||
|
@ -274,7 +274,7 @@ class pos_order(osv.osv):
|
|||
statement_id = statement_id[0]
|
||||
args['statement_id'] = statement_id
|
||||
args['pos_statement_id'] = order_id
|
||||
args['journal_id'] = data['journal']
|
||||
args['journal_id'] = int(data['journal'])
|
||||
args['type'] = 'customer'
|
||||
args['ref'] = order.name
|
||||
statement_line_obj.create(cr, uid, args, context=context)
|
||||
|
|
|
@ -34,6 +34,11 @@
|
|||
if tools.config['test_report_directory']:
|
||||
file(os.path.join(tools.config['test_report_directory'], 'point_of_sale-receipt report'+format), 'wb+').write(data)
|
||||
|
||||
-
|
||||
Create a record for the root user in pos.payment.report.user (used by the next python block).
|
||||
-
|
||||
!record {model: pos.payment.report.user, id: pos_payment_report_user_1}:
|
||||
user_id: []
|
||||
-
|
||||
Print the POS Payment Report through the wizard
|
||||
-
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
<tree string="Products Listprices Items">
|
||||
<field name="sequence"/>
|
||||
<field colspan="4" name="name" select="1"/>
|
||||
<field name="product_id"/>
|
||||
<field name="product_tmpl_id" select="1"/>
|
||||
<field name="categ_id" select="1"/>
|
||||
<field name="min_quantity"/>
|
||||
|
|
|
@ -7,19 +7,19 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
|
||||
"PO-Revision-Date: 2011-01-28 16:28+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 10:35+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-05 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 13830)\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-28 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: project
|
||||
#: model:ir.actions.act_window,name:project.act_res_users_2_project_task_opened
|
||||
msgid "Assigned tasks"
|
||||
msgstr "任務指派"
|
||||
msgstr "已分派任務"
|
||||
|
||||
#. module: project
|
||||
#: help:project.task.delegate,new_task_description:0
|
||||
|
@ -30,7 +30,7 @@ msgstr ""
|
|||
#: code:addons/project/project.py:671
|
||||
#, python-format
|
||||
msgid "The task '%s' has been delegated to %s."
|
||||
msgstr "「%s」任務委派予 %s"
|
||||
msgstr "已將「%s」任務委派予 %s。"
|
||||
|
||||
#. module: project
|
||||
#: help:res.company,project_time_mode_id:0
|
||||
|
@ -254,7 +254,7 @@ msgstr "專案結束任務"
|
|||
#. module: project
|
||||
#: model:process.node,name:project.process_node_drafttask0
|
||||
msgid "Draft task"
|
||||
msgstr "草案任務"
|
||||
msgstr "任務草案"
|
||||
|
||||
#. module: project
|
||||
#: model:ir.model,name:project.model_project_task
|
||||
|
@ -273,7 +273,7 @@ msgstr "成員"
|
|||
msgid ""
|
||||
"Estimated time to do the task, usually set by the project manager when the "
|
||||
"task is in draft state."
|
||||
msgstr "完成任務估計時間,通常由專案經理(PM)於草案階段設定"
|
||||
msgstr "完成任務估計時間,通常由專案經理(PM)於草案階段設定。"
|
||||
|
||||
#. module: project
|
||||
#: model:ir.model,name:project.model_project_task_work
|
||||
|
@ -553,7 +553,7 @@ msgstr "下一個"
|
|||
#. module: project
|
||||
#: model:process.transition,note:project.process_transition_draftopentask0
|
||||
msgid "From draft state, it will come into the open state."
|
||||
msgstr "「草案」階段會轉為「進行中」階段"
|
||||
msgstr "會由「草案」階段轉為「開放」階段。"
|
||||
|
||||
#. module: project
|
||||
#: view:report.project.task.user:0
|
||||
|
@ -770,7 +770,7 @@ msgstr ""
|
|||
#. module: project
|
||||
#: model:process.transition,name:project.process_transition_draftopentask0
|
||||
msgid "Draft Open task"
|
||||
msgstr "草案進行任務"
|
||||
msgstr "開啟任務草案"
|
||||
|
||||
#. module: project
|
||||
#: view:project.project:0
|
||||
|
@ -917,6 +917,10 @@ msgid ""
|
|||
" \n"
|
||||
" If the task is over, the states is set to 'Done'."
|
||||
msgstr ""
|
||||
"當建立任務時會處於「草案(Draft)」階段。\n"
|
||||
" 開始後會處於「進行中(In Progress)」階段。\n"
|
||||
" 如需評估,會處於「待通過(Pending)」階段。 \n"
|
||||
" 任務完成,處於「完成(Done)」階段。"
|
||||
|
||||
#. module: project
|
||||
#: help:project.task,progress:0
|
||||
|
|
|
@ -124,68 +124,15 @@ class stock_picking(osv.osv):
|
|||
purchase_obj.write(cursor, user, [picking.purchase_id.id], {'invoice_id': invoice_id,})
|
||||
return super(stock_picking, self)._invoice_hook(cursor, user, picking, invoice_id)
|
||||
|
||||
stock_picking()
|
||||
|
||||
class stock_partial_picking(osv.osv_memory):
|
||||
_inherit = 'stock.partial.picking'
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
""" To get default values for the object.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param fields: List of fields for which we want default values
|
||||
@param context: A standard dictionary
|
||||
@return: A dictionary which of fields with values.
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
res = super(stock_partial_picking, self).default_get(cr, uid, fields, context=context)
|
||||
for pick in pick_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
||||
has_product_cost = (pick.type == 'in' and pick.purchase_id)
|
||||
for m in pick.move_lines:
|
||||
if m.state in ('done','cancel') :
|
||||
continue
|
||||
if has_product_cost and m.product_id.cost_method == 'average' and m.purchase_line_id:
|
||||
# We use the original PO unit purchase price as the basis for the cost, expressed
|
||||
# in the currency of the PO (i.e the PO's pricelist currency)
|
||||
list_index = 0
|
||||
for item in res['product_moves_in']:
|
||||
if item['move_id'] == m.id:
|
||||
res['product_moves_in'][list_index]['cost'] = m.purchase_line_id.price_unit
|
||||
res['product_moves_in'][list_index]['currency'] = m.picking_id.purchase_id.pricelist_id.currency_id.id
|
||||
list_index += 1
|
||||
return res
|
||||
stock_partial_picking()
|
||||
# Overridden to inject the purchase price as true 'cost price' when processing
|
||||
# incoming pickings.
|
||||
def _product_cost_for_average_update(self, cr, uid, move):
|
||||
if move.picking_id.purchase_id:
|
||||
return {'cost': move.purchase_line_id.price_unit,
|
||||
'currency': move.picking_id.purchase_id.pricelist_id.currency_id.id}
|
||||
return super(stock_partial_picking, self)._product_cost_for_average_update(cr, uid, move)
|
||||
|
||||
class stock_partial_move(osv.osv_memory):
|
||||
_inherit = "stock.partial.move"
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
""" To get default values for the object.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param fields: List of fields for which we want default values
|
||||
@param context: A standard dictionary
|
||||
@return: A dictionary which of fields with values.
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
res = super(stock_partial_move, self).default_get(cr, uid, fields, context=context)
|
||||
move_obj = self.pool.get('stock.move')
|
||||
for m in move_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
||||
if m.picking_id.type == 'in' and m.product_id.cost_method == 'average' \
|
||||
and m.purchase_line_id and m.picking_id.purchase_id:
|
||||
# We use the original PO unit purchase price as the basis for the cost, expressed
|
||||
# in the currency of the PO (i.e the PO's pricelist currency)
|
||||
list_index = 0
|
||||
for item in res['product_moves_in']:
|
||||
if item['move_id'] == m.id:
|
||||
res['product_moves_in'][list_index]['cost'] = m.purchase_line_id.price_unit
|
||||
res['product_moves_in'][list_index]['currency'] = m.picking_id.purchase_id.pricelist_id.currency_id.id
|
||||
list_index += 1
|
||||
return res
|
||||
stock_partial_move()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@
|
|||
pur_id1=pur_obj.browse(cr, uid, ref("purchase_order_po2"))
|
||||
pick_ids = [x.id for x in pur_id1.picking_ids]
|
||||
id = self.create(cr, uid, {'invoice_date': time.strftime('%Y-%m-%d'), 'journal_id': ref('account.expenses_journal')},
|
||||
{'active_ids': pick_ids})
|
||||
{'active_ids': pick_ids, 'active_model': 'stock.picking'})
|
||||
self.create_invoice(cr, uid, [id], {"active_ids": pick_ids, "active_id": pick_ids[0]})
|
||||
-
|
||||
I check that an invoice_ids field of Delivery&Invoices gets bind with the value.
|
||||
|
|
|
@ -728,6 +728,7 @@ class sale_order(osv.osv):
|
|||
#'state': 'waiting',
|
||||
'note': line.notes,
|
||||
'company_id': order.company_id.id,
|
||||
'price_unit': line.product_id.standard_price or 0.0
|
||||
})
|
||||
|
||||
if line.product_id:
|
||||
|
|
|
@ -31,39 +31,17 @@
|
|||
-
|
||||
!workflow {model: sale.order, action: order_confirm, ref: sale_order_so9}
|
||||
-
|
||||
I verify that the picking has been generated for the sale order
|
||||
I verify that the picking has been generated for the sale order and I process it
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
so = self.browse(cr, uid, ref("sale_order_so9"))
|
||||
assert so.picking_ids,"Picking has not been generated for sale_order_so9"
|
||||
-
|
||||
Then I confirm the picking
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
-
|
||||
Then I done the picking
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
import time
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so9"))
|
||||
picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
|
||||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': '100',
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
picking, = so.picking_ids
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [picking.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I click on Create Invoice button to create the invoice.
|
||||
-
|
||||
|
|
|
@ -30,41 +30,21 @@
|
|||
-
|
||||
!workflow {model: sale.order, action: order_confirm, ref: sale_order_so6}
|
||||
-
|
||||
I verify that the picking has been generated for the sale order
|
||||
I verify that the picking has been generated for the sale order and I process it
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
so = self.browse(cr, uid, ref("sale_order_so6"))
|
||||
assert so.picking_ids,"Picking has not been generated for sale_order_so6"
|
||||
-
|
||||
Then I click on the "Product Sent" button of Outgoing Shipments
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
-
|
||||
I change the quantity on the picking to 199, and confirm partially 100 PCE.
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
import time
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so6"))
|
||||
picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
|
||||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
self.pool.get('stock.move').write(cr, uid, [pick.move_lines[0].id], {'product_qty': 199, 'product_uos_qty': 199})
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': '100',
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
picking, = so.picking_ids
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [picking.id]})
|
||||
# I change the qty to 100 for a partial delivery
|
||||
partial = stock_partial_picking.browse(cr,uid,partial_id)
|
||||
line_id = partial.move_ids[0].id
|
||||
partial.write({'move_ids': [(1,line_id,{'quantity':100})]})
|
||||
partial.do_partial()
|
||||
-
|
||||
Then I click on 'Create Invoices' button
|
||||
-
|
||||
|
@ -72,9 +52,9 @@
|
|||
import time
|
||||
sale_obj = self.pool.get('sale.order')
|
||||
sale_id = sale_obj.browse(cr, uid, ref("sale_order_so6"))
|
||||
ids = [x.id for x in sale_id.picking_ids]
|
||||
ids = [x.id for x in sale_id.picking_ids if x.state == 'done']
|
||||
wiz_id = self.create(cr, uid, {'invoice_date': time.strftime('%Y-%m-%d'), 'journal_id': ref('account.sales_journal')},
|
||||
{'active_ids': ids})
|
||||
{'active_ids': ids, 'active_model': 'stock.picking'})
|
||||
self.create_invoice(cr, uid, [wiz_id], {"active_ids": ids, "active_id": ids[0]})
|
||||
-
|
||||
I verify whether the invoice has been generated for SO
|
||||
|
@ -98,7 +78,7 @@
|
|||
inv_brw = self.browse(cr,uid,inv_id)[0]
|
||||
for inv_lines in inv_brw.invoice_line:
|
||||
qty1=inv_lines.quantity
|
||||
assert (qty1 == qty), "Quantities are not the same"
|
||||
assert (qty1 == qty), "Quantities are not the same: invoiced: %s, shipped: %s" % (qty1,qty)
|
||||
-
|
||||
I open the Invoice for the SO.
|
||||
-
|
||||
|
|
|
@ -136,15 +136,11 @@
|
|||
I verify that a procurement state is "running"
|
||||
-
|
||||
!python {model: procurement.order}: |
|
||||
from tools.translate import _
|
||||
modules = self.pool.get('ir.module.module')
|
||||
mod_pur = modules.search(cr, uid, [('name','=','purchase')])
|
||||
mod_brw = modules.browse(cr,uid,mod_pur)[0]
|
||||
if (mod_brw.state == 'installed'):
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
|
||||
proc_ids = self.search(cr, uid, [('origin','=',so.name),('state','=','running')])
|
||||
assert(proc_ids),"Procurement is not in the running state!"
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
|
||||
proc_ids = self.search(cr, uid, [('origin','=',so.name),('state','in',['running','ready'])])
|
||||
# should be running is 'purchase' is installed, else 'ready'
|
||||
assert(proc_ids),"Procurement is not in running/ready state!"
|
||||
-
|
||||
I verify that a purchase order has been generated
|
||||
-
|
||||
|
@ -192,7 +188,7 @@
|
|||
for pur in pur_ids:
|
||||
wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
|
||||
-
|
||||
I verify that a picking related to purchase order has been generated.
|
||||
I verify that a picking related to purchase order has been generated and I process it
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
modules = self.pool.get('ir.module.module')
|
||||
|
@ -204,29 +200,12 @@
|
|||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
assert(po.picking_ids),"Picking for purchase order has not been generated"
|
||||
-
|
||||
Then I click on the "Products Received" button of Incoming Shipments
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
-
|
||||
I click on the "Validate" button
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
modules = self.pool.get('ir.module.module')
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
pur_obj = self.pool.get('purchase.order')
|
||||
mod_pur = modules.search(cr, uid, [('name','=','purchase')])
|
||||
mod_brw = modules.browse(cr,uid,mod_pur)[0]
|
||||
if (mod_brw.state == 'installed'):
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
|
||||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
pick_ser_id = self.search(cr, uid, [('purchase_id', '=', po.id )])
|
||||
import netsvc
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for pick in pick_ser_id:
|
||||
wf_service.trg_validate(uid, 'stock.picking',pick,'button_done', cr)
|
||||
picking, = po.picking_ids
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [picking.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I verify that picking for purchase order has been done.
|
||||
-
|
||||
|
@ -244,7 +223,7 @@
|
|||
ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id ),('state', '=', 'done')])
|
||||
assert(ids),"Picking is not in the done state!"
|
||||
-
|
||||
Then I done the picking
|
||||
Then I process the picking
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
import time
|
||||
|
@ -254,18 +233,11 @@
|
|||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.product_qty,
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I verify that picking for sale order is in done state.
|
||||
-
|
||||
|
@ -275,38 +247,6 @@
|
|||
picking_id = self.search(cr, uid, [('origin','=',so.name),('type','=','out')])
|
||||
pick = self.browse(cr,uid,picking_id[0])
|
||||
assert (pick.state) =='done', "Picking for SO is not in done state."
|
||||
-
|
||||
Then I done the delivery order
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
import time
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
|
||||
picking_id = self.search(cr, uid, [('origin','=',so.name)])
|
||||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.product_qty,
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
-
|
||||
I verify that delivery state is done
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
|
||||
picking_id = self.search(cr, uid, [('origin','=',so.name)])
|
||||
pick = self.browse(cr,uid,picking_id[0])
|
||||
assert (pick.state) =='done', "Picking for SO is not in done state."
|
||||
-
|
||||
I verify that a "Picked" has been set to true
|
||||
-
|
||||
|
|
|
@ -46,18 +46,11 @@
|
|||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.product_qty,
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
Then I click on 'Create Invoices' button
|
||||
-
|
||||
|
@ -67,7 +60,7 @@
|
|||
sale_id=sale_obj.browse(cr, uid, ref("sale_order_so7"))
|
||||
ids = [x.id for x in sale_id.picking_ids]
|
||||
wiz_id = self.create(cr, uid, {'invoice_date': time.strftime('%Y-%m-%d'), 'journal_id': ref('account.sales_journal')},
|
||||
{'active_ids': ids})
|
||||
{'active_ids': ids, 'active_model': 'stock.picking'})
|
||||
self.create_invoice(cr, uid, [wiz_id], {"active_ids": ids, "active_id": ids[0]})
|
||||
-
|
||||
I check that an invoice has been created.
|
||||
|
@ -197,7 +190,7 @@
|
|||
for pur in pur_ids:
|
||||
wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
|
||||
-
|
||||
I verify that a picking related to purchase order has been generated.
|
||||
I verify that a picking related to purchase order has been generated and I process it
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
modules = self.pool.get('ir.module.module')
|
||||
|
@ -209,29 +202,12 @@
|
|||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
assert(po.picking_ids),"Picking for purchase order has not been generated"
|
||||
-
|
||||
Then I click on the "Products Received" button of Incoming Shipments
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
-
|
||||
I click on the "Validate" button
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
modules = self.pool.get('ir.module.module')
|
||||
mod_pur = modules.search(cr, uid, [('name','=','purchase')])
|
||||
mod_brw = modules.browse(cr,uid,mod_pur)[0]
|
||||
if (mod_brw.state == 'installed'):
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
pur_obj = self.pool.get('purchase.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
|
||||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
pick_ser_id = self.search(cr, uid, [('purchase_id', '=', po.id )])
|
||||
import netsvc
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for pick in pick_ser_id:
|
||||
wf_service.trg_validate(uid, 'stock.picking',pick,'button_done', cr)
|
||||
picking, = po.picking_ids
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [picking.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I verify that picking for purchase order has been done.
|
||||
-
|
||||
|
@ -249,36 +225,20 @@
|
|||
ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id ),('state', '=', 'done')])
|
||||
assert ids, _('Picking is not in the done state!')
|
||||
-
|
||||
I verify that delivery order has been generated for sale order
|
||||
I verify that delivery order has been generated for sale order, and process it
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
|
||||
picking_id = self.search(cr, uid, [('origin','=',so.name)])
|
||||
assert (picking_id),"Delivery order has not been generated"
|
||||
-
|
||||
I verify that delivery has been done
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
import time
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so7"))
|
||||
picking_id = self.search(cr, uid, [('origin','=',so.name)])
|
||||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.product_qty,
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I verify that delivery state is done
|
||||
-
|
||||
|
@ -290,7 +250,7 @@
|
|||
pick = self.browse(cr,uid,picking_id[0])
|
||||
assert (pick.state) =='done', "Picking for SO is not in done state."
|
||||
-
|
||||
I verify that a "Picked" has been set to true
|
||||
I verify that the sale order is marked as delivered
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
so = self.browse(cr, uid, ref("sale_order_so7"))
|
||||
|
|
|
@ -45,18 +45,11 @@
|
|||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.product_qty,
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I verify that picking order is in done state.
|
||||
-
|
||||
|
@ -76,7 +69,7 @@
|
|||
picking_id = self.search(cr, uid, [('origin','=',so.name)])
|
||||
assert (picking_id),"Delivery order has not been generated"
|
||||
-
|
||||
I click on the Products Sent button and then on the Validate button
|
||||
I process the delivery order
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
import time
|
||||
|
@ -86,20 +79,13 @@
|
|||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.product_qty,
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I verify that delivery state is done
|
||||
I verify that delivery order is marked done
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
|
@ -187,7 +173,7 @@
|
|||
for pur in pur_ids:
|
||||
wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
|
||||
-
|
||||
I verify that a picking related to purchase order has been generated.
|
||||
I verify that a picking related to purchase order has been generated and I process it
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
modules = self.pool.get('ir.module.module')
|
||||
|
@ -199,31 +185,14 @@
|
|||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
assert(po.picking_ids),"Picking for purchase order has not been generated"
|
||||
picking, = po.picking_ids
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [picking.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
Then I click on the "Products Received" button of Incoming Shipments
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
-
|
||||
I click on the "Validate" button
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
modules = self.pool.get('ir.module.module')
|
||||
mod_pur = modules.search(cr, uid, [('name','=','purchase')])
|
||||
mod_brw = modules.browse(cr,uid,mod_pur)[0]
|
||||
if (mod_brw.state == 'installed'):
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
pur_obj = self.pool.get('purchase.order')
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so8"))
|
||||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
pick_ser_id = self.search(cr, uid, [('purchase_id', '=', po.id )])
|
||||
import netsvc
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for pick in pick_ser_id:
|
||||
wf_service.trg_validate(uid, 'stock.picking',pick,'button_done', cr)
|
||||
-
|
||||
I verify that picking for purchase order has been done.
|
||||
I verify that picking for purchase order has been marked done.
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
from tools.translate import _
|
||||
|
@ -239,7 +208,7 @@
|
|||
ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id ),('state', '=', 'done')])
|
||||
assert ids, _('Picking is not in the done state!')
|
||||
-
|
||||
I verify that a "Picked" has been set to true
|
||||
I verify that the sale order is marked as delivered
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
so = self.browse(cr, uid, ref("sale_order_so8"))
|
||||
|
|
|
@ -101,18 +101,11 @@
|
|||
if picking_id:
|
||||
pick=self.browse(cr,uid,picking_id[0])
|
||||
pick.force_assign(cr, uid)
|
||||
partial_datas = {
|
||||
'partner_id':pick.address_id.partner_id.id,
|
||||
'address_id': pick.address_id.id,
|
||||
'delivery_date' : time.strftime('%Y-%m-%d'),
|
||||
}
|
||||
move = pick.move_lines[0]
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.product_qty,
|
||||
'product_uom': move.product_uom.id,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [pick.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I verify that picking order is in done state.
|
||||
-
|
||||
|
@ -201,7 +194,7 @@
|
|||
for pur in pur_ids:
|
||||
wf_service.trg_validate(uid, 'purchase.order',pur,'purchase_approve', cr)
|
||||
-
|
||||
I verify that a picking related to purchase order has been generated.
|
||||
I verify that a picking related to purchase order has been generated and I process it
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
modules = self.pool.get('ir.module.module')
|
||||
|
@ -213,51 +206,21 @@
|
|||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
assert(po.picking_ids),"Picking for purchase order has not been generated"
|
||||
-
|
||||
Then I click on the "Products Received" button of Incoming Shipments
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
-
|
||||
I click on the "Validate" button
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
modules = self.pool.get('ir.module.module')
|
||||
sale_order_obj = self.pool.get('sale.order')
|
||||
pur_obj = self.pool.get('purchase.order')
|
||||
mod_pur = modules.search(cr, uid, [('name','=','purchase')])
|
||||
mod_brw = modules.browse(cr,uid,mod_pur)[0]
|
||||
if (mod_brw.state == 'installed'):
|
||||
so = sale_order_obj.browse(cr, uid, ref("sale_order_so1"))
|
||||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
pick_ser_id = self.search(cr, uid, [('purchase_id', '=', po.id )])
|
||||
import netsvc
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
for pick in pick_ser_id:
|
||||
wf_service.trg_validate(uid, 'stock.picking',pick,'button_done', cr)
|
||||
-
|
||||
I verify that picking for purchase order has been done.
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
from tools.translate import _
|
||||
modules = self.pool.get('ir.module.module')
|
||||
mod_pur = modules.search(cr, uid, [('name','=','purchase')])
|
||||
mod_brw = modules.browse(cr,uid,mod_pur)[0]
|
||||
if(mod_brw.state == 'installed'):
|
||||
pur_obj = self.pool.get('purchase.order')
|
||||
so = self.browse(cr, uid, ref("sale_order_so1"))
|
||||
pur_id = pur_obj.search(cr, uid, [('origin','=',so.name)])
|
||||
po = pur_obj.browse(cr, uid, pur_id)[0]
|
||||
picking, = po.picking_ids
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [picking.id]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
picking_obj = self.pool.get('stock.picking')
|
||||
ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id ),('state', '=', 'done')])
|
||||
assert ids, _('Picking is not in the done state!')
|
||||
ids = picking_obj.search(cr, uid, [('purchase_id', '=', po.id),('state', '=', 'done')])
|
||||
assert ids, 'Picking should be marked done!'
|
||||
-
|
||||
I verify that a "Picked" has been set to true
|
||||
I verify that the sale order is marked as delivered
|
||||
-
|
||||
!python {model: sale.order}: |
|
||||
so = self.browse(cr, uid, ref("sale_order_so1"))
|
||||
assert (so.shipped == True), "Picking is not done."
|
||||
assert (so.shipped == True), "Sale order is not marked as delivered"
|
||||
-
|
||||
I verify that a sale order is in done state
|
||||
-
|
||||
|
|
|
@ -27,8 +27,8 @@ class sale_advance_payment_inv(osv.osv_memory):
|
|||
_columns = {
|
||||
'product_id': fields.many2one('product.product', 'Advance Product', required=True,
|
||||
help="Select a product of type service which is called 'Advance Product'. You may have to create it and set it as a default value on this field."),
|
||||
'amount': fields.float('Advance Amount', size=(16, 2), required=True, help="The amount to be invoiced in advance."),
|
||||
'qtty': fields.float('Quantity', size=(16, 2), required=True),
|
||||
'amount': fields.float('Advance Amount', digits=(16, 2), required=True, help="The amount to be invoiced in advance."),
|
||||
'qtty': fields.float('Quantity', digits=(16, 2), required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'qtty': 1.0
|
||||
|
@ -173,4 +173,4 @@ class sale_open_invoice(osv.osv_memory):
|
|||
|
||||
sale_open_invoice()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:16+0000\n"
|
||||
"PO-Revision-Date: 2011-01-28 03:06+0000\n"
|
||||
"PO-Revision-Date: 2011-09-27 10:25+0000\n"
|
||||
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-05 04:57+0000\n"
|
||||
"X-Generator: Launchpad (build 13830)\n"
|
||||
"X-Launchpad-Export-Date: 2011-09-28 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 14049)\n"
|
||||
|
||||
#. module: stock
|
||||
#: field:product.product,track_outgoing:0
|
||||
|
@ -163,7 +163,7 @@ msgstr ""
|
|||
#: view:report.stock.move:0
|
||||
#: field:stock.change.standard.price,stock_journal:0
|
||||
msgid "Stock journal"
|
||||
msgstr ""
|
||||
msgstr "庫存日誌"
|
||||
|
||||
#. module: stock
|
||||
#: view:report.stock.move:0
|
||||
|
@ -475,7 +475,7 @@ msgstr "調動統計"
|
|||
#. module: stock
|
||||
#: view:stock.production.lot:0
|
||||
msgid "Product Lots Filter"
|
||||
msgstr ""
|
||||
msgstr "生產批次篩選"
|
||||
|
||||
#. module: stock
|
||||
#: report:lot.stock.overview:0
|
||||
|
@ -636,7 +636,7 @@ msgstr ""
|
|||
#. module: stock
|
||||
#: constraint:stock.move:0
|
||||
msgid "You try to assign a lot which is not from the same product"
|
||||
msgstr ""
|
||||
msgstr "指定了不同產品的批次"
|
||||
|
||||
#. module: stock
|
||||
#: view:res.partner:0
|
||||
|
@ -1152,7 +1152,7 @@ msgstr ""
|
|||
#: code:addons/stock/stock.py:1319
|
||||
#, python-format
|
||||
msgid "is in draft state."
|
||||
msgstr "尚在草案階段"
|
||||
msgstr "尚在草案階段。"
|
||||
|
||||
#. module: stock
|
||||
#: model:ir.actions.act_window,help:stock.action_tracking_form
|
||||
|
@ -1402,6 +1402,12 @@ msgid ""
|
|||
"* Done: has been processed, can't be modified or cancelled anymore\n"
|
||||
"* Cancelled: has been cancelled, can't be confirmed anymore"
|
||||
msgstr ""
|
||||
"* 草案(Draft): 未確認,不會安排處理直至確認\n"
|
||||
"* 確認(Confirmed): 仍等候產品有貨供應\n"
|
||||
"* 供貨(Available): 已預留產品,只等候確認\n"
|
||||
"* 等待(Waiting): 自動供貨前要再等候下一步 (如於「接單生產(Make-To-Order)」流程)\n"
|
||||
"* 完成(Done): 已處理,無法再修改或取消\n"
|
||||
"* 取消(Cancelled): 已取消,無法再確認"
|
||||
|
||||
#. module: stock
|
||||
#: help:stock.location,company_id:0
|
||||
|
@ -1440,6 +1446,11 @@ msgid ""
|
|||
" When the picking is done the state is 'Done'. \n"
|
||||
"The state is 'Waiting' if the move is waiting for another one."
|
||||
msgstr ""
|
||||
"建立調動時先處於「草案(Draft)」狀態。\n"
|
||||
" 然後,如安排者找不到貨,設為「無貨(Not Available)」狀態。\n"
|
||||
" 當已預留貨物,變成「供貨(Available)」。\n"
|
||||
" 完成提貨後狀態為「完成(Done)」。 \n"
|
||||
"如調動正等候其他工作完成,狀態為「等待(Waiting)」。"
|
||||
|
||||
#. module: stock
|
||||
#: selection:report.stock.inventory,location_type:0
|
||||
|
@ -1486,7 +1497,7 @@ msgstr "貨幣"
|
|||
#. module: stock
|
||||
#: field:product.product,track_production:0
|
||||
msgid "Track Manufacturing Lots"
|
||||
msgstr ""
|
||||
msgstr "追蹤生產批次"
|
||||
|
||||
#. module: stock
|
||||
#: code:addons/stock/wizard/stock_inventory_merge.py:44
|
||||
|
@ -1537,7 +1548,7 @@ msgstr "貨架 2"
|
|||
#. module: stock
|
||||
#: field:stock.report.tracklots,tracking_id:0
|
||||
msgid "Tracking lot"
|
||||
msgstr ""
|
||||
msgstr "追蹤批次"
|
||||
|
||||
#. module: stock
|
||||
#: view:stock.picking:0
|
||||
|
@ -1558,7 +1569,7 @@ msgstr "本地化"
|
|||
#. module: stock
|
||||
#: model:ir.model,name:stock.model_stock_report_tracklots
|
||||
msgid "Stock report by tracking lots"
|
||||
msgstr ""
|
||||
msgstr "按追蹤批次庫存報告"
|
||||
|
||||
#. module: stock
|
||||
#: code:addons/stock/product.py:370
|
||||
|
@ -2119,7 +2130,7 @@ msgstr ""
|
|||
#: code:addons/stock/stock.py:2210
|
||||
#, python-format
|
||||
msgid "You can only delete draft moves."
|
||||
msgstr "不能刪除調動草案"
|
||||
msgstr "只能刪除調動草案。"
|
||||
|
||||
#. module: stock
|
||||
#: code:addons/stock/wizard/stock_partial_picking.py:97
|
||||
|
@ -2542,7 +2553,7 @@ msgstr "數量(量度單位)"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"You are moving %.2f %s products but only %.2f %s available in this lot."
|
||||
msgstr ""
|
||||
msgstr "您正移動%.2f件 %s 產品,但此批次只有%.2f件 %s。"
|
||||
|
||||
#. module: stock
|
||||
#: view:stock.move:0
|
||||
|
@ -3032,7 +3043,7 @@ msgstr ""
|
|||
#. module: stock
|
||||
#: view:stock.inventory:0
|
||||
msgid "Lot Inventory"
|
||||
msgstr ""
|
||||
msgstr "批次存貨"
|
||||
|
||||
#. module: stock
|
||||
#: view:stock.move:0
|
||||
|
@ -3501,6 +3512,11 @@ msgid ""
|
|||
" When the picking it done the state is 'Done'. \n"
|
||||
"The state is 'Waiting' if the move is waiting for another one."
|
||||
msgstr ""
|
||||
"建立調動時先處於「草案(Draft)」狀態。\n"
|
||||
" 然後設為「確認(Confirmed)」狀態。\n"
|
||||
" 如庫存有貨,變成「供貨(Available)」。\n"
|
||||
" 完成提貨後狀態為「完成(Done)」。 \n"
|
||||
"如調動正等候其他工作完成,狀態為「等待(Waiting)」。"
|
||||
|
||||
#. module: stock
|
||||
#: view:board.board:0
|
||||
|
@ -3720,7 +3736,7 @@ msgstr ""
|
|||
#. module: stock
|
||||
#: constraint:stock.move:0
|
||||
msgid "You must assign a production lot for this product"
|
||||
msgstr "須為此產品分配生產批次"
|
||||
msgstr "須為此產品指定生產批次"
|
||||
|
||||
#. module: stock
|
||||
#: view:stock.move:0
|
||||
|
@ -3817,7 +3833,7 @@ msgstr ""
|
|||
#. module: stock
|
||||
#: model:ir.model,name:stock.model_stock_report_prodlots
|
||||
msgid "Stock report by production lots"
|
||||
msgstr "生產批次回報之庫存"
|
||||
msgstr "按生產批次庫存報告"
|
||||
|
||||
#. module: stock
|
||||
#: view:stock.location:0
|
||||
|
@ -3878,7 +3894,7 @@ msgstr "輸出"
|
|||
#. module: stock
|
||||
#: selection:stock.move.split.lines,action:0
|
||||
msgid "Keep in one lot"
|
||||
msgstr ""
|
||||
msgstr "保持為同一批次"
|
||||
|
||||
#. module: stock
|
||||
#: view:product.product:0
|
||||
|
|
|
@ -664,8 +664,8 @@ class stock_picking(osv.osv):
|
|||
|
||||
def action_process(self, cr, uid, ids, context=None):
|
||||
if context is None: context = {}
|
||||
partial_id = self.pool.get("stock.partial.picking").create(
|
||||
cr, uid, {}, context=dict(context, active_ids=ids))
|
||||
context = dict(context, active_ids=ids, active_model=self._name)
|
||||
partial_id = self.pool.get("stock.partial.picking").create(cr, uid, {}, context=context)
|
||||
return {
|
||||
'name':_("Products to Process"),
|
||||
'view_mode': 'form',
|
||||
|
@ -677,7 +677,7 @@ class stock_picking(osv.osv):
|
|||
'nodestroy': True,
|
||||
'target': 'new',
|
||||
'domain': '[]',
|
||||
'context': dict(context, active_ids=ids)
|
||||
'context': context,
|
||||
}
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
|
@ -1474,6 +1474,8 @@ class stock_move(osv.osv):
|
|||
|
||||
def action_partial_move(self, cr, uid, ids, context=None):
|
||||
if context is None: context = {}
|
||||
if context.get('active_model') != self._name:
|
||||
context.update(active_ids=ids, active_model=self._name)
|
||||
partial_id = self.pool.get("stock.partial.move").create(
|
||||
cr, uid, {}, context=context)
|
||||
return {
|
||||
|
@ -2127,14 +2129,9 @@ class stock_move(osv.osv):
|
|||
""" Makes the move done and if all moves are done, it will finish the picking.
|
||||
@return:
|
||||
"""
|
||||
partial_datas=''
|
||||
picking_ids = []
|
||||
move_ids = []
|
||||
partial_obj=self.pool.get('stock.partial.picking')
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
partial_id=partial_obj.search(cr,uid,[])
|
||||
if partial_id:
|
||||
partial_datas = partial_obj.read(cr, uid, partial_id, context=context)[0]
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
|
@ -2164,9 +2161,6 @@ class stock_move(osv.osv):
|
|||
self.action_done(cr, uid, [move.move_dest_id.id], context=context)
|
||||
|
||||
self._create_product_valuation_moves(cr, uid, move, context=context)
|
||||
prodlot_id = partial_datas and partial_datas.get('move%s_prodlot_id' % (move.id), False)
|
||||
if prodlot_id:
|
||||
self.write(cr, uid, [move.id], {'prodlot_id': prodlot_id}, context=context)
|
||||
if move.state not in ('confirmed','done','assigned'):
|
||||
todo.append(move.id)
|
||||
|
||||
|
|
|
@ -184,37 +184,32 @@
|
|||
self.fill_inventory(cr, uid, [ref("stock_fill_inventory_0")], context)
|
||||
|
||||
-
|
||||
I create stock.inventory.line.split record.
|
||||
I split the PC3 inventory line to create 5 PC3 with production lot 00002-stock-test
|
||||
-
|
||||
!record {model: stock.inventory.line.split, id: stock_inventory_line_0}:
|
||||
line_ids:
|
||||
- name: '00002-stock-test'
|
||||
quantity: 5
|
||||
line_exist_ids:
|
||||
- name: '00003-stock-test'
|
||||
quantity: 5
|
||||
product_id: product.product_product_pc1
|
||||
product_uom: product.product_uom_unit
|
||||
use_exist: False
|
||||
qty: 10
|
||||
|
||||
-
|
||||
I Split stock.inventory.line into production line.
|
||||
I confirm the split operation
|
||||
-
|
||||
!python {model: stock.inventory.line.split}: |
|
||||
context = {"lang": 'en_US', "active_model": "stock.inventory.line",
|
||||
"active_ids": [ref("stock_inventory_line_0")], "tz": False, "active_id": ref("stock_inventory_line_0")}
|
||||
self.default_get(cr, uid, ["product_id", "product_uom", "line_exist_ids", "qty",
|
||||
"line_ids", "use_exist"], context)
|
||||
self.split_lot(cr, uid, [ref("stock_inventory_line_0")], context)
|
||||
|
||||
!python {model: stock.inventory.line}: |
|
||||
line_ids = self.search(cr, uid, [('inventory_id','=',ref('stock_inventory_physicalinventoy0')),
|
||||
('product_id','=',ref('product.product_product_pc1'))])
|
||||
assert line_ids, 'Inventory lines are missing'
|
||||
self.pool.get('stock.inventory.line.split').split_lot(cr, uid, [ref("stock_inventory_line_0")],
|
||||
{'active_model': 'stock.inventory.line',
|
||||
'active_ids': [line_ids[0]]})
|
||||
-
|
||||
I confirm the Inventory for PC3.
|
||||
-
|
||||
!python {model: stock.inventory}: |
|
||||
self.action_confirm(cr,uid,[ref('stock_inventory_physicalinventoy0')])
|
||||
self.action_done(cr,uid,[ref('stock_inventory_physicalinventoy0')])
|
||||
|
||||
-
|
||||
I cancel the Inventory for PC3.
|
||||
-
|
||||
|
@ -251,7 +246,7 @@
|
|||
type: out
|
||||
|
||||
-
|
||||
I Performing an osv_memory action split on module stock.split.into
|
||||
I split the picking with a first batch of 20 PCs
|
||||
-
|
||||
!python {model: stock.picking }: |
|
||||
pick=self.browse(cr,uid,ref('stock_picking_0'))
|
||||
|
@ -285,31 +280,15 @@
|
|||
ref("stock.menu_action_picking_tree6"), })
|
||||
|
||||
-
|
||||
I create a record for stock.partial.move.
|
||||
I process the partial picking with 20 PCE
|
||||
-
|
||||
!record {model: stock.partial.move, id: stock_partial_move_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
|
||||
-
|
||||
I done stock.partial.move record.
|
||||
-
|
||||
!python {model: stock.partial.move }: |
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
move_obj = self.pool.get('stock.move')
|
||||
pick=pick_obj.browse(cr,uid,ref('stock_picking_0'))
|
||||
search_id = move_obj.search(cr, uid, [('picking_id', '=', pick.id)])
|
||||
partial_datas={}
|
||||
for move in pick.move_lines:
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'quantity': 20,
|
||||
'product_uom': move.product_uom.id,
|
||||
'prodlot_id': move.prodlot_id and move.prodlot_id.id or False,
|
||||
'wizard_id': ref('stock_partial_move_0'),
|
||||
}
|
||||
context = {"lang": 'en_US', "active_model": "stock.move", "active_ids": search_id, "tz": False, "active_id":search_id[0]}
|
||||
self.fields_view_get(cr, uid, False,"form", context)
|
||||
self.do_partial(cr, uid, [ref('stock_partial_move_0')], context)
|
||||
|
||||
!python {model: stock.picking }: |
|
||||
pick = self.browse(cr,uid,ref('stock_picking_0'))
|
||||
stock_partial_move = self.pool.get('stock.partial.move')
|
||||
partial_id = stock_partial_move.create(cr, uid, {},
|
||||
context={'active_model': 'stock.move',
|
||||
'active_ids': [x.id for x in pick.move_lines]})
|
||||
stock_partial_move.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I Performing an osv_memory action split_lot on module stock.move.split
|
||||
-
|
||||
|
@ -384,34 +363,14 @@
|
|||
consume_obj.do_move_consume(cr, uid, [consume_id], context)
|
||||
|
||||
-
|
||||
I create a record for stock partial picking.
|
||||
I process the picking with the 80 remaining PCs
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
|
||||
-
|
||||
I make stock partial picking order Done.
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
partial = self.browse(cr, uid, ref('stock_partial_picking_0'), context)
|
||||
partial_datas = {
|
||||
'delivery_date' : partial.date
|
||||
}
|
||||
for pick in pick_obj.browse(cr, uid, [ref('stock_picking_0')]):
|
||||
for m in pick.move_lines:
|
||||
partial_datas['move%s'%(m.id)] = {
|
||||
'product_id' : m.product_id.id,
|
||||
'product_qty' : 80,
|
||||
'product_uom' : m.product_uom.id
|
||||
}
|
||||
context = {"lang": "en_US", "search_default_available":
|
||||
1, "tz": False, "active_model": "ir.ui.menu",
|
||||
"active_ids": [ref('stock_picking_0')], "active_id": ref("stock_picking_0"),
|
||||
}
|
||||
self.fields_view_get(cr, uid, False,"form", context)
|
||||
self.do_partial(cr, uid, [ref('stock_partial_picking_0')], context)
|
||||
|
||||
!python {model: stock.picking}: |
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
partial_id = stock_partial_picking.create(cr, uid, {},
|
||||
context={'active_model': 'stock.picking',
|
||||
'active_ids': [ref('stock_picking_0')]})
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I Performing an osv_memory action create_invoice on module stock.invoice.onshipping
|
||||
-
|
||||
|
@ -447,35 +406,20 @@
|
|||
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner_address",
|
||||
"active_ids": [ref("stock.menu_action_picking_tree4")], "active_id": ref("stock.menu_action_picking_tree4"),
|
||||
})
|
||||
pick=self.browse(cr,uid,copy_id)
|
||||
self.allow_cancel(cr, uid, [copy_id], context= None)
|
||||
|
||||
-
|
||||
I create a record of stock.picking and I reaturn the picking
|
||||
I process a copy of the picking and I return it
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
copy_id = self.copy(cr, uid, (ref("stock_picking_0")))
|
||||
ctx = {"lang": "en_US", "active_model":
|
||||
"ir.ui.menu", "tz": False, "search_default_confirmed": 1, "contact_display":
|
||||
"partner", "active_ids": [ref("stock.menu_action_picking_tree6")], "active_id":
|
||||
ref("stock.menu_action_picking_tree6")}
|
||||
self.draft_force_assign(cr, uid, [copy_id], ctx)
|
||||
self.force_assign(cr, uid, [copy_id], ctx)
|
||||
pick=self.browse(cr,uid,copy_id)
|
||||
partial_datas={}
|
||||
for move in pick.move_lines:
|
||||
partial_datas['move%s'%(move.id)]= {
|
||||
'product_id': move.product_id,
|
||||
'product_qty': move.product_qty,
|
||||
}
|
||||
self.do_partial(cr, uid, [pick.id],partial_datas)
|
||||
reurn_datas={}
|
||||
context = {"lang": 'en_US', "active_model":
|
||||
"stock.picking", "active_ids": [pick.id], "tz": False, "active_id":pick.id}
|
||||
self.draft_force_assign(cr, uid, [copy_id])
|
||||
self.force_assign(cr, uid, [copy_id])
|
||||
stock_partial_picking = self.pool.get('stock.partial.picking')
|
||||
context = {'active_model': 'stock.picking',
|
||||
'active_ids': [copy_id],
|
||||
'active_id': copy_id}
|
||||
partial_id = stock_partial_picking.create(cr, uid, {}, context=context)
|
||||
stock_partial_picking.do_partial(cr, uid, [partial_id], context)
|
||||
return_pick_id = self.pool.get('stock.return.picking').create(cr, uid,{}, context)
|
||||
for move in pick.move_lines:
|
||||
reurn_datas= {
|
||||
'product_id': move.product_id.id,
|
||||
'quantity': move.product_qty,
|
||||
}
|
||||
self.pool.get('stock.return.picking').create_returns(cr, uid, [return_pick_id], context)
|
||||
|
|
|
@ -21,24 +21,17 @@
|
|||
|
||||
from osv import fields, osv
|
||||
|
||||
from tools.translate import _
|
||||
import time
|
||||
|
||||
class stock_inventory_line_split(osv.osv_memory):
|
||||
_inherit = "stock.move.split"
|
||||
_name = "stock.inventory.line.split"
|
||||
_description = "Split inventory lines"
|
||||
|
||||
_columns = {
|
||||
'line_ids': fields.one2many('stock.inventory.line.split.lines', 'wizard_id', 'Production Lots'),
|
||||
'line_exist_ids': fields.one2many('stock.inventory.line.split.lines', 'wizard_exist_id', 'Production Lots'),
|
||||
}
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
""" To check the availability of production lot.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param fields: List of fields for which we want default values
|
||||
@param context: A standard dictionary
|
||||
@return: A dictionary which of fields with values.
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
record_id = context and context.get('active_id',False)
|
||||
|
@ -54,14 +47,13 @@ class stock_inventory_line_split(osv.osv_memory):
|
|||
|
||||
def split(self, cr, uid, ids, line_ids, context=None):
|
||||
""" To split stock inventory lines according to production lot.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param ids: the ID or list of IDs if we want more than one
|
||||
@param line_ids: the ID or list of IDs of inventory lines we want to split
|
||||
@param context: A standard dictionary
|
||||
@return:
|
||||
|
||||
:param line_ids: the ID or list of IDs of inventory lines we want to split
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
assert context.get('active_model') == 'stock.inventory.line',\
|
||||
'Incorrect use of the inventory line split wizard'
|
||||
prodlot_obj = self.pool.get('stock.production.lot')
|
||||
ir_sequence_obj = self.pool.get('ir.sequence')
|
||||
line_obj = self.pool.get('stock.inventory.line')
|
||||
|
@ -108,7 +100,14 @@ class stock_inventory_line_split(osv.osv_memory):
|
|||
line_obj.write(cr, uid, [inv_line.id], update_val)
|
||||
|
||||
return new_line
|
||||
stock_inventory_line_split()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
class stock_inventory_split_lines(osv.osv_memory):
|
||||
_inherit = "stock.move.split.lines"
|
||||
_name = "stock.inventory.line.split.lines"
|
||||
_description = "Inventory Split lines"
|
||||
_columns = {
|
||||
'wizard_id': fields.many2one('stock.inventory.line.split', 'Parent Wizard'),
|
||||
'wizard_exist_id': fields.many2one('stock.inventory.line.split', 'Parent Wizard'),
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -28,7 +28,7 @@ class stock_invoice_onshipping(osv.osv_memory):
|
|||
def _get_journal(self, cr, uid, context=None):
|
||||
res = self._get_journal_id(cr, uid, context=context)
|
||||
if res:
|
||||
return res[0]
|
||||
return res[0][0]
|
||||
return False
|
||||
|
||||
def _get_journal_id(self, cr, uid, context=None):
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
|
||||
from tools.translate import _
|
||||
import decimal_precision as dp
|
||||
|
||||
class stock_move_consume(osv.osv_memory):
|
||||
|
@ -146,14 +146,6 @@ class split_in_production_lot(osv.osv_memory):
|
|||
_description = "Split in Production lots"
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
""" Get default values
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param fields: List of fields for default value
|
||||
@param context: A standard dictionary
|
||||
@return: Default values of fields
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
res = super(split_in_production_lot, self).default_get(cr, uid, fields, context=context)
|
||||
|
@ -175,38 +167,28 @@ class split_in_production_lot(osv.osv_memory):
|
|||
'qty': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM')),
|
||||
'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
|
||||
'product_uom': fields.many2one('product.uom', 'UoM'),
|
||||
'line_ids': fields.one2many('stock.move.split.lines', 'lot_id', 'Production Lots'),
|
||||
'line_exist_ids': fields.one2many('stock.move.split.lines.exist', 'lot_id', 'Production Lots'),
|
||||
'line_ids': fields.one2many('stock.move.split.lines', 'wizard_id', 'Production Lots'),
|
||||
'line_exist_ids': fields.one2many('stock.move.split.lines', 'wizard_exist_id', 'Production Lots'),
|
||||
'use_exist' : fields.boolean('Existing Lots', help="Check this option to select existing lots in the list below, otherwise you should enter new ones line by line."),
|
||||
'location_id': fields.many2one('stock.location', 'Source Location')
|
||||
}
|
||||
|
||||
def split_lot(self, cr, uid, ids, context=None):
|
||||
""" To split a lot
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param ids: An ID or list of IDs if we want more than one
|
||||
@param context: A standard dictionary
|
||||
@return:
|
||||
"""
|
||||
""" To split a lot"""
|
||||
if context is None:
|
||||
context = {}
|
||||
self.split(cr, uid, ids, context.get('active_ids'), context=context)
|
||||
res = self.split(cr, uid, ids, context.get('active_ids'), context=context)
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
def split(self, cr, uid, ids, move_ids, context=None):
|
||||
""" To split stock moves into production lot
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param ids: the ID or list of IDs if we want more than one
|
||||
@param move_ids: the ID or list of IDs of stock move we want to split
|
||||
@param context: A standard dictionary
|
||||
@return:
|
||||
|
||||
:param move_ids: the ID or list of IDs of stock move we want to split
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
assert context.get('active_model') == 'stock.move',\
|
||||
'Incorrect use of the stock move split wizard'
|
||||
inventory_id = context.get('inventory_id', False)
|
||||
prodlot_obj = self.pool.get('stock.production.lot')
|
||||
inventory_obj = self.pool.get('stock.inventory')
|
||||
|
@ -231,7 +213,8 @@ class split_in_production_lot(osv.osv_memory):
|
|||
uos_qty_rest = quantity_rest / move_qty * move.product_uos_qty
|
||||
if quantity_rest < 0:
|
||||
quantity_rest = quantity
|
||||
break
|
||||
self.pool.get('stock.move').log(cr, uid, move.id, _('Unable to assign all lots to this move!'))
|
||||
return False
|
||||
default_val = {
|
||||
'product_qty': quantity,
|
||||
'product_uos_qty': uos_qty,
|
||||
|
@ -268,12 +251,13 @@ class split_in_production_lot(osv.osv_memory):
|
|||
split_in_production_lot()
|
||||
|
||||
class stock_move_split_lines_exist(osv.osv_memory):
|
||||
_name = "stock.move.split.lines.exist"
|
||||
_description = "Exist Split lines"
|
||||
_name = "stock.move.split.lines"
|
||||
_description = "Stock move Split lines"
|
||||
_columns = {
|
||||
'name': fields.char('Tracking serial', size=64),
|
||||
'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM')),
|
||||
'lot_id': fields.many2one('stock.move.split', 'Lot'),
|
||||
'wizard_id': fields.many2one('stock.move.split', 'Parent Wizard'),
|
||||
'wizard_exist_id': fields.many2one('stock.move.split', 'Parent Wizard (for existing lines)'),
|
||||
'prodlot_id': fields.many2one('stock.production.lot', 'Production Lot'),
|
||||
}
|
||||
_defaults = {
|
||||
|
@ -284,21 +268,3 @@ class stock_move_split_lines_exist(osv.osv_memory):
|
|||
loc_id=False, product_id=False, uom_id=False):
|
||||
return self.pool.get('stock.move').onchange_lot_id(cr, uid, [], prodlot_id, product_qty,
|
||||
loc_id, product_id, uom_id)
|
||||
|
||||
stock_move_split_lines_exist()
|
||||
|
||||
class stock_move_split_lines(osv.osv_memory):
|
||||
_name = "stock.move.split.lines"
|
||||
_description = "Split lines"
|
||||
_columns = {
|
||||
'name': fields.char('Tracking serial', size=64),
|
||||
'quantity': fields.float('Quantity', digits_compute=dp.get_precision('Product UoM')),
|
||||
'use_exist' : fields.boolean('Existing Lot'),
|
||||
'lot_id': fields.many2one('stock.move.split', 'Lot'),
|
||||
'action': fields.selection([('split','Split'),('keepinone','Keep in one lot')],'Action'),
|
||||
}
|
||||
_defaults = {
|
||||
'quantity': 1.00,
|
||||
'action' : 'split',
|
||||
}
|
||||
stock_move_split_lines()
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
# Copyright (C) 2004-TODAY OpenERP SA (<http://openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
|
@ -20,210 +20,65 @@
|
|||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
from tools.misc import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
import time
|
||||
import decimal_precision as dp
|
||||
|
||||
|
||||
class stock_partial_move_memory_out(osv.osv_memory):
|
||||
_name = "stock.move.memory.out"
|
||||
_rec_name = 'product_id'
|
||||
class stock_partial_move_line(osv.osv_memory):
|
||||
_inherit = "stock.partial.picking.line"
|
||||
_name = "stock.partial.move.line"
|
||||
_columns = {
|
||||
'product_id' : fields.many2one('product.product', string="Product", required=True),
|
||||
'quantity' : fields.float("Quantity", required=True),
|
||||
'product_uom': fields.many2one('product.uom', 'Unit of Measure', required=True),
|
||||
'prodlot_id' : fields.many2one('stock.production.lot', 'Production Lot'),
|
||||
'location_id': fields.many2one('stock.location', 'Location', required=True),
|
||||
'location_dest_id': fields.many2one('stock.location', 'Dest. Location', required=True),
|
||||
'move_id' : fields.many2one('stock.move', "Move"),
|
||||
'wizard_id' : fields.many2one('stock.partial.move', string="Wizard"),
|
||||
'cost' : fields.float('Cost', digits_compute = dp.get_precision('Purchase Price'),help="Unit Cost for this product line"),
|
||||
'currency' : fields.many2one('res.currency', string="Currency", help="Currency in which Unit cost is expressed"),
|
||||
'wizard_id' : fields.many2one('stock.partial.move', string="Wizard", ondelete='CASCADE'),
|
||||
}
|
||||
|
||||
class stock_partial_move_memory_in(osv.osv_memory):
|
||||
_inherit = "stock.move.memory.out"
|
||||
_name = "stock.move.memory.in"
|
||||
|
||||
|
||||
class stock_partial_move(osv.osv_memory):
|
||||
_name = "stock.partial.move"
|
||||
_description = "Partial Move"
|
||||
_inherit = 'stock.partial.picking'
|
||||
_description = "Partial Move Processing Wizard"
|
||||
_columns = {
|
||||
'date': fields.datetime('Date', required=True),
|
||||
'type': fields.char("Type", size=3),
|
||||
'product_moves_out' : fields.one2many('stock.move.memory.out', 'wizard_id', 'Moves'),
|
||||
'product_moves_in' : fields.one2many('stock.move.memory.in', 'wizard_id', 'Moves'),
|
||||
}
|
||||
|
||||
|
||||
def __is_in(self,cr, uid, move_ids):
|
||||
"""
|
||||
@return: True if one of the moves has as picking type 'in'
|
||||
"""
|
||||
if not move_ids:
|
||||
return False
|
||||
|
||||
move_obj = self.pool.get('stock.move')
|
||||
move_ids = move_obj.search(cr, uid, [('id','in',move_ids)])
|
||||
|
||||
for move in move_obj.browse(cr, uid, move_ids):
|
||||
if move.picking_id.type == 'in' and move.product_id.cost_method == 'average':
|
||||
return True
|
||||
return False
|
||||
|
||||
def __get_picking_type(self, cr, uid, move_ids):
|
||||
if self.__is_in(cr, uid, move_ids):
|
||||
return "product_moves_in"
|
||||
else:
|
||||
return "product_moves_out"
|
||||
|
||||
def view_init(self, cr, uid, fields_list, context=None):
|
||||
res = super(stock_partial_move, self).view_init(cr, uid, fields_list, context=context)
|
||||
move_obj = self.pool.get('stock.move')
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
for move in move_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
||||
if move.state in ('done', 'cancel'):
|
||||
raise osv.except_osv(_('Invalid action !'), _('Cannot deliver products which are already delivered !'))
|
||||
|
||||
return res
|
||||
|
||||
|
||||
def __create_partial_move_memory(self, move):
|
||||
move_memory = {
|
||||
'product_id' : move.product_id.id,
|
||||
'quantity' : move.product_qty,
|
||||
'product_uom' : move.product_uom.id,
|
||||
'prodlot_id' : move.prodlot_id.id,
|
||||
'move_id' : move.id,
|
||||
}
|
||||
|
||||
if move.picking_id.type == 'in':
|
||||
move_memory.update({
|
||||
'cost' : move.product_id.standard_price,
|
||||
'currency' : move.product_id.company_id and move.product_id.company_id.currency_id and move.product_id.company_id.currency_id.id or False,
|
||||
})
|
||||
return move_memory
|
||||
'move_ids' : fields.one2many('stock.partial.move.line', 'wizard_id', 'Moves'),
|
||||
|
||||
def __get_active_stock_moves(self, cr, uid, context=None):
|
||||
move_obj = self.pool.get('stock.move')
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
res = []
|
||||
for move in move_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
||||
if move.state in ('done', 'cancel'):
|
||||
continue
|
||||
res.append(self.__create_partial_move_memory(move))
|
||||
|
||||
# picking_id is not used for move processing, so we remove the required attribute
|
||||
# from the inherited column, and ignore it
|
||||
'picking_id': fields.many2one('stock.picking', 'Picking'),
|
||||
}
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
if context is None: context = {}
|
||||
# no call to super!
|
||||
res = {}
|
||||
move_ids = context.get('active_ids', [])
|
||||
if not move_ids or not context.get('active_model') == 'stock.move':
|
||||
return res
|
||||
if 'move_ids' in fields:
|
||||
move_ids = self.pool.get('stock.move').browse(cr, uid, move_ids, context=context)
|
||||
moves = [self._partial_move_for(cr, uid, m) for m in move_ids if m.state not in ('done','cancel')]
|
||||
res.update(move_ids=moves)
|
||||
if 'date' in fields:
|
||||
res.update(date=time.strftime(DEFAULT_SERVER_DATETIME_FORMAT))
|
||||
return res
|
||||
|
||||
_defaults = {
|
||||
'product_moves_in' : __get_active_stock_moves,
|
||||
'product_moves_out' : __get_active_stock_moves,
|
||||
'date' : lambda *a : time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
}
|
||||
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
if not context:
|
||||
context = {}
|
||||
|
||||
message = {
|
||||
'title' : _('Deliver Products'),
|
||||
'info' : _('Delivery Information'),
|
||||
'button' : _('Deliver'),
|
||||
}
|
||||
if context:
|
||||
if context.get('product_receive', False):
|
||||
message = {
|
||||
'title' : _('Receive Products'),
|
||||
'info' : _('Receive Information'),
|
||||
'button' : _('Receive'),
|
||||
}
|
||||
|
||||
move_ids = context.get('active_ids', False)
|
||||
message['picking_type'] = self.__get_picking_type(cr, uid, move_ids)
|
||||
result = super(stock_partial_move, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu)
|
||||
_moves_fields = result['fields']
|
||||
_moves_fields.update({
|
||||
'product_moves_in' : {'relation': 'stock.move.memory.in', 'type' : 'one2many', 'string' : 'Product Moves'},
|
||||
'product_moves_out' : {'relation': 'stock.move.memory.out', 'type' : 'one2many', 'string' : 'Product Moves'}
|
||||
})
|
||||
|
||||
_moves_arch_lst = """
|
||||
<form string="%(title)s">
|
||||
<separator colspan="4" string="%(info)s"/>
|
||||
<field name="date" colspan="2"/>
|
||||
<separator colspan="4" string="Move Detail"/>
|
||||
<field name="%(picking_type)s" colspan="4" nolabel="1" mode="tree,form" width="550" height="200" ></field>
|
||||
<separator string="" colspan="4" />
|
||||
<label string="" colspan="2"/>
|
||||
<group col="2" colspan="2">
|
||||
<button icon='gtk-cancel' special="cancel" string="_Cancel" />
|
||||
<button name="do_partial" string="%(button)s"
|
||||
colspan="1" type="object" icon="gtk-apply" />
|
||||
</group>
|
||||
</form> """ % message
|
||||
|
||||
result['arch'] = _moves_arch_lst
|
||||
result['fields'] = _moves_fields
|
||||
return result
|
||||
|
||||
|
||||
def do_partial(self, cr, uid, ids, context=None):
|
||||
""" Makes partial moves and pickings done.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param fields: List of fields for which we want default values
|
||||
@param context: A standard dictionary
|
||||
@return: A dictionary which of fields with values.
|
||||
"""
|
||||
|
||||
if context is None:
|
||||
context = {}
|
||||
move_obj = self.pool.get('stock.move')
|
||||
|
||||
move_ids = context.get('active_ids', False)
|
||||
# no call to super!
|
||||
assert len(ids) == 1, 'Partial move processing may only be done one form at a time'
|
||||
partial = self.browse(cr, uid, ids[0], context=context)
|
||||
partial_datas = {
|
||||
partial_data = {
|
||||
'delivery_date' : partial.date
|
||||
}
|
||||
|
||||
p_moves = {}
|
||||
picking_type = self.__get_picking_type(cr, uid, move_ids)
|
||||
|
||||
moves_list = picking_type == 'product_moves_in' and partial.product_moves_in or partial.product_moves_out
|
||||
for product_move in moves_list:
|
||||
p_moves[product_move.move_id.id] = product_move
|
||||
|
||||
moves_ids_final = []
|
||||
for move in move_obj.browse(cr, uid, move_ids, context=context):
|
||||
if move.state in ('done', 'cancel'):
|
||||
continue
|
||||
if not p_moves.get(move.id):
|
||||
continue
|
||||
partial_datas['move%s' % (move.id)] = {
|
||||
'product_id' : p_moves[move.id].product_id.id,
|
||||
'product_qty' : p_moves[move.id].quantity,
|
||||
'product_uom' :p_moves[move.id].product_uom.id,
|
||||
'prodlot_id' : p_moves[move.id].prodlot_id.id,
|
||||
moves_ids = []
|
||||
for move in partial.move_ids:
|
||||
move_id = move.move_id.id
|
||||
partial_data['move%s' % (move_id)] = {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.quantity,
|
||||
'product_uom': move.product_uom.id,
|
||||
'prodlot_id': move.prodlot_id.id,
|
||||
}
|
||||
|
||||
moves_ids_final.append(move.id)
|
||||
if (move.picking_id.type == 'in') and (move.product_id.cost_method == 'average'):
|
||||
partial_datas['move%s' % (move.id)].update({
|
||||
'product_price' : p_moves[move.id].cost,
|
||||
'product_currency': p_moves[move.id].currency.id,
|
||||
})
|
||||
|
||||
|
||||
move_obj.do_partial(cr, uid, moves_ids_final, partial_datas, context=context)
|
||||
moves_ids.append(move_id)
|
||||
if (move.move_id.picking_id.type == 'in') and (move.product_id.cost_method == 'average'):
|
||||
partial_data['move%s' % (move_id)].update(product_price=move.cost,
|
||||
product_currency=move.currency.id)
|
||||
self.pool.get('stock.move').do_partial(cr, uid, moves_ids, partial_data, context=context)
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
stock_partial_move()
|
||||
stock_partial_move_memory_out()
|
||||
stock_partial_move_memory_in()
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -1,16 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
|
||||
|
||||
<record id="action_partial_move_server" model="ir.actions.server">
|
||||
<field name="name">Deliver/Receive Products</field>
|
||||
<field name="model_id" ref="model_stock_move"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = obj.action_partial_move(context=context)</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="ir_open_partial_move_wizard" model="ir.values">
|
||||
<field eval="'client_action_multi'" name="key2"/>
|
||||
<field eval="'stock.move'" name="model"/>
|
||||
|
@ -19,75 +16,60 @@
|
|||
<field eval="True" name="object"/>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
<record id="stock_move_memory_tree_in" model="ir.ui.view">
|
||||
<field name="name">stock.move.memory.tree</field>
|
||||
<field name="model">stock.move.memory.in</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom" string="Product Moves">
|
||||
<field name="product_id" />
|
||||
<field name="quantity" />
|
||||
<field name="product_uom" />
|
||||
<field name="location_id" />
|
||||
<field name="location_dest_id" />
|
||||
<field name="prodlot_id" domain="[('product_id', '=', product_id)]" groups="base.group_extended" />
|
||||
<field name="cost" />
|
||||
<field name="currency" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_move_memory_form_in" model="ir.ui.view">
|
||||
<field name="name">stock.move.memory.form</field>
|
||||
<field name="model">stock.move.memory.in</field>
|
||||
<record id="stock_partial_move_form" model="ir.ui.view">
|
||||
<field name="name">stock.partial.move.form</field>
|
||||
<field name="model">stock.partial.move</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="product_id" />
|
||||
<field name="quantity" />
|
||||
<field name="product_uom" />
|
||||
<field name="location_id" />
|
||||
<field name="location_dest_id" />
|
||||
<field name="prodlot_id" domain="[('product_id', '=', product_id)]" groups="base.group_extended" />
|
||||
<field name="cost" />
|
||||
<field name="currency" />
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_move_memory_tree_out" model="ir.ui.view">
|
||||
<field name="name">stock.move.memory.tree</field>
|
||||
<field name="model">stock.move.memory.out</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom" string="Product Moves">
|
||||
<field name="product_id" />
|
||||
<field name="quantity" />
|
||||
<field name="product_uom" />
|
||||
<field name="location_id" />
|
||||
<field name="location_dest_id" />
|
||||
<field name="prodlot_id" domain="[('product_id', '=', product_id)]" groups="base.group_extended" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_move_memory_form_out" model="ir.ui.view">
|
||||
<field name="name">stock.move.memory.form</field>
|
||||
<field name="model">stock.move.memory.out</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="product_id" />
|
||||
<field name="quantity" />
|
||||
<field name="product_uom" />
|
||||
<field name="location_id" />
|
||||
<field name="location_dest_id" />
|
||||
<field name="prodlot_id" domain="[('product_id', '=', product_id)]" groups="base.group_extended" />
|
||||
<separator colspan="4" string="Products"/>
|
||||
<field name="move_ids" colspan="4" nolabel="1" mode="tree,form" width="550" height="200"/>
|
||||
<separator string="" colspan="4" />
|
||||
<label string="" colspan="2"/>
|
||||
<group col="2" colspan="2">
|
||||
<button icon='gtk-cancel' special="cancel" string="_Cancel" />
|
||||
<button name="do_partial" string="_Validate" colspan="1" type="object" icon="gtk-go-forward" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</record>
|
||||
|
||||
<record id="stock_partial_move_line_list" model="ir.ui.view">
|
||||
<field name="name">stock.partial.move.line.list</field>
|
||||
<field name="model">stock.partial.move.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom" string="Product Moves">
|
||||
<field name="product_id" />
|
||||
<field name="quantity" />
|
||||
<field name="product_uom" />
|
||||
<field name="location_id" />
|
||||
<field name="location_dest_id" />
|
||||
<field name="prodlot_id" domain="[('product_id', '=', product_id)]" groups="base.group_extended" />
|
||||
<field name="update_cost" invisible="1"/>
|
||||
<field name="cost" attrs="{'invisible': [('update_cost','=', False)]}"/>
|
||||
<field name="currency" attrs="{'invisible': [('update_cost','=', False)]}"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_partial_move_line_form" model="ir.ui.view">
|
||||
<field name="name">stock.partial.move.line.form</field>
|
||||
<field name="model">stock.partial.move.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="product_id" />
|
||||
<field name="quantity" />
|
||||
<field name="product_uom" />
|
||||
<field name="location_id" />
|
||||
<field name="location_dest_id" />
|
||||
<field name="prodlot_id" domain="[('product_id', '=', product_id)]" groups="base.group_extended" />
|
||||
<field name="update_cost" invisible="1"/>
|
||||
<field name="cost" attrs="{'invisible': [('update_cost','=', False)]}"/>
|
||||
<field name="currency" attrs="{'invisible': [('update_cost','=', False)]}"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
# Copyright (C) 2004-TODAY OpenERP SA (<http://openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
|
@ -20,169 +19,119 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
import time
|
||||
from osv import fields, osv
|
||||
from tools.misc import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
|
||||
class stock_partial_picking_line(osv.TransientModel):
|
||||
_name = "stock.partial.picking.line"
|
||||
_rec_name = 'product_id'
|
||||
_columns = {
|
||||
'product_id' : fields.many2one('product.product', string="Product", required=True, ondelete='CASCADE'),
|
||||
'quantity' : fields.float("Quantity", required=True),
|
||||
'product_uom': fields.many2one('product.uom', 'Unit of Measure', required=True, ondelete='CASCADE'),
|
||||
'prodlot_id' : fields.many2one('stock.production.lot', 'Production Lot', ondelete='CASCADE'),
|
||||
'location_id': fields.many2one('stock.location', 'Location', required=True, ondelete='CASCADE'),
|
||||
'location_dest_id': fields.many2one('stock.location', 'Dest. Location', required=True, ondelete='CASCADE'),
|
||||
'move_id' : fields.many2one('stock.move', "Move", ondelete='CASCADE'),
|
||||
'wizard_id' : fields.many2one('stock.partial.picking', string="Wizard", ondelete='CASCADE'),
|
||||
'update_cost': fields.boolean('Need cost update'),
|
||||
'cost' : fields.float("Cost", help="Unit Cost for this product line"),
|
||||
'currency' : fields.many2one('res.currency', string="Currency", help="Currency in which Unit cost is expressed", ondelete='CASCADE'),
|
||||
}
|
||||
|
||||
class stock_partial_picking(osv.osv_memory):
|
||||
_name = "stock.partial.picking"
|
||||
_description = "Partial Picking"
|
||||
_description = "Partial Picking Processing Wizard"
|
||||
_columns = {
|
||||
'date': fields.datetime('Date', required=True),
|
||||
'product_moves_out' : fields.one2many('stock.move.memory.out', 'wizard_id', 'Moves'),
|
||||
'product_moves_in' : fields.one2many('stock.move.memory.in', 'wizard_id', 'Moves'),
|
||||
'move_ids' : fields.one2many('stock.partial.picking.line', 'wizard_id', 'Product Moves'),
|
||||
'picking_id': fields.many2one('stock.picking', 'Picking', required=True, ondelete='CASCADE'),
|
||||
}
|
||||
|
||||
def get_picking_type(self, cr, uid, picking, context=None):
|
||||
picking_type = picking.type
|
||||
for move in picking.move_lines:
|
||||
if picking.type == 'in' and move.product_id.cost_method == 'average':
|
||||
picking_type = 'in'
|
||||
break
|
||||
else:
|
||||
picking_type = 'out'
|
||||
return picking_type
|
||||
|
||||
|
||||
def default_get(self, cr, uid, fields, context=None):
|
||||
""" To get default values for the object.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param fields: List of fields for which we want default values
|
||||
@param context: A standard dictionary
|
||||
@return: A dictionary which of fields with values.
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
if context is None: context = {}
|
||||
res = super(stock_partial_picking, self).default_get(cr, uid, fields, context=context)
|
||||
picking_ids = context.get('active_ids', [])
|
||||
if not picking_ids:
|
||||
if not picking_ids or (not context.get('active_model') == 'stock.picking') \
|
||||
or len(picking_ids) != 1:
|
||||
# Partial Picking Processing may only be done for one picking at a time
|
||||
return res
|
||||
|
||||
result = []
|
||||
for pick in pick_obj.browse(cr, uid, picking_ids, context=context):
|
||||
pick_type = self.get_picking_type(cr, uid, pick, context=context)
|
||||
for m in pick.move_lines:
|
||||
if m.state in ('done', 'cancel'):
|
||||
continue
|
||||
result.append(self.__create_partial_picking_memory(m, pick_type))
|
||||
|
||||
if 'product_moves_in' in fields:
|
||||
res.update({'product_moves_in': result})
|
||||
if 'product_moves_out' in fields:
|
||||
res.update({'product_moves_out': result})
|
||||
picking_id, = picking_ids
|
||||
if 'picking_id' in fields:
|
||||
res.update(picking_id=picking_id)
|
||||
if 'move_ids' in fields:
|
||||
picking = self.pool.get('stock.picking').browse(cr, uid, picking_id, context=context)
|
||||
moves = [self._partial_move_for(cr, uid, m) for m in picking.move_lines if m.state not in ('done','cancel')]
|
||||
res.update(move_ids=moves)
|
||||
if 'date' in fields:
|
||||
res.update({'date': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
res.update(date=time.strftime(DEFAULT_SERVER_DATETIME_FORMAT))
|
||||
return res
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
result = super(stock_partial_picking, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu)
|
||||
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
picking_ids = context.get('active_ids', False)
|
||||
|
||||
if not picking_ids:
|
||||
# not called through an action (e.g. buildbot), return the default.
|
||||
return result
|
||||
|
||||
for pick in pick_obj.browse(cr, uid, picking_ids, context=context):
|
||||
picking_type = self.get_picking_type(cr, uid, pick, context=context)
|
||||
def _product_cost_for_average_update(self, cr, uid, move):
|
||||
"""Returns product cost and currency ID for the given move, suited for re-computing
|
||||
the average product cost.
|
||||
|
||||
_moves_arch_lst = """<form string="%s">
|
||||
<field name="date" invisible="1"/>
|
||||
<separator colspan="4" string="%s"/>
|
||||
<field name="%s" colspan="4" nolabel="1" mode="tree,form" width="550" height="200" ></field>
|
||||
""" % (_('Process Document'), _('Products'), "product_moves_" + picking_type)
|
||||
_moves_fields = result['fields']
|
||||
:return: map of the form::
|
||||
|
||||
# add field related to picking type only
|
||||
_moves_fields.update({
|
||||
'product_moves_' + picking_type: {'relation': 'stock.move.memory.'+picking_type, 'type' : 'one2many', 'string' : 'Product Moves'},
|
||||
})
|
||||
{'cost': 123.34,
|
||||
'currency': 42}
|
||||
"""
|
||||
# Currently, the cost on the product form is supposed to be expressed in the currency
|
||||
# of the company owning the product. If not set, we fall back to the picking's company,
|
||||
# which should work in simple cases.
|
||||
return {'cost': move.product_id.standard_price,
|
||||
'currency': move.product_id.company_id.currency_id.id \
|
||||
or move.picking_id.company_id.currency_id.id \
|
||||
or False}
|
||||
|
||||
_moves_arch_lst += """
|
||||
<separator string="" colspan="4" />
|
||||
<label string="" colspan="2"/>
|
||||
<group col="2" colspan="2">
|
||||
<button icon='gtk-cancel' special="cancel"
|
||||
string="_Cancel" />
|
||||
<button name="do_partial" string="_Validate"
|
||||
colspan="1" type="object" icon="gtk-go-forward" />
|
||||
</group>
|
||||
</form>"""
|
||||
result['arch'] = _moves_arch_lst
|
||||
result['fields'] = _moves_fields
|
||||
return result
|
||||
|
||||
def __create_partial_picking_memory(self, picking, pick_type):
|
||||
move_memory = {
|
||||
'product_id' : picking.product_id.id,
|
||||
'quantity' : picking.product_qty,
|
||||
'product_uom' : picking.product_uom.id,
|
||||
'prodlot_id' : picking.prodlot_id.id,
|
||||
'move_id' : picking.id,
|
||||
'location_id' : picking.location_id.id,
|
||||
'location_dest_id' : picking.location_dest_id.id,
|
||||
def _partial_move_for(self, cr, uid, move):
|
||||
partial_move = {
|
||||
'product_id' : move.product_id.id,
|
||||
'quantity' : move.product_qty,
|
||||
'product_uom' : move.product_uom.id,
|
||||
'prodlot_id' : move.prodlot_id.id,
|
||||
'move_id' : move.id,
|
||||
'location_id' : move.location_id.id,
|
||||
'location_dest_id' : move.location_dest_id.id,
|
||||
}
|
||||
|
||||
if pick_type == 'in':
|
||||
move_memory.update({
|
||||
'cost' : picking.product_id.standard_price,
|
||||
'currency' : picking.product_id.company_id and picking.product_id.company_id.currency_id and picking.product_id.company_id.currency_id.id or False,
|
||||
})
|
||||
return move_memory
|
||||
if move.picking_id.type == 'in' and move.product_id.cost_method == 'average':
|
||||
partial_move.update(update_cost=True, **self._product_cost_for_average_update(cr, uid, move))
|
||||
return partial_move
|
||||
|
||||
def do_partial(self, cr, uid, ids, context=None):
|
||||
""" Makes partial moves and pickings done.
|
||||
@param self: The object pointer.
|
||||
@param cr: A database cursor
|
||||
@param uid: ID of the user currently logged in
|
||||
@param fields: List of fields for which we want default values
|
||||
@param context: A standard dictionary
|
||||
@return: A dictionary which of fields with values.
|
||||
"""
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
stock_move_obj = self.pool.get('stock.move')
|
||||
picking_ids = context.get('active_ids', False)
|
||||
assert len(ids) == 1, 'Partial picking processing may only be done one at a time'
|
||||
stock_picking = self.pool.get('stock.picking')
|
||||
stock_move = self.pool.get('stock.move')
|
||||
partial = self.browse(cr, uid, ids[0], context=context)
|
||||
partial_datas = {
|
||||
partial_data = {
|
||||
'delivery_date' : partial.date
|
||||
}
|
||||
for pick in pick_obj.browse(cr, uid, picking_ids, context=context):
|
||||
picking_type = self.get_picking_type(cr, uid, pick, context=context)
|
||||
moves_list = picking_type == 'in' and partial.product_moves_in or partial.product_moves_out
|
||||
for move in moves_list:
|
||||
if not move.move_id.id:
|
||||
seq_obj_name = 'stock.picking.' + picking_type
|
||||
move_id = stock_move_obj.create(cr,uid,{'name' : self.pool.get('ir.sequence').get(cr, uid, seq_obj_name),
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.quantity,
|
||||
'product_uom': move.product_uom.id,
|
||||
'prodlot_id': move.prodlot_id.id,
|
||||
'location_id' : move.location_id.id,
|
||||
'location_dest_id' : move.location_dest_id.id,
|
||||
'picking_id': pick.id
|
||||
},context=context)
|
||||
stock_move_obj.action_done(cr, uid, [move_id], context)
|
||||
else:
|
||||
move_id = move.move_id.id
|
||||
|
||||
partial_datas['move%s' % (move_id)] = {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.quantity,
|
||||
'product_uom': move.product_uom.id,
|
||||
'prodlot_id': move.prodlot_id.id,
|
||||
}
|
||||
if (picking_type == 'in') and (move.product_id.cost_method == 'average'):
|
||||
partial_datas['move%s' % (move.move_id.id)].update({
|
||||
'product_price' : move.cost,
|
||||
'product_currency': move.currency.id,
|
||||
})
|
||||
pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context)
|
||||
picking_type = partial.picking_id.type
|
||||
for move in partial.move_ids:
|
||||
move_id = move.move_id.id
|
||||
if not move_id:
|
||||
seq_obj_name = 'stock.picking.' + picking_type
|
||||
move_id = stock_move.create(cr,uid,{'name' : self.pool.get('ir.sequence').get(cr, uid, seq_obj_name),
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.quantity,
|
||||
'product_uom': move.product_uom.id,
|
||||
'prodlot_id': move.prodlot_id.id,
|
||||
'location_id' : move.location_id.id,
|
||||
'location_dest_id' : move.location_dest_id.id,
|
||||
'picking_id': partial.picking_id.id
|
||||
},context=context)
|
||||
stock_move.action_done(cr, uid, [move_id], context)
|
||||
partial_data['move%s' % (move_id)] = {
|
||||
'product_id': move.product_id.id,
|
||||
'product_qty': move.quantity,
|
||||
'product_uom': move.product_uom.id,
|
||||
'prodlot_id': move.prodlot_id.id,
|
||||
}
|
||||
if (picking_type == 'in') and (move.product_id.cost_method == 'average'):
|
||||
partial_data['move%s' % (move.move_id.id)].update(product_price=move.cost,
|
||||
product_currency=move.currency.id)
|
||||
stock_picking.do_partial(cr, uid, [partial.picking_id.id], partial_data, context=context)
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
stock_partial_picking()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -9,5 +9,59 @@
|
|||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_partial_picking_form" model="ir.ui.view">
|
||||
<field name="name">stock.partial.picking.form</field>
|
||||
<field name="model">stock.partial.picking</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<separator colspan="4" string="Products"/>
|
||||
<field name="move_ids" colspan="4" nolabel="1" mode="tree,form" width="550" height="200"/>
|
||||
<separator string="" colspan="4" />
|
||||
<label string="" colspan="2"/>
|
||||
<group col="2" colspan="2">
|
||||
<button icon='gtk-cancel' special="cancel" string="_Cancel" />
|
||||
<button name="do_partial" string="_Validate" colspan="1" type="object" icon="gtk-go-forward" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_partial_picking_line_list" model="ir.ui.view">
|
||||
<field name="name">stock.partial.picking.line.list</field>
|
||||
<field name="model">stock.partial.picking.line</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree editable="bottom" string="Product Moves">
|
||||
<field name="product_id" />
|
||||
<field name="quantity" />
|
||||
<field name="product_uom" />
|
||||
<field name="location_id" />
|
||||
<field name="location_dest_id" />
|
||||
<field name="prodlot_id" domain="[('product_id', '=', product_id)]" groups="base.group_extended" />
|
||||
<field name="update_cost" invisible="1"/>
|
||||
<field name="cost" attrs="{'invisible': [('update_cost','=', False)]}"/>
|
||||
<field name="currency" attrs="{'invisible': [('update_cost','=', False)]}"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="stock_partial_picking_line_form" model="ir.ui.view">
|
||||
<field name="name">stock.partial.picking.line.form</field>
|
||||
<field name="model">stock.partial.picking.line</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="product_id" />
|
||||
<field name="quantity" />
|
||||
<field name="product_uom" />
|
||||
<field name="location_id" />
|
||||
<field name="location_dest_id" />
|
||||
<field name="prodlot_id" domain="[('product_id', '=', product_id)]" groups="base.group_extended" />
|
||||
<field name="update_cost" invisible="1"/>
|
||||
<field name="cost" attrs="{'invisible': [('update_cost','=', False)]}"/>
|
||||
<field name="currency" attrs="{'invisible': [('update_cost','=', False)]}"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -38,36 +38,19 @@
|
|||
"active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
|
||||
})
|
||||
-
|
||||
I create a record for partial picking.
|
||||
-
|
||||
!record {model: stock.partial.picking, id: stock_partial_picking_0}:
|
||||
date: !eval time.strftime('%Y-%m-%d %H:%M:%S')
|
||||
-
|
||||
I make picking order Done.
|
||||
I process the delivery
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
partial = self.browse(cr, uid, ref('stock_partial_picking_0'), context)
|
||||
partial_datas = {
|
||||
'delivery_date' : partial.date
|
||||
}
|
||||
for pick in pick_obj.browse(cr, uid, [ref('stock_picking_out0')]):
|
||||
for m in pick.move_lines:
|
||||
partial_datas['move%s'%(m.id)] = {
|
||||
'product_id' : m.product_id.id,
|
||||
'product_qty' : m.product_qty,
|
||||
'product_uom' : m.product_uom.id
|
||||
}
|
||||
self.do_partial(cr, uid, [ref('stock_partial_picking_0')], {"lang": "en_US", "search_default_available":
|
||||
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
|
||||
"active_ids": [ref('stock_picking_out0')], "active_id": ref("stock_picking_out0"),
|
||||
})
|
||||
partial_id = self.create(cr, uid, {}, context={'active_model':'stock.picking',
|
||||
'active_ids':[ref('stock_picking_out0')]})
|
||||
self.do_partial(cr, uid, [partial_id])
|
||||
|
||||
-
|
||||
As the Invoice state of the picking order is To be invoiced. I create invoice for my outgoing picking order.
|
||||
-
|
||||
!python {model: stock.invoice.onshipping}: |
|
||||
wiz_id = self.create(cr, uid, {'invoice_date': '2010-08-04', 'journal_id': ref('account.bank_journal')},
|
||||
{'active_ids': [ref("stock_picking_out0")]})
|
||||
wiz_id = self.create(cr, uid, {'invoice_date': '2010-08-04', 'journal_id': ref('account.sales_journal')},
|
||||
{'active_ids': [ref("stock_picking_out0")], "active_model": "stock.picking"})
|
||||
self.create_invoice(cr, uid, [wiz_id], {"lang": "en_US",
|
||||
"search_default_available": 1, "tz": False, "active_model": "stock.picking",
|
||||
"contact_display": "partner", "active_ids": [ref("stock_picking_out0")], "active_id": ref("stock_picking_out0")})
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue