[Merge] with : Parent branch and remove conflict

bzr revid: ram@tinyerp.com-20120531073623-dgz3nepzmrjg0pxc
This commit is contained in:
Amit Rasmiya 2012-05-31 13:06:23 +05:30
commit 146908b1d2
65 changed files with 11881 additions and 641 deletions

View File

@ -201,17 +201,18 @@ class account_invoice(osv.osv):
'state': fields.selection([
('draft','Draft'),
('cancel','Cancelled'),
('proforma','Pro-forma'),
('proforma2','Pro-forma'),
('open','Open'),
('paid','Paid')
],'Status', select=True, readonly=True,
('paid','Paid'),
('cancel','Cancelled'),
],'State', select=True, readonly=True,
help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed Invoice. \
\n* The \'Pro-forma\' when invoice is in Pro-forma state,invoice does not have an invoice number. \
\n* The \'Open\' state is used when user create invoice,a invoice number is generated.Its in open state till user does not pay invoice. \
\n* The \'Paid\' state is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled. \
\n* The \'Cancelled\' state is used when user cancel invoice.'),
'sent': fields.boolean('Sent', readonly=True, help="It indicates that the invoice has been sent."),
'date_invoice': fields.date('Invoice Date', readonly=True, states={'draft':[('readonly',False)]}, select=True, help="Keep empty to use the current date"),
'date_due': fields.date('Due Date', states={'paid':[('readonly',True)], 'open':[('readonly',True)], 'close':[('readonly',True)]}, select=True,
help="If you use payment terms, the due date will be computed automatically at the generation "\
@ -286,6 +287,7 @@ class account_invoice(osv.osv):
'check_total': 0.0,
'internal_number': False,
'user_id': lambda s, cr, u, c: u,
'sent': False,
}
_sql_constraints = [
('number_uniq', 'unique(number, company_id, journal_id, type)', 'Invoice Number must be unique per Company!'),
@ -366,6 +368,47 @@ class account_invoice(osv.osv):
else:
raise orm.except_orm(_('Unknown Error'), str(e))
def invoice_print(self, cr, uid, ids, context=None):
'''
This function prints the invoice and mark it as sent, so that we can see more easily the next step of the workflow
'''
assert len(ids) == 1, 'This option should only be used for a single id at a time'
self.write(cr, uid, ids, {'sent': True}, context=context)
datas = {
'ids': ids,
'model': 'account.invoice',
'form': self.read(cr, uid, ids[0], context=context)
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'account.invoice',
'datas': datas,
'nodestroy' : True
}
def action_invoice_sent(self, cr, uid, ids, context=None):
'''
This function opens a window to compose an email, with the edi invoice template message loaded by default
'''
mod_obj = self.pool.get('ir.model.data')
template = mod_obj.get_object_reference(cr, uid, 'account', 'email_template_edi_invoice')
template_id = template and template[1] or False
res = mod_obj.get_object_reference(cr, uid, 'mail', 'email_compose_message_wizard_form')
res_id = res and res[1] or False
ctx = dict(context, active_model='account.invoice', active_id=ids[0])
ctx.update({'mail.compose.template_id': template_id})
return {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(res_id, 'form')],
'view_id': res_id,
'type': 'ir.actions.act_window',
'target': 'new',
'context': ctx,
'nodestroy': True,
}
def confirm_paid(self, cr, uid, ids, context=None):
if context is None:
context = {}
@ -604,6 +647,7 @@ class account_invoice(osv.osv):
'move_name':False,
'internal_number': False,
'period_id': False,
'sent': False,
})
if 'date_invoice' not in default:
default.update({
@ -1669,4 +1713,14 @@ class res_partner(osv.osv):
res_partner()
class mail_message(osv.osv):
_name = 'mail.message'
_inherit = 'mail.message'
def _postprocess_sent_message(self, cr, uid, message, context=None):
if message.model == 'account.invoice':
self.pool.get('account.invoice').write(cr, uid, [message.res_id], {'sent':True}, context=context)
return super(mail_message, self)._postprocess_sent_message(cr, uid, message=message, context=context)
mail_message()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -146,11 +146,11 @@
<field name="arch" type="xml">
<form layout="manual">
<div class="oe_form_topbar">
<button name="invoice_open" states="draft,proforma2" string="Approve"/>
<button name="%(action_account_invoice_refund)d" type='action' string='Refund' states='open,paid'/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' groups="account.group_account_invoice" attrs="{'invisible':['|', ('state','&lt;&gt;','paid'), ('reconciled', '=', True)]}" help="This button only appears when the state of the invoice is 'paid' (showing that it has been fully reconciled) and auto-computed boolean 'reconciled' is False (depicting that it's not the case anymore). In other words, the invoice has been dereconciled and it does not fit anymore the 'paid' state. You should press this button to re-open it and let it continue its normal process after having resolved the eventual exceptions it may have created."/>
<button name="invoice_open" states="draft,proforma2" string="Validate"/>
<button name="%(action_account_invoice_refund)d" type='action' string='Ask Refund' states='open,paid'/>
<button name="invoice_cancel" states="draft,proforma2,sale,open" string="Cancel" groups="base.group_no_one"/>
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object"/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' groups="account.group_account_invoice" attrs="{'invisible':['|', ('state','&lt;&gt;','paid'), ('reconciled', '=', True)]}" help="This button only appears when the state of the invoice is 'paid' (showing that it has been fully reconciled) and auto-computed boolean 'reconciled' is False (depicting that it's not the case anymore). In other words, the invoice has been dereconciled and it does not fit anymore the 'paid' state. You should press this button to re-open it and let it continue its normal process after having resolved the eventual exceptions it may have created."/>
<div class="oe_right">
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,open,paid" statusbar_colors='{"proforma":"blue","proforma2":"blue"}'/>
</div>
@ -262,13 +262,15 @@
<field name="arch" type="xml">
<form layout="manual">
<div class="oe_form_topbar">
<button name="invoice_proforma2" states="draft" string="PRO-FORMA" groups="account.group_proforma_invoices"/>
<button name="action_invoice_sent" type="object" string="Send by Email" states="open" attrs="{'invisible':['|',('sent','=',True), ('state', '=', 'draft')]}"/>
<button name="invoice_print" string="Print Invoice" type="object" states="open" attrs="{'invisible':['|',('sent','=',True), ('state', '=', 'draft')]}"/>
<button name="invoice_open" states="draft,proforma2" string="Validate"/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' groups="account.group_account_invoice" attrs="{'invisible':['|', ('state','&lt;&gt;','paid'), ('reconciled', '=', True)]}" help="This button only appears when the state of the invoice is 'paid' (showing that it has been fully reconciled) and auto-computed boolean 'reconciled' is False (depicting that it's not the case anymore). In other words, the invoice has been dereconciled and it does not fit anymore the 'paid' state. You should press this button to re-open it and let it continue its normal process after having resolved the eventual exceptions it may have created."/>
<button name="%(account_invoices)d" string="Print Invoice" type="action" states="open,paid,proforma,sale,proforma2"/>
<button name="%(action_account_invoice_refund)d" type='action' string='Refund' states='open,paid'/>
<button name="action_cancel_draft" states="cancel" string="Reset to Draft" type="object"/>
<button name="invoice_proforma2" states="draft" string="PRO-FORMA" groups="account.group_proforma_invoices"/>
<button name="%(action_account_invoice_refund)d" type='action' string='Refund Invoice' states='paid'/>
<button name="invoice_cancel" states="draft,proforma2,sale,open" string="Cancel" groups="base.group_no_one"/>
<button name="action_cancel_draft" states="cancel" string="Reset to Draft" type="object"/>
<button name='%(action_account_state_open)d' type='action' string='Re-Open' groups="account.group_account_invoice" attrs="{'invisible':['|', ('state','&lt;&gt;','paid'), ('reconciled', '=', True)]}" help="This button only appears when the state of the invoice is 'paid' (showing that it has been fully reconciled) and auto-computed boolean 'reconciled' is False (depicting that it's not the case anymore). In other words, the invoice has been dereconciled and it does not fit anymore the 'paid' state. You should press this button to re-open it and let it continue its normal process after having resolved the eventual exceptions it may have created."/>
<!--button name="%(account_invoices)d" string="Print Invoice" type="action" states="open,paid,proforma,sale,proforma2"/-->
<div class="oe_right">
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,open,paid" statusbar_colors='{"proforma":"blue","proforma2":"blue"}'/>
</div>
@ -291,6 +293,7 @@
<newline/>
<field domain="[('company_id', '=', company_id),('type','=', 'receivable')]" name="account_id" groups="account.group_account_user"/>
<field name="name" placeholder="Project XYZ"/>
<field name="sent"/>
</group>
<notebook colspan="4">
<page string="Invoice">

View File

@ -21,7 +21,7 @@
string="Invoices"
attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/','')+'.pdf')"
usage="default"
multi="True"/>
/>
<report id="account_transfers" model="account.transfer" name="account.transfer" string="Transfers" xml="account/report/transfer.xml" xsl="account/report/transfer.xsl"/>
<report auto="False" id="account_intracom" menu="False" model="account.move.line" name="account.intracom" string="IntraCom"/>

View File

@ -21,6 +21,7 @@
from osv import fields, osv, orm
from edi import EDIMixin
from edi.models import edi
INVOICE_LINE_EDI_STRUCT = {
'name': True,
@ -71,6 +72,16 @@ INVOICE_EDI_STRUCT = {
class account_invoice(osv.osv, EDIMixin):
_inherit = 'account.invoice'
def action_invoice_sent(self, cr, uid, ids, context=None):
""""Override this method to add a link to mail"""
if context is None:
context = {}
invoice_objs = self.browse(cr, uid, ids, context=context)
edi_token = self.pool.get('edi.document').export_edi(cr, uid, invoice_objs, context = context)[0]
web_root_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
ctx = dict(context, edi_web_url_view=edi.EDI_VIEW_WEB_URL % (web_root_url, cr.dbname, edi_token))
return super(account_invoice, self).action_invoice_sent(cr, uid, ids, context=ctx)
def edi_export(self, cr, uid, records, edi_struct=None, context=None):
"""Exports a supplier or customer invoice"""
edi_struct = dict(edi_struct or INVOICE_EDI_STRUCT)

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-05-15 06:17+0000\n"
"PO-Revision-Date: 2012-05-30 17:28+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-16 04:50+0000\n"
"X-Generator: Launchpad (build 15247)\n"
"X-Launchpad-Export-Date: 2012-05-31 04:54+0000\n"
"X-Generator: Launchpad (build 15322)\n"
#. module: account
#: view:account.invoice.report:0
@ -1662,7 +1662,7 @@ msgstr "切り離された仕訳帳順序"
#. module: account
#: view:account.invoice:0
msgid "Responsible"
msgstr "責任担当"
msgstr "担当"
#. module: account
#: model:ir.actions.act_window,name:account.action_report_account_type_sales_tree_all
@ -7024,7 +7024,7 @@ msgstr "財務レポートの階層"
#: view:analytic.entries.report:0
#: field:analytic.entries.report,product_uom_id:0
msgid "Product UOM"
msgstr "製品単位"
msgstr "製品単位"
#. module: account
#: model:ir.actions.act_window,help:account.action_view_bank_statement_tree
@ -7335,7 +7335,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
#: view:account.invoice.report:0
@ -7590,7 +7590,7 @@ msgstr "仕訳帳の仕訳帳エントリー記帳"
#. module: account
#: view:product.product:0
msgid "Sale Taxes"
msgstr "消費税(売上)"
msgstr "消費税"
#. module: account
#: field:account.financial.report,name:0
@ -9454,7 +9454,7 @@ msgstr ""
#. module: account
#: view:account.analytic.account:0
msgid "Pending"
msgstr "保留"
msgstr "保留"
#. module: account
#: model:process.transition,name:account.process_transition_analyticinvoice0
@ -10758,3 +10758,9 @@ msgstr "仕訳帳エントリーの買掛金、または買掛金の残差金額
#~ msgid "Description On Invoices"
#~ msgstr "請求書説明"
#~ msgid "Write-Off journal"
#~ msgstr "償却仕訳帳"
#~ msgid "Full Payment"
#~ msgstr "全支払"

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-04-28 01:18+0000\n"
"PO-Revision-Date: 2012-05-29 06:22+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-29 04:45+0000\n"
"X-Generator: Launchpad (build 15149)\n"
"X-Launchpad-Export-Date: 2012-05-30 05:21+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: account_anglo_saxon
#: sql_constraint:purchase.order:0
@ -35,7 +35,7 @@ msgstr "製品分類"
#. module: account_anglo_saxon
#: sql_constraint:stock.picking:0
msgid "Reference must be unique per Company!"
msgstr "参照は会社内ではユニークでなければいけません。"
msgstr "参照は会社内で固有でなければいけません"
#. module: account_anglo_saxon
#: constraint:product.category:0
@ -87,7 +87,7 @@ msgstr "出庫票"
#. module: account_anglo_saxon
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr "請求書番号は会社ごとにユニークでなければいけません。"
msgstr "請求書番号は会社ごとに固有である必要があります。"
#. module: account_anglo_saxon
#: help:product.category,property_account_creditor_price_difference_categ:0

View File

@ -780,7 +780,7 @@ class account_voucher(osv.osv):
def proforma_voucher(self, cr, uid, ids, context=None):
self.action_move_line_create(cr, uid, ids, context=context)
return True
return {'type': 'ir.actions.act_window_close'}
def action_cancel_draft(self, cr, uid, ids, context=None):
wf_service = netsvc.LocalService("workflow")

View File

@ -8,7 +8,7 @@
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<button name="invoice_open" position="after">
<button name="invoice_pay_customer" type="object" string="Payment" states="open" icon="gtk-go-forward"/>
<button name="invoice_pay_customer" type="object" string="Register Payment" states="open" icon="gtk-go-forward"/>
</button>
</field>
</record>
@ -19,7 +19,7 @@
<field name="inherit_id" ref="account.invoice_supplier_form"/>
<field name="arch" type="xml">
<button name="invoice_open" position="after">
<button name="invoice_pay_customer" type="object" string="Pay Invoice" states="open" icon="gtk-go-forward"/>
<button name="invoice_pay_customer" type="object" string="Pay" states="open" icon="gtk-go-forward"/>
</button>
</field>
</record>

View File

@ -43,7 +43,7 @@
<form layout="manual">
<div class="oe_form_topbar">
<button name="proforma_voucher" string="Post" states="draft"/>
<button name="cancel_voucher" string="Cancel" type="object" states="posted" confirm="Are you sure to unreconcile this record ?"/>
<button name="cancel_voucher" string="Cancel" type="object" states="posted" confirm="Are you sure to unreconcile this record?"/>
<button name="cancel_voucher" string="Cancel" states="draft,proforma" />
<button name="action_cancel_draft" type="object" states="cancel" string="Set to Draft"/>
<div class="oe_right">

View File

@ -36,7 +36,7 @@ class invoice(osv.osv):
'res_model': 'account.voucher',
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'current',
'target': 'new',
'domain': '[]',
'context': {
'default_partner_id': inv.partner_id.id,

View File

@ -0,0 +1,79 @@
# Latvian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
"PO-Revision-Date: 2012-05-28 13:45+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Latvian <lv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-29 04:46+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: analytic_journal_billing_rate
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
#. module: analytic_journal_billing_rate
#: field:analytic_journal_rate_grid,journal_id:0
msgid "Analytic Journal"
msgstr ""
#. module: analytic_journal_billing_rate
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr ""
#. module: analytic_journal_billing_rate
#: view:analytic_journal_rate_grid:0
msgid "Billing Rate per Journal for this Analytic Account"
msgstr ""
#. module: analytic_journal_billing_rate
#: field:analytic_journal_rate_grid,account_id:0
#: model:ir.model,name:analytic_journal_billing_rate.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: analytic_journal_billing_rate
#: model:ir.model,name:analytic_journal_billing_rate.model_analytic_journal_rate_grid
msgid "Relation table between journals and billing rates"
msgstr ""
#. module: analytic_journal_billing_rate
#: field:account.analytic.account,journal_rate_ids:0
msgid "Invoicing Rate per Journal"
msgstr ""
#. module: analytic_journal_billing_rate
#: model:ir.model,name:analytic_journal_billing_rate.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: analytic_journal_billing_rate
#: constraint:hr.analytic.timesheet:0
msgid "You cannot modify an entry in a Confirmed/Done timesheet !."
msgstr ""
#. module: analytic_journal_billing_rate
#: field:analytic_journal_rate_grid,rate_id:0
msgid "Invoicing Rate"
msgstr ""
#. module: analytic_journal_billing_rate
#: constraint:account.analytic.account:0
msgid "Error! You can not create recursive analytic accounts."
msgstr ""
#. module: analytic_journal_billing_rate
#: model:ir.model,name:analytic_journal_billing_rate.model_hr_analytic_timesheet
msgid "Timesheet Line"
msgstr ""

View File

@ -414,7 +414,7 @@
</div>
<sheet layout="auto">
<group colspan="4" col="2" width="auto">
<field name="name" required="1" nolabel="1" class="oe_form_title"/>
<field name="name" required="1" nolabel="1" class="oe_form_title" placeholder="Need new website design"/>
<div class="oe_text_right">
<button string="Schedule/Log Call"
name="%(opportunity2phonecall_act)d" icon="terp-call-start"
@ -431,7 +431,7 @@
<field name="date_action"/>
<field name="date_deadline"/>
<field name="title_action"/>
<field name="title_action" placeholder="Call to analyse needs"/>
<field name="probability"/>
<field name="type" invisible="1"/>
@ -447,7 +447,7 @@
icon="terp-partner" type="action"
string="Create"
attrs="{'invisible':[('partner_id','!=',False)]}"/>
<field name="phone" colspan="3"/>
<field name="phone" colspan="3" placeholder="+32.81.81.37.00"/>
<field width="80%%" name="email_from" string="Email"/>
<button string="Mail"
name="%(mail.action_email_compose_message_wizard)d"
@ -487,14 +487,14 @@
</group>
<group colspan="2" col="2" class="oe_form_group_label_border">
<field domain="[('domain', '=', 'contact')]" name="title" widget="selection"/>
<field name="fax"/>
<field name="fax" placeholder="+32.81.81.37.00"/>
<field name="street"/>
<field name="zip"/>
<field name="country_id"/>
</group>
<group colspan="2" col="2" class="oe_form_group_label_border">
<field name="function" />
<field name="mobile"/>
<field name="mobile" placeholder="+32.81.81.37.00"/>
<field name="street2"/>
<field name="city"/>
<field name="state_id"/>
@ -502,8 +502,8 @@
<group colspan="2" col="2" class="oe_form_group_label_border">
<separator string="Categorization" colspan="2"/>
<field name="type_id" widget="selection"/>
<field name="channel_id" widget="selection"/>
<field name="type_id" widget="selection" placeholder="Mailing june"/>
<field name="channel_id" widget="selection" placeholder="E-mail"/>
</group>
<group colspan="2" col="2" class="oe_form_group_label_border">
<separator string="Mailings" colspan="2"/>
@ -517,7 +517,7 @@
<field name="active"/>
<field name="day_open" groups="base.group_no_one"/>
<field name="day_close" groups="base.group_no_one"/>
<field name="referred"/>
<field name="referred" placeholder="tom@reseller.com"/>
</group>
<group col="2" colspan="2" class="oe_form_group_label_border">
<separator colspan="4" string="References"/>

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-04-23 20:45+0000\n"
"PO-Revision-Date: 2012-05-28 19:12+0000\n"
"Last-Translator: Masaki Yamaya <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-24 04:53+0000\n"
"X-Generator: Launchpad (build 15135)\n"
"X-Launchpad-Export-Date: 2012-05-29 04:46+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: crm_helpdesk
#: field:crm.helpdesk.report,delay_close:0
@ -725,6 +725,9 @@ msgid ""
"gateway: new emails may create issues, each of them automatically gets the "
"history of the conversation with the customer."
msgstr ""
"ヘルプデスクとサポート機能を使って、あなたの介在を記録することができます。カスタマごとに注釈を加えたり、必要であればパートナとのやり取りを記録することがで"
"きます。また優先レベルを割り当てることもできます。OpenERPの問題システムを使ってサポート活動を管理することができます。問題をEメールゲートウェイと"
"連動させて、新しいEメールが問題を作成して、カスタマとの対話の履歴を自動的に生成することができます。"
#. module: crm_helpdesk
#: view:crm.helpdesk.report:0

View File

@ -21,7 +21,6 @@
import delivery
import partner
import wizard
import report
import sale
import stock

View File

@ -37,7 +37,6 @@ When creating invoices from picking, OpenERP is able to add and compute the ship
'init_xml': ['delivery_data.xml'],
'update_xml': [
'security/ir.model.access.csv',
'wizard/delivery_sale_order_view.xml',
'delivery_report.xml',
'delivery_view.xml',
'partner_view.xml'

View File

@ -161,19 +161,6 @@
</field>
</record>
<record id="view_order_withcarrier_form" model="ir.ui.view">
<field name="name">delivery.sale.order_withcarrier.form.view</field>
<field name="type">form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<group name="logistics" position="inside">
<field name="id" invisible="True"/>
<field name="carrier_id" context="{'order_id':active_id or False}"/>
</group>
</field>
</record>
<record id="view_picking_withcarrier_out_form" model="ir.ui.view">
<field name="name">delivery.stock.picking_withcarrier.out.form.view</field>
<field name="type">form</field>
@ -258,14 +245,18 @@
</field>
</record>
<record model="ir.ui.view" id="edit_project_multicompany">
<field name="name">sale.order.multicompany</field>
<record id="view_order_withcarrier_form" model="ir.ui.view">
<field name="name">delivery.sale.order_withcarrier.form.view</field>
<field name="type">form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr="//button[@name='order_confirm']" position="after">
<button name="%(action_delivery_cost)d" states="draft" string="Delivery Costs" type="action" icon="gtk-add" context="{'order_id':active_id}"/>
</xpath>
<xpath expr="//group[@name='bellow_the_lines_hook']" position="inside">
<separator string="Delivery Costs" colspan="4"/>
<field name="carrier_id" context="{'order_id':active_id or False}" colspan="2"/>
<button name="delivery_set" states="draft" string="Add Now on the Sale Order" type="object" icon="gtk-add" colspan="2"/>
<label string="if you don't click on 'Add Now', the delivery cost won't be added on the Sale Order, but will be added on the Delivery Order only" colspan="4"/>
</xpath>
</field>
</record>

642
addons/delivery/i18n/lv.po Normal file
View File

@ -0,0 +1,642 @@
# Latvian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-28 08:36+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Latvian <lv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-29 04:45+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: delivery
#: report:sale.shipping:0
msgid "Order Ref."
msgstr ""
#. module: delivery
#: model:product.template,name:delivery.delivery_product_product_template
msgid "Delivery by Poste"
msgstr ""
#. module: delivery
#: view:delivery.carrier:0
#: view:delivery.grid:0
msgid "Destination"
msgstr ""
#. module: delivery
#: field:stock.move,weight_net:0
msgid "Net weight"
msgstr ""
#. module: delivery
#: view:stock.picking:0
msgid "Delivery Order"
msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_grid_line
msgid "Delivery Grid Line"
msgstr ""
#. module: delivery
#: view:delivery.carrier:0
#: view:delivery.grid:0
msgid "Delivery grids"
msgstr ""
#. module: delivery
#: selection:delivery.grid.line,type:0
#: selection:delivery.grid.line,variable_factor:0
#: field:stock.picking,volume:0
msgid "Volume"
msgstr ""
#. module: delivery
#: field:delivery.grid,line_ids:0
msgid "Grid Line"
msgstr ""
#. module: delivery
#: help:delivery.carrier,partner_id:0
msgid "The partner that is doing the delivery service."
msgstr ""
#. module: delivery
#: model:ir.actions.report.xml,name:delivery.report_shipping
msgid "Delivery order"
msgstr ""
#. module: delivery
#: view:res.partner:0
msgid "Deliveries Properties"
msgstr ""
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_picking_tree4
msgid "Picking to be invoiced"
msgstr ""
#. module: delivery
#: field:delivery.carrier,pricelist_ids:0
msgid "Advanced Pricing"
msgstr ""
#. module: delivery
#: help:delivery.grid,sequence:0
msgid "Gives the sequence order when displaying a list of delivery grid."
msgstr ""
#. module: delivery
#: view:delivery.carrier:0
#: view:delivery.grid:0
#: field:delivery.grid,country_ids:0
msgid "Countries"
msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Delivery Order :"
msgstr ""
#. module: delivery
#: field:delivery.grid.line,variable_factor:0
msgid "Variable Factor"
msgstr ""
#. module: delivery
#: model:ir.actions.act_window,help:delivery.action_delivery_grid_form
msgid ""
"The delivery price list allows you to compute the cost and sales price of "
"the delivery according to the weight of the products and other criteria. You "
"can define several price lists for one delivery method, per country or a "
"zone in a specific country defined by a postal code range."
msgstr ""
#. module: delivery
#: field:delivery.carrier,amount:0
msgid "Amount"
msgstr ""
#. module: delivery
#: selection:delivery.grid.line,price_type:0
msgid "Fixed"
msgstr ""
#. module: delivery
#: field:delivery.carrier,name:0
#: view:delivery.sale.order:0
#: field:delivery.sale.order,carrier_id:0
#: model:ir.actions.act_window,name:delivery.action_delivery_carrier_form
#: model:ir.ui.menu,name:delivery.menu_action_delivery_carrier_form
#: field:res.partner,property_delivery_carrier:0
#: field:sale.order,carrier_id:0
msgid "Delivery Method"
msgstr ""
#. module: delivery
#: code:addons/delivery/delivery.py:213
#, python-format
msgid "No price available!"
msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_stock_move
msgid "Stock Move"
msgstr ""
#. module: delivery
#: field:stock.picking,carrier_tracking_ref:0
msgid "Carrier Tracking Ref"
msgstr ""
#. module: delivery
#: field:stock.picking,weight_net:0
msgid "Net Weight"
msgstr ""
#. module: delivery
#: view:delivery.grid.line:0
msgid "Grid Lines"
msgstr ""
#. module: delivery
#: view:delivery.carrier:0
#: view:delivery.grid:0
msgid "Grid definition"
msgstr ""
#. module: delivery
#: view:delivery.sale.order:0
msgid "_Cancel"
msgstr ""
#. module: delivery
#: field:delivery.grid.line,operator:0
msgid "Operator"
msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_res_partner
msgid "Partner"
msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_sale_order
msgid "Sales Order"
msgstr ""
#. module: delivery
#: model:ir.actions.act_window,help:delivery.action_delivery_carrier_form1
msgid ""
"Define your delivery methods and their pricing. The delivery costs can be "
"added on the sale order form or in the invoice, based on the delivery orders."
msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Lot"
msgstr ""
#. module: delivery
#: field:delivery.carrier,partner_id:0
msgid "Transport Company"
msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_grid
msgid "Delivery Grid"
msgstr ""
#. module: delivery
#: code:addons/delivery/delivery.py:213
#, python-format
msgid "No line matched this product or order in the choosed delivery grid."
msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Invoiced to"
msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_stock_picking
msgid "Picking List"
msgstr ""
#. module: delivery
#: field:delivery.carrier,grids_id:0
msgid "Delivery Grids"
msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_sale_order
msgid "Make Delievery"
msgstr ""
#. module: delivery
#: field:delivery.grid.line,name:0
msgid "Name"
msgstr ""
#. module: delivery
#: field:delivery.grid,zip_from:0
msgid "Start Zip"
msgstr ""
#. module: delivery
#: help:delivery.carrier,amount:0
msgid ""
"Amount of the order to benefit from a free shipping, expressed in the "
"company currency"
msgstr ""
#. module: delivery
#: code:addons/delivery/stock.py:89
#, python-format
msgid "Warning"
msgstr ""
#. module: delivery
#: field:delivery.grid.line,grid_id:0
msgid "Grid"
msgstr ""
#. module: delivery
#: help:delivery.grid,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the delivery "
"grid without removing it."
msgstr ""
#. module: delivery
#: field:delivery.grid,zip_to:0
msgid "To Zip"
msgstr ""
#. module: delivery
#: code:addons/delivery/delivery.py:141
#, python-format
msgid "Default price"
msgstr ""
#. module: delivery
#: model:ir.model,name:delivery.model_delivery_define_delivery_steps_wizard
msgid "delivery.define.delivery.steps.wizard"
msgstr ""
#. module: delivery
#: field:delivery.carrier,normal_price:0
msgid "Normal Price"
msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Order Date"
msgstr ""
#. module: delivery
#: field:delivery.grid,name:0
msgid "Grid Name"
msgstr ""
#. module: delivery
#: view:stock.move:0
msgid "Weights"
msgstr ""
#. module: delivery
#: field:stock.picking,number_of_packages:0
msgid "Number of Packages"
msgstr ""
#. module: delivery
#: selection:delivery.grid.line,type:0
#: selection:delivery.grid.line,variable_factor:0
#: report:sale.shipping:0
#: field:stock.move,weight:0
#: field:stock.picking,weight:0
msgid "Weight"
msgstr ""
#. module: delivery
#: help:delivery.carrier,use_detailed_pricelist:0
msgid ""
"Check this box if you want to manage delivery prices that depends on the "
"destination, the weight, the total of the order, etc."
msgstr ""
#. module: delivery
#: help:delivery.carrier,normal_price:0
msgid ""
"Keep empty if the pricing depends on the advanced pricing per destination"
msgstr ""
#. module: delivery
#: constraint:stock.move:0
msgid "You can not move products from or to a location of the type view."
msgstr ""
#. module: delivery
#: code:addons/delivery/wizard/delivery_sale_order.py:70
#, python-format
msgid "No grid available !"
msgstr ""
#. module: delivery
#: selection:delivery.grid.line,operator:0
msgid ">="
msgstr ""
#. module: delivery
#: code:addons/delivery/wizard/delivery_sale_order.py:53
#: code:addons/delivery/wizard/delivery_sale_order.py:73
#, python-format
msgid "Order not in draft state !"
msgstr ""
#. module: delivery
#: view:delivery.define.delivery.steps.wizard:0
msgid "Choose Your Default Picking Policy"
msgstr ""
#. module: delivery
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product"
msgstr ""
#. module: delivery
#: field:delivery.carrier,active:0
#: field:delivery.grid,active:0
msgid "Active"
msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Shipping Date"
msgstr ""
#. module: delivery
#: field:delivery.carrier,product_id:0
msgid "Delivery Product"
msgstr ""
#. module: delivery
#: view:delivery.grid.line:0
msgid "Condition"
msgstr ""
#. module: delivery
#: field:delivery.grid.line,standard_price:0
msgid "Cost Price"
msgstr ""
#. module: delivery
#: field:delivery.define.delivery.steps.wizard,picking_policy:0
msgid "Picking Policy"
msgstr ""
#. module: delivery
#: selection:delivery.grid.line,price_type:0
#: field:delivery.grid.line,type:0
msgid "Variable"
msgstr ""
#. module: delivery
#: help:res.partner,property_delivery_carrier:0
msgid "This delivery method will be used when invoicing from picking."
msgstr ""
#. module: delivery
#: sql_constraint:stock.picking:0
msgid "Reference must be unique per Company!"
msgstr ""
#. module: delivery
#: field:delivery.grid.line,max_value:0
msgid "Maximum Value"
msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Quantity"
msgstr ""
#. module: delivery
#: view:delivery.define.delivery.steps.wizard:0
#: model:ir.actions.act_window,name:delivery.action_define_delivery_steps
msgid "Setup Your Picking Policy"
msgstr ""
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_delivery_carrier_form1
msgid "Define Delivery Methods"
msgstr ""
#. module: delivery
#: help:delivery.carrier,free_if_more_than:0
msgid ""
"If the order is more expensive than a certain amount, the customer can "
"benefit from a free shipping"
msgstr ""
#. module: delivery
#: help:sale.order,carrier_id:0
msgid ""
"Complete this field if you plan to invoice the shipping based on picking."
msgstr ""
#. module: delivery
#: view:delivery.define.delivery.steps.wizard:0
msgid "Cancel"
msgstr ""
#. module: delivery
#: code:addons/delivery/delivery.py:130
#, python-format
msgid "Free if more than %.2f"
msgstr ""
#. module: delivery
#: sql_constraint:sale.order:0
msgid "Order Reference must be unique per Company!"
msgstr ""
#. module: delivery
#: model:ir.actions.act_window,help:delivery.action_delivery_carrier_form
msgid ""
"Define the delivery methods you are using and their pricing in order to "
"reinvoice the delivery costs when you are doing invoicing based on delivery "
"orders"
msgstr ""
#. module: delivery
#: view:res.partner:0
msgid "Sales & Purchases"
msgstr ""
#. module: delivery
#: selection:delivery.grid.line,operator:0
msgid "<="
msgstr ""
#. module: delivery
#: constraint:stock.move:0
msgid "You must assign a production lot for this product"
msgstr ""
#. module: delivery
#: field:delivery.carrier,free_if_more_than:0
msgid "Free If More Than"
msgstr ""
#. module: delivery
#: view:delivery.sale.order:0
msgid "Create Deliveries"
msgstr ""
#. module: delivery
#: view:delivery.carrier:0
#: view:delivery.grid:0
#: field:delivery.grid,state_ids:0
msgid "States"
msgstr ""
#. module: delivery
#: report:sale.shipping:0
msgid "Description"
msgstr ""
#. module: delivery
#: help:delivery.carrier,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the delivery "
"carrier without removing it."
msgstr ""
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_delivery_grid_form
#: model:ir.ui.menu,name:delivery.menu_action_delivery_grid_form
msgid "Delivery Pricelist"
msgstr ""
#. module: delivery
#: field:delivery.carrier,price:0
#: selection:delivery.grid.line,type:0
#: selection:delivery.grid.line,variable_factor:0
msgid "Price"
msgstr ""
#. module: delivery
#: code:addons/delivery/wizard/delivery_sale_order.py:70
#, python-format
msgid "No grid matching for this carrier !"
msgstr ""
#. module: delivery
#: model:ir.ui.menu,name:delivery.menu_delivery
msgid "Delivery"
msgstr ""
#. module: delivery
#: selection:delivery.grid.line,type:0
#: selection:delivery.grid.line,variable_factor:0
msgid "Weight * Volume"
msgstr ""
#. module: delivery
#: selection:delivery.grid.line,operator:0
msgid "="
msgstr ""
#. module: delivery
#: code:addons/delivery/stock.py:90
#, python-format
msgid "The carrier %s (id: %d) has no delivery grid!"
msgstr ""
#. module: delivery
#: view:delivery.carrier:0
msgid "Pricing Information"
msgstr ""
#. module: delivery
#: selection:delivery.define.delivery.steps.wizard,picking_policy:0
msgid "Deliver all products at once"
msgstr ""
#. module: delivery
#: field:delivery.carrier,use_detailed_pricelist:0
msgid "Advanced Pricing per Destination"
msgstr ""
#. module: delivery
#: view:delivery.carrier:0
#: field:delivery.grid,carrier_id:0
#: model:ir.model,name:delivery.model_delivery_carrier
#: report:sale.shipping:0
#: field:stock.picking,carrier_id:0
msgid "Carrier"
msgstr ""
#. module: delivery
#: view:delivery.sale.order:0
msgid "_Apply"
msgstr ""
#. module: delivery
#: field:sale.order,id:0
msgid "ID"
msgstr ""
#. module: delivery
#: code:addons/delivery/wizard/delivery_sale_order.py:53
#: code:addons/delivery/wizard/delivery_sale_order.py:73
#, python-format
msgid "The order state have to be draft to add delivery lines."
msgstr ""
#. module: delivery
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
#. module: delivery
#: field:delivery.grid,sequence:0
msgid "Sequence"
msgstr ""
#. module: delivery
#: field:delivery.grid.line,list_price:0
msgid "Sale Price"
msgstr ""
#. module: delivery
#: model:ir.actions.act_window,name:delivery.action_delivery_cost
#: view:sale.order:0
msgid "Delivery Costs"
msgstr ""
#. module: delivery
#: selection:delivery.define.delivery.steps.wizard,picking_policy:0
msgid "Deliver each product when available"
msgstr ""
#. module: delivery
#: view:delivery.define.delivery.steps.wizard:0
msgid "Apply"
msgstr ""
#. module: delivery
#: field:delivery.grid.line,price_type:0
msgid "Price Type"
msgstr ""

View File

@ -18,8 +18,10 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields,osv
import time
from osv import fields,osv
from tools.translate import _
# Overloaded sale_order to manage carriers :
class sale_order(osv.osv):
@ -41,6 +43,39 @@ class sale_order(osv.osv):
result.update(carrier_id=order.carrier_id.id)
return result
def delivery_set(self, cr, uid, ids, context=None):
order_obj = self.pool.get('sale.order')
line_obj = self.pool.get('sale.order.line')
grid_obj = self.pool.get('delivery.grid')
carrier_obj = self.pool.get('delivery.carrier')
acc_fp_obj = self.pool.get('account.fiscal.position')
for order in self.browse(cr, uid, ids, context=context):
grid_id = carrier_obj.grid_get(cr, uid, [order.carrier_id.id], order.partner_shipping_id.id)
if not grid_id:
raise osv.except_osv(_('No grid available !'), _('No grid matching for this carrier !'))
if not order.state in ('draft'):
raise osv.except_osv(_('Order not in draft state !'), _('The order state have to be draft to add delivery lines.'))
grid = grid_obj.browse(cr, uid, grid_id, context=context)
taxes = grid.carrier_id.product_id.taxes_id
fpos = order.fiscal_position or False
taxes_ids = acc_fp_obj.map_tax(cr, uid, fpos, taxes)
#create the sale order line
line_obj.create(cr, uid, {
'order_id': order.id,
'name': grid.carrier_id.name,
'product_uom_qty': 1,
'product_uom': grid.carrier_id.product_id.uom_id.id,
'product_id': grid.carrier_id.product_id.id,
'price_unit': grid_obj.get_price(cr, uid, grid.id, order, time.strftime('%Y-%m-%d'), context),
'tax_id': [(6,0,taxes_ids)],
'type': 'make_to_stock'
})
#remove the value of the carrier_id field on the sale order
return self.write(cr, uid, ids, {'carrier_id': False}, context=context)
#return {'type': 'ir.actions.act_window_close'} action reload?
sale_order()

View File

@ -3,14 +3,8 @@
-
I add delivery cost in Sale order.
-
!python {model: delivery.sale.order}: |
context.update({'active_ids': [ref("sale.order")]})
-
!record {model: delivery.sale.order, id: sale_delivery_carrier}:
{}
-
!python {model: delivery.sale.order}: |
self.delivery_set(cr, uid, [ref('sale_delivery_carrier')], context=context)
!python {model: sale.order}: |
self.delivery_set(cr, uid, [ref("sale.order")], context=context)
-
I check sale order after added delivery cost.
-
@ -35,7 +29,7 @@
self.create_invoice(cr, uid, [wiz_id], {"active_ids": ship_ids, "active_id": ship_ids[0]})
-
I print a Delivery Order report.
-
-
!python {model: stock.picking}: |
import netsvc, tools, os
sale = self.pool.get('sale.order')
@ -47,14 +41,8 @@
-
I add free delivery cost in Sale order.
-
!python {model: delivery.sale.order}: |
context.update({'active_ids': [ref("sale.order2")]})
-
!record {model: delivery.sale.order, id: sale_delivery_carrier}:
{}
-
!python {model: delivery.sale.order}: |
self.delivery_set(cr, uid, [ref('sale_delivery_carrier')], context=context)
!python {model: sale.order}: |
self.delivery_set(cr, uid, [ref("sale.order2")], context=context)
-
I check sale order after added delivery cost.
-

View File

@ -1,25 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import delivery_sale_order
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,96 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from tools.translate import _
from osv import osv, fields
class make_delivery(osv.osv_memory):
_name = "delivery.sale.order"
_description = 'Make Delievery'
_columns = {
'carrier_id': fields.many2one('delivery.carrier','Delivery Method', required=True),
}
def default_get(self, cr, uid, fields, context=None):
res = super(make_delivery, self).default_get(cr, uid, fields, context=context)
order_obj = self.pool.get('sale.order')
for order in order_obj.browse(cr, uid, context.get('active_ids', []), context=context):
carrier = order.carrier_id.id
if not carrier:
carrier = order.partner_id.property_delivery_carrier.id
res.update({'carrier_id': carrier})
return res
def view_init(self, cr , uid , fields, context=None):
if context is None:
context = {}
order_obj = self.pool.get('sale.order')
for order in order_obj.browse(cr, uid, context.get('active_ids', []), context=context):
if not order.state in ('draft'):
raise osv.except_osv(_('Order not in draft state !'), _('The order state have to be draft to add delivery lines.'))
pass
def delivery_set(self, cr, uid, ids, context=None):
if context is None:
context = {}
rec_ids = context and context.get('active_ids',[])
order_obj = self.pool.get('sale.order')
line_obj = self.pool.get('sale.order.line')
grid_obj = self.pool.get('delivery.grid')
carrier_obj = self.pool.get('delivery.carrier')
acc_fp_obj = self.pool.get('account.fiscal.position')
order_objs = order_obj.browse(cr, uid, rec_ids, context=context)
for datas in self.browse(cr, uid, ids, context=context):
for order in order_objs:
grid_id = carrier_obj.grid_get(cr, uid, [datas.carrier_id.id],order.partner_shipping_id.id)
if not grid_id:
raise osv.except_osv(_('No grid available !'), _('No grid matching for this carrier !'))
if not order.state in ('draft'):
raise osv.except_osv(_('Order not in draft state !'), _('The order state have to be draft to add delivery lines.'))
grid = grid_obj.browse(cr, uid, grid_id, context=context)
taxes = grid.carrier_id.product_id.taxes_id
fpos = order.fiscal_position or False
taxes_ids = acc_fp_obj.map_tax(cr, uid, fpos, taxes)
line_obj.create(cr, uid, {
'order_id': order.id,
'name': grid.carrier_id.name,
'product_uom_qty': 1,
'product_uom': grid.carrier_id.product_id.uom_id.id,
'product_id': grid.carrier_id.product_id.id,
'price_unit': grid_obj.get_price(cr, uid, grid.id, order, time.strftime('%Y-%m-%d'), context),
'tax_id': [(6,0,taxes_ids)],
'type': 'make_to_stock'
})
return {'type': 'ir.actions.act_window_close'}
make_delivery()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,38 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Delivery Sale Order -->
<record id="view_make_delivery_wizard" model="ir.ui.view">
<field name="name">Delivery Costs</field>
<field name="model">delivery.sale.order</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create Deliveries">
<separator colspan="4" string="Delivery Method" />
<field name="carrier_id" widget="selection"/>
<newline/>
<separator colspan="4"/>
<group col="2" colspan="4">
<button icon='gtk-cancel' special="cancel"
string="_Cancel" />
<button name="delivery_set" string="_Apply"
colspan="1" type="object" icon="gtk-apply" />
</group>
</form>
</field>
</record>
<record id="action_delivery_cost" model="ir.actions.act_window">
<field name="name">Delivery Costs</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">delivery.sale.order</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_make_delivery_wizard"/>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -33,7 +33,15 @@
</div>
</div>
<h1 class="oe_edi_doc_title">Order <t t-esc="doc.name"/>: <t t-esc="_.str.sprintf('%.2f',doc.amount_total)"/> <t t-esc="doc.currency.code"/></h1>
<t t-if="(doc.state == 'draft' or doc.state == 'sent') and doc.__model == 'sale.order'">
<h1 class="oe_edi_doc_title">Quotation <t t-esc="doc.name"/>: <t t-esc="_.str.sprintf('%.2f',doc.amount_total)"/> <t t-esc="doc.currency.code"/></h1>
</t>
<t t-if="(doc.state == 'draft' or doc.state == 'sent') and doc.__model == 'purchase.order'">
<h1 class="oe_edi_doc_title">Request for Quotation <t t-esc="doc.name"/>: <t t-esc="_.str.sprintf('%.2f',doc.amount_total)"/> <t t-esc="doc.currency.code"/></h1>
</t>
<t t-if="(doc.state != 'draft' and doc.state != 'sent')">
<h1 class="oe_edi_doc_title">Order <t t-esc="doc.name"/>: <t t-esc="_.str.sprintf('%.2f',doc.amount_total)"/> <t t-esc="doc.currency.code"/></h1>
</t>
<table width="100%" class="oe_edi_data oe_edi_shade">
<tr class="oe_edi_floor">
@ -116,7 +124,7 @@
</div>
</t>
<t t-name="Edi.sale.order.sidebar">
<t t-if="doc.order_policy &amp;&amp; (doc.order_policy == 'prepaid' || doc.order_policy == 'manual')">
<t t-if="doc.order_policy and (doc.order_policy == 'prepaid' || doc.order_policy == 'manual') and (doc.state != 'draft' and doc.state != 'sent')">
<t t-if="doc.company_address.paypal_account || doc.company_address.bank_ids">
<p class="oe_edi_sidebar_title">Pay Online</p>
<t t-if="doc.company_address.paypal_account">

View File

@ -167,7 +167,6 @@ class hr_evaluation(osv.osv):
('done','Done'),
], 'Status', required=True, readonly=True),
'date_close': fields.date('Ending Date', select=True),
'progress': fields.float("Progress"),
}
_defaults = {
'date': lambda *a: (parser.parse(datetime.now().strftime('%Y-%m-%d')) + relativedelta(months =+ 1)).strftime('%Y-%m-%d'),
@ -245,7 +244,6 @@ class hr_evaluation(osv.osv):
return True
def button_done(self,cr, uid, ids, context=None):
self.write(cr, uid, ids,{'progress': 1 * 100}, context=context)
self.write(cr, uid, ids,{'state':'done', 'date_close': time.strftime('%Y-%m-%d')}, context=context)
return True
@ -312,7 +310,6 @@ class hr_evaluation_interview(osv.osv):
for id in self.browse(cr, uid, ids, context=context):
flag = False
wating_id = 0
tot_done_req = 1
if not id.evaluation_id.id:
raise osv.except_osv(_('Warning !'),_("You cannot start evaluation without Appraisal."))
records = hr_eval_obj.browse(cr, uid, [id.evaluation_id.id], context=context)[0].survey_request_ids
@ -322,11 +319,8 @@ class hr_evaluation_interview(osv.osv):
continue
if child.state != "done":
flag = True
else:
tot_done_req += 1
if not flag and wating_id:
self.survey_req_waiting_answer(cr, uid, [wating_id], context=context)
hr_eval_obj.write(cr, uid, [id.evaluation_id.id], {'progress': tot_done_req * 100 / len(records)}, context=context)
self.write(cr, uid, ids, { 'state': 'done'}, context=context)
return True

View File

@ -2,7 +2,7 @@
<openerp>
<data noupdate="1">
<record id="survey_2" model="survey">
<field name="title">Employee Appraisal</field>
<field name="title">Self Appraisal</field>
<field name="max_response_limit">20</field>
<field eval="[(6,0,[])]" name="users"/>
<field name="type" ref="survey.survey_type1"/>
@ -1157,37 +1157,11 @@ Once the form had been filled, the employee send it to his supervisor.
</data>
<data noupdate="1">
<record id="hr_evaluation_plan_phase_sendtosubordinates0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Subordinates</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="1" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">bottom-up</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
<record id="hr_evaluation_plan_phase_sendtomanagers0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Managers</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="2" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">top-down</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
<record id="hr_evaluation_plan_phase_sendtoemployee0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Send to Employee</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="3" name="sequence"/>
<field eval="1" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">self</field>
<field eval="0" name="send_anonymous_employee"/>
@ -1196,19 +1170,6 @@ Once the form had been filled, the employee send it to his supervisor.
<field eval="0" name="send_answer_manager"/>
<field eval="0" name="wait"/>
</record>
<record id="hr_evaluation_plan_phase_finalinterviewwithmanager0" model="hr_evaluation.plan.phase">
<field name="plan_id" ref="hr_evaluation_plan_managersevaluationplan0"/>
<field name="name">Final Interview With Manager</field>
<field eval="0" name="send_anonymous_manager"/>
<field eval="4" name="sequence"/>
<field name="company_id" ref="base.main_company"/>
<field name="action">final</field>
<field eval="0" name="send_anonymous_employee"/>
<field eval="0" name="send_answer_employee"/>
<field name="survey_id" ref="hr_evaluation.survey_2"/>
<field eval="0" name="send_answer_manager"/>
<field eval="1" name="wait"/>
</record>
</data>
<data noupdate="1">

View File

@ -162,7 +162,7 @@
<button name="button_draft" string="Reset to Draft" states="cancel" type="object"/>
<button name="button_cancel" string="Cancel" states="draft,wait,progress" type="object"/>
<div class="oe_right">
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,wait,done" statusbar_colors='{"progress":"blue"}'/>
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,progress,wait,done" statusbar_colors='{"progress":"blue"}'/>
</div>
<div class="oe_clear"/>
</div>
@ -172,21 +172,20 @@
<field name="employee_id" on_change="onchange_employee_id(employee_id)"/>
<field name="plan_id"/>
<field name="date"/>
<field name="progress" widget="progressbar"/>
</group>
<group col="2" colspan="1">
<group col="2" colspan="1" attrs="{'invisible':['|', ('state','=','draft'), ('state', '=', 'wait')]}">
<separator string="Ending Summary" colspan="2"/>
<field name="rating" attrs="{'readonly':[('state','&lt;&gt;','progress')],'required':[('state','=','progress')]}"/>
<field name="rating" attrs="{'readonly':[('state','&lt;&gt;','progress')]}"/>
<field name="date_close" readonly="1"/>
</group>
<notebook colspan="4">
<page string="Appraisal">
<page string="Appraisal" attrs="{'invisible':[('state','=','draft')]}">
<field name="survey_request_ids" nolabel="1" colspan="4" widget="one2many">
<form string="Interview Appraisal">
<group col="4" colspan="4">
<field name="survey_id"/>
<group col="2" colspan="2">
<button name="%(survey.action_view_survey_question_message)d" string="Interview Question" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="%(survey.action_view_survey_question_message)d" string="Answer Survey" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />
</group>
<field name="date_deadline"/>
@ -198,15 +197,16 @@
<separator string="Status" colspan="4"/>
<group colspan="4" col="6">
<field name="state"/>
<button string="Done" name="survey_req_done" states="waiting_answer" type="object" icon="gtk-jump-to" />
</group>
</form>
</field>
</page>
<page string="Internal Notes">
<page string="Internal Notes" attrs="{'invisible':[('state','=','draft')]}">
<field name="note_action" colspan="4" nolabel="1"
groups="base.group_hr_manager"/>
</page>
<page string="Public Notes">
<page string="Public Notes" attrs="{'invisible':[('state','=','draft')]}">
<field name="note_summary" colspan="4" nolabel="1"/>
</page>
</notebook>
@ -258,6 +258,9 @@
<separator orientation="vertical"/>
<filter icon="terp-gnome-cpu-frequency-applet+" string="Late"
help="Appraisal that overpassed the deadline" domain="[('date','&lt;=',(datetime.date.today()).strftime('%%Y-%%m-%%d'))]" />
<filter icon="terp-go-month" name="next_month" string=" Month+1"
domain="[('date','&lt;=', (datetime.date.today() + relativedelta(day=31, months=1)).strftime('%%Y-%%m-%%d')),('date','&gt;=',(datetime.date.today() + relativedelta(day=1,months=1)).strftime('%%Y-%%m-%%d')),('state','=','draft')]"
help="Appraisal during next month"/>
<separator orientation="vertical"/>
<field name="employee_id" />
<field name="plan_id" widget="selection" />
@ -281,6 +284,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="search_view_id" ref="hr_evaluation.evaluation_search"/>
<field name="context">{"search_default_next_month":1}</field>
<field name="help">Each employee may be assigned an Appraisal Plan. Such a plan defines the frequency and the way you manage your periodic personnel evaluation. You will be able to define steps and attach interviews to each step. OpenERP manages all kind of evaluations: bottom-up, top-down, self-evaluation and final evaluation by the manager.</field>
</record>
@ -294,28 +298,27 @@
<field name="arch" type="xml">
<form string="Interview Appraisal">
<group col="4" colspan="4">
<field name="survey_id"/>
<field name="evaluation_id"/>
<group col="2" colspan="2">
<button name="%(survey.action_view_survey_question_message)d" string="Interview Question" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0,}" attrs="{'readonly':[('response','=',False)]}" />
</group>
<field name="date_deadline"/>
<field name="response" readonly="1"/>
<field name="user_to_review_id"/>
<field name="user_id" string="Interviewer"/>
<group col="2" colspan="2">
<button string="Send Reminder Email"
name="%(mail.action_email_compose_message_wizard)d"
icon="terp-mail-message-new" type="action"
states="waiting_answer"/>
<button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<field name="user_to_review_id"/>
<field name="user_id" string="Interviewer"/>
<field name="date_deadline"/>
<group col="4" colspan="4">
<field name="survey_id"/>
<button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<newline/>
<field name="evaluation_id"/>
<button string="Send Reminder Email" name="%(mail.action_email_compose_message_wizard)d" icon="terp-mail-message-new" type="action" states="waiting_answer"/>
<newline/>
<field name="response" readonly="1"/>
<button name="%(survey.action_view_survey_question_message)d" string="Answer Survey" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response,'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
</group>
</group>
<newline/>
<separator string="Status" colspan="4"/>
<group colspan="4" col="6">
<field name="state"/>
<field name="state" widget="statusbar" statusbar_visible="waiting_answer,done"/>
<button string="Send Request" name="survey_req_waiting_answer" states="draft" type="object" icon="gtk-yes" />
<button string="Done" name="survey_req_done" states="waiting_answer" type="object" icon="gtk-jump-to" />
<button string="Cancel" name="survey_req_cancel" states="draft,waiting_answer" type="object" icon="gtk-cancel"/>
</group>
</form>
</field>
@ -332,11 +335,12 @@
<field name="user_id" string="Interviewer"/>
<field name="user_to_review_id"/>
<field name="response" readonly="1" invisible="True"/>
<button name="%(survey.action_view_survey_question_message)d" string="Interview Question" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response, 'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="%(survey.survey_browse_response)d" string="Print Interview" type="action" states="done" icon="gtk-print" context="{'survey_id': survey_id, 'response_id' : [response], 'response_no':0}" attrs="{'readonly':[('response','=',False)]}" />
<button name="%(survey.action_view_survey_question_message)d" string="Answer Survey" type="action" states="waiting_answer,done,cancel" icon="gtk-execute" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0, 'active' : response, 'request' : True, 'object' : 'hr.evaluation.interview', 'cur_id' : active_id}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="action_print_survey" string="Print Survey" type="object" icon="gtk-print" context="{'survey_id': survey_id, 'response_id': [response], 'response_no':0}" attrs="{'readonly':[('survey_id','=',False)]}"/>
<button name="%(mail.action_email_compose_message_wizard)d" string="Send Reminder Email" icon="terp-mail-message-new" type="action" colspan="2" states="waiting_answer"/>
<field name="state"/>
<button string="Send Request" name="survey_req_waiting_answer" states="draft" type="object" icon="gtk-yes" />
<button string="Done" name="survey_req_done" states="waiting_answer" type="object" icon="gtk-jump-to" />
</tree>
</field>
</record>

View File

@ -31,7 +31,6 @@ class hr_evaluation_report(osv.osv):
'create_date': fields.date('Create Date', readonly=True),
'delay_date':fields.float('Delay to Start', digits=(16,2),readonly=True),
'overpass_delay':fields.float('Overpassed Deadline', digits=(16,2), readonly=True),
'progress_bar' : fields.float("Progress"),
'day': fields.char('Day', size=128, readonly=True),
'deadline': fields.date("Deadline", readonly=True),
'request_id': fields.many2one('survey.request', 'Request_id', readonly=True),
@ -77,7 +76,6 @@ class hr_evaluation_report(osv.osv):
to_char(s.create_date, 'MM') as month,
count(l.*) as nbr,
s.state,
s.progress as progress_bar,
avg(extract('epoch' from age(s.create_date,CURRENT_DATE)))/(3600*24) as delay_date,
avg(extract('epoch' from age(s.date,CURRENT_DATE)))/(3600*24) as overpass_delay
from
@ -96,7 +94,6 @@ class hr_evaluation_report(osv.osv):
s.date_close,
l.request_id,
s.rating,
s.progress,
s.plan_id
)
""")

View File

@ -20,7 +20,6 @@
<field name="rating" invisible="1"/>
<field name="state" invisible="1"/>
<field name="nbr" sum="# of Requests"/>
<field name="progress_bar" widget="progressbar"/>
<field name="delay_date"/>
<field name="overpass_delay"/>
</tree>

View File

@ -25,7 +25,7 @@ access_survey_page_hr_user,survey.page.hr.user,survey.model_survey_page,base.gro
access_survey_response_hr_user,survey.response.hr.user,survey.model_survey_response,base.group_hr_user,1,1,1,0
access_survey_history_hr_user,survey.history.hr.user,survey.model_survey_history,base.group_hr_user,1,1,1,0
access_survey_request_hr_user,survey.request.hr.user,survey.model_survey_request,base.group_hr_user,1,1,1,0
access_survey_question_column_heading_hr_user,survey.question.column.heading.hr.user,survey.model_survey_question_column_heading,base.group_hr_user,1,0,0,0
access_survey_question_column_heading_hr_user,survey.question.column.heading.hr.user,survey.model_survey_question_column_heading,base.group_hr_user,1,1,1,0
access_survey_response_line_hr_user,survey.response.line.hr.user,survey.model_survey_response_line,base.group_hr_user,1,1,1,0
access_survey_tbl_column_heading_hr_user,survey.tbl.column.heading.hr.user,survey.model_survey_tbl_column_heading,base.group_hr_user,1,1,1,0
access_base_calendar_attendee_survey_user,base.calendar.calendar.attendee.survey.user,base_calendar.model_calendar_attendee,base.group_survey_user,1,1,1,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
25 access_survey_response_hr_user survey.response.hr.user survey.model_survey_response base.group_hr_user 1 1 1 0
26 access_survey_history_hr_user survey.history.hr.user survey.model_survey_history base.group_hr_user 1 1 1 0
27 access_survey_request_hr_user survey.request.hr.user survey.model_survey_request base.group_hr_user 1 1 1 0
28 access_survey_question_column_heading_hr_user survey.question.column.heading.hr.user survey.model_survey_question_column_heading base.group_hr_user 1 0 1 0 1 0
29 access_survey_response_line_hr_user survey.response.line.hr.user survey.model_survey_response_line base.group_hr_user 1 1 1 0
30 access_survey_tbl_column_heading_hr_user survey.tbl.column.heading.hr.user survey.model_survey_tbl_column_heading base.group_hr_user 1 1 1 0
31 access_base_calendar_attendee_survey_user base.calendar.calendar.attendee.survey.user base_calendar.model_calendar_attendee base.group_survey_user 1 1 1 0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-05-10 18:26+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-05-29 01:29+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-11 05:03+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-05-30 05:21+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: hr_expense
#: model:process.node,name:hr_expense.process_node_confirmedexpenses0
@ -851,7 +851,7 @@ msgstr "経費"
#. module: hr_expense
#: constraint:product.product:0
msgid "Error: Invalid ean code"
msgstr "エラー:無効な欧州統一商品番号です。"
msgstr "エラー:無効な商品識別番号です。"
#. module: hr_expense
#: view:hr.expense.report:0 field:hr.expense.report,year:0

View File

@ -112,25 +112,24 @@ class hr_holidays(osv.osv):
_columns = {
'name': fields.char('Description', required=True, size=64),
'state': fields.selection([('draft', 'New'), ('cancel', 'Cancelled'),('confirm', 'Waiting Approval'), ('refuse', 'Refused'),
('validate1', 'Waiting Second Approval'), ('validate', 'Approved')],
'Status', readonly=True, help='The status is set to \'Draft\', when a holiday request is created.\
\nThe status is \'Waiting Approval\', when holiday request is confirmed by user.\
\nThe status is \'Refused\', when holiday request is refused by manager.\
\nThe status is \'Approved\', when holiday request is approved by manager.'),
'state': fields.selection([('draft', 'To Submit'), ('cancel', 'Cancelled'),('confirm', 'To Approve'), ('refuse', 'Refused'), ('validate1', 'Second Approval'), ('validate', 'Approved')],
'State', readonly=True, help='The state is set to \'To Submit\', when a holiday request is created.\
\nThe state is \'To Approve\', when holiday request is confirmed by user.\
\nThe state is \'Refused\', when holiday request is refused by manager.\
\nThe state is \'Approved\', when holiday request is approved by manager.'),
'user_id':fields.related('employee_id', 'user_id', type='many2one', relation='res.users', string='User', store=True),
'date_from': fields.datetime('Start Date', readonly=True, states={'draft':[('readonly',False)]}, select=True),
'date_to': fields.datetime('End Date', readonly=True, states={'draft':[('readonly',False)]}),
'holiday_status_id': fields.many2one("hr.holidays.status", "Leave Type", required=True,readonly=True, states={'draft':[('readonly',False)]}),
'employee_id': fields.many2one('hr.employee', "Employee", select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)]}, help='Leave Manager can let this field empty if this leave request/allocation is for every employee'),
'date_from': fields.datetime('Start Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, select=True),
'date_to': fields.datetime('End Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'holiday_status_id': fields.many2one("hr.holidays.status", "Leave Type", required=True,readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'employee_id': fields.many2one('hr.employee', "Employee", select=True, invisible=False, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help='Leave Manager can let this field empty if this leave request/allocation is for every employee'),
#'manager_id': fields.many2one('hr.employee', 'Leave Manager', invisible=False, readonly=True, help='This area is automatically filled by the user who validate the leave'),
#'notes': fields.text('Notes',readonly=True, states={'draft':[('readonly',False)]}),
'manager_id': fields.many2one('hr.employee', 'First Approval', invisible=False, readonly=True, help='This area is automatically filled by the user who validate the leave'),
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)]}),
'number_of_days_temp': fields.float('Number of Days', readonly=True, states={'draft':[('readonly',False)]}),
'notes': fields.text('Reasons',readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'number_of_days_temp': fields.float('Number of Days', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}),
'number_of_days': fields.function(_compute_number_of_days, string='Number of Days', store=True),
'case_id': fields.many2one('crm.meeting', 'Meeting'),
'type': fields.selection([('remove','Leave Request'),('add','Allocation Request')], 'Request Type', required=True, readonly=True, states={'draft':[('readonly',False)]}, help="Choose 'Leave Request' if someone wants to take an off-day. \nChoose 'Allocation Request' if you want to increase the number of leaves available for someone", select=True),
'type': fields.selection([('remove','Leave Request'),('add','Allocation Request')], 'Request Type', required=True, readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, help="Choose 'Leave Request' if someone wants to take an off-day. \nChoose 'Allocation Request' if you want to increase the number of leaves available for someone", select=True),
'parent_id': fields.many2one('hr.holidays', 'Parent'),
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
'department_id':fields.related('employee_id', 'department_id', string='Department', type='many2one', relation='hr.department', readonly=True, store=True),

View File

@ -65,11 +65,11 @@
<field name="arch" type="xml">
<form layout="manual">
<div class="oe_form_topbar">
<button string="Confirm" name="confirm" states="draft" type="workflow"/>
<button string="Submit to Manager" name="confirm" states="draft" type="workflow"/>
<button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user"/>
<button string="Approved" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user"/>
<button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user"/>
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" groups="base.group_hr_user,base.group_hr_manager"/>
<button string="Set to Draft" name="set_to_draft" states="refuse,validate" type="object" groups="base.group_hr_user"/>
<button string="Reset to New" name="set_to_draft" states="refuse,validate" type="object" groups="base.group_hr_user"/>
<div class="oe_right">
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
</div>
@ -80,7 +80,7 @@
<field name="name" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
<field name="holiday_type" on_change="onchange_type(holiday_type)" attrs="{'readonly':[('state','!=','draft')]}" width="130" string="Mode" groups="base.group_hr_user"/>
<group attrs="{'invisible':[('holiday_type','=','employee')]}">
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'readonly':[('state','!=','draft')]}"/>
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'readonly':[('state','!=','draft'), ('state','!=','confirm')]}"/>
</group>
<group attrs="{'invisible':[('holiday_type','=','category')]}">
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')]}" groups="base.group_hr_user"/>
@ -117,11 +117,11 @@
<field name="arch" type="xml">
<form layout="manual">
<div class="oe_form_topbar">
<button string="Confirm" name="confirm" states="draft" type="workflow"/>
<button string="Submit to Manager" name="confirm" states="draft" type="workflow"/>
<button string="Approve" name="validate" states="confirm" type="workflow" groups="base.group_hr_user"/>
<button string="Approved" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user"/>
<button string="Validate" name="second_validate" states="validate1" type="workflow" groups="base.group_hr_user"/>
<button string="Refuse" name="refuse" states="confirm,validate1" type="workflow" groups="base.group_hr_user"/>
<button string="Set to Draft" name="set_to_draft" states="cancel,validate,refuse" type="object" groups="base.group_hr_user"/>
<button string="Reset to New" name="set_to_draft" states="cancel,validate,refuse" type="object" groups="base.group_hr_user"/>
<div class="oe_right">
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,confirm,validate" statusbar_colors='{"confirm":"blue","validate1":"blue","refuse":"red"}'/>
</div>
@ -141,7 +141,7 @@
<notebook colspan="4">
<page string="General">
<field name="holiday_status_id" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
<field name="department_id" attrs="{'readonly':[('holiday_type','=','category')]}"/>
<field name="department_id" attrs="{'readonly':['|', ('holiday_type','=','category'), ('state','not in' ,('draft', 'confirm'))]}"/>
<field name="number_of_days_temp"/>
<field name="double_validation" invisible="1"/>
<newline/>
@ -178,7 +178,7 @@
<!--field name="type"/-->
<field name="state"/>
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_user,base.group_hr_manager"/>
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user,base.group_hr_manager"/>
<button string="Validate" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user,base.group_hr_manager"/>
</tree>
</field>
</record>
@ -203,10 +203,10 @@
<newline/>
<field name="state" colspan="2"/>
<group colspan="2">
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
<button string="Submit to Manager" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply"/>
<button string="Refuse" name="refuse" states="confirm,validate,draft" type="workflow" icon="gtk-no"/>
<button string="Set to Draft" name="set_to_draft" states="cancel" type="object" icon="gtk-convert"/>
<button string="Reset to New" name="set_to_draft" states="cancel" type="object" icon="gtk-convert"/>
</group>
</page>
</notebook>
@ -234,7 +234,7 @@
<field name="manager_id" invisible="1"/>
<field name="user_id" invisible="1"/>
<field name="state"/>
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
<button string="Submit to Manager" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
<button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no" groups="base.group_hr_user"/>
</tree>
@ -263,7 +263,7 @@
<field name="user_id" invisible="1"/>
<!--field name="type"/-->
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
<button string="Approved" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
<button string="Validate" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
</tree>
</field>
</record>

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-02-13 04:47+0000\n"
"Last-Translator: Jeff Wang <wjfonhand@hotmail.com>\n"
"PO-Revision-Date: 2012-05-29 05:42+0000\n"
"Last-Translator: ccdos <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-02-14 05:44+0000\n"
"X-Generator: Launchpad (build 14781)\n"
"X-Launchpad-Export-Date: 2012-05-30 05:21+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: hr_timesheet_sheet
#: field:hr.analytic.timesheet,sheet_id:0 field:hr.attendance,sheet_id:0
@ -61,7 +61,7 @@ msgstr "本年的计工单"
#. module: hr_timesheet_sheet
#: model:process.transition,name:hr_timesheet_sheet.process_transition_tasktimesheet0
msgid "Task timesheet"
msgstr "工作工单"
msgstr "工作工单"
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet:0
@ -78,7 +78,7 @@ msgstr "请核实这表的总差异少于 %.2f "
#. module: hr_timesheet_sheet
#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0
msgid "March"
msgstr "3月"
msgstr ""
#. module: hr_timesheet_sheet
#: view:timesheet.report:0 field:timesheet.report,cost:0
@ -105,7 +105,7 @@ msgstr "公司"
#: model:process.node,name:hr_timesheet_sheet.process_node_timesheet0
#: view:timesheet.report:0
msgid "Timesheet"
msgstr "工单"
msgstr "工单"
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet:0
@ -120,7 +120,7 @@ msgstr "日期到"
#. module: hr_timesheet_sheet
#: model:process.node,note:hr_timesheet_sheet.process_node_invoiceonwork0
msgid "Based on the timesheet"
msgstr "根据工单"
msgstr "根据工单"
#. module: hr_timesheet_sheet
#: view:hr.timesheet.report:0 view:timesheet.report:0
@ -173,7 +173,7 @@ msgstr "拒绝"
#, python-format
msgid ""
"You cannot enter an attendance date outside the current timesheet dates!"
msgstr "您不能输入一个超过当前工单日期的考勤日期!"
msgstr "您不能输入一个超过当前工单日期的考勤日期!"
#. module: hr_timesheet_sheet
#: model:ir.actions.act_window,help:hr_timesheet_sheet.action_hr_timesheet_current_open
@ -185,8 +185,8 @@ msgid ""
"the user and can be validated by his manager. If required, as defined on the "
"project, you can generate the invoices based on the timesheet."
msgstr ""
"用\"我的记工单\"菜单开启您的记工单所以您能在系统预定你的活动。用相同方式,您能记录您的考勤(签入/签出)同时记录在不同项目的工作时间。在公司定义的期末"
",确认用户的记工单和经由经理使其生效。如果需要,可以定义为一个项目,你能给这工单开发票。"
"用\"我的计工单\"菜单开启您的计工单所以您能在系统预定你的活动。用相同方式,您能记录您的考勤(签入/签出)同时记录在不同项目的工作时间。在公司定义的期末"
",确认用户的记工单和经由经理使其生效。如果需要,可以定义为一个项目,你能给这工单开发票。"
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet.day:0
@ -227,7 +227,7 @@ msgstr "警告!"
#. module: hr_timesheet_sheet
#: model:process.node,note:hr_timesheet_sheet.process_node_attendance0
msgid "Employee's timesheet entry"
msgstr "员工工单"
msgstr "员工工单"
#. module: hr_timesheet_sheet
#: view:hr.timesheet.report:0 field:hr.timesheet.report,account_id:0
@ -259,7 +259,7 @@ msgstr " 月份 "
#: model:ir.ui.menu,name:hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form
#: view:res.company:0
msgid "Timesheets"
msgstr "工单"
msgstr "工单"
#. module: hr_timesheet_sheet
#: model:process.node,name:hr_timesheet_sheet.process_node_confirmedtimesheet0
@ -282,7 +282,7 @@ msgstr "确认"
#. module: hr_timesheet_sheet
#: field:hr_timesheet_sheet.sheet,timesheet_ids:0
msgid "Timesheet lines"
msgstr "工单明细"
msgstr "工单明细"
#. module: hr_timesheet_sheet
#: constraint:res.company:0
@ -343,7 +343,7 @@ msgstr "总时间"
#: view:hr_timesheet_sheet.sheet:0
#: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet
msgid "Timesheet Lines"
msgstr "工单明细"
msgstr "工单明细"
#. module: hr_timesheet_sheet
#: view:hr.timesheet.report:0
@ -370,7 +370,7 @@ msgstr "无效操作!"
#. module: hr_timesheet_sheet
#: model:process.transition,note:hr_timesheet_sheet.process_transition_validatetimesheet0
msgid "The project manager validates the timesheets."
msgstr "项目经理审核工单"
msgstr "项目经理审核工单"
#. module: hr_timesheet_sheet
#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0
@ -403,7 +403,7 @@ msgstr "# 数量"
#: view:hr_timesheet_sheet.sheet.day:0
#: field:hr_timesheet_sheet.sheet.day,total_timesheet:0
msgid "Total Timesheet"
msgstr "总工单"
msgstr "总工单"
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet:0
@ -418,7 +418,7 @@ msgstr "签入"
#. module: hr_timesheet_sheet
#: view:timesheet.report:0 field:timesheet.report,total_timesheet:0
msgid "#Total Timesheet"
msgstr "# 总工单"
msgstr "# 总工单"
#. module: hr_timesheet_sheet
#: model:ir.model,name:hr_timesheet_sheet.model_hr_timesheet_current_open
@ -451,7 +451,7 @@ msgstr "要为员工创建计工单,你要给该员工指定一个产品,例
#. module: hr_timesheet_sheet
#: view:hr.timesheet.current.open:0
msgid "It will open your current timesheet"
msgstr "它将开启您当前工单"
msgstr "它将开启您当前工单"
#. module: hr_timesheet_sheet
#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:241
@ -504,12 +504,12 @@ msgstr "开发票"
msgid ""
"The timesheet line represents the time spent by the employee on a specific "
"service provided."
msgstr "工单明细代表员工在特定服务所花费的时间。"
msgstr "工单明细代表员工在特定服务所花费的时间。"
#. module: hr_timesheet_sheet
#: constraint:hr_timesheet_sheet.sheet:0
msgid "You must select a Current date which is in the timesheet dates !"
msgstr "您选择的当前日期必须要在工单里!"
msgstr "您选择的当前日期必须要在工单里!"
#. module: hr_timesheet_sheet
#: field:hr_timesheet_sheet.sheet,name:0
@ -523,7 +523,7 @@ msgid ""
"in the system. It allows you to have a full overview of entries done by "
"your employees. You can group them by specific selection criteria thanks to "
"the search tool."
msgstr "在系统里这报表分析创建的工单,它可以使您一览您的员工的工作。您可以在搜索工具选择具体的标准来分组。"
msgstr "在系统里这报表分析创建的工单,它可以使您一览您的员工的工作。您可以在搜索工具选择具体的标准来分组。"
#. module: hr_timesheet_sheet
#: view:timesheet.report:0 selection:timesheet.report,state:0
@ -533,17 +533,17 @@ msgstr "草稿"
#. module: hr_timesheet_sheet
#: field:res.company,timesheet_max_difference:0
msgid "Timesheet allowed difference(Hours)"
msgstr "工单允许的差异(小时)"
msgstr "工单允许的差异(小时)"
#. module: hr_timesheet_sheet
#: model:process.transition,note:hr_timesheet_sheet.process_transition_invoiceontimesheet0
msgid "The invoice is created based on the timesheet."
msgstr "这发票创建基于这工单"
msgstr "这发票创建基于这工单"
#. module: hr_timesheet_sheet
#: model:process.node,name:hr_timesheet_sheet.process_node_drafttimesheetsheet0
msgid "Draft Timesheet"
msgstr "工单草稿"
msgstr "工单草稿"
#. module: hr_timesheet_sheet
#: selection:res.company,timesheet_range:0
@ -574,13 +574,13 @@ msgstr "当前状态"
#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:646
#, python-format
msgid "You cannot modify an entry in a confirmed timesheet !"
msgstr "您不能修改一个已确认的工单!"
msgstr "您不能修改一个已确认的工单!"
#. module: hr_timesheet_sheet
#: model:ir.model,name:hr_timesheet_sheet.model_hr_timesheet_sheet_sheet_account
#: model:ir.model,name:hr_timesheet_sheet.model_hr_timesheet_sheet_sheet_day
msgid "Timesheets by Period"
msgstr "工单周期"
msgstr "工单周期"
#. module: hr_timesheet_sheet
#: view:hr.timesheet.report:0 field:hr.timesheet.report,user_id:0
@ -592,7 +592,7 @@ msgstr "用户"
#. module: hr_timesheet_sheet
#: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_sheet_by_account
msgid "Timesheet by Account"
msgstr "辅助核算项的工单"
msgstr "辅助核算项的工单"
#. module: hr_timesheet_sheet
#: field:hr.timesheet.report,date:0 field:hr_timesheet_sheet.sheet.day,name:0
@ -612,13 +612,13 @@ msgstr "增加筛选条件"
#. module: hr_timesheet_sheet
#: field:res.company,timesheet_range:0
msgid "Timesheet range"
msgstr "工单范围"
msgstr "工单范围"
#. module: hr_timesheet_sheet
#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:548
#, python-format
msgid "You can not modify an entry in a confirmed timesheet !"
msgstr "您不能修改一张已确认的工单!"
msgstr "您不能修改一张已确认的工单!"
#. module: hr_timesheet_sheet
#: view:board.board:0
@ -646,7 +646,7 @@ msgid ""
"Check your timesheets for a specific period. You can also encode time spent "
"on a project (i.e. an analytic account) thus generating costs in the "
"analytic account concerned."
msgstr "在指定的周期检查您的工单。您也可以在项目花费的时间进行编码(即辅助核算项)因此在这辅助核算项生成有关成本。"
msgstr "在指定的周期检查您的工单。您也可以在项目花费的时间进行编码(即辅助核算项)因此在这辅助核算项生成有关成本。"
#. module: hr_timesheet_sheet
#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:237
@ -728,7 +728,7 @@ msgstr "查找辅助核算项"
msgid ""
"Allowed difference in hours between the sign in/out and the timesheet "
"computation for one sheet. Set this to 0 if you do not want any control."
msgstr "签入/签出和在一个工单里的容许的差异小时。如果您不想这样控制设为0."
msgstr "签入/签出和在一个工单里的容许的差异小时。如果您不想这样控制设为0."
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet:0 field:hr_timesheet_sheet.sheet,period_ids:0
@ -789,13 +789,13 @@ msgstr "本月的计工单"
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet.account:0
msgid "Timesheet by Accounts"
msgstr "辅助核算项工单"
msgstr "辅助核算项工单"
#. module: hr_timesheet_sheet
#: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:51
#, python-format
msgid "Open Timesheet"
msgstr "开始的工单"
msgstr "开始的工单"
#. module: hr_timesheet_sheet
#: view:hr.timesheet.report:0 view:timesheet.report:0
@ -817,21 +817,21 @@ msgid ""
"* The 'Done' state is used when users timesheet is accepted by his/her "
"senior."
msgstr ""
" * “草稿”状态用于一个新的和未确认的工单。\n"
"* \"已确认\"状态用于用户确认一个工单。\n"
"* “完成”状态用于用户工单已被他/她的上级审核。"
" * “草稿”状态用于一个新的和未确认的工单。\n"
"* \"已确认\"状态用于用户确认一个工单。\n"
"* “完成”状态用于用户工单已被他/她的上级审核。"
#. module: hr_timesheet_sheet
#: view:hr.timesheet.report:0
#: model:ir.actions.act_window,name:hr_timesheet_sheet.action_hr_timesheet_report_stat_all
#: model:ir.ui.menu,name:hr_timesheet_sheet.menu_hr_timesheet_report_all
msgid "Timesheet Analysis"
msgstr "工单分析"
msgstr "工单分析"
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet:0
msgid "Search Timesheet"
msgstr "查找工单"
msgstr "查找工单"
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet:0
@ -841,7 +841,7 @@ msgstr "已确认的计工单"
#. module: hr_timesheet_sheet
#: model:ir.model,name:hr_timesheet_sheet.model_hr_analytic_timesheet
msgid "Timesheet Line"
msgstr "工单明细"
msgstr "工单明细"
#. module: hr_timesheet_sheet
#: view:hr.timesheet.report:0 field:hr.timesheet.report,product_id:0
@ -864,7 +864,7 @@ msgstr "说明"
#. module: hr_timesheet_sheet
#: model:process.transition,note:hr_timesheet_sheet.process_transition_confirmtimesheet0
msgid "The employee periodically confirms his own timesheets."
msgstr "员工定期确认自己的工单"
msgstr "员工定期确认自己的工单"
#. module: hr_timesheet_sheet
#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0
@ -884,7 +884,7 @@ msgstr "签出"
#. module: hr_timesheet_sheet
#: model:process.transition,note:hr_timesheet_sheet.process_transition_tasktimesheet0
msgid "Moves task entry into the timesheet line"
msgstr "把工作调入工单明细中"
msgstr "把工作调入工单明细中"
#. module: hr_timesheet_sheet
#: view:hr_timesheet_sheet.sheet.day:0
@ -895,7 +895,7 @@ msgstr "工作时长"
#: model:ir.actions.act_window,name:hr_timesheet_sheet.action_timesheet_report_stat_all
#: model:ir.ui.menu,name:hr_timesheet_sheet.menu_timesheet_report_all
msgid "Timesheet Sheet Analysis"
msgstr "工单分析"
msgstr "工单分析"
#. module: hr_timesheet_sheet
#: field:hr_timesheet_sheet.sheet,total_difference:0
@ -1008,7 +1008,7 @@ msgstr "当前日期"
#. module: hr_timesheet_sheet
#: model:process.process,name:hr_timesheet_sheet.process_process_hrtimesheetprocess0
msgid "Hr Timesheet"
msgstr "人力资源 工单"
msgstr "人力资源 工单"
#. module: hr_timesheet_sheet
#: view:hr.timesheet.report:0 field:hr.timesheet.report,year:0

View File

@ -0,0 +1,33 @@
# Latvian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-05-28 12:54+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Latvian <lv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-29 04:46+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: knowledge
#: model:ir.ui.menu,name:knowledge.menu_document2
msgid "Collaborative Content"
msgstr ""
#. module: knowledge
#: model:ir.ui.menu,name:knowledge.menu_document_configuration
msgid "Configuration"
msgstr ""
#. module: knowledge
#: model:ir.ui.menu,name:knowledge.menu_document
msgid "Knowledge"
msgstr ""

View File

@ -0,0 +1,178 @@
# Romanian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:06+0000\n"
"PO-Revision-Date: 2012-05-30 20:18+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-31 04:54+0000\n"
"X-Generator: Launchpad (build 15322)\n"
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_fiscal_position_template
msgid "Template for Fiscal Position"
msgstr "Sablon pentru Pozitia Fiscala"
#. module: l10n_multilang
#: sql_constraint:account.account:0
msgid "The code of the account must be unique per company !"
msgstr "Codul sumei trebuie sa fie unic per companie !"
#. module: l10n_multilang
#: constraint:account.account.template:0
msgid ""
"Configuration Error!\n"
"You can not define children to an account with internal type different of "
"\"View\"! "
msgstr ""
"Eroare de Configurare!\n"
"Nu puteti defini conturi secundare intr-un cont cu tipul intern diferit de "
"\"Vizualizare\"! "
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_analytic_journal
msgid "Analytic Journal"
msgstr "Jurnal Analitic"
#. module: l10n_multilang
#: constraint:account.account.template:0
msgid "Error ! You can not create recursive account templates."
msgstr "Eroare! Nu puteti crea sabloane de cont recurente."
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_journal
msgid "Journal"
msgstr "Jurnal"
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_chart_template
msgid "Templates for Account Chart"
msgstr "Sabloane pentru Planul de Conturi"
#. module: l10n_multilang
#: sql_constraint:account.tax:0
msgid "The description must be unique per company!"
msgstr "Descrierea trebuie sa fie unica pe companie!"
#. module: l10n_multilang
#: constraint:account.tax.code.template:0
msgid "Error ! You can not create recursive Tax Codes."
msgstr "Eroare ! Nu puteti crea Coduri fiscale recursive."
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_tax_template
msgid "account.tax.template"
msgstr "sablon.taxa.cont"
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_tax
msgid "account.tax"
msgstr "taxa.cont"
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_account
msgid "Account"
msgstr "Cont"
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_wizard_multi_charts_accounts
msgid "wizard.multi.charts.accounts"
msgstr "wizard.plan.de.conturi.multi"
#. module: l10n_multilang
#: constraint:account.journal:0
msgid ""
"Configuration error! The currency chosen should be shared by the default "
"accounts too."
msgstr ""
"Eroare de configurare! Moneda aleasa trebuie sa fie comuna si conturilor "
"predefinite."
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_account_template
msgid "Templates for Accounts"
msgstr "Sabloane pentru Conturi"
#. module: l10n_multilang
#: help:account.chart.template,spoken_languages:0
msgid ""
"State here the languages for which the translations of templates could be "
"loaded at the time of installation of this localization module and copied in "
"the final object when generating them from templates. You must provide the "
"language codes separated by ';'"
msgstr ""
"Aici introduceti limbile pentru care pot fi incarcate traducerile "
"sabloanelor in momentul instalarii acestui modul de localizare si pot fi "
"copiate in obiectul final atunci cand le generati din sabloane. Trebuie sa "
"introduceti codurile limbilor separat cu ';'"
#. module: l10n_multilang
#: constraint:account.account:0
msgid "Error ! You can not create recursive accounts."
msgstr "Eroare ! Nu puteti crea conturi recursive."
#. module: l10n_multilang
#: constraint:account.account:0
msgid ""
"Configuration Error! \n"
"You can not select an account type with a deferral method different of "
"\"Unreconciled\" for accounts with internal type \"Payable/Receivable\"! "
msgstr ""
"Eroare de configurare! \n"
"Nu puteti selecta un tip de cont cu o metoda de amanare diferita de "
"\"Nereconciliat\" pentru conturile cu tipul intern \"Plati/Incasari\"! "
#. module: l10n_multilang
#: sql_constraint:account.journal:0
msgid "The name of the journal must be unique per company !"
msgstr "Numele jurnalului trebuie sa fie unic per companie !"
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_analytic_account
msgid "Analytic Account"
msgstr "Cont Analitic"
#. module: l10n_multilang
#: sql_constraint:account.journal:0
msgid "The code of the journal must be unique per company !"
msgstr "Codul jurnalului trebuie sa fie unic per companie !"
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_fiscal_position
msgid "Fiscal Position"
msgstr "Pozitie fiscala"
#. module: l10n_multilang
#: constraint:account.account:0
msgid ""
"Configuration Error! \n"
"You can not define children to an account with internal type different of "
"\"View\"! "
msgstr ""
"Eroare de configurare! \n"
"Nu puteti defini conturi subordonate unui cont cu tipul intern diferit de "
"\"Vizualizare\"! "
#. module: l10n_multilang
#: constraint:account.analytic.account:0
msgid "Error! You can not create recursive analytic accounts."
msgstr "Eroare! Nu puteti crea conturi analitice recursive."
#. module: l10n_multilang
#: model:ir.model,name:l10n_multilang.model_account_tax_code_template
msgid "Tax Code Template"
msgstr "Sablon Cod Taxa"
#. module: l10n_multilang
#: field:account.chart.template,spoken_languages:0
msgid "Spoken Languages"
msgstr "Limbi Vorbite"

View File

@ -0,0 +1,123 @@
# Romanian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-12-23 09:56+0000\n"
"PO-Revision-Date: 2012-05-30 20:37+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-31 04:54+0000\n"
"X-Generator: Launchpad (build 15322)\n"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_receivable
msgid "Receivable"
msgstr "Incasari"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stocks
msgid "Actif circulant"
msgstr "Active"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_commitment
msgid "Engagements"
msgstr "Angajamente"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_expense
msgid "Expense"
msgstr "Cheltuiala"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_stock
msgid "Stocks"
msgstr "Actiuni"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_provision
msgid "Provisions"
msgstr "Clauze"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_income
msgid "Income"
msgstr "Venit"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_tax
msgid "Tax"
msgstr "Taxa"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cash
msgid "Cash"
msgstr "Numerar"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_immobilisations
msgid "Immobilisations"
msgstr "Imobiliare"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_special
msgid "Comptes spéciaux"
msgstr "Conturi speciale"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_payable
msgid "Payable"
msgstr "Plati"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_asset
msgid "Asset"
msgstr "Active"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_view
msgid "View"
msgstr "Vizualizare"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_equity
msgid "Equity"
msgstr "Capital"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_cloture
msgid "Cloture"
msgstr "Inchidere"
#. module: l10n_syscohada
#: model:account.account.type,name:l10n_syscohada.account_type_dettes
msgid "Dettes long terme"
msgstr "Datorii pe termen lung"
#. module: l10n_syscohada
#: model:ir.actions.todo,note:l10n_syscohada.config_call_account_template_syscohada
msgid ""
"Generate Chart of Accounts from a SYSCOHADA Chart Template. You will be "
"asked to pass the name of the company, the chart template to follow, the no. "
"of digits to generate the code for your accounts and Bank account, currency "
"to create Journals. Thus,the pure copy of chart Template is generated.\n"
"\tThis is the same wizard that runs from Financial "
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
"Chart of Accounts from a Chart Template."
msgstr ""
"Creati Planul de Conturi dintr-un Sablon SYSCOHADA de planuri. Vi se va cere "
"sa introduceti numele companiei, sablonul de planuri de urmat, numarul de "
"cifre pentru crearea codului pentru conturile d-voastra si Contul Bancar, "
"moneda pentru a crea Jurnalele. Astfel, este creata copia originala a "
"Sablonului de planuri.\n"
"\t Acesta este acelasi wizard care ruleaza din Managementul "
"Financiar/Configurare/Contabilitate Financiara/Conturi Financiare/Creati "
"Planul de Conturi dintr-un Sablon de planuri."

File diff suppressed because it is too large Load Diff

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-27 02:57+0000\n"
"PO-Revision-Date: 2012-05-29 01:29+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-28 05:18+0000\n"
"X-Generator: Launchpad (build 15288)\n"
"X-Launchpad-Export-Date: 2012-05-30 05:21+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: membership
#: model:process.transition,name:membership.process_transition_invoicetoassociate0
@ -43,12 +43,12 @@ msgstr "グループ化…"
#. module: membership
#: field:report.membership,num_paid:0
msgid "# Paid"
msgstr "支払番号"
msgstr "支払済数"
#. module: membership
#: field:report.membership,tot_earned:0
msgid "Earned Amount"
msgstr "稼いだ金額"
msgstr "獲得金額"
#. module: membership
#: model:ir.model,name:membership.model_report_membership
@ -75,157 +75,157 @@ msgstr "請求書は支払済です。"
#: view:report.membership:0
#: field:report.membership,company_id:0
msgid "Company"
msgstr ""
msgstr "会社"
#. module: membership
#: view:res.partner:0
msgid "Ending Date Of Membership"
msgstr ""
msgstr "会員の終了日"
#. module: membership
#: field:product.product,membership_date_to:0
msgid "Date to"
msgstr ""
msgstr "終了日"
#. module: membership
#: model:process.transition,name:membership.process_transition_waitingtoinvoice0
msgid "Waiting to invoice"
msgstr ""
msgstr "請求書待機中"
#. module: membership
#: view:report.membership:0
msgid "This will display paid, old and total earned columns"
msgstr ""
msgstr "これは支払済、古い合計収入列を表示します。"
#. module: membership
#: view:res.partner:0
msgid "Suppliers"
msgstr ""
msgstr "仕入先"
#. module: membership
#: selection:membership.membership_line,state:0
#: selection:report.membership,membership_state:0
#: selection:res.partner,membership_state:0
msgid "Non Member"
msgstr ""
msgstr "非会員"
#. module: membership
#: model:product.template,name:membership.membership_2_product_template
msgid "Basic Membership"
msgstr ""
msgstr "基本会員"
#. module: membership
#: view:res.partner:0
msgid "All Members"
msgstr ""
msgstr "全会員"
#. module: membership
#: field:res.partner,membership_stop:0
msgid "Stop membership date"
msgstr ""
msgstr "脱退日"
#. module: membership
#: model:process.transition,name:membership.process_transition_producttomember0
msgid "Product to member"
msgstr ""
msgstr "会員への製品"
#. module: membership
#: view:res.partner:0
msgid "Join Membership"
msgstr ""
msgstr "会員への参加"
#. module: membership
#: field:res.partner,associate_member:0
msgid "Associate member"
msgstr ""
msgstr "準会員"
#. module: membership
#: model:process.node,note:membership.process_node_associatedmember0
msgid "Member is associated."
msgstr ""
msgstr "会員は関連付けられました。"
#. module: membership
#: view:report.membership:0
msgid " Month "
msgstr ""
msgstr ""
#. module: membership
#: field:report.membership,tot_pending:0
msgid "Pending Amount"
msgstr ""
msgstr "保留中金額"
#. module: membership
#: model:process.transition,note:membership.process_transition_associationpartner0
msgid "Associated partner."
msgstr ""
msgstr "関連パートナ"
#. module: membership
#: view:res.partner:0
msgid "Supplier Partners"
msgstr ""
msgstr "仕入先パートナ"
#. module: membership
#: field:report.membership,num_invoiced:0
msgid "# Invoiced"
msgstr ""
msgstr "請求済数"
#. module: membership
#: constraint:account.invoice:0
msgid "Invalid BBA Structured Communication !"
msgstr ""
msgstr "無効なBBAブロードバンドアクセス構造の通信"
#. module: membership
#: model:ir.actions.act_window,name:membership.action_report_membership_tree
#: model:ir.ui.menu,name:membership.menu_report_membership
msgid "Members Analysis"
msgstr ""
msgstr "会員分析"
#. module: membership
#: view:res.partner:0
msgid "End Membership Date"
msgstr ""
msgstr "会員の終了日"
#. module: membership
#: field:product.product,membership_date_from:0
msgid "Date from"
msgstr ""
msgstr "開始日"
#. module: membership
#: code:addons/membership/membership.py:414
#, python-format
msgid "Partner doesn't have an address to make the invoice."
msgstr ""
msgstr "パートナは請求書を作成するための住所を持っていません。"
#. module: membership
#: model:ir.model,name:membership.model_res_partner
#: field:membership.membership_line,partner:0
msgid "Partner"
msgstr ""
msgstr "パートナ"
#. module: membership
#: model:process.transition,name:membership.process_transition_invoicetopaid0
msgid "Invoice to paid"
msgstr ""
msgstr "支払請求書"
#. module: membership
#: view:res.partner:0
msgid "Customer Partners"
msgstr ""
msgstr "顧客パートナ"
#. module: membership
#: view:res.partner:0
msgid "Partners"
msgstr ""
msgstr "パートナ"
#. module: membership
#: field:membership.membership_line,date_from:0
msgid "From"
msgstr ""
msgstr "送信者"
#. module: membership
#: constraint:membership.membership_line:0
msgid "Error, this membership product is out of date"
msgstr ""
msgstr "エラー。この会員製品は期間外です。"
#. module: membership
#: help:res.partner,membership_state:0
@ -244,186 +244,193 @@ msgid ""
" -Paid Member: A member who has paid the membership "
"amount."
msgstr ""
"会員の状態を次のように表します。\n"
" ・ 非会員:どの会員にも申し込んでいない\n"
" ・ キャンセル会員:会員をキャンセルした\n"
" ・ 旧会員:会員の有効期限切れ\n"
" ・ 待機会員:会員に申込を行い、請求書が作成される予定\n"
" ・ 請求済会員:請求書を作成済\n"
" ・ 支払済会員:会員金額を支払済"
#. module: membership
#: model:process.transition.action,name:membership.process_transition_action_create0
msgid "Create"
msgstr ""
msgstr "作成"
#. module: membership
#: view:product.product:0
msgid "Membership products"
msgstr ""
msgstr "会員製品"
#. module: membership
#: model:ir.model,name:membership.model_membership_membership_line
msgid "Member line"
msgstr ""
msgstr "会員行"
#. module: membership
#: help:report.membership,date_from:0
#: field:res.partner,membership_start:0
msgid "Start membership date"
msgstr ""
msgstr "会員開始日"
#. module: membership
#: view:report.membership:0
msgid "Events created in current month"
msgstr ""
msgstr "今月、作成したイベント"
#. module: membership
#: view:report.membership:0
msgid "This will display waiting, invoiced and total pending columns"
msgstr ""
msgstr "これは待機中、請求済の合計保留中列を表示します。"
#. module: membership
#: code:addons/membership/membership.py:410
#: code:addons/membership/membership.py:413
#, python-format
msgid "Error !"
msgstr ""
msgstr "エラー"
#. module: membership
#: model:process.node,name:membership.process_node_paidmember0
msgid "Paid member"
msgstr ""
msgstr "支払番号"
#. module: membership
#: view:report.membership:0
msgid " Month-1 "
msgstr ""
msgstr " 月-1 "
#. module: membership
#: view:report.membership:0
msgid "Events created in last month"
msgstr ""
msgstr "先月、作成したイベント"
#. module: membership
#: field:report.membership,num_waiting:0
msgid "# Waiting"
msgstr ""
msgstr "待機数"
#. module: membership
#: view:report.membership:0
msgid "Events created in current year"
msgstr ""
msgstr "今年度に作成したイベント"
#. module: membership
#: model:ir.actions.act_window,name:membership.action_membership_members
#: model:ir.ui.menu,name:membership.menu_members
#: view:res.partner:0
msgid "Members"
msgstr ""
msgstr "会員"
#. module: membership
#: view:res.partner:0
msgid "Invoiced/Paid/Free"
msgstr ""
msgstr "請求済 / 支払済 / 無料"
#. module: membership
#: model:process.node,note:membership.process_node_invoicedmember0
msgid "Open invoice."
msgstr ""
msgstr "請求書を開く"
#. module: membership
#: selection:report.membership,month:0
msgid "July"
msgstr ""
msgstr "7月"
#. module: membership
#: model:product.template,name:membership.membership_0_product_template
msgid "Golden Membership"
msgstr ""
msgstr "ゴールド会員"
#. module: membership
#: help:res.partner,associate_member:0
msgid ""
"A member with whom you want to associate your membership.It will consider "
"the membership state of the associated member."
msgstr ""
msgstr "あなたが関連付けたい会員。それは会員の関係性の会員状態を考慮します。"
#. module: membership
#: field:membership.membership_line,membership_id:0
#: view:report.membership:0
#: field:report.membership,membership_id:0
msgid "Membership Product"
msgstr ""
msgstr "会員の製品"
#. module: membership
#: model:process.transition,note:membership.process_transition_producttomember0
msgid "Define product for membership."
msgstr ""
msgstr "会員のための製品を定義して下さい。"
#. module: membership
#: model:process.transition,note:membership.process_transition_invoicetoassociate0
msgid "Invoiced member may be Associated member."
msgstr ""
msgstr "請求済会員は会員と関係付けることができます。"
#. module: membership
#: view:membership.invoice:0
msgid "Join"
msgstr ""
msgstr "参加"
#. module: membership
#: help:product.product,membership_date_to:0
#: help:res.partner,membership_stop:0
msgid "Date until which membership remains active."
msgstr ""
msgstr "会員の有効期限となる日付です。"
#. module: membership
#: field:res.partner,membership_cancel:0
msgid "Cancel membership date"
msgstr ""
msgstr "会員キャンセル日"
#. module: membership
#: field:membership.membership_line,date:0
msgid "Join Date"
msgstr ""
msgstr "参加日"
#. module: membership
#: help:res.partner,free_member:0
msgid "Select if you want to give membership free of cost."
msgstr ""
msgstr "無料で与えたい会員を選択して下さい。"
#. module: membership
#: model:process.node,name:membership.process_node_setassociation0
msgid "Set association"
msgstr ""
msgstr "関連を設定"
#. module: membership
#: view:res.partner:0
msgid " Membership State"
msgstr ""
msgstr " 会員状態"
#. module: membership
#: view:res.partner:0
msgid "Memberships"
msgstr ""
msgstr "会員"
#. module: membership
#: model:process.node,note:membership.process_node_paidmember0
msgid "Membership invoice paid."
msgstr ""
msgstr "会員請求書は支払済です。"
#. module: membership
#: model:ir.model,name:membership.model_product_template
msgid "Product Template"
msgstr ""
msgstr "製品テンプレート"
#. module: membership
#: selection:report.membership,month:0
msgid "September"
msgstr ""
msgstr "9月"
#. module: membership
#: selection:report.membership,month:0
msgid "December"
msgstr ""
msgstr "12月"
#. module: membership
#: model:ir.model,name:membership.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
msgstr "請求書行"
#. module: membership
#: help:membership.membership_line,state:0
@ -442,138 +449,145 @@ msgid ""
" -Paid Member: A member who has paid the membership "
"amount."
msgstr ""
"会員の状態を次のように表します。\n"
" ・ 非会員:どの会員にも申し込んでいない\n"
" ・ キャンセル会員:会員をキャンセルした\n"
" ・ 旧会員:会員の有効期限切れ\n"
" ・ 待機会員:会員に申込を行い、請求書が作成される予定\n"
" ・ 請求済会員:請求書を作成済\n"
" ・ 支払済会員:会員金額を支払済"
#. module: membership
#: view:report.membership:0
#: field:report.membership,month:0
msgid "Month"
msgstr ""
msgstr ""
#. module: membership
#: view:product.product:0
msgid "Group by..."
msgstr ""
msgstr "グル―化…"
#. module: membership
#: code:addons/membership/membership.py:411
#, python-format
msgid "Partner is a free Member."
msgstr ""
msgstr "パートナは無料会員です。"
#. module: membership
#: model:product.pricelist,name:membership.list1m
msgid "Member Sale Pricelist"
msgstr ""
msgstr "会員販売価格表"
#. module: membership
#: field:report.membership,associate_member_id:0
#: view:res.partner:0
msgid "Associate Member"
msgstr ""
msgstr "関連会員"
#. module: membership
#: help:product.product,membership_date_from:0
#: help:res.partner,membership_start:0
msgid "Date from which membership becomes active."
msgstr ""
msgstr "会員として有効になる日付です。"
#. module: membership
#: view:report.membership:0
msgid "Associated Partner"
msgstr ""
msgstr "関連パートナ"
#. module: membership
#: model:ir.model,name:membership.model_membership_invoice
#: view:membership.invoice:0
msgid "Membership Invoice"
msgstr ""
msgstr "会員請求書"
#. module: membership
#: view:report.membership:0
#: field:report.membership,user_id:0
#: view:res.partner:0
msgid "Salesman"
msgstr ""
msgstr "販売員"
#. module: membership
#: model:process.node,note:membership.process_node_membershipproduct0
msgid "Define membership product."
msgstr ""
msgstr "会員製品を定義して下さい。"
#. module: membership
#: view:product.product:0
msgid "Category"
msgstr ""
msgstr "分類"
#. module: membership
#: selection:membership.membership_line,state:0
#: selection:report.membership,membership_state:0
#: selection:res.partner,membership_state:0
msgid "Free Member"
msgstr ""
msgstr "無料会員"
#. module: membership
#: model:product.pricelist.version,name:membership.ver1m
msgid "Member Sale Pricelist Version"
msgstr ""
msgstr "会員販売価格表バージョン"
#. module: membership
#: constraint:product.template:0
msgid ""
"Error: The default UOM and the purchase UOM must be in the same category."
msgstr ""
msgstr "エラー:デフォルトの単位と仕入単位は同じ分類でなければいけません。"
#. module: membership
#: view:report.membership:0
msgid "Forecast"
msgstr ""
msgstr "予測"
#. module: membership
#: field:report.membership,partner_id:0
msgid "Member"
msgstr ""
msgstr "会員"
#. module: membership
#: view:product.product:0
msgid "Date From"
msgstr ""
msgstr "開始日"
#. module: membership
#: model:process.node,name:membership.process_node_associatedmember0
msgid "Associated member"
msgstr ""
msgstr "関連会員"
#. module: membership
#: view:product.product:0
msgid "Accounting Info"
msgstr ""
msgstr "会計情報"
#. module: membership
#: help:report.membership,date_to:0
msgid "End membership date"
msgstr ""
msgstr "会員終了日"
#. module: membership
#: view:res.partner:0
msgid "Customers"
msgstr ""
msgstr "顧客"
#. module: membership
#: selection:report.membership,month:0
msgid "August"
msgstr ""
msgstr "8月"
#. module: membership
#: model:ir.actions.act_window,name:membership.action_membership_products
#: model:ir.ui.menu,name:membership.menu_membership_products
#: view:product.product:0
msgid "Membership Products"
msgstr ""
msgstr "会員製品"
#. module: membership
#: selection:report.membership,month:0
msgid "June"
msgstr ""
msgstr "6月"
#. module: membership
#: model:ir.ui.menu,name:membership.menu_membership
@ -584,167 +598,167 @@ msgstr ""
#: view:res.partner:0
#: field:res.partner,member_lines:0
msgid "Membership"
msgstr ""
msgstr "会員"
#. module: membership
#: selection:membership.membership_line,state:0
#: selection:report.membership,membership_state:0
#: selection:res.partner,membership_state:0
msgid "Invoiced Member"
msgstr ""
msgstr "請求済会員"
#. module: membership
#: help:membership.membership_line,date:0
msgid "Date on which member has joined the membership"
msgstr ""
msgstr "会員となった日付"
#. module: membership
#: selection:membership.membership_line,state:0
#: selection:report.membership,membership_state:0
#: selection:res.partner,membership_state:0
msgid "Waiting Member"
msgstr ""
msgstr "待機会員"
#. module: membership
#: model:process.transition,name:membership.process_transition_associationpartner0
msgid "Association Partner"
msgstr ""
msgstr "関連パートナ"
#. module: membership
#: field:report.membership,date_from:0
#: view:res.partner:0
msgid "Start Date"
msgstr ""
msgstr "開始日"
#. module: membership
#: selection:report.membership,month:0
msgid "November"
msgstr ""
msgstr "11月"
#. module: membership
#: help:product.product,membership:0
msgid "Select if a product is a membership product."
msgstr ""
msgstr "製品が会員製品の時に選択して下さい。"
#. module: membership
#: field:membership.membership_line,state:0
msgid "Membership State"
msgstr ""
msgstr "会員状態"
#. module: membership
#: selection:report.membership,month:0
msgid "October"
msgstr ""
msgstr "10月"
#. module: membership
#: view:product.product:0
msgid "Sale Description"
msgstr ""
msgstr "販売説明"
#. module: membership
#: selection:report.membership,month:0
msgid "January"
msgstr ""
msgstr "1月"
#. module: membership
#: view:res.partner:0
msgid "Membership Partners"
msgstr ""
msgstr "会員パートナ"
#. module: membership
#: view:product.product:0
msgid "Membership Fee"
msgstr ""
msgstr "会員料金"
#. module: membership
#: field:res.partner,membership_amount:0
msgid "Membership amount"
msgstr ""
msgstr "会員金額"
#. module: membership
#: help:res.partner,membership_amount:0
msgid "The price negotiated by the partner"
msgstr ""
msgstr "パートナ別交渉価格"
#. module: membership
#: sql_constraint:account.invoice:0
msgid "Invoice Number must be unique per Company!"
msgstr ""
msgstr "請求書番号は会社ごとに固有である必要があります。"
#. module: membership
#: view:res.partner:0
msgid "None/Canceled/Old/Waiting"
msgstr ""
msgstr "非 / キャンセル / 旧 / 待機"
#. module: membership
#: selection:membership.membership_line,state:0
#: selection:report.membership,membership_state:0
#: selection:res.partner,membership_state:0
msgid "Old Member"
msgstr ""
msgstr "旧会員"
#. module: membership
#: field:membership.membership_line,date_to:0
msgid "To"
msgstr ""
msgstr "終了"
#. module: membership
#: view:report.membership:0
#: field:report.membership,membership_state:0
#: field:res.partner,membership_state:0
msgid "Current Membership State"
msgstr ""
msgstr "現在の会員状態"
#. module: membership
#: view:product.product:0
msgid "General"
msgstr ""
msgstr "一般"
#. module: membership
#: model:process.transition,note:membership.process_transition_waitingtoinvoice0
msgid "Draft invoice is now open."
msgstr ""
msgstr "ドラフト請求書が今、開かれました。"
#. module: membership
#: view:product.product:0
msgid "Inactive"
msgstr ""
msgstr "非アクティブ"
#. module: membership
#: model:ir.model,name:membership.model_account_invoice
#: field:membership.membership_line,account_invoice_id:0
msgid "Invoice"
msgstr ""
msgstr "請求書"
#. module: membership
#: view:membership.invoice:0
msgid "Close"
msgstr ""
msgstr "閉じる"
#. module: membership
#: view:res.partner:0
msgid "All non Members"
msgstr ""
msgstr "全非会員"
#. module: membership
#: view:product.product:0
msgid "Information"
msgstr ""
msgstr "情報"
#. module: membership
#: field:membership.membership_line,account_invoice_line:0
msgid "Account Invoice line"
msgstr ""
msgstr "アカウント請求書行"
#. module: membership
#: view:product.product:0
msgid "Categorization"
msgstr ""
msgstr "分類化"
#. module: membership
#: model:process.node,note:membership.process_node_waitingmember0
msgid "Draft invoice for membership."
msgstr ""
msgstr "会員のためのドラフト請求書"
#. module: membership
#: field:membership.invoice,member_price:0
@ -752,123 +766,123 @@ msgstr ""
#: model:product.price.type,name:membership.product_price_type_memberprice
#: field:product.template,member_price:0
msgid "Member Price"
msgstr ""
msgstr "会員価格"
#. module: membership
#: view:product.product:0
msgid "Purchase Description"
msgstr ""
msgstr "仕入説明"
#. module: membership
#: model:ir.model,name:membership.model_product_product
msgid "Product"
msgstr ""
msgstr "製品"
#. module: membership
#: view:product.product:0
msgid "Description"
msgstr ""
msgstr "説明"
#. module: membership
#: field:res.partner,free_member:0
msgid "Free member"
msgstr ""
msgstr "無料会員"
#. module: membership
#: selection:report.membership,month:0
msgid "May"
msgstr ""
msgstr "5月"
#. module: membership
#: model:product.template,name:membership.membership_1_product_template
msgid "Silver Membership"
msgstr ""
msgstr "シルバー会員"
#. module: membership
#: view:product.product:0
msgid "Sale Taxes"
msgstr ""
msgstr "消費税"
#. module: membership
#: field:report.membership,date_to:0
#: view:res.partner:0
msgid "End Date"
msgstr ""
msgstr "終了日"
#. module: membership
#: selection:report.membership,month:0
msgid "February"
msgstr ""
msgstr "2月"
#. module: membership
#: model:process.node,name:membership.process_node_invoicedmember0
msgid "Invoiced member"
msgstr ""
msgstr "請求済会員"
#. module: membership
#: selection:report.membership,month:0
msgid "April"
msgstr ""
msgstr "4月"
#. module: membership
#: view:res.partner:0
msgid "Starting Date Of Membership"
msgstr ""
msgstr "会員の開始日"
#. module: membership
#: help:res.partner,membership_cancel:0
msgid "Date on which membership has been cancelled"
msgstr ""
msgstr "会員をキャンセルした日付"
#. module: membership
#: field:membership.membership_line,date_cancel:0
msgid "Cancel date"
msgstr ""
msgstr "キャンセル日"
#. module: membership
#: model:process.node,name:membership.process_node_waitingmember0
msgid "Waiting member"
msgstr ""
msgstr "待機会員"
#. module: membership
#: model:ir.actions.act_window,name:membership.action_membership_invoice_view
msgid "Invoice Membership"
msgstr ""
msgstr "請求会員"
#. module: membership
#: model:process.node,name:membership.process_node_membershipproduct0
msgid "Membership product"
msgstr ""
msgstr "会員製粉"
#. module: membership
#: help:membership.membership_line,member_price:0
msgid "Amount for the membership"
msgstr ""
msgstr "会員金額"
#. module: membership
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
msgstr "エラー。再帰的な関係となる会員を作ることはできません。"
#. module: membership
#: selection:membership.membership_line,state:0
#: selection:report.membership,membership_state:0
#: selection:res.partner,membership_state:0
msgid "Cancelled Member"
msgstr ""
msgstr "キャンセル済会員"
#. module: membership
#: constraint:product.product:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "エラー:無効な商品識別番号です。"
#. module: membership
#: view:report.membership:0
#: field:report.membership,year:0
msgid "Year"
msgstr ""
msgstr ""
#. module: membership
#: view:report.membership:0
msgid "Revenue Done"
msgstr ""
msgstr "売上完了"

2272
addons/mrp/i18n/ja.po Normal file

File diff suppressed because it is too large Load Diff

2231
addons/mrp/i18n/lv.po Normal file

File diff suppressed because it is too large Load Diff

64
addons/mrp_jit/i18n/ja.po Normal file
View File

@ -0,0 +1,64 @@
# Japanese translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
"PO-Revision-Date: 2012-05-30 23:20+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-31 04:54+0000\n"
"X-Generator: Launchpad (build 15322)\n"
#. module: mrp_jit
#: model:ir.module.module,shortdesc:mrp_jit.module_meta_information
msgid "MRP JIT"
msgstr "MRPジャストインタイム"
#. module: mrp_jit
#: model:ir.module.module,description:mrp_jit.module_meta_information
msgid ""
"\n"
" This module allows Just In Time computation of procurement orders.\n"
"\n"
" If you install this module, you will not have to run the regular "
"procurement \n"
" scheduler anymore (but you still need to run the minimum order point "
"rule \n"
" scheduler, or for example let it run daily.)\n"
" All procurement orders will be processed immediately, which could in "
"some\n"
" cases entail a small performance impact.\n"
"\n"
" It may also increase your stock size because products are reserved as "
"soon\n"
" as possible and the scheduler time range is not taken into account "
"anymore. \n"
" In that case, you can not use priorities any more on the different "
"picking.\n"
" \n"
" \n"
" "
msgstr ""
"\n"
" このモジュールは調達オーダーのジャストインタイム計算を行います。\n"
"\n"
" このモジュールをインストールしたなら、もう定期的な調達スケジューラを実行させる必要は \n"
" ありません(しかし、まだ最小発注点ルールスケジューラを実行するか、または、例えば、\n"
" それを毎日実行させる必要があります)。\n"
" 全ての調達オーダーは即座に実行されますが、幾つかのケースにおいてはパフォーマンス\n"
" に多少影響するかもしれません。\n"
"\n"
" 製品は可能な限り早く予約され、もはやスケジュールI時間の範囲は考慮されないので、\n"
" 在庫サイズは増えることになるかも知れません。\n"
" そのケースには異なる集荷による優先度をもはや使うことはできません。\n"
" \n"
" \n"
" "

View File

@ -0,0 +1,834 @@
# Japanese translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-05-31 04:37+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-31 04:54+0000\n"
"X-Generator: Launchpad (build 15322)\n"
#. module: mrp_operations
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_action_form
#: model:ir.ui.menu,name:mrp_operations.menu_mrp_production_wc_action_planning
#: model:ir.ui.menu,name:mrp_operations.menu_mrp_production_wc_order
#: view:mrp.production.workcenter.line:0
#: view:mrp.workorder:0
msgid "Work Orders"
msgstr "作業オーダー"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:489
#, python-format
msgid "Operation is already finished!"
msgstr "操作は既に終了しています。"
#. module: mrp_operations
#: model:process.node,note:mrp_operations.process_node_canceloperation0
msgid "Cancel the operation."
msgstr "操作のキャンセル"
#. module: mrp_operations
#: model:ir.model,name:mrp_operations.model_mrp_operations_operation_code
msgid "mrp_operations.operation.code"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
#: view:mrp.workorder:0
msgid "Group By..."
msgstr "グループ化…"
#. module: mrp_operations
#: model:process.node,note:mrp_operations.process_node_workorder0
msgid "Information from the routing definition."
msgstr "経路定義からの情報"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "March"
msgstr "3月"
#. module: mrp_operations
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_resource_planning
#: model:ir.ui.menu,name:mrp_operations.menu_mrp_production_wc_resource_planning
msgid "Work Centers"
msgstr "作業センタ"
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
#: selection:mrp_operations.operation.code,start_stop:0
msgid "Resume"
msgstr "再開"
#. module: mrp_operations
#: report:mrp.code.barcode:0
msgid "("
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Product to Produce"
msgstr "生産製品"
#. module: mrp_operations
#: view:mrp_operations.operation:0
msgid "Production Operation"
msgstr "製造操作"
#. module: mrp_operations
#: view:mrp.production:0
msgid "Set to Draft"
msgstr "ドラフトに設定"
#. module: mrp_operations
#: field:mrp.production,allow_reorder:0
msgid "Free Serialisation"
msgstr "自由な直列化"
#. module: mrp_operations
#: model:ir.model,name:mrp_operations.model_mrp_production
msgid "Manufacturing Order"
msgstr "製造オーダー"
#. module: mrp_operations
#: model:process.process,name:mrp_operations.process_process_mrpoperationprocess0
msgid "Mrp Operations"
msgstr "MRP操作"
#. module: mrp_operations
#: view:mrp.workorder:0
#: field:mrp.workorder,day:0
msgid "Day"
msgstr "日"
#. module: mrp_operations
#: view:mrp.production:0
msgid "Cancel Order"
msgstr "オーダーのキャンセル"
#. module: mrp_operations
#: model:process.node,name:mrp_operations.process_node_productionorder0
msgid "Production Order"
msgstr ""
#. module: mrp_operations
#: selection:mrp.production.workcenter.line,production_state:0
msgid "Picking Exception"
msgstr "例外の集荷"
#. module: mrp_operations
#: model:process.transition,name:mrp_operations.process_transition_productionstart0
msgid "Creation of the work order"
msgstr "作業オーダーの作成"
#. module: mrp_operations
#: help:mrp.production.workcenter.line,state:0
msgid ""
"* When a work order is created it is set in 'Draft' state.\n"
"* When user sets work order in start mode that time it will be set in 'In "
"Progress' state.\n"
"* When work order is in running mode, during that time if user wants to stop "
"or to make changes in order then can set in 'Pending' state.\n"
"* When the user cancels the work order it will be set in 'Canceled' state.\n"
"* When order is completely processed that time it is set in 'Finished' state."
msgstr ""
"・ 作業オーダーが作成されると、それはドラフト状態に設定されます。\n"
"・ ユーザが作業オーダーに開始モードを設定すると、それは進行中に設定されます。\n"
"・ 作業オーダーが実行中モードになった時にユーザが停止やオーダーを変更した場合、保留中状態に設定されます。\n"
"・ ユーザが作業オーダーをキャンセルすると、キャンセル済状態に設定されます。\n"
"・ オーダーが完全に処理されると、完了状態に設定されます。"
#. module: mrp_operations
#: model:process.transition,note:mrp_operations.process_transition_productionstart0
msgid "The work orders are created on the basis of the production order."
msgstr "作業オーダーは生産オーダーを元にして作成されます。"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:134
#: code:addons/mrp_operations/mrp_operations.py:470
#: code:addons/mrp_operations/mrp_operations.py:474
#: code:addons/mrp_operations/mrp_operations.py:486
#: code:addons/mrp_operations/mrp_operations.py:489
#, python-format
msgid "Error!"
msgstr "エラー"
#. module: mrp_operations
#: selection:mrp.production.workcenter.line,state:0
#: selection:mrp.workorder,state:0
#: selection:mrp_operations.operation.code,start_stop:0
msgid "Cancelled"
msgstr "キャンセル済"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:486
#, python-format
msgid "There is no Operation to be cancelled!"
msgstr "キャンセルされる操作がありません。"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:482
#, python-format
msgid "Operation is Already Cancelled!"
msgstr "操作は既にキャンセル済です。"
#. module: mrp_operations
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_operation_action
#: view:mrp.production.workcenter.line:0
msgid "Operations"
msgstr "操作"
#. module: mrp_operations
#: model:ir.model,name:mrp_operations.model_stock_move
msgid "Stock Move"
msgstr "在庫移動"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:479
#, python-format
msgid ""
"In order to Finish the operation, it must be in the Start or Resume state!"
msgstr "操作を完了するには、開始か再開状態でなければなりません。"
#. module: mrp_operations
#: field:mrp.workorder,nbr:0
msgid "# of Lines"
msgstr "行数"
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
msgid "Finish Order"
msgstr "オーダーの完了"
#. module: mrp_operations
#: field:mrp.production.workcenter.line,date_finished:0
#: field:mrp.production.workcenter.line,date_planned_end:0
#: field:mrp_operations.operation,date_finished:0
msgid "End Date"
msgstr "終了日"
#. module: mrp_operations
#: selection:mrp.production.workcenter.line,production_state:0
msgid "In Production"
msgstr "生産中"
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
#: field:mrp.production.workcenter.line,state:0
#: view:mrp.workorder:0
#: field:mrp.workorder,state:0
msgid "State"
msgstr "状態"
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
#: selection:mrp.production.workcenter.line,production_state:0
#: selection:mrp.production.workcenter.line,state:0
#: selection:mrp.workorder,state:0
msgid "Draft"
msgstr "ドラフト"
#. module: mrp_operations
#: model:ir.actions.act_window,name:mrp_operations.action_report_mrp_workorder
#: model:ir.model,name:mrp_operations.model_mrp_production_workcenter_line
msgid "Work Order"
msgstr "作業オーダー"
#. module: mrp_operations
#: model:process.transition,note:mrp_operations.process_transition_workstartoperation0
msgid ""
"There is 1 work order per work center. The information about the number of "
"cycles or the cycle time."
msgstr "作業センタごとに1つの作業オーダーがあります。サイクルの数あるいはサイクル時間についての情報です。"
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Month -1"
msgstr "月 -1"
#. module: mrp_operations
#: field:mrp.production.workcenter.line,uom:0
msgid "UOM"
msgstr "単位"
#. module: mrp_operations
#: constraint:stock.move:0
msgid "You can not move products from or to a location of the type view."
msgstr "タイプビューの場所から、あるいは場所へは製品を動かすことはできません。"
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Planned Date"
msgstr "予定日"
#. module: mrp_operations
#: view:mrp.workorder:0
#: field:mrp.workorder,product_qty:0
msgid "Product Qty"
msgstr "製品数量"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:134
#, python-format
msgid "Manufacturing order cannot start in state \"%s\"!"
msgstr "製造オーダーは %s 状態であるため開始できません。"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "July"
msgstr "7月"
#. module: mrp_operations
#: field:mrp_operations.operation.code,name:0
msgid "Operation Name"
msgstr "操作名"
#. module: mrp_operations
#: field:mrp_operations.operation.code,start_stop:0
msgid "Status"
msgstr "状態"
#. module: mrp_operations
#: model:ir.actions.act_window,help:mrp_operations.mrp_production_wc_action_planning
msgid ""
"To manufacture or assemble products, and use raw materials and finished "
"products you must also handle manufacturing operations. Manufacturing "
"operations are often called Work Orders. The various operations will have "
"different impacts on the costs of manufacturing and planning depending on "
"the available workload."
msgstr ""
"製品を製造または組み立て、原材料を使って製品を完成させるために、製造操作を処理しなくてはなりません。製造操作はよく、作業オーダーと呼ばれます。多種な操作は"
"製造と使用可能な作業負荷に応じた計画のコストに異なる影響を持ちます。"
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Planned Year"
msgstr "計画年"
#. module: mrp_operations
#: field:mrp_operations.operation,order_date:0
msgid "Order Date"
msgstr "オーダー日"
#. module: mrp_operations
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_draft_action
msgid "Future Work Orders"
msgstr "将来の作業オーダー"
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Work orders during last month"
msgstr "先月の作業オーダー"
#. module: mrp_operations
#: help:mrp.production.workcenter.line,delay:0
msgid "The elapsed time between operation start and stop in this Work Center"
msgstr "この作業センタでの操作の開始と終了の間の経過時間"
#. module: mrp_operations
#: model:process.node,name:mrp_operations.process_node_canceloperation0
msgid "Operation Cancelled"
msgstr "操作はキャンセルされました。"
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
msgid "Pause Work Order"
msgstr "作業オーダーの中断"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "September"
msgstr "9月"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "December"
msgstr "12月"
#. module: mrp_operations
#: view:mrp.workorder:0
#: field:mrp.workorder,month:0
msgid "Month"
msgstr "月"
#. module: mrp_operations
#: selection:mrp.production.workcenter.line,production_state:0
msgid "Canceled"
msgstr "キャンセル済"
#. module: mrp_operations
#: model:ir.model,name:mrp_operations.model_mrp_operations_operation
msgid "mrp_operations.operation"
msgstr ""
#. module: mrp_operations
#: model:ir.model,name:mrp_operations.model_mrp_workorder
msgid "Work Order Report"
msgstr "作業オーダーレポート"
#. module: mrp_operations
#: constraint:mrp.production:0
msgid "Order quantity cannot be negative or zero!"
msgstr "オーダー数量は負または0にはできません。"
#. module: mrp_operations
#: field:mrp.production.workcenter.line,date_start:0
#: field:mrp.production.workcenter.line,date_start_date:0
#: field:mrp_operations.operation,date_start:0
msgid "Start Date"
msgstr "開始日"
#. module: mrp_operations
#: selection:mrp.production.workcenter.line,production_state:0
msgid "Waiting Goods"
msgstr ""
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Work orders made during current year"
msgstr "該当年中になされた作業オーダー"
#. module: mrp_operations
#: selection:mrp.workorder,state:0
#: selection:mrp_operations.operation.code,start_stop:0
msgid "Pause"
msgstr "一時停止"
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
#: selection:mrp.production.workcenter.line,state:0
#: selection:mrp.workorder,state:0
msgid "In Progress"
msgstr "進行中"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:470
#, python-format
msgid ""
"In order to Pause the operation, it must be in the Start or Resume state!"
msgstr "操作を一時停止するには、開始または再開状態でなければなりません。"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:474
#, python-format
msgid "In order to Resume the operation, it must be in the Pause state!"
msgstr "操作を再開するには、一時停止状態でなければなりません。"
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
#: selection:mrp_operations.operation.code,start_stop:0
msgid "Start"
msgstr "開始"
#. module: mrp_operations
#: view:mrp_operations.operation:0
msgid "Calendar View"
msgstr "カレンダービュー"
#. module: mrp_operations
#: model:process.transition,note:mrp_operations.process_transition_startcanceloperation0
msgid ""
"When the operation needs to be cancelled, you can do it in the work order "
"form."
msgstr "操作をキャンセルする必要がある時、作業オーダーフォームの中で行うことができます。"
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
msgid "Set Draft"
msgstr "ドラフトにセット"
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
#: selection:mrp.production.workcenter.line,state:0
msgid "Pending"
msgstr "保留中"
#. module: mrp_operations
#: view:mrp_operations.operation.code:0
msgid "Production Operation Code"
msgstr "生産操作コード"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:466
#, python-format
msgid ""
"Operation has already started !Youcan either Pause/Finish/Cancel the "
"operation"
msgstr "操作は既に開始されました。一時停止 / 完了 / キャンセル操作ができます。"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "August"
msgstr "8月"
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Started"
msgstr "開始済"
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Production started late"
msgstr "生産が遅れて開始"
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Planned Day"
msgstr "計画日"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "June"
msgstr "6月"
#. module: mrp_operations
#: view:mrp.workorder:0
#: field:mrp.workorder,total_cycles:0
msgid "Total Cycles"
msgstr "合計サイクル"
#. module: mrp_operations
#: selection:mrp.production.workcenter.line,production_state:0
msgid "Ready to Produce"
msgstr "生産準備完了"
#. module: mrp_operations
#: field:stock.move,move_dest_id_lines:0
msgid "Children Moves"
msgstr "子の移動"
#. module: mrp_operations
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_action_planning
msgid "Work Orders Planning"
msgstr "作業オーダー計画"
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
#: field:mrp.workorder,date:0
msgid "Date"
msgstr "日付"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "November"
msgstr "11月"
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Search"
msgstr "検索"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "October"
msgstr "10月"
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "January"
msgstr "1月"
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
msgid "Resume Work Order"
msgstr "作業オーダーの再開"
#. module: mrp_operations
#: model:process.node,note:mrp_operations.process_node_doneoperation0
msgid "Finish the operation."
msgstr "操作の終了"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:459
#, python-format
msgid "Operation is not started yet !"
msgstr "操作はまだ開始されていません。"
#. module: mrp_operations
#: model:process.node,note:mrp_operations.process_node_productionorder0
msgid "Information from the production order."
msgstr "生産オーダーからの情報"
#. module: mrp_operations
#: sql_constraint:mrp.production:0
msgid "Reference must be unique per Company!"
msgstr "参照は会社内で固有でなければいけません"
#. module: mrp_operations
#: code:addons/mrp_operations/mrp_operations.py:459
#: code:addons/mrp_operations/mrp_operations.py:466
#: code:addons/mrp_operations/mrp_operations.py:479
#: code:addons/mrp_operations/mrp_operations.py:482
#, python-format
msgid "Sorry!"
msgstr "残念です。"
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Current"
msgstr "現在"
#. module: mrp_operations
#: field:mrp_operations.operation,code_id:0
#: field:mrp_operations.operation.code,code:0
msgid "Code"
msgstr "コード"
#. module: mrp_operations
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_confirm_action
msgid "Confirmed Work Orders"
msgstr "確認済作業オーダー"
#. module: mrp_operations
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_code_action
msgid "Operation Codes"
msgstr "操作コード"
#. module: mrp_operations
#: field:mrp.production.workcenter.line,qty:0
msgid "Qty"
msgstr ""
#. module: mrp_operations
#: model:process.node,name:mrp_operations.process_node_doneoperation0
msgid "Operation Done"
msgstr ""
#. module: mrp_operations
#: selection:mrp.production.workcenter.line,production_state:0
#: view:mrp.workorder:0
#: selection:mrp_operations.operation.code,start_stop:0
msgid "Done"
msgstr ""
#. module: mrp_operations
#: model:ir.actions.report.xml,name:mrp_operations.report_code_barcode
msgid "Start/Stop Barcode"
msgstr ""
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
msgid "Cancel"
msgstr ""
#. module: mrp_operations
#: model:ir.actions.act_window,help:mrp_operations.mrp_production_wc_action_form
msgid ""
"Work Orders is the list of operations to be performed for each manufacturing "
"order. Once you start the first work order of a manufacturing order, the "
"manufacturing order is automatically marked as started. Once you finish the "
"latest operation of a manufacturing order, the MO is automatically done and "
"the related products are produced."
msgstr ""
#. module: mrp_operations
#: model:process.node,name:mrp_operations.process_node_startoperation0
msgid "Start Operation"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Information"
msgstr ""
#. module: mrp_operations
#: model:ir.actions.report.xml,name:mrp_operations.report_wc_barcode
msgid "Work Centers Barcode"
msgstr ""
#. module: mrp_operations
#: constraint:stock.move:0
msgid "You must assign a production lot for this product"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Late"
msgstr ""
#. module: mrp_operations
#: field:mrp.workorder,delay:0
msgid "Delay"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
#: view:mrp.workorder:0
#: field:mrp.workorder,production_id:0
#: field:mrp_operations.operation,production_id:0
msgid "Production"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Search Work Orders"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
#: view:mrp.workorder:0
#: field:mrp.workorder,workcenter_id:0
#: field:mrp_operations.operation,workcenter_id:0
#: model:process.node,name:mrp_operations.process_node_workorder0
msgid "Work Center"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Real"
msgstr ""
#. module: mrp_operations
#: field:mrp.production.workcenter.line,date_planned:0
msgid "Scheduled Date"
msgstr ""
#. module: mrp_operations
#: field:mrp.production.workcenter.line,product:0
#: view:mrp.workorder:0
#: field:mrp.workorder,product_id:0
msgid "Product"
msgstr ""
#. module: mrp_operations
#: view:mrp.workorder:0
#: field:mrp.workorder,total_hours:0
msgid "Total Hours"
msgstr ""
#. module: mrp_operations
#: help:mrp.production,allow_reorder:0
msgid ""
"Check this to be able to move independently all production orders, without "
"moving dependent ones."
msgstr ""
#. module: mrp_operations
#: report:mrp.code.barcode:0
msgid ")"
msgstr ""
#. module: mrp_operations
#: model:ir.ui.menu,name:mrp_operations.menu_report_mrp_workorders_tree
msgid "Work Order Analysis"
msgstr ""
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
#: selection:mrp.production.workcenter.line,state:0
#: selection:mrp.workorder,state:0
msgid "Finished"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Hours by Work Center"
msgstr ""
#. module: mrp_operations
#: field:mrp.production.workcenter.line,delay:0
msgid "Working Hours"
msgstr ""
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Planned Month"
msgstr ""
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "February"
msgstr ""
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "Work orders made during current month"
msgstr ""
#. module: mrp_operations
#: model:process.transition,name:mrp_operations.process_transition_startcanceloperation0
msgid "Operation cancelled"
msgstr ""
#. module: mrp_operations
#: model:process.node,note:mrp_operations.process_node_startoperation0
msgid "Start the operation."
msgstr ""
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "April"
msgstr ""
#. module: mrp_operations
#: model:process.transition,name:mrp_operations.process_transition_startdoneoperation0
msgid "Operation done"
msgstr ""
#. module: mrp_operations
#: view:mrp.workorder:0
msgid "#Line Orders"
msgstr ""
#. module: mrp_operations
#: view:mrp.production:0
#: view:mrp.production.workcenter.line:0
msgid "Start Working"
msgstr ""
#. module: mrp_operations
#: model:process.transition,note:mrp_operations.process_transition_startdoneoperation0
msgid ""
"When the operation is finished, the operator updates the system by finishing "
"the work order."
msgstr ""
#. module: mrp_operations
#: selection:mrp.workorder,month:0
msgid "May"
msgstr ""
#. module: mrp_operations
#: model:process.transition,name:mrp_operations.process_transition_workstartoperation0
msgid "Details of the work order"
msgstr ""
#. module: mrp_operations
#: field:mrp.production.workcenter.line,production_state:0
msgid "Production State"
msgstr ""
#. module: mrp_operations
#: view:mrp.workorder:0
#: field:mrp.workorder,year:0
msgid "Year"
msgstr ""
#. module: mrp_operations
#: view:mrp.production.workcenter.line:0
msgid "Duration"
msgstr ""
#. module: mrp_operations
#: constraint:stock.move:0
msgid "You try to assign a lot which is not from the same product"
msgstr ""

View File

@ -518,7 +518,7 @@ class product_product(osv.osv):
'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the product without removing it."),
'variants': fields.char('Variants', size=64),
'product_tmpl_id': fields.many2one('product.template', 'Product Template', required=True, ondelete="cascade"),
'ean13': fields.char('EAN13', size=13),
'ean13': fields.char('EAN13', size=13, help="The numbers encoded in EAN-13 bar codes are product identification numbers."),
'packaging' : fields.one2many('product.packaging', 'product_id', 'Logistical Units', help="Gives the different ways to package the same product. This has no impact on the picking order and is mainly used if you use the EDI module."),
'price_extra': fields.float('Variant Price Extra', digits_compute=dp.get_precision('Sale Price')),
'price_margin': fields.float('Variant Price Margin', digits_compute=dp.get_precision('Sale Price')),

View File

@ -78,7 +78,7 @@
<group colspan="1" col="2">
<separator string="Codes" colspan="2"/>
<field name="default_code"/>
<field name="ean13"/>
<field name="ean13" placeholder="5901234123457" />
</group>
<group colspan="1" col="2">
<separator string="Characteristics" colspan="2"/>
@ -163,9 +163,9 @@
<separator string="Description"/>
<field colspan="4" name="description" nolabel="1"/>
<separator string="Sale Description"/>
<field colspan="4" name="description_sale" nolabel="1"/>
<field colspan="4" name="description_sale" nolabel="1" placeholder="This note will be displayed on quotations..."/>
<separator string="Purchase Description"/>
<field colspan="4" name="description_purchase" nolabel="1"/>
<field colspan="4" name="description_purchase" nolabel="1" placeholder="This note will be displayed on requests for quotation..."/>
</page>
<page groups="product.group_stock_packaging" string="Packaging">
<field colspan="4" name="packaging" nolabel="1">

View File

@ -0,0 +1,952 @@
# Swedish translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-05-30 19:13+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Swedish <sv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-31 04:54+0000\n"
"X-Generator: Launchpad (build 15322)\n"
#. module: project_issue
#: view:project.issue.report:0
msgid "Previous Month"
msgstr ""
#. module: project_issue
#: field:project.issue.report,delay_open:0
msgid "Avg. Delay to Open"
msgstr ""
#. module: project_issue
#: view:project.issue:0 view:project.issue.report:0
msgid "Group By..."
msgstr ""
#. module: project_issue
#: field:project.issue,working_hours_open:0
msgid "Working Hours to Open the Issue"
msgstr ""
#. module: project_issue
#: constraint:project.project:0
msgid "Error! project start-date must be lower then project end-date."
msgstr ""
#. module: project_issue
#: field:project.issue,date_open:0
msgid "Opened"
msgstr ""
#. module: project_issue
#: field:project.issue.report,opening_date:0
msgid "Date of Opening"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "March"
msgstr ""
#. module: project_issue
#: field:project.issue,progress:0
msgid "Progress (%)"
msgstr ""
#. module: project_issue
#: code:addons/project_issue/project_issue.py:406
#, python-format
msgid "Warning !"
msgstr ""
#. module: project_issue
#: field:project.issue,company_id:0 view:project.issue.report:0
#: field:project.issue.report,company_id:0
msgid "Company"
msgstr ""
#. module: project_issue
#: field:project.issue,email_cc:0
msgid "Watchers Emails"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Today's features"
msgstr ""
#. module: project_issue
#: model:ir.model,name:project_issue.model_project_issue_version
msgid "project.issue.version"
msgstr ""
#. module: project_issue
#: field:project.issue,day_open:0
msgid "Days to Open"
msgstr ""
#. module: project_issue
#: code:addons/project_issue/project_issue.py:406
#, python-format
msgid ""
"You cannot escalate this issue.\n"
"The relevant Project has not configured the Escalation Project!"
msgstr ""
#. module: project_issue
#: constraint:project.project:0
msgid "Error! You cannot assign escalation to the same project!"
msgstr ""
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
msgid "Highest"
msgstr ""
#. module: project_issue
#: help:project.issue,inactivity_days:0
msgid "Difference in days between last action and current date"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0 field:project.issue.report,day:0
msgid "Day"
msgstr ""
#. module: project_issue
#: field:project.issue,days_since_creation:0
msgid "Days since creation date"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Add Internal Note"
msgstr ""
#. module: project_issue
#: field:project.issue,task_id:0 view:project.issue.report:0
#: field:project.issue.report,task_id:0
msgid "Task"
msgstr ""
#. module: project_issue
#: view:board.board:0
msgid "Issues By Stage"
msgstr ""
#. module: project_issue
#: field:project.issue,message_ids:0
msgid "Messages"
msgstr ""
#. module: project_issue
#: field:project.issue,inactivity_days:0
msgid "Days since last action"
msgstr ""
#. module: project_issue
#: model:ir.model,name:project_issue.model_project_project
#: view:project.issue:0 field:project.issue,project_id:0
#: view:project.issue.report:0 field:project.issue.report,project_id:0
msgid "Project"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.action_view_my_open_project_issue_tree
msgid "My Open Project issues"
msgstr ""
#. module: project_issue
#: selection:project.issue,state:0 selection:project.issue.report,state:0
msgid "Cancelled"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Change to Next Stage"
msgstr ""
#. module: project_issue
#: field:project.issue.report,date_closed:0
msgid "Date of Closing"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Issue Tracker Search"
msgstr ""
#. module: project_issue
#: field:project.issue,color:0
msgid "Color Index"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Issue / Partner"
msgstr ""
#. module: project_issue
#: field:project.issue.report,working_hours_open:0
msgid "Avg. Working Hours to Open"
msgstr ""
#. module: project_issue
#: field:project.issue,date_action_next:0
msgid "Next Action"
msgstr ""
#. module: project_issue
#: help:project.project,project_escalation_id:0
msgid ""
"If any issue is escalated from the current Project, it will be listed under "
"the project selected here."
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Extra Info"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,help:project_issue.action_project_issue_report
msgid ""
"This report on the project issues allows you to analyse the quality of your "
"support or after-sales services. You can track the issues per age. You can "
"analyse the time required to open or close an issue, the number of email to "
"exchange and the time spent on average by issues."
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Change Color"
msgstr ""
#. module: project_issue
#: code:addons/project_issue/project_issue.py:482
#, python-format
msgid " (copy)"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Responsible"
msgstr ""
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
msgid "Low"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Statistics"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Convert To Task"
msgstr ""
#. module: project_issue
#: model:crm.case.categ,name:project_issue.bug_categ
msgid "Maintenance"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.action_project_issue_report
#: model:ir.ui.menu,name:project_issue.menu_project_issue_report_tree
#: view:project.issue.report:0
msgid "Issues Analysis"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Next"
msgstr ""
#. module: project_issue
#: view:project.issue:0 field:project.issue,priority:0
#: view:project.issue.report:0 field:project.issue.report,priority:0
msgid "Priority"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Send New Email"
msgstr ""
#. module: project_issue
#: view:project.issue:0 field:project.issue,version_id:0
#: view:project.issue.report:0 field:project.issue.report,version_id:0
msgid "Version"
msgstr ""
#. module: project_issue
#: view:project.issue:0 selection:project.issue,state:0
#: view:project.issue.report:0
msgid "New"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.project_issue_categ_action
msgid "Issue Categories"
msgstr ""
#. module: project_issue
#: field:project.issue,email_from:0
msgid "Email"
msgstr ""
#. module: project_issue
#: field:project.issue,channel_id:0 field:project.issue.report,channel_id:0
msgid "Channel"
msgstr ""
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
msgid "Lowest"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Unassigned Issues"
msgstr ""
#. module: project_issue
#: field:project.issue,create_date:0 view:project.issue.report:0
#: field:project.issue.report,creation_date:0
msgid "Creation Date"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.project_issue_version_action
#: model:ir.ui.menu,name:project_issue.menu_project_issue_version_act
msgid "Versions"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "To Do Issues"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Reset to Draft"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Today"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.open_board_project_issue
#: model:ir.ui.menu,name:project_issue.menu_deshboard_project_issue
msgid "Project Issue Dashboard"
msgstr ""
#. module: project_issue
#: view:project.issue:0 selection:project.issue,state:0
#: view:project.issue.report:0
msgid "Done"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "July"
msgstr ""
#. module: project_issue
#: model:ir.ui.menu,name:project_issue.menu_project_issue_category_act
msgid "Categories"
msgstr ""
#. module: project_issue
#: view:project.issue:0 view:project.issue.report:0
#: field:project.issue.report,type_id:0
msgid "Stage"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "History Information"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.action_view_current_project_issue_tree
#: model:ir.actions.act_window,name:project_issue.action_view_pending_project_issue_tree
msgid "Project issues"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Communication & History"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0
msgid "My Open Project Issue"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.action_view_my_project_issue_tree
msgid "My Project Issues"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Contact"
msgstr ""
#. module: project_issue
#: view:project.issue:0 field:project.issue,partner_id:0
#: view:project.issue.report:0 field:project.issue.report,partner_id:0
msgid "Partner"
msgstr ""
#. module: project_issue
#: view:board.board:0
msgid "My Issues"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Change to Previous Stage"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,help:project_issue.project_issue_version_action
msgid ""
"You can use the issues tracker in OpenERP to handle bugs in the software "
"development project, to handle claims in after-sales services, etc. Define "
"here the different versions of your products on which you can work on issues."
msgstr ""
#. module: project_issue
#: code:addons/project_issue/project_issue.py:330
#, python-format
msgid "Tasks"
msgstr ""
#. module: project_issue
#: field:project.issue.report,nbr:0
msgid "# of Issues"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "September"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "December"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Issue Tracker Tree"
msgstr ""
#. module: project_issue
#: view:project.issue:0 view:project.issue.report:0
#: field:project.issue.report,month:0
msgid "Month"
msgstr ""
#. module: project_issue
#: model:ir.model,name:project_issue.model_project_issue_report
msgid "project.issue.report"
msgstr ""
#. module: project_issue
#: code:addons/project_issue/project_issue.py:408 view:project.issue:0
#, python-format
msgid "Escalate"
msgstr ""
#. module: project_issue
#: model:crm.case.categ,name:project_issue.feature_request_categ
msgid "Feature Requests"
msgstr ""
#. module: project_issue
#: field:project.issue,write_date:0
msgid "Update Date"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Open Features"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Previous"
msgstr ""
#. module: project_issue
#: view:project.issue:0 field:project.issue,categ_id:0
#: view:project.issue.report:0 field:project.issue.report,categ_id:0
msgid "Category"
msgstr ""
#. module: project_issue
#: field:project.issue,user_email:0
msgid "User Email"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0
msgid "#Number of Project Issues"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Reset to New"
msgstr ""
#. module: project_issue
#: help:project.issue,channel_id:0
msgid "Communication channel."
msgstr ""
#. module: project_issue
#: help:project.issue,email_cc:0
msgid ""
"These email addresses will be added to the CC field of all inbound and "
"outbound emails for this record before being sent. Separate multiple email "
"addresses with a comma"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,state:0
msgid "Draft"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Contact Information"
msgstr ""
#. module: project_issue
#: field:project.issue,date_closed:0 selection:project.issue.report,state:0
msgid "Closed"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Reply"
msgstr ""
#. module: project_issue
#: field:project.issue.report,delay_close:0
msgid "Avg. Delay to Close"
msgstr ""
#. module: project_issue
#: view:project.issue:0 selection:project.issue,state:0
#: view:project.issue.report:0 selection:project.issue.report,state:0
msgid "Pending"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Status"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0
msgid "#Project Issues"
msgstr ""
#. module: project_issue
#: view:board.board:0
msgid "Current Issues"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "August"
msgstr ""
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
msgid "Normal"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Global CC"
msgstr ""
#. module: project_issue
#: view:project.issue:0 view:project.issue.report:0
msgid "To Do"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "June"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "New Issues"
msgstr ""
#. module: project_issue
#: field:project.issue,day_close:0
msgid "Days to Close"
msgstr ""
#. module: project_issue
#: field:project.issue,active:0 field:project.issue.version,active:0
msgid "Active"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "November"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0
msgid "Search"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "October"
msgstr ""
#. module: project_issue
#: view:board.board:0
msgid "Issues Dashboard"
msgstr ""
#. module: project_issue
#: view:project.issue:0 field:project.issue,type_id:0
msgid "Stages"
msgstr ""
#. module: project_issue
#: help:project.issue,days_since_creation:0
msgid "Difference in days between creation date and current date"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "January"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Feature Tracker Tree"
msgstr ""
#. module: project_issue
#: help:project.issue,email_from:0
msgid "These people will receive email."
msgstr ""
#. module: project_issue
#: view:board.board:0
msgid "Issues By State"
msgstr ""
#. module: project_issue
#: view:project.issue:0 field:project.issue,date:0
msgid "Date"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "History"
msgstr ""
#. module: project_issue
#: field:project.issue,user_id:0 view:project.issue.report:0
#: field:project.issue.report,user_id:0
msgid "Assigned to"
msgstr ""
#. module: project_issue
#: field:project.project,reply_to:0
msgid "Reply-To Email Address"
msgstr ""
#. module: project_issue
#: field:project.issue,partner_address_id:0
msgid "Partner Contact"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Issue Tracker Form"
msgstr ""
#. module: project_issue
#: view:project.issue:0 field:project.issue,state:0
#: view:project.issue.report:0 field:project.issue.report,state:0
msgid "State"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "General"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Current Features"
msgstr ""
#. module: project_issue
#: view:project.issue.version:0
msgid "Issue Version"
msgstr ""
#. module: project_issue
#: field:project.issue.version,name:0
msgid "Version Number"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Cancel"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Close"
msgstr ""
#. module: project_issue
#: view:project.issue:0 selection:project.issue.report,state:0
msgid "Open"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.act_project_project_2_project_issue_all
#: model:ir.actions.act_window,name:project_issue.project_issue_categ_act0
#: model:ir.ui.menu,name:project_issue.menu_project_confi
#: model:ir.ui.menu,name:project_issue.menu_project_issue_track
#: view:project.issue:0
msgid "Issues"
msgstr ""
#. module: project_issue
#: selection:project.issue,state:0
msgid "In Progress"
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,name:project_issue.action_project_issue_graph_stage
#: model:ir.actions.act_window,name:project_issue.action_project_issue_graph_state
#: model:ir.model,name:project_issue.model_project_issue
#: view:project.issue.report:0
msgid "Project Issue"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Creation Month"
msgstr ""
#. module: project_issue
#: help:project.issue,progress:0
msgid "Computed as: Time Spent / Total Time."
msgstr ""
#. module: project_issue
#: model:ir.actions.act_window,help:project_issue.project_issue_categ_act0
msgid ""
"Issues such as system bugs, customer complaints, and material breakdowns are "
"collected here. You can define the stages assigned when solving the project "
"issue (analysis, development, done). With the mailgateway module, issues can "
"be integrated through an email address (example: support@mycompany.com)"
msgstr ""
#. module: project_issue
#: view:board.board:0 view:project.issue:0
msgid "Pending Issues"
msgstr ""
#. module: project_issue
#: field:project.issue,name:0
msgid "Issue"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Feature Tracker Search"
msgstr ""
#. module: project_issue
#: view:project.issue:0 field:project.issue,description:0
msgid "Description"
msgstr ""
#. module: project_issue
#: field:project.issue,section_id:0
msgid "Sales Team"
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "May"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0 field:project.issue.report,email:0
msgid "# Emails"
msgstr ""
#. module: project_issue
#: help:project.issue,state:0
msgid ""
"The state is set to 'Draft', when a case is created. "
" \n"
"If the case is in progress the state is set to 'Open'. "
" \n"
"When the case is over, the state is set to 'Done'. "
" \n"
"If the case needs to be reviewed then the state is set to 'Pending'."
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "February"
msgstr ""
#. module: project_issue
#: code:addons/project_issue/project_issue.py:70
#, python-format
msgid "Issue '%s' has been opened."
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Feature description"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "Edit"
msgstr ""
#. module: project_issue
#: field:project.project,project_escalation_id:0
msgid "Project Escalation"
msgstr ""
#. module: project_issue
#: help:project.issue,section_id:0
msgid ""
"Sales team to which Case belongs to. Define "
"Responsible user and Email account for mail gateway."
msgstr ""
#. module: project_issue
#: view:project.issue.report:0
msgid "Month-1"
msgstr ""
#. module: project_issue
#: code:addons/project_issue/project_issue.py:85
#, python-format
msgid "Issue '%s' has been closed."
msgstr ""
#. module: project_issue
#: selection:project.issue.report,month:0
msgid "April"
msgstr ""
#. module: project_issue
#: view:project.issue:0
msgid "References"
msgstr ""
#. module: project_issue
#: field:project.issue,working_hours_close:0
msgid "Working Hours to Close the Issue"
msgstr ""
#. module: project_issue
#: field:project.issue,id:0
msgid "ID"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0
msgid "Current Year"
msgstr ""
#. module: project_issue
#: code:addons/project_issue/project_issue.py:415
#, python-format
msgid "No Title"
msgstr ""
#. module: project_issue
#: help:project.issue.report,delay_close:0
#: help:project.issue.report,delay_open:0
msgid "Number of Days to close the project issue"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0 field:project.issue.report,section_id:0
msgid "Sale Team"
msgstr ""
#. module: project_issue
#: field:project.issue.report,working_hours_close:0
msgid "Avg. Working Hours to Close"
msgstr ""
#. module: project_issue
#: selection:project.issue,priority:0
#: selection:project.issue.report,priority:0
msgid "High"
msgstr ""
#. module: project_issue
#: field:project.issue,date_deadline:0
msgid "Deadline"
msgstr ""
#. module: project_issue
#: field:project.issue,date_action_last:0
msgid "Last Action"
msgstr ""
#. module: project_issue
#: view:project.issue.report:0 field:project.issue.report,name:0
msgid "Year"
msgstr ""
#. module: project_issue
#: field:project.issue,duration:0
msgid "Duration"
msgstr ""
#. module: project_issue
#: view:board.board:0
msgid "My Open Issues by Creation Date"
msgstr ""

View File

@ -24,6 +24,7 @@ from dateutil.relativedelta import relativedelta
from osv import fields, osv, orm
from edi import EDIMixin
from edi.models import edi
from tools import DEFAULT_SERVER_DATE_FORMAT
from tools.translate import _
@ -56,11 +57,22 @@ PURCHASE_ORDER_EDI_STRUCT = {
'amount_total': True,
'amount_untaxed': True,
'amount_tax': True,
'state':True,
}
class purchase_order(osv.osv, EDIMixin):
_inherit = 'purchase.order'
def wkf_send_rfq(self, cr, uid, ids, context=None):
""""Override this method to add a link to mail"""
if context is None:
context = {}
purchase_objs = self.browse(cr, uid, ids, context=context)
edi_token = self.pool.get('edi.document').export_edi(cr, uid, purchase_objs, context = context)[0]
web_root_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
ctx = dict(context, edi_web_url_view=edi.EDI_VIEW_WEB_URL % (web_root_url, cr.dbname, edi_token))
return super(purchase_order, self).wkf_send_rfq(cr, uid, ids, context=ctx)
def edi_export(self, cr, uid, records, edi_struct=None, context=None):
"""Exports a purchase order"""
edi_struct = dict(edi_struct or PURCHASE_ORDER_EDI_STRUCT)

