[MERGE] Forward-port 7.0 up to 23cffab
authorOlivier Dony <odo@openerp.com>
Wed, 13 Aug 2014 15:30:06 +0000 (17:30 +0200)
committerOlivier Dony <odo@openerp.com>
Wed, 13 Aug 2014 15:30:06 +0000 (17:30 +0200)
1  2 
addons/account/account_invoice.py
addons/account_followup/account_followup.py
addons/portal_sale/portal_sale.py
addons/portal_sale/security/ir.model.access.csv
addons/portal_sale/security/portal_security.xml
addons/web/controllers/main.py
addons/web/static/src/js/data_export.js
openerp/addons/base/ir/ir_cron.py
openerp/addons/base/res/res_partner_view.xml
openerp/osv/fields.py

@@@ -24,8 -24,10 +24,9 @@@ from lxml import etre
  import openerp.addons.decimal_precision as dp
  import openerp.exceptions
  
 -from openerp import netsvc, SUPERUSER_ID
 -from openerp import pooler
  from openerp.osv import fields, osv, orm
  from openerp.tools.translate import _
++from openerp import SUPERUSER_ID
  
  class account_invoice(osv.osv):
      def _amount_all(self, cr, uid, ids, name, args, context=None):
                  'account.move.reconcile': (_get_invoice_from_reconcile, None, 50),
              },
              help="Remaining amount due."),
