merge from trunk

bzr revid: mit@openerp.com-20120904172113-qwf35tttm5llhrxn
This commit is contained in:
Minh Tran 2012-09-04 19:21:13 +02:00
commit 6bf00fd465
73 changed files with 3060 additions and 654 deletions

View File

@ -1361,10 +1361,16 @@ class account_invoice_line(osv.osv):
'company_id': fields.related('invoice_id','company_id',type='many2one',relation='res.company',string='Company', store=True, readonly=True),
'partner_id': fields.related('invoice_id','partner_id',type='many2one',relation='res.partner',string='Partner',store=True)
}
def _default_account_id(self, cr, uid, ids, context=None):
prop = self.pool.get('ir.property').get(cr, uid, 'property_account_income_categ', 'product.category', context=context)
return prop and prop.id or False
_defaults = {
'quantity': 1,
'discount': 0.0,
'price_unit': _price_unit_default,
'account_id': _default_account_id,
}
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
@ -1473,10 +1479,11 @@ class account_invoice_line(osv.osv):
prod = self.pool.get('product.product').browse(cr, uid, product, context=context)
prod_uom = self.pool.get('product.uom').browse(cr, uid, uom, context=context)
if prod.uom_id.category_id.id != prod_uom.category_id.id:
warning = {
warning = {
'title': _('Warning!'),
'message': _('The selected unit of measure is not compatible with the unit of measure of the product.')
}
}
res['value'].update({'uos_id': prod.uom_id.id})
return {'value': res['value'], 'warning': warning}
return res

View File

@ -191,17 +191,23 @@
<page string="Invoice">
<field context="{'partner_id': partner_id, 'price_type': 'price_type' in dir() and price_type or False, 'type': type}" name="invoice_line">
<tree string="Invoice lines" editable="bottom">
<field name="product_id" on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
<field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]" name="account_id" on_change="onchange_account_id(product_id,parent.partner_id,parent.type,parent.fiscal_position,account_id)" groups="base.group_account_user"/>
<field name="invoice_line_tax_id" view_mode="2" context="{'type':parent.type}" domain="[('parent_id','=',False)]"/>
<field domain="[('type','&lt;&gt;','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]" name="account_analytic_id" groups="analytic.group_analytic_accounting"/>
<field name="product_id"
on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
<field name="name"/>
<field name="company_id" groups="base.group_multi_company" readonly="1"/>
<field name="account_id" groups="account.group_account_user"
domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]"
on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/>
<field name="account_analytic_id" groups="analytic.group_analytic_accounting"
domain="[('type','!=','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]"/>
<field name="quantity"/>
<field name="uos_id" groups="product.group_uom"
on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
<field name="price_unit"/>
<field name="discount" groups="sale.group_discount_per_so_line"/>
<field name="invoice_line_tax_id" widget="many2many_tags" context="{'type':parent.type}"
domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]"/>
<field name="price_subtotal"/>
<field domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]" name="account_id" on_change="onchange_account_id(product_id,parent.partner_id,parent.type,parent.fiscal_position,account_id)" invisible="1"/>
<!-- Removed if subtotal is set -->
<field name="name" invisible="1"/>
<field name="uos_id" invisible="1"/>
</tree>
</field>
<group class="oe_subtotal_footer oe_right">
@ -342,17 +348,22 @@
<page string="Invoice Lines">
<field name="invoice_line" nolabel="1" widget="one2many_list" context="{'type': type}">
<tree string="Invoice Lines" editable="bottom">
<field name="invoice_line_tax_id" invisible="1"/>
<field name="product_id" />
<field name="product_id"
on_change="product_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
<field name="name"/>
<field name="company_id" groups="base.group_multi_company" readonly="1"/>
<field name="account_id" groups="account.group_account_user"
domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]"
domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '!=', 'view')]"
on_change="onchange_account_id(product_id, parent.partner_id, parent.type, parent.fiscal_position,account_id)"/>
<field name="account_analytic_id" groups="analytic.group_analytic_accounting"
domain="[('type','!=','view'), ('company_id', '=', parent.company_id), ('parent_id', '!=', False)]"/>
<field name="quantity"/>
<field name="uos_id" groups="product.group_uom"
on_change="uos_id_change(product_id, uos_id, quantity, name, parent.type, parent.partner_id, parent.fiscal_position, price_unit, parent.currency_id, context, parent.company_id)"/>
<field name="price_unit"/>
<field name="discount" groups="sale.group_discount_per_so_line"/>
<field name="invoice_line_tax_id" widget="many2many_tags" context="{'type':parent.type}"
domain="[('parent_id','=',False),('company_id', '=', parent.company_id)]"/>
<field name="price_subtotal"/>
</tree>
</field>

View File

@ -186,19 +186,23 @@
<search string="Search Analytic Lines">
<field name="name" string="Analytic Line"/>
<field name="date"/>
<filter name="sales" string="Sales" domain="[('journal_id.type','=','sale')]" icon="terp-camera_test" help="Analytic Journal Items related to a sale journal."/>
<filter name="purchases" string="Purchases" domain="[('journal_id.type','=','purchase')]" icon="terp-purchase" help="Analytic Journal Items related to a purchase journal."/>
<filter name="others" string="Others" domain="[('journal_id.type','in',('cash','general','situation'))]" icon="terp-folder-orange"/>
<filter name="sales" string="Sales" domain="[('journal_id.type','=','sale')]" help="Analytic Journal Items related to a sale journal."/>
<filter name="purchases" string="Purchases" domain="[('journal_id.type','=','purchase')]" help="Analytic Journal Items related to a purchase journal."/>
<filter name="others" string="Others" domain="[('journal_id.type','in',('cash','general','situation'))]"/>
<separator/>
<filter string="My Entries" domain="[('user_id','=',uid)]" icon="terp-personal"/>
<filter string="My Entries" domain="[('user_id','=',uid)]"/>
<field name="account_id"/>
<field name="user_id"/>
<group string="Group By..." expand="0">
<filter string="Account" context="{'group_by':'account_id'}" icon="terp-folder-green"/>
<filter string="Journal" context="{'group_by':'journal_id'}" icon="terp-folder-orange"/>
<filter string="User" context="{'group_by':'user_id'}" icon="terp-personal"/>
<filter string="Fin.Account" context="{'group_by':'general_account_id'}" icon="terp-folder-green"/>
<filter string="Product" context="{'group_by':'product_id'}" icon="terp-accessories-archiver"/>
<filter string="Analytic Account" context="{'group_by':'account_id'}"/>
<filter string="Fin. Account" context="{'group_by':'general_account_id'}"/>
<filter string="Journal" context="{'group_by':'journal_id'}" name="group_journal"/>
<separator/>
<filter string="Product" context="{'group_by':'product_id'}"/>
<filter string="User" context="{'group_by':'user_id'}"/>
<separator/>
<filter string="Date" context="{'group_by':'date'}" name="group_date"/>
</group>
</search>
</field>
@ -357,16 +361,6 @@
action="action_account_analytic_journal_tree"
id="account_analytic_journal_print" parent="account.next_id_40"/>
<act_window
context="{'search_default_account_id': [active_id], 'search_default_user_id': False, 'default_account_id': active_id}"
id="act_acc_analytic_acc_5_report_hr_timesheet_invoice_journal"
name="All Analytic Entries"
res_model="account.analytic.line"
src_model="account.analytic.account"
view_mode="tree,form"
view_type="form"/>
<record id="view_account_journal_1" model="ir.ui.view">
<field name="name">account.journal.form.1</field>
<field name="model">account.journal</field>

View File

@ -6,12 +6,11 @@
Analytic Account form
-->
<act_window
id="action_sales_order"
name="Sales Orders"
res_model="sale.order"
src_model="account.analytic.account"
/>
<record model="ir.actions.act_window" id="action_sales_order">
<field name="name">Sales Orders</field>
<field name="res_model">sale.order</field>
<field name="src_model">account.analytic.account</field>
</record>
<record id="account_analytic_account_form_form" model="ir.ui.view">
<field name="name">account.analytic.account.invoice.form.inherit</field>

View File

@ -8,12 +8,18 @@
<field name="arch" type="xml">
<form string="Analytic Account" version="7.0">
<sheet string="Analytic Account">
<div class="oe_right oe_button_box" name="buttons">
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>
<field name="name" class="oe_inline"/>
</h1>
<div name="project"/>
<group>
<h1>
<field name="name" class="oe_inline"/>
</h1>
<div name="project"/>
</div>
<group name="main">
<group>
<field name="partner_id" on_change="on_change_partner_id(partner_id, name)" attrs="{'required':[('type','=','contract')]}"/>
<field name="manager_id"/>

View File

@ -0,0 +1,536 @@
# Norwegian Bokmal 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-09-03 16:43+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_user:0
msgid ""
"Check this if you want the rule to send an email to the responsible person."
msgstr ""
"Sjekk dette hvis du vil at regelen skal sende en e-post til ansvarlig person."
#. module: base_action_rule
#: field:base.action.rule,act_remind_partner:0
msgid "Remind Partner"
msgstr "Påminn partner"
#. module: base_action_rule
#: field:base.action.rule,trg_partner_categ_id:0
msgid "Partner Category"
msgstr "Partner Kategori"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_watchers:0
msgid "Mail to Watchers (CC)"
msgstr "Post til overvåkere (CC)"
#. module: base_action_rule
#: field:base.action.rule,trg_state_to:0
msgid "Button Pressed"
msgstr "Knapp trykket"
#. module: base_action_rule
#: field:base.action.rule,model_id:0
msgid "Object"
msgstr "Objekt"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_email:0
msgid "Mail to these Emails"
msgstr "Send mail til disse e-postene"
#. module: base_action_rule
#: field:base.action.rule,act_state:0
msgid "Set State to"
msgstr "Still stat til"
#. module: base_action_rule
#: field:base.action.rule,act_email_from:0
msgid "Email From"
msgstr "E-post fra"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Body"
msgstr "E-post kropp"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Days"
msgstr "Dager"
#. module: base_action_rule
#: field:base.action.rule,last_run:0
msgid "Last Run"
msgstr "Siste kjøring"
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:328
#, python-format
msgid "Error!"
msgstr "Feil!"
#. module: base_action_rule
#: field:base.action.rule,act_reply_to:0
msgid "Reply-To"
msgstr "Svar til"
#. module: base_action_rule
#: help:base.action.rule,act_email_cc:0
msgid ""
"These people will receive a copy of the future communication between partner "
"and users by email"
msgstr ""
"Disse menneskene vil motta en kopi av den fremtidige kommunikasjon mellom "
"partner og brukere av e-post"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Minutes"
msgstr "Minutter"
#. module: base_action_rule
#: field:base.action.rule,name:0
msgid "Rule Name"
msgstr "Regelnavn"
#. module: base_action_rule
#: help:base.action.rule,act_remind_partner:0
msgid ""
"Check this if you want the rule to send a reminder by email to the partner."
msgstr ""
"Sjekk dette hvis du vil at regelen skal sende en påminnelse via e-post til "
"partneren."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Partner"
msgstr "Forholdene på Modell Partner"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Deadline"
msgstr "Frist"
#. module: base_action_rule
#: field:base.action.rule,trg_partner_id:0
msgid "Partner"
msgstr "Partner"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_subject)s = Object subject"
msgstr "%(object_subject)s = Object subject"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Reminders"
msgstr "E-post påminnelser"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Special Keywords to be Used in the Body"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,trg_state_from:0
msgid "State"
msgstr "Stat"
#. module: base_action_rule
#: model:ir.actions.act_window,help:base_action_rule.base_action_rule_act
msgid ""
"Use automated actions to automatically trigger actions for various screens. "
"Example: a lead created by a specific user may be automatically set to a "
"specific sales team, or an opportunity which still has status pending after "
"14 days might trigger an automatic reminder email."
msgstr ""
"Bruke automatiserte tiltak for å automatisk utløse tiltak for ulike "
"skjermer. Eksempel: en leder er opprettet av en bestemt bruker kan bli satt "
"automatisk til en bestemt salgsteam, eller en mulighet som fortsatt har "
"status påvente etter 14 dager kan utløse en automatisk påminnelse e-post."
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_email:0
msgid "Email-id of the persons whom mail is to be sent"
msgstr "E-post ID av personer som post skal sendes"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Action Rule"
msgstr "Handling regel"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Fields to Change"
msgstr "Felter å endre"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Creation Date"
msgstr "Opprettelsesdato"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Last Action Date"
msgstr "Siste handlingsdato"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Hours"
msgstr "Timer"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_id)s = Object ID"
msgstr "%(object_ID)s = Object ID"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Delay After Trigger Date"
msgstr "Forsinkelse Etter utløser Dato"
#. module: base_action_rule
#: field:base.action.rule,act_remind_attach:0
msgid "Remind with Attachment"
msgstr "Minn med vedlegg"
#. module: base_action_rule
#: constraint:ir.cron:0
msgid "Invalid arguments"
msgstr "Ugyldige argumenter"
#. module: base_action_rule
#: field:base.action.rule,act_user_id:0
msgid "Set Responsible to"
msgstr "Satt Ansvarlig for å"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "None"
msgstr "Ingen"
#. module: base_action_rule
#: help:base.action.rule,act_email_to:0
msgid ""
"Use a python expression to specify the right field on which one than we will "
"use for the 'To' field of the header"
msgstr ""
"Bruk en python uttrykk for å angi høyre feltet på hvilken enn vi vil bruke "
"for Til-feltet på header."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_phone)s = Responsible phone"
msgstr "% (object_bruker_telefonen) s = Ansvarlig telefon"
#. module: base_action_rule
#: view:base.action.rule:0
msgid ""
"The rule uses the AND operator. The model must match all non-empty fields so "
"that the rule executes the action described in the 'Actions' tab."
msgstr ""
"Regelen bruker AND-operatoren. Modellen må matche alle-ikke tomme felt, slik "
"at regelen utfører handlingen som er beskrevet i \"Handlinger\"-fanen."
#. module: base_action_rule
#: field:base.action.rule,trg_date_range_type:0
msgid "Delay type"
msgstr "forsinkelse typen"
#. module: base_action_rule
#: help:base.action.rule,regex_name:0
msgid ""
"Regular expression for matching name of the resource\n"
"e.g.: 'urgent.*' will search for records having name starting with the "
"string 'urgent'\n"
"Note: This is case sensitive search."
msgstr ""
"Regulært uttrykk for matchende navnet på ressursen\n"
"f.eks: \". haster * 'vil søke etter poster som har navn som starter med "
"strengen\" haster \"\n"
"Merk: Dette er små bokstaver søk."
#. module: base_action_rule
#: field:base.action.rule,act_method:0
msgid "Call Object Method"
msgstr "Kall objektmetode"
#. module: base_action_rule
#: field:base.action.rule,act_email_to:0
msgid "Email To"
msgstr "E-post til."
#. module: base_action_rule
#: help:base.action.rule,act_mail_to_watchers:0
msgid ""
"Check this if you want the rule to mark CC(mail to any other person defined "
"in actions)."
msgstr ""
"Sjekk dette hvis du vil at regelen skal merkes CC (mail til en annen person "
"som er definert i handlinger)."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner)s = Partner name"
msgstr "%(partner)s = Navn på partner"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Note"
msgstr "Notat"
#. module: base_action_rule
#: help:base.action.rule,act_email_from:0
msgid ""
"Use a python expression to specify the right field on which one than we will "
"use for the 'From' field of the header"
msgstr ""
"Bruk en python uttrykk for å angi høyre feltet på hvilken enn vi vil bruke "
"for Fra-feltet på overskriften"
#. module: base_action_rule
#: field:base.action.rule,trg_date_range:0
msgid "Delay after trigger date"
msgstr "Forsinkelse etter triggerdato"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions"
msgstr "Betingelser"
#. module: base_action_rule
#: help:base.action.rule,trg_date_range:0
msgid ""
"Delay After Trigger Date,specifies you can put a negative number. If you "
"need a delay before the trigger date, like sending a reminder 15 minutes "
"before a meeting."
msgstr ""
"Forsinkelse Etter utløser Dato, spesifiserer du kan sette et negativt tall. "
"Hvis du trenger en forsinkelse før avtrekkeren dato, som å sende en "
"påminnelse 15 minutter før et møte."
#. module: base_action_rule
#: field:base.action.rule,active:0
msgid "Active"
msgstr "Aktiv"
#. module: base_action_rule
#: code:addons/base_action_rule/base_action_rule.py:329
#, python-format
msgid "No Email ID Found for your Company address!"
msgstr ""
#. module: base_action_rule
#: field:base.action.rule,act_remind_user:0
msgid "Remind Responsible"
msgstr "Minn Ansvarlig"
#. module: base_action_rule
#: help:base.action.rule,sequence:0
msgid "Gives the sequence order when displaying a list of rules."
msgstr "Gir sekvens ordre når du viser en liste over regler."
#. module: base_action_rule
#: selection:base.action.rule,trg_date_range_type:0
msgid "Months"
msgstr "Måneder"
#. module: base_action_rule
#: field:base.action.rule,filter_id:0
msgid "Filter"
msgstr "Filtrer"
#. module: base_action_rule
#: selection:base.action.rule,trg_date_type:0
msgid "Date"
msgstr "Dato"
#. module: base_action_rule
#: help:base.action.rule,server_action_id:0
msgid ""
"Describes the action name.\n"
"eg:on which object which action to be taken on basis of which condition"
msgstr ""
"Beskriver handlingens navn.\n"
"f.eks: på hvilket objekt som tiltak som skal iverksettes på grunnlag av "
"hvilken tilstand"
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_ir_cron
msgid "ir.cron"
msgstr "ir.actions.actions"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_description)s = Object description"
msgstr "% (object_beskrivelse) s = Object beskrivelse"
#. module: base_action_rule
#: constraint:base.action.rule:0
msgid "Error: The mail is not well formated"
msgstr "Feil: E-posten er ikke godt nok formatert"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Actions"
msgstr "E-post handlinger"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Email Information"
msgstr "E-post Informasjon"
#. module: base_action_rule
#: model:ir.model,name:base_action_rule.model_base_action_rule
msgid "Action Rules"
msgstr "Handlingsregler"
#. module: base_action_rule
#: help:base.action.rule,act_mail_body:0
msgid "Content of mail"
msgstr "Innholdet av post"
#. module: base_action_rule
#: field:base.action.rule,trg_user_id:0
msgid "Responsible"
msgstr "Ansvarlig"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(partner_email)s = Partner Email"
msgstr "% (partner_e-post) s = Partner E-post"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_date)s = Creation date"
msgstr "%(object_dato)s = opprettelsesdato"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user_email)s = Responsible Email"
msgstr "% (object_brukerens_e-post) s = Ansvarlig e-post"
#. module: base_action_rule
#: field:base.action.rule,act_mail_body:0
msgid "Mail body"
msgstr "Mail kropp"
#. module: base_action_rule
#: help:base.action.rule,act_remind_user:0
msgid ""
"Check this if you want the rule to send a reminder by email to the user."
msgstr ""
"Kryss av her hvis du vil at regelen skal sende en påminnelse til brukeren "
"via e-post."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Server Action to be Triggered"
msgstr "Server Tiltak som skal Utløses"
#. module: base_action_rule
#: field:base.action.rule,act_mail_to_user:0
msgid "Mail to Responsible"
msgstr "send mail til ansvarlig"
#. module: base_action_rule
#: field:base.action.rule,act_email_cc:0
msgid "Add Watchers (Cc)"
msgstr "Legg til overvåkere (Cc)"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Model Fields"
msgstr "Forholdene på Modell Felter"
#. module: base_action_rule
#: model:ir.actions.act_window,name:base_action_rule.base_action_rule_act
#: model:ir.ui.menu,name:base_action_rule.menu_base_action_rule_form
msgid "Automated Actions"
msgstr "Automatiserte handinger"
#. module: base_action_rule
#: field:base.action.rule,server_action_id:0
msgid "Server Action"
msgstr "Tjenerhandling"
#. module: base_action_rule
#: field:base.action.rule,regex_name:0
msgid "Regex on Resource Name"
msgstr "Regex på Ressursnavn"
#. module: base_action_rule
#: help:base.action.rule,act_remind_attach:0
msgid ""
"Check this if you want that all documents attached to the object be attached "
"to the reminder email sent."
msgstr ""
"Kryss av her om du vil at alle dokumenter knyttet til objektet festes til "
"påminnelse e-post sendt."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on Timing"
msgstr "Vilkår for timing"
#. module: base_action_rule
#: field:base.action.rule,sequence:0
msgid "Sequence"
msgstr "Sekvens"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Actions"
msgstr "Handlinger"
#. module: base_action_rule
#: help:base.action.rule,active:0
msgid ""
"If the active field is set to False, it will allow you to hide the rule "
"without removing it."
msgstr ""
"Hvis det aktive feltet er satt til False, vil det tillate deg å skjule "
"regelen uten å fjerne den."
#. module: base_action_rule
#: view:base.action.rule:0
msgid "%(object_user)s = Responsible name"
msgstr "% (object_bruker) s = Ansvarlig navn"
#. module: base_action_rule
#: field:base.action.rule,create_date:0
msgid "Create Date"
msgstr "Opprettet dato"
#. module: base_action_rule
#: view:base.action.rule:0
msgid "Conditions on States"
msgstr "Vilkår for tilstander"
#. module: base_action_rule
#: field:base.action.rule,trg_date_type:0
msgid "Trigger Date"
msgstr "Uttløser dato"
#~ msgid "Special Keywords to Be Used in The Body"
#~ msgstr "Spesielle nøkkelord for bruk i meldingsinnhold"
#, python-format
#~ msgid "No E-Mail ID Found for your Company address!"
#~ msgstr "Ingen E-post ID funnet for din firmaadresse!"