View File

@ -2,6 +2,7 @@
<openerp>
<data>
<!--Export edi document -->
<!--
<record id="ir_actions_server_edi_purchase" model="ir.actions.server">
<field name="code">if not object.partner_id.opt_out: object.edi_export_and_email(template_ext_id='purchase.email_template_edi_purchase', context=context)</field>
<field name="state">code</field>
@ -10,6 +11,7 @@
<field name="condition">True</field>
<field name="name">Auto-email confirmed purchase orders</field>
</record>
-->
<!-- EDI related Email Templates menu -->
<record model="ir.actions.act_window" id="action_email_templates">
@ -27,9 +29,11 @@
so users can freely customize/delete them -->
<data noupdate="1">
<!-- bind the mailing server action to purchase.order confirmed activity -->
<!--
<record id="purchase.act_confirmed" model="workflow.activity">
<field name="action_id" ref="ir_actions_server_edi_purchase"/>
</record>
-->
<!--Email template -->
<record id="email_template_edi_purchase" model="email.template">
@ -44,7 +48,7 @@
<p>Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},</p>
<p>Here is a purchase order confirmation from ${object.company_id.name}: </p>
<p>Here is a ${object.state in ('draft', 'sent') and 'request for quotation' or 'purchase order confirmation'} from ${object.company_id.name}: </p>
<p style="border-left: 1px solid #8e0000; margin-left: 30px;">
&nbsp;&nbsp;<strong>REFERENCES</strong><br />
@ -61,7 +65,7 @@
</p>
<p>
You can view the order confirmation document and download it using the following link:
You can view the ${object.state in ('draft', 'sent') and 'request for quotation' or 'order confirmation'} document and download it using the following link:
</p>
<a style="display:block; width: 150px; height:20px; margin-left: 120px; color: #FFF; font-family: 'Lucida Grande', Helvetica, Arial, sans-serif; font-size: 13px; font-weight: bold; text-align: center; text-decoration: none !important; line-height: 1; padding: 5px 0px 0px 0px; background-color: #8E0000; border-radius: 5px 5px; background-repeat: repeat no-repeat;"
href="${ctx.get('edi_web_url_view') or ''}">View Order</a>
@ -107,7 +111,7 @@
<field name="body_text"><![CDATA[
Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},
Here is a purchase order confirmation from ${object.company_id.name}:
Here is a ${object.state in ('draft', 'sent') and 'request for quotation' or 'purchase order confirmation'} from ${object.company_id.name}:
| Order number: *${object.name}*
| Order total: *${object.amount_total} ${object.pricelist_id.currency_id.name}*
| Order date: ${object.date_order}
@ -119,7 +123,7 @@ Here is a purchase order confirmation from ${object.company_id.name}:
% endif
| Your contact: ${object.validator.name} ${object.validator.user_email and '<%s>'%(object.validator.user_email) or ''}
You can view the order confirmation and download it using the following link:
You can view the ${object.state in ('draft', 'sent') and 'request for quotation' or 'order confirmation'} and download it using the following link:
${ctx.get('edi_web_url_view') or 'n/a'}
If you have any question, do not hesitate to contact us.
@ -151,4 +155,4 @@ ${object.company_id.website or ''}
]]></field>
</record>
</data>
</openerp>
</openerp>

