diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml
index 4c6faae9e19..50e431935bc 100644
--- a/addons/account/account_installer.xml
+++ b/addons/account/account_installer.xml
@@ -19,26 +19,26 @@
position="attributes">
You can enhance OpenERP's basic accounting support with a few additional OpenERP applications.
-
+
Configure
23
-
-
-
+
+
+
-
+
-
-
-
-
-
+
+
-
-
-
-
-
+
+
+
+
+
@@ -88,12 +88,12 @@
account_installer_action_replace
tree
-
-
-
+
+
+
-
+
diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 6c031955cc9..a91d4d7eb33 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -488,20 +488,5 @@
-
-
-
- res.partner.invoice.info.inherit
- res.partner
- form
-
-
-
-
-
-
-
-
-
diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml
index 94fd5c664ed..7df04b0f3f4 100644
--- a/addons/account/account_view.xml
+++ b/addons/account/account_view.xml
@@ -1554,7 +1554,7 @@
-
+
Account Add wizard
@@ -1577,7 +1577,7 @@
res_model="account.addtmpl.wizard"
context="{'tmpl_ids': active_id}"
src_model="account.account.template"
- view_type="form" view_mode="form"/>
+ view_type="form" view_mode="form"/>
Generate Chart of Accounts from a Chart Template
- Generate Chart of Accounts from a Chart Template
-
-
- This will automatically configure your chart of accounts, bank accounts, taxes and journals according to the selected template
- 150
-
-
- 15
-
-
+
+
+ This will automatically configure your chart of accounts, bank accounts, taxes and journals according to the selected template
+ 150
+
+
+ 15
+
+
diff --git a/addons/account/partner.py b/addons/account/partner.py
index 215c4286315..2497aaa447c 100644
--- a/addons/account/partner.py
+++ b/addons/account/partner.py
@@ -89,7 +89,7 @@ class res_partner(osv.osv):
_inherit = 'res.partner'
_description = 'Partner'
def _credit_debit_get(self, cr, uid, ids, field_names, arg, context):
- query = self.pool.get('account.move.line')._query_get(cr, uid, context=context)
+ query = self.pool.get('account.move.line')._query_get(cr, 1, context=context)
cr.execute("""select
l.partner_id, a.type, sum(l.debit-l.credit)
from
diff --git a/addons/account/partner_view.xml b/addons/account/partner_view.xml
index 72004afa944..e7e2dc8d92a 100644
--- a/addons/account/partner_view.xml
+++ b/addons/account/partner_view.xml
@@ -118,7 +118,6 @@
-
@@ -126,21 +125,14 @@
-
- res.partner.account.info.inherit
- res.partner
- form
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml
index beb3e4e8ebb..a572f6ca425 100644
--- a/addons/account/security/account_security.xml
+++ b/addons/account/security/account_security.xml
@@ -44,77 +44,77 @@
- Entry lines
+ Entry lines
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Journal Period
+ Journal Period
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Journal multi-company
+ Journal multi-company
- ['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
+ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Analytic journal multi-company
+ Analytic journal multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Analytic journal multi-company
+ Analytic journal multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Period multi-company
+ Period multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Fiscal year multi-company
+ Fiscal year multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Account multi-company
+ Account multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Tax multi-company
+ Tax multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Tax code multi-company
+ Tax code multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Invoice multi-company
+ Invoice multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv
index 329135d29a7..826e2076033 100644
--- a/addons/account/security/ir.model.access.csv
+++ b/addons/account/security/ir.model.access.csv
@@ -70,7 +70,6 @@
"access_account_add_tmpl_wizard_system_manager","account.addtmpl.wizard system manager","model_account_addtmpl_wizard","base.group_system",1,1,1,1
"access_account_invoice_user","account.invoice user","model_account_invoice","base.group_user",1,0,0,0
"access_account_invoice_user","account.invoice.line user","model_account_invoice_line","base.group_user",1,0,0,0
-"access_account_invoice_user","account.invoice.tax user","model_account_invoice_tax","base.group_user",1,0,0,0
"access_account_payment_term_partner_manager","account.payment.term partner manager","model_account_payment_term","base.group_user",1,0,0,0
"access_account_payment_term_line_partner_manager","account.payment.term.line partner manager","model_account_payment_term_line","base.group_user",1,0,0,0
"access_account_account_product_manager","account.account product manager","model_account_account","product.group_product_manager",1,0,0,0
@@ -86,7 +85,7 @@
"access_account_fiscal_position_account_template","account.fiscal.position.account.template","model_account_fiscal_position_account_template","account.group_account_manager",1,1,1,1
"access_account_sequence_fiscal_year","account.sequence.fiscalyear","model_account_sequence_fiscalyear","account.group_account_user",1,1,1,1
"access_account_sequence_fiscal_year_user","account.sequence.fiscalyear user","model_account_sequence_fiscalyear","base.group_user",1,0,0,0
-"access_account_installer","account.installer","model_account_installer","base.group_user",1,0,0,0
+"access_account_installer","account.installer","model_account_installer","base.group_system",1,1,1,1
"access_report_account_receivable","report.account.receivable","model_report_account_receivable","account.group_account_manager",1,0,0,0
"access_temp_range","temp.range","model_temp_range","account.group_account_manager",1,0,0,0
"access_report_aged_receivable","report.aged.receivable","model_report_aged_receivable","account.group_account_manager",1,0,0,0
diff --git a/addons/account/wizard/account_automatic_reconcile.py b/addons/account/wizard/account_automatic_reconcile.py
index 2370c6dbe13..a1798ae9cbf 100644
--- a/addons/account/wizard/account_automatic_reconcile.py
+++ b/addons/account/wizard/account_automatic_reconcile.py
@@ -134,7 +134,6 @@ class account_automatic_reconcile(osv.osv_memory):
return (reconciled, len(credits)+len(debits))
def reconcile(self, cr, uid, ids, context=None):
- service = netsvc.LocalService("object_proxy")
move_line_obj = self.pool.get('account.move.line')
obj_model = self.pool.get('ir.model.data')
if context is None:
@@ -240,4 +239,4 @@ class account_automatic_reconcile(osv.osv_memory):
account_automatic_reconcile()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account_budget/wizard/account_budget_spread.py b/addons/account_budget/wizard/account_budget_spread.py
index ab2eb3d0bf6..f8a627ce070 100644
--- a/addons/account_budget/wizard/account_budget_spread.py
+++ b/addons/account_budget/wizard/account_budget_spread.py
@@ -32,13 +32,12 @@ class account_budget_spread(osv.osv_memory):
}
def check_spread(self, cr, uid, ids, context=None):
- service = netsvc.LocalService("object_proxy")
if context is None:
context = {}
- data = self.read(cr, uid, ids, [])[0]
- res = service.execute(cr.dbname, uid, 'account.budget.post', 'spread', context['active_ids'], data['fiscalyear'], data['amount'])
+ data = self.browse(cr, uid, ids, context=context)[0]
+ res = self.pool.get('account.budget.post').spread(cr, uid, context['active_ids'], data.fiscalyear.id, data.amount)
return {}
account_budget_spread()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/auction/report/auction_invoice.py b/addons/auction/report/auction_invoice.py
index f367d8df88e..b8c508237a5 100644
--- a/addons/auction/report/auction_invoice.py
+++ b/addons/auction/report/auction_invoice.py
@@ -27,8 +27,7 @@ class auction_invoice(report_int):
report_int.__init__(self, name)
def create(self,cr, uid, ids, datas, context):
- service = netsvc.LocalService("object_proxy")
- lots = service.execute(cr.dbname,uid, 'auction.lots', 'read', ids, ['ach_inv_id'])
+ lots = self.pool.get('auction.lots').read(cr,uid, ids, ['ach_inv_id'], context=context)
invoices = {}
for l in lots:
diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml
index a86a3e662d1..56e45c9ccf9 100644
--- a/addons/base_calendar/base_calendar_view.xml
+++ b/addons/base_calendar/base_calendar_view.xml
@@ -103,7 +103,7 @@
separator="1" help="Declined Invitations" />
-
+
@@ -391,7 +391,7 @@
-
+
diff --git a/addons/base_setup/base_setup_todo.xml b/addons/base_setup/base_setup_todo.xml
index 2d6b400d2c5..5ec9be53d76 100644
--- a/addons/base_setup/base_setup_todo.xml
+++ b/addons/base_setup/base_setup_todo.xml
@@ -10,45 +10,45 @@
Main Company Setup
-
- Information of your company will be used to custiomise your documents like Invoices, Sale Orders,...
-
-
- Configure Your Company
-
-
- 25
-
-
+
+ Information of your company will be used to custiomise your documents like Invoices, Sale Orders,...
+
+
+ Configure Your Company
+
+
+ 25
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/addons/base_setup/security/ir.model.access.csv b/addons/base_setup/security/ir.model.access.csv
index 912e3c1c634..9cc4e8bda68 100644
--- a/addons/base_setup/security/ir.model.access.csv
+++ b/addons/base_setup/security/ir.model.access.csv
@@ -1,4 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-"access_base_setup_installer","base.setup.installer","model_base_setup_installer",,1,0,0,0
-"access_base_setup_company","base.setup.company","model_base_setup_company",,1,0,0,0
-"access_base_setup_config","base.setup.config","model_base_setup_config",,1,0,0,0
+"access_base_setup_installer","base.setup.installer","model_base_setup_installer",base.group_system,1,1,1,1
+"access_base_setup_company","base.setup.company","model_base_setup_company",base.group_system,1,1,1,1
+"access_base_setup_config","base.setup.config","model_base_setup_config",base.group_system,1,1,1,1
diff --git a/addons/crm/crm_lead_menu.xml b/addons/crm/crm_lead_menu.xml
index aad27f9eb14..cea854427dc 100644
--- a/addons/crm/crm_lead_menu.xml
+++ b/addons/crm/crm_lead_menu.xml
@@ -29,7 +29,6 @@
-
-
+
diff --git a/addons/crm/crm_meeting_menu.xml b/addons/crm/crm_meeting_menu.xml
index aaae9541613..ec58c116baf 100644
--- a/addons/crm/crm_meeting_menu.xml
+++ b/addons/crm/crm_meeting_menu.xml
@@ -38,7 +38,7 @@
-
+
gantt
@@ -85,33 +85,33 @@
+ parent="base.menu_base_partner" sequence="3" />
+ action="crm_case_categ_meet" parent="menu_meeting_sale"
+ sequence="1" />
-
+
Calendar
ir.ui.menu
-
+
- Meeting Invitations
- ir.actions.act_window
- calendar.attendee
- form
- tree,form
-
+ Meeting Invitations
+ ir.actions.act_window
+ calendar.attendee
+ form
+ tree,form
+
[('ref','like','crm.meeting,')]
- {'default_sent_by_uid': uid}
-
+ {'default_sent_by_uid': uid}
+
+ name="Meeting Invitations" parent="crm.menu_meeting_sale"
+ sequence="10" action="action_view_attendee_form"
+ groups="base.group_extended" />
diff --git a/addons/crm/crm_meeting_view.xml b/addons/crm/crm_meeting_view.xml
index cd3b7866a89..34bdafe1c58 100644
--- a/addons/crm/crm_meeting_view.xml
+++ b/addons/crm/crm_meeting_view.xml
@@ -2,7 +2,7 @@
-
+
Meeting Categories
@@ -16,7 +16,7 @@
-
+
CRM - Meetings Form
@@ -26,7 +26,7 @@
+ required="1" colspan="2" />
+ name="%(base_calendar.action_base_calendar_set_exrule)d" icon="gtk-zoom-out" type="action"
+ context="{'model' : 'crm.meeting'}"
+ attrs="{'invisible':[('rrule_type','in', ('none', False))]}"/>
@@ -133,7 +133,7 @@
-
-
+
CRM - Meetings Tree
@@ -222,7 +222,7 @@
-
+
CRM - Meetings Calendar
@@ -238,7 +238,7 @@
-
+
CRM - Meetings Gantt
@@ -254,7 +254,7 @@
-
+
CRM - Meetings Search
@@ -274,29 +274,29 @@
domain="[('section_id','=',context.get('section_id',False))]"
help="My Sale Team" />
-
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
calendar.attendee.form.inherit
@@ -310,7 +310,7 @@
-
+
calendar.attendee.tree.inherit
diff --git a/addons/crm/crm_opportunity_menu.xml b/addons/crm/crm_opportunity_menu.xml
index a1cdce906af..cb24990416f 100644
--- a/addons/crm/crm_opportunity_menu.xml
+++ b/addons/crm/crm_opportunity_menu.xml
@@ -2,7 +2,7 @@
-
-
Opportunities
crm.lead
- tree,form,graph
- ['|',('type','=','opportunity'),('state','=','draft')]
- {'search_default_user_id':uid,'search_default_current':1}
+ tree,form,graph,calendar
+ [('type','=','opportunity')]
+ {'search_default_user_id':uid,'search_default_current':1, 'default_type': 'opportunity'}
- {'search_default_current':1, 'default_type': 'opportunity'}
@@ -55,11 +54,11 @@
+ parent="base.menu_base_partner" sequence="1" />
+ parent="base.menu_sales" action="crm_case_category_act_oppor11"
+ sequence="2" />
diff --git a/addons/crm/crm_opportunity_view.xml b/addons/crm/crm_opportunity_view.xml
index da111cf9518..08530fcae27 100644
--- a/addons/crm/crm_opportunity_view.xml
+++ b/addons/crm/crm_opportunity_view.xml
@@ -32,7 +32,7 @@
id="menu_crm_opportunity_stage_act" name="Stages"
parent="menu_crm_config_opportunity" />
-
+
Opportunity Resource Type
@@ -83,7 +83,8 @@
-
+
+
@@ -134,6 +135,27 @@
icon="gtk-convert" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -161,10 +183,10 @@
icon="gtk-undo" type="action" />
-
-
-
-
+
+
+
+
+
-
-
-
+
-
-
+
+
diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml
index db8adda789c..59b8013b167 100644
--- a/addons/crm/crm_phonecall_view.xml
+++ b/addons/crm/crm_phonecall_view.xml
@@ -261,7 +261,7 @@
-
+
diff --git a/addons/crm/report/crm_phonecall_report_view.xml b/addons/crm/report/crm_phonecall_report_view.xml
index 597d06faf7d..f1f5eb4a490 100644
--- a/addons/crm/report/crm_phonecall_report_view.xml
+++ b/addons/crm/report/crm_phonecall_report_view.xml
@@ -187,7 +187,7 @@
-
diff --git a/addons/delivery/delivery_view.xml b/addons/delivery/delivery_view.xml
index 427f5bfd6f2..e367148213d 100644
--- a/addons/delivery/delivery_view.xml
+++ b/addons/delivery/delivery_view.xml
@@ -67,7 +67,7 @@
-
+
@@ -243,18 +243,6 @@
-
- stock.move.tree.weight
- tree
- stock.move
-
-
-
-
-
-
-
-
stock.move.form.weight
form
@@ -267,18 +255,6 @@
-
- stock.move.reception.packing.tree.weight
- tree
- stock.move
-
-
-
-
-
-
-
-
stock.move.reception.packing.form.weight
form
@@ -297,8 +273,8 @@
-
-
+
+
diff --git a/addons/delivery/i18n/ru.po b/addons/delivery/i18n/ru.po
index fa64529594b..b43f11ed5d9 100644
--- a/addons/delivery/i18n/ru.po
+++ b/addons/delivery/i18n/ru.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-04-23 09:08+0000\n"
-"Last-Translator: grisha \n"
+"PO-Revision-Date: 2010-06-11 16:12+0000\n"
+"Last-Translator: Sios \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: 2010-04-24 03:52+0000\n"
+"X-Launchpad-Export-Date: 2010-06-12 03:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: delivery
diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml
index b1fa9a510c9..56d96d916ca 100644
--- a/addons/document/document_view.xml
+++ b/addons/document/document_view.xml
@@ -3,7 +3,7 @@
-
+
@@ -238,19 +238,19 @@
help="less 1 month modified/created attachments"
domain="[('create_date','<=', time.strftime('%%Y-%%m-%%d')),('create_date','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
/>
-
-
+
+
-
-
-
-
+
+
+
+
-
+
diff --git a/addons/email_template/email_template_account_view.xml b/addons/email_template/email_template_account_view.xml
index 7a0bc84538f..9a35328b25c 100644
--- a/addons/email_template/email_template_account_view.xml
+++ b/addons/email_template/email_template_account_view.xml
@@ -1,69 +1,69 @@
-
+
-
- email_template.account.form
- email_template.account
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ email_template.account.form
+ email_template.account
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- email_template.account.tree
- email_template.account
- tree
-
-
-
-
-
-
-
-
-
-
-
-
+
+ email_template.account.tree
+ email_template.account
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
email_template.account.search
@@ -85,21 +85,21 @@
-
- Accounts
- email_template.account
- form
- form,tree
-
+
+ Accounts
+ email_template.account
+ form
+ form,tree
+
{'group_by': [], 'search_default_draft': 1, 'search_default_my': 1}
-
+
-
+
-
+
-
+
diff --git a/addons/email_template/email_template_mailbox_view.xml b/addons/email_template/email_template_mailbox_view.xml
index c521320bf3a..93a1a9958d4 100644
--- a/addons/email_template/email_template_mailbox_view.xml
+++ b/addons/email_template/email_template_mailbox_view.xml
@@ -1,81 +1,81 @@
-
-
-
- email_template.mailbox.form
- email_template.mailbox
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ email_template.mailbox.form
+ email_template.mailbox
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- email_template.mailbox.tree
- email_template.mailbox
- tree
-
-
-
-
-
-
-
-
-
-
+
+
+ email_template.mailbox.tree
+ email_template.mailbox
+ tree
+
+
+
+
+
+
+
+
+
+
email_template.mailbox.search
@@ -109,14 +109,14 @@
-
-
-
+
+
+
-
+
-
+
diff --git a/addons/email_template/email_template_view.xml b/addons/email_template/email_template_view.xml
index 5158d7a5544..49090bd62c5 100644
--- a/addons/email_template/email_template_view.xml
+++ b/addons/email_template/email_template_view.xml
@@ -1,147 +1,147 @@
-
-
-
- email_template.preview.form
- email_template.preview
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ email_template.preview.form
+ email_template.preview
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- Template Preview
- email_template.preview
- email_template.preview
- ir.actions.act_window
- form
- form
-
- new
- {'ids':active_id}
-
-
+
+ Template Preview
+ email_template.preview
+ email_template.preview
+ ir.actions.act_window
+ form
+ form
+
+ new
+ {'ids':active_id}
+
+
-
- email.template.form
- email.template
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ email.template.form
+ email.template
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- email.template.tree
- email.template
- tree
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ email.template.tree
+ email.template
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
email.template.search
@@ -161,19 +161,19 @@
-
- Email Templates
- email.template
- form
- form,tree
-
+
+ Email Templates
+ email.template
+ form
+ form,tree
+
-
+
-
+
-
+
diff --git a/addons/email_template/email_template_workflow.xml b/addons/email_template/email_template_workflow.xml
index 4d3176f0ae0..911b8bf49ff 100644
--- a/addons/email_template/email_template_workflow.xml
+++ b/addons/email_template/email_template_workflow.xml
@@ -11,24 +11,24 @@
email_template.account
True
-
+
-
+
True
draft
- function
+ function
write({'state':'draft'})
-
+
approval
function
do_approval()
-
+
suspended
@@ -40,16 +40,16 @@
True
-
+
-
+
button_approval
-
+
@@ -67,6 +67,6 @@
get_never
-
+
diff --git a/addons/email_template/security/email_template_security.xml b/addons/email_template/security/email_template_security.xml
index 1883ff793e6..9dc788f6780 100755
--- a/addons/email_template/security/email_template_security.xml
+++ b/addons/email_template/security/email_template_security.xml
@@ -1,23 +1,10 @@
-
+
- Email Template / Admin
+ Marketing / Email Template
-
- Email Template / Settings_Manager
-
-
-
- Email Template / External_users
-
-
-
- Email Template / Internal_users
-
-
-
-
+
diff --git a/addons/google_map/i18n/ru.po b/addons/google_map/i18n/ru.po
index 1543a8f1523..6e3e44985e5 100644
--- a/addons/google_map/i18n/ru.po
+++ b/addons/google_map/i18n/ru.po
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-10-09 07:48+0000\n"
-"Last-Translator: Sardorbek Pulatov (pROCKrammer) \n"
+"PO-Revision-Date: 2010-06-13 13:02+0000\n"
+"Last-Translator: Alex L. \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: 2010-04-17 03:55+0000\n"
+"X-Launchpad-Export-Date: 2010-06-14 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: google_map
#: model:ir.actions.wizard,name:google_map.wizard_google_map
msgid "Launch Google Map"
-msgstr ""
+msgstr "Запустить Google Map"
#. module: google_map
#: constraint:ir.ui.view:0
@@ -39,6 +39,9 @@ msgid ""
"so that we can directly open google map from the\n"
"url widget."
msgstr ""
+"Модуль добавляет поле с Google картой в адрес партнера\n"
+"поэтому мы можем открыть карту Google непосредственно из\n"
+"адреса виджета."
#. module: google_map
#: view:res.partner:0
diff --git a/addons/hr/hr_department_view.xml b/addons/hr/hr_department_view.xml
index 977cc22f005..70576149592 100644
--- a/addons/hr/hr_department_view.xml
+++ b/addons/hr/hr_department_view.xml
@@ -51,7 +51,7 @@
-
+
@@ -73,7 +73,7 @@
-
+
res.users.form
diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml
index 5e862781408..f6a03030a6f 100644
--- a/addons/hr/hr_view.xml
+++ b/addons/hr/hr_view.xml
@@ -6,6 +6,11 @@
icon="terp-hr"
name="Human Resources"
sequence="6"/>
+
# ------------------------------------------------------
# Stage
@@ -86,11 +86,21 @@
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
@@ -182,9 +192,9 @@
+ name="%(crm.action_crm_send_mail)d"
+ context="{'mail':'new', 'model': 'hr.applicant'}"
+ icon="gtk-go-forward" type="action" />
@@ -232,7 +242,7 @@
-
+
@@ -277,56 +287,56 @@
-
- hr.recruitment.stage.tree
- hr.recruitment.stage
- tree
-
-
-
-
-
-
-
+
+ hr.recruitment.stage.tree
+ hr.recruitment.stage
+ tree
+
+
+
+
+
+
+
-
- hr.recruitment.stage.form
- hr.recruitment.stage
- form
-
-
-
-
-
-
-
-
-
-
+
+ hr.recruitment.stage.form
+ hr.recruitment.stage
+ form
+
+
+
+
+
+
+
+
+
+
-
- Stages
- hr.recruitment.stage
- form
-
-
+
+ Stages
+ hr.recruitment.stage
+ form
+
+
-
+
-
+
diff --git a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
index a603cc3f24e..b56ecd75769 100644
--- a/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
+++ b/addons/hr_timesheet_invoice/hr_timesheet_invoice_view.xml
@@ -20,7 +20,7 @@
-
+
account.analytic.account.form
account.analytic.account
@@ -32,7 +32,7 @@
-
+
hr.analytic.timesheet.form
hr.analytic.timesheet
@@ -117,9 +117,9 @@
tree,form
[('to_invoice','<>',False)]
-
@@ -178,9 +178,9 @@
form
-
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
index f686daf575e..51edeea837b 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
@@ -195,7 +195,7 @@
-
+
+ id="menu_give_vote"
+ action="action_idea_select"/>
@@ -128,11 +128,11 @@
form
-
-
-
-
-
+
+
+
+
+
@@ -147,18 +147,18 @@
idea.vote
search
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -270,7 +270,7 @@
-
+
diff --git a/addons/knowledge/security/ir.model.access.csv b/addons/knowledge/security/ir.model.access.csv
index 4fcaaad82cd..9abb2d03be7 100644
--- a/addons/knowledge/security/ir.model.access.csv
+++ b/addons/knowledge/security/ir.model.access.csv
@@ -1,2 +1,2 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_knowledge_installer","knowledge.installer","model_knowledge_installer",base.group_user,1,0,0,0
+"access_knowledge_installer","knowledge.installer","model_knowledge_installer",base.group_system,1,1,1,1
diff --git a/addons/l10n_be/security/ir.model.access.csv b/addons/l10n_be/security/ir.model.access.csv
index fbb5c74c18c..04d498b5785 100644
--- a/addons/l10n_be/security/ir.model.access.csv
+++ b/addons/l10n_be/security/ir.model.access.csv
@@ -1,6 +1,6 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_vat_listing_clients","vat.listing.clients","model_vat_listing_clients",,1,1,1,1
-"access_partner_vat_intra","partner.vat.intra","model_partner_vat_intra",,1,1,1,1
-"access_partner_vat","partner.vat","model_partner_vat",,1,1,1,1
-"access_partner_vat_list","partner.vat.list","model_partner_vat_list",,1,1,1,1
-"access_l1on_be_vat_declaration","l1on_be.vat.declaration","model_l1on_be_vat_declaration",,1,1,1,1
+"access_vat_listing_clients","vat.listing.clients","model_vat_listing_clients",account.group_account_user,1,1,1,1
+"access_partner_vat_intra","partner.vat.intra","model_partner_vat_intra",account.group_account_user,1,1,1,1
+"access_partner_vat","partner.vat","model_partner_vat",account.group_account_user,1,1,1,1
+"access_partner_vat_list","partner.vat.list","model_partner_vat_list",account.group_account_user,1,1,1,1
+"access_l1on_be_vat_declaration","l1on_be.vat.declaration","model_l1on_be_vat_declaration",account.group_account_user,1,1,1,1
diff --git a/addons/mail_gateway/mail_gateway.py b/addons/mail_gateway/mail_gateway.py
index c19f1767fa6..c9a264b1d9d 100644
--- a/addons/mail_gateway/mail_gateway.py
+++ b/addons/mail_gateway/mail_gateway.py
@@ -21,26 +21,8 @@
from osv import osv, fields
import time
-import base64
+import base64
-class one2many_domain(fields.one2many):
- def set(self, cr, obj, id, field, values, user=None, context=None):
- if not values:
- return
- return super(one2many_domain, self).set(cr, obj, id, field, values,
- user=user, context=context)
-
- def get(self, cr, obj, ids, name, user=None, offset=0, context=None, values=None):
- if context is None:
- context = {}
- res = {}
- msg_obj = obj.pool.get('mailgate.message')
- for thread in obj.browse(cr, user, ids, context=context):
- final = msg_obj.search(cr, user, self._domain + [('thread_id', '=', thread.id)], context=context)
- res[thread.id] = final
- return res
-
-
class mailgate_thread(osv.osv):
'''
Mailgateway Thread
@@ -51,11 +33,11 @@ class mailgate_thread(osv.osv):
_columns = {
'thread': fields.char('Thread', size=32, required=False),
- 'message_ids': one2many_domain('mailgate.message', 'thread_id', 'Messages', domain=[('history', '=', True)], required=False),
- 'log_ids': one2many_domain('mailgate.message', 'thread_id', 'Logs', domain=[('history', '=', False)], required=False),
+ 'message_ids': fields.one2many('mailgate.message', 'thread_id', 'Messages', domain=[('history', '=', True)], required=False),
+ 'log_ids': fields.one2many('mailgate.message', 'thread_id', 'Logs', domain=[('history', '=', False)], required=False),
}
- def __history(self, cr, uid, cases, keyword, history=False, subject=None, email=False, details=None, email_from=False, message_id=False, attach=None, context=None):
+ def _history(self, cr, uid, cases, keyword, history=False, subject=None, email=False, details=None, email_from=False, message_id=False, attach=None, context=None):
"""
@param self: The object pointer
@param cr: the current row, from the database cursor,
@@ -118,8 +100,7 @@ class mailgate_thread(osv.osv):
res = obj.create(cr, uid, data, context)
return True
- _history = __history
- history = __history
+ __history = history = _history
mailgate_thread()
diff --git a/addons/mail_gateway/scripts/openerp_mailgate/openerp_mailgate.py b/addons/mail_gateway/scripts/openerp_mailgate/openerp_mailgate.py
index 95543fcb7f6..c4cad98b046 100755
--- a/addons/mail_gateway/scripts/openerp_mailgate/openerp_mailgate.py
+++ b/addons/mail_gateway/scripts/openerp_mailgate/openerp_mailgate.py
@@ -164,7 +164,6 @@ class email_parser(object):
return s.decode('latin1')
def _decode_header(self, text):
- from email.Header import decode_header
if text:
text = decode_header(text.replace('\r', ''))
return ''.join(map(lambda x:self._to_decode(x[0], [x[1]]), text or []))
diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py
index 7b1a6b3e441..36754bea803 100644
--- a/addons/marketing_campaign/marketing_campaign.py
+++ b/addons/marketing_campaign/marketing_campaign.py
@@ -467,8 +467,8 @@ class marketing_campaign_workitem(osv.osv):
else:
# manual states are not processed automatically
workitem_ids = []
- if workitem_ids:
- self.process(cr, uid, workitem_ids, context)
+ if workitem_ids:
+ self.process(cr, uid, workitem_ids, context)
marketing_campaign_workitem()
diff --git a/addons/mrp/i18n/hi.po b/addons/mrp/i18n/hi.po
index 7ac7081d791..2e356c5ca2a 100644
--- a/addons/mrp/i18n/hi.po
+++ b/addons/mrp/i18n/hi.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-06-10 09:51+0000\n"
+"PO-Revision-Date: 2010-06-11 10:07+0000\n"
"Last-Translator: vir (Open ERP) \n"
"Language-Team: Hindi \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-06-11 03:42+0000\n"
+"X-Launchpad-Export-Date: 2010-06-12 03:44+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: mrp
@@ -460,7 +460,7 @@ msgstr ""
#. module: mrp
#: field:mrp.bom.revision,author_id:0
msgid "Author"
-msgstr ""
+msgstr "लेखक"
#. module: mrp
#: model:process.transition,name:mrp.process_transition_stockproduct0
@@ -491,7 +491,7 @@ msgstr ""
#. module: mrp
#: field:mrp.procurement,message:0
msgid "Latest error"
-msgstr ""
+msgstr "नवीनतम त्रुटि"
#. module: mrp
#: field:mrp.bom,bom_lines:0
@@ -511,7 +511,7 @@ msgstr ""
#. module: mrp
#: view:mrp.production:0
msgid "Consumed Products"
-msgstr ""
+msgstr "खपत उत्पाद"
#. module: mrp
#: constraint:mrp.bom:0
@@ -538,12 +538,12 @@ msgstr ""
#. module: mrp
#: selection:mrp.procurement,state:0
msgid "Ready"
-msgstr ""
+msgstr "तैयार"
#. module: mrp
#: view:mrp.routing:0
msgid "Workcenter Operations"
-msgstr ""
+msgstr "Workcenter संचालन"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.mrp_production_action2_gantt
@@ -564,7 +564,7 @@ msgstr ""
#. module: mrp
#: field:mrp.production,date_finnished:0
msgid "End Date"
-msgstr ""
+msgstr "समाप्ति तिथि"
#. module: mrp
#: help:mrp.production,picking_id:0
@@ -576,7 +576,7 @@ msgstr ""
#. module: mrp
#: selection:mrp.production,state:0
msgid "In Production"
-msgstr ""
+msgstr "उत्पादन में"
#. module: mrp
#: field:stock.warehouse.orderpoint,qty_multiple:0
@@ -600,12 +600,12 @@ msgstr ""
#. module: mrp
#: wizard_button:mrp.workcenter.load,init,report:0
msgid "Print"
-msgstr ""
+msgstr "प्रिंट"
#. module: mrp
#: field:mrp.workcenter,type:0
msgid "Type"
-msgstr ""
+msgstr "प्रकार"
#. module: mrp
#: model:process.node,note:mrp.process_node_stockproduct0
@@ -616,7 +616,7 @@ msgstr ""
#. module: mrp
#: selection:mrp.workcenter.load,init,time_unit:0
msgid "Per month"
-msgstr ""
+msgstr "प्रति माह"
#. module: mrp
#: field:mrp.procurement,product_uos_qty:0
@@ -626,18 +626,18 @@ msgstr ""
#. module: mrp
#: rml:bom.structure:0
msgid "Product Name"
-msgstr ""
+msgstr "वस्तु का नाम"
#. module: mrp
#: rml:mrp.production.order:0
msgid "Printing date"
-msgstr ""
+msgstr "मुद्रण तारीख"
#. module: mrp
#: model:process.node,name:mrp.process_node_orderrfq0
#: model:process.node,name:mrp.process_node_rfq0
msgid "RFQ"
-msgstr ""
+msgstr "कोटेशन के लिए अनुरोध"
#. module: mrp
#: field:mrp.bom,revision_type:0
@@ -657,7 +657,7 @@ msgstr ""
#. module: mrp
#: field:stock.warehouse.orderpoint,product_min_qty:0
msgid "Min Quantity"
-msgstr ""
+msgstr "न्यूनतम मात्रा"
#. module: mrp
#: view:mrp.production:0
@@ -678,7 +678,7 @@ msgstr ""
#. module: mrp
#: model:process.transition,note:mrp.process_transition_servicemts0
msgid "If Product type is service and procure method is Make to stock"
-msgstr ""
+msgstr "अगर उत्पाद प्रकार सेवा है और खरीद विधि है स्टॉक बनाने के लिए"
#. module: mrp
#: model:process.node,note:mrp.process_node_serviceproduct0
@@ -689,7 +689,7 @@ msgstr ""
#. module: mrp
#: field:res.company,security_lead:0
msgid "Security Days"
-msgstr ""
+msgstr "सुरक्षा दिवस"
#. module: mrp
#: view:mrp.production:0
@@ -715,7 +715,7 @@ msgstr ""
#. module: mrp
#: selection:mrp.procurement,state:0
msgid "Exception"
-msgstr ""
+msgstr "अपवाद"
#. module: mrp
#: wizard_view:product.product.procurement,init:0
diff --git a/addons/mrp/mrp_view.xml b/addons/mrp/mrp_view.xml
index 293c8d58aa9..936a207caa3 100644
--- a/addons/mrp/mrp_view.xml
+++ b/addons/mrp/mrp_view.xml
@@ -41,7 +41,7 @@
id="menu_mrp_configuration"
name="Configuration"
parent="base.menu_mrp_root"
- groups="base.group_extended"
+ groups="group_mrp_manager"
sequence="50" />
@@ -250,7 +250,7 @@
-
+
@@ -283,7 +283,7 @@
-
+
mrp.bom.select
mrp.bom
search
@@ -291,9 +291,9 @@
-
-
-
+
+
+
@@ -402,26 +402,26 @@
-
-
+
-
+
-
+
-
-
+
+
+ Production Management
+ -->
mrp.production.tree
@@ -515,9 +515,9 @@
-
-
-
+
+
+
- procurement.order.form.inherit
- procurement.order
-
- form
-
-
-
-
-
+ procurement.order.form.inherit
+ procurement.order
+
+ form
+
+
+
+
+
).
+#
+# 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 .
+#
+##############################################################################
+
+import partner_geo_assign
diff --git a/addons/partner_geo_assign/__openerp__.py b/addons/partner_geo_assign/__openerp__.py
new file mode 100644
index 00000000000..2d18649236e
--- /dev/null
+++ b/addons/partner_geo_assign/__openerp__.py
@@ -0,0 +1,38 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+
+{
+ 'name': 'Partner Geo-Localisation',
+ 'version': '1.0',
+ 'category': 'Generic Modules/Production',
+ 'description': """
+This is the module used by OpenERP SA to redirect customers to his partners,
+based on geolocalisation.
+ """,
+ 'author': 'OpenERP SA',
+ 'depends': ['crm'],
+ 'update_xml': ['res_partner_view.xml'],
+ 'demo_xml': [],
+ 'installable': True,
+ 'active': False,
+ 'certificate': False,
+}
diff --git a/addons/partner_geo_assign/partner_geo_assign.py b/addons/partner_geo_assign/partner_geo_assign.py
new file mode 100644
index 00000000000..2ed96e3125d
--- /dev/null
+++ b/addons/partner_geo_assign/partner_geo_assign.py
@@ -0,0 +1,113 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+from osv import osv
+from osv import fields
+import urllib,re
+import random, time
+
+def geo_find(addr):
+ import urllib,re
+ regex = '([+-]?[0-9\.]+),([+-]?[0-9\.]+),([+-]?[0-9\.]+) '
+ url = 'http://maps.google.com/maps/geo?q=' + urllib.quote(addr) + '&output=xml&oe=utf8&sensor=false'
+ xml = urllib.urlopen(url).read()
+ if '' in xml:
+ print 'Error'
+ return None
+ result = re.search(regex, xml, re.M|re.I)
+ if not result:
+ print 'No Regex', xml
+ return None
+ return float(result.group(1)),float(result.group(2))
+
+class res_partner(osv.osv):
+ _inherit = "res.partner"
+ _columns = {
+ 'partner_latitude': fields.float('Geo Latitude', digits=(16,2)),
+ 'partner_longitude': fields.float('Geo Longitude', digits=(16,2)),
+ 'partner_weight': fields.integer('Weight',
+ help="Gives the probability to assign a lead to this partner. (0 means no assignation.)"),
+ }
+ _defaults = {
+ 'partner_weight': lambda *args: 0
+ }
+ def geo_localize(self, cr, uid, ids, context=None):
+ regex = '([+-]?[0-9\.]+),([+-]?[0-9\.]+),([+-]?[0-9\.]+) '
+ for partner in self.browse(cr, uid, ids, context=context):
+ part = partner.address[0]
+ addr = ', '.join(filter(None, [part.street, part.street2, (part.zip or '')+' '+(part.city or ''), part.state_id and part.state_id.name, part.country_id and part.country_id.name]))
+ result = geo_find(addr)
+ if result:
+ print 'Write', {
+ 'partner_latitude': result[0],
+ 'partner_longitude': result[1]
+ }
+ self.write(cr, uid, [partner.id], {
+ 'partner_latitude': result[0],
+ 'partner_longitude': result[1]
+ }, context=context)
+ return True
+res_partner()
+
+class crm_lead(osv.osv):
+ _inherit = "crm.lead"
+ _columns = {
+ 'partner_latitude': fields.float('Geo Latitude', digits=(16,2)),
+ 'partner_longitude': fields.float('Geo Longitude', digits=(16,2)),
+ 'partner_assigned_id': fields.many2one('res.partner','Assigned Partner')
+ 'date_assign': fields.date('Assignation Date')
+ }
+ def assign_partner(self, cr, uid, ids, context=None):
+ for part in self.browse(cr, uid, ids, context=context):
+ if not part.country_id:
+ continue
+ addr = ', '.join(filter(None, [part.street, part.street2, (part.zip or '')+' '+(part.city or ''), part.state_id and part.state_id.name, part.country_id and part.country_id.name]))
+ result = geo_find(addr)
+ if result:
+ self.write(cr, uid, [part.id], {
+ 'partner_latitude': result[0],
+ 'partner_longitude': result[1]
+ }, context=context)
+
+ part_ids = self.pool.get('res.partner').search(cr, uid, [
+ ('partner_weight','>',0),
+ ('partner_latitude','>',result[0]-2), ('partner_latitude','<',result[0]+2),
+ ('partner_longitude','>',result[1]-1.5), ('partner_longitude','<',result[1]+1.5)
+ ], context=context)
+ if not part_ids:
+ part_ids = self.pool.get('res.partner').search(cr, uid, [
+ ('partner_weight','>',0),
+ ('partner_latitude','>',result[0]-4), ('partner_latitude','<',result[0]+4),
+ ('partner_longitude','>',result[1]-3), ('partner_longitude','<',result[1]+3)
+ ], context=context)
+ total = 0
+ toassign = []
+ for part2 in self.pool.get('res.partner').browse(cr, uid, part_ids, context=context):
+ total += part2.partner_weight
+ toassign.append( (part2.id, total) )
+ mypartner = random.randint(0,total)
+ for t in toassign:
+ if mypartner<=t[1]:
+ self.write(cr, uid, [part.id], {'partner_assigned_id': t[0], 'date_assign': time.strftime('%Y-%m-%d')}, context=context)
+ break
+ return True
+crm_lead()
+
diff --git a/addons/partner_geo_assign/res_partner_view.xml b/addons/partner_geo_assign/res_partner_view.xml
new file mode 100644
index 00000000000..d5f4f918d98
--- /dev/null
+++ b/addons/partner_geo_assign/res_partner_view.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+ crm.lead.geo_assign.inherit
+ crm.lead
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ res.partner.geo.inherit
+ res.partner
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/point_of_sale/multi_company_demo.xml b/addons/point_of_sale/multi_company_demo.xml
index e0e58ad75d7..9ae66800ff9 100644
--- a/addons/point_of_sale/multi_company_demo.xml
+++ b/addons/point_of_sale/multi_company_demo.xml
@@ -1,32 +1,7 @@
-
- OpenERP Editor
-
-
- OpenERP Editor
-
-
- Free Business Solutions
- Web: http://tiny.be - Tel: (+32).81.81.37.00 - Bank: CPH 126-2013269-07
- IBAN: BE74 1262 0132 6907 - SWIFT: GKCCBEBB - VAT: BE0477.472.701
-
-
-
- OpenERP Integrator
-
-
-
- OpenERP Integrator
-
-
- Free Business Solutions
- Web: http://tiny.be - Tel: (+32).81.81.37.00 - Bank: CPH 126-2013269-07
- IBAN: BE74 1262 0132 6907 - SWIFT: GKCCBEBB - VAT: BE0477.472.701
-
-
diff --git a/addons/point_of_sale/multi_company_stock_data.xml b/addons/point_of_sale/multi_company_stock_data.xml
index a74ea0a56e9..cc8d30d080d 100644
--- a/addons/point_of_sale/multi_company_stock_data.xml
+++ b/addons/point_of_sale/multi_company_stock_data.xml
@@ -1,41 +1,5 @@
-
-
-
- property_stock_account_output
-
-
-
-
-
- property_stock_account_input
-
-
-
-
-
- property_stock_account_output_categ
-
-
-
-
-
- property_stock_account_input_categ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/point_of_sale/pos.py b/addons/point_of_sale/pos.py
index 5d4df5a5f10..e0e2d9c5c5d 100644
--- a/addons/point_of_sale/pos.py
+++ b/addons/point_of_sale/pos.py
@@ -193,10 +193,10 @@ class pos_order(osv.osv):
res[order.id]['amount_tax'])
else:
res[order.id]['amount_tax'] = reduce(lambda x, y: x+round(y['amount'], 2),
- tax_obj.compute(cr, uid, line.product_id.taxes_id,
+ tax_obj.compute_all(cr, uid, line.product_id.taxes_id,
line.price_unit * \
- (1-(line.discount or 0.0)/100.0), line.qty),
- res[order.id]['amount_tax'])
+ (1-(line.discount or 0.0)/100.0), line.qty)['taxes'],
+ res[order.id]['amount_tax'])
return res
@@ -789,8 +789,8 @@ class pos_order(osv.osv):
tax_amount = 0
taxes = [t for t in line.product_id.taxes_id]
if order.price_type=='tax_excluded':
- computed_taxes = account_tax_obj.compute(
- cr, uid, taxes, line.price_unit, line.qty)
+ computed_taxes = account_tax_obj.compute_all(
+ cr, uid, taxes, line.price_unit, line.qty)['taxes']
else:
computed_taxes = account_tax_obj.compute_inv(
cr, uid, taxes, line.price_unit, line.qty)
@@ -1058,7 +1058,7 @@ class pos_order_line(osv.osv):
for line in self.browse(cr, uid, ids):
tax_amount = 0.0
taxes = [t for t in line.product_id.taxes_id]
- computed_taxes = account_tax_obj.compute(cr, uid, taxes, line.price_unit, line.qty)
+ computed_taxes = account_tax_obj.compute_all(cr, uid, taxes, line.price_unit, line.qty)['taxes']
for tax in computed_taxes:
tax_amount += tax['amount']
price = self.price_by_product(cr, uid, ids, line.order_id.pricelist_id.id, line.product_id.id, line.qty, line.order_id.partner_id.id)
diff --git a/addons/point_of_sale/pos_data.xml b/addons/point_of_sale/pos_data.xml
index b36bd0827c2..14710cf8f37 100644
--- a/addons/point_of_sale/pos_data.xml
+++ b/addons/point_of_sale/pos_data.xml
@@ -1,58 +1,6 @@
-
- Paiement
-
-
- Acompte
-
- service
- 0.0
- 0.0
-
-
-
-
- Reparation
-
- service
- 100.0
- 100.0
-
-
-
-
-
- Bon
-
-
-
- GIFT
- produce
- 1.0
- 1.0
-
-
- 0.0
- Cheque cadeau
-
-
-
-
- PORT01
- produce
- 1.0
- 1.0
-
-
- 0.0
- Shipping cost
-
- service
- 0
-
-
diff --git a/addons/point_of_sale/pos_demo.xml b/addons/point_of_sale/pos_demo.xml
index b548f12d8e7..14710cf8f37 100644
--- a/addons/point_of_sale/pos_demo.xml
+++ b/addons/point_of_sale/pos_demo.xml
@@ -1,190 +1,6 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Main Receivable
- x 40000
- receivable
-
-
-
-
-
-
-
-This chart of account is used for automated testing purpose. It is installed
-only if you selected demo data during your database creation. Modules can
-do black box testing on entries on this chart of account, without modifying
-your own chart of account.
-
-
-
-
diff --git a/addons/point_of_sale/pos_report.xml b/addons/point_of_sale/pos_report.xml
index 9123502d288..b079f6b9177 100644
--- a/addons/point_of_sale/pos_report.xml
+++ b/addons/point_of_sale/pos_report.xml
@@ -1,112 +1,112 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
diff --git a/addons/point_of_sale/pos_sequence.xml b/addons/point_of_sale/pos_sequence.xml
index 42bc4334b89..691b35a8f1a 100644
--- a/addons/point_of_sale/pos_sequence.xml
+++ b/addons/point_of_sale/pos_sequence.xml
@@ -2,42 +2,42 @@
- #
- # Sequences for pos.order
- #
+ #
+ # Sequences for pos.order
+ #
-
- POS Order
- pos.order
-
-
- POS Order
- pos.order
- POS/
- 3
-
+
+ POS Order
+ pos.order
+
+
+ POS Order
+ pos.order
+ POS/
+ 3
+
-
- POS Payment
- pos.payment
-
-
- POS Payment
- pos.payment
- Payment/
- 2
-
+
+ POS Payment
+ pos.payment
+
+
+ POS Payment
+ pos.payment
+ Payment/
+ 2
+
-
- POS order line
- pos.order.line
-
-
- POS order line
- pos.order.line
- Order Line/
- 2
-
+
+ POS order line
+ pos.order.line
+
+
+ POS order line
+ pos.order.line
+ Order Line/
+ 2
+
diff --git a/addons/point_of_sale/pos_view.xml b/addons/point_of_sale/pos_view.xml
index b3c784f6ea2..22e46933365 100644
--- a/addons/point_of_sale/pos_view.xml
+++ b/addons/point_of_sale/pos_view.xml
@@ -1,6 +1,9 @@
+
pos.order
@@ -9,11 +12,11 @@
-
-
-
+
+
+
-
+
@@ -90,7 +93,7 @@
-
+
@@ -112,7 +115,7 @@
-
+
@@ -156,7 +159,7 @@
-
+
@@ -169,7 +172,6 @@
-
@@ -186,7 +188,7 @@
['|',('state_2','=','to_verify'),('state','=','advance')]
{"search_default_user_id":uid}
-
+
@@ -199,7 +201,7 @@
[('state','!=', 'invoiced')]
{"search_default_user_id":uid}
-
+
@@ -212,7 +214,7 @@
tree,form
[('state','=', 'paid')]
{"search_default_user_id":uid}
-
+
Point of Sale
@@ -222,7 +224,7 @@
tree,form
[('date_order','<=', time.strftime('%Y-%m-%d 23:59:59'))]
{"search_default_user_id":uid}
-
+
@@ -232,7 +234,7 @@
form
tree,form
{"search_default_user_id":uid}
-
+
Opened Sales
@@ -241,7 +243,7 @@
form
form,tree
{"search_default_user_id":uid}
-
+
diff --git a/addons/point_of_sale/pos_workflow.xml b/addons/point_of_sale/pos_workflow.xml
index 11cd9481343..189b38e348f 100644
--- a/addons/point_of_sale/pos_workflow.xml
+++ b/addons/point_of_sale/pos_workflow.xml
@@ -1,84 +1,84 @@
-
- Pos workflow
- pos.order
- True
-
+
+ Pos workflow
+ pos.order
+ True
+
-
+
-
- POS - Confirmation
-
+
+ POS - Confirmation
+
-
-
- True
- draft
-
+
+
+ True
+ draft
+
-
-
- paid
- action_paid()
- function
-
+
+
+ paid
+ action_paid()
+ function
+
-
-
- done
- True
- action_done()
- function
-
+
+
+ done
+ True
+ action_done()
+ function
+
-
-
- invoiced
- True
- action_invoice()
- function
-
+
+
+ invoiced
+ True
+ action_invoice()
+ function
+
-
-
- cancel
- True
- action_cancel()
- function
-
+
+
+ cancel
+ True
+ action_cancel()
+ function
+
-
-
-
- test_paid()
- paid
-
+
+
+
+ test_paid()
+ paid
+
-
-
-
- done
-
+
+
+
+ done
+
-
-
-
- invoice
-
+
+
+
+ invoice
+
-
-
-
- cancel
-
+
+
+
+ cancel
+
diff --git a/addons/point_of_sale/posr_data.xml b/addons/point_of_sale/posr_data.xml
index de0ec465950..3ba8df59b13 100644
--- a/addons/point_of_sale/posr_data.xml
+++ b/addons/point_of_sale/posr_data.xml
@@ -1,74 +1,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
diff --git a/addons/point_of_sale/posrule_data.xml b/addons/point_of_sale/posrule_data.xml
index 905e78e6e7a..f2ac2d664af 100644
--- a/addons/point_of_sale/posrule_data.xml
+++ b/addons/point_of_sale/posrule_data.xml
@@ -1,505 +1,7 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- POS line
-
-
- ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
-
-
-
-
-
-
-
-
-
- ['|',('user_id','=',False),('user_id','=',[user.id])]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/addons/point_of_sale/posrule_data2.xml b/addons/point_of_sale/posrule_data2.xml
index 7ac787db54c..1010f75d055 100644
--- a/addons/point_of_sale/posrule_data2.xml
+++ b/addons/point_of_sale/posrule_data2.xml
@@ -1,592 +1,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/addons/point_of_sale/singer_statement_demo.xml b/addons/point_of_sale/singer_statement_demo.xml
index 68f889cddee..43b25437173 100644
--- a/addons/point_of_sale/singer_statement_demo.xml
+++ b/addons/point_of_sale/singer_statement_demo.xml
@@ -1,324 +1,7 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CashOut
-
- service
- True
- 0.0
- 0.0
-
-
-
-
-
-
- CashIn
-
- service
- True
- 0.0
- 0.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Cofinoga Shop2
- COF
- cash
-
-
-
-
-
-
-
-
- Sales Journal Shop 2
- SAJ
- sale
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Cofinoga Shop1
- COF
- cash
-
-
-
-
-
-
-
-
- Sales Journal Shop1
- SAJ
- sale
-
-
-
-
-
-
-
-
-
- Cofinoga Central
- COF
- cash
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/addons/point_of_sale/statement_data.xml b/addons/point_of_sale/statement_data.xml
index 5172e0e70d4..3ba8df59b13 100644
--- a/addons/point_of_sale/statement_data.xml
+++ b/addons/point_of_sale/statement_data.xml
@@ -1,41 +1,6 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/addons/point_of_sale/statement_report.xml b/addons/point_of_sale/statement_report.xml
index 73b2c914dd3..fb1be16419e 100644
--- a/addons/point_of_sale/statement_report.xml
+++ b/addons/point_of_sale/statement_report.xml
@@ -1,69 +1,69 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/addons/point_of_sale/statement_rules.xml b/addons/point_of_sale/statement_rules.xml
index eba649f3ec5..3ba8df59b13 100644
--- a/addons/point_of_sale/statement_rules.xml
+++ b/addons/point_of_sale/statement_rules.xml
@@ -1,5 +1,6 @@
-
-
+
+
+
diff --git a/addons/point_of_sale/statement_view.xml b/addons/point_of_sale/statement_view.xml
index 69c3232f1a0..a4acd7429ec 100644
--- a/addons/point_of_sale/statement_view.xml
+++ b/addons/point_of_sale/statement_view.xml
@@ -55,32 +55,32 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -132,18 +132,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -185,18 +185,18 @@
[('user_id','=',uid)]
-
-
- tree
-
-
-
-
-
- form
-
-
-
+
+
+ tree
+
+
+
+
+
+ form
+
+
+
@@ -265,32 +265,32 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -332,45 +332,45 @@
[('state','=','draft'),('user_id','=',uid)]
-
-
- tree
-
-
-
-
-
- form
-
-
-
+
+
+ tree
+
+
+
+
+
+ form
+
+
+
-
+
All Cashboxes
ir.actions.act_window
account.bank.statement
form
-
-
- tree
-
-
-
-
-
- form
-
-
-
-
+
+
+ tree
+
+
+
+
+
+ form
+
+
+
+
-
+
All My Cashboxes
ir.actions.act_window
account.bank.statement
@@ -378,22 +378,22 @@
[('user_id','=',uid)]
-
- tree
-
-
-
+
+ tree
+
+
+
-
-
- form
-
-
-
-
-
+
+
+ form
+
+
+
+
+
-
+
Cashboxes to Close
ir.actions.act_window
account.bank.statement
@@ -401,44 +401,44 @@
tree,form
[('state','=','draft')]
-
-
- tree
-
-
-
-
-
- form
-
-
-
+
+
+ tree
+
+
+
+
+
+ form
+
+
+
-
+
-
+ action="action_report_all_closed_cashbox_of_the_day"
+ id="menu_all_closed_cashbox_of_the_day"
+ parent="menu_statement_tree_all"/>
-
+ action="action_report_all_closed_cashbox_of_the_day"
+ id="menu_all_closed_cashbox_of_the_day"
+ parent="menu_point_report_register"/>
-
+
diff --git a/addons/point_of_sale/statement_wizard.xml b/addons/point_of_sale/statement_wizard.xml
index dd9715db628..8220eda8bed 100644
--- a/addons/point_of_sale/statement_wizard.xml
+++ b/addons/point_of_sale/statement_wizard.xml
@@ -1,12 +1,13 @@
-
-
-
-
+ action="action_report_all_closed_cashbox_of_the_day"
+ id="menu_all_closed_cashbox_of_the_day"
+ parent="menu_point_report_register"/>
diff --git a/addons/product/i18n/vi.po b/addons/product/i18n/vi.po
index c6b06e8b29d..a2c65299744 100644
--- a/addons/product/i18n/vi.po
+++ b/addons/product/i18n/vi.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-09-08 16:40+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-06-13 07:00+0000\n"
+"Last-Translator: Vu Duc Tiep \n"
"Language-Team: Vietnamese \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2010-04-17 04:10+0000\n"
+"X-Launchpad-Export-Date: 2010-06-14 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: product
@@ -163,7 +163,7 @@ msgstr "Công ty"
#. module: product
#: field:product.template,rental:0
msgid "Rentable Product"
-msgstr ""
+msgstr "Sản phẩm có thể cho thuê"
#. module: product
#: field:product.product,lst_price:0
@@ -244,7 +244,7 @@ msgstr ""
#. module: product
#: model:process.transition,note:product.process_transition_supplierofproduct0
msgid "You can see the list of suppliers for that product."
-msgstr ""
+msgstr "Bạn có thể thấy danh sách các nhà cung cấp sản phầm này"
#. module: product
#: help:product.packaging,rows:0
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 93a489245c4..edd5e9e3499 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -12,8 +12,8 @@
-
-
+
+
@@ -65,6 +65,7 @@
+
@@ -74,10 +75,9 @@
-
+
-
@@ -466,7 +466,7 @@
form
-
+
@@ -520,7 +520,6 @@
-
@@ -606,7 +605,7 @@
-
+
Products
ir.ui.menu
diff --git a/addons/profile_tools/security/ir.model.access.csv b/addons/profile_tools/security/ir.model.access.csv
index dbe55929ecc..a46b61c89a2 100644
--- a/addons/profile_tools/security/ir.model.access.csv
+++ b/addons/profile_tools/security/ir.model.access.csv
@@ -1,2 +1,2 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_misc_tools_installer","misc_tools.installer","model_misc_tools_installer",,1,1,1,1
+"access_misc_tools_installer","misc_tools.installer","model_misc_tools_installer",base.group_system,1,1,1,1
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index f58f026d484..004ed9ba429 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -40,8 +40,6 @@
-
-
@@ -50,12 +48,16 @@
-
+
+
+
+
@@ -240,7 +242,7 @@
-
+
@@ -415,10 +417,10 @@
-
+
-
+
@@ -540,27 +542,27 @@
- res.users.project.form1
- res.users
- form
-
-
-
-
-
-
-
+ res.users.project.form1
+ res.users
+ form
+
+
+
+
+
+
+
- view.users.form.project.modif.inherited1
- res.users
-
- form
-
-
+ view.users.form.project.modif.inherited1
+ res.users
+
+ form
+
+
-
+
@@ -607,11 +609,10 @@
-
-
-
-
-
+
+
+
+
@@ -639,6 +640,6 @@
-
+
diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv
index 0cbe980f2e6..1a2fac38c6a 100644
--- a/addons/project/security/ir.model.access.csv
+++ b/addons/project/security/ir.model.access.csv
@@ -1,9 +1,9 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_project_manager","project.project manager","model_project_project","project.group_project_manager",1,1,1,1
-"access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","project.group_project_user",1,1,1,1
+"access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","project.group_project_manager",1,1,1,1
"access_project_project","project.project","model_project_project","project.group_project_user",1,0,0,0
"access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","project.group_project_user",1,0,0,0
-"access_project_task_type_user","project.task.type user","model_project_task_type","project.group_project_user",1,0,0,1
+"access_project_task_type_user","project.task.type user","model_project_task_type","project.group_project_user",1,0,0,0
"access_project_task_type","project.task.type","model_project_task_type","project.group_project_manager",1,1,1,1
"access_project_task_manager","project.task manager","model_project_task","project.group_project_manager",1,1,1,1
"access_project_task","project.task","model_project_task","project.group_project_user",1,1,1,1
@@ -11,10 +11,18 @@
"access_project_task_work_manager","project.task.work.manager","model_project_task_work","project.group_project_manager",1,1,1,1
"access_config_compute_remaining","project.config.compute.remaining","model_config_compute_remaining","project.group_project_user",1,1,1,1
"access_config_compute_remaining_manager","project.config.compute.remaining.manager","model_config_compute_remaining","project.group_project_manager",1,1,1,1
-"access_project_message","project.message","model_project_message","project.group_project_user",1,0,0,0
-"access_project_installer","project.installer","model_project_installer","project.group_project_user",1,0,0,0
+"access_project_message","project.message","model_project_message","project.group_project_user",1,1,1,1
+"access_project_installer","project.installer","model_project_installer","base.group_system",1,1,1,1
"access_report_project_task_user","report.project.task.user","model_report_project_task_user","project.group_project_manager",1,0,0,0
"access_project_vs_remaining_hours","project.vs.remaining.hours","model_project_vs_remaining_hours","project.group_project_user",1,1,1,1
"access_task_by_days_vs_planned_hours","task.by.days.vs.planned.hour","model_task_by_days_vs_planned_hours","project.group_project_user",1,1,1,1
"access_task_by_days","task.by.days","model_task_by_days","project.group_project_user",1,1,1,1
-"access_close_task","close.task","model_close_task","project.group_project_manager",1,1,1,1
+"access_close_task","close.task","model_close_task","project.group_project_user",1,1,1,1
+"access_close_task_manager","close.task manager","model_close_task","project.group_project_manager",1,1,1,1
+"access_resource_calendar_project_user","resource.resource.calendar project user","resource.model_resource_calendar","project.group_project_user",1,0,0,0
+"access_resource_calendar_project_manager","resource.resource.calendar project manager","resource.model_resource_calendar","project.group_project_manager",1,1,1,1
+"access_fiscalyear_sequence_project_manager","account.sequence.fiscalyear project manager","account.model_account_sequence_fiscalyear","project.group_project_manager",1,1,0,0
+"access_partner_task user","base.res.partner user","base.model_res_partner","project.group_project_user",1,0,0,0
+"access_partner_task manager","base.res.partner manager","base.model_res_partner","project.group_project_manager",1,0,0,0
+"access_partner_address_task user","base.res.partner.address user","base.model_res_partner_address","project.group_project_user",1,0,0,0
+"access_partner_address_task manager","base.res.partner.address manager","base.model_res_partner_address","project.group_project_manager",1,0,0,0
diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml
index 447ee1af39e..dbb28db165e 100644
--- a/addons/project/security/project_security.xml
+++ b/addons/project/security/project_security.xml
@@ -13,25 +13,25 @@
- Project multi-company
+ Project multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Task multi-company
+ Task multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Tasks According to User and Project
+ Tasks According to User and Project
['|','|','|',('user_id','=',False),('user_id','=',user.id),('project_id.members','=',user.id),('project_id.user_id','=',user.id)]
diff --git a/addons/project_caldav/project_caldav_view.xml b/addons/project_caldav/project_caldav_view.xml
index 541cc3c396e..885878cfcd8 100644
--- a/addons/project_caldav/project_caldav_view.xml
+++ b/addons/project_caldav/project_caldav_view.xml
@@ -2,100 +2,100 @@
-
- project.task.caldav.form
- project.task
-
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ project.task.caldav.form
+ project.task
+
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- project.task.caldav.form1
- project.task
-
- form
-
-
-
-
-
-
+
+ project.task.caldav.form1
+ project.task
+
+ form
+
+
+
+
+
+
-
- project.task.caldav.form2
- project.task
-
- form
-
-
-
-
-
-
-
-
-
+
+ project.task.caldav.form2
+ project.task
+
+ form
+
+
+
+
+
+
+
+
+
-
- project.task.caldav.form3
- project.task
-
- form
-
-
-
-
-
-
-
-
-
-
+
+ project.task.caldav.form3
+ project.task
+
+ form
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/project_gtd/security/ir.model.access.csv b/addons/project_gtd/security/ir.model.access.csv
index 52e1b466740..0398fbfb0ee 100644
--- a/addons/project_gtd/security/ir.model.access.csv
+++ b/addons/project_gtd/security/ir.model.access.csv
@@ -1,3 +1,7 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_gtd_context","project.gtd.context","model_project_gtd_context","group_project_getting",1,1,1,1
"access_project_gtd_timebox","project.gtd.timebox","model_project_gtd_timebox","group_project_getting",1,1,1,1
+"access_project_gtd_context_user","project.gtd.context project user","model_project_gtd_context","project.group_project_user",1,0,0,0
+"access_project_gtd_timebox_user","project.gtd.timebox project user","model_project_gtd_timebox","project.group_project_user",1,0,0,0
+"access_project_gtd_context_manager","project.gtd.context project manager","model_project_gtd_context","project.group_project_manager",1,1,1,1
+"access_project_gtd_timebox_manager","project.gtd.timebox project manager","model_project_gtd_timebox","project.group_project_manager",1,1,1,1
diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml
index a5009b7eb47..673f4239971 100644
--- a/addons/project_issue/project_issue_view.xml
+++ b/addons/project_issue/project_issue_view.xml
@@ -106,9 +106,9 @@
+ name="%(crm.action_crm_send_mail)d"
+ context="{'mail':'new', 'model': 'project.issue'}"
+ icon="gtk-go-forward" type="action" />
@@ -187,10 +187,10 @@
-
+
-
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -298,12 +298,12 @@
-
+
-
+
diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py
index 212af8a30dc..57fbd1abb5f 100644
--- a/addons/project_long_term/project_long_term.py
+++ b/addons/project_long_term/project_long_term.py
@@ -256,115 +256,7 @@ class task(osv.osv):
_inherit = "project.task"
_columns = {
'phase_id': fields.many2one('project.phase', 'Project Phase'),
- 'occupation_rate': fields.float('Occupation Rate', help='The occupation rate fields indicates how much of his time a user is working on a task. A 100% occupation rate means the user works full time on the tasks. The ending date of a task is computed like this: Starting Date + Duration / Occupation Rate.'),
- 'planned_hours': fields.float('Planned Hours', required=True, help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'),
}
- _defaults = {
- 'occupation_rate': '1'
- }
-
- def onchange_planned(self, cr, uid, ids, project, user_id=False, planned=0.0, effective=0.0, date_start=None, occupation_rate=0.0):
- result = {}
- resource = False
- resource_obj = self.pool.get('resource.resource')
- project_pool = self.pool.get('project.project')
- resource_calendar = self.pool.get('resource.calendar')
- if not project:
- return {'value' : result}
- if date_start:
- hrs = float(planned / float(occupation_rate))
- calendar_id = project_pool.browse(cr, uid, project).resource_calendar_id.id
- dt_start = mx.DateTime.strptime(date_start, '%Y-%m-%d %H:%M:%S')
- resource_id = resource_obj.search(cr, uid, [('user_id','=',user_id)])
- if resource_id:
- resource_data = resource_obj.browse(cr, uid, resource_id)[0]
- resource = resource_data.id
- hrs = planned / (float(occupation_rate) * resource_data.time_efficiency)
- if resource_data.calendar_id.id:
- calendar_id = resource_data.calendar_id.id
- work_times = resource_calendar.interval_get(cr, uid, calendar_id, dt_start, hrs or 0.0, resource or False)
- if work_times:
- result['date_end'] = work_times[-1][1].strftime('%Y-%m-%d %H:%M:%S')
- result['remaining_hours'] = planned - effective
- return {'value' : result}
-
- def _check_date_start(self, cr, uid, task, date_end, context={}):
- """
- Check And Compute date_end of task if change in date_start < older time.
- """
- resource_calendar_obj = self.pool.get('resource.calendar')
- resource_obj = self.pool.get('resource.resource')
- calendar_id = task.project_id.resource_calendar_id and task.project_id.resource_calendar_id.id or False
- hours = task.planned_hours / task.occupation_rate
- resource_id = resource_obj.search(cr, uid, [('user_id', '=', task.user_id.id)], context=context)
- if resource_id:
- resource = resource_obj.browse(cr, uid, resource_id[0], context=context)
- if resource.calendar_id.id:
- calendar_id = resource.calendar_id and resource.calendar_id.id or False
- hours = task.planned_hours / (float(task.occupation_rate) * resource.time_efficiency)
- work_times = resource_calendar_obj.interval_min_get(cr, uid, calendar_id, date_end, hours or 0.0, resource_id and resource_id[0] or False)
- dt_start = work_times[0][0].strftime('%Y-%m-%d %H:%M:%S')
- self.write(cr, uid, [task.id], {'date_start' : dt_start,'date_end' : date_end.strftime('%Y-%m-%d %H:%M:%S')})
-
- def _check_date_end(self, cr, uid, task, date_start, context={}):
- """
- Check And Compute date_end of task if change in date_end > older time.
- """
- resource_calendar_obj = self.pool.get('resource.calendar')
- resource_obj = self.pool.get('resource.resource')
- calendar_id = task.project_id.resource_calendar_id and task.project_id.resource_calendar_id.id or False
- hours = task.planned_hours / task.occupation_rate
- resource_id = resource_obj.search(cr,uid,[('user_id', '=', task.user_id.id)], context=context)
- if resource_id:
- resource = resource_obj.browse(cr, uid, resource_id[0], context=context)
- if resource.calendar_id.id:
- calendar_id = resource.calendar_id and resource.calendar_id.id or False
- hours = task.planned_hours / (float(task.occupation_rate) * resource.time_efficiency)
- work_times = resource_calendar_obj.interval_get(cr, uid, calendar_id, date_start, hours or 0.0, resource_id and resource_id[0] or False)
- dt_end = work_times[-1][1].strftime('%Y-%m-%d %H:%M:%S')
- self.write(cr, uid, [task.id], {'date_start': date_start.strftime('%Y-%m-%d %H:%M:%S'),'date_end' : dt_end}, context=context)
-
- def write(self, cr, uid, ids, vals, context={}):
- resource_calendar_obj = self.pool.get('resource.calendar')
- resource_obj = self.pool.get('resource.resource')
- if not context:
- context = {}
- if context.get('scheduler',False):
- return super(task, self).write(cr, uid, ids, vals, context=context)
-
- # Consider calendar and efficiency if the task is performed by a resource
- # otherwise consider the project's working calendar
- task_id = ids
- if isinstance(ids, list):
- task_id = ids[0]
- task_rec = self.browse(cr, uid, task_id, context=context)
- calendar_id = task_rec.project_id.resource_calendar_id and task_rec.project_id.resource_calendar_id.id or False
- hrs = task_rec.planned_hours / task_rec.occupation_rate
- resource_id = resource_obj.search(cr, uid, [('user_id', '=', task_rec.user_id.id)], context=context)
- if resource_id:
- resource = resource_obj.browse(cr, uid, resource_id[0], context=context)
- if resource.calendar_id.id:
- calendar_id = resource.calendar_id and resource.calendar_id.id or False
- hrs = task_rec.planned_hours / (float(task_rec.occupation_rate) * resource.time_efficiency)
-
- # Change the date_start and date_end
- # for previous and next tasks respectively based on valid condition
- if vals.get('date_start', False) and vals['date_start'] < task_rec.date_start:
- dt_start = mx.DateTime.strptime(vals['date_start'], '%Y-%m-%d %H:%M:%S')
- work_times = resource_calendar_obj.interval_get(cr, uid, calendar_id, dt_start, hrs or 0.0, resource.id or False)
- if work_times:
- vals['date_end'] = work_times[-1][1].strftime('%Y-%m-%d %H:%M:%S')
- for prv_task in task_rec.parent_ids:
- self._check_date_start(cr, uid, prv_task, dt_start)
- if vals.get('date_end', False) and vals['date_end'] > task_rec.date_end:
- dt_end = mx.DateTime.strptime(vals['date_end'], '%Y-%m-%d %H:%M:%S')
- work_times = resource_calendar_obj.interval_min_get(cr, uid, calendar_id, dt_end, hrs or 0.0, resource.id or False)
- if work_times:
- vals['date_start'] = work_times[0][0].strftime('%Y-%m-%d %H:%M:%S')
- for next_task in task_rec.child_ids:
- self._check_date_end(cr, uid, next_task, dt_end)
-
- return super(task, self).write(cr, uid, ids, vals, context=context)
task()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/project_long_term/project_long_term_demo.xml b/addons/project_long_term/project_long_term_demo.xml
index 24bc7ff9438..657658eba46 100644
--- a/addons/project_long_term/project_long_term_demo.xml
+++ b/addons/project_long_term/project_long_term_demo.xml
@@ -404,7 +404,6 @@
2
draft
-
@@ -424,7 +423,6 @@
2
draft
-
@@ -444,7 +442,6 @@
2
draft
-
@@ -464,7 +461,6 @@
2
draft
-
@@ -484,7 +480,6 @@
2
draft
-
@@ -504,7 +499,6 @@
2
draft
-
@@ -524,7 +518,6 @@
2
draft
-
@@ -544,7 +537,6 @@
2
draft
-
@@ -564,7 +556,6 @@
2
draft
-
@@ -584,7 +575,6 @@
2
draft
-
@@ -604,7 +594,6 @@
2
draft
-
@@ -623,7 +612,6 @@
2
draft
-
@@ -642,7 +630,6 @@
2
draft
-
@@ -661,7 +648,6 @@
2
draft
-
@@ -680,7 +666,6 @@
2
draft
-
@@ -699,7 +684,6 @@
2
draft
-
@@ -718,7 +702,6 @@
2
draft
-
@@ -737,7 +720,6 @@
2
draft
-
@@ -756,7 +738,6 @@
2
draft
-
@@ -776,7 +757,6 @@
2
draft
-
@@ -796,7 +776,6 @@
2
draft
-
@@ -816,7 +795,6 @@
2
draft
-
@@ -836,7 +814,6 @@
2
draft
-
@@ -856,7 +833,6 @@
2
draft
-
@@ -876,7 +852,6 @@
2
draft
-
@@ -897,7 +872,6 @@
2
draft
-
@@ -909,4 +883,4 @@
-
\ No newline at end of file
+
diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml
index 92b8a34ee9c..583822ccb8d 100644
--- a/addons/project_long_term/project_long_term_view.xml
+++ b/addons/project_long_term/project_long_term_view.xml
@@ -2,7 +2,7 @@
-
+
# ------------------------------------------------------
# Project Resource Allocation
@@ -29,7 +29,7 @@
-
+
@@ -42,8 +42,8 @@
-
-
+
+
@@ -59,7 +59,7 @@
project.resource.allocation
form
tree,form
- {'search_default_resource': 1}
+ {'search_default_resource': 1}
@@ -128,7 +128,7 @@
-
+
@@ -142,11 +142,10 @@
-
-
+
@@ -157,7 +156,7 @@
-
+
@@ -223,10 +222,10 @@
-
+
-
+
@@ -245,7 +244,7 @@
project.phase
form
gantt,tree,form,calendar
- {'search_default_responsible_id':uid}
+ {'search_default_responsible_id':uid}
@@ -280,32 +279,7 @@
# Project Task
# ------------------------------------------------------
-
- project.phase.task.form1
- project.task
- form
-
-
-
-
-
-
-
-
-
-
- project.phase.task.form2
- project.task
- form
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/project_long_term/security/ir.model.access.csv b/addons/project_long_term/security/ir.model.access.csv
index 7a91ce257ed..b829675772e 100644
--- a/addons/project_long_term/security/ir.model.access.csv
+++ b/addons/project_long_term/security/ir.model.access.csv
@@ -1,3 +1,3 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_phase","project.phase","model_project_phase",,1,1,1,1
-"access_project_resource_allocation","project.resource.allocation","model_project_resource_allocation",,1,1,1,1
+"access_project_phase","project.phase","model_project_phase",project.group_project_user,1,1,1,1
+"access_project_resource_allocation","project.resource.allocation","model_project_resource_allocation",project.group_project_user,1,1,1,1
diff --git a/addons/project_long_term/wizard/project_compute_tasks.py b/addons/project_long_term/wizard/project_compute_tasks.py
index af5ceaea676..bd569abf90e 100644
--- a/addons/project_long_term/wizard/project_compute_tasks.py
+++ b/addons/project_long_term/wizard/project_compute_tasks.py
@@ -108,7 +108,7 @@ class project_compute_tasks(osv.osv_memory):
# Dynamic Creation of tasks
i = 0
for each_task in tasks:
- hours = str(each_task.planned_hours / each_task.occupation_rate)+ 'H'
+ hours = str(each_task.planned_hours )+ 'H'
if each_task.priority in priority_dict.keys():
priorty = priority_dict[each_task.priority]
if each_task.user_id:
@@ -139,4 +139,4 @@ class project_compute_tasks(osv.osv_memory):
return {}
project_compute_tasks()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/project_long_term/wizard/project_schedule_tasks.py b/addons/project_long_term/wizard/project_schedule_tasks.py
index 3e01c25e975..78ad2166698 100644
--- a/addons/project_long_term/wizard/project_schedule_tasks.py
+++ b/addons/project_long_term/wizard/project_schedule_tasks.py
@@ -127,7 +127,7 @@ class project_schedule_task(osv.osv_memory):
# Dynamic creation of tasks
i = 0
for each_task in tasks:
- hours = str(each_task.planned_hours / each_task.occupation_rate)+ 'H'
+ hours = str(each_task.planned_hours )+ 'H'
if each_task.priority in priority_dict.keys():
priorty = priority_dict[each_task.priority]
if each_task.user_id:
diff --git a/addons/project_messages/security/ir.model.access.csv b/addons/project_messages/security/ir.model.access.csv
index 96782d5fc82..b79a32fb2f5 100644
--- a/addons/project_messages/security/ir.model.access.csv
+++ b/addons/project_messages/security/ir.model.access.csv
@@ -1,2 +1,2 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_messages","project.messages","model_project_messages",,1,1,1,1
+"access_project_messages","project.messages","model_project_messages",project.group_project_user,1,1,1,1
diff --git a/addons/project_planning/project_planning_view.xml b/addons/project_planning/project_planning_view.xml
index fd9d586f21e..d7d2880714c 100644
--- a/addons/project_planning/project_planning_view.xml
+++ b/addons/project_planning/project_planning_view.xml
@@ -164,10 +164,10 @@
-
-
-
-
+
+
+
+
diff --git a/addons/purchase/board_purchase_view.xml b/addons/purchase/board_purchase_view.xml
index 5548b3f2838..8e08ee7134d 100644
--- a/addons/purchase/board_purchase_view.xml
+++ b/addons/purchase/board_purchase_view.xml
@@ -2,13 +2,13 @@
-
+
-
+
Draft Purchases
ir.actions.act_window
purchase.order
@@ -17,7 +17,7 @@
[('date_order','>',time.strftime('%Y-01-01 00:00:00')),('date_order','<',time.strftime('%Y-12-31 23:59:59')), ('state','=','draft')]
-
+
Quotation Request
ir.actions.act_window
purchase.order
@@ -47,7 +47,7 @@
-
+
Purchase Dashboard
board.board
form
@@ -55,7 +55,7 @@
menu
-
diff --git a/addons/purchase/report/purchase_report.py b/addons/purchase/report/purchase_report.py
index ff3d4bdcee8..d5688e5bd22 100644
--- a/addons/purchase/report/purchase_report.py
+++ b/addons/purchase/report/purchase_report.py
@@ -31,7 +31,7 @@ class purchase_report(osv.osv):
_description = "Purchases Orders"
_auto = False
_columns = {
- 'date': fields.date('Date order', readonly=True),
+ 'date': fields.date('Order Date', readonly=True),
'name': fields.char('Year',size=64,required=False, readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'state': fields.selection([
@@ -44,32 +44,26 @@ class purchase_report(osv.osv):
('done','Done'),
('cancel','Cancel')
], 'Order State', readonly=True),
- 'invoice_method': fields.selection([
- ('manual','Manual'),
- ('order','From Order'),
- ('picking','From Picking')
- ],'Invoicing Control', readonly=True),
'product_id':fields.many2one('product.product', 'Product', readonly=True),
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', readonly=True),
'location_id': fields.many2one('stock.location', 'Destination', readonly=True),
- 'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position',readonly=True),
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
'partner_address_id':fields.many2one('res.partner.address', 'Address Contact Name', readonly=True),
'dest_address_id':fields.many2one('res.partner.address', 'Dest. Address Contact Name',readonly=True),
'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', readonly=True),
'date_approve':fields.date('Date Approved', readonly=True),
'expected_date':fields.date('Expected Date', readonly=True),
- 'validator' : fields.many2one('res.users', 'Validated by', readonly=True),
+ 'validator' : fields.many2one('res.users', 'Validated By', readonly=True),
'company_id':fields.many2one('res.company', 'Company', readonly=True),
- 'shipped_qty':fields.integer('Received Qty', readonly=True),
- 'invoiced_qty':fields.integer('Invoiced Qty', readonly=True),
'user_id':fields.many2one('res.users', 'Responsible', readonly=True),
- 'delay':fields.float('Days to Close', digits=(16,2), readonly=True),
- 'delay_pass':fields.float('Overpassed expected', digits=(16,2), readonly=True),
+ 'delay':fields.float('Days to Validate', digits=(16,2), readonly=True, group_operator="avg"),
+ 'delay_pass':fields.float('Days to Deliver', digits=(16,2), readonly=True, group_operator="avg"),
'quantity': fields.float('# of Products', readonly=True),
'price_total': fields.float('Total Price', readonly=True),
- 'price_average': fields.float('Average Price', readonly=True),
- 'nbr': fields.integer('# of Ordered Lines', readonly=True),
+ 'price_average': fields.float('Unit Price', readonly=True, group_operator="avg"),
+ 'negociation': fields.float('Purchase-Standard Price', readonly=True, group_operator="avg"),
+ 'price_standard': fields.float('Products Value', readonly=True, group_operator="sum"),
+ 'nbr': fields.integer('# of PO Lines', readonly=True),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
@@ -94,36 +88,34 @@ class purchase_report(osv.osv):
s.validator,
s.warehouse_id as warehouse_id,
s.partner_id as partner_id,
- s.fiscal_position,
s.create_uid as user_id,
s.company_id as company_id,
- s.invoice_method,
- s.shipped::integer as shipped_qty,
- l.invoiced::integer as invoiced_qty,
l.product_id,
s.location_id as location_id,
sum(l.product_qty*u.factor) as quantity,
extract(epoch from age(s.date_approve,s.date_order))/(24*60*60)::decimal(16,2) as delay,
- extract(epoch from age(s.minimum_planned_date,s.date_order))/(24*60*60)::decimal(16,2) as delay_pass,
+ extract(epoch from age(l.date_planned,s.date_order))/(24*60*60)::decimal(16,2) as delay_pass,
count(*) as nbr,
- l.price_unit*l.product_qty*u.factor as price_total,
+ (l.price_unit*l.product_qty*u.factor)::decimal(16,2) as price_total,
+ avg(100.0 * (l.price_unit*l.product_qty*u.factor) / (t.standard_price*l.product_qty*u.factor))::decimal(16,2) as negociation,
+ sum(t.standard_price*l.product_qty*u.factor)::decimal(16,2) as price_standard,
(sum(l.product_qty*l.price_unit)/sum(l.product_qty*u.factor))::decimal(16,2) as price_average
from purchase_order s
left join purchase_order_line l on (s.id=l.order_id)
+ left join product_product p on (l.product_id=p.id)
+ left join product_template t on (p.product_tmpl_id=t.id)
left join product_uom u on (u.id=l.product_uom)
where l.product_id is not null
group by
s.company_id,
s.create_uid,
- s.shipped,
- l.invoiced,
s.partner_id,
l.product_qty,
u.factor,
s.location_id,
l.price_unit,
s.date_approve,
- s.minimum_planned_date,
+ l.date_planned,
date_trunc('day',s.minimum_planned_date),
s.partner_address_id,
s.pricelist_id,
@@ -135,74 +127,8 @@ class purchase_report(osv.osv):
to_char(s.date_order, 'MM'),
to_char(s.date_order, 'YYYY-MM-DD'),
s.state,
- s.warehouse_id,
- s.fiscal_position,
- s.invoice_method
+ s.warehouse_id
)
""")
purchase_report()
-class purchase_order_qty_amount(osv.osv):
- _name = "purchase.order.qty.amount"
- _description = "Quantity and amount per month"
- _auto = False
- _columns = {
- 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
- ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
- 'total_qty' : fields.float('Total Qty'),
- 'total_amount' : fields.float('Total Amount'),
-
- }
- def init(self, cr):
- tools.sql.drop_view_if_exists(cr, 'purchase_order_qty_amount')
- cr.execute("""
- create or replace view purchase_order_qty_amount as (
- select
- min(id) as id,
- to_char(create_date, 'MM') as month,
- sum(product_qty) as total_qty,
- sum(price_unit*product_qty) as total_amount
- from
- purchase_order_line
- where
- to_char(create_date,'YYYY') = to_char(current_date,'YYYY')
- group by
- to_char(create_date, 'MM')
-
- )
- """)
-purchase_order_qty_amount()
-
-class purchase_order_by_user(osv.osv):
- _name = "purchase.order.by.user"
- _description = "Purchase Order by user per month"
- _auto = False
- _columns = {
- 'name' : fields.char('User',size=64,required=True),
- 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
- ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
- 'nbr' : fields.integer('Total Orders'),
-
- }
- _order = 'name desc'
- def init(self, cr):
- tools.sql.drop_view_if_exists(cr, 'purchase_order_by_user')
- cr.execute("""
- create or replace view purchase_order_by_user as (
- select
- min(po.id) as id,
- rs.name as name,
- count(po.id) as nbr,
- to_char(po.date_order, 'MM') as month
- from
- purchase_order as po,res_users as rs
- where
- po.create_uid = rs.id
- group by
- rs.name,po.date_order
-
- )
- """)
-purchase_order_by_user()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml
index db6cc6273de..b2bdf840c3d 100644
--- a/addons/purchase/report/purchase_report_view.xml
+++ b/addons/purchase/report/purchase_report_view.xml
@@ -8,7 +8,6 @@
-
@@ -20,13 +19,13 @@
tree
-
-
-
-
-
+
+
+
+
+
-
+
@@ -34,14 +33,14 @@
-
-
-
-
+
+
-
-
-
+
+
+
+
+
@@ -53,65 +52,56 @@
-
+
+ name="month"
+ domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%%Y-%%m-%%d'))]"
+ help="Tasks performed in this month"/>
+ string="Quotations"
+ name="quotes"
+ domain="[('state','=','draft')]"/>
-
-
-
+ string="Orders"
+ name="orders"
+ domain="[('state','<>','draft'),('state','<>','cancel')]"/>
-
+
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
+
-
+
-
+
-
@@ -127,77 +117,21 @@
purchase.report
form
tree,graph
-
- {'search_default_month':1,'search_default_Responsible':1,'group_by_no_leaf':1,'group_by':[]}
+ {'search_default_month':1,'search_default_group_partner_id':1,'search_default_group_product_id': 1, 'search_default_orders': 1, 'group_by_no_leaf':1,'group_by':[]}
-
- purchase.order.qty.amount.graph
- purchase.order.qty.amount
- graph
-
-
-
-
-
-
-
-
+
+ Receptions Analysis
+ report.stock.move
+ form
+ tree,graph
+ {'search_default_month':1, 'search_default_group_product':1, 'search_default_group_partner':1, 'search_default_done':1, 'search_default_in': 1, 'group_by':[], 'group_by_no_leaf':1}
+
+
-
- purchase.order.qty.amount.tree
- purchase.order.qty.amount
- tree
-
-
-
-
-
-
-
-
-
- Total Qty and Amount by month
- purchase.order.qty.amount
- form
- graph,tree
-
-
-
- purchase.order.by.user.graph
- purchase.order.by.user
- graph
-
-
-
-
-
-
-
-
-
-
- purchase.order.by.user.tree
- purchase.order.by.user
- tree
-
-
-
-
-
-
-
-
-
-
- Total Orders by User per month
- purchase.order.by.user
- form
- graph,tree
-
diff --git a/addons/purchase/security/ir.model.access.csv b/addons/purchase/security/ir.model.access.csv
index 9b0f8bc184e..c6a09d5d728 100644
--- a/addons/purchase/security/ir.model.access.csv
+++ b/addons/purchase/security/ir.model.access.csv
@@ -17,3 +17,10 @@
"access_stock_picking_purchase_user_manager","stock.picking","stock.model_stock_picking","purchase.group_purchase_manager",1,1,1,1
"access_stock_move_purchase_user_manager","stock.move","stock.model_stock_move","purchase.group_purchase_manager",1,1,1,1
"access_account_tax_purchase_user_manager","account.tax","account.model_account_tax","purchase.group_purchase_manager",1,0,0,0
+"access_product_product_purchase_user","product.product.purchase.user","product.model_product_product","group_purchase_user",1,0,0,0
+"access_account_invoice_purchase","account_invoice purchase","account.model_account_invoice","group_purchase_user",1,1,1,1
+"access_account_invoice_line_purchase","account_invoice.line purchase","account.model_account_invoice_line","group_purchase_user",1,1,1,1
+"access_account_fiscal_position_purchase_user","account.fiscal.position purchase","account.model_account_fiscal_position","group_purchase_user",1,0,0,0
+"access_account_sequence_fiscalyear_purchase_user","account.sequence.fiscalyear purchase","account.model_account_sequence_fiscalyear","group_purchase_user",1,1,1,1
+"access_res_partner_purchase_user","res.partner purchase","base.model_res_partner","group_purchase_user",1,0,0,0
+"access_res_partner_address_purchase_user","res.partner.address purchase","base.model_res_partner_address","group_purchase_user",1,0,0,0
diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml
index 186815c9bc3..172be8c06e8 100644
--- a/addons/purchase_requisition/purchase_requisition_view.xml
+++ b/addons/purchase_requisition/purchase_requisition_view.xml
@@ -39,7 +39,7 @@
-
+
@@ -52,41 +52,41 @@
-
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -110,7 +110,7 @@
-
+
purchase.requisition.list.select
purchase.requisition
search
@@ -118,22 +118,22 @@
-
+
-
+
-
+
-
+
@@ -145,8 +145,8 @@
ir.actions.act_window
purchase.requisition
form
- tree,form
- {"search_default_user_id":uid}
+ tree,form
+ {"search_default_user_id":uid}
diff --git a/addons/report_designer/security/ir.model.access.csv b/addons/report_designer/security/ir.model.access.csv
index 81d2854dc14..e6500199afe 100644
--- a/addons/report_designer/security/ir.model.access.csv
+++ b/addons/report_designer/security/ir.model.access.csv
@@ -1,2 +1,2 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_report_designer_installer","report_designer.installer","model_report_designer_installer",,1,1,1,1
+"access_report_designer_installer","report_designer.installer","model_report_designer_installer",base.group_system,1,1,1,1
diff --git a/addons/resource/resource_view.xml b/addons/resource/resource_view.xml
index df0974fd9ed..d00074cf54e 100644
--- a/addons/resource/resource_view.xml
+++ b/addons/resource/resource_view.xml
@@ -12,7 +12,7 @@
-
+
@@ -35,7 +35,7 @@
-
+
@@ -52,7 +52,7 @@
-
+
diff --git a/addons/resource/security/ir.model.access.csv b/addons/resource/security/ir.model.access.csv
index 796d29dcb94..f52b43adcaa 100644
--- a/addons/resource/security/ir.model.access.csv
+++ b/addons/resource/security/ir.model.access.csv
@@ -1,5 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_resource_calendar","resource.calendar","model_resource_calendar","base.group_user",1,0,0,0
-"access_resource_calendar_week","resource.calendar.week","model_resource_calendar_week","base.group_user",1,0,0,0
-"access_resource_resource","resource.resource","model_resource_resource","base.group_user",1,0,0,0
-"access_resource_calendar_leaves","resource.calendar.leaves","model_resource_calendar_leaves","base.group_user",1,0,0,0
\ No newline at end of file
+"access_resource_calendar","resource.calendar","model_resource_calendar","base.group_system",1,1,1,1
+"access_resource_calendar_week","resource.calendar.week","model_resource_calendar_week","base.group_system",1,1,1,1
+"access_resource_resource","resource.resource","model_resource_resource","base.group_system",1,1,1,1
+"access_resource_calendar_leaves","resource.calendar.leaves","model_resource_calendar_leaves","base.group_system",1,1,1,1
diff --git a/addons/sale/i18n/ru.po b/addons/sale/i18n/ru.po
index d6858cc9f75..ce9c8c51095 100644
--- a/addons/sale/i18n/ru.po
+++ b/addons/sale/i18n/ru.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2009-02-04 05:56+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-06-11 16:29+0000\n"
+"Last-Translator: Sios \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: 2010-04-17 04:09+0000\n"
+"X-Launchpad-Export-Date: 2010-06-12 03:45+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale
@@ -117,7 +117,7 @@ msgstr ""
#. module: sale
#: model:ir.model,name:sale.model_sale_config_picking_policy
msgid "sale.config.picking_policy"
-msgstr ""
+msgstr "sale.config.picking_policy"
#. module: sale
#: model:process.transition.action,name:sale.process_transition_action_validate0
diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml
index f6090638891..9b8ed32ede4 100644
--- a/addons/sale/report/sale_report_view.xml
+++ b/addons/sale/report/sale_report_view.xml
@@ -128,6 +128,16 @@
+
+ Shipments Analysis
+ report.stock.move
+ form
+ tree,graph
+ {'search_default_month':1, 'search_default_group_product':1, 'search_default_group_partner':1, 'search_default_done':1, 'search_default_out': 1, 'group_by':[], 'group_by_no_leaf':1}
+
+
+
+
sale.order.by.clients.tree
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 4dd70ac82e1..94847945821 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -254,7 +254,7 @@ class sale_order(osv.osv):
'invoiced_rate': fields.function(_invoiced_rate, method=True, string='Invoiced', type='float'),
'invoiced': fields.function(_invoiced, method=True, string='Paid',
fnct_search=_invoiced_search, type='boolean'),
- 'note': fields.text('Notes', translate=True),
+ 'note': fields.text('Notes'),
'amount_untaxed': fields.function(_amount_all, method=True, digits_compute= dp.get_precision('Sale Price'), string='Untaxed Amount',
store = {
@@ -645,6 +645,7 @@ class sale_order(osv.osv):
'picking_id': picking_id,
'product_id': line.product_id.id,
'date_planned': date_planned,
+ 'date_expected': date_planned,
'product_qty': line.product_uom_qty,
'product_uom': line.product_uom.id,
'product_uos_qty': line.product_uos_qty,
@@ -825,7 +826,7 @@ class sale_order_line(osv.osv):
'move_ids': fields.one2many('stock.move', 'sale_line_id', 'Inventory Moves', readonly=True),
'discount': fields.float('Discount (%)', digits=(16, 2), readonly=True, states={'draft':[('readonly',False)]}),
'number_packages': fields.function(_number_packages, method=True, type='integer', string='Number Packages'),
- 'notes': fields.text('Notes', translate=True),
+ 'notes': fields.text('Notes'),
'th_weight': fields.float('Weight'),
'state': fields.selection([('draft', 'Draft'),('confirmed', 'Confirmed'),('done', 'Done'),('cancel', 'Cancelled'),('exception', 'Exception')], 'State', required=True, readonly=True,
help=' * The \'Draft\' state is set automatically when sale order in draft state. \
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 6214613c47d..4a12e1dafaf 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -92,6 +92,15 @@
+
+
+
sale.order.form
sale.order
@@ -112,7 +121,7 @@
-
+
@@ -187,12 +196,13 @@
-
+
+
-
+
@@ -258,7 +268,7 @@
-
+
@@ -426,7 +436,7 @@
-
+
@@ -512,16 +522,16 @@
Sales Configuration
- Configure Sale Order Logistic
-
-
- Setup your sales workflow and default values.
-
+
+
+ Setup your sales workflow and default values.
+
- 15
-
-
+ 15
+
+
diff --git a/addons/sale/security/ir.model.access.csv b/addons/sale/security/ir.model.access.csv
index f2f3b36f1f4..7328793e2f3 100644
--- a/addons/sale/security/ir.model.access.csv
+++ b/addons/sale/security/ir.model.access.csv
@@ -24,3 +24,4 @@
"access_sale_open_invoice","sale.open.invoice","model_sale_open_invoice","group_sale_user",1,1,1,0
"access_sale_open_invoice_manager","sale.open.invoice","model_sale_open_invoice","group_sale_manager",1,1,1,1
"access_product_product_sale_user","product.product.sale.user","model_product_product","group_sale_user",1,0,0,0
+"access_sale_account_journal","account.journal sale order.user","account.model_account_journal","group_sale_user",1,0,0,0
diff --git a/addons/sale/security/sale_security.xml b/addons/sale/security/sale_security.xml
index fd8b3e0d3c7..8e5c8360d07 100644
--- a/addons/sale/security/sale_security.xml
+++ b/addons/sale/security/sale_security.xml
@@ -14,14 +14,14 @@
- Sale Order multi-company
+ Sale Order multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
- Sale Order Line multi-company
+ Sale Order Line multi-company
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
diff --git a/addons/sale/wizard/sale_make_invoice_advance.xml b/addons/sale/wizard/sale_make_invoice_advance.xml
index 5fc8b993921..a4f48554166 100644
--- a/addons/sale/wizard/sale_make_invoice_advance.xml
+++ b/addons/sale/wizard/sale_make_invoice_advance.xml
@@ -1,59 +1,50 @@
-
- Sale Advance Payment Invoive
+
+ Deposit Invoice
sale.advance.payment.inv
form
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
+
Open Invoice
sale.open.invoice
form
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
+
Open Invoice
ir.actions.act_window
sale.open.invoice
form
form
new
-
+
diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml
index bf5f1aaac52..565fd687b4e 100644
--- a/addons/sale_crm/sale_crm_view.xml
+++ b/addons/sale_crm/sale_crm_view.xml
@@ -9,8 +9,7 @@
-
-
+
@@ -34,9 +33,9 @@
-
+
diff --git a/addons/sale_journal/sale_journal_view.xml b/addons/sale_journal/sale_journal_view.xml
index 7e4cc33b283..5b3d2de5652 100644
--- a/addons/sale_journal/sale_journal_view.xml
+++ b/addons/sale_journal/sale_journal_view.xml
@@ -3,467 +3,467 @@
-
- sale_journal.invoice.type.form
- sale_journal.invoice.type
- form
-
-
-
-
-
-
-
-
-
-
+
+ sale_journal.invoice.type.form
+ sale_journal.invoice.type
+ form
+
+
+
+
+
+
+
+
+
+
-
+
-
- sale_journal.invoice.type.tree
- sale_journal.invoice.type
- tree
-
-
-
-
-
-
-
+
+ sale_journal.invoice.type.tree
+ sale_journal.invoice.type
+ tree
+
+
+
+
+
+
+
-
+
-
- sale_journal.invoice.type
- form
- tree,form
-
+
+ sale_journal.invoice.type
+ form
+ tree,form
+
-
+
-
+
-
- sale_journal.sale.journal.form
- sale_journal.sale.journal
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ sale_journal.sale.journal.form
+ sale_journal.sale.journal
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- sale_journal.sale.journal.tree
- sale_journal.sale.journal
- tree
-
-
-
-
-
-
-
-
-
-
+
+ sale_journal.sale.journal.tree
+ sale_journal.sale.journal
+ tree
+
+
+
+
+
+
+
+
+
+
-
+
-
- sale_journal.sale.journal.search
- sale_journal.sale.journal
- search
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ sale_journal.sale.journal.search
+ sale_journal.sale.journal
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- sale_journal.sale.journal
- form
- tree,form
-
-
+
+ sale_journal.sale.journal
+ form
+ tree,form
+
+
-
+
-
+
-
- sale.order.journal.view.form
- form
- sale.order
-
-
-
+
+ sale.order.journal.view.form
+ form
+ sale.order
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
- sale.order.journal.view.tree
- tree
- sale.order
-
-
-
-
-
-
-
-
+
+ sale.order.journal.view.tree
+ tree
+ sale.order
+
+
+
+
+
+
+
+
-
- stock.picking.journal.view.form
- form
- stock.picking
-
-
-
-
-
-
-
-
-
+
+ stock.picking.journal.view.form
+ form
+ stock.picking
+
+
+
+
+
+
+
+
+
-
- stock.picking.journal.view.tree
- tree
- stock.picking
-
-
-
-
-
-
-
-
-
+
+ stock.picking.journal.view.tree
+ tree
+ stock.picking
+
+
+
+
+
+
+
+
+
-
+
-
- stock.picking.journal.view.form
- form
- stock.picking
-
-
-
-
-
-
-
-
-
+
+ stock.picking.journal.view.form
+ form
+ stock.picking
+
+
+
+
+
+
+
+
+
-
+
-
- stock.picking.journal.view.tree
- tree
- stock.picking
-
-
-
-
-
-
-
-
-
+
+ stock.picking.journal.view.tree
+ tree
+ stock.picking
+
+
+
+
+
+
+
+
+
-
- stock.picking.journal.view.form
- form
- stock.picking
-
-
-
-
-
-
-
-
-
+
+ stock.picking.journal.view.form
+ form
+ stock.picking
+
+
+
+
+
+
+
+
+
-
- stock.picking.journal.view.tree
- tree
- stock.picking
-
-
-
-
-
-
-
-
-
+
+ stock.picking.journal.view.tree
+ tree
+ stock.picking
+
+
+
+
+
+
+
+
+
-
- stock.picking.journal.view.form
- form
- stock.picking
-
-
-
-
-
-
-
-
-
+
+ stock.picking.journal.view.form
+ form
+ stock.picking
+
+
+
+
+
+
+
+
+
-
- stock.picking.journal.view.tree
- tree
- stock.picking
-
-
-
-
-
-
-
-
-
+
+ stock.picking.journal.view.tree
+ tree
+ stock.picking
+
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
- res.partner.journal.property.form.inherit
- res.partner
- form
-
-
-
-
-
-
-
+
+ res.partner.journal.property.form.inherit
+ res.partner
+ form
+
+
+
+
+
+
+
-
-
-
+
+
+
-
- sale_journal.picking.journal.form
- sale_journal.picking.journal
- form
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ sale_journal.picking.journal.form
+ sale_journal.picking.journal
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- sale_journal.picking.journal.tree
- sale_journal.picking.journal
- tree
-
-
-
-
-
-
-
-
-
-
+
+ sale_journal.picking.journal.tree
+ sale_journal.picking.journal
+ tree
+
+
+
+
+
+
+
+
+
+
-
- sale_journal.picking.journal.search
- sale_journal.picking.journal
- search
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ sale_journal.picking.journal.search
+ sale_journal.picking.journal
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- Picking Journals
- sale_journal.picking.journal
- form
- tree,form
-
-
+
+ Picking Journals
+ sale_journal.picking.journal
+ form
+ tree,form
+
+
-
+
-
- Picking by invoice_method
- sale_journal.invoice.type
- ir.actions.act_window
- tree
-
+
+ Picking by invoice_method
+ sale_journal.invoice.type
+ ir.actions.act_window
+ tree
+
-
- Picking to invoice
- stock.picking
- ir.actions.act_window
- form
- tree,form
- [('state','=','done'),('invoice_state','=','2binvoiced'),('invoice_type_id','=',active_id)]
-
+
+ Picking to invoice
+ stock.picking
+ ir.actions.act_window
+ form
+ tree,form
+ [('state','=','done'),('invoice_state','=','2binvoiced'),('invoice_type_id','=',active_id)]
+
-
- tree_but_open
- sale_journal.invoice.type
- Picking to invoice
-
-
-
+
+ tree_but_open
+ sale_journal.invoice.type
+ Picking to invoice
+
+
+
diff --git a/addons/scrum/scrum_view.xml b/addons/scrum/scrum_view.xml
index d4631a680ca..b076e98038a 100644
--- a/addons/scrum/scrum_view.xml
+++ b/addons/scrum/scrum_view.xml
@@ -141,8 +141,8 @@
-
-
+
+
-
+
@@ -188,7 +188,7 @@
scrum.sprint
tree
-
+
@@ -268,8 +268,8 @@
-
-
+
+
@@ -357,10 +357,10 @@
-
+
-
+
diff --git a/addons/scrum/security/ir.model.access.csv b/addons/scrum/security/ir.model.access.csv
index a52a9c2f3f2..76ba229e952 100644
--- a/addons/scrum/security/ir.model.access.csv
+++ b/addons/scrum/security/ir.model.access.csv
@@ -1,7 +1,9 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_scrum_sprint","scrum.sprint","model_scrum_sprint","project.group_project_user",1,,,
+"access_scrum_sprint","scrum.sprint","model_scrum_sprint","project.group_project_user",1,0,0,0
"access_scrum_product_backlog","scrum.product.backlog","model_scrum_product_backlog","project.group_project_user",1,1,1,1
-"access_scrum_meeting","scrum.meeting","model_scrum_meeting","project.group_project_user",1,,,
+"access_scrum_meeting","scrum.meeting","model_scrum_meeting","project.group_project_user",1,0,0,0
"access_scrum_meeting_manager","scrum.meeting.manager","model_scrum_meeting","project.group_project_manager",1,1,1,1
"access_scrum_sprint_manager","scrum.sprint.manager","model_scrum_sprint","project.group_project_manager",1,1,1,1
"access_scrum_product_backlog_manager","scrum.product.backlog manager","model_scrum_product_backlog","project.group_project_manager",1,1,1,1
+"access_product_uom_project_manager","product.uom project manager","product.model_product_uom","project.group_project_manager",1,1,1,1
+"access_product_uom_project_user","product.uom project user","product.model_product_uom","project.group_project_user",1,0,0,0
diff --git a/addons/stock/__openerp__.py b/addons/stock/__openerp__.py
index 60ccea7d137..dd830143e6f 100644
--- a/addons/stock/__openerp__.py
+++ b/addons/stock/__openerp__.py
@@ -69,7 +69,6 @@ Thanks to the double entry management, the inventory controlling is powerful and
"partner_view.xml",
"report/report_stock_move_view.xml",
"report/report_stock_view.xml",
- "report/report_stock_picking_view.xml",
"security/stock_security.xml",
"security/ir.model.access.csv",
"board_warehouse_view.xml"
@@ -79,4 +78,3 @@ Thanks to the double entry management, the inventory controlling is powerful and
'active': False,
'certificate': '0055421559965',
}
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/i18n/pl.po b/addons/stock/i18n/pl.po
index a4406384e8e..117d90e683a 100644
--- a/addons/stock/i18n/pl.po
+++ b/addons/stock/i18n/pl.po
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
-"PO-Revision-Date: 2010-05-21 08:22+0000\n"
+"PO-Revision-Date: 2010-06-13 15:17+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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: 2010-05-22 04:00+0000\n"
+"X-Launchpad-Export-Date: 2010-06-14 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: stock
@@ -120,7 +120,7 @@ msgstr "Otrzymane produkty"
#: model:ir.actions.act_window,name:stock.action_picking_tree4
#: model:ir.ui.menu,name:stock.menu_action_picking_tree4
msgid "Incoming Products"
-msgstr "Przyjmowanie produktów"
+msgstr "Przyjęcia zewnętrzne"
#. module: stock
#: field:stock.picking,name:0
@@ -592,7 +592,7 @@ msgstr ""
#: model:ir.actions.act_window,name:stock.action_picking_form
#: model:ir.ui.menu,name:stock.menu_action_picking_form
msgid "New Reception Packing"
-msgstr "Nowy odbiór listy przesunięć"
+msgstr "Nowe przyjęcia zewnętrzne"
#. module: stock
#: wizard_field:stock.move.track,init,quantity:0
@@ -837,7 +837,7 @@ msgstr ""
#: model:ir.actions.act_window,name:stock.action_picking_tree9
#: model:ir.ui.menu,name:stock.menu_action_picking_tree9
msgid "New Internal Packing"
-msgstr "Nowa lista przesunięć wewnętrznych"
+msgstr "Nowe przesunięcie wewnętrzne"
#. module: stock
#: view:stock.inventory:0
@@ -1330,7 +1330,7 @@ msgstr "Cel przesunięcia"
#: model:ir.actions.act_window,name:stock.action_inventory_form_new
#: model:ir.ui.menu,name:stock.menu_action_inventory_form_new
msgid "New Periodical Inventory"
-msgstr "Nowa inentaryzacja okresowa"
+msgstr "Nowa inwentaryzacja okresowa"
#. module: stock
#: field:stock.production.lot,revisions:0
@@ -1346,7 +1346,7 @@ msgstr "FIFO"
#: model:ir.actions.act_window,name:stock.action_picking_tree2_delivery
#: model:ir.ui.menu,name:stock.menu_picking_waiting_delivery
msgid "Delivery Orders to Process"
-msgstr "Zamówienia dostawy do przetworzenia"
+msgstr "Wydania zewnętrzne do obsługi"
#. module: stock
#: field:stock.move,priority:0
@@ -1493,7 +1493,7 @@ msgstr ""
#: model:ir.actions.act_window,name:stock.action_picking_tree3_delivery
#: model:ir.ui.menu,name:stock.menu_action_picking_tree3_delivery
msgid "Future Delivery Orders"
-msgstr "Przyszłe zamówienia dostawy"
+msgstr "Przyszłe wydania zewnętrzne"
#. module: stock
#: selection:stock.location,icon:0
@@ -1990,7 +1990,7 @@ msgstr ""
#: model:ir.actions.act_window,name:stock.action_picking_tree_delivery
#: model:ir.ui.menu,name:stock.menu_action_picking_tree_delivery
msgid "Delivery Orders"
-msgstr "Zamówienia dostawy"
+msgstr "Wydania zewnętrzne"
#. module: stock
#: selection:stock.location,icon:0
@@ -2197,7 +2197,7 @@ msgstr "Czy chcesz ustawić zapasy na 0 ?"
#. module: stock
#: selection:stock.picking,move_type:0
msgid "Direct Delivery"
-msgstr "Dostawa bezpośrednia"
+msgstr "Dostawa częściowa"
#. module: stock
#: selection:stock.location,icon:0
@@ -2345,7 +2345,7 @@ msgstr ""
#. module: stock
#: selection:stock.picking,type:0
msgid "Delivery"
-msgstr "Dostawa"
+msgstr "Wydanie zewnętrzne"
#. module: stock
#: model:ir.actions.act_window,name:stock.action5
diff --git a/addons/stock/partner_view.xml b/addons/stock/partner_view.xml
index be2ed4bfc55..9ba4073e2e2 100644
--- a/addons/stock/partner_view.xml
+++ b/addons/stock/partner_view.xml
@@ -12,10 +12,10 @@
-
-
-
-
+
+
+
+
diff --git a/addons/stock/product.py b/addons/stock/product.py
index 16db5f4e1f2..9a19d3e84c3 100644
--- a/addons/stock/product.py
+++ b/addons/stock/product.py
@@ -24,8 +24,7 @@ from tools.translate import _
class product_product(osv.osv):
- _inherit = "product.product"
-
+ _inherit = "product.product"
def get_product_accounts(self, cr, uid, product_id, context=None):
""" To get the stock input account, stock output account and stock journal related to product.
@@ -71,8 +70,8 @@ class product_product(osv.osv):
product_obj=self.browse(cr,uid,ids)[0]
account_variation = product_obj.categ_id.property_stock_variation
move_ids = []
+ loc_ids = location_obj.search(cr, uid,[('usage','=','internal')])
for rec_id in ids:
- loc_ids = location_obj.search(cr, uid,[('usage','=','internal')])
for location in location_obj.browse(cr, uid, loc_ids):
c = context.copy()
c.update({
@@ -202,6 +201,8 @@ class product_product(osv.osv):
if context.get('location', False):
if type(context['location']) == type(1):
location_ids = [context['location']]
+ elif type(context['location']) in (type(''), type(u'')):
+ location_ids = self.pool.get('stock.location').search(cr, uid, [('name','ilike',context['location'])], context=context)
else:
location_ids = context['location']
else:
@@ -312,7 +313,7 @@ class product_product(osv.osv):
'track_production': fields.boolean('Track Production Lots' , help="Forces to use a Production Lot during production order"),
'track_incoming': fields.boolean('Track Incoming Lots', help="Forces to use a tracking lot during receptions"),
'track_outgoing': fields.boolean('Track Outgoing Lots', help="Forces to use a tracking lot during deliveries"),
- 'location_id': fields.dummy(string='Location', relation='stock.location', type='many2one', domain=[('usage','=','internal')]),
+ 'location_id': fields.dummy(string='Location', relation='stock.location', type='many2one'),
'valuation':fields.selection([('manual_periodic', 'Periodic (manual)'),
('real_time','Real Time (automatized)'),], 'Stock Valuation', help="Decide if the system must automatically creates account moves based on stock moves", required=True),
}
diff --git a/addons/stock/product_view.xml b/addons/stock/product_view.xml
index 4f6ede6c460..36ba20b3b05 100644
--- a/addons/stock/product_view.xml
+++ b/addons/stock/product_view.xml
@@ -8,8 +8,8 @@
search
-
-
+
+
@@ -43,9 +43,9 @@
-
-
-
+
+
+
@@ -115,9 +115,9 @@
-
-
-
+
+
+
diff --git a/addons/stock/report/__init__.py b/addons/stock/report/__init__.py
index a0a4bcb8ea5..381644fcd32 100644
--- a/addons/stock/report/__init__.py
+++ b/addons/stock/report/__init__.py
@@ -19,7 +19,6 @@
#
##############################################################################
-#import lot_overview
import product_stock
import lot_location
import ups
@@ -28,7 +27,4 @@ import lot_overview
import lot_overview_all
import report_stock
import report_stock_move
-import report_stock_picking
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/report/report_stock_move.py b/addons/stock/report/report_stock_move.py
index 8d905a4c4d7..c26f0c13006 100755
--- a/addons/stock/report/report_stock_move.py
+++ b/addons/stock/report/report_stock_move.py
@@ -34,19 +34,20 @@ class report_stock_move(osv.osv):
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
- 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
+ 'partner_id':fields.many2one('res.partner.address', 'Partner', readonly=True),
'product_id':fields.many2one('product.product', 'Product', readonly=True),
+ 'company_id':fields.many2one('res.company', 'Company', readonly=True),
+ 'picking_id':fields.many2one('stock.picking', 'Packing', readonly=True),
+ 'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal'), ('delivery', 'Delivery')], 'Shipping Type', required=True, select=True, help="Shipping type specify, goods coming in or going out."),
'location_id': fields.many2one('stock.location', 'Source Location', readonly=True, select=True, help="Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations."),
'location_dest_id': fields.many2one('stock.location', 'Dest. Location', readonly=True, select=True, help="Location where the system will stock the finished products."),
+ 'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, select=True),
'product_qty':fields.integer('Qty',readonly=True),
'value' : fields.float('Total Value', required=True),
- 'product_uom': fields.many2one('product.uom', 'Product UOM', readonly=True),
- 'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, select=True,
- help='When the stock move is created it is in the \'Draft\' state.\n After that it is set to \'Confirmed\' state.\n If stock is available state is set to \'Avaiable\'.\n When the picking it done the state is \'Done\'.\
- \nThe state is \'Waiting\' if the move is waiting for another one.'),
- 'day_diff':fields.integer('Expected Performance',readonly=True),
+ 'day_diff2':fields.float('Delay (Days)',readonly=True, digits=(16,2), group_operator="avg"),
+ 'day_diff1':fields.float('Planned (Days)',readonly=True, digits=(16,2), group_operator="avg"),
+ 'day_diff':fields.float('Real (Days)',readonly=True, digits=(16,2), group_operator="avg"),
}
-
def init(self, cr):
tools.drop_view_if_exists(cr, 'report_stock_move')
cr.execute("""
@@ -56,8 +57,13 @@ class report_stock_move(osv.osv):
to_char(date_trunc('day',m.date_planned), 'YYYY') as year,
to_char(date_trunc('day',m.date_planned), 'MM') as month,
to_char(date_trunc('day',m.date_planned), 'YYYY-MM-DD') as day,
- (date(m.date_planned)-date(m.date_expected)) as day_diff,
+ avg(date(m.date_planned)-date(m.create_date)) as day_diff,
+ avg(date(m.date_expected)-date(m.create_date)) as day_diff1,
+ avg(date(m.date_planned)-date(m.date_expected)) as day_diff2,
m.address_id as partner_id,
+ m.picking_id as picking_id,
+ m.company_id as company_id,
+ p.type as type,
m.location_id as location_id,
m.location_dest_id as location_dest_id,
m.product_id as product_id,
@@ -65,11 +71,83 @@ class report_stock_move(osv.osv):
m.product_uom as product_uom,
sum(m.product_qty) as product_qty,
pt.standard_price * sum(m.product_qty) as value
- from stock_move m ,product_product pp,product_template pt
- where
- m.product_id=pp.id and pp.product_tmpl_id=pt.id
+ from
+ stock_move m
+ left join stock_picking p on (m.picking_id=p.id)
+ left join product_product pp on (m.product_id=pp.id)
+ left join product_template pt on (pp.product_tmpl_id=pt.id)
group by
m.id, m.product_id,m.address_id, m.location_id, m.location_dest_id,
- m.date_planned, m.state, m.product_uom,pt.standard_price,m.date_expected )
+ m.date_planned, m.state, m.product_uom,pt.standard_price,
+ m.picking_id, p.type, m.company_id
+ )
""")
report_stock_move()
+
+
+class report_stock_inventory(osv.osv):
+ _name = "report.stock.inventory"
+ _description = "Stock Statistics"
+ _auto = False
+ _columns = {
+ 'date_planned': fields.datetime('Date', readonly=True),
+ 'partner_id':fields.many2one('res.partner.address', 'Partner', readonly=True),
+ 'product_id':fields.many2one('product.product', 'Product', readonly=True),
+ 'location_id': fields.many2one('stock.location', 'Location', readonly=True),
+ 'prodlot_id': fields.many2one('stock.production.lot', 'Lot', readonly=True),
+ 'company_id': fields.many2one('res.company', 'Company', readonly=True),
+ 'product_qty':fields.float('Qty', digits=(16,2), readonly=True),
+ 'value' : fields.float('Total Value', digits=(16,2), required=True),
+ 'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, select=True,
+ help='When the stock move is created it is in the \'Draft\' state.\n After that it is set to \'Confirmed\' state.\n If stock is available state is set to \'Avaiable\'.\n When the picking it done the state is \'Done\'.\
+ \nThe state is \'Waiting\' if the move is waiting for another one.'),
+ 'location_type': fields.selection([('supplier', 'Supplier Location'), ('view', 'View'), ('internal', 'Internal Location'), ('customer', 'Customer Location'), ('inventory', 'Inventory'), ('procurement', 'Procurement'), ('production', 'Production'), ('transit', 'Transit Location for Inter-Companies Transfers')], 'Location Type', required=True),
+ }
+ def init(self, cr):
+ tools.drop_view_if_exists(cr, 'report_stock_inventory')
+ cr.execute("""
+create or replace view report_stock_inventory as (
+ (select
+ min(m.id) as id, m.date_planned as date_planned,
+ m.address_id as partner_id, m.location_id as location_id,
+ m.product_id as product_id, l.usage as location_type,
+ m.company_id,
+ m.state as state, m.prodlot_id as prodlot_id,
+ sum(-m.product_qty*u.factor)::decimal(16,2) as product_qty,
+ sum(-pt.standard_price * m.product_qty * u.factor)::decimal(16,2) as value
+ from
+ stock_move m
+ left join stock_picking p on (m.picking_id=p.id)
+ left join product_product pp on (m.product_id=pp.id)
+ left join product_template pt on (pp.product_tmpl_id=pt.id)
+ left join product_uom u on (m.product_uom=u.id)
+ left join stock_location l on (m.location_id=l.id)
+ group by
+ m.id, m.product_id, m.address_id, m.location_id, m.prodlot_id,
+ m.date_planned, m.state, l.usage, m.company_id
+) union all (
+ select
+ -m.id as id, m.date_planned as date_planned,
+ m.address_id as partner_id, m.location_dest_id as location_id,
+ m.product_id as product_id, l.usage as location_type,
+ m.company_id,
+ m.state as state, m.prodlot_id as prodlot_id,
+ sum(m.product_qty*u.factor)::decimal(16,2) as product_qty,
+ sum(pt.standard_price * m.product_qty * u.factor)::decimal(16,2) as value
+ from
+ stock_move m
+ left join stock_picking p on (m.picking_id=p.id)
+ left join product_product pp on (m.product_id=pp.id)
+ left join product_template pt on (pp.product_tmpl_id=pt.id)
+ left join product_uom u on (m.product_uom=u.id)
+ left join stock_location l on (m.location_dest_id=l.id)
+ group by
+ m.id, m.product_id, m.address_id, m.location_id, m.location_dest_id,
+ m.prodlot_id, m.date_planned, m.state, l.usage, m.company_id
+ )
+);
+ """)
+report_stock_inventory()
+
+
+
diff --git a/addons/stock/report/report_stock_move_view.xml b/addons/stock/report/report_stock_move_view.xml
index 458fc250091..5adc3407b0f 100755
--- a/addons/stock/report/report_stock_move_view.xml
+++ b/addons/stock/report/report_stock_move_view.xml
@@ -1,25 +1,35 @@
+
+
+
report.stock.move.tree
report.stock.move
tree
-
-
-
+
+
-
+
+
+
+
-
-
+
+
-
+
+
+
@@ -29,9 +39,9 @@
report.stock.move
graph
-
+
-
+
@@ -41,50 +51,50 @@
report.stock.move
search
-
+
-
-
-
-
-
+ name="done"
+ icon="terp-dialog-close"
+ domain="[('state','=','done')]"
+ help = "Completed Stock-Moves"/>
+
-
-
+
+
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
@@ -92,9 +102,9 @@
-
-
-
+
+
+
@@ -102,20 +112,110 @@
- Stock Moves
+ Moves Analysis
report.stock.move
form
tree,graph
-
- {'search_default_product':1, 'search_default_src_location':1,'search_default_done':1,'group_by':[], 'group_by_no_leaf':1}
+
+ {'contact_display': 'partner', 'search_default_month':1, 'search_default_group_product':1,'search_default_done':1,'group_by':[], 'group_by_no_leaf':1}
+
+
+
+
+
+
+ report.stock.inventory.tree
+ report.stock.inventory
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+ report.stock.inventory.graph
+ report.stock.inventory
+ graph
+
+
+
+
+
+
+
+
+
+ report.stock.inventory.search
+ report.stock.inventory
+ search
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Inventory Analysis
+ report.stock.inventory
+ form
+ tree,graph
+
+ {'contact_display': 'partner', 'search_default_real':1, 'search_default_location_type_internal':1,'search_default_group_product':1,'search_default_group_location':1,'group_by':[], 'group_by_no_leaf':1}
+
+
-
diff --git a/addons/stock/report/report_stock_picking.py b/addons/stock/report/report_stock_picking.py
deleted file mode 100644
index b6e2a3d3373..00000000000
--- a/addons/stock/report/report_stock_picking.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2010 Tiny SPRL ().
-#
-# 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 .
-#
-##############################################################################
-from osv import fields,osv
-import tools
-
-class report_stock_picking(osv.osv):
- _name = "report.stock.picking"
- _description = "Stock Picking Report"
- _auto = False
- _columns = {
- 'year': fields.char('Year',size=64,required=False, readonly=True),
- 'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
- ('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
- 'day': fields.char('Day', size=128, readonly=True),
- 'nbr': fields.integer('# of Lines', readonly=True),
- 'nbp': fields.integer('# of Picking', readonly=True),
- 'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
- 'product_qty': fields.float('# of Products', readonly=True),
- 'product_uos_qty': fields.float('# of Products', readonly=True),
- 'product_id': fields.many2one('product.product', 'Product', readonly=True),
- 'date': fields.date('Date', readonly=True),
- 'avg_days_to_deliver': fields.float('Avg Days to Deliver', digits=(16,2), readonly=True, group_operator="avg",
- help="Number of Avg Days to deliver"),
- 'state': fields.selection([('draft', 'Draft'),('auto', 'Waiting'),('confirmed', 'Confirmed'),('assigned', 'Available'),('done', 'Done'),('cancel', 'Cancelled')], 'State'),
- 'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal'), ('delivery', 'Delivery')], 'Shipping Type', required=True),
- 'company_id': fields.many2one('res.company', 'Company', readonly=True),
- 'invoice_state': fields.selection([
- ("invoiced", "Invoiced"),
- ("2binvoiced", "To Be Invoiced"),
- ("none", "Not from Picking")], "Invoice Status",readonly=True),
- 'min_date': fields.date('Expected Date',help="Expected date for Picking. Default it takes current date"),
- 'order_date': fields.date('Order Date', help="Date of Order"),
- 'date_done': fields.date('Date Done', help="Date of completion"),
- 'location_id': fields.many2one('stock.location', 'Source Location', help="Sets a location if you produce at a fixed location. This can be a partner location if you subcontract the manufacturing operations."),
- 'location_dest_id': fields.many2one('stock.location', 'Dest. Location', help="Location where the system will stock the finished products."),
- 'max_date': fields.date('Max.Expected Date'),
- 'product_uos': fields.many2one('product.uom', 'Product UOS'),
- 'product_uom': fields.many2one('product.uom', 'Product UOM'),
- }
- def init(self, cr):
- tools.drop_view_if_exists(cr, 'report_stock_picking')
- cr.execute("""
- create or replace view report_stock_picking as (
- select
- min(sm.id) as id,
- date_trunc('day',sp.min_date) as min_date,
- date_trunc('day',sp.date) as order_date,
- date_trunc('day',sp.date_done) as date_done,
- date_trunc('day',sp.max_date) as max_date,
- to_char(sp.create_date, 'YYYY') as year,
- to_char(sp.create_date, 'MM') as month,
- to_char(sp.create_date, 'YYYY-MM-DD') as day,
- sp.address_id as partner_id,
- to_date(to_char(sp.create_date, 'MM-dd-YYYY'),'MM-dd-YYYY') as date,
- count(sm.id) as nbr,
- count(distinct sp.id) as nbp,
- sum(sm.product_qty) as product_qty,
- sum(sm.product_uos_qty) as product_uos_qty,
- sm.product_id as product_id,
- sm.location_dest_id as location_dest_id,
- sm.location_id as location_id,
- sp.type,
- sm.product_uos,
- sm.product_uom,
- sp.invoice_state,
- sp.company_id as company_id,
- avg(extract('epoch' from (sp.date_done-sp.create_date)))/(3600*24) as avg_days_to_deliver,
- sp.state
- from stock_move as sm
- left join stock_picking as sp ON (sm.picking_id=sp.id)
- group by sp.type,
- sp.create_date,
- sp.address_id,
- sm.product_id,
- to_char(sp.create_date, 'YYYY'),
- sm.location_dest_id,
- sm.location_id,
- to_char(sp.create_date, 'MM'),
- to_char(sp.create_date, 'YYYY-MM-DD'),
- sm.product_uos,
- sm.product_uom,
- date_trunc('day',sp.min_date),
- date_trunc('day',sp.date),
- date_trunc('day',sp.date_done),
- date_trunc('day',sp.max_date),
- sp.invoice_state,
- sp.company_id,
- sp.state
-
- )""")
-report_stock_picking()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/report/report_stock_picking_view.xml b/addons/stock/report/report_stock_picking_view.xml
deleted file mode 100644
index a14298ff771..00000000000
--- a/addons/stock/report/report_stock_picking_view.xml
+++ /dev/null
@@ -1,136 +0,0 @@
-
-
-
-
-
-
- report.stock.picking.tree
- report.stock.picking
- tree
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- report.stock.picking.graph
- report.stock.picking
- graph
-
-
-
-
-
-
-
-
-
-
-
- report.stock.picking.select
- report.stock.picking
- search
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Picking
- report.stock.picking
- form
- tree,graph
-
-
- {'search_default_Partner':1,'search_default_month':1,'group_by_no_leaf':1,'group_by':[]}
-
-
-
-
- tree
-
-
-
-
-
-
- graph
-
-
-
-
-
-
-
-
-
diff --git a/addons/stock/report/report_stock_view.xml b/addons/stock/report/report_stock_view.xml
index 34121d0c9ed..5732513e07a 100644
--- a/addons/stock/report/report_stock_view.xml
+++ b/addons/stock/report/report_stock_view.xml
@@ -2,104 +2,6 @@
-
- stock.report.prodlots.filter
- stock.report.prodlots
- search
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- stock.report.prodlots.view
- stock.report.prodlots
- form
-
-
-
-
-
-
-
-
-
-
-
- stock.report.prodlots.view
- stock.report.prodlots
- tree
-
-
-
-
-
-
-
-
-
-
-
- stock.report.prodlots.view
- stock.report.prodlots
- graph
-
-
-
-
-
-
-
-
-
-
- Inventory by Location
- ir.actions.act_window
- stock.report.prodlots
- form
- tree,form
- {'full':'1','search_default_internal_locations':1}
-
-
-
- stock.report.tracklots.view
- stock.report.tracklots
- tree
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/stock/security/ir.model.access.csv b/addons/stock/security/ir.model.access.csv
index ca36c8460a7..4358e8ec9ab 100644
--- a/addons/stock/security/ir.model.access.csv
+++ b/addons/stock/security/ir.model.access.csv
@@ -1,5 +1,6 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_stock_incoterms_all","stock.incoterms all","model_stock_incoterms",,1,0,0,0
+"access_stock_incoterms_manager","stock.incoterms manager","model_stock_incoterms",stock.group_stock_manager,1,1,1,1
"access_stock_warehouse_manager","stock.warehouse.manager","model_stock_warehouse","stock.group_stock_manager",1,1,1,1
"access_stock_warehouse_user","stock.warehouse.user","model_stock_warehouse","base.group_user",1,0,0,0
"access_stock_location_manager","stock.location.manager","model_stock_location","stock.group_stock_manager",1,1,1,1
@@ -14,35 +15,27 @@
"access_stock_inventory_line","stock.inventory.line","model_stock_inventory_line","stock.group_stock_user",1,1,1,1
"access_stock_report_prodlots","stock.report.prodlots","model_stock_report_prodlots","stock.group_stock_manager",1,0,0,0
"access_stock_location_product_manager","stock.location product manager","model_stock_location","product.group_product_manager",1,0,0,0
-"access_stock_lines_date","report.stock.lines.date all","model_report_stock_lines_date",,1,0,0,0
+"access_stock_lines_date","report.stock.lines.date all","model_report_stock_lines_date",stock.group_stock_user,1,0,0,0
"access_stock_report_tracklots","stock.report.tracklots","model_stock_report_tracklots","stock.group_stock_user",1,1,1,1
-"access_report_products_to_received_planned","report.products.to.received.planned","model_report_products_to_received_planned","stock.group_stock_user",1,0,0,0
-"access_report_delivery_products_planned","report.delivery.products.planned","model_report_delivery_products_planned","stock.group_stock_user",1,0,0,0
-"access_stock_move_track","stock.move.track","model_stock_move_track","stock.group_stock_user",1,0,0,0
-"access_stock_move_consume","stock.move.consume","model_stock_move_consume","stock.group_stock_user",1,0,0,0
-"access_stock_move_scrap","stock.move.scrap","model_stock_move_scrap","stock.group_stock_user",1,0,0,0
-"access_stock_move_split","stock.move.split","model_stock_move_split","stock.group_stock_user",1,0,0,0
-"access_stock_move_split_lines","stock.move.split.lines","model_stock_move_split_lines","stock.group_stock_user",1,0,0,0
-"access_report_products_to_received_planned","report.products.to.received.planned","model_report_products_to_received_planned","stock.group_stock_user",1,0,0,0
-"access_report_delivery_products_planned","report.delivery.products.planned","model_report_delivery_products_planned","stock.group_stock_user",1,0,0,0
-"access_stock_move_track","stock.move.track","model_stock_move_track","stock.group_stock_user",1,0,0,0
-"access_stock_move_consume","stock.move.consume","model_stock_move_consume","stock.group_stock_user",1,0,0,0
-"access_stock_move_scrap","stock.move.scrap","model_stock_move_scrap","stock.group_stock_user",1,0,0,0
-"access_stock_move_split","stock.move.split","model_stock_move_split","stock.group_stock_user",1,0,0,0
-"access_stock_move_split_lines","stock.move.split.lines","model_stock_move_split_lines","stock.group_stock_user",1,0,0,0
-"access_stock_inventory_set_stock_zero","stock.inventory.set.stock.zero","model_stock_inventory_set_stock_zero","stock.group_stock_user",1,0,0,0
-"access_stock_fill_inventory","stock.fill.inventory","model_stock_fill_inventory","stock.group_stock_user",1,0,0,0
-"access_stock_inventory_line_split","stock.inventory.line.split","model_stock_inventory_line_split","stock.group_stock_user",1,0,0,0
-"access_stock_invoice_onshipping","stock.invoice.onshipping","model_stock_invoice_onshipping","stock.group_stock_user",1,0,0,0
+"access_report_products_to_received_planned","report.products.to.received.planned","model_report_products_to_received_planned","stock.group_stock_user",1,1,1,1
+"access_report_delivery_products_planned","report.delivery.products.planned","model_report_delivery_products_planned","stock.group_stock_user",1,1,1,1
+"access_stock_move_track","stock.move.track","model_stock_move_track","stock.group_stock_user",1,1,1,1
+"access_stock_move_consume","stock.move.consume","model_stock_move_consume","stock.group_stock_user",1,1,1,1
+"access_stock_move_scrap","stock.move.scrap","model_stock_move_scrap","stock.group_stock_user",1,1,1,1
+"access_stock_move_split","stock.move.split","model_stock_move_split","stock.group_stock_user",1,1,1,1
+"access_stock_move_split_lines","stock.move.split.lines","model_stock_move_split_lines","stock.group_stock_user",1,1,1,1
+"access_stock_inventory_set_stock_zero","stock.inventory.set.stock.zero","model_stock_inventory_set_stock_zero","stock.group_stock_user",1,1,1,1
+"access_stock_fill_inventory","stock.fill.inventory","model_stock_fill_inventory","stock.group_stock_user",1,1,1,1
+"access_stock_inventory_line_split","stock.inventory.line.split","model_stock_inventory_line_split","stock.group_stock_user",1,1,1,1
+"access_stock_invoice_onshipping","stock.invoice.onshipping","model_stock_invoice_onshipping","stock.group_stock_user",1,1,1,1
"access_stock_location_product","stock.location.product","model_stock_location_product","stock.group_stock_user",1,0,0,0
"access_report_stock_picking","report.stock.picking","model_report_stock_picking","stock.group_stock_user",1,0,0,0
-"access_stock_delivery","stock.delivery","model_stock_delivery","stock.group_stock_user",1,0,0,0
"access_stock_traceability_upstream","stock.traceability.upstream","model_stock_traceability_upstream","stock.group_stock_user",1,0,0,0
"access_stock_traceability_downstream","stock.traceability.downstream","model_stock_traceability_downstream","stock.group_stock_user",1,0,0,0
"access_stock_traceability_lot_upstream","stock.traceability.lot.upstream","model_stock_traceability_lot_upstream","stock.group_stock_user",1,0,0,0
"access_stock_traceability_lot_downstream","stock.traceability.lot.downstream","model_stock_traceability_lot_downstream","stock.group_stock_user",1,0,0,0
-"access_stock_partial_picking",stock.partial.picking","model_stock_partial_picking","stock.group_stock_user",1,0,0,0
-"access_stock_partial_move","stock.partial.move","model_stock_partial_move","stock.group_stock_user",1,0,0,0
+"access_stock_partial_picking",stock.partial.picking","model_stock_partial_picking",,1,1,1,1
+"access_stock_partial_move","stock.partial.move","model_stock_partial_move",,1,1,1,1
"access_stock_inventory_merge","stock.inventory.merge","model_stock_inventory_merge","stock.group_stock_user",1,0,0,0
"access_stock_change_standard_price","stock.change.standard.price","model_stock_change_standard_price","stock.group_stock_user",1,0,0,0
"access_action_traceability","action.traceability","model_action_traceability","stock.group_stock_user",1,0,0,0
diff --git a/addons/stock/security/stock_security.xml b/addons/stock/security/stock_security.xml
index 4dad60a3c97..099e32a889b 100644
--- a/addons/stock/security/stock_security.xml
+++ b/addons/stock/security/stock_security.xml
@@ -3,10 +3,10 @@
- Stock / Manager
+ Inventory / Manager
- Stock / Worker
+ Inventory / Worker
@@ -716,7 +713,7 @@
-
+
@@ -822,9 +819,6 @@
-
-
-
@@ -907,7 +901,7 @@
calendar
-
+
#
# Sending Products
@@ -921,10 +915,10 @@
-
+
@@ -1005,9 +999,6 @@
-
-
-
@@ -1044,14 +1035,15 @@
-
-
+
+
+
+
-
-
-
+
+
@@ -1184,10 +1176,7 @@
-
-
-
-
+
@@ -1307,7 +1296,7 @@
{'contact_display': 'partner',"search_default_confirmed":1}
-
+
stock.move.tree
@@ -1320,7 +1309,15 @@
+
+
@@ -1347,7 +1344,8 @@
-
+
+
@@ -1377,9 +1375,6 @@
-
-
-
@@ -1454,15 +1449,21 @@
-
-
+
+
+
+
-
-
@@ -1482,7 +1483,8 @@
-
+
+
@@ -1513,9 +1515,6 @@
-
@@ -1529,37 +1528,38 @@
-
-
-
+
+
+
+
+
+
-
+
-
-
-
-
+
+
+
-
-
+
- Incoming Packings
+ Incoming Products
stock.move
ir.actions.act_window
form
tree,form
- [('picking_id','!=',False),('picking_id.type','=','in')]
+ [('picking_id.type','=','in')]
{"search_default_receive":1}
@@ -1738,7 +1738,7 @@
- Outcoming Shipments
+ Customers Packings
stock.picking
ir.actions.act_window
form
@@ -1766,7 +1766,7 @@
- Outcoming Packings
+ Outgoing Products
stock.move
ir.actions.act_window
form
diff --git a/addons/stock/wizard/stock_move.py b/addons/stock/wizard/stock_move.py
index bce550e74ff..0e670ee3e5d 100644
--- a/addons/stock/wizard/stock_move.py
+++ b/addons/stock/wizard/stock_move.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
-#
+#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL ().
#
@@ -15,7 +15,7 @@
# 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 .
+# along with this program. If not, see .
#
##############################################################################
@@ -25,25 +25,25 @@ from tools.translate import _
class stock_move_track(osv.osv_memory):
_name = "stock.move.track"
_description = "Track moves"
-
+
_columns = {
- 'tracking_prefix': fields.char('Tracking prefix', size=64),
+ 'tracking_prefix': fields.char('Tracking prefix', size=64),
'quantity': fields.float("Quantity per lot")
}
_defaults = {
'quantity': lambda *x: 1
}
-
+
def track_lines(self, cr, uid, ids, context={}):
""" To track stock moves lines
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param ids: An ID or list of IDs if we want more than one
- @param context: A standard dictionary
- @return:
- """
+ @param ids: An ID or list of IDs if we want more than one
+ @param context: A standard dictionary
+ @return:
+ """
datas = self.read(cr, uid, ids)[0]
move_obj = self.pool.get('stock.move')
move_obj._track_lines(cr, uid, context['active_id'], datas, context=context)
@@ -54,11 +54,11 @@ stock_move_track()
class stock_move_consume(osv.osv_memory):
_name = "stock.move.consume"
_description = "Consume Products"
-
+
_columns = {
- 'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
- 'product_qty': fields.float('Quantity', required=True),
- 'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
+ 'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
+ 'product_qty': fields.float('Quantity', required=True),
+ 'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
'location_id': fields.many2one('stock.location', 'Location', required=True)
}
@@ -67,37 +67,37 @@ class stock_move_consume(osv.osv_memory):
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param fields: List of fields for default value
- @param context: A standard dictionary
+ @param fields: List of fields for default value
+ @param context: A standard dictionary
@return: default values of fields
"""
- res = super(stock_move_consume, self).default_get(cr, uid, fields, context=context)
+ res = super(stock_move_consume, self).default_get(cr, uid, fields, context=context)
move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context)
if 'product_id' in fields:
- res.update({'product_id': move.product_id.id})
+ res.update({'product_id': move.product_id.id})
if 'product_uom' in fields:
- res.update({'product_uom': move.product_uom.id})
+ res.update({'product_uom': move.product_uom.id})
if 'product_qty' in fields:
res.update({'product_qty': move.product_qty})
if 'location_id' in fields:
res.update({'location_id': move.location_id.id})
-
- return res
-
+
+ return res
+
def do_move_consume(self, cr, uid, ids, context={}):
""" To move consumed products
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param ids: the ID or list of IDs if we want more than one
- @param context: A standard dictionary
- @return:
- """
+ @param ids: the ID or list of IDs if we want more than one
+ @param context: A standard dictionary
+ @return:
+ """
move_obj = self.pool.get('stock.move')
move_ids = context['active_ids']
- for data in self.read(cr, uid, ids):
- move_obj.action_consume(cr, uid, move_ids,
- data['product_qty'], data['location_id'],
+ for data in self.read(cr, uid, ids):
+ move_obj.action_consume(cr, uid, move_ids,
+ data['product_qty'], data['location_id'],
context=context)
return {}
@@ -108,7 +108,7 @@ class stock_move_scrap(osv.osv_memory):
_name = "stock.move.scrap"
_description = "Scrap Products"
_inherit = "stock.move.consume"
-
+
_defaults = {
'location_id': lambda *x: False
}
@@ -118,19 +118,19 @@ class stock_move_scrap(osv.osv_memory):
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param fields: List of fields for default value
- @param context: A standard dictionary
+ @param fields: List of fields for default value
+ @param context: A standard dictionary
@return: default values of fields
"""
- res = super(stock_move_consume, self).default_get(cr, uid, fields, context=context)
+ res = super(stock_move_consume, self).default_get(cr, uid, fields, context=context)
move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context)
location_obj = self.pool.get('stock.location')
scrpaed_location_ids = location_obj.search(cr, uid, [('scrap_location','=',True)])
-
+
if 'product_id' in fields:
- res.update({'product_id': move.product_id.id})
+ res.update({'product_id': move.product_id.id})
if 'product_uom' in fields:
- res.update({'product_uom': move.product_uom.id})
+ res.update({'product_uom': move.product_uom.id})
if 'product_qty' in fields:
res.update({'product_qty': move.product_qty})
if 'location_id' in fields:
@@ -138,23 +138,23 @@ class stock_move_scrap(osv.osv_memory):
res.update({'location_id': scrpaed_location_ids[0]})
else:
res.update({'location_id': False})
-
+
return res
-
+
def move_scrap(self, cr, uid, ids, context={}):
""" To move scraped products
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param ids: the ID or list of IDs if we want more than one
- @param context: A standard dictionary
- @return:
- """
- move_obj = self.pool.get('stock.move')
+ @param ids: the ID or list of IDs if we want more than one
+ @param context: A standard dictionary
+ @return:
+ """
+ move_obj = self.pool.get('stock.move')
move_ids = context['active_ids']
for data in self.read(cr, uid, ids):
- move_obj.action_scrap(cr, uid, move_ids,
- data['product_qty'], data['location_id'],
+ move_obj.action_scrap(cr, uid, move_ids,
+ data['product_qty'], data['location_id'],
context=context)
return {}
@@ -164,42 +164,42 @@ stock_move_scrap()
class split_in_production_lot(osv.osv_memory):
_name = "stock.move.split"
_description = "Split in Production lots"
-
+
def default_get(self, cr, uid, fields, context=None):
""" Get default values
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param fields: List of fields for default value
- @param context: A standard dictionary
+ @param fields: List of fields for default value
+ @param context: A standard dictionary
@return: Default values of fields
"""
-
- res = super(split_in_production_lot, self).default_get(cr, uid, fields, context=context)
- move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context)
+
+ res = super(split_in_production_lot, self).default_get(cr, uid, fields, context=context)
+ move = self.pool.get('stock.move').browse(cr, uid, context['active_id'], context=context)
if 'product_id' in fields:
- res.update({'product_id': move.product_id.id})
+ res.update({'product_id': move.product_id.id})
if 'qty' in fields:
- res.update({'qty': move.product_qty})
+ res.update({'qty': move.product_qty})
return res
-
+
_columns = {
- 'qty': fields.integer('Quantity'),
+ 'qty': fields.integer('Quantity'),
'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
'line_ids': fields.one2many('stock.move.split.lines', 'lot_id', 'Lots Number'),
'line_exist_ids': fields.one2many('stock.move.split.lines.exist', 'lot_id', 'Lots Existing Numbers'),
'use_exist' : fields.boolean('Use Exist'),
}
-
+
def split_lot(self, cr, uid, ids, context=None):
""" To split a lot
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param ids: An ID or list of IDs if we want more than one
- @param context: A standard dictionary
- @return:
- """
+ @param ids: An ID or list of IDs if we want more than one
+ @param context: A standard dictionary
+ @return:
+ """
self.split(cr, uid, ids, context.get('active_ids'), context=context)
return {}
@@ -208,21 +208,21 @@ class split_in_production_lot(osv.osv_memory):
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param ids: the ID or list of IDs if we want more than one
+ @param ids: the ID or list of IDs if we want more than one
@param move_ids: the ID or list of IDs of stock move we want to split
- @param context: A standard dictionary
- @return:
- """
+ @param context: A standard dictionary
+ @return:
+ """
prodlot_obj = self.pool.get('stock.production.lot')
ir_sequence_obj = self.pool.get('ir.sequence')
move_obj = self.pool.get('stock.move')
- new_move = []
+ new_move = []
for data in self.browse(cr, uid, ids):
for move in move_obj.browse(cr, uid, move_ids):
move_qty = move.product_qty
quantity_rest = move.product_qty
uos_qty_rest = move.product_uos_qty
- new_move = []
+ new_move = []
if data.use_exist:
lines = [l for l in data.line_exist_ids if l]
else:
@@ -238,12 +238,17 @@ class split_in_production_lot(osv.osv_memory):
quantity_rest = quantity
break
default_val = {
- 'product_qty': quantity,
- 'product_uos_qty': uos_qty,
- 'state': move.state
+ 'product_qty': quantity,
+ 'product_uos_qty': uos_qty,
+ 'state': 'draft'
}
if quantity_rest > 0:
current_move = move_obj.copy(cr, uid, move.id, default_val)
+ move_obj.action_confirm(cr, uid, [current_move])
+ if move.state=='assigned':
+ move_obj.force_assign(cr, uid, [current_move])
+ elif move.state<>'confirmed':
+ move_obj.write(cr, uid, [current_move], {'state': move.state})
new_move.append(current_move)
if quantity_rest == 0:
current_move = move.id
@@ -255,19 +260,19 @@ class split_in_production_lot(osv.osv_memory):
if not prodlot_id:
# sequence = ir_sequence_obj.get(cr, uid, 'stock.lot.serial')
prodlot_id = prodlot_obj.create(cr, uid, {'name': line.name},
- # 'prefix' : line.name},
- {'product_id': move.product_id.id})
+ # 'prefix' : line.name},
+ {'product_id': move.product_id.id})
move_obj.write(cr, uid, [current_move], {'prodlot_id': prodlot_id})
- prodlot = prodlot_obj.browse(cr, uid, prodlot_id)
+ prodlot = prodlot_obj.browse(cr, uid, prodlot_id)
# ref = '%d' % (move.id)
# if prodlot.ref:
- # ref = '%s, %s' % (prodlot.ref, ref)
+ # ref = '%s, %s' % (prodlot.ref, ref)
# prodlot_obj.write(cr, uid, [prodlot_id], {'ref': ref})
-
+
update_val = {}
- if quantity_rest > 0:
+ if quantity_rest > 0:
update_val['product_qty'] = quantity_rest
- update_val['product_uos_qty'] = uos_qty_rest
+ update_val['product_uos_qty'] = uos_qty_rest
move_obj.write(cr, uid, [move.id], update_val)
return new_move
split_in_production_lot()
@@ -276,8 +281,8 @@ class stock_move_split_lines_exist(osv.osv_memory):
_name = "stock.move.split.lines.exist"
_description = "Exist Split lines"
_columns = {
- 'name': fields.char('Tracking serial', size=64),
- 'quantity': fields.integer('Quantity'),
+ 'name': fields.char('Tracking serial', size=64),
+ 'quantity': fields.integer('Quantity'),
'lot_id': fields.many2one('stock.move.split', 'Lot'),
'prodlot_id': fields.many2one('stock.production.lot', 'Production Lot'),
}
@@ -291,16 +296,14 @@ class stock_move_split_lines(osv.osv_memory):
_name = "stock.move.split.lines"
_description = "Split lines"
_columns = {
- 'name': fields.char('Tracking serial', size=64),
- 'quantity': fields.integer('Quantity'),
+ 'name': fields.char('Tracking serial', size=64),
+ 'quantity': fields.integer('Quantity'),
'use_exist' : fields.boolean('Use Exist'),
'lot_id': fields.many2one('stock.move.split', 'Lot'),
'action': fields.selection([('split','Split'),('keepinone','Keep in one lot')],'Action'),
}
-
_defaults = {
'quantity': lambda *x: 1,
- 'action' : lambda *x: 'split',
+ 'action' : lambda *x: 'split',
}
-
stock_move_split_lines()
diff --git a/addons/stock/wizard/stock_partial_move.py b/addons/stock/wizard/stock_partial_move.py
index 0f538748a98..b8efdc4ed77 100644
--- a/addons/stock/wizard/stock_partial_move.py
+++ b/addons/stock/wizard/stock_partial_move.py
@@ -27,21 +27,19 @@ import pooler
import time
class stock_partial_move(osv.osv_memory):
- _name = "stock.partial.move"
- _description = "Partial Move"
+ _name = "stock.partial.move"
+ _description = "Partial Move"
_columns = {
'date': fields.datetime('Date', required=True),
- 'partner_id': fields.many2one('res.partner',string="Partner", required=True),
- 'address_id': fields.many2one('res.partner.address', 'Delivery Address', help="Address where goods are to be delivered", required=True),
}
def view_init(self, cr, uid, fields_list, context=None):
res = super(stock_partial_move, self).view_init(cr, uid, fields_list, context=context)
- move_obj = self.pool.get('stock.move')
+ move_obj = self.pool.get('stock.move')
if not context:
context={}
moveids = []
- for m in move_obj.browse(cr, uid, context.get('active_ids', [])):
+ for m in move_obj.browse(cr, uid, context.get('active_ids', [])):
if m.state in ('done', 'cancel'):
continue
if 'move%s_product_id'%(m.id) not in self._columns:
@@ -56,55 +54,53 @@ class stock_partial_move(osv.osv_memory):
self._columns['move%s_product_price'%(m.id)] = fields.float("Price")
if 'move%s_product_currency'%(m.id) not in self._columns:
self._columns['move%s_product_currency'%(m.id)] = fields.many2one('res.currency',string="Currency")
- return res
+ return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False,submenu=False):
- result = super(stock_partial_move, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu)
+ result = super(stock_partial_move, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu)
move_obj = self.pool.get('stock.move')
- move_ids = context.get('active_ids', False)
+ move_ids = context.get('active_ids', False)
move_ids = move_obj.search(cr, uid, [('id','in',move_ids)])
_moves_arch_lst = """
-
-
"""
_moves_fields = result['fields']
- if move_ids and view_type in ['form']:
- for m in move_obj.browse(cr, uid, move_ids, context):
+ if move_ids and view_type in ['form']:
+ for m in move_obj.browse(cr, uid, move_ids, context):
if m.state in ('done', 'cancel'):
continue
_moves_fields.update({
'move%s_product_id'%(m.id) : {
'string': _('Product'),
- 'type' : 'many2one',
- 'relation': 'product.product',
- 'required' : True,
- 'readonly' : True,
+ 'type' : 'many2one',
+ 'relation': 'product.product',
+ 'required' : True,
+ 'readonly' : True,
},
'move%s_product_qty'%(m.id) : {
'string': _('Quantity'),
'type' : 'float',
- 'required': True,
+ 'required': True,
},
'move%s_product_uom'%(m.id) : {
'string': _('Product UOM'),
- 'type' : 'many2one',
- 'relation': 'product.uom',
- 'required' : True,
- 'readonly' : True,
+ 'type' : 'many2one',
+ 'relation': 'product.uom',
+ 'required' : True,
+ 'readonly' : True,
}
- })
-
+ })
+
_moves_arch_lst += """
"""%(m.id, m.id, m.id)
- if (m.picking_id.type == 'in') and (m.product_id.cost_method == 'average'):
+ if (m.picking_id.type == 'in') and (m.product_id.cost_method == 'average'):
_moves_fields.update({
'move%s_product_price'%(m.id) : {
'string': _('Price'),
@@ -112,9 +108,9 @@ class stock_partial_move(osv.osv_memory):
},
'move%s_product_currency'%(m.id): {
'string': _('Currency'),
- 'type' : 'float',
- 'type' : 'many2one',
- 'relation': 'res.currency',
+ 'type' : 'float',
+ 'type' : 'many2one',
+ 'relation': 'res.currency',
}
})
_moves_arch_lst += """
@@ -135,7 +131,7 @@ class stock_partial_move(osv.osv_memory):
"""
result['arch'] = _moves_arch_lst
- result['fields'] = _moves_fields
+ result['fields'] = _moves_fields
return result
def default_get(self, cr, uid, fields, context=None):
@@ -143,13 +139,13 @@ class stock_partial_move(osv.osv_memory):
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param fields: List of fields for which we want default values
- @param context: A standard dictionary
- @return: A dictionary which of fields with values.
- """
+ @param fields: List of fields for which we want default values
+ @param context: A standard dictionary
+ @return: A dictionary which of fields with values.
+ """
res = super(stock_partial_move, self).default_get(cr, uid, fields, context=context)
- move_obj = self.pool.get('stock.move')
+ move_obj = self.pool.get('stock.move')
if not context:
context={}
moveids = []
@@ -157,17 +153,9 @@ class stock_partial_move(osv.osv_memory):
res.update({'date': time.strftime('%Y-%m-%d %H:%M:%S')})
move_ids = context.get('active_ids', [])
move_ids = move_obj.search(cr, uid, [('id','in',move_ids)])
- for m in move_obj.browse(cr, uid, context.get('active_ids', [])):
+ for m in move_obj.browse(cr, uid, context.get('active_ids', [])):
if m.state in ('done', 'cancel'):
continue
- address_ids = list(set([(pick.address_id and pick.address_id.id, pick.address_id and pick.address_id.partner_id and pick.address_id.partner_id.id) for pick in move_obj.browse(cr, uid, move_ids)]))
- if len(address_ids) == 1:
- address_id = address_ids[0][0]
- partner_id = address_ids[0][1]
- res['address_id'] = address_ids[0][0]
- res['partner_id'] = address_ids[0][1]
- else:
- address_id = partner_id = False
if 'move%s_product_id'%(m.id) in fields:
res['move%s_product_id'%(m.id)] = m.product_id.id
if 'move%s_product_qty'%(m.id) in fields:
@@ -183,7 +171,7 @@ class stock_partial_move(osv.osv_memory):
currency = False
if hasattr(m.picking_id, 'sale_id') and m.picking_id.sale_id:
currency = m.picking_id.sale_id.pricelist_id.currency_id.id
-
+
if 'move%s_product_price'%(m.id) in fields:
res['move%s_product_price'%(m.id)] = price
if 'move%s_product_currency'%(m.id) in fields:
@@ -197,38 +185,37 @@ class stock_partial_move(osv.osv_memory):
currency = False
if hasattr(m.picking_id, 'purchase_id') and m.picking_id.purchase_id:
currency = m.picking_id.purchase_id.pricelist_id.currency_id.id
-
+
if 'move%s_product_price'%(m.id) in fields:
res['move%s_product_price'%(m.id)] = price
if 'move%s_product_currency'%(m.id) in fields:
res['move%s_product_currency'%(m.id)] = currency
- return res
+ print res
+ return res
def do_partial(self, cr, uid, ids, context):
""" Makes partial moves and pickings done.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param fields: List of fields for which we want default values
- @param context: A standard dictionary
- @return: A dictionary which of fields with values.
- """
-
+ @param fields: List of fields for which we want default values
+ @param context: A standard dictionary
+ @return: A dictionary which of fields with values.
+ """
+
rec_id = context and context.get('active_id', False)
tracking_lot = context.get('tracking_lot', False)
if tracking_lot:
tracking = self.pool.get('stock.tracking')
- tracking_lot = tracking.get_create_tracking_lot(cr, uid,[rec_id], tracking_lot)
- context ['tracking_lot'] = tracking_lot
- move_obj = self.pool.get('stock.move')
+ tracking_lot = tracking.get_create_tracking_lot(cr, uid,[rec_id], tracking_lot)
+ context ['tracking_lot'] = tracking_lot
+ move_obj = self.pool.get('stock.move')
move_ids = context.get('active_ids', False)
partial = self.browse(cr, uid, ids[0], context)
partial_datas = {
- 'partner_id' : partial.partner_id and partial.partner_id.id or False,
- 'address_id' : partial.address_id and partial.address_id.id or False,
- 'delivery_date' : partial.date
+ 'delivery_date' : partial.date
}
- for m in move_obj.browse(cr, uid, move_ids):
+ for m in move_obj.browse(cr, uid, move_ids):
if m.state in ('done', 'cancel'):
continue
partial_datas['move%s'%(m.id)] = {
@@ -237,15 +224,15 @@ class stock_partial_move(osv.osv_memory):
'product_uom' : getattr(partial, 'move%s_product_uom'%(m.id)).id
}
- if (m.picking_id.type == 'in') and (m.product_id.cost_method == 'average'):
- partial_datas['move%s'%(m.id)].update({
+ if (m.picking_id.type == 'in') and (m.product_id.cost_method == 'average'):
+ partial_datas['move%s'%(m.id)].update({
'product_price' : getattr(partial, 'move%s_product_price'%(m.id)),
'product_currency': getattr(partial, 'move%s_product_currency'%(m.id)).id
- })
+ })
res = move_obj.do_partial(cr, uid, move_ids, partial_datas, context=context)
return {}
-
-stock_partial_move()
+
+stock_partial_move()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/stock/wizard/stock_partial_move_view.xml b/addons/stock/wizard/stock_partial_move_view.xml
index 30b7f3fca0e..a7b4271a5b2 100644
--- a/addons/stock/wizard/stock_partial_move_view.xml
+++ b/addons/stock/wizard/stock_partial_move_view.xml
@@ -1,25 +1,14 @@
-
+
-
- Delivery Product
- stock.partial.move
- form
-
-
-
-
-
-
-
-
+
diff --git a/addons/stock/wizard/stock_partial_picking.py b/addons/stock/wizard/stock_partial_picking.py
index 0feac97010b..595215c2a49 100644
--- a/addons/stock/wizard/stock_partial_picking.py
+++ b/addons/stock/wizard/stock_partial_picking.py
@@ -30,17 +30,15 @@ class stock_partial_picking(osv.osv_memory):
_description = "Partial Picking"
_columns = {
'date': fields.datetime('Date', required=True),
- 'partner_id': fields.many2one('res.partner',string="Partner", required=True),
- 'address_id': fields.many2one('res.partner.address', 'Delivery Address', help="Address where goods are to be delivered", required=True),
}
def view_init(self, cr, uid, fields_list, context=None):
res = super(stock_partial_picking, self).view_init(cr, uid, fields_list, context=context)
- pick_obj = self.pool.get('stock.picking')
+ pick_obj = self.pool.get('stock.picking')
if not context:
context={}
moveids = []
- for pick in pick_obj.browse(cr, uid, context.get('active_ids', [])):
+ for pick in pick_obj.browse(cr, uid, context.get('active_ids', [])):
for m in pick.move_lines:
if m.state in ('done', 'cancel'):
continue
@@ -56,20 +54,18 @@ class stock_partial_picking(osv.osv_memory):
self._columns['move%s_product_price'%(m.id)] = fields.float("Price")
if 'move%s_product_currency'%(m.id) not in self._columns:
self._columns['move%s_product_currency'%(m.id)] = fields.many2one('res.currency',string="Currency")
- return res
+ return res
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False,submenu=False):
- result = super(stock_partial_picking, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu)
+ result = super(stock_partial_picking, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar,submenu)
pick_obj = self.pool.get('stock.picking')
- picking_ids = context.get('active_ids', False)
- _moves_arch_lst = """
-
-
-
-
-
+ picking_ids = context.get('active_ids', False)
+ _moves_arch_lst = """
+
+
+
- """
+ """
_moves_fields = result['fields']
if picking_ids and view_type in ['form']:
for pick in pick_obj.browse(cr, uid, picking_ids, context):
@@ -79,32 +75,32 @@ class stock_partial_picking(osv.osv_memory):
_moves_fields.update({
'move%s_product_id'%(m.id) : {
'string': _('Product'),
- 'type' : 'many2one',
- 'relation': 'product.product',
- 'required' : True,
- 'readonly' : True,
+ 'type' : 'many2one',
+ 'relation': 'product.product',
+ 'required' : True,
+ 'readonly' : True,
},
'move%s_product_qty'%(m.id) : {
'string': _('Quantity'),
'type' : 'float',
- 'required': True,
+ 'required': True,
},
'move%s_product_uom'%(m.id) : {
'string': _('Product UOM'),
- 'type' : 'many2one',
- 'relation': 'product.uom',
- 'required' : True,
- 'readonly' : True,
+ 'type' : 'many2one',
+ 'relation': 'product.uom',
+ 'required' : True,
+ 'readonly' : True,
}
- })
-
+ })
+
_moves_arch_lst += """
"""%(m.id, m.id, m.id)
- if (m.product_id.cost_method == 'average'):
+ if (m.product_id.cost_method == 'average'):
_moves_fields.update({
'move%s_product_price'%(m.id) : {
'string': _('Price'),
@@ -112,9 +108,9 @@ class stock_partial_picking(osv.osv_memory):
},
'move%s_product_currency'%(m.id): {
'string': _('Currency'),
- 'type' : 'float',
- 'type' : 'many2one',
- 'relation': 'res.currency',
+ 'type' : 'float',
+ 'type' : 'many2one',
+ 'relation': 'res.currency',
}
})
_moves_arch_lst += """
@@ -128,14 +124,14 @@ class stock_partial_picking(osv.osv_memory):
-
-
-
+
+
+
"""
result['arch'] = _moves_arch_lst
- result['fields'] = _moves_fields
+ result['fields'] = _moves_fields
return result
def default_get(self, cr, uid, fields, context=None):
@@ -143,23 +139,19 @@ class stock_partial_picking(osv.osv_memory):
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param fields: List of fields for which we want default values
- @param context: A standard dictionary
- @return: A dictionary which of fields with values.
- """
+ @param fields: List of fields for which we want default values
+ @param context: A standard dictionary
+ @return: A dictionary which of fields with values.
+ """
res = super(stock_partial_picking, self).default_get(cr, uid, fields, context=context)
- pick_obj = self.pool.get('stock.picking')
+ pick_obj = self.pool.get('stock.picking')
if not context:
context={}
moveids = []
if 'date' in fields:
res.update({'date': time.strftime('%Y-%m-%d %H:%M:%S')})
for pick in pick_obj.browse(cr, uid, context.get('active_ids', [])):
- if 'partner_id' in fields:
- res.update({'partner_id': pick.address_id.partner_id and pick.address_id.partner_id.id or False })
- if 'address_id' in fields:
- res.update({'address_id': pick.address_id.id})
for m in pick.move_lines:
if m.state in ('done', 'cancel'):
continue
@@ -187,24 +179,22 @@ class stock_partial_picking(osv.osv_memory):
res['move%s_product_price'%(m.id)] = price
if 'move%s_product_currency'%(m.id) in fields:
res['move%s_product_currency'%(m.id)] = currency
- return res
+ return res
- def do_partial(self, cr, uid, ids, context):
+ def do_partial(self, cr, uid, ids, context):
""" Makes partial moves and pickings done.
@param self: The object pointer.
@param cr: A database cursor
@param uid: ID of the user currently logged in
- @param fields: List of fields for which we want default values
- @param context: A standard dictionary
- @return: A dictionary which of fields with values.
- """
- pick_obj = self.pool.get('stock.picking')
+ @param fields: List of fields for which we want default values
+ @param context: A standard dictionary
+ @return: A dictionary which of fields with values.
+ """
+ pick_obj = self.pool.get('stock.picking')
picking_ids = context.get('active_ids', False)
partial = self.browse(cr, uid, ids[0], context)
partial_datas = {
- 'partner_id' : partial.partner_id and partial.partner_id.id or False,
- 'address_id' : partial.address_id and partial.address_id.id or False,
- 'delivery_date' : partial.date
+ 'delivery_date' : partial.date
}
for pick in pick_obj.browse(cr, uid, picking_ids):
for m in pick.move_lines:
@@ -216,26 +206,13 @@ class stock_partial_picking(osv.osv_memory):
'product_uom' : getattr(partial, 'move%s_product_uom'%(m.id)).id
}
- if (m.product_id.cost_method == 'average'):
- partial_datas['move%s'%(m.id)].update({
+ if (m.product_id.cost_method == 'average'):
+ partial_datas['move%s'%(m.id)].update({
'product_price' : getattr(partial, 'move%s_product_price'%(m.id)),
'product_currency': getattr(partial, 'move%s_product_currency'%(m.id)).id
- })
+ })
res = pick_obj.do_partial(cr, uid, picking_ids, partial_datas, context=context)
return {}
-
-stock_partial_picking()
-
-
-#_moves_arch_end = '''
-#
-#
-#
-# '''
-
-#_moves_fields_end = {
-# 'back_order_notification': {'string':'Back Order' ,'type':'text', 'readonly':True}
-# }
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+stock_partial_picking()
diff --git a/addons/stock/wizard/stock_partial_picking_view.xml b/addons/stock/wizard/stock_partial_picking_view.xml
index 2f901b9884d..b399576c83d 100644
--- a/addons/stock/wizard/stock_partial_picking_view.xml
+++ b/addons/stock/wizard/stock_partial_picking_view.xml
@@ -1,13 +1,13 @@
-
-
+
+
Making Picking
- stock.partial.picking
- form
- form
+ stock.partial.picking
+ form
+ form
new
-
+
diff --git a/addons/stock_location/mrp_pull.py b/addons/stock_location/mrp_pull.py
old mode 100755
new mode 100644
diff --git a/addons/stock_location/mrp_pull_workflow.xml b/addons/stock_location/mrp_pull_workflow.xml
old mode 100755
new mode 100644
diff --git a/addons/stock_location/security/ir.model.access.csv b/addons/stock_location/security/ir.model.access.csv
index e87f65004bb..188218b6e26 100644
--- a/addons/stock_location/security/ir.model.access.csv
+++ b/addons/stock_location/security/ir.model.access.csv
@@ -1,4 +1,7 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_product_pulled_flow_user","product_pulled_flow user","model_product_pulled_flow","stock.group_stock_user",1,0,0,0
+"access_product_pulled_flow_manager","product_pulled_flow manager","model_product_pulled_flow","stock.group_stock_manager",1,1,1,1
+"access_product_pulled_flow_partner_manager","product_pulled_flow partner manager","model_product_pulled_flow","product.group_product_manager",1,1,1,1
"access_stock_location_path_user","stock location path user","model_stock_location_path","stock.group_stock_user",1,0,0,0
"access_stock_location_path_manager","stock location path manager","model_stock_location_path","stock.group_stock_manager",1,1,1,1
"access_stock_location_path_partner_manager","stock.location.path partner manager","model_stock_location_path","product.group_product_manager",1,1,1,1
diff --git a/addons/stock_location/stock.py b/addons/stock_location/stock.py
index 8611b8dba6b..4aa4a1999ed 100644
--- a/addons/stock_location/stock.py
+++ b/addons/stock_location/stock.py
@@ -58,7 +58,7 @@ stock_location_path()
class product_pulled_flow(osv.osv):
_name = 'product.pulled.flow'
- _description = "Pulled Flows."
+ _description = "Pulled Flows"
_columns = {
'name': fields.char('Name', size=64, required=True, help="This field will fill the packing Origin and the name of its moves"),
'cancel_cascade': fields.boolean('Cancel Cascade', help="Allow you to cancel moves related to the product pull flow"),
diff --git a/addons/stock_planning/stock_planning_view.xml b/addons/stock_planning/stock_planning_view.xml
index 1e9876060ce..c0ca17fc478 100644
--- a/addons/stock_planning/stock_planning_view.xml
+++ b/addons/stock_planning/stock_planning_view.xml
@@ -95,7 +95,7 @@
-
+
@@ -132,7 +132,7 @@
-
+
-
-
+
+
-
-
+
+
-
+
@@ -240,11 +240,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -275,7 +275,7 @@
form
-
+
@@ -326,8 +326,8 @@
-
-
+
+
@@ -365,7 +365,7 @@
-
+
@@ -388,7 +388,7 @@
-
+
diff --git a/addons/survey/survey_view.xml b/addons/survey/survey_view.xml
index a604b7c7c37..bd3f257c756 100644
--- a/addons/survey/survey_view.xml
+++ b/addons/survey/survey_view.xml
@@ -260,8 +260,8 @@
-
-
+
+
diff --git a/addons/thunderbird/security/ir.model.access.csv b/addons/thunderbird/security/ir.model.access.csv
index b7cc3262e2d..52f5efbcb7f 100644
--- a/addons/thunderbird/security/ir.model.access.csv
+++ b/addons/thunderbird/security/ir.model.access.csv
@@ -1,3 +1,3 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_tinythunderbird_partner","tinythunderbird.partner","model_tinythunderbird_partner",,1,1,1,1
-"access_thunderbird_installer","thunderbird.installer","model_thunderbird_installer","base.group_user",1,1,1,1
+"access_thunderbird_installer","thunderbird.installer","model_thunderbird_installer","base.group_system",1,1,1,1
diff --git a/addons/wiki/wiki_view.xml b/addons/wiki/wiki_view.xml
index ca0eaccb449..8f07148fd52 100644
--- a/addons/wiki/wiki_view.xml
+++ b/addons/wiki/wiki_view.xml
@@ -160,16 +160,15 @@
search
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+