Browse Source

[FIX] contract: Set correct company on invoices when working on multicompany environment

Now when working on multy company environmets the server action creates
invioices with accounts belong to correct company based on contract company.
pull/202/head
Federico Cruz 10 years ago
committed by Pedro M. Baeza
parent
commit
d2d9c9bd10
  1. 21
      contract/account_analytic_analysis_recurring.py

21
contract/account_analytic_analysis_recurring.py

@ -92,7 +92,7 @@ class AccountAnalyticInvoiceLine(orm.Model):
'uom_id': uom_id or res.uom_id.id or False, 'uom_id': uom_id or res.uom_id.id or False,
'price_unit': res.list_price or 0.0}) 'price_unit': res.list_price or 0.0})
if res.description: if res.description:
result['name'] += '\n'+res.description
result['name'] += '\n' + res.description
res_final = {'value': result} res_final = {'value': result}
if result['uom_id'] != res.uom_id.id: if result['uom_id'] != res.uom_id.id:
@ -169,7 +169,7 @@ class AccountAnalyticAccount(orm.Model):
raise orm.except_orm( raise orm.except_orm(
_('Error!'), _('Error!'),
_('Please define a sale journal for the company "%s".') % _('Please define a sale journal for the company "%s".') %
(contract.company_id.name or '', ))
(contract.company_id.name or '',))
partner_payment_term = contract.partner_id.property_payment_term.id partner_payment_term = contract.partner_id.property_payment_term.id
inv_data = { inv_data = {
'reference': contract.code or False, 'reference': contract.code or False,
@ -234,17 +234,28 @@ class AccountAnalyticAccount(orm.Model):
interval = contract.recurring_interval interval = contract.recurring_interval
old_date = next_date old_date = next_date
if contract.recurring_rule_type == 'daily': if contract.recurring_rule_type == 'daily':
old_date = next_date - relativedelta(days=+interval)
new_date = next_date + relativedelta(days=+interval) new_date = next_date + relativedelta(days=+interval)
elif contract.recurring_rule_type == 'weekly': elif contract.recurring_rule_type == 'weekly':
old_date = next_date - relativedelta(weeks=+interval)
new_date = next_date + relativedelta(weeks=+interval) new_date = next_date + relativedelta(weeks=+interval)
else: else:
old_date = next_date + relativedelta(months=+interval)
new_date = next_date + relativedelta(months=+interval) new_date = next_date + relativedelta(months=+interval)
context['old_date'] = old_date context['old_date'] = old_date
context['next_date'] = new_date
context['next_date'] = datetime.datetime.strptime(
contract.recurring_next_date or current_date, "%Y-%m-%d")
# Force company for correct evaluate domain access rules
context['force_company'] = contract.company_id.id
# Re-read contract with correct company
contract = self.browse(cr, uid, contract.id, context=context)
self._prepare_invoice( self._prepare_invoice(
cr, uid, contract, context=context)
cr, uid, contract, context=context
)
self.write( self.write(
cr, uid, [contract.id], cr, uid, [contract.id],
{'recurring_next_date': new_date.strftime('%Y-%m-%d')}, {'recurring_next_date': new_date.strftime('%Y-%m-%d')},
context=context)
context=context
)
return True return True
Loading…
Cancel
Save