-         'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'),
+         'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments', groups='base.group_user'),
          'move_name': fields.char('Journal Entry', size=64, readonly=True, states={'draft':[('readonly',False)]}),
          'user_id': fields.many2one('res.users', 'Salesperson', readonly=True, track_visibility='onchange', states={'draft':[('readonly',False)]}),
 -        'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position', readonly=True, states={'draft':[('readonly',False)]})
 +        'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position', readonly=True, states={'draft':[('readonly',False)]}),
 +        'commercial_partner_id': fields.related('partner_id', 'commercial_partner_id', string='Commercial Entity', type='many2one',
 +                                                relation='res.partner', store=True, readonly=True,
 +                                                help="The commercial entity that will be used on Journal Entries for this invoice")
      }
      _defaults = {
          'type': _get_type,
@@@ -34,12 -35,11 +35,12 @@@ class sale_order(osv.Model)
  
      def _portal_payment_block(self, cr, uid, ids, fieldname, arg, context=None):
          result = dict.fromkeys(ids, False)
 -        payment_acquirer = self.pool.get('portal.payment.acquirer')
 +        payment_acquirer = self.pool['payment.acquirer']
-         for this in self.browse(cr, uid, ids, context=context):
+         for this in self.browse(cr, SUPERUSER_ID, ids, context=context):
              if this.state not in ('draft', 'cancel') and not this.invoiced:
 -                result[this.id] = payment_acquirer.render_payment_block(cr, uid, this, this.name,
 -                    this.pricelist_id.currency_id, this.amount_total, context=context)
 +                result[this.id] = payment_acquirer.render_payment_block(
 +                    cr, uid, this.name, this.amount_total, this.pricelist_id.currency_id.id,
 +                    partner_id=this.partner_id.id, company_id=this.company_id.id, context=context)
          return result
  
      def action_quotation_send(self, cr, uid, ids, context=None):
@@@ -1,20 -1,12 +1,12 @@@
  id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
 -access_sale_order,sale.order,sale.model_sale_order,portal.group_portal,1,0,0,0
 -access_sale_order_line,sale.order.line,sale.model_sale_order_line,portal.group_portal,1,0,0,0
 -access_account_invoice,account.invoice,account.model_account_invoice,portal.group_portal,1,0,0,0
 -access_account_invoice_tax,account.invoice.tax,account.model_account_invoice_tax,portal.group_portal,1,0,0,0
 -access_account_invoice_line,account.invoice.line,account.model_account_invoice_line,portal.group_portal,1,0,0,0
 -access_account_journal,account.journal,account.model_account_journal,portal.group_portal,1,0,0,0
 -access_sale_shop,sale.shop,sale.model_sale_shop,portal.group_portal,1,0,0,0
 -access_product_list,product.pricelist,product.model_product_pricelist,portal.group_portal,1,0,0,0
 -access_res_partner,res.partner,base.model_res_partner,portal.group_portal,1,0,0,0
 -access_account_tax,account.tax,account.model_account_tax,portal.group_portal,1,0,0,0
 -access_res_partner_category,res.partner.category,base.model_res_partner_category,portal.group_portal,1,0,0,0
 +access_sale_order,sale.order,sale.model_sale_order,base.group_portal,1,0,0,0
 +access_sale_order_line,sale.order.line,sale.model_sale_order_line,base.group_portal,1,0,0,0
 +access_account_invoice,account.invoice,account.model_account_invoice,base.group_portal,1,0,0,0
 +access_account_invoice_tax,account.invoice.tax,account.model_account_invoice_tax,base.group_portal,1,0,0,0
 +access_account_invoice_line,account.invoice.line,account.model_account_invoice_line,base.group_portal,1,0,0,0
 +access_account_journal,account.journal,account.model_account_journal,base.group_portal,1,0,0,0
- access_account_voucher,account.voucher,account_voucher.model_account_voucher,base.group_portal,1,0,0,0
- access_account_voucher_line,account.voucher.line,account_voucher.model_account_voucher_line,base.group_portal,1,0,0,0
- access_account_move,account.move,account.model_account_move,base.group_portal,1,0,0,0
- access_account_move_line,account.move.line,account.model_account_move_line,base.group_portal,1,0,0,0
- access_account_move_reconcile,account.move.reconcile,account.model_account_move_reconcile,base.group_portal,1,0,0,0
- access_account_fiscalyear,account.sequence.fiscalyear,account.model_account_sequence_fiscalyear,base.group_portal,1,0,0,0
++access_sale_shop,sale.shop,sale.model_sale_shop,base.group_portal,1,0,0,0
 +access_product_list,product.pricelist,product.model_product_pricelist,base.group_portal,1,0,0,0
 +access_res_partner,res.partner,base.model_res_partner,base.group_portal,1,0,0,0
 +access_account_tax,account.tax,account.model_account_tax,base.group_portal,1,0,0,0
- access_account_fiscalyear,account.fiscalyear,account.model_account_fiscalyear,base.group_portal,1,0,0,0
 +access_res_partner_category,res.partner.category,base.model_res_partner_category,base.group_portal,1,0,0,0
- access_account_period,account.period,account.model_account_period,base.group_portal,1,0,0,0
- access_account_account,account.account,account.model_account_account,base.group_portal,1,0,0,0
@@@ -18,27 -18,42 +18,41 @@@ their documents through the portal.</fi
          <record id="portal_sale_order_user_rule" model="ir.rule">
              <field name="name">Portal Personal Quotations/Sales Orders</field>
              <field name="model_id" ref="sale.model_sale_order"/>
-             <field name="domain_force">[('message_follower_ids','in',[user.partner_id.id])]</field>
 -            <field name="domain_force">[('message_follower_ids','child_of',[user.partner_id.id])]</field>
 -            <field name="groups" eval="[(4, ref('portal.group_portal'))]"/>
++            <field name="domain_force">[('message_follower_ids','child_of',[user.commercial_partner_id.id])]</field>
 +            <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
              <field eval="1" name="perm_unlink"/>
              <field eval="1" name="perm_write"/>
              <field eval="1" name="perm_read"/>
              <field eval="0" name="perm_create"/>
          </record>
  
+         <record id="portal_sale_order_line_rule" model="ir.rule">
+             <field name="name">Portal Sales Orders Line</field>
+             <field name="model_id" ref="sale.model_sale_order_line"/>
 -            <field name="domain_force">[('order_id.message_follower_ids','child_of',[user.partner_id.id])]</field>
 -            <field name="groups" eval="[(4, ref('portal.group_portal'))]"/>
++            <field name="domain_force">[('order_id.message_follower_ids','child_of',[user.commercial_partner_id.id])]</field>
++            <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
+         </record>
          <record id="portal_account_invoice_user_rule" model="ir.rule">
              <field name="name">Portal Personal Account Invoices</field>
              <field name="model_id" ref="account.model_account_invoice"/>
-             <field name="domain_force">[('message_follower_ids','in',[user.partner_id.id])]</field>
 -            <field name="domain_force">[('message_follower_ids','child_of',[user.partner_id.id])]</field>
 -            <field name="groups" eval="[(4, ref('portal.group_portal'))]"/>
 -        </record>
++            <field name="domain_force">[('message_follower_ids','child_of',[user.commercial_partner_id.id])]</field>
++            <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
+         <record id="portal_account_invoice_line_rule" model="ir.rule">
+             <field name="name">Portal Invoice Lines</field>
+             <field name="model_id" ref="account.model_account_invoice_line"/>
 -            <field name="domain_force">[('invoice_id.message_follower_ids','child_of',[user.partner_id.id])]</field>
 -            <field name="groups" eval="[(4, ref('portal.group_portal'))]"/>
++            <field name="domain_force">[('invoice_id.message_follower_ids','child_of',[user.commercial_partner_id.id])]</field>
 +            <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
          </record>
  
          <record id="portal_personal_contact" model="ir.rule">
              <field name="name">Portal Personal Contacts</field>
              <field name="model_id" ref="base.model_res_partner"/>
--            <field name="domain_force">[('message_follower_ids','in',[user.partner_id.id])]</field>
++            <field name="domain_force">[('message_follower_ids','in',[user.commercial_partner_id.id])]</field>
              <field eval="0" name="perm_read"/>
 -            <field name="groups" eval="[(4, ref('portal.group_portal'))]"/>
 +            <field name="groups" eval="[(4, ref('base.group_portal'))]"/>
          </record>
  
      </data>
@@@ -1708,17 -1604,20 +1708,19 @@@ class ExportFormat(object)
          """
          raise NotImplementedError()
  
 -    @openerpweb.httprequest
 -    def index(self, req, data, token):
 +    def base(self, data, token):
+         params = simplejson.loads(data)
          model, fields, ids, domain, import_compat = \
              operator.itemgetter('model', 'fields', 'ids', 'domain',
                                  'import_compat')(
-                 simplejson.loads(data))
+                 params)
  
 -        Model = req.session.model(model)
 +        Model = request.session.model(model)
-         ids = ids or Model.search(domain, 0, False, False, request.context)
+         context = dict(req.context or {}, **params.get('context', {}))
+         ids = ids or Model.search(domain, 0, False, False, context)
  
          field_names = map(operator.itemgetter('name'), fields)
-         import_data = Model.export_data(ids, field_names, request.context).get('datas',[])
+         import_data = Model.export_data(ids, field_names, context).get('datas',[])
  
          if import_compat:
              columns_headers = field_names
@@@ -405,8 -387,9 +405,9 @@@ instance.web.DataExport = instance.web.
              data: {data: JSON.stringify({
                  model: this.dataset.model,
                  fields: exported_fields,
 -                ids: ids_to_export,
 -                domain: this.dataset.domain,
 +                ids: this.ids_to_export,
 +                domain: this.domain,
+                 context: this.dataset.context,
                  import_compat: !!this.$el.find("#import_compat").val(),
              })},
              complete: instance.web.unblockUI,
Simple merge
                              <field name="phone" placeholder="e.g. +32.81.81.37.00"/>
                              <field name="mobile"/>
                              <field name="fax"/>
 -                            <field name="email" widget="email"/>
 +                            <field name="user_ids" invisible="1"/>
 +                            <field name="email" widget="email" attrs="{'required': [('user_ids','!=', [])]}"/>
-                             <field name="title" domain="[('domain','=','contact')]" options='{"no_open": True}' attrs="{'invisible': [('is_company','=',True)]}" context="{'default_domain': 'contact'}"/>
-                             <field name="title" domain="[('domain','=','partner')]" options='{"no_open": True}' attrs="{'invisible': [('is_company','=',False)]}" context="{'default_domain': 'partner'}"/>
+                             <field name="title" domain="[('domain', '=', 'contact')]" options='{"no_open": True}'/>
                          </group>
                      </group>
  
Simple merge