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,
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):
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
<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>
"""
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
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,
<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>