View File

@ -38,7 +38,7 @@ class crm_configuration(osv.osv_memory):
'module_import_google': fields.boolean("Google (Contacts and Calendar)",
help="""Import google contact in partner address and add google calendar events details in Meeting.
This installs the module import_google."""),
'module_google_map': fields.boolean("add google maps on customer",
'module_google_map': fields.boolean("add google maps on customers",
help="""Locate customers on Google Map.
This installs the module google_map."""),
'group_fund_raising': fields.boolean("Manage Fund Raising",

View File

@ -23,23 +23,5 @@
</field>
</record>
<!-- partner To Opportunity Action -->
<record model="ir.actions.act_window" id="action_view_crm_partner2opportunity">
<field name="name">Create Opportunity</field>
<field name="res_model">crm.partner2opportunity</field>
<field name="view_type">form</field>
<field name="view_mode">form,tree,kanban,calendar</field>
<field name="target">new</field>
</record>
<!-- partner To Opportunity wizard -->
<act_window id="crm_partner2opportunity"
key2="client_action_multi" name="Create Opportunity"
res_model="crm.partner2opportunity" src_model="res.partner"
view_id="view_crm_partner2opportunity"
view_mode="form" target="new" view_type="form"
groups="base.group_sale_salesman"/>
</data>
</openerp>

View File

@ -1,7 +1,3 @@
.oe_form_readonly .oe_notebook {
display: none;
}
.oe_document_page ul, .oe_document_page li {
padding: 2px 8px;
margin: 2px 8px;

View File

@ -8,8 +8,9 @@
<field name="arch" type="xml">
<field name="purchase_ok" position="after">
<field name="event_ok" on_change="onchange_event_ok(event_ok, context)"/>
<label for="event_ok"/>
</field>
<field name='procure_method' position='before'>
<field name='default_code' position='before'>
<field name="event_type_id" attrs="{'readonly': [('event_ok', '=', False)]}"/>
</field>
</field>

View File

@ -20,7 +20,7 @@
<field name="arch" type="xml">
<form string="Employee" version="7.0">
<sheet>
<field name="image_small" widget='image' class="oe_right oe_image_small"/>
<field name="image_medium" widget='image' class="oe_right oe_avatar"/>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1>

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-08-26 14:02+0000\n"
"PO-Revision-Date: 2012-09-03 17:10+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:24+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: hr
#: model:process.node,name:hr.process_node_openerpuser0
@ -195,7 +195,7 @@ msgstr "Vrouw"
#: help:hr.job,expected_employees:0
msgid ""
"Expected number of employees for this job position after new recruitment."
msgstr ""
msgstr "Verwachte aantal werknemers voor deze functie na de nieuwe werving."
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
@ -710,12 +710,12 @@ msgstr "Ondergeschikten"
#. module: hr
#: field:hr.job,no_of_employee:0
msgid "Number of employees currently occupying this job position."
msgstr ""
msgstr "Huidige aantal werknemers welke deze functie bekleden ."
#. module: hr
#: field:hr.job,no_of_recruitment:0
msgid "Number of new employees you expect to recruit."
msgstr ""
msgstr "Verwachte aantal te werven nieuwe werknemers."
#~ msgid "Sunday"
#~ msgstr "Zondag"

View File

@ -32,15 +32,15 @@ class hr_config_settings(osv.osv_memory):
help ="""This installs the module hr_attendance."""),
'module_hr_timesheet': fields.boolean('manage timesheets',
help ="""This installs the module hr_timesheet."""),
'module_hr_holidays': fields.boolean('manage leaves and allocation requests',
'module_hr_holidays': fields.boolean('manage holidays, leaves and allocation requests',
help ="""This installs the module hr_holidays."""),
'module_hr_expense': fields.boolean('manage employees expenses',
help ="""This installs the module hr_expense."""),
'module_hr_recruitment': fields.boolean('manage the recruitment pipe',
'module_hr_recruitment': fields.boolean('manage the recruitment process',
help ="""This installs the module hr_recruitment."""),
'module_hr_contract': fields.boolean('manage contract per employee',
'module_hr_contract': fields.boolean('record contracts per employee',
help ="""This installs the module hr_contract."""),
'module_hr_evaluation': fields.boolean('manage employees periodic evaluation',
'module_hr_evaluation': fields.boolean('organize employees periodic evaluation',
help ="""This installs the module hr_evaluation."""),
'module_hr_payroll': fields.boolean('manage payroll',
help ="""This installs the module hr_payroll."""),

View File

@ -33,6 +33,19 @@
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<separator string="Human Resources Management"/>
<group name="recruitment_grp">
<label for="id" string="Talent Management"/>
<div name="recruitment">
<div>
<field name="module_hr_recruitment" class="oe_inline"/>
<label for="module_hr_recruitment"/>
</div>
<div>
<field name="module_hr_evaluation" class="oe_inline"/>
<label for="module_hr_evaluation"/>
</div>
</div>
</group>
<group>
<label for="id" string="Additional Features"/>
<div>
@ -44,21 +57,6 @@
<field name="module_hr_expense" class="oe_inline"/>
<label for="module_hr_expense"/>
</div>
<div>
<field name="module_hr_evaluation" class="oe_inline"/>
<label for="module_hr_evaluation"/>
</div>
<div>
<field name="module_hr_contract" class="oe_inline"/>
<label for="module_hr_contract"/>
</div>
<div name="hr_payroll">
<field name="module_hr_payroll" class="oe_inline"/>
<label for="module_hr_payroll"/>
<button name="%(open_payroll_modules)d" type="action"
string="Install your country's payroll" icon="gtk-go-forward"
attrs="{'invisible': [('module_hr_payroll','=',False)]}" class="oe_link"/>
</div>
</div>
</group>
<group name="timesheet_grp">
@ -78,12 +76,19 @@
</div>
</div>
</group>
<group name="recruitment_grp">
<label for="id" string="Recruitment"/>
<div name="recruitment">
<group name="contract_grp">
<label for="id" string="Contracts"/>
<div>
<div>
<field name="module_hr_recruitment" class="oe_inline"/>
<label for="module_hr_recruitment"/>
<field name="module_hr_contract" class="oe_inline"/>
<label for="module_hr_contract"/>
</div>
<div name="hr_payroll">
<field name="module_hr_payroll" class="oe_inline"/>
<label for="module_hr_payroll"/>
<button name="%(open_payroll_modules)d" type="action"
string="Install your country's payroll" icon="gtk-go-forward"
attrs="{'invisible': [('module_hr_payroll','=',False)]}" class="oe_link"/>
</div>
</div>
</group>

View File

@ -126,9 +126,9 @@
<field name="active" position="before">
<label for="state"/>
<div>
<field name="state" class="oe_inline"/>
<button class="oe_inline oe_right" name="attendance_action_change" states="present" string="Sign Out" type="object" icon="gtk-go-forward" context="{'type':'sign_out'}" groups="base.group_hr_user"/>
<button class="oe_inline oe_right" name="attendance_action_change" states="absent" string="Sign In" type="object" icon="gtk-go-back" context="{'type':'sign_in'}" groups="base.group_hr_user"/>
<field name="state" class="oe_inline"/> -
<button class="oe_link" name="attendance_action_change" states="present" string="Sign Out" type="object" context="{'type':'sign_out'}" groups="base.group_hr_user"/>
<button class="oe_link" name="attendance_action_change" states="absent" string="Sign In" type="object" context="{'type':'sign_in'}" groups="base.group_hr_user"/>
</div>
</field>
</field>

View File

@ -256,6 +256,10 @@ class hr_expense_line(osv.osv):
res = dict(cr.fetchall())
return res
def _get_uom_id(self, cr, uid, context=None):
result = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'product', 'product_uom_unit')
return result and result[1] or False
_columns = {
'name': fields.char('Expense Note', size=128, required=True),
'date_value': fields.date('Date', required=True),
@ -264,7 +268,7 @@ class hr_expense_line(osv.osv):
'unit_amount': fields.float('Unit Price', digits_compute=dp.get_precision('Product Price')),
'unit_quantity': fields.float('Quantities', digits_compute= dp.get_precision('Product Unit of Measure')),
'product_id': fields.many2one('product.product', 'Product', domain=[('hr_expense_ok','=',True)]),
'uom_id': fields.many2one('product.uom', 'Unit of Measure'),
'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True),
'description': fields.text('Description'),
'analytic_account': fields.many2one('account.analytic.account','Analytic account'),
'ref': fields.char('Reference', size=32),
@ -273,20 +277,31 @@ class hr_expense_line(osv.osv):
_defaults = {
'unit_quantity': 1,
'date_value': lambda *a: time.strftime('%Y-%m-%d'),
'uom_id': _get_uom_id,
}
_order = "sequence, date_value desc"
def onchange_product_id(self, cr, uid, ids, product_id, uom_id, employee_id, context=None):
def onchange_product_id(self, cr, uid, ids, product_id, context=None):
res = {}
if product_id:
product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
res['name'] = product.name
amount_unit = product.price_get('standard_price')[product.id]
res['unit_amount'] = amount_unit
if not uom_id:
res['uom_id'] = product.uom_id.id
res['uom_id'] = product.uom_id.id
return {'value': res}
def onchange_uom(self, cr, uid, ids, product_id, uom_id, context=None):
res = {'value':{}}
if not uom_id or not product_id:
return res
product = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
uom = self.pool.get('product.uom').browse(cr, uid, uom_id, context=context)
if uom.category_id.id != product.uom_id.category_id.id:
res['warning'] = {'title': _('Warning'), 'message': _('Selected Unit of Measure does not belong to the same category as the product Unit of Measure')}
res['value'].update({'uom_id': product.uom_id.id})
return res
hr_expense_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

File diff suppressed because one or more lines are too long

View File

@ -89,7 +89,7 @@
<form string="Expense Lines" version="7.0">
<group>
<group>
<field name="product_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id, context)" context="{'default_hr_expense_ok':1}"/>
<field name="product_id" on_change="onchange_product_id(product_id, context)" context="{'default_hr_expense_ok':1}"/>
<field name="name"/>
<field name="ref"/>
<field domain="[('type','=','normal')]" name="analytic_account" groups="analytic.group_analytic_accounting"/>
@ -99,12 +99,24 @@
<label for="unit_quantity"/>
<div>
<field name="unit_quantity" class="oe_inline"/>
<field name="uom_id" on_change="onchange_product_id(product_id, uom_id, parent.employee_id, context)" class="oe_inline"/>
<field name="uom_id" on_change="onchange_uom(product_id, uom_id, context)" class="oe_inline"/>
</div>
<field name="date_value" />
</group>
</group>
</form>
<tree string="Expense Lines" editable="bottom">
<field name="sequence" invisible="1"/>
<field name="product_id" on_change="onchange_product_id(product_id, context)" context="{'default_hr_expense_ok':1}"/>
<field name="date_value" string="Expense Date"/>
<field name="name"/>
<field name="ref"/>
<field domain="[('type','in',['normal','contract']), ('parent_id','!=',False)]" name="analytic_account" groups="analytic.group_analytic_accounting"/>
<field name="uom_id" on_change="onchange_uom(product_id, uom_id, context)"/>
<field name="unit_amount"/>
<field name="unit_quantity"/>
<field name="total_amount" sum="Total"/>
</tree>
</field>
<group>
<div>

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-19 13:05+0000\n"
"PO-Revision-Date: 2012-09-03 17:12+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:23+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: hr_holidays
#: selection:hr.holidays.status,color_name:0
@ -416,6 +416,8 @@ msgid ""
"When selected, the Allocation/Leave Requests for this type require a second "
"validation to be approved."
msgstr ""
"Wanneer aangevinkt heeft deze toewijzing of aanvraag een tweede controle "
"nodig om te worden goedgekeurd."
#. module: hr_holidays
#: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0
@ -787,6 +789,8 @@ msgid ""
"If you select this checkbox, the system allows the employees to take more "
"leaves than the available ones for this type."
msgstr ""
"Indien u deze optie aanvinkt, dan staat u toe dat werknemers meer verlof "
"aanvragen dan dat ze nog beschikbaar hebben."
#. module: hr_holidays
#: help:hr.holidays.status,leaves_taken:0

View File

@ -10,10 +10,6 @@
date_to: !eval time.strftime('%Y-%m-11 19:00:00')
employee_id: hr.employee_fp
type: remove
-
I confirmed the holiday request by clicking on "Confirm" button.
-
!workflow {model: hr.holidays, action: confirm, ref: hr_holidays_employee1_cl}
-
I find a small mistake on my leave request to I click on "Refuse" button to correct a mistake.
-

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-01-22 19:09+0000\n"
"PO-Revision-Date: 2012-09-03 17:17+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:33+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: hr_payroll
#: field:hr.payslip.line,condition_select:0
@ -357,7 +357,7 @@ msgstr "Half-jaarlijks"
#. module: hr_payroll
#: view:hr.salary.rule:0
msgid "Children Definition"
msgstr ""
msgstr "Definitie onderliggende"
#. module: hr_payroll
#: report:paylip.details:0 report:payslip:0
@ -465,7 +465,7 @@ msgstr ""
#. module: hr_payroll
#: view:hr.payslip:0
msgid "Worked Days & Inputs"
msgstr ""
msgstr "Gewerkte dagen & ingaves"
#. module: hr_payroll
#: field:hr.payslip,details_by_salary_rule_category:0
@ -522,7 +522,7 @@ msgstr "Bereik"
#: model:ir.actions.act_window,name:hr_payroll.action_view_hr_payroll_structure_tree
#: model:ir.ui.menu,name:hr_payroll.menu_hr_payroll_structure_tree
msgid "Salary Structures Hierarchy"
msgstr ""
msgstr "Salaris structuur hiërarchie"
#. module: hr_payroll
#: view:hr.payslip:0
@ -769,7 +769,7 @@ msgstr "Contributie"
#: code:addons/hr_payroll/hr_payroll.py:347
#, python-format
msgid "Refund Payslip"
msgstr ""
msgstr "Credit salarisstrook"
#. module: hr_payroll
#: field:hr.rule.input,input_id:0
@ -852,7 +852,7 @@ msgstr "Salaris Structuur"
#. module: hr_payroll
#: field:hr.contribution.register,register_line_ids:0
msgid "Register Line"
msgstr ""
msgstr "Register regel"
#. module: hr_payroll
#: view:hr.payslip:0 view:hr.payslip.employees:0
@ -1083,7 +1083,7 @@ msgstr "Totaal"
#: help:hr.payslip.line,appears_on_payslip:0
#: help:hr.salary.rule,appears_on_payslip:0
msgid "Used for the display of rule on payslip"
msgstr ""
msgstr "Wordt gebruikt om de regel van de salaristrook weer te geven"
#. module: hr_payroll
#: view:hr.payslip.line:0
@ -1093,7 +1093,7 @@ msgstr "Zoek loonafschrift regels"
#. module: hr_payroll
#: view:hr.payslip:0
msgid "Details By Salary Rule Category"
msgstr ""
msgstr "details per salarisregel categorie"
#. module: hr_payroll
#: help:hr.payslip.input,code:0 help:hr.payslip.worked_days,code:0

View File

@ -77,7 +77,17 @@
</search>
</field>
</record>
<record model="ir.actions.act_window" id="act_analytic_cost_revenue">
<field name="context">{'search_default_account_id': [active_id], 'default_account_id': active_id, 'search_default_group_date': 1, 'search_default_group_journal': 1}</field>
<field name="name">Costs &amp; Revenues</field>
<field name="res_model">account.analytic.line</field>
<field name="src_model">account.analytic.account</field>
<field name="view_mode">tree,form</field>
<field name="view_type">form</field>
</record>
<record id="account_analytic_account_timesheet_form" model="ir.ui.view">
<field name="name">account.analytic.account.invoice.form</field>
<field name="model">account.analytic.account</field>
@ -87,6 +97,12 @@
<field name="use_timesheets"/>
<label for="use_timesheets"/>
</xpath>
<xpath expr='//div[@name="buttons"]' position='inside'>
<button string="Costs and Revenues"
name="%(act_analytic_cost_revenue)d"
type="action"/>
</xpath>
</field>
</record>

View File

@ -122,13 +122,13 @@
<field name="search_view_id" ref="account_analytic_line_to_invoice_view_filter"/>
</record>
<act_window
domain="[('invoice_id','=',False),('to_invoice','&lt;&gt;',False), ('journal_id.type', '=', 'general')]"
context="{'search_default_account_id': [active_id], 'default_account_id': active_id,'search_default_to_invoice': 1}"
id="act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice"
name="Timesheet Lines to Invoice"
res_model="account.analytic.line"
src_model="account.analytic.account"/>
<record id="act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice" model="ir.actions.act_window">
<field name="domain">[]</field>
<field name="context">{'search_default_account_id': [active_id], 'default_account_id': active_id,'search_default_to_invoice': 1}</field>
<field name="name">To Invoice</field>
<field name="res_model">account.analytic.line</field>
<field name="src_model">account.analytic.account</field>
</record>
</data>
</openerp>

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-24 17:37+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"PO-Revision-Date: 2012-09-03 22:20+0000\n"
"Last-Translator: Nicolas JEUDY <njeudy@simplee.fr>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:42+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105
@ -38,7 +38,7 @@ msgstr "(Prochainement)"
#. module: import_sugarcrm
#: field:import.sugarcrm,document:0
msgid "Documents"
msgstr ""
msgstr "Documents"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@ -58,7 +58,7 @@ msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,contact:0
msgid "Contacts"
msgstr ""
msgstr "Contacts"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@ -79,7 +79,7 @@ msgstr "Nom de l'instance"
#. module: import_sugarcrm
#: field:import.sugarcrm,project_task:0
msgid "Project Tasks"
msgstr ""
msgstr "Tâches du projet"
#. module: import_sugarcrm
#: field:import.sugarcrm,email_from:0
@ -134,27 +134,27 @@ msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,employee:0
msgid "Employee"
msgstr ""
msgstr "Employé"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Document"
msgstr ""
msgstr "Document"
#. module: import_sugarcrm
#: help:import.sugarcrm,document:0
msgid "Check this box to import sugarCRM Documents into OpenERP documents"
msgstr ""
msgstr "Cochez cette case pour importer les documents SugarCRM dans OpenERP"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "Import Data From SugarCRM"
msgstr ""
msgstr "Importee les données de SugarCRM"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "CRM"
msgstr ""
msgstr "CRM"
#. module: import_sugarcrm
#: view:import.message:0
@ -166,7 +166,7 @@ msgstr ""
#. module: import_sugarcrm
#: field:import.sugarcrm,call:0
msgid "Calls"
msgstr ""
msgstr "Appels"
#. module: import_sugarcrm
#: view:import.sugarcrm:0
@ -176,7 +176,7 @@ msgstr ""
#. module: import_sugarcrm
#: view:import.message:0
msgid "_Ok"
msgstr ""
msgstr "_Valider"
#. module: import_sugarcrm
#: help:import.sugarcrm,opportunity:0
@ -184,11 +184,13 @@ msgid ""
"Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads "
"and Opportunities"
msgstr ""
"Cochez cette case pour importer les Pistes et les Opportunités SugarCRM dans "
"OpenERP."
#. module: import_sugarcrm
#: field:import.sugarcrm,email_history:0
msgid "Email and Note"
msgstr ""
msgstr "Email et note"
#. module: import_sugarcrm
#: help:import.sugarcrm,url:0
@ -208,12 +210,12 @@ msgstr ""
#. module: import_sugarcrm
#: view:import.sugarcrm:0
msgid "_Import"
msgstr ""
msgstr "_Importer"
#. module: import_sugarcrm
#: field:import.sugarcrm,user:0
msgid "User"
msgstr ""
msgstr "Utilisateur"
#. module: import_sugarcrm
#: code:addons/import_sugarcrm/import_sugarcrm.py:1105

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-09 00:36+0000\n"
"PO-Revision-Date: 2012-05-10 17:39+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-09-03 17:14+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:40+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: mail
#: field:mail.compose.message,subtype:0 field:mail.message,subtype:0
@ -196,7 +196,7 @@ msgstr "Ontvangers"
#. module: mail
#: model:ir.model,name:mail.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
msgstr "E-mail samenstellen wizard"
#. module: mail
#: field:mail.compose.message,res_id:0 field:mail.message,res_id:0

View File

@ -58,11 +58,11 @@
<field name="arch" type="xml">
<form string="Group Form" version="7.0">
<sheet class="openerp_mail_group_sheet">
<field name="image_small" widget='image' class="oe_avatar oe_left"/>
<field name="image" widget='image' class="oe_avatar oe_left" options='{"preview_image": "image_medium"}'/>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" string="Group Name"/>
</div>
<label for="name" string="Group Name"/>
</div>
<h1><field name="name"/></h1>
<div name="alias_box" colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}">
<field name="alias_id" invisible="1" required="0"/>
@ -123,7 +123,7 @@
<!-- group record !-->
<record id="action_view_groups" model="ir.actions.act_window">
<field name="name">Groups</field>
<field name="name">Join a group</field>
<field name="res_model">mail.group</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
@ -132,6 +132,6 @@
<!-- left-side menu: Groups !-->
<menuitem id="mail_group_root" parent="mail_feeds_main" sequence="12" name="My Groups"/>
<menuitem id="mail_allgroups" parent="mail_feeds" sequence="12" action="action_view_groups"/>
<menuitem id="mail_allgroups" parent="mail_group_root" sequence="100" action="action_view_groups"/>
</data>
</openerp>

View File

@ -3,7 +3,7 @@
<data>
<!-- Top menu item -->
<menuitem name="Feeds"
<menuitem name="Home"
id="mail_feeds_main"
groups="base.group_user"
sequence="10"/>
@ -11,8 +11,18 @@
<!-- Left-side menu: Feeds -->
<menuitem id="mail_feeds" name="Feeds" parent="mail_feeds_main" groups="base.group_user" sequence="10"/>
<menuitem id="mail_wallfeeds" name="News Feed" parent="mail_feeds" action="action_mail_all_feeds" sequence="10"/>
<menuitem id="mail_myfeeds" name="My Feeds" parent="mail_feeds" action="action_mail_my_feeds" sequence="11"/>
<record id="mail_wallfeeds" model="ir.ui.menu">
<field name="name">My Feeds</field>
<field name="sequence" eval="10"/>
<field name="action" ref="action_mail_all_feeds"/>
<field name="parent_id" ref="mail_feeds"/>
</record>
<record id="mail_myfeeds" model="ir.ui.menu">
<field name="name">My Posts</field>
<field name="sequence" eval="11"/>
<field name="action" ref="action_mail_my_feeds"/>
<field name="parent_id" ref="mail_feeds"/>
</record>
</data>
</openerp>

View File

@ -46,7 +46,6 @@ invoice and send propositions for membership renewal.
'membership_view.xml',
'report/report_membership_view.xml',
'process/membership_process.xml',
'membership_data.xml'
],
'demo': ['membership_demo.xml'],
'test': ['test/test_membership.yml'],

View File

@ -146,7 +146,7 @@ class membership_line(osv.osv):
'date_to': fields.date('To', readonly=True),
'date_cancel': fields.date('Cancel date'),
'date': fields.date('Join Date', help="Date on which member has joined the membership"),
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Product Price'), required=True, help='Amount for the membership'),
'member_price': fields.float('Membership Fee', digits_compute= dp.get_precision('Product Price'), required=True, help='Amount for the membership'),
'account_invoice_line': fields.many2one('account.invoice.line', 'Account Invoice line', readonly=True),
'account_invoice_id': fields.related('account_invoice_line', 'invoice_id', type='many2one', relation='account.invoice', string='Invoice', readonly=True),
'state': fields.function(_state,
@ -444,14 +444,6 @@ class Partner(osv.osv):
Partner()
class product_template(osv.osv):
_inherit = 'product.template'
_columns = {
'member_price': fields.float('Member Price', digits_compute= dp.get_precision('Product Price')),
}
product_template()
class Product(osv.osv):
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):

View File

@ -1,31 +0,0 @@
<?xml version="1.0" ?>
<openerp>
<data noupdate="1">
<!--
Price type
-->
<record model="product.price.type" id="product_price_type_memberprice" >
<field name="name">Member Price</field>
<field name="field">member_price</field>
</record>
<!--
Price list
-->
<record model="product.pricelist" id="list1m">
<field name="name">Member Sale Pricelist</field>
<field name="type">sale</field>
</record>
<record model="product.pricelist.version" id="ver1m">
<field name="pricelist_id" ref="list1m"/>
<field name="name">Member Sale Pricelist Version</field>
</record>
<record model="product.pricelist.item" id="item1m">
<field name="price_version_id" ref="ver1m"/>
<field name="base" ref="product_price_type_memberprice" />
<field name="name">Member Sale Pricelist Line</field>
</record>
</data>
</openerp>

View File

@ -88,11 +88,11 @@
<field name="arch" type="xml">
<page string="Information" position="after">
<page string="Membership">
<group>
<group col="1">
<group>
<field name="membership" readonly="0"/>
</group>
<group>
<group attrs="{'invisible':[('membership','=',False)]}">
<field name="membership_date_from" readonly="0" attrs="{'required':[('membership','=',True)]}"/>
<field name="membership_date_to" readonly="0" attrs="{'required':[('membership','=',True)]}"/>
</group>
@ -270,17 +270,5 @@
<!-- MEMBERSHIP/REPORTING -->
<menuitem name="Reporting" id="base.menu_report_association" parent="base.menu_association" sequence="20"/>
<!-- View for product.product object inherited from product module -->
<record model="ir.ui.view" id="view_product_form_inherit1">
<field name="name">product.normal.form</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<field name="list_price" position="after">
<field name="member_price" groups="base.group_user"/>
</field>
</field>
</record>
</data>
</openerp>

View File

@ -501,7 +501,7 @@
<field name="res_model">mrp.bom</field>
<field name="view_type">form</field>
<field name="view_id" ref="mrp_bom_component_tree_view"/>
<field name="domain">[('bom_id','!=',False)]</field>
<field name="domain">[]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a component to a bill of material.
@ -524,6 +524,7 @@
action="mrp_bom_form_action2"
id="menu_mrp_bom_form_action2"
parent="menu_mrp_configuration"
groups="base.group_no_one"
sequence="20"/>
<record id="action2" model="ir.actions.act_window">
@ -647,50 +648,42 @@
<field name="state" widget="statusbar" statusbar_visible="draft,ready,in_production,done" statusbar_colors='{"picking_except":"red","confirmed":"blue"}'/>
</header>
<sheet>
<label for="product_id" class="oe_edit_only"/>
<h1>
<field name="product_id" on_change="product_id_change(product_id)" domain="[('bom_ids','&lt;&gt;',False),('bom_ids.bom_id','=',False)]" class="oe_inline"/>
</h1>
<label for="product_qty" class="oe_edit_only"/>
<h2>
<field name="product_qty" class="oe_inline"/>
<field name="product_uom" groups="product.group_uom" class="oe_inline"/>
<button type="action"
icon="terp-accessories-archiver+"
name="%(mrp.action_change_production_qty)d"
string="Change Qty" states="ready,confirmed" class="oe_inline"/>
</h2>
<div groups="mrp.group_mrp_routings">
<label for="routing_id" class="oe_edit_only"/>
<h2><field name="routing_id" class="oe_inline"/></h2>
<div class="oe_title">
<h1>Manufacturing Order <field name="name" class="oe_inline"/></h1>
</div>
<group>
<group>
<field name="name"/>
<field name="date_planned"/>
<field name="origin"/>
</group>
<group>
<field name="user_id"/>
<field name="product_id" on_change="product_id_change(product_id)" domain="[('bom_ids','&lt;&gt;',False),('bom_ids.bom_id','=',False)]" class="oe_inline"/>
<label for="product_qty"/>
<div>
<field name="product_qty" class="oe_inline"/>
<field name="product_uom" groups="product.group_uom" class="oe_inline"/>
<button type="action"
icon="terp-accessories-archiver+"
name="%(mrp.action_change_production_qty)d"
string="(Update)" states="ready,confirmed" class="oe_edit_only oe_link"/>
</div>
<label for="product_uos_qty" groups="product.group_uos"/>
<div groups="product.group_uos">
<field name="product_uos_qty" class="oe_inline"/>
<label string="-" attrs="{'invisible':[('product_uos','=',False)]}" class="oe_inline"/>
<field name="product_uos" class="oe_inline"/>
</div>
<field name="date_planned"/>
</group>
<group>
<field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/>
<field name="routing_id" class="oe_inline" groups="mrp.group_mrp_routings"/>
<field name="user_id"/>
<field name="origin"/>
</group>
<group groups="stock.group_locations">
<field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/>
<field name="location_dest_id" domain="[('usage','=','internal')]"/>
</group>
</group>
<notebook>
<page string="Consumed Products">
<group>
<group>
<field name="bom_id" domain="[('product_id','=',product_id)]" context="{'default_product_id': product_id}" on_change="bom_id_change(bom_id)"/>
</group>
<group groups="stock.group_locations">
<field name="location_src_id" domain="[('usage','=','internal')]" on_change="location_id_change(location_src_id,location_dest_id)"/>
<field name="location_dest_id" domain="[('usage','=','internal')]"/>
</group>
</group>
<group>
<group string="Products to Consume">
<field name="move_lines" domain="[('state','&lt;&gt;', ('done', 'cancel'))]" nolabel="1">

23
addons/note/__init__.py Normal file
View File

@ -0,0 +1,23 @@
# -*- 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 note

View File

@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Notes',
'version': '0.1',
'category': 'Tools',
'description': """
This module allows users to create their own notes inside OpenERP
=================================================================
Use notes to write meeting minutes, organize ideas, organize personnal todo
lists, etc. Each user manages his own personnal notes. Notes are available to
their authors only, but they can share notes to others users so that several
people can work on the same note in real time. It's very efficient to share
meeting minutes.
Notes can be found in the 'Home' menu.
""",
'author': 'OpenERP SA',
'website': 'http://openerp.com',
'summary': 'Sticky Notes, Collaborative',
'depends': [
'base_tools',
'mail',
'pad',
],
'data': [
'security/note_security.xml',
'security/ir.model.access.csv',
'note_data.xml',
'note_view.xml',
],
'demo': [
'note_demo.xml',
],
'css': [
'static/src/css/note.css',
],
'installable': True,
'application': True,
'auto_install': False,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

90
addons/note/note.py Normal file
View File

@ -0,0 +1,90 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp.osv import osv, fields
from tools.translate import _
class note_stage(osv.osv):
""" Category of Note """
_name = "note.stage"
_description = "Note Stage"
_columns = {
'name': fields.char('Category Name', size=64, required=True),
'sequence': fields.integer('Sequence', help="Used to order the note stages"),
'user_id': fields.many2one('res.users', 'Owner', help="Owner of the note stage.", required=True, readonly=True),
'fold': fields.boolean('Folded'),
}
_order = 'sequence asc'
_defaults = {
'fold': 0,
'user_id': lambda self, cr, uid, ctx: uid,
'sequence' : 1,
}
class note_note(osv.osv):
""" Note """
_name = 'note.note'
_inherit = ['mail.thread','pad.common']
_pad_fields = ['note_pad']
_description = "Note"
def _get_note_first_line(self, cr, uid, ids, name, args, context=None):
res = {}
for note in self.browse(cr, uid, ids, context=context):
res[note.id] = (note.note or '').strip().split('\n')[0]
return res
def _get_default_stage_id(self,cr,uid,context=None):
ids = self.pool.get('note.stage').search(cr,uid,[('user_id','=',uid)])
return ids and ids[0] or False
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
access_rights_uid = access_rights_uid or uid
stage_obj = self.pool.get('note.stage')
# only show stage groups not folded and owned by user
search_domain = [('fold', '=', False),('user_id', '=', uid)]
stage_ids = stage_obj._search(cr, uid, search_domain, order=self._order, access_rights_uid=access_rights_uid, context=context)
result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context)
return result
_columns = {
'name': fields.function(_get_note_first_line, string='Note Summary', type="text", store=True),
'note': fields.text('Pad Content'),
'note_pad_url': fields.char('Pad Url', size=250),
'sequence': fields.integer('Sequence'),
'stage_id': fields.many2one('note.stage', 'Stage'),
'active': fields.boolean('Active'),
'color': fields.integer('Color Index'),
# to be replaced by message_follower_ids
'follower_ids': fields.many2many('res.users', 'mail_subscription', 'res_id', 'user_id', 'Followers')
}
_defaults = {
'active' : 1,
'stage_id' : _get_default_stage_id,
'note_pad_url': lambda self, cr, uid, context: self.pad_generate_url(cr, uid, context),
}
_order = 'sequence asc'
_group_by_full = {
'stage_id' : _read_group_stage_ids,
}

24
addons/note/note_data.xml Normal file
View File

@ -0,0 +1,24 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="note.stage" id="note_stage_01">
<field name="name">Todo today</field>
<field name="sequence">1</field>
<field name="user_id" eval="ref('base.user_root')"/>
</record>
<record model="note.stage" id="note_stage_02">
<field name="name">Todo later</field>
<field name="sequence">2</field>
<field name="user_id" eval="ref('base.user_root')"/>
</record>
<record model="note.stage" id="note_stage_03">
<field name="name">For Info</field>
<field name="sequence">3</field>
<field name="user_id" eval="ref('base.user_root')"/>
</record>
</data>
</openerp>

152
addons/note/note_demo.xml Normal file
View File

@ -0,0 +1,152 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="note_1" model="note.note">
<field name="note"><![CDATA[Buying list
* coffee
* fruits
* ice cream
* towels
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_01"/>
<field name="user_id" ref="base.user_root"/>
<field name="color">2</field>
</record>
<record id="note_2" model="note.note">
<field name="note"><![CDATA[Buying list
* more coffee
* tee
* sugar
* towels
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_01"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_3" model="note.note">
<field name="note"><![CDATA[Idea to develop
* Phasellus vel eros lorem, vel tristique risus.
* Cras elementum risus ut massa bibendum ac sollicitudin quam feugiat.
* Phasellus ullamcorper mauris quis lectus volutpat non dignissim elit lacinia.
Nulla vitae metus risus, nec placerat diam.
Proin quis nunc sodales dolor tempus eleifend.
Praesent iaculis libero ut orci egestas a dapibus libero ornare.
* Proin at nisl sit amet ante feugiat euismod nec at orci.
* Nam aliquam massa id neque tincidunt eu pellentesque neque euismod.
* Proin eget mi sit amet erat tempus pellentesque.
* Phasellus congue est lectus, vitae semper arcu.
* Suspendisse sodales tortor ut odio volutpat fringilla.
* Vestibulum mattis est quis risus dignissim sit amet faucibus nisl mattis.
* Pellentesque ullamcorper neque neque, vitae rhoncus massa.
Ut id magna massa, quis scelerisque sapien.
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_01"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_4" model="note.note">
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_02"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_5" model="note.note">
<field name="note"><![CDATA[New computer specs
* Motherboard
according to processor
* Processor
need to decide
* Graphic card
with great performance for games !
* Hard drive
big, for lot of internet backups
* Tower
silent, better when watching films
* Blueray drive ?
is it interesting yet ?
* Screen
a big one, full of pixels, of course !
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_02"/>
<field name="user_id" ref="base.user_root"/>
<field name="color">3</field>
</record>
<record id="note_6" model="note.note">
<field name="note"><![CDATA[Read those books
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_02"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_7" model="note.note">
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_03"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="note_8" model="note.note">
<field name="note"><![CDATA[Read those books
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_03"/>
<field name="user_id" ref="base.user_root"/>
<field name="color">5</field>
</record>
<record id="note_9" model="note.note">
<field name="note"><![CDATA[Read some documentation about OpenERP before diving into the code
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_03"/>
<field name="user_id" ref="base.user_root"/>
<field name="color">7</field>
</record>
<record id="note_10" model="note.note">
<field name="note"><![CDATA[Read those books
* Open ERP Version 6: a modern approach to integrated business management
* Open ERP for Retail and Industrial Management
]]>
</field>
<field name="note_pad"></field>
<field name="stage_id" ref="note_stage_03"/>
<field name="user_id" ref="base.user_root"/>
</record>
</data>
</openerp>

136
addons/note/note_view.xml Normal file
View File

@ -0,0 +1,136 @@
<?xml version="1.0"?>
<openerp>
<data>
<menuitem name="Organizer" id="note_my_stuff" parent="mail.mail_feeds_main"/>
<!-- Note Stage Form View -->
<record model="ir.ui.view" id="view_note_stage_form">
<field name="name">note.stage.form</field>
<field name="model">note.stage</field>
<field name="arch" type="xml">
<form string="Stage of Notes" version="7.0">
<group>
<field name="name"/>
</group>
</form>
</field>
</record>
<!-- Note Stage Tree View -->
<record model="ir.ui.view" id="view_note_stage_tree">
<field name="name">note.stage.tree</field>
<field name="model">note.stage</field>
<field name="field_parent"></field>
<field name="arch" type="xml">
<tree string="Stages of notes" editable="bottom">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="fold"/>
</tree>
</field>
</record>
<!-- Note Stage Action -->
<record model="ir.actions.act_window" id="action_note_stage">
<field name="name">Stages</field>
<field name="res_model">note.stage</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('user_id','=',uid)]</field>
</record>
<menuitem name="Categories"
id="menu_notes_stage" parent="note_my_stuff" action="action_note_stage" sequence="40" groups="base.group_no_one"/>
<!-- New Note Kanban View -->
<record model="ir.ui.view" id="view_note_note_kanban">
<field name="name">note.note.kanban</field>
<field name="model">note.note</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id" class="oe_notes" version="7.0">
<field name="color"/>
<field name="sequence"/>
<field name="name"/>
<field name="stage_id"/>
<field name="active"/>
<field name="note"/>
<field name="follower_ids"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
<!-- dropdown menu -->
<div class="oe_dropdown_toggle oe_dropdown_kanban">
<span class="oe_e">í</span>
<ul class="oe_dropdown_menu">
<li><a type="edit">Edit...</a></li>
<li><a type="delete">Delete</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
</div>
<!-- kanban note -->
<div class="oe_kanban_content">
<!-- title -->
<field name="name"/>
</div>
<div class="oe_kanban_project_avatars">
<t t-foreach="record.follower_ids.raw_value" t-as="follower">
<img t-att-src="kanban_image('res.users', 'image_small', follower)" t-att-data-member_id="follower"/>
</t>
</div>
</div>
<div class="oe_clear"></div>
</t>
</templates>
</kanban>
</field>
</record>
<!-- New Note Form View -->
<record model="ir.ui.view" id="view_note_note_form">
<field name="name">note.note.form</field>
<field name="model">note.note</field>
<field name="arch" type="xml">
<form string="Note" version="7.0">
<header>
<field name="stage_id" domain="[('user_id','=',uid)]" widget="statusbar" clickable="1"/>
</header>
<field name="note"/>
<field name="note_pad_url" invisible="1"/>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<!-- Search Note -->
<record model="ir.ui.view" id="view_note_note_filter">
<field name="name">note.note.search</field>
<field name="model">note.note</field>
<field name="arch" type="xml">
<search string="Notes">
<field name="note" string="Note"/>
<field name="stage_id"/>
<group expand="0" string="Group By...">
<filter icon="terp-personal" string="Creator" help="By Creators" context="{'group_by':'create_uid'}"/>
<filter icon="terp-stock_symbol-selection" string="Stage" help="By Note Category" context="{'group_by':'stage_id'}"/>
</group>
</search>
</field>
</record>
<!-- Note Action -->
<record model="ir.actions.act_window" id="action_note_note">
<field name="name">Notes</field>
<field name="res_model">note.note</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="search_view_id" ref="view_note_note_filter"/>
</record>
<menuitem name="Notes" id="note_notes" parent="note_my_stuff" sequence="20" action="action_note_note"/>
</data>
</openerp>

View File

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_note_stage_user,note.stage user,model_note_stage,base.group_user,1,1,1,1
access_note_note_user,note.note user,model_note_note,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_note_stage_user note.stage user model_note_stage base.group_user 1 1 1 1
3 access_note_note_user note.note user model_note_note base.group_user 1 1 1 1

View File

@ -0,0 +1,12 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="note_note_global" model="ir.rule">
<field name="name">My notes</field>
<field ref="model_note_note" name="model_id"/>
<field eval="1" name="global"/>
<field name="domain_force">[('follower_ids','=',user.id)]</field>
</record>
</data>
</openerp>

View File

@ -0,0 +1,3 @@
note.css: note.sass
sass -t expanded note.sass note.css

View File

@ -0,0 +1,79 @@
.openerp .oe_notes .oe_fold_column .oe_kanban_card {
text-decoration:none;
color:#000;
display:block;
padding:1em;
margin-right: 1em;
margin-bottom: 1em;
-moz-box-shadow:5px 5px 7px rgba(33,33,33,1);
-webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7);
box-shadow: 5px 5px 7px rgba(33,33,33,.7);
}
.openerp .oe_notes .oe_kanban_record .oe_kanban_card {
-webkit-transform: rotate(-2deg);
-o-transform: rotate(-2deg);
-moz-transform:rotate(-2deg);
}
.openerp .oe_notes .oe_kanban_record:nth-of-type(even) .oe_kanban_card {
-webkit-transform: rotate(1deg);
-o-transform: rotate(1deg);
-moz-transform:rotate(1deg);
}
.openerp .oe_notes .oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
-webkit-transform: rotate(4deg);
-o-transform: rotate(4deg);
-moz-transform:rotate(4deg);
}
.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record .oe_kanban_card {
-webkit-transform: rotate(2deg);
-o-transform: rotate(2deg);
-moz-transform:rotate(2deg);
}
.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(even) .oe_kanban_card {
-webkit-transform: rotate(-3deg);
-o-transform: rotate(-3deg);
-moz-transform:rotate(-3deg);
}
.openerp .oe_notes .oe_kanban_column:nth-of-type(even) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
-webkit-transform: rotate(1deg);
-o-transform: rotate(1deg);
-moz-transform:rotate(1deg);
}
.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record .oe_kanban_card {
-webkit-transform: rotate(-2deg);
-o-transform: rotate(-2deg);
-moz-transform:rotate(-2deg);
}
.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(even) .oe_kanban_card {
-webkit-transform: rotate(1deg);
-o-transform: rotate(1deg);
-moz-transform:rotate(1deg);
}
.openerp .oe_notes .oe_kanban_column:nth-of-type(3n) .oe_kanban_record:nth-of-type(3n) .oe_kanban_card {
-webkit-transform: rotate(-1deg);
-o-transform: rotate(-1deg);
-moz-transform:rotate(-1deg);
}
.openerp .oe_kanban_column .oe_fold_column .oe_kanban_card:hover,
.openerp .oe_kanban_column .oe_fold_column .oe_kanban_card:focus
{
box-shadow:10px 10px 7px rgba(0,0,0,.7);
-moz-box-shadow:10px 10px 7px rgba(0,0,0,.7);
-webkit-box-shadow: 10px 10px 7px rgba(0,0,0,.7);
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-o-transform: rotate(0);
position:relative;
z-index:5;
}

View File

@ -0,0 +1,137 @@
@charset "utf-8"
// Variables {{{
$section-title-color: #8786b7
$tag-bg-light: #f0f0fa
$tag-bg-dark: #8786b7
$tag-border: #afafb6
$tag-border-selected: #a6a6fe
$hover-background: #f0f0fa
$link-color: #8a89ba
$sheet-max-width: 860px
// }}}
// Mixins {{{
@font-face
font-family: 'mnmliconsRegular'
src: url('/web/static/src/font/mnmliconsv21-webfont.eot') format('eot')
src: url('/web/static/src/font/mnmliconsv21-webfont.woff') format('woff')
src: url('/web/static/src/font/mnmliconsv21-webfont.ttf') format('truetype')
src: url('/web/static/src/font/mnmliconsv21-webfont.svg') format('svg') active
font-weight: normal
font-style: normal
@font-face
font-family: 'EntypoRegular'
src: url('/web/static/src/font/entypo-webfont.eot') format('eot')
src: url('/web/static/src/font/entypo-webfont.eot?#iefix') format('embedded-opentype')
src: url('/web/static/src/font/entypo-webfont.woff') format('woff')
src: url('/web/static/src/font/entypo-webfont.ttf') format('truetype')
src: url('/web/static/src/font/entypo-webfont.svg') format('svg') active
font-weight: normal
font-style: normal
@mixin reset()
border: none
padding: 0
margin: 0
background: none
@include radius(none)
@include box-shadow(none)
@mixin vertical-gradient($startColor: #555, $endColor: #333)
background-color: $startColor
background-image: -webkit-gradient(linear, left top, left bottom, from($startColor), to($endColor)) /* Saf4+, Chrome */
background-image: -webkit-linear-gradient(top, $startColor, $endColor) /* Chrome 10+, Saf5.1+, iOS 5+ */
background-image: -moz-linear-gradient(top, $startColor, $endColor) /* FF3.6 */
background-image: -ms-linear-gradient(top, $startColor, $endColor) /* IE10 */
background-image: -o-linear-gradient(top, $startColor, $endColor) /* Opera 11.10+ */
background-image: linear-gradient(to bottom, $startColor, $endColor)
@mixin radial-gradient($gradient)
background-position: center center
background-image: -webkit-radial-gradient(circle, $gradient)
background-image: -moz-radial-gradient($gradient)
background-image: -ms-radial-gradient($gradient)
background-image: radial-gradient($gradient)
@mixin radius($radius: 5px)
-moz-border-radius: $radius
-webkit-border-radius: $radius
border-radius: $radius
@mixin box-shadow($bsval: 0px 1px 4px #777)
-moz-box-shadow: $bsval
-webkit-box-shadow: $bsval
box-shadow: $bsval
@mixin transition($transval: (border linear 0.2s, box-shadow linear 0.2s))
-webkit-transition: $transval
-moz-transition: $transval
-ms-transition: $transval
-o-transition: $transval
transition: $transval
@mixin opacity($opacity: .5)
filter: alpha(opacity=$opacity * 100)
opacity: $opacity
@mixin background-clip($clip: padding-box)
-webkit-background-clip: $clip
-moz-background-clip: $clip
background-clip: $clip
@mixin box-sizing($type: content)
// type = border || content || padding
-webkit-box-sizing: #{$type}-box
-moz-box-sizing: #{$type}-box
-ms-box-sizing: #{$type}-box
box-sizing: #{$type}-box
// Transforms the (readable) text of an inline element into an mmlicons icon,
// allows for actual readable text in-code (and in readers?) with iconic looks
@mixin text-to-icon($icon-name, $color: #404040)
font-size: 1px
letter-spacing: -1px
color: transparent
&:before
font: 21px "mnmliconsRegular"
content: $icon-name
color: $color
// }}}
// CSS animation bounces {{{
@-moz-keyframes bounce
0%
-moz-transform: scale(0)
opacity: 0
50%
-moz-transform: scale(1.3)
opacity: 0.4
75%
-moz-transform: scale(0.9)
opacity: 0.7
100%
-moz-transform: scale(1)
opacity: 1
@-webkit-keyframes bounce
0%
-webkit-transform: scale(0)
opacity: 0
50%
-webkit-transform: scale(1.3)
opacity: 0.4
75%
-webkit-transform: scale(0.9)
opacity: 0.7
100%
-webkit-transform: scale(1)
opacity: 1
// }}}
.oe_kanban_color_2
background-color:red
// au BufWritePost,FileWritePost *.sass :!sass --style expanded --line-numbers <afile> > "%:p:r.css"

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -8,31 +8,32 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-06-22 08:03+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-09-03 22:22+0000\n"
"Last-Translator: Nicolas JEUDY <njeudy@simplee.fr>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:43+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: pad_project
#: constraint:project.task:0
msgid "Error ! Task end-date must be greater then task start-date"
msgstr ""
"Erreur ! la date de fin de la tâche doit être supérieure a celle de début"
#. module: pad_project
#: model:ir.model,name:pad_project.model_project_task
msgid "Task"
msgstr ""
msgstr "Tâche"
#. module: pad_project
#: view:project.task:0
msgid "Pad"
msgstr ""
msgstr "Pad"
#. module: pad_project
#: constraint:project.task:0
msgid "Error ! You cannot create recursive tasks."
msgstr ""
msgstr "Erreur ! Vous ne pouvez pas créer de tâches récursives."

View File

@ -92,7 +92,8 @@ Main features:
'static/src/js/main.js',
],
'css': [
'static/src/css/pos.css',
'static/src/css/pos.css', # this is the default css with hover effects
#'static/src/css/pos_nohover.css', # this css has no hover effects (for resistive touchscreens)
'static/src/css/keyboard.css'
],
'qweb': ['static/src/xml/pos.xml'],

View File

@ -1242,7 +1242,7 @@ import io, StringIO
class ean_wizard(osv.osv_memory):
_name = 'pos.ean_wizard'
_columns = {
'ean13_pattern': fields.char('Ean13 Pattern', size=32, required=True, translate=True),
'ean13_pattern': fields.char('Reference', size=32, required=True, translate=True),
}
def sanitize_ean13(self, cr, uid, ids, context):
for r in self.browse(cr,uid,ids):
@ -1306,7 +1306,7 @@ class product_product(osv.osv):
def edit_ean(self, cr, uid, ids, context):
return {
'name': "Edit Ean",
'name': _("Assign a Custom EAN"),
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',

View File

@ -608,35 +608,21 @@
<field name="domain">[('date_order','like',time.strftime('%Y-%m'))]</field>
</record>
<record id="product_normal_form_pos_view" model="ir.ui.view">
<field name="name">product.normal.pos.form.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<group name="status" position="after">
<group name="pos" string="Point of Sale">
<field name="pos_categ_id"/>
<field name="to_weight" />
</group>
</group>
</field>
</record>
<record id="product_normal_form_view" model="ir.ui.view">
<field name="name">product.normal.form.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
<field name="arch" type="xml">
<group name="misc" position="after">
<group name="pos" colspan="2" col="2">
<separator string="Point of Sale" colspan="2"/>
<group name="sale" position="inside">
<group name="pos" string="Point of Sale">
<field name="pos_categ_id"/>
<field name="to_weight" />
<field name="income_pdt"/>
<field name="expense_pdt"/>
</group>
</group>
<field name="ean13" position="after">
<button name="edit_ean" type="object" string="Edit" />
<button name="edit_ean" type="object" string="Set a Custom EAN" class="oe_link oe_edit_only"/>
</field>
</field>
</record>
@ -930,7 +916,7 @@
</field>
</group>
<div attrs="{'invisible': [('state', '=', 'closed')]}">
<div attrs="{'invisible': [('state', '!=', 'closed')]}">
<group class="oe_subtotal_footer oe_right">
<field name="cash_register_balance_start" readonly="1" string="Opening Balance" class="oe_subtotal_footer_separator"/>
<field name="cash_register_total_entry_encoding" attrs="{'invisible' : [('state', '=', 'opening_control')]}" string="+ Transactions"/>
@ -947,7 +933,7 @@
</div>
<group class="oe_subtotal_footer oe_right" attrs="{'invisible' : [('state', 'in', ('opening_control', 'closed'))]}">
<group class="oe_subtotal_footer oe_right" attrs="{'invisible' : [('state', '!=', 'closed')]}">
<field name="cash_register_balance_end_real" class="oe_subtotal_footer_separator"/>
<field name="cash_register_difference" class="oe_subtotal_footer_separator"/>
</group>
@ -1070,9 +1056,17 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Ean13 Generator" version="7.0">
<field name="ean13_pattern"/>
<p class="oe_grey">
Enter a reference for this product, it will be converted
automatically to a valid EAN number.
</p>
<group>
<field name="ean13_pattern" class="oe_inline"/>
</group>
<footer>
<button name="sanitize_ean13" type="object" string="Apply"/>
<button name="sanitize_ean13" type="object" string="Apply" class="oe_highlight"/> or
<button icon="gtk-stop" special="cancel"
string="Cancel" class="oe_link"/>
</footer>
</form>
</field>

File diff suppressed because it is too large Load Diff

View File

@ -47,6 +47,7 @@ TODO AUG 20
v supprimer l'écran
v bloquer sur l'impression
v L'impression est foireuse
- description_sales
* CLIENT
v create a new branch

View File

@ -184,6 +184,8 @@ function openerp_pos_devices(instance,module){ //module is instance.point_of_sal
* price_with_tax: (number) the price paid for this orderline, tax included
* price_without_tax: (number) the price paid for this orderline, without taxes
* tax: (number) the price paid in taxes on this orderline
* product_description: (string) generic description of the product
* product_description_sale: (string) sales related information of the product
* }
* - paymentlines : list of paymentlines :
* {

View File

@ -58,6 +58,21 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
// We fetch the backend data on the server asynchronously. this is done only when the pos user interface is launched,
// Any change on this data made on the server is thus not reflected on the point of sale until it is relaunched.
// when all the data has loaded, we compute some stuff, and declare the Pos ready to be used.
$.when(this.load_server_data())
.then(function(){
//self.log_loaded_data(); //Uncomment if you want to log the data to the console for easier debugging
self.ready.resolve();
},function(){
//we failed to load some backend data, or the backend was badly configured.
//the error messages will be displayed in PosWidget
self.ready.reject();
});
},
// loads all the needed data on the sever. returns a deferred indicating when all the data has loaded.
load_server_data: function(){
var self = this;
var loaded = fetch('res.users',['name','company_id'],[['id','=',this.session.uid]])
.pipe(function(users){
@ -142,8 +157,9 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
return fetch(
'product.product',
['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13', 'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type'],
[['pos_categ_id','!=', false]],
['name', 'list_price','price','pos_categ_id', 'taxes_id', 'ean13',
'to_weight', 'uom_id', 'uos_id', 'uos_coeff', 'mes_type', 'description_sale', 'description'],
[['pos_categ_id','!=', false],['sale_ok','=',true]],
{pricelist: self.get('shop').pricelist_id[0]} // context for price
);
}).pipe(function(products){
@ -173,17 +189,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
}
self.set({'cashRegisters' : new module.CashRegisterCollection(self.get('bank_statements'))});
});
// when all the data has loaded, we compute some stuff, and declare the Pos ready to be used.
$.when(loaded)
.then(function(){
//self.log_loaded_data(); //Uncomment if you want to log the data to the console for easier debugging
self.ready.resolve();
},function(){
//we failed to load some backend data, or the backend was badly configured.
//the error messages will be displayed in PosWidget
self.ready.reject();
});
return loaded;
},
// logs the usefull posmodel data to the console for debug purposes
@ -417,6 +424,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal
price_with_tax : this.get_price_with_tax(),
price_without_tax: this.get_price_without_tax(),
tax: this.get_tax(),
product_description: this.get_product().get('description'),
product_description_sale: this.get_product().get('description_sale'),
};
},
get_price_without_tax: function(){

View File

@ -6,14 +6,18 @@ import netsvc
from openerp.addons.point_of_sale.point_of_sale import pos_session
class pos_session_opening(osv.osv_memory):
_name = 'pos.session.opening'
_columns = {
'pos_config_id' : fields.many2one('pos.config', 'Point of Sale', required=True),
'pos_session_id' : fields.many2one('pos.session', 'PoS Session'),
'pos_state' : fields.selection(pos_session.POS_SESSION_STATE,
'Session State', readonly=True),
'pos_state' : fields.related('pos_session_id', 'state',
type='selection',
selection=pos_session.POS_SESSION_STATE,
string='Session State', readonly=True),
'pos_state_str' : fields.char('State', 32, readonly=True),
'show_config' : fields.boolean('Show Config', readonly=True),
'pos_session_name' : fields.related('pos_session_id', 'name',
type='char', size=64, readonly=True),
@ -71,22 +75,25 @@ class pos_session_opening(osv.osv_memory):
result = {
'pos_session_id': False,
'pos_state': False,
'pos_state_str' : '',
'pos_session_username' : False,
'pos_session_name' : False,
}
if not config_id:
return {'value': result}
return {'value' : result}
proxy = self.pool.get('pos.session')
session_ids = proxy.search(cr, uid, [
('state', '<>', 'closed'),
('state', '!=', 'closed'),
('config_id', '=', config_id),
], context=context)
if session_ids:
session = proxy.browse(cr, uid, session_ids[0], context=context)
result['pos_state'] = session.state
result['pos_state'] = str(session.state)
result['pos_state_str'] = dict(pos_session.POS_SESSION_STATE).get(session.state, '')
result['pos_session_id'] = session.id
result['pos_session_name'] = session.name
result['pos_session_username'] = session.user_id.name
return {'value' : result}
def default_get(self, cr, uid, fieldnames, context=None):

View File

@ -12,7 +12,7 @@
<field name="pos_config_id" on_change="on_change_config(pos_config_id)"
widget="selection" domain="[('state','=','active')]"
class="oe_inline"/>
<field name="pos_state" class="oe_inline" attrs="{'invisible' : [('pos_state', '=', False)]}" />
<field name="pos_state" invisible="1" />
</group>
<field name="pos_session_id" invisible="1"/>
<button name="open_ui" type="object" string="Start Selling"
@ -49,8 +49,8 @@
Click to continue the session.
</p>
<p>
The session <field name="pos_session_name" class="oe_inline" /> (<field name="pos_session_username" class="oe_inline" />) is "<b><field name="pos_state" class="oe_inline" /></b>"<br/>
You can continue sales from the touchscreen interface by clicking on "<b>Settings</b>" or close the cash register session ?
The session <field name="pos_session_name" class="oe_inline" /> (<field name="pos_session_username" class="oe_inline" />) is "<b><field name="pos_state_str" class="oe_inline" /></b>"<br/>
You can continue sales from the touchscreen interface by clicking on "<b>Sellings</b>" or close the cash register session ?
</p>
</div>

View File

@ -9,13 +9,21 @@
<field name="model">make.procurement</field>
<field name="arch" type="xml">
<form string="Procurement Request" version="7.0">
<group col="4" string="This wizard will plan the procurement for this product. This procurement may generate task, production orders or purchase orders."/>
<group>
<field name="product_id" on_change="onchange_product_id(product_id)"/>
<field name="qty"/>
<field name="uom_id" groups="product.group_uom"/>
<field name="date_planned"/>
<p class="oe_gray">
Fill is this for to launch a procurement request for this
product. According to the product configuration, this may
trigger a draft purchase order, a manufacturing order or
a new task.
</p>
<group>
<field name="warehouse_id" groups="stock.group_locations"/>
<field name="product_id" on_change="onchange_product_id(product_id)"/>
<label for="qty"/>
<div>
<field name="qty" class="oe_inline"/>
<field name="uom_id" groups="product.group_uom"/>
</div>
<field name="date_planned"/>
</group>
<footer>
<button name="make_procurement" string="Ask New Products" type="object" class="oe_highlight" />
@ -26,13 +34,13 @@
</field>
</record>
<act_window name="Procurement Request"
res_model="make.procurement"
src_model="product.product"
view_mode="form"
target="new"
key2="client_action_multi"
id="act_make_procurement"/>
<record model="ir.actions.act_window" id="act_make_procurement">
<field name="name">Procurement Request</field>
<field name="res_model">make.procurement</field>
<field name="src_model">product.product</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -288,13 +288,13 @@ class product_template(osv.osv):
'rental': fields.boolean('Can be Rent'),
'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]" ,help="Select category for the current product"),
'list_price': fields.float('Sale Price', digits_compute=dp.get_precision('Product Price'), help="Base price for computing the customer price. Sometimes called the catalog price."),
'standard_price': fields.float('Cost Price', required=True, digits_compute=dp.get_precision('Product Price'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price.", groups="base.group_user"),
'standard_price': fields.float('Cost', digits_compute=dp.get_precision('Product Price'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price.", groups="base.group_user"),
'volume': fields.float('Volume', help="The volume in m3."),
'weight': fields.float('Gross Weight', digits_compute=dp.get_precision('Stock Weight'), help="The gross weight in Kg."),
'weight_net': fields.float('Net Weight', digits_compute=dp.get_precision('Stock Weight'), help="The net weight in Kg."),
'cost_method': fields.selection([('standard','Standard Price'), ('average','Average Price')], 'Costing Method', required=True,
help="Standard Price: the cost price is fixed and recomputed periodically (usually at the end of the year), Average Price: the cost price is recomputed at each reception of products."),
'warranty': fields.float('Warranty (months)'),
'warranty': fields.float('Warranty'),
'sale_ok': fields.boolean('Can be Sold', help="Determines if the product can be visible in the list of product within a selection from a sale order line."),
'purchase_ok': fields.boolean('Can be Purchased', help="Determine if the product is visible in the list of products within a selection from a purchase order line."),
'state': fields.selection([('',''),
@ -302,7 +302,7 @@ class product_template(osv.osv):
('sellable','Normal'),
('end','End of Lifecycle'),
('obsolete','Obsolete')], 'Status', help="Tells the user if he can use the product or not."),
'uom_id': fields.many2one('product.uom', 'Default Unit of Measure', required=True, help="Default Unit of Measure used for all stock operation."),
'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True, help="Default Unit of Measure used for all stock operation."),
'uom_po_id': fields.many2one('product.uom', 'Purchase Unit of Measure', required=True, help="Default Unit of Measure used for purchase orders. It must be in the same category than the default unit of measure."),
'uos_id' : fields.many2one('product.uom', 'Unit of Sale',
help='Used by companies that manage two units of measure: invoicing and inventory management. For example, in food industries, you will manage a stock of ham but invoice in Kg. Keep empty to use the default Unit of Measure.'),
@ -354,7 +354,7 @@ class product_template(osv.osv):
'list_price': lambda *a: 1,
'cost_method': lambda *a: 'standard',
'supply_method': lambda *a: 'buy',
'standard_price': lambda *a: 1,
'standard_price': lambda *a: 0.0,
'sale_ok': lambda *a: 1,
'sale_delay': lambda *a: 7,
'produce_delay': lambda *a: 1,
@ -535,9 +535,9 @@ class product_product(osv.osv):
'outgoing_qty': fields.function(_product_outgoing_qty, type='float', string='Outgoing'),
'price': fields.function(_product_price, type='float', string='Pricelist', digits_compute=dp.get_precision('Product Price')),
'lst_price' : fields.function(_product_lst_price, type='float', string='Public Price', digits_compute=dp.get_precision('Product Price')),
'code': fields.function(_product_code, type='char', string='Reference'),
'code': fields.function(_product_code, type='char', string='Internal Reference'),
'partner_ref' : fields.function(_product_partner_ref, type='char', string='Customer ref'),
'default_code' : fields.char('Reference', size=64, select=True),
'default_code' : fields.char('Internal Reference', size=64, select=True),
'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"),

View File

@ -12,8 +12,6 @@
<filter string="Services" icon="terp-accessories-archiver" domain="[('type','=','service')]"/>
<filter string="Products" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]" help="Both stockable and consumable products"/>
<separator/>
<filter string="To Sell" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
<separator/>
<filter name="filter_to_purchase" string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/>
<filter string="Can be Sold" name="filter_to_sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
<filter name="filter_to_purchase" string="Can be Purchased" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]"/>
@ -71,6 +69,12 @@
</h1>
<label for="categ_id" class="oe_edit_only"/>
<h2><field name="categ_id"/></h2>
<div name="options" groups="base.group_user">
<field name="sale_ok"/>
<label for="sale_ok"/>
<field name="purchase_ok"/>
<label for="purchase_ok"/>
</div>
</div>
<div class="oe_right oe_button_box" name="buttons">
</div>
@ -78,57 +82,77 @@
<page string="Information">
<group>
<group>
<field name="default_code"/>
<field name="ean13" placeholder="e.g. 5901234123457"/>
<field groups="product.group_product_variant" name="variants"/>
</group>
<group groups="base.group_user">
<field name="sale_ok"/>
<field name="purchase_ok"/>
</group>
<group string="Procurement">
<field name="type"/>
<field name="procure_method" groups="base.group_user" attrs="{'invisible':[('type','=', 'service')]}"/>
</group>
<group string="Prices">
<field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)" groups="product.group_uom"/>
<field name="list_price"/>
<field name="cost_method" groups="product.group_costing_method"/>
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/>
</group>
<group>
<field name="default_code"/>
<label for="ean13"/>
<div name="ean">
<field name="ean13" placeholder="e.g. 5901234123457"/>
</div>
</group>
<group>
<field groups="product.group_product_variant" name="variants"/>
<field name="price_margin" groups="product.group_product_variant"/>
<field name="price_extra" groups="product.group_product_variant"/>
</group>
</group>
<field name="description" placeholder="describe the product's characteristics for internal use..."/>
</page>
<page string="Procurements" groups="base.group_user">
<group name="procurement">
<group>
<field name="procure_method" groups="base.group_user" attrs="{'invisible':[('type','=', 'service')]}"/>
<field name="cost_method" groups="product.group_costing_method"/>
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}"/>
</group>
<group>
<field name="uom_po_id" groups="product.group_uom"/>
</group>
</group>
<separator string="Notes for Suppliers"/>
<field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/>
</page>
<page string="Inventory" groups="base.group_user">
<group name="inventory">
<group name="status" string="Status">
<field name="state"/>
<field name="product_manager"/>
</group>
<group name="store" string="Storage Localisation">
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="loc_rack" attrs="{'invisible':[('type','=','service')]}"/>
<field name="loc_row" attrs="{'invisible':[('type','=','service')]}"/>
<field name="loc_case" attrs="{'invisible':[('type','=','service')]}"/>
</group>
<group groups="product.group_stock_packaging" string="Weights">
<field digits="(14, 3)" name="volume" attrs="{'readonly':[('type','=','service')]}"/>
<field name="weight" attrs="{'readonly':[('type','=','service')]}"/>
<field name="weight_net" attrs="{'readonly':[('type','=','service')]}"/>
</group>
<group name="uom" groups="product.group_uom" string="Unit of Measure">
<field name="uom_id" on_change="onchange_uom(uom_id,uom_po_id)"/>
<field name="uom_po_id"/>
</group>
</page>
<page string="Sales" attrs="{'readonly':[('sale_ok','=',0)]}">
<group name="sale">
<group string="Sale Conditions">
<label for="sale_delay"/>
<div>
<field name="sale_delay" class="oe_inline"/> days
</div>
<label for="warranty"/>
<div>
<field name="warranty" class="oe_inline"/> months
</div>
</group>
<group groups="product.group_uos" string="Unit of Measure">
<field name="uos_id"/>
<field name="uos_coeff"/>
<field name="mes_type"/>
</group>
<group name="status" string="Status">
<field name="state"/>
<field name="product_manager"/>
</group>
</group>
</page>
<page string="Descriptions" groups="base.group_user">
<separator string="Description"/>
<field name="description"/>
<separator string="Sale Description"/>
<field name="description_sale" placeholder="This note will be displayed on quotations..."/>
<separator string="Purchase Description"/>
<field name="description_purchase" placeholder="This note will be displayed on requests for quotation..."/>
</page>
<page groups="product.group_stock_packaging" string="Packaging">
<field name="packaging">
<field name="packaging" groups="product.group_stock_packaging">
<form string="Packaging" version="7.0">
<group col="4">
<field name="ean"/>
@ -150,6 +174,8 @@
<field name="name"/>
</form>
</field>
<separator string="Notes on Quotations"/>
<field name="description_sale" placeholder="note to be displayed on quotations..."/>
</page>
</notebook>
</sheet>
@ -162,42 +188,30 @@
</record>
<!-- Product Kanban View -->
<record model="ir.ui.view" id="product_kanban_view">
<record model="ir.ui.view" id="product.product_kanban_view">
<field name="name">Product Kanban</field>
<field name="model">product.product</field>
<field name="arch" type="xml">
<kanban>
<field name="color"/>
<field name="type"/>
<field name="image_medium"/>
<field name="image_small"/>
<field name="list_price"/>
<templates>
<t t-name="kanban-box">
<t t-if="record.type.raw_value!='service' and record.qty_available.raw_value lte 0" t-set="border">oe_kanban_color_red</t>
<div t-attf-class="#{kanban_color(record.color.raw_value)} #{border || ''}">
<div class="oe_kanban_box oe_kanban_color_border">
<div class="oe_kanban_box_header oe_kanban_color_bgdark oe_kanban_color_border oe_kanban_draghandle oe_kanban_title">
<field name="name"/>
</div>
<div class="oe_kanban_box_content oe_kanban_color_bglight oe_kanban_box_show_onclick_trigger">
<img t-att-src="kanban_image('product.product', 'image_medium', record.id.value)" width="48" style="float: left; padding: 0 4px 4px 0"/>
Code: <field name="code"/>
<div t-if="record.type.raw_value == 'service'">No Stock</div>
<t t-if="record.type.raw_value != 'service'">
<div>Stock: <field name="qty_available"/> on hand, <field name="virtual_available"/> available</div>
<div t-if="record.list_price.raw_value != 0">Public Price: <field name="lst_price"/></div>
<!-- TODO would deserve to be hidden at the field level -->
<div groups="base.group_user">Cost : <field name="standard_price"/></div>
</t>
<div class="oe_kanban_clear"/>
</div>
<div class="oe_kanban_buttons_set oe_kanban_color_border oe_kanban_color_bglight oe_kanban_box_show_onclick">
<div class="oe_kanban_left">
<a string="Edit" icon="gtk-edit" type="edit"/>
<a string="Change Color" icon="color-picker" type="color" name="color"/>
</div>
<div class="oe_kanban_clear"/>
</div>
<div class="oe_kanban_vignette">
<a type="open"><img t-att-src="kanban_image('product.product', 'image_small', record.id.value)" class="oe_kanban_image"/></a>
<div class="oe_kanban_details">
<h4>
<a type="open">
<t t-if="record.code.raw_value">[<field name="code"/>]</t> <field name="name"/>
</a>
</h4>
<div name="tags"/>
<ul>
<li>Price: <field name="lst_price"></field></li>
</ul>
</div>
</div>
</t>
@ -227,7 +241,7 @@
<field name="name">Products</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">product.product</field>
<field name="view_mode">tree,form,kanban</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_type">form</field>
<field name="context">{"search_default_filter_to_sell":1}</field>
<field name="view_id" ref="product_product_tree_view"/>
@ -250,7 +264,7 @@
<record id="open_view_product_tree1" model="ir.actions.act_window.view">
<field name="sequence" eval="2"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="product_product_tree_view"/>
<field name="view_id" ref="product_product_tree_view"/>
<field name="act_window_id" ref="product_normal_action_sell"/>
</record>
@ -264,8 +278,8 @@
<record id="open_view_product_kanban1" model="ir.actions.act_window.view">
<field name="sequence" eval="1"/>
<field name="view_mode">kanban</field>
<field name="view_id" ref="product_kanban_view"/>
<field name="act_window_id" ref="product_normal_action"/>
<field name="view_id" ref="product_kanban_view"/>
<field name="act_window_id" ref="product_normal_action_sell"/>
</record>
<menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9"/>
@ -534,7 +548,7 @@
<field name="model">product.packaging</field>
<field name="arch" type="xml">
<tree string="Packaging">
<field name="sequence" invisible="1"/>
<field name="sequence" widget="handle"/>
<field name="ean"/>
<field name="qty"/>
<field name="ul"/>
@ -606,7 +620,7 @@
<field name="model">product.supplierinfo</field>
<field name="arch" type="xml">
<tree string="Supplier Information">
<field name="sequence" string="Seq"/>
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="delay"/>
<field name="min_qty"/>
@ -716,7 +730,10 @@
<group>
<group name="delay" string="Delays">
<field name="sale_delay" attrs="{'readonly':[('sale_ok','=',0)]}"/>
<field name="produce_delay"/>
<label for="produce_delay"/>
<div>
<field name="produce_delay" class="oe_inline"/> days
</div>
<field name="warranty"/>
</group>
<group name="store" string="Storage Localisation">

View File

@ -21,14 +21,14 @@
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<notebook position="inside">
<page string="Dates">
<group name="inventory">
<group string="Dates">
<field name="life_time" />
<field name="use_time" />
<field name="removal_time" />
<field name="alert_time" />
</page>
</notebook>
</group>
</group>
</field>
</record>
</data>

View File

@ -7,23 +7,21 @@
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view" />
<field name="arch" type="xml">
<notebook position="inside">
<page string="Manufacturer">
<group string="Manufacturer">
<field name="manufacturer" />
<field name="manufacturer_pname"/>
<field name="manufacturer_pref"/>
</group>
<group string="Attributes">
<field name="attribute_ids" colspan="4" nolabel="1">
<tree string="Product Attributes" editable="bottom">
<field name="name"/>
<field name="value"/>
</tree>
</field>
</group>
</page>
</notebook>
<group name="procurement" position="inside">
<group string="Manufacturer">
<field name="manufacturer" />
<field name="manufacturer_pname"/>
<field name="manufacturer_pref"/>
</group>
<group string="Attributes">
<field name="attribute_ids" colspan="4" nolabel="1">
<tree string="Product Attributes" editable="bottom">
<field name="name"/>
<field name="value"/>
</tree>
</field>
</group>
</group>
</field>
</record>

View File

@ -16,8 +16,8 @@
<field name="model">product.product</field>
<field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
<field name="arch" type="xml">
<field name="active" position="after">
<field name="project_id" attrs="{'readonly':[('type','!=','service')]}" />
<field name="type" position="after">
<field name="project_id" attrs="{'invisible':[('type','!=','service')]}" />
</field>
</field>
</record>

View File

@ -73,7 +73,7 @@
parent="base.menu_purchase_root" sequence="6"/>
<record id="action_invoice_pending" model="ir.actions.act_window">
<field name="name">Based on Draft Invoices</field>
<field name="name">On Draft Invoices</field>
<field name="res_model">account.invoice</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph</field>
@ -95,7 +95,7 @@
</field>
</record>
<menuitem name="Based on Draft Invoices"
<menuitem
id="menu_procurement_management_pending_invoice"
action="action_invoice_pending"
parent="menu_procurement_management_invoice"
@ -177,7 +177,7 @@
<field name="arch" type="xml">
<form string="Purchase Order" version="7.0">
<header>
<button name="purchase_confirm" states="draft,sent" string="Confirm Quotation" class="oe_highlight"/>
<button name="purchase_confirm" states="draft,sent" string="Confirm Order" class="oe_highlight"/>
<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" class="oe_highlight"/>
<button name="action_cancel" states="except_picking,except_invoice" string="Cancel" type="object" />
@ -214,12 +214,16 @@
<notebook>
<page string="Purchase Order">
<field name="order_line">
<tree string="Purchase Order Lines">
<field name="date_planned"/>
<tree string="Purchase Order Lines" editable="bottom">
<field name="product_id" on_change="onchange_product_id(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)"/>
<field name="name"/>
<field name="product_qty"/>
<field name="product_uom" groups="product.group_uom"/>
<field name="date_planned"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="account_analytic_id" groups="purchase.group_analytic_accounting" domain="[('parent_id','!=',False)]"/>
<field name="product_qty" on_change="onchange_product_id(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id,parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)"/>
<field name="product_uom" groups="product.group_uom" on_change="onchange_product_uom(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order,parent.fiscal_position,date_planned,name,price_unit,context)"/>
<field name="price_unit"/>
<field name="taxes_id" widget="many2many_tags" domain="[('parent_id','=',False),('type_tax_use','!=','sale')]"/>
<field name="price_subtotal"/>
</tree>
</field>
@ -508,7 +512,7 @@
<record id="purchase_line_form_action2" model="ir.actions.act_window">
<field name="name">Based on Purchase Order Lines</field>
<field name="name">On Purchase Order Lines</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">purchase.order.line</field>
<field name="domain">[('order_id.invoice_method','&lt;&gt;','picking'), ('state','in',('confirmed','done')), ('invoiced', '=', False)]</field>
@ -562,11 +566,10 @@
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<xpath expr="//page[@string='Descriptions']" position="before">
<page string="Suppliers" groups="base.group_user">
<field name="seller_ids" context="{'uom_id': uom_id}"/>
</page>
</xpath>
<group name="procurement" position="after">
<separator string="Suppliers"/>
<field name="seller_ids" context="{'uom_id': uom_id}"/>
</group>
</field>
</record>
</data>

View File

@ -109,7 +109,7 @@
</record>
<record id="action_picking_tree4_picking_to_invoice" model="ir.actions.act_window">
<field name="name">Based on Incoming Shipments</field>
<field name="name">On Incoming Shipments</field>
<field name="res_model">stock.picking</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>

View File

@ -183,9 +183,7 @@
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<field name="procure_method" position="before">
<group colspan="2" col="2" attrs="{'invisible': [('supply_method','&lt;&gt;','buy')]}">
<field name="purchase_requisition"/>
</group>
</field>
</field>
</record>

View File

@ -56,7 +56,7 @@ class sale_configuration(osv.osv_memory):
help ="""Allows you to add delivery methods in sale orders and delivery orders.
You can define your own carrier and delivery grids for prices.
This installs the module delivery."""),
'time_unit': fields.many2one('product.uom', 'The default working time unit for services is'),
'time_unit': fields.many2one('product.uom', 'the default working time unit for services is'),
'default_picking_policy' : fields.boolean("deliver all at once when all products are available.",
help = "Sales order by default will be configured to deliver all products at once instead of delivering each product when it is available. This may have an impact on the shipping price."),
'group_sale_pricelist':fields.boolean("use pricelists to adapt your price per customers",

View File

@ -262,8 +262,6 @@
<field name="sequence" widget="handle"/>
<field name="state" invisible="1"/>
<field name="delay" invisible="1"/>
<field name="tax_id" invisible="1"/>
<field name="type" invisible="1"/>
<field name="th_weight" invisible="1"/>
<field name="product_packaging" invisible="1"/>
<field name="product_id"
@ -271,6 +269,7 @@
groups="base.group_user"
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, False, parent.fiscal_position, False, context)"/>
<field name="name"/>
<field name="type"/>
<field name="product_uom_qty"
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
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, False, parent.date_order, False, parent.fiscal_position, True, context)"/>
@ -281,6 +280,7 @@
<field name="product_uos" string="UoS" groups="product.group_uos"/>
<field name="discount" groups="sale.group_discount_per_so_line"/>
<field name="price_unit"/>
<field name="tax_id" widget="many2many_tags" domain="[('parent_id','=',False),('type_tax_use','&lt;&gt;','purchase')]"/>
<field name="price_subtotal"/>
</tree>
</field>
@ -357,6 +357,20 @@
</field>
</record>
<!-- inherited view to make the order lines list in the form non-editable
for the members of some usability groups -->
<record id="view_order_form_editable_list" model="ir.ui.view">
<field name="name">sale.order.form.editable.list</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="groups_id" eval="[(6, 0, [ref('product.group_uos'), ref('product.group_stock_packaging'), ref('sale.group_mrp_properties')])]"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='order_line']/tree" position="attributes">
<attribute name="editable"/>
</xpath>
</field>
</record>
<record id="view_sales_order_filter" model="ir.ui.view">
<field name="name">sale.order.list.select</field>
<field name="model">sale.order</field>

View File

@ -22,6 +22,11 @@
</field>
</record>
<!-- the presence of 'analytics_id' makes the order lines non-editable -->
<record id="sale.view_order_form_editable_list" model="ir.ui.view">
<field name="groups_id" eval="[(4, ref('analytic.group_analytic_accounting'))]"/>
</record>
<record model="ir.ui.view" id="view_order_line_form2_inherit">
<field name="name">sale.order.line.form2.inherit</field>
<field name="model">sale.order.line</field>

View File

@ -7,30 +7,30 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2011-11-25 14:51+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"PO-Revision-Date: 2012-09-03 22:25+0000\n"
"Last-Translator: Nicolas JEUDY <njeudy@simplee.fr>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:07+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: sale_crm
#: field:sale.order,categ_id:0
msgid "Category"
msgstr ""
msgstr "Catégorie"
#. module: sale_crm
#: sql_constraint:sale.order:0
msgid "Order Reference must be unique per Company!"
msgstr ""
msgstr "La référence de commande doit être unique par société !"
#. module: sale_crm
#: code:addons/sale_crm/wizard/crm_make_sale.py:112
#, python-format
msgid "Converted to Sales Quotation(%s)."
msgstr ""
msgstr "Convertir en devis (%s)"
#. module: sale_crm
#: view:crm.make.sale:0
@ -62,7 +62,7 @@ msgstr "_Créer"
#. module: sale_crm
#: view:sale.order:0
msgid "My Sales Team(s)"
msgstr ""
msgstr "Mon (mes) équipe(s) de vente"
#. module: sale_crm
#: help:crm.make.sale,close:0
@ -75,7 +75,7 @@ msgstr ""
#. module: sale_crm
#: view:board.board:0
msgid "My Opportunities"
msgstr ""
msgstr "Mes opportunités"
#. module: sale_crm
#: view:crm.lead:0
@ -106,7 +106,7 @@ msgstr "Fermer l'opportunité"
#. module: sale_crm
#: view:board.board:0
msgid "My Planned Revenues by Stage"
msgstr ""
msgstr "Mes revenus planifiés par étape"
#. module: sale_crm
#: code:addons/sale_crm/wizard/crm_make_sale.py:110
@ -133,7 +133,7 @@ msgstr "Annuler"
#. module: sale_crm
#: model:ir.model,name:sale_crm.model_sale_order
msgid "Sales Order"
msgstr "Commande de ventes"
msgstr "Commande client"
#~ msgid "Crm opportunity quotation"
#~ msgstr "Chiffrage de l'opportunité"

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-06-28 12:52+0000\n"
"PO-Revision-Date: 2012-09-03 17:14+0000\n"
"Last-Translator: Erwin <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-28 06:34+0000\n"
"X-Generator: Launchpad (build 15864)\n"
"X-Launchpad-Export-Date: 2012-09-04 04:52+0000\n"
"X-Generator: Launchpad (build 15890)\n"
#. module: share
#: field:share.wizard,embed_option_title:0
@ -384,6 +384,7 @@ msgid ""
"An email notification with instructions has been sent to the following "
"people:"
msgstr ""
"Een e-mail bevestiging met instructies is verzonden naar de volgende mensen:"
#. module: share
#: model:ir.model,name:share.model_share_wizard_result_line
@ -415,6 +416,8 @@ msgstr "Kan bewerken"
msgid ""
"An optional personal message, to be included in the email notification."
msgstr ""
"Een optionele persoonlijk bericht, welke kan worden toegevoegd in de e-mail "
"bevestiging."
#. module: share
#: model:ir.model,name:share.model_res_users
@ -532,6 +535,8 @@ msgid ""
"You must configure your email address in the user preferences before using "
"the Share button."
msgstr ""
"U dient u e-mail adres in te stellen in uw gebruikersinstellingen, voordat u "
"de 'share' knop kunt gebruiken."
#. module: share
#: help:share.wizard,access_mode:0

View File

@ -32,7 +32,7 @@ class product_product(osv.osv):
moves = move_pool.read_group(cr, uid, [
('product_id', 'in', ids),
('picking_id.type', '=', 'in'),
('state','in',('draft','confirmed','assigned','pending'))
('state','in',('confirmed','assigned','pending'))
], ['product_id'], ['product_id'])
for move in moves:
product_id = move['product_id'][0]
@ -40,7 +40,7 @@ class product_product(osv.osv):
moves = move_pool.read_group(cr, uid, [
('product_id', 'in', ids),
('picking_id.type', '=', 'out'),
('state','in',('draft','confirmed','assigned','pending'))
('state','in',('confirmed','assigned','pending'))
], ['product_id'], ['product_id'])
for move in moves:
product_id = move['product_id'][0]
@ -373,7 +373,7 @@ class product_product(osv.osv):
"typed as 'internal'."),
'virtual_available': fields.function(_product_available, multi='qty_available',
type='float', digits_compute=dp.get_precision('Product Unit of Measure'),
string='Quantity Available',
string='Future Quantity',
help="Forecast quantity (computed as Quantity On Hand "
"- Outgoing + Incoming)\n"
"In a context with a single Stock Location, this includes "

View File

@ -50,38 +50,28 @@
</page>
</field>
</record>
<record id="view_normal_procurement_locations_form" model="ir.ui.view">
<field name="name">product.normal.procurement.locations.inherit</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<notebook position="inside">
<page string="Procurement &amp; Locations" groups="base.group_user">
<group>
<group name="delay" string="Delays">
<field name="sale_delay" attrs="{'readonly':[('sale_ok','=',0)]}"/>
<field name="produce_delay" attrs="{'invisible':[('type','=','service')]}"/>
<field name="warranty"/>
</group>
<group name="store" string="Storage Localisation">
<field name="loc_rack" attrs="{'readonly':[('type','=','service')]}"/>
<field name="loc_row" attrs="{'readonly':[('type','=','service')]}"/>
<field name="loc_case" attrs="{'readonly':[('type','=','service')]}"/>
</group>
<group name="store" groups="stock.group_locations">
<separator string="Counter-Part Locations Properties" colspan="2"/>
<field name="property_stock_procurement" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','procurement')]"/>
<field name="property_stock_production" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','production')]"/>
<field name="property_stock_inventory" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','inventory')]"/>
</group>
<group name="misc" string="Miscellaneous">
<field name="active"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
</group>
</page>
</notebook>
<group name="procurement" position="inside">
<group name="delay" string="Delays">
<label for="produce_delay" attrs="{'invisible':[('type','=','service')]}"/>
<div attrs="{'invisible':[('type','=','service')]}">
<field name="produce_delay" class="oe_inline"/> days
</div>
<field name="active"/>
</group>
</group>
<group name="inventory" position="inside">
<group name="store" groups="stock.group_locations" string="Counter-Part Locations Properties">
<field name="property_stock_procurement" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','procurement')]"/>
<field name="property_stock_production" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','production')]"/>
<field name="property_stock_inventory" attrs="{'readonly':[('type','=','service')]}" domain="[('usage','=','inventory')]"/>
</group>
</group>
</field>
</record>
@ -93,8 +83,8 @@
<field name="standard_price" position="replace" version="7.0">
<label string="Cost Price" for="standard_price" align="1.0" groups="base.group_user"/>
<div groups="base.group_user">
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}" nolabel="1"/> -
<button name="%(action_view_change_standard_price)d" string="update"
<field name="standard_price" attrs="{'readonly':[('cost_method','=','average')]}" nolabel="1"/>
<button name="%(action_view_change_standard_price)d" string="- update"
type="action" attrs="{'invisible':[('cost_method','&lt;&gt;','average')]}"
class="oe_link"/>
</div>
@ -132,19 +122,17 @@
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<group name="status" position="before" version="7.0">
<group string="Stock and Expected Variations" attrs="{'invisible': [('type', '=', 'service')]}">
<group string="Stock and Expected Variations" attrs="{'invisible': [('type', '=', 'service')]}" groups="base.group_user">
<label for="qty_available"/>
<div>
<field name="qty_available" class="oe_inline"/>
<button name="%(action_view_change_product_quantity)d" string="update"
type="action" groups="stock.group_stock_manager,stock.group_stock_user"
type="action"
class="oe_link"/>
</div>
<label for="virtual_available" groups="base.group_user"/>
<div groups="base.group_user">
<field name="virtual_available" class="oe_inline"/>
(+<field name="incoming_qty" class="oe_inline"/> -<field name="outgoing_qty" class="oe_inline"/>)
</div>
<field name="incoming_qty" class="oe_inline"/>
<field name="outgoing_qty" class="oe_inline"/>
<field name="virtual_available" class="oe_inline"/>
</group>
<group name="lot" groups="stock.group_tracking_lot,stock.group_production_lot" string="Lots">
<field name="track_production" groups="stock.group_production_lot"/>
@ -164,7 +152,6 @@
<field name="domain">[('picking_id.type','=','in')]</field>
<field name="view_id" ref="view_move_tree_reception_picking"/>
<field name="context" eval="'{\'search_default_product_id\': [active_id]}'"/>
<field name="search_view_id" ref="view_move_search_reception_incoming_picking"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to register a reception for this product.
@ -185,7 +172,6 @@
<field name="domain">[('picking_id.type','=','out')]</field>
<field name="view_id" ref="view_move_tree_reception_picking"/>
<field name="context" eval="'{\'search_default_product_id\': [active_id]}'"/>
<field name="search_view_id" ref="view_move_search_reception_outcoming_picking"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to add a delivery order for this product.
@ -197,50 +183,27 @@
</field>
</record>
<record model="ir.ui.view" id="product.product_kanban_view">
<field name="name">Product Kanban</field>
<record model="ir.ui.view" id="product_kanban_stock_view">
<field name="name">Product Kanban Stock</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_kanban_view"/>
<field name="arch" type="xml">
<kanban>
<field name="color"/>
<field name="type"/>
<field name="image_medium"/>
<field name="list_price"/>
<field name="list_price" position="after">
<field name="reception_count"/>
<field name="delivery_count"/>
<templates>
<t t-name="kanban-box">
<div class="oe_product_vignette">
<div class="oe_product_img">
<a type="open"><img t-att-src="kanban_image('product.product', 'image_medium', record.id.value)" class="oe_product_photo"/></a>
</div>
<div class="oe_product_desc">
<h4><a type="open"><field name="name"></field></a></h4>
<ul>
<li t-if="record.code.raw_value">Code: <field name="code"/></li>
<li t-if="record.type.raw_value != 'service'">Stock on hand: <field name="qty_available"/> <field name="uom_id"/></li>
<li t-if="record.type.raw_value != 'service'">Stock available: <field name="virtual_available"/> <field name="uom_id"/></li>
<li>Price: <field name="lst_price"></field></li>
<!-- TODO the 'groups' attribute doesn't work in kanban views -->
<li groups="base.group_user">Cost: <field name="standard_price"></field></li>
</ul>
<div groups="base.group_user">
<a name="%(action_receive_move)d" type="action">
<t t-if="record.reception_count.value">Receptions(<t t-esc="record.reception_count.value"/>)</t>
</a>
<a name="%(action_deliver_move)d" type="action">
<t t-if="record.delivery_count.value">Deliveries(<t t-esc="record.delivery_count.value"/>)</t>
</a>
</div>
</div>
</div>
<script>
$('.oe_product_photo').load(function() { if($(this).width() > $(this).height()) { $(this).addClass('oe_product_photo_wide') } });
</script>
<div></div>
</t>
</templates>
</kanban>
</field>
<xpath expr="//div[@name='tags']" position="inside">
<a name="%(action_receive_move)d" type="action" t-if="record.reception_count.raw_value>0">
<t t-esc="record.reception_count.value"/> Receptions
</a>
<a name="%(action_deliver_move)d" type="action" t-if="record.delivery_count.raw_value>0">
<t t-esc="record.delivery_count.value"/> Deliveries
</a>
</xpath>
<ul position="inside">
<li t-if="record.type.raw_value != 'service'">On hand: <field name="qty_available"/> <field name="uom_id"/></li>
<li t-if="record.type.raw_value != 'service'">Available: <field name="virtual_available"/> <field name="uom_id"/></li>
</ul>
</field>
</record>

View File

@ -113,13 +113,14 @@
<field name="state" widget="statusbar" statusbar_visible="draft,confirm"/>
</header>
<sheet>
<div>
<label for="name" class="oe_edit_only"/>
<field name="name" placeholder="e.g. Annual inventory" class="oe_inline"/> -
<field name="date" class="oe_inline"/>
</div>
<group>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<group>
<field name="name" placeholder="e.g. Annual inventory"/>
</group>
<group>
<field name="date"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
</group>
</group>
<notebook>
<page string="General Informations">
@ -267,7 +268,8 @@
</p>
</field>
</record>
<menuitem id="menu_traceability" name="Traceability" parent="menu_stock_root" sequence="3"/>
<menuitem id="menu_traceability" name="Traceability" parent="menu_stock_root"
sequence="3" groups="stock.group_tracking_lot,stock.group_production_lot"/>
<menuitem action="action_tracking_form" id="menu_action_tracking_form"
groups="product.group_stock_packaging"
sequence="6"
@ -1333,10 +1335,11 @@
<field eval="3" name="priority"/>
<field name="arch" type="xml">
<search string="Stock Moves">
<field name="origin" string="Stock Moves"/>
<field name="origin" domain="['|',('origin','ilike',self),('picking_id','ilike',self)]" string="Reference"/>
<field name="date" groups="base.group_no_one"/>
<filter icon="terp-camera_test" string="Ready" name="ready" domain="[('state','=','assigned')]" help="Stock moves that are Available (Ready to process)"/>
<filter icon="terp-stock" string="Future" name="future" domain="[('state','in',('assigned','confirmed','waiting'))]" help="Stock moves that are Confirmed, Available or Waiting"/>
<filter icon="terp-stock" string="To Do" name="future" domain="[('state','in',('assigned','confirmed','waiting'))]" help="Stock moves that are Confirmed, Available or Waiting"/>
<filter icon="terp-dialog-close" string="Done" name="done" domain="[('state','=','done')]" help="Stock moves that have been processed"/>
<separator/>
<filter icon="terp-go-today" string="Today" domain="[('date','&lt;=',time.strftime('%%Y-%%m-%%d 23:59:59')),('date','&gt;=',time.strftime('%%Y-%%m-%%d 00:00:00'))]" help="Orders processed Today or planned for Today"/>
@ -1389,8 +1392,10 @@
<field name="priority" eval="6"/>
<field name="arch" type="xml">
<tree colors="grey:state == 'cancel'" string="Moves">
<field name="picking_id" string="Reference"/>
<field name="date" widget="date"/>
<field name="picking_id" string="Reference" invisible="1"/>
<field name="origin"/>
<field name="partner_id" string="Supplier"/>
<field name="product_id"/>
<field name="product_qty"/>
<field name="product_uom" string="Unit of Measure" groups="product.group_uom"/>
@ -1413,8 +1418,13 @@
groups="product.group_stock_packaging"
icon="terp-stock_effects-object-colorize"
states="draft,assigned,confirmed,done"/>
<field name="date" groups="base.group_no_one"/>
<field name="state"/>
<button name="%(action_partial_move_server)d"
icon="terp-stock_effects-object-colorize" type="action"
states="assigned" class="oe_highlight"/>
<button name="action_done" states="draft,assigned,confirmed"
icon="gtk-go-forward" type="object"
class="oe_highlight"/>
</tree>
</field>
</record>
@ -1435,54 +1445,6 @@
</field>
</record>
<record id="view_move_search_reception_incoming_picking" model="ir.ui.view">
<field name="name">stock.move.incoming.search2</field>
<field name="model">stock.move</field>
<field eval="6" name="priority"/>
<field name="arch" type="xml">
<search string="Stock Moves">
<field name="origin" string="Stock Moves"/>
<filter icon="terp-gtk-go-back-rtl" name="receive" string="Waiting " domain="[('state','in',('confirmed','assigned'))]" help="Stock to be receive"/>
<filter icon="terp-check" name="available" string="Available" domain="[('state','in',('assigned',))]" help="Stock available to be delivered"/>
<filter icon="terp-dialog-close" name="done" string="Done" domain="[('state', '=', 'done')]"/>
<separator/>
<filter icon="terp-go-today" string="Today" domain="[('date','&lt;=',time.strftime('%%Y-%%m-%%d 23:59:59')),('date','&gt;=',time.strftime('%%Y-%%m-%%d 00:00:00'))]" help="Orders planned for today"/>
<field name="product_id"/>
<field name="prodlot_id"/>
<group expand="0" string="Group By...">
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="Order" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" groups="base.group_no_one"/>
</group>
</search>
</field>
</record>
<record id="view_move_search_reception_outcoming_picking" model="ir.ui.view">
<field name="name">stock.move.outgoing.search2</field>
<field name="model">stock.move</field>
<field eval="6" name="priority"/>
<field name="arch" type="xml">
<search string="Stock Moves">
<field name="origin" string="Stock Moves"/>
<filter icon="terp-gtk-go-back-rtl" name="receive" string="Waiting" domain="[('state','in',('confirmed','assigned'))]" help="Stock to be delivered (Available or not)"/>
<filter icon="terp-check" name="available" string="Available" domain="[('state','in',('assigned',))]" help="Stock available to be delivered"/>
<filter icon="terp-dialog-close" name="received" string="Done" domain="[('state','=','done')]"/>
<separator/>
<filter icon="terp-go-today" string="Today" domain="[('date','&lt;=',time.strftime('%%Y-%%m-%%d 23:59:59')),('date','&gt;=',time.strftime('%%Y-%%m-%%d 00:00:00'))]" help="Orders planned for today"/>
<field name="product_id"/>
<field name="prodlot_id"/>
<group expand="0" string="Group By...">
<filter string="Product" icon="terp-accessories-archiver" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="Order" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'origin'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Order Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" groups="base.group_no_one"/>
</group>
</search>
</field>
</record>
<record id="action_reception_picking_move" model="ir.actions.act_window">
<field name="name">Receive Products</field>
<field name="res_model">stock.move</field>
@ -1491,8 +1453,7 @@
<field name="view_mode">tree,form</field>
<field name="domain">['|','&amp;',('picking_id','=',False),('location_id.usage', 'in', ['customer','supplier']),'&amp;',('picking_id','!=',False),('picking_id.type','=','in')]</field>
<field name="view_id" ref="view_move_tree_reception_picking"/>
<field name="context" eval="'{\'product_receive\' : True, \'default_location_id\':%d, \'default_location_dest_id\':%d}' % (ref('stock_location_suppliers'),ref('stock_location_stock') )"/>
<field name="search_view_id" ref="view_move_search_reception_incoming_picking"/>
<field name="context" eval="'{\'product_receive\' : True, \'default_location_id\':%d, \'default_location_dest_id\':%d, \'search_default_future\': 1}' % (ref('stock_location_suppliers'),ref('stock_location_stock') )"/>
<field name="help" type="html">
<p>
Click to register a product reception.
@ -1627,8 +1588,7 @@
<field name="view_mode">tree,form</field>
<field name="domain">['|','&amp;',('picking_id','=',False),('location_dest_id.usage', 'in', ['customer','supplier']),'&amp;',('picking_id','!=',False),('picking_id.type','=','out')]</field>
<field name="view_id" ref="view_move_tree_reception_picking"/>
<field name="context" eval="'{\'default_location_id\':%d, \'default_location_dest_id\':%d}' % (ref('stock_location_stock'),ref('stock_location_customers'))"/>
<field name="search_view_id" ref="view_move_search_reception_outcoming_picking"/>
<field name="context" eval="'{\'default_location_id\':%d, \'default_location_dest_id\':%d, \'search_default_future\': 1}' % (ref('stock_location_stock'),ref('stock_location_customers'))"/>
<field name="help" type="html">
<p>
You will find in this list all products you have to deliver to

View File

@ -38,62 +38,59 @@
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="arch" type="xml">
<notebook position="inside">
<page string="Logistics Flows">
<field name="flow_pull_ids" colspan="4" nolabel="1">
<tree string="Pulled flows">
<field name="name"/>
<field name="location_id" attrs="{'required': [('type_proc', '=', 'move')]}"/>
<field name="type_proc"/>
<field name="journal_id"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
<form string="Pulled Paths">
<group>
<group string="Conditions">
<field name="name" placeholder="Fulfill needs on location X from location Y "/>
<field name="location_id"/>
</group>
<group string="Action Type">
<field name="type_proc"/>
<field name="company_id"/>
</group>
<group name="inventory" position="after">
<field name="flow_pull_ids" colspan="4" nolabel="1">
<tree string="Pulled flows">
<field name="name"/>
<field name="location_id" attrs="{'required': [('type_proc', '=', 'move')]}"/>
<field name="type_proc"/>
<field name="journal_id"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
<form string="Pulled Paths">
<group>
<group string="Conditions">
<field name="name" placeholder="Fulfill needs on location X from location Y "/>
<field name="location_id"/>
</group>
<group attrs="{'invisible':[('type_proc','!=','move')]}">
<field name="location_src_id" attrs="{'required': [('type_proc', '=', 'move')]}"/>
<field name="picking_type"/>
<field name="partner_address_id"/>
<field name="procure_method"/>
<field name="cancel_cascade"/>
<field name="invoice_state"/>
<field name="journal_id"/>
<group string="Action Type">
<field name="type_proc"/>
<field name="company_id"/>
</group>
</form>
</field>
<field name="path_ids">
<field name="name"/>
<tree string="Pushed flows">
<field name="location_from_id"/>
<field name="location_dest_id"/>
<field name="auto"/>
<field name="name"/>
<field name="invoice_state"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
<form string="Pushed flows">
<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"/>
<field name="delay"/>
<field name="journal_id"/>
</group>
<group attrs="{'invisible':[('type_proc','!=','move')]}">
<field name="location_src_id" attrs="{'required': [('type_proc', '=', 'move')]}"/>
<field name="picking_type"/>
<field name="partner_address_id"/>
<field name="procure_method"/>
<field name="cancel_cascade"/>
<field name="invoice_state"/>
<field name="company_id" groups="base.group_multi_company"/>
</form>
</field>
</page>
</notebook>
<field name="journal_id"/>
</group>
</form>
</field>
<field name="path_ids">
<tree string="Pushed flows">
<field name="location_from_id"/>
<field name="location_dest_id"/>
<field name="auto"/>
<field name="name"/>
<field name="invoice_state"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
<form string="Pushed flows">
<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"/>
<field name="delay"/>
<field name="journal_id"/>
<field name="picking_type"/>
<field name="invoice_state"/>
<field name="company_id" groups="base.group_multi_company"/>
</form>
</field>
</group>
</field>
</record>
</data>

View File

@ -45,16 +45,14 @@
<field name="arch" type="xml">
<notebook position="inside">
<page string="Warnings">
<group colspan="2" col="2">
<separator string="Warning when Selling this Product" colspan="4"/>
<field name="sale_line_warn" nolabel="1" />
<field name="sale_line_warn_msg" colspan="3" nolabel="1"
<group string="Warning when Selling this Product">
<field name="sale_line_warn"/>
<field name="sale_line_warn_msg"
attrs="{'required':[('sale_line_warn','!=','no-message')],'readonly':[('sale_line_warn','=','no-message')]}"/>
</group>
<group colspan="2" col="2">
<separator string="Warning when Purchasing this Product" colspan="4" />
<field name="purchase_line_warn" nolabel="1" />
<field name="purchase_line_warn_msg" colspan="3" nolabel="1"
<group string="Warning when Purchasing this Product">
<field name="purchase_line_warn"/>
<field name="purchase_line_warn_msg"
attrs="{'required':[('purchase_line_warn','!=','no-message')],'readonly':[('purchase_line_warn','=','no-message')]}"/>
</group>
</page>