View File

@ -142,14 +142,15 @@ class purchase_order(osv.osv):
return res
STATE_SELECTION = [
('draft', 'Request for Quotation'),
('cancel', 'Cancelled'),
('draft', 'Draft PO'),
('wait', 'Waiting'),
('sent', 'RFQ Sent'),
('confirmed', 'Waiting Approval'),
('approved', 'Approved'),
('approved', 'Purchase Order'),
('except_picking', 'Shipping Exception'),
('except_invoice', 'Invoice Exception'),
('done', 'Done'),
('cancel', 'Cancelled')
]
_columns = {
@ -177,7 +178,7 @@ class purchase_order(osv.osv):
'picking_ids': fields.one2many('stock.picking.in', 'purchase_id', 'Picking List', readonly=True, help="This is the list of incomming shipments that have been generated for this purchase order."),
'shipped':fields.boolean('Received', readonly=True, select=True, help="It indicates that a picking has been done"),
'shipped_rate': fields.function(_shipped_rate, string='Received', type='float'),
'invoiced': fields.function(_invoiced, string='Invoiced & Paid', type='boolean', help="It indicates that an invoice has been paid"),
'invoiced': fields.function(_invoiced, string='Invoice Received', type='boolean', help="It indicates that an invoice has been paid"),
'invoiced_rate': fields.function(_invoiced_rate, string='Invoiced', type='float'),
'invoice_method': fields.selection([('manual','Based on Purchase Order lines'),('order','Based on generated draft invoice'),('picking','Bases on incoming shipments')], 'Invoicing Control', required=True,
help="Based on Purchase Order lines: place individual lines in 'Invoice Control > Based on P.O. lines' from where you can selectively create an invoice.\n" \
@ -277,10 +278,90 @@ class purchase_order(osv.osv):
fiscal_position = supplier.property_account_position and supplier.property_account_position.id or False
return {'value':{'pricelist_id': pricelist, 'fiscal_position': fiscal_position}}
def view_invoice(self, cr, uid, ids, context=None):
'''
This function returns an action that display existing invoices of given sale order ids. It can either be a in a list or in a form view, if there is only one invoice to show.
'''
mod_obj = self.pool.get('ir.model.data')
wizard_obj = self.pool.get('purchase.order.line_invoice')
#compute the number of invoices to display
inv_ids = []
for po in self.browse(cr, uid, ids, context=context):
if po.invoice_method == 'manual':
if not po.invoice_ids:
context.update({'active_ids' : [line.id for line in po.order_line]})
wizard_obj.makeInvoices(cr, uid, [], context=context)
for po in self.browse(cr, uid, ids, context=context):
inv_ids+= [invoice.id for invoice in po.invoice_ids]
res = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_supplier_form')
res_id = res and res[1] or False
return {
'name': _('Supplier Invoices'),
'view_type': 'form',
'view_mode': 'form',
'view_id': [res_id],
'res_model': 'account.invoice',
'context': "{'type':'in_invoice', 'journal_type': 'purchase'}",
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'current',
'res_id': inv_ids and inv_ids[0] or False,
}
def view_picking(self, cr, uid, ids, context=None):
'''
This function returns an action that display existing pîcking orders of given purchase order ids.
'''
mod_obj = self.pool.get('ir.model.data')
pick_ids = []
for po in self.browse(cr, uid, ids, context=context):
pick_ids += [picking.id for picking in po.picking_ids]
res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_in_form')
res_id = res and res[1] or False
return {
'name': _('Receptions'),
'view_type': 'form',
'view_mode': 'form',
'view_id': [res_id],
'res_model': 'stock.picking',
'context': "{'contact_display': 'partner'}",
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'current',
'res_id': pick_ids and pick_ids[0] or False,
}
def wkf_approve_order(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'approved', 'date_approve': fields.date.context_today(self,cr,uid,context=context)})
return True
def wkf_send_rfq(self, cr, uid, ids, context=None):
'''
This function opens a window to compose an email, with the edi purchase template message loaded by default
'''
mod_obj = self.pool.get('ir.model.data')
template = mod_obj.get_object_reference(cr, uid, 'purchase', 'email_template_edi_purchase')
template_id = template and template[1] or False
res = mod_obj.get_object_reference(cr, uid, 'mail', 'email_compose_message_wizard_form')
res_id = res and res[1] or False
ctx = dict(context, active_model='purchase.order', active_id=ids[0])
ctx.update({'mail.compose.template_id': template_id})
return {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(res_id,'form')],
'view_id': res_id,
'type': 'ir.actions.act_window',
'target': 'new',
'context': ctx,
'nodestroy': True,
}
#TODO: implement messages system
def wkf_confirm_order(self, cr, uid, ids, context=None):
todo = []
@ -445,6 +526,8 @@ class purchase_order(osv.osv):
'partner_id': order.dest_address_id.id or order.partner_id.id,
'invoice_state': '2binvoiced' if order.invoice_method == 'picking' else 'none',
'type': 'in',
'partner_id': order.dest_address_id.id or order.partner_id.id,
'invoice_state': '2binvoiced' if order.invoice_method == 'picking' else 'none',
'purchase_id': order.id,
'company_id': order.company_id.id,
'move_lines' : [],
@ -996,4 +1079,16 @@ class procurement_order(osv.osv):
return res
procurement_order()
class mail_message(osv.osv):
_name = 'mail.message'
_inherit = 'mail.message'
def _postprocess_sent_message(self, cr, uid, message, context=None):
if message.model == 'purchase.order':
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'purchase.order', message.res_id, 'send_rfq', cr)
return super(mail_message, self)._postprocess_sent_message(cr, uid, message=message, context=context)
mail_message()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -132,15 +132,18 @@
<field name="arch" type="xml">
<form layout="manual">
<div class="oe_form_topbar">
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object"/>
<button name="purchase_confirm" states="draft,sent" string="Confirm Order" class="oe_form_button_hi"/>
<button name="wkf_send_rfq" states="draft" string="Send RFQ" type="object" context="{'send_rfq':True}"/>
<button name="wkf_send_rfq" states="confirmed" string="Resend Purchase Order" type="object"/>
<button name="action_cancel" states="except_picking,except_invoice,wait" string="Cancel" type="object" />
<button name="picking_ok" states="except_picking" string="Manually Corrected"/>
<button name="invoice_ok" states="except_invoice" string="Manually Corrected"/>
<button name="purchase_confirm" states="draft" string="Confirm Purchase"/>
<button name="purchase_appbuyer" states="wait_auth" string="Approve Purchase"/>
<button name="purchase_approve" states="confirmed" string="Approved"/>
<button name="%(report_purchase_order)d" string="Print" states="approved" type="action"/>
<button name="action_cancel" states="approved,except_picking,except_invoice,wait" string="Cancel" type="object"/>
<button name="purchase_cancel" states="draft,confirmed,wait_auth" string="Cancel"/>
<button name="purchase_appbuyer" states="wait_auth" string="Approve Purchase" class="oe_form_button_hi"/>
<button name="purchase_approve" states="confirmed" string="Approve Order" class="oe_form_button_hi"/>
<button name="view_invoice" string="Receive Invoice" type="object" attrs="{'invisible': ['|', ('invoice_method','=','picking'), '|', ('state','!=', 'approved'), ('invoiced','=',True) ]}"/>
<button name="view_picking" string="Receive Products" type="object" attrs="{'invisible': ['|', ('shipped','=',True), ('state','!=', 'approved')]}"/>
<button name="action_cancel_draft" states="cancel,sent,confirmed" string="Set to Draft" type="object"/>
<button name="purchase_cancel" states="draft,confirmed,wait_auth,sent" string="Cancel"/>
<div class="oe_right">
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,approved,done" statusbar_colors='{"except_picking":"red","except_invoice":"red","confirmed":"blue","wait":"blue"}' readonly="1"/>
</div>
@ -225,9 +228,8 @@
<filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]" help="Purchase order which are in draft state"/>
<filter icon="terp-check" name="approved" string="Approved" domain="[('state','in',('approved','done'))]" help="Approved purchase order"/>
<separator orientation="vertical"/>
<filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" help="Purchase order which are in the exception state"/>
<separator orientation="vertical"/>
<filter icon="terp-gtk-go-back-rtl" name="not_invoiced" string="Not Invoiced" domain="[('invoice_ids','=', False)]" help="Purchase orders that include lines not invoiced."/>
<filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" help="Purchase order which are in the exception state"/>
<separator orientation="vertical"/>
<field name="name" string="Reference"/>
<field name="partner_id"/>
@ -257,13 +259,10 @@
<search string="Search Purchase Order">
<group>
<filter icon="terp-document-new" name="draft" string="Quotations" domain="[('state','=','draft')]" help="Purchase orders which are in draft state"/>
<filter icon="terp-gtk-jump-to-ltr" name="to_approve" string="To Approve" domain="[('state','in',('draft','wait','confirmed'))]" help="Purchase orders which are not approved yet."/>
<filter icon="terp-check" name="approved" string="Approved" domain="[('state','=','approved')]" help="Approved purchase orders"/>
<filter icon="terp-accessories-archiver+" string="Done" domain="[('state','=','done')]" help="Purchase orders which are in done state."/>
<separator orientation="vertical"/>
<filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" help="Purchase orders which are in exception state"/>
<filter icon="terp-check" name="approved" string="Purchase Orders" domain="[('state','not in',('draft','cancel'))]" help="Approved purchase orders"/>
<separator orientation="vertical"/>
<filter icon="terp-gtk-go-back-rtl" name="not_invoiced" string="Not Invoiced" domain="[('invoice_ids','=', False)]" help="Purchase orders that include lines not invoiced."/>
<filter icon="terp-emblem-important" name="exception" string="Exception" domain="[('state','in',('except_invoice','except_picking'))]" help="Purchase orders which are in exception state"/>
<separator orientation="vertical"/>
<field name="name" string="Reference"/>
<field name="partner_id"/>
@ -308,12 +307,12 @@
</record>
<record id="purchase_rfq" model="ir.actions.act_window">
<field name="name">Requests for Quotation</field>
<field name="name">Quotations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.order</field>
<field name="context">{'search_default_draft': 1}</field>
<field name="view_mode">tree,form,graph,calendar</field>
<field name="search_view_id" ref="view_request_for_quotation_filter"/>
<field name="search_view_id" ref="view_purchase_order_filter"/>
<field name="help">You can create a request for quotation when you want to buy products to a supplier but the purchase is not confirmed yet. Use also this menu to review requests for quotation created automatically based on your logistic rules (minimum stock, MTO, etc). You can convert the request for quotation into a purchase order once the order is confirmed. If you use the extended interface (from user's preferences), you can select the way to control your supplier invoices: based on the order, based on the receptions or manual encoding.</field>
</record>
<menuitem action="purchase_rfq" id="menu_purchase_rfq"

View File

@ -13,6 +13,12 @@
<field name="flow_start">True</field>
<field name="name">draft</field>
</record>
<record id="act_sent" model="workflow.activity">
<field name="wkf_id" ref="purchase_order"/>
<field name="name">sent</field>
<field name="kind">function</field>
<field name="action">write({'state':'sent'})</field>
</record>
<record id="act_confirmed" model="workflow.activity">
<field name="wkf_id" ref="purchase_order"/>
<field name="name">confirmed</field>
@ -90,6 +96,22 @@
<field name="act_to" ref="act_confirmed"/>
<field name="signal">purchase_confirm</field>
</record>
<record id="trans_draft_sent" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_sent"/>
<field name="signal">send_rfq</field>
</record>
<record id="trans_sent_confirmed" model="workflow.transition">
<field name="act_from" ref="act_sent"/>
<field name="act_to" ref="act_confirmed"/>
<field name="signal">purchase_confirm</field>
</record>
<record id="trans_sent_cancel" model="workflow.transition">
<field name="act_from" ref="act_sent"/>
<field name="act_to" ref="act_cancel"/>
<field name="signal">purchase_cancel</field>
</record>
<record id="trans_confirmed_cancel" model="workflow.transition">
<field name="act_from" ref="act_confirmed"/>
<field name="act_to" ref="act_cancel"/>

View File

@ -38,6 +38,7 @@ that exceeds minimum amount set by configuration wizard.
'update_xml': [
'purchase_double_validation_workflow.xml',
'purchase_double_validation_installer.xml',
'purchase_double_validation_view.xml',
'board_purchase_view.xml'
],
'test': [

View File

@ -0,0 +1,16 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="purchase_order_search_inherit">
<field name="name">purchase.order.list.select.inherit</field>
<field name="type">form</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.view_purchase_order_filter"/>
<field name="arch" type="xml">
<xpath expr="//filter[@name='draft']" position="after">
<filter icon="terp-gtk-jump-to-ltr" name="to_approve" string="To Approve" domain="[('state','in',('wait','confirmed'))]" help="Purchase orders which are not approved yet."/>
</xpath>
</field>
</record>
</data>
</openerp>

View File

@ -21,22 +21,8 @@
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.view_purchase_order_filter"/>
<field name="arch" type="xml">
<xpath expr="/search/group/filter[@name='not_invoiced']" position="after">
<separator orientation="vertical"/>
<filter icon="terp-gtk-jump-to-rtl" string="Requisition" domain="[('requisition_id','!=',False)]" help="Purchase Orders with requisition"/>
</xpath>
</field>
</record>
<record model="ir.ui.view" id="request_for_quotation_inherit">
<field name="name">request.for.quotation.select.inherit</field>
<field name="type">form</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.view_request_for_quotation_filter"/>
<field name="arch" type="xml">
<xpath expr="/search/group/filter[@name='not_invoiced']" position="after">
<separator orientation="vertical"/>
<filter icon="terp-gtk-jump-to-rtl" string="Requisition" domain="[('requisition_id','!=',False)]" help="Purchase Orders with requisition"/>
<xpath expr="//filter[@name='approved']" position="after">
<filter icon="terp-gtk-jump-to-rtl" string="Requisition" domain="[('requisition_id','!=',False)]" help="Purchase Orders with requisition"/>
</xpath>
</field>
</record>

View File

@ -53,7 +53,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem action="action_header_img" id="menu_header_img" parent="base.menu_res_company_global" sequence="14"/>
<menuitem action="action_header_img" id="menu_header_img" parent="base.menu_custom" sequence="14"/>
<record id="action_header_webkit" model="ir.actions.act_window">
<field name="name">Webkit Headers/Footers</field>
@ -61,7 +61,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem action="action_header_webkit" id="menu_header_webkit" parent="base.menu_res_company_global" sequence="14"/>
<menuitem action="action_header_webkit" id="menu_header_webkit" parent="base.menu_custom" sequence="14"/>
</data>
</openerp>

View File

@ -24,6 +24,7 @@ from dateutil.relativedelta import relativedelta
from osv import fields, osv, orm
from edi import EDIMixin
from edi.models import edi
from tools import DEFAULT_SERVER_DATE_FORMAT
SALE_ORDER_LINE_EDI_STRUCT = {
@ -59,11 +60,21 @@ SALE_ORDER_EDI_STRUCT = {
'payment_term': True,
'order_policy': True,
'user_id': True,
'state': True,
}
class sale_order(osv.osv, EDIMixin):
_inherit = 'sale.order'
def action_quotation_send(self, cr, uid, ids, context=None):
if context is None:
context = {}
sale_objs = self.browse(cr, uid, ids, context=context)
edi_token = self.pool.get('edi.document').export_edi(cr, uid, sale_objs, context = context)[0]
web_root_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
ctx = dict(context, edi_web_url_view=edi.EDI_VIEW_WEB_URL % (web_root_url, cr.dbname, edi_token))
return super(sale_order, self).action_quotation_send(cr, uid, ids, context=ctx)
def edi_export(self, cr, uid, records, edi_struct=None, context=None):
"""Exports a Sale order"""
edi_struct = dict(edi_struct or SALE_ORDER_EDI_STRUCT)

View File

@ -47,7 +47,7 @@
<p>Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},</p>
<p>Here is your order confirmation for ${object.partner_id.name}: </p>
<p>Here is your ${object.state in ('draft', 'sent') and 'quotation' or 'order confirmation'} from {$object.company_id.name}: </p>
<p style="border-left: 1px solid #8e0000; margin-left: 30px;">
&nbsp;&nbsp;<strong>REFERENCES</strong><br />
@ -64,12 +64,12 @@
</p>
<p>
You can view the order confirmation document, download it and pay online using the following link:
You can view the ${object.state in ('draft', 'sent') and 'quotation' or 'order confirmation'} document, download it and pay online using the following link:
</p>
<a style="display:block; width: 150px; height:20px; margin-left: 120px; color: #FFF; font-family: 'Lucida Grande', Helvetica, Arial, sans-serif; font-size: 13px; font-weight: bold; text-align: center; text-decoration: none !important; line-height: 1; padding: 5px 0px 0px 0px; background-color: #8E0000; border-radius: 5px 5px; background-repeat: repeat no-repeat;"
href="${ctx.get('edi_web_url_view') or ''}">View Order</a>
% if object.order_policy in ('prepaid','manual') and object.company_id.paypal_account:
% if object.order_policy in ('prepaid','manual') and object.company_id.paypal_account and object.state not in ('draft', 'sent'):
<%
comp_name = quote(object.company_id.name)
order_name = quote(object.name)
@ -129,7 +129,7 @@
<field name="body_text"><![CDATA[
Hello${object.partner_id.name and ' ' or ''}${object.partner_id.name or ''},
Here is your order confirmation for ${object.partner_id.name}:
Here is your ${object.state in ('draft', 'sent') and 'quotation' or 'order confirmation'} from ${object.company_id.name}:
| Order number: *${object.name}*
| Order total: *${object.amount_total} ${object.pricelist_id.currency_id.name}*
| Order date: ${object.date_order}
@ -141,10 +141,10 @@ Here is your order confirmation for ${object.partner_id.name}:
% endif
| Your contact: ${object.user_id.name} ${object.user_id.user_email and '<%s>'%(object.user_id.user_email) or ''}
You can view the order confirmation, download it and even pay online using the following link:
You can view the ${object.state in ('draft', 'sent') and 'quotation' or 'order confirmation'}, download it and even pay online using the following link:
${ctx.get('edi_web_url_view') or 'n/a'}
% if object.order_policy in ('prepaid','manual') and object.company_id.paypal_account:
% if object.order_policy in ('prepaid','manual') and object.company_id.paypal_account and object.state not in ('draft', 'sent'):
<%
comp_name = quote(object.company_id.name)
order_name = quote(object.name)

2173
addons/sale/i18n/is.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -198,45 +198,46 @@ class sale_order(osv.osv):
_columns = {
'name': fields.char('Order Reference', size=64, required=True,
readonly=True, states={'draft': [('readonly', False)]}, select=True),
'shop_id': fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft': [('readonly', False)]}),
readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, select=True),
'shop_id': fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}),
'origin': fields.char('Source Document', size=64, help="Reference of the document that generated this sales order request."),
'client_order_ref': fields.char('Customer Reference', size=64),
'state': fields.selection([
('draft', 'Quotation'),
('draft', 'Draft Quotation'),
('sent', 'Quotation Sent'),
('cancel', 'Cancelled'),
('waiting_date', 'Waiting Schedule'),
('manual', 'To Invoice'),
('progress', 'In Progress'),
('progress', 'Sale Order'),
('manual', 'Sale to Invoice'),
('shipping_except', 'Shipping Exception'),
('invoice_except', 'Invoice Exception'),
('done', 'Done'),
], 'Order State', readonly=True, help="Gives the state of the quotation or sales order. \nThe exception state is automatically set when a cancel operation occurs in the invoice validation (Invoice Exception) or in the picking list process (Shipping Exception). \nThe 'Waiting Schedule' state is set when the invoice is confirmed but waiting for the scheduler to run on the order date.", select=True),
'date_order': fields.date('Date', required=True, readonly=True, select=True, states={'draft': [('readonly', False)]}),
'date_order': fields.date('Date', required=True, readonly=True, select=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}),
'create_date': fields.datetime('Creation Date', readonly=True, select=True, help="Date on which sales order is created."),
'date_confirm': fields.date('Confirmation Date', readonly=True, select=True, help="Date on which sales order is confirmed."),
'user_id': fields.many2one('res.users', 'Salesperson', states={'draft': [('readonly', False)]}, select=True),
'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)]}, required=True, change_default=True, select=True),
'partner_invoice_id': fields.many2one('res.partner', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Invoice address for current sales order."),
'partner_shipping_id': fields.many2one('res.partner', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sales order."),
'user_id': fields.many2one('res.users', 'Salesperson', states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, select=True),
'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, required=True, change_default=True, select=True),
'partner_invoice_id': fields.many2one('res.partner', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Invoice address for current sales order."),
'partner_shipping_id': fields.many2one('res.partner', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Shipping address for current sales order."),
'incoterm': fields.many2one('stock.incoterms', 'Incoterm', help="Incoterm which stands for 'International Commercial terms' implies its a series of sales terms which are used in the commercial transaction."),
'picking_policy': fields.selection([('direct', 'Deliver each product when available'), ('one', 'Deliver all products at once')],
'Shipping Policy', required=True, readonly=True, states={'draft': [('readonly', False)]},
'Shipping Policy', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]},
help="""If you don't have enough stock available to deliver all at once, do you accept partial shipments or not?"""),
'order_policy': fields.selection([
('manual', 'On Demand'),
('picking', 'On Delivery Order'),
('prepaid', 'Before Delivery'),
], 'Create Invoice', required=True, readonly=True, states={'draft': [('readonly', False)]},
], 'Create Invoice', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]},
help="""This field controls how invoice and delivery operations are synchronized.
- With 'On Demand', the invoice is created manually when needed.
- With 'On Delivery Order', a draft invoice is generated after all pickings have been processed.
- With 'Before Delivery', a draft invoice is created, and it must be paid before delivery."""),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist for current sales order."),
'project_id': fields.many2one('account.analytic.account', 'Contract/Analytic Account', readonly=True, states={'draft': [('readonly', False)]}, help="The analytic account related to a sales order."),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="Pricelist for current sales order."),
'project_id': fields.many2one('account.analytic.account', 'Contract/Analytic Account', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}, help="The analytic account related to a sales order."),
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)]}),
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)], 'sent': [('readonly', False)]}),
'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_rel', 'order_id', 'invoice_id', 'Invoices', readonly=True, help="This is the list of invoices that have been generated for this sales order. The same sales order may have been invoiced in several times (by line for example)."),
'picking_ids': fields.one2many('stock.picking.out', 'sale_id', 'Related Picking', readonly=True, help="This is a list of delivery orders that has been generated for this sales order."),
'shipped': fields.boolean('Delivered', readonly=True, help="It indicates that the sales order has been delivered. This field is updated only after the scheduler(s) have been launched."),
@ -467,6 +468,20 @@ class sale_order(osv.osv):
inv_obj.button_compute(cr, uid, [inv_id])
return inv_id
def print_quotation(self, cr, uid, ids, context=None):
'''
This function prints the sale order and mark it as sent, so that we can see more easily the next step of the workflow
'''
assert len(ids) == 1, 'This option should only be used for a single id at a time'
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'sale.order', ids[0], 'quotation_sent', cr)
datas = {
'model': 'sale.order',
'ids': ids,
'form': self.read(cr, uid, ids[0], context=context),
}
return {'type': 'ir.actions.report.xml', 'report_name': 'sale.order', 'datas': datas, 'nodestroy': True}
def manual_invoice(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
wf_service = netsvc.LocalService("workflow")
@ -498,6 +513,75 @@ class sale_order(osv.osv):
'res_id': inv_ids and inv_ids[0] or False,
}
def action_view_invoice(self, cr, uid, ids, context=None):
'''
This function returns an action that display existing invoices of given sale order ids. It can either be a in a list or in a form view, if there is only one invoice to show.
'''
mod_obj = self.pool.get('ir.model.data')
result = {
'name': _('Cutomer Invoice'),
'view_type': 'form',
'res_model': 'account.invoice',
'context': "{'type':'out_invoice', 'journal_type': 'sale'}",
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'current',
}
#compute the number of invoices to display
inv_ids = []
for so in self.browse(cr, uid, ids, context=context):
inv_ids += [invoice.id for invoice in so.invoice_ids]
#choose the view_mode accordingly
if len(inv_ids)>1:
res = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_tree')
result.update({
'view_mode': 'tree,form',
'res_id': inv_ids or False
})
else:
res = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_form')
result.update({
'view_mode': 'form',
'res_id': inv_ids and inv_ids[0] or False,
})
result.update(view_id = res and res[1] or False)
return result
def action_view_delivery(self, cr, uid, ids, context=None):
'''
This function returns an action that display existing delivery orders of given sale order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.
'''
mod_obj = self.pool.get('ir.model.data')
result = {
'name': _('Delivery Order'),
'view_type': 'form',
'res_model': 'stock.picking',
'context': "{'type':'out'}",
'type': 'ir.actions.act_window',
'nodestroy': True,
'target': 'current',
}
#compute the number of delivery orders to display
pick_ids = []
for so in self.browse(cr, uid, ids, context=context):
pick_ids += [picking.id for picking in so.picking_ids]
#choose the view_mode accordingly
if len(pick_ids) > 1:
res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_out_tree')
result.update({
'view_mode': 'tree,form',
'res_id': pick_ids or False
})
else:
res = mod_obj.get_object_reference(cr, uid, 'stock', 'view_picking_out_form')
result.update({
'view_mode': 'form',
'res_id': pick_ids and pick_ids[0] or False,
})
result.update(view_id = res and res[1] or False)
return result
def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_inv = False, context=None):
res = False
invoices = {}
@ -655,6 +739,30 @@ class sale_order(osv.osv):
self.confirm_send_note(cr, uid, ids, context)
return True
def action_quotation_send(self, cr, uid, ids, context=None):
'''
This function opens a window to compose an email, with the edi sale template message loaded by default
'''
assert len(ids) == 1, 'This option should only be used for a single id at a time'
mod_obj = self.pool.get('ir.model.data')
template = mod_obj.get_object_reference(cr, uid, 'sale', 'email_template_edi_sale')
template_id = template and template[1] or False
res = mod_obj.get_object_reference(cr, uid, 'mail', 'email_compose_message_wizard_form')
res_id = res and res[1] or False
ctx = dict(context, active_model='sale.order', active_id=ids[0])
ctx.update({'mail.compose.template_id': template_id})
return {
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(res_id,'form')],
'view_id': res_id,
'type': 'ir.actions.act_window',
'target': 'new',
'context': ctx,
'nodestroy': True,
}
def procurement_lines_get(self, cr, uid, ids, *args):
res = []
for order in self.browse(cr, uid, ids, context={}):
@ -1380,4 +1488,15 @@ class sale_order_line(osv.osv):
sale_order_line()
class mail_message(osv.osv):
_inherit = 'mail.message'
def _postprocess_sent_message(self, cr, uid, message, context=None):
if message.model == 'sale.order':
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'sale.order', message.res_id, 'quotation_sent', cr)
return super(mail_message, self)._postprocess_sent_message(cr, uid, message=message, context=context)
mail_message()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -97,23 +97,29 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form layout="manual">
<div class="oe_form_topbar">
<button name="order_confirm" states="draft" string="Confirm Order"/>
<button name="manual_invoice" states="manual" string="Create Final Invoice" type="object"/>
<button name="invoice_recreate" states="invoice_except" string="Recreate Invoice"/>
<button name="invoice_corrected" states="invoice_except" string="Ignore Exception"/>
<button name="ship_recreate" states="shipping_except" string="Recreate Packing"/>
<button name="ship_corrected" states="shipping_except" string="Ignore Exception"/>
<button name="%(report_sale_order)d" string="Print Order" type="action" states="waiting_date,manual,progress,done,shipping_except,invoice_except"/>
<button name="ship_cancel" states="shipping_except" string="Cancel Order"/>
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object"/>
<button name="invoice_cancel" states="invoice_except" string="Cancel Order"/>
<button name="%(report_sale_order)d" string="Print Quotation" type="action" states="draft"/>
<button name="%(action_view_sale_advance_payment_inv)d" string="Advance Invoice" type="action" states="draft,manual"/>
<button name="action_cancel" states="manual,progress" string="Cancel Order" type="object"/>
<button name="cancel" states="draft" string="Cancel Order"/>
<div class="oe_form_topbar">
<button name="invoice_recreate" states="invoice_except" string="Recreate Invoice"/>
<button name="invoice_corrected" states="invoice_except" string="Ignore Exception"/>
<button name="ship_recreate" states="shipping_except" string="Recreate Delivery Order"/>
<button name="ship_corrected" states="shipping_except" string="Ignore Exception"/>
<button name="action_quotation_send" string="Send by Mail" type="object" states="draft" class="oe_form_button_hi"/>
<button name="action_quotation_send" string="Send by Mail" type="object" states="sent"/>
<button name="manual_invoice" states="manual" string="Create Final Invoice" type="object"/>
<button name="print_quotation" string="Send by Post" type="object" states="draft" class="oe_form_button_hi"/>
<button name="print_quotation" string="Send by Post" type="object" states="sent"/>
<button name="order_confirm" states="draft" string="Confirm"/>
<button name="order_confirm" states="sent" string="Confirm" class="oe_form_button_hi"/>
<button name="action_view_invoice" string="Open Invoice" type="object"
attrs="{'invisible': ['|','|',('state', '!=','progress'), ('invoiced', '=', True),('order_policy','=','picking')]}"/>
<button name="action_view_delivery" string="Open Delivery Order" type="object"
attrs="{'invisible': ['|','|','|',('picking_ids','=',False),('picking_ids','=',[]), ('state', 'not in', ('progress','manual')),('shipped','=',True)]}"/>
<button name="%(action_view_sale_advance_payment_inv)d" string="Advance Invoice" type="action" states="manual"/>
<button name="cancel" states="draft,sent" string="Cancel"/>
<button name="action_cancel" states="manual,progress" string="Cancel" type="object"/>
<button name="ship_cancel" states="shipping_except" string="Cancel"/>
<button name="invoice_cancel" states="invoice_except" string="Cancel"/>
<div class="oe_right">
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,progress,done" statusbar_colors='{"shipping_except":"red","invoice_except":"red","waiting_date":"blue"}'/>
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,sent,progress,invoiced,done" statusbar_colors='{"shipping_except":"red","invoice_except":"red","waiting_date":"blue"}'/>
</div>
<div class="oe_clear"/>
</div>
@ -147,8 +153,8 @@
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
name="product_id"
on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, False, True, parent.date_order, product_packaging, parent.fiscal_position, False, context)"/>
<field name="name"/>
<field name="name" placeholder="Porduct/Service characteristics"/>
<field
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
name="product_uom_qty"
@ -208,8 +214,9 @@
<field name="price_subtotal" groups="base.group_sale_notes_subtotal"/>
</tree>
</field>
<div class="oe_form_subtotal_footer" colspan="4">
<group colspan="2" col="4" name="bellow_the_lines_hook">
</group>
<div class="oe_form_subtotal_footer" colspan="2">
<div>
<field name="amount_untaxed" sum="Untaxed amount"/>
</div>
@ -223,7 +230,7 @@
<div class="oe_clear"/>
<separator colspan="4" string="Notes"/>
<field colspan="4" name="note" nolabel="1"/>
<field colspan="4" name="note" nolabel="1" placeholder="Our quotation is valid for 30 days..."/>
</page>
<page string="Other Information">
<group colspan="2" col="2" name="logistics">
@ -281,7 +288,7 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Sales Order">
<filter icon="terp-document-new" string="Quotations" name="draft" domain="[('state','=','draft')]" help="Sales Order that haven't yet been confirmed"/>
<filter icon="terp-document-new" string="Quotations" name="draft" domain="[('state','in',('draft','sent'))]" help="Sales Order that haven't yet been confirmed"/>
<filter icon="terp-check" string="Sales" name="sales" domain="[('state','in',('manual','progress'))]"/>
<separator orientation="vertical"/>
<filter icon="terp-dolar_ok!" string="To Invoice" domain="[('state','=','manual')]" help="Sales Order ready to be invoiced"/>

