summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajesh Prajapati (OpenERP) <rpr@tinyerp.com>2012-10-08 11:38:25 +0530
committerRajesh Prajapati (OpenERP) <rpr@tinyerp.com>2012-10-08 11:38:25 +0530
commitc290f61a4d33fdd3864dfafb4ab2a2bfe5fb8f49 (patch)
tree9d0767dee53974144b9abe482ef2fd6122e583f8
parentc6a13dd29349cd6d5767760c85c90eb18c40a998 (diff)
parent46c83756dad86dfea2391bd33e5c5c4d09fac800 (diff)
[MERGE] merge with main addons
bzr revid: rpr@tinyerp.com-20121008060825-uitjn8xtpfz24dfq
-rw-r--r--addons/account/account_bank_statement.py5
-rw-r--r--addons/account/test/account_supplier_invoice.yml2
-rw-r--r--addons/account_payment/wizard/account_payment_populate_statement.py18
-rw-r--r--addons/account_voucher/account_voucher.py25
-rw-r--r--addons/account_voucher/account_voucher_view.xml1
-rw-r--r--addons/account_voucher/test/account_voucher.yml6
-rw-r--r--addons/account_voucher/test/account_voucher_report.yml3
-rw-r--r--addons/account_voucher/test/case1_usd_usd.yml14
-rw-r--r--addons/account_voucher/test/case4_cad_chf.yml4
-rw-r--r--addons/account_voucher/test/sales_receipt.yml2
-rw-r--r--addons/account_voucher/voucher_sales_purchase_view.xml4
-rw-r--r--addons/analytic/analytic.py5
-rw-r--r--addons/analytic/analytic_view.xml1
-rw-r--r--addons/crm/crm_phonecall_view.xml1
-rw-r--r--addons/event/event.py16
-rw-r--r--addons/event/event_view.xml16
-rw-r--r--addons/event/report/report_event_registration_view.xml4
-rw-r--r--addons/hr_holidays/hr_holidays.py7
-rw-r--r--addons/hr_holidays/hr_holidays_view.xml4
-rw-r--r--addons/mrp/mrp.py9
-rw-r--r--addons/sale/sale.py11
-rw-r--r--addons/sale/sale_view.xml4
-rw-r--r--addons/sale/test/sale_order_demo.yml14
-rw-r--r--addons/sale_analytic_plans/sale_analytic_plans.py10
-rw-r--r--addons/sale_mrp/test/sale_mrp.yml25
-rw-r--r--addons/sale_stock/__openerp__.py1
-rw-r--r--addons/sale_stock/sale_stock.py24
-rw-r--r--addons/sale_stock/sale_stock_view.xml7
-rw-r--r--addons/sale_stock/test/sale_order_onchange.yml22
-rw-r--r--addons/survey/survey_view.xml4
30 files changed, 160 insertions, 109 deletions
diff --git a/addons/account/account_bank_statement.py b/addons/account/account_bank_statement.py
index b4fc2388a68..8b2a9aff257 100644
--- a/addons/account/account_bank_statement.py
+++ b/addons/account/account_bank_statement.py
@@ -461,10 +461,9 @@ class account_bank_statement(osv.osv):
return {}
balance_start = self._compute_balance_end_real(cr, uid, journal_id, context=context)
- journal_data = self.pool.get('account.journal').read(cr, uid, journal_id, ['default_debit_account_id', 'company_id'], context=context)
- account_id = journal_data['default_debit_account_id']
+ journal_data = self.pool.get('account.journal').read(cr, uid, journal_id, ['company_id'], context=context)
company_id = journal_data['company_id']
- return {'value': {'balance_start': balance_start, 'account_id': account_id, 'company_id': company_id}}
+ return {'value': {'balance_start': balance_start, 'company_id': company_id}}
def unlink(self, cr, uid, ids, context=None):
stat = self.read(cr, uid, ids, ['state'], context=context)
diff --git a/addons/account/test/account_supplier_invoice.yml b/addons/account/test/account_supplier_invoice.yml
index 9c5ce2dea3e..02c3d367050 100644
--- a/addons/account/test/account_supplier_invoice.yml
+++ b/addons/account/test/account_supplier_invoice.yml
@@ -21,7 +21,7 @@
-
I create a supplier invoice
-
- !record {model: account.invoice, id: account_invoice_supplier0}:
+ !record {model: account.invoice, id: account_invoice_supplier0, view: invoice_supplier_form}:
account_id: account.a_pay
check_total: 3000.0
company_id: base.main_company
diff --git a/addons/account_payment/wizard/account_payment_populate_statement.py b/addons/account_payment/wizard/account_payment_populate_statement.py
index ecfd4988329..fffe6c17b92 100644
--- a/addons/account_payment/wizard/account_payment_populate_statement.py
+++ b/addons/account_payment/wizard/account_payment_populate_statement.py
@@ -86,24 +86,24 @@ class account_payment_populate_statement(osv.osv_memory):
'name': line.name,
'partner_id': line.partner_id.id,
'journal_id': statement.journal_id.id,
- 'account_id': result.get('account_id', statement.journal_id.default_credit_account_id.id),
+ 'account_id': result['value'].get('account_id', statement.journal_id.default_credit_account_id.id),
'company_id': statement.company_id.id,
'currency_id': statement.currency.id,
'date': line.date or time.strftime('%Y-%m-%d'),
'amount': abs(amount),
- 'period_id': statement.period_id.id
+ 'period_id': statement.period_id.id,
}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
- voucher_line_dict = False
- if result['value']['line_ids']:
- for line_dict in result['value']['line_ids']:
- move_line = move_line_obj.browse(cr, uid, line_dict['move_line_id'], context)
- if line.move_line_id.move_id.id == move_line.move_id.id:
- voucher_line_dict = line_dict
+
+ voucher_line_dict = {}
+ for line_dict in result['value']['line_cr_ids'] + result['value']['line_dr_ids']:
+ move_line = move_line_obj.browse(cr, uid, line_dict['move_line_id'], context)
+ if line.move_line_id.move_id.id == move_line.move_id.id:
+ voucher_line_dict = line_dict
+
if voucher_line_dict:
voucher_line_dict.update({'voucher_id': voucher_id})
voucher_line_obj.create(cr, uid, voucher_line_dict, context=context)
-
st_line_id = statement_line_obj.create(cr, uid, {
'name': line.order_id.reference or '?',
'amount': - amount,
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index 4b0365e1a11..423026251c2 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -547,6 +547,19 @@ class account_voucher(osv.osv):
vals = self.recompute_payment_rate(cr, uid, ids, res, currency_id, date, ttype, journal_id, amount, context=context)
for key in vals.keys():
res[key].update(vals[key])
+ #TODO: onchange_partner_id() should not returns [pre_line, line_dr_ids, payment_rate...] for type sale, and not
+ # [pre_line, line_cr_ids, payment_rate...] for type purchase.
+ # We should definitively split account.voucher object in two and make distinct on_change functions. In the
+ # meanwhile, bellow lines must be there because the fields aren't present in the view, what crashes if the
+ # onchange returns a value for them
+ if ttype == 'sale':
+ del(res['value']['line_dr_ids'])
+ del(res['value']['pre_line'])
+ del(res['value']['payment_rate'])
+ elif ttype == 'purchase':
+ del(res['value']['line_cr_ids'])
+ del(res['value']['pre_line'])
+ del(res['value']['payment_rate'])
return res
def recompute_voucher_lines(self, cr, uid, ids, partner_id, journal_id, price, currency_id, ttype, date, context=None):
@@ -588,7 +601,7 @@ class account_voucher(osv.osv):
#set default values
default = {
- 'value': {'line_ids': [] ,'line_dr_ids': [] ,'line_cr_ids': [] ,'pre_line': False,},
+ 'value': {'line_dr_ids': [] ,'line_cr_ids': [] ,'pre_line': False,},
}
#drop existing lines
@@ -667,6 +680,7 @@ class account_voucher(osv.osv):
#voucher line creation
for line in account_move_lines:
+
if _remove_noise_in_o2m():
continue
@@ -771,8 +785,10 @@ class account_voucher(osv.osv):
if account_id and account_id.tax_ids:
tax_id = account_id.tax_ids[0].id
- vals = self.onchange_price(cr, uid, ids, line_ids, tax_id, partner_id, context)
- vals['value'].update({'tax_id':tax_id,'amount': amount})
+ vals = {'value':{} }
+ if ttype in ('sale', 'purchase'):
+ vals = self.onchange_price(cr, uid, ids, line_ids, tax_id, partner_id, context)
+ vals['value'].update({'tax_id':tax_id,'amount': amount})
currency_id = False
if journal.currency:
currency_id = journal.currency.id
@@ -1183,6 +1199,7 @@ class account_voucher(osv.osv):
account_id = voucher_brw.partner_id.property_account_receivable.id
else:
account_id = voucher_brw.partner_id.property_account_payable.id
+ sign = voucher_brw.type == 'payment' and -1 or 1
move_line = {
'name': write_off_name or name,
'account_id': account_id,
@@ -1191,7 +1208,7 @@ class account_voucher(osv.osv):
'date': voucher_brw.date,
'credit': diff > 0 and diff or 0.0,
'debit': diff < 0 and -diff or 0.0,
- 'amount_currency': company_currency <> current_currency and voucher_brw.writeoff_amount or False,
+ 'amount_currency': company_currency <> current_currency and (sign * -1 * voucher_brw.writeoff_amount) or False,
'currency_id': company_currency <> current_currency and current_currency or False,
'analytic_account_id': voucher_brw.analytic_id and voucher_brw.analytic_id.id or False,
}
diff --git a/addons/account_voucher/account_voucher_view.xml b/addons/account_voucher/account_voucher_view.xml
index 5e26c366778..f8bab444453 100644
--- a/addons/account_voucher/account_voucher_view.xml
+++ b/addons/account_voucher/account_voucher_view.xml
@@ -34,6 +34,7 @@
</field>
</record>
+ <!-- where and when is this view used?? -->
<record model="ir.ui.view" id="view_voucher_form">
<field name="name">account.voucher.form</field>
<field name="model">account.voucher</field>
diff --git a/addons/account_voucher/test/account_voucher.yml b/addons/account_voucher/test/account_voucher.yml
index 2ea6c0b7890..f8e20f496e5 100644
--- a/addons/account_voucher/test/account_voucher.yml
+++ b/addons/account_voucher/test/account_voucher.yml
@@ -1,7 +1,8 @@
-
In order to check account voucher module in OpenERP I create a customer voucher
-
- !record {model: account.voucher, id: account_voucher_voucherforaxelor0}:
+ !record {model: account.voucher, id: account_voucher_voucherforaxelor0, view: view_sale_receipt_form}:
+ type: sale
account_id: account.cash
amount: 1000.0
company_id: base.main_company
@@ -47,7 +48,8 @@
-
Now I create a Vendor Voucher
-
- !record {model: account.voucher, id: account_voucher_voucheraxelor0, view: False}:
+ !record {model: account.voucher, id: account_voucher_voucheraxelor0, view: view_voucher_filter_vendor}:
+ type: purchase
account_id: account.cash
amount: 1000.0
company_id: base.main_company
diff --git a/addons/account_voucher/test/account_voucher_report.yml b/addons/account_voucher/test/account_voucher_report.yml
index 3996e0c27e4..60dc4103553 100644
--- a/addons/account_voucher/test/account_voucher_report.yml
+++ b/addons/account_voucher/test/account_voucher_report.yml
@@ -1,7 +1,8 @@
-
Demo for Account Voucher
-
- !record {model: account.voucher, id: account_voucher_voucheraxelor0again}:
+ !record {model: account.voucher, id: account_voucher_voucheraxelor0again, view: view_sale_receipt_form}:
+ type: sale
account_id: account.cash
company_id: base.main_company
journal_id: account.bank_journal
diff --git a/addons/account_voucher/test/case1_usd_usd.yml b/addons/account_voucher/test/case1_usd_usd.yml
index b706e6f0644..300d565f229 100644
--- a/addons/account_voucher/test/case1_usd_usd.yml
+++ b/addons/account_voucher/test/case1_usd_usd.yml
@@ -216,6 +216,10 @@
assert move_line.credit == 63.00, "Debtor account has wrong entry."
elif move_line.amount_currency == 10.00:
assert move_line.debit == 9.00, "Writeoff amount is wrong."
+ elif move_line.amount_currency == 240.00:
+ assert move_line.debit == 216.00, "Bank entry is wrong."
+ else:
+ assert False, "Unrecognized journal entry"
-
I check the residual amount of Invoice1, should be 20 in amount_currency
-
@@ -237,7 +241,7 @@
-
On the first April, I create the second voucher of payment with values 45 USD, journal USD,
-
- !record {model: account.voucher, id: account_voucher_2_case1}:
+ !record {model: account.voucher, id: account_voucher_2_case1, view: view_vendor_receipt_form}:
account_id: account.cash
amount: 45.0
company_id: base.main_company
@@ -323,8 +327,16 @@
assert move_line.debit == 4.75, "Writeoff amount is wrong."
elif move_line.debit == 11.5 and move_line.account_id.reconcile:
assert move_line.amount_currency == 0.0 and move_line.reconcile_id.id == reconcile_a, "Exchange difference entry for the invoice of 100$ is wrong"
+ elif move_line.credit == 11.5:
+ assert move_line.amount_currency == 0.0
elif move_line.debit == 31.0 and move_line.account_id.reconcile:
assert move_line.amount_currency == 0.0 and move_line.reconcile_id.id == reconcile_b, "Exchange difference entry for the invoice of 200$ is wrong"
+ elif move_line.credit == 31.0:
+ assert move_line.amount_currency == 0.0
+ elif move_line.amount_currency == 45.00:
+ assert move_line.debit == 42.75, "Bank entry is wrong."
+ else:
+ assert False, "Unrecognized journal entry"
-
I check the residual amount of Invoice1, should be 0 in residual currency and 0 in amount_residual and paid
-
diff --git a/addons/account_voucher/test/case4_cad_chf.yml b/addons/account_voucher/test/case4_cad_chf.yml
index a78669c95ef..a2b252497cd 100644
--- a/addons/account_voucher/test/case4_cad_chf.yml
+++ b/addons/account_voucher/test/case4_cad_chf.yml
@@ -164,7 +164,7 @@
-
I check that my currency rate difference is correct. 0 in debit with no amount_currency
-
- I check that my writeoff is correct. 11.05 credit and 13.26 amount_currency
+ I check that my writeoff is correct. 11.05 credit and -13.26 amount_currency
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 4'), ('partner_id', '=', ref('base.res_partner_19'))])
@@ -179,7 +179,7 @@
elif move_line.debit == 0.00 and move_line.credit == 0.00:
assert move_line.amount_currency == 0.00, "Incorrect Currency Difference."
elif move_line.credit == 10.61:
- assert move_line.amount_currency == 13.26, "Writeoff amount is wrong."
+ assert move_line.amount_currency == -13.26, "Writeoff amount is wrong."
else:
assert False, "Wrong entry"
-
diff --git a/addons/account_voucher/test/sales_receipt.yml b/addons/account_voucher/test/sales_receipt.yml
index f39d784bd42..7cd82eecaff 100644
--- a/addons/account_voucher/test/sales_receipt.yml
+++ b/addons/account_voucher/test/sales_receipt.yml
@@ -1,7 +1,7 @@
-
Creating a Voucher Receipt for partner Seagate with amount 30000.0
-
- !record {model: account.voucher, id: account_voucher_seagate_0}:
+ !record {model: account.voucher, id: account_voucher_seagate_0, view: view_sale_receipt_form}:
account_id: account.a_recv
amount: 30000.0
company_id: base.main_company
diff --git a/addons/account_voucher/voucher_sales_purchase_view.xml b/addons/account_voucher/voucher_sales_purchase_view.xml
index 5bcecfa268e..4c388730644 100644
--- a/addons/account_voucher/voucher_sales_purchase_view.xml
+++ b/addons/account_voucher/voucher_sales_purchase_view.xml
@@ -72,6 +72,7 @@
<h1><label for="number" string="Sale Receipt"/> <field name="number" class="oe_inline" readonly="1"/></h1>
<group>
<group>
+ <field name="type" invisible="True"/>
<field name="partner_id" domain="[('customer','=',True)]" on_change="onchange_partner_id(partner_id, journal_id, amount, currency_id, type, date, context)" string="Customer" context="{'search_default_customer':1, 'show_address': 1}" options='{"always_reload": true}'/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
@@ -80,9 +81,9 @@
<field name="date" on_change="onchange_date(date, currency_id, currency_id, amount, company_id, context)"/>
<field name="name"/>
<field name="paid" invisible="1"/>
+ <field name="paid_amount_in_company_currency" invisible="1"/>
<field name="currency_id" invisible="1"/>
</group>
- <field name="type" invisible="True"/>
</group>
<notebook>
<page string="Sales Information">
@@ -235,6 +236,7 @@
widget="selection"
on_change="onchange_journal(journal_id, line_dr_ids, tax_id, partner_id, date, amount, type, company_id, context)"
groups="account.group_account_user"/>
+ <field name="paid_amount_in_company_currency" invisible="1"/>
</group>
</group>
<notebook>
diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py
index ff09349b8a2..1ce483a26cd 100644
--- a/addons/analytic/analytic.py
+++ b/addons/analytic/analytic.py
@@ -125,7 +125,8 @@ class account_analytic_account(osv.osv):
if account.company_id:
if account.company_id.currency_id.id != value:
raise osv.except_osv(_('Error!'), _("If you set a company, the currency selected has to be the same as it's currency. \nYou can remove the company belonging, and thus change the currency, only on analytic account of type 'view'. This can be really usefull for consolidation purposes of several companies charts with different currencies, for example."))
- return cr.execute("""update account_analytic_account set currency_id=%s where id=%s""", (value, account.id, ))
+ if value:
+ return cr.execute("""update account_analytic_account set currency_id=%s where id=%s""", (value, account.id, ))
def _currency(self, cr, uid, ids, field_name, arg, context=None):
result = {}
@@ -163,7 +164,7 @@ class account_analytic_account(osv.osv):
'date': fields.date('Date End', select=True),
'company_id': fields.many2one('res.company', 'Company', required=False), #not required because we want to allow different companies to use the same chart of account, except for leaf accounts.
'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'), ('cancelled', 'Cancelled'),('pending','To Renew'),('close','Closed')], 'Status', required=True,),
- 'currency_id': fields.function(_currency, fnct_inv=_set_company_currency,
+ 'currency_id': fields.function(_currency, fnct_inv=_set_company_currency, #the currency_id field is readonly except if it's a view account and if there is no company
store = {
'res.company': (_get_analytic_account, ['currency_id'], 10),
}, string='Currency', type='many2one', relation='res.currency'),
diff --git a/addons/analytic/analytic_view.xml b/addons/analytic/analytic_view.xml
index 51f5428002f..0bb009e72b0 100644
--- a/addons/analytic/analytic_view.xml
+++ b/addons/analytic/analytic_view.xml
@@ -24,6 +24,7 @@
<field name="partner_id" on_change="on_change_partner_id(partner_id, name)" attrs="{'required':[('type','=','contract')]}"/>
<field name="manager_id"/>
<field name="code"/>
+ <field name="currency_id" attrs="{'invisible': ['|',('type', '&lt;&gt;', 'view'), ('company_id', '&lt;&gt;', False)]}"/>
</group>
<group>
<field name="type"/>
diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml
index ea20624d738..c610913febf 100644
--- a/addons/crm/crm_phonecall_view.xml
+++ b/addons/crm/crm_phonecall_view.xml
@@ -140,6 +140,7 @@
<field name="duration" widget="float_time"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
+ <field name="email_from" invisible="1"/> <!--not needed because of the chatter, thus invisible, but must be in the view as it's returned by onchange_partner_id()-->
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"/>
<field name="partner_mobile"/>
diff --git a/addons/event/event.py b/addons/event/event.py
index 0eb2dda8312..d86fd92d054 100644
--- a/addons/event/event.py
+++ b/addons/event/event.py
@@ -435,22 +435,6 @@ class event_registration(osv.osv):
'phone':contact_id.phone,
}}
- def onchange_event(self, cr, uid, ids, event_id, context=None):
- """This function returns value of Product Name, Unit Price based on Event.
- """
- if context is None:
- context = {}
- if not event_id:
- return {}
- event_obj = self.pool.get('event.event')
- data_event = event_obj.browse(cr, uid, event_id, context=context)
- return {'value':
- {'event_begin_date': data_event.date_begin,
- 'event_end_date': data_event.date_end,
- 'company_id': data_event.company_id and data_event.company_id.id or False,
- }
- }
-
def onchange_partner_id(self, cr, uid, ids, part, context=None):
res_obj = self.pool.get('res.partner')
data = {}
diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml
index 6ad8fb20467..003072616f7 100644
--- a/addons/event/event_view.xml
+++ b/addons/event/event_view.xml
@@ -136,10 +136,22 @@
<field name="type" on_change="onchange_event_type(type,context)"/>
<field name="date_begin"/>
<field name="date_end"/>
+ <field name="company_id" groups="base.group_multi_company"/>
</group>
</group>
</div>
<notebook>
+ <page string="Email Configuration" groups="base.group_no_one">
+ <group>
+ <field name="reply_to"/>
+ <group>
+ <field name="email_registration_id"/>
+ </group>
+ <group>
+ <field name="email_confirmation_id"/>
+ </group>
+ </group>
+ </page>
<page string="Event Description">
<field name="note" colspan="4" nolabel="1"/>
</page>
@@ -217,7 +229,7 @@
<field name="register_current"/>
<field name="register_min"/>
<field name="register_max" invisible="1"/>
- <field name="main_speaker_id" groups="base.extended"/>
+ <field name="main_speaker_id" groups="base.group_no_one"/>
<field name="user_id"/>
<field name="state"/>
<field name="message_unread" invisible="1"/>
@@ -452,7 +464,7 @@
<sheet string="Registration">
<label for="event_id" class="oe_edit_only"/>
<h1>
- <field name="event_id" on_change="onchange_event(event_id, context)" domain="[('state','in',('draft','confirm'))]"/>
+ <field name="event_id" domain="[('state','in',('draft','confirm'))]"/>
</h1>
<group>
<group>
diff --git a/addons/event/report/report_event_registration_view.xml b/addons/event/report/report_event_registration_view.xml
index 6ce2c199332..f39b6aecfe7 100644
--- a/addons/event/report/report_event_registration_view.xml
+++ b/addons/event/report/report_event_registration_view.xml
@@ -62,8 +62,8 @@
<newline/>
<group expand="1" string="Group By...">
<filter string="Participant / Contact" icon="terp-personal" context="{'group_by':'name_registration'}" help="Registration contact"/>
- <filter string="Register" icon="terp-personal" context="{'group_by':'user_id_registration'}" help="Registration contact" groups="base.extended"/>
- <filter string="Speaker" name="speaker" icon="terp-personal+" context="{'group_by': 'speaker_id'}" groups="base.extended"/>
+ <filter string="Register" icon="terp-personal" context="{'group_by':'user_id_registration'}" help="Registration contact" groups="base.group_no_one"/>
+ <filter string="Speaker" name="speaker" icon="terp-personal+" context="{'group_by': 'speaker_id'}" groups="base.group_no_one"/>
<filter string="Event Responsible" name="user_id" icon="terp-personal" context="{'group_by': 'user_id'}"/>
<filter string="Event" name="event" icon="terp-crm" context="{'group_by':'event_id', 'max_reg_event_visible':0}"/>
<filter string="Event Type" icon="terp-crm" context="{'group_by':'event_type'}"/>
diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py
index 306e5201829..b48f0786704 100644
--- a/addons/hr_holidays/hr_holidays.py
+++ b/addons/hr_holidays/hr_holidays.py
@@ -212,13 +212,6 @@ class hr_holidays(osv.osv):
}
return result
- def onchange_status_id(self, cr, uid, ids, status_id, context=None):
- double_validation = False
- if status_id:
- holiday_status = self.pool.get('hr.holidays.status').browse(cr, uid, status_id, context=context)
- double_validation = holiday_status.double_validation
- return {'value': {'double_validation': double_validation}}
-
def set_to_draft(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {
'state': 'draft',
diff --git a/addons/hr_holidays/hr_holidays_view.xml b/addons/hr_holidays/hr_holidays_view.xml
index 347e2b17ca5..ae85b03fcaf 100644
--- a/addons/hr_holidays/hr_holidays_view.xml
+++ b/addons/hr_holidays/hr_holidays_view.xml
@@ -100,7 +100,7 @@
<group>
<group>
<field name="name" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
- <field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
+ <field name="holiday_status_id" context="{'employee_id':employee_id}"/>
<label for="number_of_days_temp" string="Duration"/>
<div>
<group col="3">
@@ -145,7 +145,7 @@
<group>
<group>
<field name="name" required="1" attrs="{'readonly':[('state','!=','draft'),('state','!=','confirm')]}"/>
- <field name="holiday_status_id" on_change="onchange_status_id(holiday_status_id)" context="{'employee_id':employee_id}"/>
+ <field name="holiday_status_id" context="{'employee_id':employee_id}"/>
<field name="number_of_days_temp"/>
</group>
<group>
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index cf203a60c7f..ecac11f856a 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -910,12 +910,11 @@ class mrp_production(osv.osv):
# Internal shipment is created for Stockable and Consumer Products
if production_line.product_id.type not in ('product', 'consu'):
return False
- move_name = _('PROD: %s') % production.name
source_location_id = production.location_src_id.id
if not destination_location_id:
destination_location_id = source_location_id
return stock_move.create(cr, uid, {
- 'name': move_name,
+ 'name': production.name,
'picking_id': shipment_id,
'product_id': production_line.product_id.id,
'product_qty': production_line.product_qty,
@@ -965,9 +964,8 @@ class mrp_production(osv.osv):
stock_move = self.pool.get('stock.move')
source_location_id = production.product_id.product_tmpl_id.property_stock_production.id
destination_location_id = production.location_dest_id.id
- move_name = _('PROD: %s') + production.name
data = {
- 'name': move_name,
+ 'name': production.name,
'date': production.date_planned,
'product_id': production.product_id.id,
'product_qty': production.product_qty,
@@ -990,12 +988,11 @@ class mrp_production(osv.osv):
# Internal shipment is created for Stockable and Consumer Products
if production_line.product_id.type not in ('product', 'consu'):
return False
- move_name = _('PROD: %s') % production.name
destination_location_id = production.product_id.product_tmpl_id.property_stock_production.id
if not source_location_id:
source_location_id = production.location_src_id.id
move_id = stock_move.create(cr, uid, {
- 'name': move_name,
+ 'name': production.name,
'date': production.date_planned,
'product_id': production_line.product_id.id,
'product_qty': production_line.product_qty,
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 558fc9de002..fefc2825642 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -50,6 +50,16 @@ class sale_order(osv.osv):
_inherit = ['mail.thread', 'ir.needaction_mixin']
_description = "Sales Order"
+ def onchange_shop_id(self, cr, uid, ids, shop_id, context=None):
+ v = {}
+ if shop_id:
+ shop = self.pool.get('sale.shop').browse(cr, uid, shop_id, context=context)
+ if shop.project_id.id:
+ v['project_id'] = shop.project_id.id
+ if shop.pricelist_id.id:
+ v['pricelist_id'] = shop.pricelist_id.id
+ return {'value': v}
+
def copy(self, cr, uid, id, default=None, context=None):
if not default:
default = {}
@@ -900,7 +910,6 @@ class sale_order_line(osv.osv):
fpos = fiscal_position and self.pool.get('account.fiscal.position').browse(cr, uid, fiscal_position) or False
if update_tax: #The quantity only have changed
result['tax_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, fpos, product_obj.taxes_id)
- result.update({'type': product_obj.procure_method})
if not flag:
result['name'] = self.pool.get('product.product').name_get(cr, uid, [product_obj.id], context=context_partner)[0][1]
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index d97c9924036..5505a6a88b5 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -181,7 +181,7 @@
</group>
<group>
<field name="date_order"/>
- <field name="shop_id" invisible="1"/>
+ <field name="shop_id" groups="base.group_no_one" on_change="onchange_shop_id(shop_id, context)" widget="selection"/>
<field name="client_order_ref"/>
<field domain="[('type','=','sale')]" name="pricelist_id" groups="product.group_sale_pricelist" on_change="onchange_pricelist_id(pricelist_id,order_line)"/>
</group>
@@ -200,7 +200,7 @@
<field name="product_id"
context="{'partner_id':parent.partner_id, 'quantity':product_uom_qty, 'pricelist':parent.pricelist_id, 'shop':parent.shop_id, 'uom':product_uom}"
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)"/>
+ 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)"/>
<label for="product_uom_qty"/>
<div>
<field
diff --git a/addons/sale/test/sale_order_demo.yml b/addons/sale/test/sale_order_demo.yml
index 05109efbea2..7e5a223e8b0 100644
--- a/addons/sale/test/sale_order_demo.yml
+++ b/addons/sale/test/sale_order_demo.yml
@@ -5,10 +5,12 @@
partner_id: base.res_partner_2
note: Invoice after delivery
payment_term: account.account_payment_term
+ order_line:
+ - product_id: product.product_product_7
+ product_uom_qty: 8
-
- !record {model: sale.order.line, id: line}:
- name : 'LCD Monitor'
- order_id: sale_order_test1
- product_id: product.product_product_7
- price_unit: 190.50
- product_uom_qty: 8
+ I verify that the onchange was correctly triggered
+-
+ !assert {model: sale.order, id: sale.sale_order_test1, string: The onchange function of product was not correctly triggered}:
+ - order_line[0].name == u'[LCD17] 17\u201d LCD Monitor'
+ - order_line[0].price_unit == 1350.0
diff --git a/addons/sale_analytic_plans/sale_analytic_plans.py b/addons/sale_analytic_plans/sale_analytic_plans.py
index b8ccc44079d..872e8b0bffc 100644
--- a/addons/sale_analytic_plans/sale_analytic_plans.py
+++ b/addons/sale_analytic_plans/sale_analytic_plans.py
@@ -39,4 +39,14 @@ class sale_order_line(osv.osv):
sale_order_line()
+class sale_order(osv.osv):
+ _inherit = "sale.order"
+
+ def onchange_shop_id(self, cr, uid, ids, shop_id, context=None):
+ # Remove the project_id from the result of super() call, if any, as this field is not in the view anymore
+ res = super(sale_order, self).onchange_shop_id(cr, uid, ids, shop_id, context=context)
+ if res.get('value',{}).get('project_id'):
+ del(res['value']['project_id'])
+ return res
+
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale_mrp/test/sale_mrp.yml b/addons/sale_mrp/test/sale_mrp.yml
index 0962e1fa1ff..6fd64301af2 100644
--- a/addons/sale_mrp/test/sale_mrp.yml
+++ b/addons/sale_mrp/test/sale_mrp.yml
@@ -117,26 +117,13 @@
proc_ids = self.search(cr, uid, [('origin','=',so.name) and ('state','=','running')])
assert proc_ids, _('Procurement is not in the running state!')
-
- I verify that a manufacturing order has been generated
+ I verify that a manufacturing order has been generated, and that its name and reference are correct
-
!python {model: sale.order}: |
+ mnf_obj = self.pool.get('mrp.production')
so = self.browse(cr, uid, ref("sale_order_so0"))
- mnf_obj=self.pool.get('mrp.production')
- mnf_id=mnf_obj.search(cr, uid, [('origin','=',so.name)])
+ mnf_id = mnf_obj.search(cr, uid, [('origin','=',so.name)])
assert mnf_id, _('Manufacturing order has not been generated')
--
- I verify that a 'Sale Name' field of Manufacturing order gets bind with the value
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so0"))
- mnf_obj=self.pool.get('mrp.production')
- mnf_id=mnf_obj.search(cr, uid, [('sale_name','=',so.name)])
- assert mnf_id, _('Sale Name is not bind with the value')
--
- I verify that a 'Sale Reference' field of Manufacturing order gets bind with the value
--
- !python {model: sale.order}: |
- so = self.browse(cr, uid, ref("sale_order_so0"))
- mnf_obj=self.pool.get('mrp.production')
- mnf_id=mnf_obj.search(cr, uid, [('sale_ref','=',so.client_order_ref)])
- assert mnf_id, _('Sale Reference is not bind with the value')
+ mo = mnf_obj.browse(cr, uid, mnf_id)[0]
+ assert mo.sale_name == so.name, 'Wrong Name for the Manufacturing Order. Expected %s, Got %s' % (so.name, mo.name)
+ assert mo.sale_ref == so.client_order_ref, 'Wrong Sale Reference for the Manufacturing Order'
diff --git a/addons/sale_stock/__openerp__.py b/addons/sale_stock/__openerp__.py
index 2a670000581..10773b44a3f 100644
--- a/addons/sale_stock/__openerp__.py
+++ b/addons/sale_stock/__openerp__.py
@@ -61,6 +61,7 @@ You can choose flexible invoicing methods:
'test': ['test/cancel_order_sale_stock.yml',
'test/picking_order_policy.yml',
'test/prepaid_order_policy.yml',
+ 'test/sale_order_onchange.yml',
],
'installable': True,
'auto_install': True,
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index 490af81ed41..ce6894318c4 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -165,16 +165,6 @@ class sale_order(osv.osv):
return osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
- def onchange_shop_id(self, cr, uid, ids, shop_id):
- v = {}
- if shop_id:
- shop = self.pool.get('sale.shop').browse(cr, uid, shop_id)
- v['project_id'] = shop.project_id.id
- # Que faire si le client a une pricelist a lui ?
- if shop.pricelist_id.id:
- v['pricelist_id'] = shop.pricelist_id.id
- return {'value': v}
-
def action_view_delivery(self, cr, uid, ids, context=None):
'''
This function returns an action that display existing delivery orders of given sale order ids. It can either be a in a list or in a form view, if there is only one delivery order to show.
@@ -604,14 +594,18 @@ class sale_order_line(osv.osv):
lang=lang, update_tax=update_tax, date_order=date_order, packaging=packaging, fiscal_position=fiscal_position, flag=flag, context=context)
if not product:
- return {'value': {'th_weight': 0, 'product_packaging': False,
- 'product_uos_qty': qty}, 'domain': {'product_uom': [],
- 'product_uos': []}}
+ res['value'].update({'product_packaging': False})
+ return res
+
+ #update of result obtained in super function
res_packing = self.product_packaging_change(cr, uid, ids, pricelist, product, qty, uom, partner_id, packaging, context=context)
res['value'].update(res_packing.get('value', {}))
warning_msgs = res_packing.get('warning') and res_packing['warning']['message'] or ''
product_obj = product_obj.browse(cr, uid, product, context=context)
res['value']['delay'] = (product_obj.sale_delay or 0.0)
+ res['value']['type'] = product_obj.procure_method
+
+ #check if product is available, and if not: raise an error
uom2 = False
if uom:
uom2 = product_uom_obj.browse(cr, uid, uom)
@@ -619,7 +613,6 @@ class sale_order_line(osv.osv):
uom = False
if not uom2:
uom2 = product_obj.uom_id
-
compare_qty = float_compare(product_obj.virtual_available * uom2.factor, qty * product_obj.uom_id.factor, precision_rounding=product_obj.uom_id.rounding)
if (product_obj.type=='product') and int(compare_qty) == -1 \
and (product_obj.procure_method=='make_to_stock'):
@@ -628,7 +621,8 @@ class sale_order_line(osv.osv):
max(0,product_obj.virtual_available), product_obj.uom_id.name,
max(0,product_obj.qty_available), product_obj.uom_id.name)
warning_msgs += _("Not enough stock ! : ") + warn_msg + "\n\n"
- # get unit price
+
+ #update of warning messages
if warning_msgs:
warning = {
'title': _('Configuration Error!'),
diff --git a/addons/sale_stock/sale_stock_view.xml b/addons/sale_stock/sale_stock_view.xml
index 7efb2849a52..8962c21dc6e 100644
--- a/addons/sale_stock/sale_stock_view.xml
+++ b/addons/sale_stock/sale_stock_view.xml
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<openerp>
<data>
-
+
<record id="view_sale_shop_form_inherit" model="ir.ui.view">
<field name="name">sale.shop.inherit.form</field>
<field name="model">sale.shop</field>
@@ -13,7 +13,7 @@
</xpath>
</field>
</record>
-
+
<record id="view_shop_tree_inherit" model="ir.ui.view">
<field name="name">sale.shop.sale.stock</field>
<field name="model">sale.shop</field>
@@ -41,7 +41,8 @@
</xpath>
<xpath expr="//button[@name='action_view_invoice']" position="after">
<button name="action_view_delivery" string="View Delivery Order" type="object" class="oe_highlight"
- attrs="{'invisible': ['|','|','|',('picking_ids','=',False),('picking_ids','=',[]), ('state', 'not in', ('progress','manual')),('shipped','=',True)]}"/> </xpath>
+ attrs="{'invisible': ['|','|','|',('picking_ids','=',False),('picking_ids','=',[]), ('state', 'not in', ('progress','manual')),('shipped','=',True)]}"/>
+ </xpath>
<xpath expr="//button[@name='action_cancel']" position="after">
<button name="ship_cancel" states="shipping_except" string="Cancel"/>
</xpath>
diff --git a/addons/sale_stock/test/sale_order_onchange.yml b/addons/sale_stock/test/sale_order_onchange.yml
new file mode 100644
index 00000000000..1026e5627c3
--- /dev/null
+++ b/addons/sale_stock/test/sale_order_onchange.yml
@@ -0,0 +1,22 @@
+-
+ In order to test the onchange of the Sale Order, I create a product
+-
+ !record {model: product.product, id: product_onchange1}:
+ name: 'Devil Worship Book'
+ list_price: 66.6
+ procure_method: 'make_to_order'
+-
+ Now i create a sale order that uses my new product
+-
+ !record {model: sale.order, id: sale_order_onchange1}:
+ partner_id: base.res_partner_2
+ order_line:
+ - product_id: sale_stock.product_onchange1
+ product_uom_qty: 10
+-
+ I verify that the onchange of product on sale order line was correctly triggered
+-
+ !assert {model: sale.order, id: sale_order_onchange1, string: The onchange function of product was not correctly triggered}:
+ - order_line[0].name == u'Devil Worship Book'
+ - order_line[0].price_unit == 66.6
+ - order_line[0].type == 'make_to_order'
diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml
index 01d6098df55..0247a205700 100644
--- a/addons/survey/survey_view.xml
+++ b/addons/survey/survey_view.xml
@@ -1125,7 +1125,8 @@
<field name="date_deadline"/>
<field name="survey_id"/>
<field name="user_id" on_change="on_change_user(user_id)"/>
- <field name="response" readonly="1"/>
+ <field name="email"/>
+ <field name="response" readonly="1"/>
</group>
</sheet>
</form>
@@ -1139,6 +1140,7 @@
<tree string="Evaluation Plan Phase" colors="red:date_deadline&lt;current_date">
<field name="date_deadline"/>
<field name="user_id"/>
+ <field name="email"/>
<field name="survey_id"/>
<field name="response" />
<field name="state" />