X-Git-Url: http://git.inspyration.org/?a=blobdiff_plain;f=addons%2Faccount%2Faccount_invoice.py;h=701ede7e799c8dad46269dfea349ad3b91895d2f;hb=b1e0f9f6f2c845de9837b6936d1cea0cb9554ce1;hp=222a0bebbb455e5a6b2c1321d00c87dc08966fad;hpb=becbd707cf9e1ee677469c5eaad5b3e757a392f5;p=odoo%2Fodoo.git diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 222a0be..701ede7 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -286,7 +286,10 @@ class account_invoice(osv.osv): 'payment_ids': fields.function(_compute_lines, relation='account.move.line', type="many2many", string='Payments'), '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, @@ -313,7 +316,7 @@ class account_invoice(osv.osv): context = {} if context.get('active_model', '') in ['res.partner'] and context.get('active_ids', False) and context['active_ids']: - partner = self.pool.get(context['active_model']).read(cr, uid, context['active_ids'], ['supplier','customer'])[0] + partner = self.pool[context['active_model']].read(cr, uid, context['active_ids'], ['supplier','customer'])[0] if not view_type: view_id = self.pool.get('ir.ui.view').search(cr, uid, [('name', '=', 'account.invoice.tree')]) view_type = 'tree' @@ -367,18 +370,6 @@ class account_invoice(osv.osv): context['view_id'] = view_id return context - def create(self, cr, uid, vals, context=None): - if context is None: - context = {} - try: - return super(account_invoice, self).create(cr, uid, vals, context) - except Exception, e: - if '"journal_id" viol' in e.args[0]: - raise orm.except_orm(_('Configuration Error!'), - _('There is no Sale/Purchase Journal(s) defined.')) - else: - raise orm.except_orm(_('Unknown Error!'), str(e)) - def invoice_print(self, cr, uid, ids, context=None): ''' This function prints the invoice and mark it as sent, so that we can see more easily the next step of the workflow @@ -644,6 +635,26 @@ class account_invoice(osv.osv): self.create_workflow(cr, uid, ids) return True + # ---------------------------------------- + # Mail related methods + # ---------------------------------------- + + def _get_formview_action(self, cr, uid, id, context=None): + """ Update form view id of action to open the invoice """ + action = super(account_invoice, self)._get_formview_action(cr, uid, id, context=context) + obj = self.browse(cr, uid, id, context=context) + if obj.type == 'in_invoice': + model, view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'invoice_supplier_form') + action.update({ + 'views': [(view_id, 'form')], + }) + else: + model, view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'invoice_form') + action.update({ + 'views': [(view_id, 'form')], + }) + return action + # Workflow stuff ################# @@ -997,8 +1008,7 @@ class account_invoice(osv.osv): 'narration':inv.comment } period_id = inv.period_id and inv.period_id.id or False - ctx.update(company_id=inv.company_id.id, - account_period_prefer_normal=True) + ctx.update(company_id=inv.company_id.id) if not period_id: period_ids = period_obj.find(cr, uid, inv.date_invoice, context=ctx) period_id = period_ids and period_ids[0] or False @@ -1274,9 +1284,7 @@ class account_invoice(osv.osv): ref = invoice.reference else: ref = self._convert_ref(cr, uid, invoice.number) - partner = invoice.partner_id - if partner.parent_id and not partner.is_company: - partner = partner.parent_id + partner = self.pool['res.partner']._find_accounting_partner(invoice.partner_id) # Pay attention to the sign for both debit/credit AND amount_currency l1 = { 'debit': direction * pay_amount>0 and direction * pay_amount, @@ -1596,7 +1604,6 @@ class account_invoice_line(osv.osv): unique_tax_ids = product_change_result['value']['invoice_line_tax_id'] return {'value':{'invoice_line_tax_id': unique_tax_ids}} -account_invoice_line() class account_invoice_tax(osv.osv): _name = "account.invoice.tax" @@ -1747,15 +1754,11 @@ class res_partner(osv.osv): 'invoice_ids': fields.one2many('account.invoice.line', 'partner_id', 'Invoices', readonly=True), } - def _find_accounting_partner(self, part): + def _find_accounting_partner(self, partner): ''' Find the partner for which the accounting entries will be created ''' - #if the chosen partner is not a company and has a parent company, use the parent for the journal entries - #because you want to invoice 'Agrolait, accounting department' but the journal items are for 'Agrolait' - if part.parent_id and not part.is_company: - part = part.parent_id - return part + return partner.commercial_partner_id def copy(self, cr, uid, id, default=None, context=None): default = default or {}