View File

@ -13,6 +13,12 @@
<field name="flow_start">True</field>
<field name="name">draft</field>
</record>
<record id="act_sent" model="workflow.activity">
<field name="wkf_id" ref="wkf_sale"/>
<field name="name">sent</field>
<field name="kind">function</field>
<field name="action">write({'state':'sent'})</field>
</record>
<record id="act_router" model="workflow.activity">
<field name="wkf_id" ref="wkf_sale"/>
<field name="name">router</field>
@ -123,6 +129,24 @@
<field name="signal">order_confirm</field>
</record>
<record id="trans_draft_sent" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_sent"/>
<field name="signal">quotation_sent</field>
</record>
<record id="trans_sent_cancel" model="workflow.transition">
<field name="act_from" ref="act_sent"/>
<field name="act_to" ref="act_cancel"/>
<field name="signal">cancel</field>
</record>
<record id="trans_sent_router" model="workflow.transition">
<field name="act_from" ref="act_sent"/>
<field name="act_to" ref="act_router"/>
<field name="signal">order_confirm</field>
</record>
<record id="trans_draft_cancel" model="workflow.transition">
<field name="act_from" ref="act_draft"/>
<field name="act_to" ref="act_cancel"/>

View File

@ -0,0 +1,130 @@
# Latvian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-05-28 08:08+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Latvian <lv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-29 04:46+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: sale_journal
#: sql_constraint:sale.order:0
msgid "Order Reference must be unique per Company!"
msgstr ""
#. module: sale_journal
#: field:sale_journal.invoice.type,note:0
msgid "Note"
msgstr ""
#. module: sale_journal
#: field:res.partner,property_invoice_type:0
msgid "Invoicing Type"
msgstr ""
#. module: sale_journal
#: help:res.partner,property_invoice_type:0
msgid ""
"This invoicing type will be used, by default, for invoicing the current "
"partner."
msgstr ""
#. module: sale_journal
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
#. module: sale_journal
#: view:res.partner:0
msgid "Sales & Purchases"
msgstr ""
#. module: sale_journal
#: help:sale_journal.invoice.type,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the invoice "
"type without removing it."
msgstr ""
#. module: sale_journal
#: view:sale_journal.invoice.type:0
msgid "Notes"
msgstr ""
#. module: sale_journal
#: field:sale_journal.invoice.type,invoicing_method:0
msgid "Invoicing method"
msgstr ""
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.action_definition_journal_invoice_type
#: model:ir.model,name:sale_journal.model_sale_journal_invoice_type
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal_invoice_type
msgid "Invoice Types"
msgstr ""
#. module: sale_journal
#: selection:sale_journal.invoice.type,invoicing_method:0
msgid "Non grouped"
msgstr ""
#. module: sale_journal
#: selection:sale_journal.invoice.type,invoicing_method:0
msgid "Grouped"
msgstr ""
#. module: sale_journal
#: model:ir.actions.act_window,help:sale_journal.action_definition_journal_invoice_type
msgid ""
"Invoice types are used for partners, sales orders and delivery orders. You "
"can create a specific invoicing journal to group your invoicing according to "
"your customer's needs: daily, each Wednesday, monthly, etc."
msgstr ""
#. module: sale_journal
#: sql_constraint:stock.picking:0
msgid "Reference must be unique per Company!"
msgstr ""
#. module: sale_journal
#: field:sale.order,invoice_type_id:0
#: view:sale_journal.invoice.type:0
#: field:sale_journal.invoice.type,name:0
#: field:stock.picking,invoice_type_id:0
msgid "Invoice Type"
msgstr ""
#. module: sale_journal
#: field:sale_journal.invoice.type,active:0
msgid "Active"
msgstr ""
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_res_partner
msgid "Partner"
msgstr ""
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_sale_order
msgid "Sales Order"
msgstr ""
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_stock_picking
msgid "Picking List"
msgstr ""
#. module: sale_journal
#: view:res.partner:0
msgid "Invoicing"
msgstr ""

View File

@ -0,0 +1,254 @@
# Latvian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-05-28 08:16+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Latvian <lv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-29 04:46+0000\n"
"X-Generator: Launchpad (build 15316)\n"
#. module: sale_layout
#: sql_constraint:sale.order:0
msgid "Order Reference must be unique per Company!"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Sub Total"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Title"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Disc. (%)"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Note"
msgstr ""
#. module: sale_layout
#: field:sale.order.line,layout_type:0
msgid "Line Type"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Order N°"
msgstr ""
#. module: sale_layout
#: field:sale.order,abstract_line_ids:0
msgid "Order Lines"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Disc.(%)"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Unit Price"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Invoice Lines"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "UoM"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Product"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Description"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Our Salesman"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Tel. :"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Quantity"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Quotation N°"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "VAT"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Make Invoice"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Properties"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Invoice address :"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Fax :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Notes"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Date Ordered"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Shipping address :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
#: report:sale.order.layout:0
msgid "Taxes"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Net Total :"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Total :"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Payment Terms"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "History"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Separator Line"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Your Reference"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Quotation Date"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "TVA :"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Qty"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "States"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Sales order lines"
msgstr ""
#. module: sale_layout
#: model:ir.actions.report.xml,name:sale_layout.sale_order_1
msgid "Order with Layout"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Extra Info"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Taxes :"
msgstr ""
#. module: sale_layout
#: selection:sale.order.line,layout_type:0
msgid "Page Break"
msgstr ""
#. module: sale_layout
#: model:ir.model,name:sale_layout.model_sale_order
msgid "Sales Order"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Order Line"
msgstr ""
#. module: sale_layout
#: report:sale.order.layout:0
msgid "Price"
msgstr ""
#. module: sale_layout
#: model:ir.model,name:sale_layout.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: sale_layout
#: view:sale.order:0
msgid "Stock Moves"
msgstr ""

View File

@ -735,9 +735,9 @@ class stock_picking(osv.osv):
""" Changes state of picking to available if all moves are confirmed.
@return: True
"""
wf_service = netsvc.LocalService("workflow")
for pick in self.browse(cr, uid, ids):
if pick.state == 'draft':
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_confirm', cr)
move_ids = [x.id for x in pick.move_lines if x.state == 'confirmed']
if not move_ids:

View File

@ -121,7 +121,7 @@
</div>
<sheet string="Physical Inventory" layout="auto">
<group class="oe_form_header">
<field name="name"/>
<field name="name" placeholder="Annual invetory 2013"/>
<field name="date"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<notebook colspan="4">
@ -726,7 +726,7 @@
<group colspan="4" col="6">
<group colspan="4" col="4">
<field name="name" readonly="1"/>
<field name="origin"/>
<field name="origin" placeholder="PO0032"/>
<field name="partner_id" on_change="onchange_partner_in(partner_id)" colspan="4"/>
<field name="invoice_state" string="Invoice Control"/>
<field name="backorder_id" readonly="1"/>
@ -835,7 +835,7 @@
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</page>
<page string="Notes">
<field colspan="4" name="note" nolabel="1"/>
<field colspan="4" name="note" nolabel="1" placeholder="Quality test ok..."/>
</page>
</notebook>
</sheet>
@ -912,14 +912,13 @@
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';grey:state == 'cancel';red:state not in ('cancel', 'done') and min_date &lt; current_date" string="Delivery Orders">
<field name="name"/>
<field name="partner_id"/>
<field name="origin"/>
<field name="date"/>
<field name="min_date"/>
<field name="backorder_id"/>
<field name="stock_journal_id"/>
<field name="invoice_state"/>
<field name="stock_journal_id" widget="selection"/>
<field name="state"/>
<button name="action_process" states="assigned" string="Process" type="object" icon="gtk-go-forward"/>
</tree>
</field>
</record>
@ -1032,6 +1031,7 @@
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';grey:state == 'done';red:state not in ('cancel', 'done') and date &lt; current_date" string="Picking list">
<field name="name"/>
<field name="partner_id"/>
<field name="backorder_id"/>
<field name="origin"/>
<field name="date"/>

View File

@ -51,7 +51,7 @@
</tree>
<form string="Pulled Paths">
<separator string="Conditions" colspan="4"/>
<field name="name" colspan="4"/>
<field name="name" colspan="4" placeholder="Fulfill needs on location X from location Y "/>
<field name="location_id"/>
<separator string="Action Type" colspan="4"/>
<field name="type_proc"/>
@ -81,7 +81,7 @@
</tree>
<form string="Pushed flows">
<group colspan="4" col="6">
<field name="name"/>
<field name="name" placeholder="When receiving at location X, move to location Y"/>
<field name="location_from_id"/>
<field name="location_dest_id"/>
<field name="auto"/>