[MERGE] forward port of branch saas-3 up to revid 9380 chs@openerp.com-20140407144439-10n8fs6zovodwwtx
bzr revid: chs@openerp.com-20140407163318-hh3jwfkj3o2c83lk
This commit is contained in:
commit
0fad8159f3
|
@ -34,7 +34,7 @@ class validate_account_move(osv.osv_memory):
|
||||||
if context is None:
|
if context is None:
|
||||||
context = {}
|
context = {}
|
||||||
data = self.read(cr, uid, ids[0], context=context)
|
data = self.read(cr, uid, ids[0], context=context)
|
||||||
ids_move = obj_move.search(cr, uid, [('state','=','draft'),('journal_id','in',tuple(data['journal_ids'])),('period_id','in',tuple(data['period_ids']))])
|
ids_move = obj_move.search(cr, uid, [('state','=','draft'),('journal_id','in',tuple(data['journal_ids'])),('period_id','in',tuple(data['period_ids']))], order='date')
|
||||||
if not ids_move:
|
if not ids_move:
|
||||||
raise osv.except_osv(_('Warning!'), _('Specified journals do not have any account move entries in draft state for the specified periods.'))
|
raise osv.except_osv(_('Warning!'), _('Specified journals do not have any account move entries in draft state for the specified periods.'))
|
||||||
obj_move.button_validate(cr, uid, ids_move, context=context)
|
obj_move.button_validate(cr, uid, ids_move, context=context)
|
||||||
|
|
|
@ -732,12 +732,16 @@ class account_voucher(osv.osv):
|
||||||
|
|
||||||
total_credit = 0.0
|
total_credit = 0.0
|
||||||
total_debit = 0.0
|
total_debit = 0.0
|
||||||
account_type = 'receivable'
|
account_type = None
|
||||||
|
if context.get('account_id'):
|
||||||
|
account_type = self.pool['account.account'].browse(cr, uid, context['account_id'], context=context).type
|
||||||
if ttype == 'payment':
|
if ttype == 'payment':
|
||||||
|
if not account_type:
|
||||||
account_type = 'payable'
|
account_type = 'payable'
|
||||||
total_debit = price or 0.0
|
total_debit = price or 0.0
|
||||||
else:
|
else:
|
||||||
total_credit = price or 0.0
|
total_credit = price or 0.0
|
||||||
|
if not account_type:
|
||||||
account_type = 'receivable'
|
account_type = 'receivable'
|
||||||
|
|
||||||
if not context.get('move_line_ids', False):
|
if not context.get('move_line_ids', False):
|
||||||
|
@ -827,9 +831,9 @@ class account_voucher(osv.osv):
|
||||||
else:
|
else:
|
||||||
default['value']['line_dr_ids'].append(rs)
|
default['value']['line_dr_ids'].append(rs)
|
||||||
|
|
||||||
if ttype == 'payment' and len(default['value']['line_cr_ids']) > 0:
|
if len(default['value']['line_cr_ids']) > 0:
|
||||||
default['value']['pre_line'] = 1
|
default['value']['pre_line'] = 1
|
||||||
elif ttype == 'receipt' and len(default['value']['line_dr_ids']) > 0:
|
elif len(default['value']['line_dr_ids']) > 0:
|
||||||
default['value']['pre_line'] = 1
|
default['value']['pre_line'] = 1
|
||||||
default['value']['writeoff_amount'] = self._compute_writeoff_amount(cr, uid, default['value']['line_dr_ids'], default['value']['line_cr_ids'], price, ttype)
|
default['value']['writeoff_amount'] = self._compute_writeoff_amount(cr, uid, default['value']['line_dr_ids'], default['value']['line_cr_ids'], price, ttype)
|
||||||
return default
|
return default
|
||||||
|
@ -1662,7 +1666,7 @@ class account_bank_statement_line(osv.osv):
|
||||||
def _check_amount(self, cr, uid, ids, context=None):
|
def _check_amount(self, cr, uid, ids, context=None):
|
||||||
for obj in self.browse(cr, uid, ids, context=context):
|
for obj in self.browse(cr, uid, ids, context=context):
|
||||||
if obj.voucher_id:
|
if obj.voucher_id:
|
||||||
diff = abs(obj.amount) - obj.voucher_id.amount
|
diff = abs(obj.amount) - abs(obj.voucher_id.amount)
|
||||||
if not self.pool.get('res.currency').is_zero(cr, uid, obj.statement_id.currency, diff):
|
if not self.pool.get('res.currency').is_zero(cr, uid, obj.statement_id.currency, diff):
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -213,10 +213,10 @@
|
||||||
<field name="inherit_id" ref="account.view_bank_statement_form"/>
|
<field name="inherit_id" ref="account.view_bank_statement_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//page[@name='statement_line_ids']/field[@name='line_ids']/tree/field[@name='amount']" position="after">
|
<xpath expr="//page[@name='statement_line_ids']/field[@name='line_ids']/tree/field[@name='amount']" position="after">
|
||||||
<field name="voucher_id" string="" widget="many2onebutton" options="{'label':{'create':'Reconcile','edit':'Edit Reconciliation'}}" context="{'line_type': type, 'default_type': amount < 0 and 'payment' or 'receipt', 'type': amount < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': parent.journal_id, 'default_amount': abs(amount), 'default_reference': ref, 'default_date': date, 'default_name': name, 'default_active': False}"/>
|
<field name="voucher_id" string="" widget="many2onebutton" options="{'label':{'create':'Reconcile','edit':'Edit Reconciliation'}}" context="{'line_type': type, 'default_type': amount < 0 and 'payment' or 'receipt', 'type': amount < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': parent.journal_id, 'default_amount': abs(amount), 'default_reference': ref, 'default_date': date, 'default_name': name, 'default_active': False, 'account_id': account_id}"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<xpath expr="//page[@name='statement_line_ids']/field[@name='line_ids']/form/group/field[@name='sequence']" position="before">
|
<xpath expr="//page[@name='statement_line_ids']/field[@name='line_ids']/form/group/field[@name='sequence']" position="before">
|
||||||
<field name="voucher_id" widget="many2onebutton" options="{'label':{'create':'Reconcile','edit':'Edit Reconciliation'}}" context="{'line_type': type, 'default_type': amount < 0 and 'payment' or 'receipt', 'type': amount < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': parent.journal_id, 'default_amount': abs(amount), 'default_reference': ref, 'default_date': date, 'default_name': name, 'default_active': False}"/>
|
<field name="voucher_id" widget="many2onebutton" options="{'label':{'create':'Reconcile','edit':'Edit Reconciliation'}}" context="{'line_type': type, 'default_type': amount < 0 and 'payment' or 'receipt', 'type': amount < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': parent.journal_id, 'default_amount': abs(amount), 'default_reference': ref, 'default_date': date, 'default_name': name, 'default_active': False, 'account_id': account_id}"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
<field name="amount" position="attributes">
|
<field name="amount" position="attributes">
|
||||||
<attribute name="on_change">onchange_amount(amount)</attribute>
|
<attribute name="on_change">onchange_amount(amount)</attribute>
|
||||||
|
@ -230,7 +230,7 @@
|
||||||
<field name="inherit_id" ref="account.view_bank_statement_form2"/>
|
<field name="inherit_id" ref="account.view_bank_statement_form2"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//page/field[@name='line_ids']/tree/field[@name='amount']" position="after">
|
<xpath expr="//page/field[@name='line_ids']/tree/field[@name='amount']" position="after">
|
||||||
<field name="voucher_id" context="{'line_type': type, 'default_type': amount < 0 and 'payment' or 'receipt', 'type': amount < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': parent.journal_id, 'default_amount': abs(amount), 'default_reference': ref, 'default_date': date, 'default_name': name}"/>
|
<field name="voucher_id" context="{'line_type': type, 'default_type': amount < 0 and 'payment' or 'receipt', 'type': amount < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': parent.journal_id, 'default_amount': abs(amount), 'default_reference': ref, 'default_date': date, 'default_name': name, 'account_id': account_id}"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -241,7 +241,7 @@
|
||||||
<field name="inherit_id" ref="account.view_bank_statement_form2"/>
|
<field name="inherit_id" ref="account.view_bank_statement_form2"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<xpath expr="//page/field[@name='line_ids']/form/group/field[@name='amount']" position="after">
|
<xpath expr="//page/field[@name='line_ids']/form/group/field[@name='amount']" position="after">
|
||||||
<field name="voucher_id" context="{'line_type': type, 'default_type': amount < 0 and 'payment' or 'receipt', 'type': amount < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': parent.journal_id, 'default_amount': abs(amount), 'default_reference': ref, 'default_date': date, 'default_name': name}"/>
|
<field name="voucher_id" context="{'line_type': type, 'default_type': amount < 0 and 'payment' or 'receipt', 'type': amount < 0 and 'payment' or 'receipt', 'default_partner_id': partner_id, 'default_journal_id': parent.journal_id, 'default_amount': abs(amount), 'default_reference': ref, 'default_date': date, 'default_name': name, 'account_id': account_id}"/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -285,7 +285,7 @@ openerp.base_import = function (instance) {
|
||||||
|
|
||||||
callback(item_finder(default_value));
|
callback(item_finder(default_value));
|
||||||
},
|
},
|
||||||
|
placeholder: _t('Don\'t import'),
|
||||||
width: 'resolve',
|
width: 'resolve',
|
||||||
dropdownCssClass: 'oe_import_selector'
|
dropdownCssClass: 'oe_import_selector'
|
||||||
});
|
});
|
||||||
|
|
|
@ -347,8 +347,7 @@
|
||||||
<tr class="oe_import_fields">
|
<tr class="oe_import_fields">
|
||||||
<!-- Iterate on first row to ensure we have all columns -->
|
<!-- Iterate on first row to ensure we have all columns -->
|
||||||
<td t-foreach="preview[0]" t-as="column">
|
<td t-foreach="preview[0]" t-as="column">
|
||||||
<input placeholder="Don't Import"
|
<input class="oe_import_match_field"/>
|
||||||
class="oe_import_match_field"/>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr t-foreach="preview" t-as="row" class="oe_import_grid-row">
|
<tr t-foreach="preview" t-as="row" class="oe_import_grid-row">
|
||||||
|
|
|
@ -126,6 +126,7 @@ class res_partner(osv.osv):
|
||||||
continue
|
continue
|
||||||
vat_country, vat_number = self._split_vat(partner.vat)
|
vat_country, vat_number = self._split_vat(partner.vat)
|
||||||
if not check_func(cr, uid, vat_country, vat_number, context=context):
|
if not check_func(cr, uid, vat_country, vat_number, context=context):
|
||||||
|
_logger.info(_("Importing VAT Number [%s] is not valid !" % vat_number))
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -149,7 +150,9 @@ class res_partner(osv.osv):
|
||||||
vat_no = "'CC##' (CC=Country Code, ##=VAT Number)"
|
vat_no = "'CC##' (CC=Country Code, ##=VAT Number)"
|
||||||
if default_vat_check(vat_country, vat_number):
|
if default_vat_check(vat_country, vat_number):
|
||||||
vat_no = _ref_vat[vat_country] if vat_country in _ref_vat else vat_no
|
vat_no = _ref_vat[vat_country] if vat_country in _ref_vat else vat_no
|
||||||
return '\n' + _('This VAT number does not seem to be valid.\nNote: the expected format is %s') % vat_no
|
#Retrieve the current partner for wich the VAT is not valid
|
||||||
|
error_partner = self.browse(cr, uid, ids, context=context)
|
||||||
|
return '\n' + _('The VAT number [%s] for partner [%s] does not seem to be valid. \nNote: the expected format is %s') % (error_partner[0].vat, error_partner[0].name, vat_no)
|
||||||
|
|
||||||
_constraints = [(check_vat, _construct_constraint_msg, ["vat"])]
|
_constraints = [(check_vat, _construct_constraint_msg, ["vat"])]
|
||||||
|
|
||||||
|
|
|
@ -714,7 +714,7 @@ class calendar_event(osv.Model):
|
||||||
"""
|
"""
|
||||||
Return date and time (from to from) based on duration with timezone in string :
|
Return date and time (from to from) based on duration with timezone in string :
|
||||||
eg.
|
eg.
|
||||||
1) if user add duration for 2 hours, return : August-23-2013 at ( 04-30 To 06-30) (Europe/Brussels)
|
1) if user add duration for 2 hours, return : August-23-2013 at (04-30 To 06-30) (Europe/Brussels)
|
||||||
2) if event all day ,return : AllDay, July-31-2013
|
2) if event all day ,return : AllDay, July-31-2013
|
||||||
"""
|
"""
|
||||||
if context is None:
|
if context is None:
|
||||||
|
@ -733,7 +733,7 @@ class calendar_event(osv.Model):
|
||||||
time = _("AllDay , %s") % (event_date)
|
time = _("AllDay , %s") % (event_date)
|
||||||
elif meeting.duration < 24:
|
elif meeting.duration < 24:
|
||||||
duration = date + timedelta(hours=meeting.duration)
|
duration = date + timedelta(hours=meeting.duration)
|
||||||
time = ("%s at ( %s To %s) (%s)") % (event_date, display_time, duration.strftime('%H-%M'), tz)
|
time = ("%s at (%s To %s) (%s)") % (event_date, display_time, duration.strftime('%H-%M'), tz)
|
||||||
else:
|
else:
|
||||||
time = ("%s at %s To\n %s at %s (%s)") % (event_date, display_time, date_deadline.strftime('%B-%d-%Y'), date_deadline.strftime('%H-%M'), tz)
|
time = ("%s at %s To\n %s at %s (%s)") % (event_date, display_time, date_deadline.strftime('%B-%d-%Y'), date_deadline.strftime('%H-%M'), tz)
|
||||||
return time
|
return time
|
||||||
|
@ -1298,9 +1298,14 @@ class calendar_event(osv.Model):
|
||||||
invitation['attendee'].append({'name': attendee.cn, 'status': attendee.state})
|
invitation['attendee'].append({'name': attendee.cn, 'status': attendee.state})
|
||||||
return invitation
|
return invitation
|
||||||
|
|
||||||
def get_interval(self, cr, uid, ids, date, interval, context=None):
|
def get_interval(self, cr, uid, ids, date, interval, tz=None, context=None):
|
||||||
#Function used only in calendar_event_data.xml for email template
|
#Function used only in calendar_event_data.xml for email template
|
||||||
date = datetime.strptime(date.split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT)
|
date = datetime.strptime(date.split('.')[0], DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
|
|
||||||
|
if tz:
|
||||||
|
timezone = pytz.timezone(tz or 'UTC')
|
||||||
|
date = date.replace(tzinfo=pytz.timezone('UTC')).astimezone(timezone)
|
||||||
|
|
||||||
if interval == 'day':
|
if interval == 'day':
|
||||||
res = str(date.day)
|
res = str(date.day)
|
||||||
elif interval == 'month':
|
elif interval == 'month':
|
||||||
|
@ -1582,6 +1587,8 @@ class mail_message(osv.Model):
|
||||||
return super(mail_message, self).search(cr, uid, args, offset=offset, limit=limit, order=order, context=context, count=count)
|
return super(mail_message, self).search(cr, uid, args, offset=offset, limit=limit, order=order, context=context, count=count)
|
||||||
|
|
||||||
def _find_allowed_model_wise(self, cr, uid, doc_model, doc_dict, context=None):
|
def _find_allowed_model_wise(self, cr, uid, doc_model, doc_dict, context=None):
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
if doc_model == 'calendar.event':
|
if doc_model == 'calendar.event':
|
||||||
order = context.get('order', self._order)
|
order = context.get('order', self._order)
|
||||||
for virtual_id in self.pool[doc_model].get_recurrent_ids(cr, uid, doc_dict.keys(), [], order=order, context=context):
|
for virtual_id in self.pool[doc_model].get_recurrent_ids(cr, uid, doc_dict.keys(), [], order=order, context=context):
|
||||||
|
|
|
@ -147,7 +147,7 @@
|
||||||
${object.event_id.get_interval(object.event_id.date,'day')}
|
${object.event_id.get_interval(object.event_id.date,'day')}
|
||||||
</div>
|
</div>
|
||||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#8a89ba'>${object.event_id.get_interval(object.event_id.date, 'month')}</div>
|
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#8a89ba'>${object.event_id.get_interval(object.event_id.date, 'month')}</div>
|
||||||
<div style="border-collapse:separate;color:#8a89ba;text-align:center;width: 128px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid;border-bottom-left-radius:3px;">${object.event_id.get_interval(object.event_id.date, 'time')}</div>
|
<div style="border-collapse:separate;color:#8a89ba;text-align:center;width: 128px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval(object.event_id.date, 'time', tz=object.partner_id.tz) or ''}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<table cellspacing="0" cellpadding="0" border="0" style="margin-top: 15px; margin-left: 10px;font-size: 16px;">
|
<table cellspacing="0" cellpadding="0" border="0" style="margin-top: 15px; margin-left: 10px;font-size: 16px;">
|
||||||
|
@ -212,7 +212,7 @@
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
:
|
:
|
||||||
% for attendee in object.event_id.attendee_ids:
|
% for attendee in object.event_id.attendee_ids:
|
||||||
<div style='display:inline-block; border-radius: 50%; width:10px; height:10px;background:${ctx["color"][attendee.state]};'></div>
|
<div style='display:inline-block; border-radius: 50%; width:10px; height:10px;background:${'color' in ctx and ctx["color"][attendee.state] or 'white'};'></div>
|
||||||
% if attendee.cn != object.cn:
|
% if attendee.cn != object.cn:
|
||||||
<span style="margin-left:5px">${attendee.cn}</span>
|
<span style="margin-left:5px">${attendee.cn}</span>
|
||||||
% else:
|
% else:
|
||||||
|
@ -227,9 +227,9 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: auto;width:450px; margin:0 auto;padding-top:20px;padding-bottom:40px;">
|
<div style="height: auto;width:450px; margin:0 auto;padding-top:20px;padding-bottom:40px;">
|
||||||
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#8A89BA;margin : 0 15px 0 0;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/accept?db=${ctx['dbname']}&token=${object.access_token}&action=${ctx['action_id']}&id=${object.event_id.id}">Accept</a>
|
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#8A89BA;margin : 0 15px 0 0;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/accept?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}">Accept</a>
|
||||||
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#808080;margin : 0 15px 0 0;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/decline?db=${ctx['dbname']}&token=${object.access_token}&action=${ctx['action_id']}&id=${object.event_id.id}">Decline</a>
|
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#808080;margin : 0 15px 0 0;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/decline?db=${'dbname' in ctx and ctx['dbname'] or '' }&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}">Decline</a>
|
||||||
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#D8D8D8;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/view?db=${ctx['dbname']}&token=${object.access_token}&action=${ctx['action_id']}&id=${object.event_id.id}">View</a>
|
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#D8D8D8;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/view?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}">View</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
@ -280,7 +280,7 @@
|
||||||
${object.event_id.get_interval(object.event_id.date,'day')}
|
${object.event_id.get_interval(object.event_id.date,'day')}
|
||||||
</div>
|
</div>
|
||||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#8a89ba'>${object.event_id.get_interval(object.event_id.date, 'month')}</div>
|
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#8a89ba'>${object.event_id.get_interval(object.event_id.date, 'month')}</div>
|
||||||
<div style="border-collapse:separate;color:#8a89ba;text-align:center;width: 128px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid;border-bottom-left-radius:3px;">${object.event_id.get_interval(object.event_id.date, 'time')}</div>
|
<div style="border-collapse:separate;color:#8a89ba;text-align:center;width: 128px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval(object.event_id.date, 'time', tz=object.partner_id.tz) or ''}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<table cellspacing="0" cellpadding="0" border="0" style="margin-top: 15px; margin-left: 10px;font-size: 16px;">
|
<table cellspacing="0" cellpadding="0" border="0" style="margin-top: 15px; margin-left: 10px;font-size: 16px;">
|
||||||
|
@ -345,7 +345,7 @@
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
:
|
:
|
||||||
% for attendee in object.event_id.attendee_ids:
|
% for attendee in object.event_id.attendee_ids:
|
||||||
<div style='display:inline-block; border-radius: 50%; width:10px; height:10px;background:${ctx["color"][attendee.state]};'></div>
|
<div style='display:inline-block; border-radius: 50%; width:10px; height:10px;background:${'color' in ctx and ctx["color"][attendee.state] or 'white'};'></div>
|
||||||
% if attendee.cn != object.cn:
|
% if attendee.cn != object.cn:
|
||||||
<span style="margin-left:5px">${attendee.cn}</span>
|
<span style="margin-left:5px">${attendee.cn}</span>
|
||||||
% else:
|
% else:
|
||||||
|
@ -360,9 +360,9 @@
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: auto;width:450px; margin:0 auto;padding-top:20px;padding-bottom:40px;">
|
<div style="height: auto;width:450px; margin:0 auto;padding-top:20px;padding-bottom:40px;">
|
||||||
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#8A89BA;margin : 0 15px 0 0;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/accept?db=${ctx['dbname']}&token=${object.access_token}&action=${ctx['action_id']}&id=${object.event_id.id}">Accept</a>
|
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#8A89BA;margin : 0 15px 0 0;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/accept?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}">Accept</a>
|
||||||
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#808080;margin : 0 15px 0 0;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/decline?db=${ctx['dbname']}&token=${object.access_token}&action=${ctx['action_id']}&id=${object.event_id.id}">Decline</a>
|
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#808080;margin : 0 15px 0 0;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/decline?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}">Decline</a>
|
||||||
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#D8D8D8;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/view?db=${ctx['dbname']}&token=${object.access_token}&action=${ctx['action_id']}&id=${object.event_id.id}">View</a>
|
<a style="padding: 8px 30px 8px 30px;border-radius: 6px;border: 1px solid #CCCCCC;background:#D8D8D8;text-decoration: none;color:#FFFFFF;" href="/calendar/meeting/view?db=${'dbname' in ctx and ctx['dbname'] or ''}&token=${object.access_token}&action=${'action_id' in ctx and ctx['action_id'] or ''}&id=${object.event_id.id}">View</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
@ -412,7 +412,7 @@
|
||||||
${object.event_id.get_interval(object.event_id.date,'day')}
|
${object.event_id.get_interval(object.event_id.date,'day')}
|
||||||
</div>
|
</div>
|
||||||
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#8a89ba'>${object.event_id.get_interval(object.event_id.date, 'month')}</div>
|
<div style='font-size:12px;text-align:center;font-weight:bold;color:#ffffff;background-color:#8a89ba'>${object.event_id.get_interval(object.event_id.date, 'month')}</div>
|
||||||
<div style="border-collapse:separate;color:#8a89ba;text-align:center;width: 128px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid;border-bottom-left-radius:3px;">${object.event_id.get_interval(object.event_id.date, 'time')}</div>
|
<div style="border-collapse:separate;color:#8a89ba;text-align:center;width: 128px;font-size:12px;border-bottom-right-radius:3px;font-weight:bold;border:1px solid;border-bottom-left-radius:3px;">${not object.event_id.allday and object.event_id.get_interval(object.event_id.date, 'time', tz=object.partner_id.tz) or ''}</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<table cellspacing="0" cellpadding="0" border="0" style="margin-top: 15px; margin-left: 10px;font-size: 16px;">
|
<table cellspacing="0" cellpadding="0" border="0" style="margin-top: 15px; margin-left: 10px;font-size: 16px;">
|
||||||
|
@ -477,7 +477,7 @@
|
||||||
<td colspan="3">
|
<td colspan="3">
|
||||||
:
|
:
|
||||||
% for attendee in object.event_id.attendee_ids:
|
% for attendee in object.event_id.attendee_ids:
|
||||||
<div style='display:inline-block; border-radius: 50%; width:10px; height:10px;background:${ctx["color"][attendee.state]};'></div>
|
<div style='display:inline-block; border-radius: 50%; width:10px; height:10px;background:${'color' in ctx and ctx["color"][attendee.state] or 'white'};'></div>
|
||||||
% if attendee.cn != object.cn:
|
% if attendee.cn != object.cn:
|
||||||
<span style="margin-left:5px">${attendee.cn}</span>
|
<span style="margin-left:5px">${attendee.cn}</span>
|
||||||
% else:
|
% else:
|
||||||
|
|
|
@ -241,10 +241,10 @@ class crm_lead(format_address, osv.osv):
|
||||||
'opt_out': fields.boolean('Opt-Out', oldname='optout',
|
'opt_out': fields.boolean('Opt-Out', oldname='optout',
|
||||||
help="If opt-out is checked, this contact has refused to receive emails for mass mailing and marketing campaign. "
|
help="If opt-out is checked, this contact has refused to receive emails for mass mailing and marketing campaign. "
|
||||||
"Filter 'Available for Mass Mailing' allows users to filter the leads when performing mass mailing."),
|
"Filter 'Available for Mass Mailing' allows users to filter the leads when performing mass mailing."),
|
||||||
'type':fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), ],'Type', help="Type is used to separate Leads and Opportunities"),
|
'type': fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), ],'Type', select=True, help="Type is used to separate Leads and Opportunities"),
|
||||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
|
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
|
||||||
'date_closed': fields.datetime('Closed', readonly=True),
|
'date_closed': fields.datetime('Closed', readonly=True),
|
||||||
'stage_id': fields.many2one('crm.case.stage', 'Stage', track_visibility='onchange',
|
'stage_id': fields.many2one('crm.case.stage', 'Stage', track_visibility='onchange', select=True,
|
||||||
domain="['&', ('section_ids', '=', section_id), '|', ('type', '=', type), ('type', '=', 'both')]"),
|
domain="['&', ('section_ids', '=', section_id), '|', ('type', '=', type), ('type', '=', 'both')]"),
|
||||||
'user_id': fields.many2one('res.users', 'Salesperson', select=True, track_visibility='onchange'),
|
'user_id': fields.many2one('res.users', 'Salesperson', select=True, track_visibility='onchange'),
|
||||||
'referred': fields.char('Referred By', size=64),
|
'referred': fields.char('Referred By', size=64),
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
openerp.crm_partner_assign = function (instance) {
|
|
||||||
instance.crm_partner_assign = instance.crm_partner_assign || {};
|
|
||||||
instance.crm_partner_assign.next_or_list = function(parent) {
|
|
||||||
var view = parent.inner_widget.active_view;
|
|
||||||
var controller = parent.inner_widget.views[view].controller;
|
|
||||||
if (view === "form"){
|
|
||||||
if (controller.dataset.size()) {
|
|
||||||
controller.execute_pager_action('next');
|
|
||||||
} else {
|
|
||||||
controller.do_action('history_back');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
controller.do_action({ type: 'ir.actions.act_window_close' });
|
|
||||||
if (view === "list"){
|
|
||||||
controller.records.remove(controller.records.get(parent.dialog_widget.action.context.active_id));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
instance.web.client_actions.add("next_or_list", "instance.crm_partner_assign.next_or_list");
|
|
||||||
}
|
|
|
@ -63,15 +63,12 @@ class crm_lead_forward_to_partner(osv.TransientModel):
|
||||||
if wizard.comment:
|
if wizard.comment:
|
||||||
message += '<p>%s</p>' % wizard.comment
|
message += '<p>%s</p>' % wizard.comment
|
||||||
for active_id in context.get('active_ids', []):
|
for active_id in context.get('active_ids', []):
|
||||||
lead_obj.message_post(cr, uid, active_id, body=message, context=context)
|
lead_obj.message_post(cr, uid, active_id, body=message, subtype="mail.mt_comment", context=context)
|
||||||
if values:
|
if values:
|
||||||
lead_obj.write(cr, SUPERUSER_ID, context.get('active_ids', []), values)
|
lead_obj.write(cr, SUPERUSER_ID, context.get('active_ids', []), values)
|
||||||
if wizard.interested:
|
if wizard.interested:
|
||||||
for lead in lead_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
for lead in lead_obj.browse(cr, uid, context.get('active_ids', []), context=context):
|
||||||
lead_obj.convert_opportunity(cr, SUPERUSER_ID, [lead.id], lead.partner_id and lead.partner_id.id or None, context=None)
|
lead_obj.convert_opportunity(cr, SUPERUSER_ID, [lead.id], lead.partner_id and lead.partner_id.id or None, context=None)
|
||||||
return {
|
return {
|
||||||
'type': 'ir.actions.client',
|
'type': 'ir.actions.act_window_close',
|
||||||
'tag': 'next_or_list',
|
|
||||||
'params': {
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,20 +58,18 @@ class sale_order(osv.Model):
|
||||||
result.update(carrier_id=order.carrier_id.id)
|
result.update(carrier_id=order.carrier_id.id)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def _delivery_unset(self, cr, uid, order, context=None):
|
def _delivery_unset(self, cr, uid, ids, context=None):
|
||||||
line_ids = [line.id for line in order.order_line if line.is_delivery]
|
sale_obj = self.pool['sale.order.line']
|
||||||
self.pool['sale.order.line'].unlink(cr, uid, line_ids, context=context)
|
line_ids = sale_obj.search(cr, uid, [('order_id', 'in', ids), ('is_delivery', '=', True)],context=context)
|
||||||
order.refresh()
|
sale_obj.unlink(cr, uid, line_ids, context=context)
|
||||||
return True
|
|
||||||
|
|
||||||
def delivery_set(self, cr, uid, ids, context=None):
|
def delivery_set(self, cr, uid, ids, context=None):
|
||||||
line_obj = self.pool.get('sale.order.line')
|
line_obj = self.pool.get('sale.order.line')
|
||||||
grid_obj = self.pool.get('delivery.grid')
|
grid_obj = self.pool.get('delivery.grid')
|
||||||
carrier_obj = self.pool.get('delivery.carrier')
|
carrier_obj = self.pool.get('delivery.carrier')
|
||||||
acc_fp_obj = self.pool.get('account.fiscal.position')
|
acc_fp_obj = self.pool.get('account.fiscal.position')
|
||||||
|
self._delivery_unset(cr, uid, ids, context=context)
|
||||||
for order in self.browse(cr, uid, ids, context=context):
|
for order in self.browse(cr, uid, ids, context=context):
|
||||||
self._delivery_unset(cr, uid, order, context=context)
|
|
||||||
grid_id = carrier_obj.grid_get(cr, uid, [order.carrier_id.id], order.partner_shipping_id.id)
|
grid_id = carrier_obj.grid_get(cr, uid, [order.carrier_id.id], order.partner_shipping_id.id)
|
||||||
if not grid_id:
|
if not grid_id:
|
||||||
raise osv.except_osv(_('No Grid Available!'), _('No grid matching for this carrier!'))
|
raise osv.except_osv(_('No Grid Available!'), _('No grid matching for this carrier!'))
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="supplier" position="after">
|
<field name="supplier" position="after">
|
||||||
<field name="speaker"/>
|
<field name="speaker"/>
|
||||||
|
<label for="speaker"/>
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
'installable': True,
|
'installable': True,
|
||||||
'auto_install': False,
|
'auto_install': False,
|
||||||
'js': [
|
'js': [
|
||||||
'static/lib/gapi/client.js',
|
|
||||||
'static/src/js/gdrive.js',
|
'static/src/js/gdrive.js',
|
||||||
],
|
],
|
||||||
'data': [
|
'data': [
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
var gapi=window.gapi=window.gapi||{};gapi._bs=new Date().getTime();(function(){var f=null,g=encodeURIComponent,k=window,m=decodeURIComponent,n="push",r="test",t="shift",u="replace",y="length",B="split",C="join";var D=k,E=document,aa=D.location,ba=function(){},ca=/\[native code\]/,G=function(a,b,c){return a[b]=a[b]||c},da=function(a){for(var b=0;b<this[y];b++)if(this[b]===a)return b;return-1},ea=function(a){a=a.sort();for(var b=[],c=void 0,d=0;d<a[y];d++){var e=a[d];e!=c&&b[n](e);c=e}return b},H=function(){var a;if((a=Object.create)&&ca[r](a))a=a(f);else{a={};for(var b in a)a[b]=void 0}return a},I=G(D,"gapi",{});var J;J=G(D,"___jsl",H());G(J,"I",0);G(J,"hel",10);var K=function(){var a=aa.href,b;if(J.dpo)b=J.h;else{b=J.h;var c=RegExp("([#].*&|[#])jsh=([^&#]*)","g"),d=RegExp("([?#].*&|[?#])jsh=([^&#]*)","g");if(a=a&&(c.exec(a)||d.exec(a)))try{b=m(a[2])}catch(e){}}return b},fa=function(a){var b=G(J,"PQ",[]);J.PQ=[];var c=b[y];if(0===c)a();else for(var d=0,e=function(){++d===c&&a()},h=0;h<c;h++)b[h](e)},L=function(a){return G(G(J,"H",H()),a,H())};var M=G(J,"perf",H()),N=G(M,"g",H()),ga=G(M,"i",H());G(M,"r",[]);H();H();var O=function(a,b,c){var d=M.r;"function"===typeof d?d(a,b,c):d[n]([a,b,c])},Q=function(a,b,c){b&&0<b[y]&&(b=P(b),c&&0<c[y]&&(b+="___"+P(c)),28<b[y]&&(b=b.substr(0,28)+(b[y]-28)),c=b,b=G(ga,"_p",H()),G(b,c,H())[a]=(new Date).getTime(),O(a,"_p",c))},P=function(a){return a[C]("__")[u](/\./g,"_")[u](/\-/g,"_")[u](/\,/g,"_")};var S=H(),T=[],U=function(a){throw Error("Bad hint"+(a?": "+a:""));};T[n](["jsl",function(a){for(var b in a)if(Object.prototype.hasOwnProperty.call(a,b)){var c=a[b];"object"==typeof c?J[b]=G(J,b,[]).concat(c):G(J,b,c)}if(b=a.u)a=G(J,"us",[]),a[n](b),(b=/^https:(.*)$/.exec(b))&&a[n]("http:"+b[1])}]);var ha=/^(\/[a-zA-Z0-9_\-]+)+$/,ia=/^[a-zA-Z0-9\-_\.!]+$/,ja=/^gapi\.loaded_[0-9]+$/,ka=/^[a-zA-Z0-9,._-]+$/,oa=function(a,b,c,d){var e=a[B](";"),h=S[e[t]()],l=f;h&&(l=h(e,b,c,d));if(!(b=!l))b=l,c=b.match(la),d=b.match(ma),b=!(d&&1===d[y]&&na[r](b)&&c&&1===c[y]);b&&U(a);return l},qa=function(a,b,c,d){a=pa(a);ja[r](c)||U("invalid_callback");b=V(b);d=d&&d[y]?V(d):f;var e=function(a){return g(a)[u](/%2C/g,",")};return[g(a.d)[u](/%2C/g,",")[u](/%2F/g,"/"),"/k=",e(a.version),"/m=",e(b),d?"/exm="+e(d):
|
|
||||||
"","/rt=j/sv=1/d=1/ed=1",a.a?"/am="+e(a.a):"",a.b?"/rs="+e(a.b):"","/cb=",e(c)][C]("")},pa=function(a){"/"!==a.charAt(0)&&U("relative path");for(var b=a.substring(1)[B]("/"),c=[];b[y];){a=b[t]();if(!a[y]||0==a.indexOf("."))U("empty/relative directory");else if(0<a.indexOf("=")){b.unshift(a);break}c[n](a)}a={};for(var d=0,e=b[y];d<e;++d){var h=b[d][B]("="),l=m(h[0]),p=m(h[1]);2!=h[y]||(!l||!p)||(a[l]=a[l]||p)}b="/"+c[C]("/");ha[r](b)||U("invalid_prefix");c=W(a,"k",!0);d=W(a,"am");a=W(a,"rs");return{d:b,
|
|
||||||
version:c,a:d,b:a}},V=function(a){for(var b=[],c=0,d=a[y];c<d;++c){var e=a[c][u](/\./g,"_")[u](/-/g,"_");ka[r](e)&&b[n](e)}return b[C](",")},W=function(a,b,c){a=a[b];!a&&c&&U("missing: "+b);if(a){if(ia[r](a))return a;U("invalid: "+b)}return f},na=/^https?:\/\/[a-z0-9_.-]+\.google\.com(:\d+)?\/[a-zA-Z0-9_.,!=\-\/]+$/,ma=/\/cb=/g,la=/\/\//g,ra=function(){var a=K();if(!a)throw Error("Bad hint");return a};S.m=function(a,b,c,d){(a=a[0])||U("missing_hint");return"https://apis.google.com"+qa(a,b,c,d)};var X=decodeURI("%73cript"),Y=function(a,b){for(var c=[],d=0;d<a[y];++d){var e=a[d];e&&0>da.call(b,e)&&c[n](e)}return c},sa=function(a){"loading"!=E.readyState?Z(a):E.write("<"+X+' src="'+encodeURI(a)+'"></'+X+">")},Z=function(a){var b=E.createElement(X);b.setAttribute("src",a);b.async="true";(a=E.getElementsByTagName(X)[0])?a.parentNode.insertBefore(b,a):(E.head||E.body||E.documentElement).appendChild(b)},ta=function(a,b){var c=b&&b._c;if(c)for(var d=0;d<T[y];d++){var e=T[d][0],h=T[d][1];h&&Object.prototype.hasOwnProperty.call(c,
|
|
||||||
e)&&h(c[e],a,b)}},ua=function(a,b){$(function(){var c;c=b===K()?G(I,"_",H()):H();c=G(L(b),"_",c);a(c)})},wa=function(a,b){var c=b||{};"function"==typeof b&&(c={},c.callback=b);ta(a,c);var d=a?a[B](":"):[],e=c.h||ra(),h=G(J,"ah",H());if(!h["::"]||!d[y])va(d||[],c,e);else{for(var l=[],p=f;p=d[t]();){var v=p[B]("."),v=h[p]||h[v[1]&&"ns:"+v[0]||""]||e,s=l[y]&&l[l[y]-1]||f,z=s;if(!s||s.hint!=v)z={hint:v,c:[]},l[n](z);z.c[n](p)}var A=l[y];if(1<A){var F=c.callback;F&&(c.callback=function(){0==--A&&F()})}for(;d=
|
|
||||||
l[t]();)va(d.c,c,d.hint)}},va=function(a,b,c){a=ea(a)||[];var d=b.callback,e=b.config,h=b.timeout,l=b.ontimeout,p=f,v=!1;if(h&&!l||!h&&l)throw"Timeout requires both the timeout parameter and ontimeout parameter to be set";var s=G(L(c),"r",[]).sort(),z=G(L(c),"L",[]).sort(),A=[].concat(s),F=function(a,b){if(v)return 0;D.clearTimeout(p);z[n].apply(z,q);var d=((I||{}).config||{}).update;d?d(e):e&&G(J,"cu",[])[n](e);if(b){Q("me0",a,A);try{ua(b,c)}finally{Q("me1",a,A)}}return 1};0<h&&(p=D.setTimeout(function(){v=
|
|
||||||
!0;l()},h));var q=Y(a,z);if(q[y]){var q=Y(a,s),w=G(J,"CP",[]),x=w[y];w[x]=function(a){if(!a)return 0;Q("ml1",q,A);var b=function(b){w[x]=f;F(q,a)&&fa(function(){d&&d();b()})},c=function(){var a=w[x+1];a&&a()};0<x&&w[x-1]?w[x]=function(){b(c)}:b(c)};if(q[y]){var R="loaded_"+J.I++;I[R]=function(a){w[x](a);I[R]=f};a=oa(c,q,"gapi."+R,s);s[n].apply(s,q);Q("ml0",q,A);b.sync||D.___gapisync?sa(a):Z(a)}else w[x](ba)}else F(q)&&d&&d()};var $=function(a){if(J.hee&&0<J.hel)try{return a()}catch(b){J.hel--,wa("debug_error",function(){k.___jsl.hefn(b)})}else return a()};I.load=function(a,b){return $(function(){return wa(a,b)})};N.bs0=k.gapi._bs||(new Date).getTime();O("bs0");N.bs1=(new Date).getTime();O("bs1");delete k.gapi._bs;})();
|
|
||||||
gapi.load("client",{callback:window["gapi_onload"],_c:{"jsl":{"ci":{"services":{},"deviceType":"desktop","lexps":[102,103,100,71,98,96,110,108,79,106,45,17,86,81,112,61,30],"inline":{"css":1},"report":{},"oauth-flow":{"disableOpt":true,"authUrl":"https://accounts.google.com/o/oauth2/auth","proxyUrl":"https://accounts.google.com/o/oauth2/postmessageRelay","persist":true},"isLoggedIn":true,"isPlusUser":true,"iframes":{"additnow":{"methods":["launchurl"],"url":"https://apis.google.com/additnow/additnow.html?bsv"},"shortlists":{"url":"?bsv"},"plus":{"methods":["onauth"],"url":":socialhost:/u/:session_index:/_/pages/badge?bsv"},":socialhost:":"https://plusone.google.com","recobox":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/recobox?bsv"},"plus_followers":{"params":{"url":""},"url":":socialhost:/_/im/_/widget/render/plus/followers?bsv"},"autocomplete":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/autocomplete?bsv"},"plus_share":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/+1/sharebutton?plusShare\u003dtrue\u0026bsv"},"savetowallet":{"url":"https://clients5.google.com/s2w/o/savetowallet?bsv"},"panoembed":{"url":"https://ssl.gstatic.com/pano/embed/?bsv"},"signin":{"methods":["onauth"],"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/signin?bsv"},"appcirclepicker":{"url":":socialhost:/:session_prefix:_/widget/render/appcirclepicker?bsv"},"commentcount":{"url":":socialhost:/:session_prefix:_/widget/render/commentcount?bsv"},"hangout":{"url":"https://talkgadget.google.com/:session_prefix:talkgadget/_/widget?bsv"},"plus_circle":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/plus/circle?bsv"},"savetodrive":{"methods":["save"],"url":"https://drive.google.com/savetodrivebutton?usegapi\u003d1\u0026bsv"},"card":{"url":":socialhost:/:session_prefix:_/hovercard/card?bsv"},"evwidget":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/events/widget?bsv"},"zoomableimage":{"url":"https://ssl.gstatic.com/microscope/embed/?bsv"},":signuphost:":"https://plus.google.com","plusone":{"preloadUrl":["https://ssl.gstatic.com/s2/oz/images/stars/po/Publisher/sprite4-a67f741843ffc4220554c34bd01bb0bb.png"],"params":{"count":"","size":"","url":""},"url":":socialhost:/:session_prefix:_/+1/fastbutton?bsv"},"comments":{"methods":["scroll","openwindow"],"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/comments?bsv"}},"debug":{"host":"https://plusone.google.com","reportExceptionRate":0.05,"rethrowException":true},"csi":{"rate":0.01},"googleapis.config":{"mobilesignupurl":"https://m.google.com/app/plus/oob?"}},"h":"m;/_/scs/apps-static/_/js/k\u003doz.gapi.en.02N985CHyyc.O/m\u003d__features__/am\u003dIQ/rt\u003dj/d\u003d1/rs\u003dAItRSTPZZ0JVQCv9Qljsu0NQlsb1ZzD2zQ","u":"https://apis.google.com/js/client.js","hee":true,"fp":"e2aa6cd0095417dbec61deca3abed1394160dab3","dpo":false},"fp":"e2aa6cd0095417dbec61deca3abed1394160dab3","annotation":["autocomplete","profile","interactivepost"],"bimodal":["signin"]}});
|
|
|
@ -571,7 +571,7 @@ class hr_payslip(osv.osv):
|
||||||
payslip_obj = Payslips(self.pool, cr, uid, payslip.employee_id.id, payslip)
|
payslip_obj = Payslips(self.pool, cr, uid, payslip.employee_id.id, payslip)
|
||||||
rules_obj = BrowsableObject(self.pool, cr, uid, payslip.employee_id.id, rules)
|
rules_obj = BrowsableObject(self.pool, cr, uid, payslip.employee_id.id, rules)
|
||||||
|
|
||||||
localdict = {'categories': categories_obj, 'rules': rules_obj, 'payslip': payslip_obj, 'worked_days': worked_days_obj, 'inputs': input_obj}
|
baselocaldict = {'categories': categories_obj, 'rules': rules_obj, 'payslip': payslip_obj, 'worked_days': worked_days_obj, 'inputs': input_obj}
|
||||||
#get the ids of the structures on the contracts and their parent id as well
|
#get the ids of the structures on the contracts and their parent id as well
|
||||||
structure_ids = self.pool.get('hr.contract').get_all_structures(cr, uid, contract_ids, context=context)
|
structure_ids = self.pool.get('hr.contract').get_all_structures(cr, uid, contract_ids, context=context)
|
||||||
#get the rules of the structure and thier children
|
#get the rules of the structure and thier children
|
||||||
|
@ -581,11 +581,12 @@ class hr_payslip(osv.osv):
|
||||||
|
|
||||||
for contract in self.pool.get('hr.contract').browse(cr, uid, contract_ids, context=context):
|
for contract in self.pool.get('hr.contract').browse(cr, uid, contract_ids, context=context):
|
||||||
employee = contract.employee_id
|
employee = contract.employee_id
|
||||||
localdict.update({'employee': employee, 'contract': contract})
|
localdict = dict(baselocaldict, employee=employee, contract=contract)
|
||||||
for rule in obj_rule.browse(cr, uid, sorted_rule_ids, context=context):
|
for rule in obj_rule.browse(cr, uid, sorted_rule_ids, context=context):
|
||||||
key = rule.code + '-' + str(contract.id)
|
key = rule.code + '-' + str(contract.id)
|
||||||
localdict['result'] = None
|
localdict['result'] = None
|
||||||
localdict['result_qty'] = 1.0
|
localdict['result_qty'] = 1.0
|
||||||
|
localdict['result_rate'] = 100
|
||||||
#check if the rule can be applied
|
#check if the rule can be applied
|
||||||
if obj_rule.satisfy_condition(cr, uid, rule.id, localdict, context=context) and rule.id not in blacklist:
|
if obj_rule.satisfy_condition(cr, uid, rule.id, localdict, context=context) and rule.id not in blacklist:
|
||||||
#compute the amount of the rule
|
#compute the amount of the rule
|
||||||
|
|
|
@ -5,12 +5,7 @@
|
||||||
<h3 class="oe_slogan">Organize your vacancies and applications</h3>
|
<h3 class="oe_slogan">Organize your vacancies and applications</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
|
||||||
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=website_hr">
|
|
||||||
<img src="">
|
|
||||||
</a>
|
|
||||||
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
<p class='oe_mt32'>
|
<p class='oe_mt32'>
|
||||||
|
|
|
@ -54,11 +54,10 @@ class EscposDriver(Thread):
|
||||||
return connected
|
return connected
|
||||||
|
|
||||||
def lockedstart(self):
|
def lockedstart(self):
|
||||||
self.lock.acquire()
|
with self.lock:
|
||||||
if not self.isAlive():
|
if not self.isAlive():
|
||||||
self.daemon = True
|
self.daemon = True
|
||||||
self.start()
|
self.start()
|
||||||
self.lock.release()
|
|
||||||
|
|
||||||
def get_escpos_printer(self):
|
def get_escpos_printer(self):
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -88,10 +88,10 @@ class Scanner(Thread):
|
||||||
}
|
}
|
||||||
|
|
||||||
def lockedstart(self):
|
def lockedstart(self):
|
||||||
self.lock.acquire()
|
with self.lock:
|
||||||
if not self.isAlive():
|
if not self.isAlive():
|
||||||
|
self.daemon = True
|
||||||
self.start()
|
self.start()
|
||||||
self.lock.release()
|
|
||||||
|
|
||||||
def set_status(self, status, message = None):
|
def set_status(self, status, message = None):
|
||||||
if status == self.status['status']:
|
if status == self.status['status']:
|
||||||
|
|
|
@ -2052,6 +2052,8 @@
|
||||||
<field name="description">VAT-IN-V82-CAR-EXC-C1</field>
|
<field name="description">VAT-IN-V82-CAR-EXC-C1</field>
|
||||||
<field name="name">Frais de voiture - VAT 50% Non Deductible</field>
|
<field name="name">Frais de voiture - VAT 50% Non Deductible</field>
|
||||||
<field name="parent_id" ref="attn_VAT-IN-V82-CAR-EXC"/>
|
<field name="parent_id" ref="attn_VAT-IN-V82-CAR-EXC"/>
|
||||||
|
<field name="account_collected_id" ref="a64012"/>
|
||||||
|
<field name="account_paid_id" ref="a64012"/>
|
||||||
<field name="price_include" eval="0"/>
|
<field name="price_include" eval="0"/>
|
||||||
<field name="amount">0.105</field>
|
<field name="amount">0.105</field>
|
||||||
<field name="type">percent</field>
|
<field name="type">percent</field>
|
||||||
|
|
|
@ -40,11 +40,6 @@
|
||||||
<field name="tax_src_id" ref="tva_normale" />
|
<field name="tax_src_id" ref="tva_normale" />
|
||||||
<field name="tax_dest_id" ref="tva_intra_0" />
|
<field name="tax_dest_id" ref="tva_intra_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_intraeub2b_vt_normale_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_normale_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_intra_0" />
|
|
||||||
</record>
|
|
||||||
<!-- Taux DOM-TOM -->
|
<!-- Taux DOM-TOM -->
|
||||||
<record id="fp_tax_template_intraeub2b_vt_specifique" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_intraeub2b_vt_specifique" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
||||||
|
@ -57,22 +52,12 @@
|
||||||
<field name="tax_src_id" ref="tva_intermediaire" />
|
<field name="tax_src_id" ref="tva_intermediaire" />
|
||||||
<field name="tax_dest_id" ref="tva_intra_0" />
|
<field name="tax_dest_id" ref="tva_intra_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_intraeub2b_vt_intermediaire_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_intermediaire_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_intra_0" />
|
|
||||||
</record>
|
|
||||||
<!-- Taux réduit -->
|
<!-- Taux réduit -->
|
||||||
<record id="fp_tax_template_intraeub2b_vt_reduite" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_intraeub2b_vt_reduite" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
||||||
<field name="tax_src_id" ref="tva_reduite" />
|
<field name="tax_src_id" ref="tva_reduite" />
|
||||||
<field name="tax_dest_id" ref="tva_intra_0" />
|
<field name="tax_dest_id" ref="tva_intra_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_intraeub2b_vt_reduite_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_reduite_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_intra_0" />
|
|
||||||
</record>
|
|
||||||
<!-- Taux super réduit -->
|
<!-- Taux super réduit -->
|
||||||
<record id="fp_tax_template_intraeub2b_vt_super_reduite" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_intraeub2b_vt_super_reduite" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
||||||
|
@ -91,17 +76,6 @@
|
||||||
<field name="tax_src_id" ref="tva_acq_normale" />
|
<field name="tax_src_id" ref="tva_acq_normale" />
|
||||||
<field name="tax_dest_id" ref="tva_acq_intra_normale" />
|
<field name="tax_dest_id" ref="tva_acq_intra_normale" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_intraeub2b_ha_normale_deduc_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_normale_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_intra_normale_temp" />
|
|
||||||
</record>
|
|
||||||
<record id="fp_tax_template_intraeub2b_ha_normale_acq_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_normale_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_acq_intra_normale_temp" />
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- Taux DOM-TOM -->
|
<!-- Taux DOM-TOM -->
|
||||||
<record id="fp_tax_template_intraeub2b_ha_specifique_deduc" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_intraeub2b_ha_specifique_deduc" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
||||||
|
@ -124,17 +98,6 @@
|
||||||
<field name="tax_src_id" ref="tva_acq_intermediaire" />
|
<field name="tax_src_id" ref="tva_acq_intermediaire" />
|
||||||
<field name="tax_dest_id" ref="tva_acq_intra_intermediaire" />
|
<field name="tax_dest_id" ref="tva_acq_intra_intermediaire" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_intraeub2b_ha_intermediaire_deduc_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_intermediaire_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_intra_intermediaire_temp" />
|
|
||||||
</record>
|
|
||||||
<record id="fp_tax_template_intraeub2b_ha_intermediaire_acq_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_intermediaire_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_acq_intra_intermediaire_temp" />
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- Taux réduit -->
|
<!-- Taux réduit -->
|
||||||
<record id="fp_tax_template_intraeub2b_ha_reduite_deduc" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_intraeub2b_ha_reduite_deduc" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
||||||
|
@ -146,17 +109,6 @@
|
||||||
<field name="tax_src_id" ref="tva_acq_reduite" />
|
<field name="tax_src_id" ref="tva_acq_reduite" />
|
||||||
<field name="tax_dest_id" ref="tva_acq_intra_reduite" />
|
<field name="tax_dest_id" ref="tva_acq_intra_reduite" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_intraeub2b_ha_reduite_deduc_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_reduite_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_intra_reduite_temp" />
|
|
||||||
</record>
|
|
||||||
<record id="fp_tax_template_intraeub2b_ha_reduite_acq_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_reduite_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_acq_intra_reduite_temp" />
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- Taux super réduit -->
|
<!-- Taux super réduit -->
|
||||||
<record id="fp_tax_template_intraeub2b_ha_super_reduite_deduc" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_intraeub2b_ha_super_reduite_deduc" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
<field name="position_id" ref="fiscal_position_template_intraeub2b" />
|
||||||
|
@ -177,11 +129,6 @@
|
||||||
<field name="tax_src_id" ref="tva_normale" />
|
<field name="tax_src_id" ref="tva_normale" />
|
||||||
<field name="tax_dest_id" ref="tva_export_0" />
|
<field name="tax_dest_id" ref="tva_export_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_impexp_vt_normale_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
|
||||||
<field name="tax_src_id" ref="tva_normale_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_export_0" />
|
|
||||||
</record>
|
|
||||||
<!-- Taux DOM-TOM -->
|
<!-- Taux DOM-TOM -->
|
||||||
<record id="fp_tax_template_impexp_vt_specifique" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_impexp_vt_specifique" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
<field name="position_id" ref="fiscal_position_template_import_export" />
|
||||||
|
@ -194,22 +141,12 @@
|
||||||
<field name="tax_src_id" ref="tva_intermediaire" />
|
<field name="tax_src_id" ref="tva_intermediaire" />
|
||||||
<field name="tax_dest_id" ref="tva_export_0" />
|
<field name="tax_dest_id" ref="tva_export_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_impexp_vt_intermediaire_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
|
||||||
<field name="tax_src_id" ref="tva_intermediaire_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_export_0" />
|
|
||||||
</record>
|
|
||||||
<!-- Taux Réduit -->
|
<!-- Taux Réduit -->
|
||||||
<record id="fp_tax_template_impexp_vt_reduite" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_impexp_vt_reduite" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
<field name="position_id" ref="fiscal_position_template_import_export" />
|
||||||
<field name="tax_src_id" ref="tva_reduite" />
|
<field name="tax_src_id" ref="tva_reduite" />
|
||||||
<field name="tax_dest_id" ref="tva_export_0" />
|
<field name="tax_dest_id" ref="tva_export_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_impexp_vt_reduite_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
|
||||||
<field name="tax_src_id" ref="tva_reduite_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_export_0" />
|
|
||||||
</record>
|
|
||||||
<!-- Taux super réduit -->
|
<!-- Taux super réduit -->
|
||||||
<record id="fp_tax_template_impexp_vt_super_reduite" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_impexp_vt_super_reduite" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
<field name="position_id" ref="fiscal_position_template_import_export" />
|
||||||
|
@ -224,11 +161,6 @@
|
||||||
<field name="tax_src_id" ref="tva_acq_normale" />
|
<field name="tax_src_id" ref="tva_acq_normale" />
|
||||||
<field name="tax_dest_id" ref="tva_import_0" />
|
<field name="tax_dest_id" ref="tva_import_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_impexp_ha_normale_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_normale_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_import_0" />
|
|
||||||
</record>
|
|
||||||
<!-- Taux DOM-TOM -->
|
<!-- Taux DOM-TOM -->
|
||||||
<record id="fp_tax_template_impexp_ha_specifique" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_impexp_ha_specifique" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
<field name="position_id" ref="fiscal_position_template_import_export" />
|
||||||
|
@ -241,23 +173,12 @@
|
||||||
<field name="tax_src_id" ref="tva_acq_intermediaire" />
|
<field name="tax_src_id" ref="tva_acq_intermediaire" />
|
||||||
<field name="tax_dest_id" ref="tva_import_0" />
|
<field name="tax_dest_id" ref="tva_import_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_impexp_ha_intermediaire_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_intermediaire_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_import_0" />
|
|
||||||
</record>
|
|
||||||
<!-- Taux Réduit -->
|
<!-- Taux Réduit -->
|
||||||
<record id="fp_tax_template_impexp_ha_reduite" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_impexp_ha_reduite" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
<field name="position_id" ref="fiscal_position_template_import_export" />
|
||||||
<field name="tax_src_id" ref="tva_acq_reduite" />
|
<field name="tax_src_id" ref="tva_acq_reduite" />
|
||||||
<field name="tax_dest_id" ref="tva_import_0" />
|
<field name="tax_dest_id" ref="tva_import_0" />
|
||||||
</record>
|
</record>
|
||||||
<record id="fp_tax_template_impexp_ha_reduite_temp" model="account.fiscal.position.tax.template">
|
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
|
||||||
<field name="tax_src_id" ref="tva_acq_reduite_temp" />
|
|
||||||
<field name="tax_dest_id" ref="tva_import_0" />
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- Taux super réduit -->
|
<!-- Taux super réduit -->
|
||||||
<record id="fp_tax_template_impexp_ha_super_reduite" model="account.fiscal.position.tax.template">
|
<record id="fp_tax_template_impexp_ha_super_reduite" model="account.fiscal.position.tax.template">
|
||||||
<field name="position_id" ref="fiscal_position_template_import_export" />
|
<field name="position_id" ref="fiscal_position_template_import_export" />
|
||||||
|
|
|
@ -30,28 +30,6 @@
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_normale_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA collectée (vente) 19,6%</field>
|
|
||||||
<field name="description">19.6</field>
|
|
||||||
<field name="amount" eval="0.196"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_col_196_ht"/>
|
|
||||||
<field name="base_sign" eval="1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_col_196"/>
|
|
||||||
<field name="tax_sign" eval="1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445711"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445711"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_col_196_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="-1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_col_196"/>
|
|
||||||
<field name="ref_tax_sign" eval="-1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">sale</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_specifique">
|
<record model="account.tax.template" id="tva_specifique">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA collectée (vente) 8,5%</field>
|
<field name="name">TVA collectée (vente) 8,5%</field>
|
||||||
|
@ -96,51 +74,7 @@
|
||||||
<field name="type_tax_use">sale</field>
|
<field name="type_tax_use">sale</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_intermediaire_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA collectée (vente) 7,0%</field>
|
|
||||||
<field name="description">7.0</field>
|
|
||||||
<field name="amount" eval="0.07"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_col_70_ht"/>
|
|
||||||
<field name="base_sign" eval="1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_col_70"/>
|
|
||||||
<field name="tax_sign" eval="1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445712"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445712"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_col_70_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="-1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_col_70"/>
|
|
||||||
<field name="ref_tax_sign" eval="-1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">sale</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_reduite">
|
<record model="account.tax.template" id="tva_reduite">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA collectée (vente) 5,0%</field>
|
|
||||||
<field name="description">5.0</field>
|
|
||||||
<field name="amount" eval="0.050"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_col_50_ht"/>
|
|
||||||
<field name="base_sign" eval="1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_col_50"/>
|
|
||||||
<field name="tax_sign" eval="1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445713"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445713"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_col_50_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="-1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_col_50"/>
|
|
||||||
<field name="ref_tax_sign" eval="-1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">sale</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_reduite_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA collectée (vente) 5,5%</field>
|
<field name="name">TVA collectée (vente) 5,5%</field>
|
||||||
<field name="description">5.5</field>
|
<field name="description">5.5</field>
|
||||||
|
@ -208,28 +142,6 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_normale_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déductible (achat) 19,6%</field>
|
|
||||||
<field name="description">ACH-19.6</field>
|
|
||||||
<field name="amount" eval="0.196"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_acq_196_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_acq_196"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44566"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44566"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_acq_196_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_acq_196"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_specifique">
|
<record model="account.tax.template" id="tva_acq_specifique">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA déductible (achat) 8,5%</field>
|
<field name="name">TVA déductible (achat) 8,5%</field>
|
||||||
|
@ -274,51 +186,7 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_intermediaire_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déductible (achat) 7,0%</field>
|
|
||||||
<field name="description">ACH-7.0</field>
|
|
||||||
<field name="amount" eval="0.07"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_acq_70_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_acq_70"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44566"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44566"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_acq_70_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_acq_70"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_reduite">
|
<record model="account.tax.template" id="tva_acq_reduite">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déductible (achat) 5,0%</field>
|
|
||||||
<field name="description">ACH-5.0</field>
|
|
||||||
<field name="amount" eval="0.050"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_acq_50_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_acq_50"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44566"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44566"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_acq_50_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_acq_50"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_reduite_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA déductible (achat) 5,5%</field>
|
<field name="name">TVA déductible (achat) 5,5%</field>
|
||||||
<field name="description">ACH-5.5</field>
|
<field name="description">ACH-5.5</field>
|
||||||
|
@ -387,29 +255,6 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_normale_TTC_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déductible (achat) 19,6% TTC</field>
|
|
||||||
<field name="description">ACH-19.6-TTC</field>
|
|
||||||
<field name="price_include" eval="1"/>
|
|
||||||
<field name="amount" eval="0.196"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_acq_196_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_acq_196"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44566"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44566"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_acq_196_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_acq_196"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_specifique_TTC">
|
<record model="account.tax.template" id="tva_acq_specifique_TTC">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA déductible (achat) 8,5% TTC</field>
|
<field name="name">TVA déductible (achat) 8,5% TTC</field>
|
||||||
|
@ -456,53 +301,7 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_intermediaire_TTC_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déductible (achat) 7,0% TTC</field>
|
|
||||||
<field name="description">ACH-7.0-TTC</field>
|
|
||||||
<field name="price_include" eval="1"/>
|
|
||||||
<field name="amount" eval="0.07"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_acq_70_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_acq_70"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44566"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44566"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_acq_70_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_acq_70"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_reduite_TTC">
|
<record model="account.tax.template" id="tva_acq_reduite_TTC">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déductible (achat) 5,0% TTC</field>
|
|
||||||
<field name="description">ACH-5.0-TTC</field>
|
|
||||||
<field name="price_include" eval="1"/>
|
|
||||||
<field name="amount" eval="0.050"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_acq_50_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_acq_50"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44566"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44566"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_acq_50_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_acq_50"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_reduite_TTC_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA déductible (achat) 5,5% TTC</field>
|
<field name="name">TVA déductible (achat) 5,5% TTC</field>
|
||||||
<field name="description">ACH-5.5-TTC</field>
|
<field name="description">ACH-5.5-TTC</field>
|
||||||
|
@ -573,28 +372,6 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_imm_normale_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déd./immobilisation (achat) 19,6%</field>
|
|
||||||
<field name="description">IMMO-19.6</field>
|
|
||||||
<field name="amount" eval="0.196"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_imm_196_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_imm_196"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44562"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44562"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_imm_196_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_imm_196"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_imm_specifique">
|
<record model="account.tax.template" id="tva_imm_specifique">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA déd./immobilisation (achat) 8,5%</field>
|
<field name="name">TVA déd./immobilisation (achat) 8,5%</field>
|
||||||
|
@ -639,51 +416,7 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_imm_intermediaire_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déd./immobilisation (achat) 7,0%</field>
|
|
||||||
<field name="description">IMMO-7.0</field>
|
|
||||||
<field name="amount" eval="0.07"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_imm_70_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_imm_70"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44562"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44562"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_imm_70_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_imm_70"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_imm_reduite">
|
<record model="account.tax.template" id="tva_imm_reduite">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déd./immobilisation (achat) 5,0%</field>
|
|
||||||
<field name="description">IMMO-5.0</field>
|
|
||||||
<field name="amount" eval="0.050"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_imm_50_ht"/>
|
|
||||||
<field name="base_sign" eval="-1"/>
|
|
||||||
<field name="tax_code_id" ref="tax_imm_50"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_44562"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_44562"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_imm_50_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_imm_50"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_imm_reduite_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA déd./immobilisation (achat) 5,5%</field>
|
<field name="name">TVA déd./immobilisation (achat) 5,5%</field>
|
||||||
<field name="description">IMMO-5.5</field>
|
<field name="description">IMMO-5.5</field>
|
||||||
|
@ -751,28 +484,6 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_intra_normale_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA due s/ acq. intracommunautaire (achat) 19,6%</field> <!-- ventes -->
|
|
||||||
<field name="description">ACH_UE_due-19.6</field>
|
|
||||||
<field name="amount" eval="-0.196"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_intra_196_ht"/>
|
|
||||||
<field name="base_sign" eval="-1" />
|
|
||||||
<field name="tax_code_id" ref="tax_intra_196"/>
|
|
||||||
<field name="tax_sign" eval="-1" />
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445201"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445201"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_intra_196_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_intra_196"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_intra_specifique">
|
<record model="account.tax.template" id="tva_intra_specifique">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA due s/ acq. intracommunautaire (achat) 8,5%</field>
|
<field name="name">TVA due s/ acq. intracommunautaire (achat) 8,5%</field>
|
||||||
|
@ -817,51 +528,7 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_intra_intermediaire_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA due s/ acq. intracommunautaire (achat) 7,0%</field>
|
|
||||||
<field name="description">ACH_UE_due-7.0</field>
|
|
||||||
<field name="amount" eval="-0.07"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_intra_70_ht"/>
|
|
||||||
<field name="base_sign" eval="-1" />
|
|
||||||
<field name="tax_code_id" ref="tax_intra_70"/>
|
|
||||||
<field name="tax_sign" eval="-1" />
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445202"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445202"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_intra_70_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_intra_70"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_intra_reduite">
|
<record model="account.tax.template" id="tva_intra_reduite">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA due s/ acq. intracommunautaire (achat) 5,0%</field>
|
|
||||||
<field name="description">ACH_UE_due-5.0</field>
|
|
||||||
<field name="amount" eval="-0.050"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="base_code_id" ref="tax_intra_50_ht"/>
|
|
||||||
<field name="base_sign" eval="-1" />
|
|
||||||
<field name="tax_code_id" ref="tax_intra_50"/>
|
|
||||||
<field name="tax_sign" eval="-1" />
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445203"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445203"/>
|
|
||||||
|
|
||||||
<field name="ref_base_code_id" ref="tax_intra_50_ht"/>
|
|
||||||
<field name="ref_base_sign" eval="1"/>
|
|
||||||
<field name="ref_tax_code_id" ref="tax_intra_50"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_intra_reduite_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA due s/ acq. intracommunautaire (achat) 5,5%</field>
|
<field name="name">TVA due s/ acq. intracommunautaire (achat) 5,5%</field>
|
||||||
<field name="description">ACH_UE_due-5.5</field>
|
<field name="description">ACH_UE_due-5.5</field>
|
||||||
|
@ -925,24 +592,6 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_intra_normale_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déd. s/ acq. intracommunautaire (achat) 19,6%</field>
|
|
||||||
<field name="description">ACH_UE_ded.-19.6</field>
|
|
||||||
<field name="amount" eval="0.196"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="tax_code_id" ref="tax_intra_acq_196"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445662"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445662"/>
|
|
||||||
|
|
||||||
<field name="ref_tax_code_id" ref="tax_intra_acq_196"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_intra_specifique">
|
<record model="account.tax.template" id="tva_acq_intra_specifique">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA déd. s/ acq. intracommunautaire (achat) 8,5%</field>
|
<field name="name">TVA déd. s/ acq. intracommunautaire (achat) 8,5%</field>
|
||||||
|
@ -979,43 +628,7 @@
|
||||||
<field name="type_tax_use">purchase</field>
|
<field name="type_tax_use">purchase</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_intra_intermediaire_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déd. s/ acq. intracommunautaire (achat) 7,0%</field>
|
|
||||||
<field name="description">ACH_UE_ded.-7.0</field>
|
|
||||||
<field name="amount" eval="0.07"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="tax_code_id" ref="tax_intra_acq_70"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445662"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445662"/>
|
|
||||||
|
|
||||||
<field name="ref_tax_code_id" ref="tax_intra_acq_70"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_intra_reduite">
|
<record model="account.tax.template" id="tva_acq_intra_reduite">
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
|
||||||
<field name="name">TVA déd. s/ acq. intracommunautaire (achat) 5,0%</field>
|
|
||||||
<field name="description">ACH_UE_ded.-5.0</field>
|
|
||||||
<field name="amount" eval="0.050"/>
|
|
||||||
<field name="type">percent</field>
|
|
||||||
<field name="tax_code_id" ref="tax_intra_acq_50"/>
|
|
||||||
<field name="tax_sign" eval="-1"/>
|
|
||||||
|
|
||||||
<field name="account_collected_id" ref="pcg_445662"/>
|
|
||||||
<field name="account_paid_id" ref="pcg_445662"/>
|
|
||||||
|
|
||||||
<field name="ref_tax_code_id" ref="tax_intra_acq_50"/>
|
|
||||||
<field name="ref_tax_sign" eval="1"/>
|
|
||||||
<field name="sequence" eval="10"/>
|
|
||||||
<field name="type_tax_use">purchase</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<record model="account.tax.template" id="tva_acq_intra_reduite_temp">
|
|
||||||
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
<field name="chart_template_id" ref="l10n_fr_pcg_chart_template"/>
|
||||||
<field name="name">TVA déd. s/ acq. intracommunautaire (achat) 5,5%</field>
|
<field name="name">TVA déd. s/ acq. intracommunautaire (achat) 5,5%</field>
|
||||||
<field name="description">ACH_UE_ded.-5.5</field>
|
<field name="description">ACH_UE_ded.-5.5</field>
|
||||||
|
|
|
@ -44,8 +44,6 @@ Con la Colaboración de
|
||||||
],
|
],
|
||||||
"demo_xml": [
|
"demo_xml": [
|
||||||
],
|
],
|
||||||
"data": [
|
|
||||||
],
|
|
||||||
"active": False,
|
"active": False,
|
||||||
"installable": True,
|
"installable": True,
|
||||||
"certificate" : "",
|
"certificate" : "",
|
||||||
|
|
|
@ -76,8 +76,6 @@ Dashboard / Reports for MRP will include:
|
||||||
'views/report_mrpbomstructure.xml',
|
'views/report_mrpbomstructure.xml',
|
||||||
],
|
],
|
||||||
'demo': ['mrp_demo.xml'],
|
'demo': ['mrp_demo.xml'],
|
||||||
#TODO: This yml tests are needed to be completely reviewed again because the product wood panel is removed in product demo as it does not suit for new demo context of computer and consultant company
|
|
||||||
# so the ymls are too complex to change at this stage
|
|
||||||
'test': [
|
'test': [
|
||||||
'test/bom_with_service_type_product.yml',
|
'test/bom_with_service_type_product.yml',
|
||||||
'test/mrp_users.yml',
|
'test/mrp_users.yml',
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
|
access_account_analytic_line_user,account.analytic.line,account.model_account_analytic_line,group_mrp_user,1,1,1,0
|
||||||
access_mrp_workcenter,mrp.workcenter,model_mrp_workcenter,mrp.group_mrp_user,1,0,0,0
|
access_mrp_workcenter,mrp.workcenter,model_mrp_workcenter,mrp.group_mrp_user,1,0,0,0
|
||||||
access_mrp_routing,mrp.routing,model_mrp_routing,mrp.group_mrp_user,1,0,0,0
|
access_mrp_routing,mrp.routing,model_mrp_routing,mrp.group_mrp_user,1,0,0,0
|
||||||
access_mrp_routing_workcenter,mrp.routing.workcenter,model_mrp_routing_workcenter,mrp.group_mrp_user,1,0,0,0
|
access_mrp_routing_workcenter,mrp.routing.workcenter,model_mrp_routing_workcenter,mrp.group_mrp_user,1,0,0,0
|
||||||
|
|
|
|
@ -517,7 +517,8 @@ class pos_order(osv.osv):
|
||||||
|
|
||||||
# Keep only new orders
|
# Keep only new orders
|
||||||
submitted_references = [o['data']['name'] for o in orders]
|
submitted_references = [o['data']['name'] for o in orders]
|
||||||
existing_orders = self.search_read(cr, uid, domain=[('pos_reference', 'in', submitted_references)], fields=['pos_reference'], context=context)
|
existing_order_ids = self.search(cr, uid, [('pos_reference', 'in', submitted_references)], context=context)
|
||||||
|
existing_orders = self.read(cr, uid, existing_order_ids, ['pos_reference'], context=context)
|
||||||
existing_references = set([o['pos_reference'] for o in existing_orders])
|
existing_references = set([o['pos_reference'] for o in existing_orders])
|
||||||
orders_to_save = [o for o in orders if o['data']['name'] not in existing_references]
|
orders_to_save = [o for o in orders if o['data']['name'] not in existing_references]
|
||||||
|
|
||||||
|
|
|
@ -439,7 +439,8 @@ class procurement_order(osv.osv):
|
||||||
if len(to_cancel):
|
if len(to_cancel):
|
||||||
move_obj.action_cancel(cr, uid, to_cancel)
|
move_obj.action_cancel(cr, uid, to_cancel)
|
||||||
if len(to_assign):
|
if len(to_assign):
|
||||||
move_obj.write(cr, uid, to_assign, {'state': 'assigned'})
|
move_obj.write(cr, uid, to_assign, {'state': 'confirmed'})
|
||||||
|
move_obj.action_assign(cr, uid, to_assign)
|
||||||
self.write(cr, uid, ids, {'state': 'cancel'})
|
self.write(cr, uid, ids, {'state': 'cancel'})
|
||||||
for id in ids:
|
for id in ids:
|
||||||
workflow.trg_trigger(uid, 'procurement.order', id, cr)
|
workflow.trg_trigger(uid, 'procurement.order', id, cr)
|
||||||
|
|
|
@ -10,7 +10,7 @@ Add email templates to products to be send on invoice confirmation
|
||||||
==================================================================
|
==================================================================
|
||||||
|
|
||||||
With this module, link your products to a template to send complete information and tools to your customer.
|
With this module, link your products to a template to send complete information and tools to your customer.
|
||||||
For instance when invoicing a training, the training agenda and materials will automatically be send to your customers.'
|
For instance when invoicing a training, the training agenda and materials will automatically be sent to your customers.'
|
||||||
""",
|
""",
|
||||||
'website': 'http://www.openerp.com',
|
'website': 'http://www.openerp.com',
|
||||||
'demo': [
|
'demo': [
|
||||||
|
|
|
@ -13,7 +13,7 @@ class product_template(osv.Model):
|
||||||
_columns = {
|
_columns = {
|
||||||
'email_template_id': fields.many2one(
|
'email_template_id': fields.many2one(
|
||||||
'email.template', 'Product Email Template',
|
'email.template', 'Product Email Template',
|
||||||
help='When validating an invoice, an email will be send to the customer'
|
help='When validating an invoice, an email will be sent to the customer'
|
||||||
'based on this template. The customer will receive an email for each'
|
'based on this template. The customer will receive an email for each'
|
||||||
'product linked to an email template.'),
|
'product linked to an email template.'),
|
||||||
}
|
}
|
||||||
|
|
|
@ -287,7 +287,9 @@ class project(osv.osv):
|
||||||
"- Followers Only: employees see only the followed tasks or issues; if portal\n"
|
"- Followers Only: employees see only the followed tasks or issues; if portal\n"
|
||||||
" is activated, portal users see the followed tasks or issues."),
|
" is activated, portal users see the followed tasks or issues."),
|
||||||
'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'), ('cancelled', 'Cancelled'),('pending','Pending'),('close','Closed')], 'Status', required=True,),
|
'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'), ('cancelled', 'Cancelled'),('pending','Pending'),('close','Closed')], 'Status', required=True,),
|
||||||
'doc_count':fields.function(_get_attached_docs, string="Number of documents attached", type='int')
|
'doc_count': fields.function(
|
||||||
|
_get_attached_docs, string="Number of documents attached", type='integer'
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_type_common(self, cr, uid, context):
|
def _get_type_common(self, cr, uid, context):
|
||||||
|
@ -723,6 +725,7 @@ class task(osv.osv):
|
||||||
context = {}
|
context = {}
|
||||||
if default is None:
|
if default is None:
|
||||||
default = {}
|
default = {}
|
||||||
|
if not context.get('copy', False):
|
||||||
stage = self._get_default_stage_id(cr, uid, context=context)
|
stage = self._get_default_stage_id(cr, uid, context=context)
|
||||||
if stage:
|
if stage:
|
||||||
default['stage_id'] = stage
|
default['stage_id'] = stage
|
||||||
|
@ -749,7 +752,7 @@ class task(osv.osv):
|
||||||
'description': fields.text('Description'),
|
'description': fields.text('Description'),
|
||||||
'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Important'), ('0','Very important')], 'Priority', select=True),
|
'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Important'), ('0','Very important')], 'Priority', select=True),
|
||||||
'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of tasks."),
|
'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of tasks."),
|
||||||
'stage_id': fields.many2one('project.task.type', 'Stage', track_visibility='onchange',
|
'stage_id': fields.many2one('project.task.type', 'Stage', track_visibility='onchange', select=True,
|
||||||
domain="[('project_ids', '=', project_id)]"),
|
domain="[('project_ids', '=', project_id)]"),
|
||||||
'categ_ids': fields.many2many('project.category', string='Tags'),
|
'categ_ids': fields.many2many('project.category', string='Tags'),
|
||||||
'kanban_state': fields.selection([('normal', 'Normal'),('blocked', 'Blocked'),('done', 'Ready for next stage')], 'Kanban State',
|
'kanban_state': fields.selection([('normal', 'Normal'),('blocked', 'Blocked'),('done', 'Ready for next stage')], 'Kanban State',
|
||||||
|
@ -765,7 +768,7 @@ class task(osv.osv):
|
||||||
'date_end': fields.datetime('Ending Date',select=True),
|
'date_end': fields.datetime('Ending Date',select=True),
|
||||||
'date_deadline': fields.date('Deadline',select=True),
|
'date_deadline': fields.date('Deadline',select=True),
|
||||||
'date_last_stage_update': fields.datetime('Last Stage Update', select=True),
|
'date_last_stage_update': fields.datetime('Last Stage Update', select=True),
|
||||||
'project_id': fields.many2one('project.project', 'Project', ondelete='set null', select="1", track_visibility='onchange', change_default=True),
|
'project_id': fields.many2one('project.project', 'Project', ondelete='set null', select=True, track_visibility='onchange', change_default=True),
|
||||||
'parent_ids': fields.many2many('project.task', 'project_task_parent_rel', 'task_id', 'parent_id', 'Parent Tasks'),
|
'parent_ids': fields.many2many('project.task', 'project_task_parent_rel', 'task_id', 'parent_id', 'Parent Tasks'),
|
||||||
'child_ids': fields.many2many('project.task', 'project_task_parent_rel', 'parent_id', 'task_id', 'Delegated Tasks'),
|
'child_ids': fields.many2many('project.task', 'project_task_parent_rel', 'parent_id', 'task_id', 'Delegated Tasks'),
|
||||||
'notes': fields.text('Notes'),
|
'notes': fields.text('Notes'),
|
||||||
|
@ -791,7 +794,7 @@ class task(osv.osv):
|
||||||
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10),
|
'project.task': (lambda self, cr, uid, ids, c={}: ids, ['work_ids', 'remaining_hours', 'planned_hours'], 10),
|
||||||
'project.task.work': (_get_task, ['hours'], 10),
|
'project.task.work': (_get_task, ['hours'], 10),
|
||||||
}),
|
}),
|
||||||
'user_id': fields.many2one('res.users', 'Assigned to', track_visibility='onchange'),
|
'user_id': fields.many2one('res.users', 'Assigned to', select=True, track_visibility='onchange'),
|
||||||
'delegated_user_id': fields.related('child_ids', 'user_id', type='many2one', relation='res.users', string='Delegated To'),
|
'delegated_user_id': fields.related('child_ids', 'user_id', type='many2one', relation='res.users', string='Delegated To'),
|
||||||
'partner_id': fields.many2one('res.partner', 'Customer'),
|
'partner_id': fields.many2one('res.partner', 'Customer'),
|
||||||
'work_ids': fields.one2many('project.task.work', 'task_id', 'Work done'),
|
'work_ids': fields.one2many('project.task.work', 'task_id', 'Work done'),
|
||||||
|
@ -1045,7 +1048,7 @@ class task(osv.osv):
|
||||||
if vals.get('project_id') and not context.get('default_project_id'):
|
if vals.get('project_id') and not context.get('default_project_id'):
|
||||||
context['default_project_id'] = vals.get('project_id')
|
context['default_project_id'] = vals.get('project_id')
|
||||||
# user_id change: update date_start
|
# user_id change: update date_start
|
||||||
if vals.get('user_id'):
|
if vals.get('user_id') and not vals.get('start_date'):
|
||||||
vals['date_start'] = fields.datetime.now()
|
vals['date_start'] = fields.datetime.now()
|
||||||
|
|
||||||
# context: no_log, because subtype already handle this
|
# context: no_log, because subtype already handle this
|
||||||
|
@ -1062,7 +1065,7 @@ class task(osv.osv):
|
||||||
if 'stage_id' in vals:
|
if 'stage_id' in vals:
|
||||||
vals['date_last_stage_update'] = fields.datetime.now()
|
vals['date_last_stage_update'] = fields.datetime.now()
|
||||||
# user_id change: update date_start
|
# user_id change: update date_start
|
||||||
if vals.get('user_id'):
|
if vals.get('user_id') and 'date_start' not in vals:
|
||||||
vals['date_start'] = fields.datetime.now()
|
vals['date_start'] = fields.datetime.now()
|
||||||
|
|
||||||
# Overridden to reset the kanban_state to normal whenever
|
# Overridden to reset the kanban_state to normal whenever
|
||||||
|
|
|
@ -381,7 +381,7 @@
|
||||||
</h1>
|
</h1>
|
||||||
<group>
|
<group>
|
||||||
<group>
|
<group>
|
||||||
<field name="project_id" on_change="onchange_project(project_id)" context="{'default_use_tasks':1}"/>
|
<field name="project_id" domain="[('state', '!=', 'close')]" on_change="onchange_project(project_id)" context="{'default_use_tasks':1}"/>
|
||||||
<field name="user_id"
|
<field name="user_id"
|
||||||
options='{"no_open": True}'
|
options='{"no_open": True}'
|
||||||
context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'project.group_project_user']}"/>
|
context="{'default_groups_ref': ['base.group_user', 'base.group_partner_manager', 'project.group_project_user']}"/>
|
||||||
|
|
|
@ -264,9 +264,9 @@ class project_issue(osv.Model):
|
||||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
|
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
|
||||||
'version_id': fields.many2one('project.issue.version', 'Version'),
|
'version_id': fields.many2one('project.issue.version', 'Version'),
|
||||||
'stage_id': fields.many2one ('project.task.type', 'Stage',
|
'stage_id': fields.many2one ('project.task.type', 'Stage',
|
||||||
track_visibility='onchange',
|
track_visibility='onchange', select=True,
|
||||||
domain="[('project_ids', '=', project_id)]"),
|
domain="[('project_ids', '=', project_id)]"),
|
||||||
'project_id':fields.many2one('project.project', 'Project', track_visibility='onchange'),
|
'project_id': fields.many2one('project.project', 'Project', track_visibility='onchange', select=True),
|
||||||
'duration': fields.float('Duration'),
|
'duration': fields.float('Duration'),
|
||||||
'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]"),
|
'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]"),
|
||||||
'day_open': fields.function(_compute_day, string='Days to Open', \
|
'day_open': fields.function(_compute_day, string='Days to Open', \
|
||||||
|
|
|
@ -62,7 +62,7 @@ class purchase_config_settings(osv.osv_memory):
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'default_invoice_method': 'manual',
|
'default_invoice_method': 'order',
|
||||||
}
|
}
|
||||||
|
|
||||||
def onchange_purchase_analytic_plans(self, cr, uid, ids, module_purchase_analytic_plans, context=None):
|
def onchange_purchase_analytic_plans(self, cr, uid, ids, module_purchase_analytic_plans, context=None):
|
||||||
|
|
|
@ -107,7 +107,7 @@ class purchase_requisition(osv.osv):
|
||||||
seller_delay = product_supplier.delay
|
seller_delay = product_supplier.delay
|
||||||
seller_qty = product_supplier.qty
|
seller_qty = product_supplier.qty
|
||||||
supplier_pricelist = supplier.property_product_pricelist_purchase or False
|
supplier_pricelist = supplier.property_product_pricelist_purchase or False
|
||||||
seller_price = pricelist.price_get(cr, uid, [supplier_pricelist.id], product.id, qty, False, {'uom': default_uom_po_id})[supplier_pricelist.id]
|
seller_price = pricelist.price_get(cr, uid, [supplier_pricelist.id], product.id, qty, supplier.id, {'uom': default_uom_po_id})[supplier_pricelist.id]
|
||||||
if seller_qty:
|
if seller_qty:
|
||||||
qty = max(qty,seller_qty)
|
qty = max(qty,seller_qty)
|
||||||
date_planned = self._planned_date(requisition_line.requisition_id, seller_delay)
|
date_planned = self._planned_date(requisition_line.requisition_id, seller_delay)
|
||||||
|
|
|
@ -500,7 +500,7 @@ class sale_order(osv.osv):
|
||||||
lines.append(line.id)
|
lines.append(line.id)
|
||||||
created_lines = obj_sale_order_line.invoice_line_create(cr, uid, lines)
|
created_lines = obj_sale_order_line.invoice_line_create(cr, uid, lines)
|
||||||
if created_lines:
|
if created_lines:
|
||||||
invoices.setdefault(o.partner_id.id, []).append((o, created_lines))
|
invoices.setdefault(o.partner_invoice_id.id or o.partner_id.id, []).append((o, created_lines))
|
||||||
if not invoices:
|
if not invoices:
|
||||||
for o in self.browse(cr, uid, ids, context=context):
|
for o in self.browse(cr, uid, ids, context=context):
|
||||||
for i in o.invoice_ids:
|
for i in o.invoice_ids:
|
||||||
|
|
|
@ -101,7 +101,6 @@ class sale_order_line_make_invoice(osv.osv_memory):
|
||||||
break
|
break
|
||||||
if flag:
|
if flag:
|
||||||
workflow.trg_validate(uid, 'sale.order', order.id, 'manual_invoice', cr)
|
workflow.trg_validate(uid, 'sale.order', order.id, 'manual_invoice', cr)
|
||||||
sales_order_obj.write(cr, uid, [order.id], {'state': 'progress'})
|
|
||||||
|
|
||||||
if not invoices:
|
if not invoices:
|
||||||
raise osv.except_osv(_('Warning!'), _('Invoice cannot be created for this Sales Order Line due to one of the following reasons:\n1.The state of this sales order line is either "draft" or "cancel"!\n2.The Sales Order Line is Invoiced!'))
|
raise osv.except_osv(_('Warning!'), _('Invoice cannot be created for this Sales Order Line due to one of the following reasons:\n1.The state of this sales order line is either "draft" or "cancel"!\n2.The Sales Order Line is Invoiced!'))
|
||||||
|
|
|
@ -19,21 +19,7 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from openerp.osv import fields, osv
|
from openerp.osv import fields, osv
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
class res_groups(osv.osv):
|
|
||||||
_name = "res.groups"
|
|
||||||
_inherit = 'res.groups'
|
|
||||||
_columns = {
|
|
||||||
'share': fields.boolean('Share Group', readonly=True,
|
|
||||||
help="Group created to set access rights for sharing data with some users.")
|
|
||||||
}
|
|
||||||
|
|
||||||
def get_application_groups(self, cr, uid, domain=None, context=None):
|
|
||||||
if domain is None:
|
|
||||||
domain = []
|
|
||||||
domain.append(('share', '=', False))
|
|
||||||
return super(res_groups, self).get_application_groups(cr, uid, domain=domain, context=context)
|
|
||||||
|
|
||||||
|
|
||||||
class res_users(osv.osv):
|
class res_users(osv.osv):
|
||||||
_name = 'res.users'
|
_name = 'res.users'
|
||||||
|
@ -59,4 +45,28 @@ class res_users(osv.osv):
|
||||||
}, help="External user with limited access, created only for the purpose of sharing data."),
|
}, help="External user with limited access, created only for the purpose of sharing data."),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class res_groups(osv.osv):
|
||||||
|
_name = "res.groups"
|
||||||
|
_inherit = 'res.groups'
|
||||||
|
_columns = {
|
||||||
|
'share': fields.boolean('Share Group', readonly=True,
|
||||||
|
help="Group created to set access rights for sharing data with some users.")
|
||||||
|
}
|
||||||
|
|
||||||
|
def init(self, cr):
|
||||||
|
# force re-generation of the user groups view without the shared groups
|
||||||
|
self.update_user_groups_view(cr, SUPERUSER_ID)
|
||||||
|
parent_class = super(res_groups, self)
|
||||||
|
if hasattr(parent_class, 'init'):
|
||||||
|
parent_class.init(cr)
|
||||||
|
|
||||||
|
def get_application_groups(self, cr, uid, domain=None, context=None):
|
||||||
|
if domain is None:
|
||||||
|
domain = []
|
||||||
|
domain.append(('share', '=', False))
|
||||||
|
return super(res_groups, self).get_application_groups(cr, uid, domain=domain, context=context)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -66,7 +66,7 @@ class ir_http(orm.AbstractModel):
|
||||||
|
|
||||||
def reroute(self, path):
|
def reroute(self, path):
|
||||||
if not hasattr(request, 'rerouting'):
|
if not hasattr(request, 'rerouting'):
|
||||||
request.rerouting = []
|
request.rerouting = [request.httprequest.path]
|
||||||
if path in request.rerouting:
|
if path in request.rerouting:
|
||||||
raise Exception("Rerouting loop is forbidden")
|
raise Exception("Rerouting loop is forbidden")
|
||||||
request.rerouting.append(path)
|
request.rerouting.append(path)
|
||||||
|
|
|
@ -157,7 +157,7 @@ class DateTime(orm.AbstractModel):
|
||||||
value = datetime.datetime.strptime(
|
value = datetime.datetime.strptime(
|
||||||
value, DEFAULT_SERVER_DATETIME_FORMAT)
|
value, DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
if value:
|
if value:
|
||||||
value = column.context_timestamp(
|
value = fields.datetime.context_timestamp(
|
||||||
cr, uid, timestamp=value, context=context)
|
cr, uid, timestamp=value, context=context)
|
||||||
value = value.strftime(openerp.tools.DEFAULT_SERVER_DATETIME_FORMAT)
|
value = value.strftime(openerp.tools.DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
<div class="oe_demo oe_picture oe_screenshot">
|
||||||
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=website_blog">
|
|
||||||
<img src="blog_cover.png">
|
<img src="blog_cover.png">
|
||||||
</a>
|
|
||||||
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
|
|
|
@ -6,10 +6,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
<div class="oe_demo oe_picture oe_screenshot">
|
||||||
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=website">
|
|
||||||
<img src="contact.png">
|
<img src="contact.png">
|
||||||
</a>
|
|
||||||
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
|
|
|
@ -6,10 +6,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
<div class="oe_demo oe_picture oe_screenshot">
|
||||||
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=website_event">
|
|
||||||
<img src="event_top.png">
|
<img src="event_top.png">
|
||||||
</a>
|
|
||||||
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
|
|
|
@ -6,10 +6,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
<div class="oe_demo oe_picture oe_screenshot">
|
||||||
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=website_event">
|
|
||||||
<img src="event.png">
|
<img src="event.png">
|
||||||
</a>
|
|
||||||
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
|
|
|
@ -6,10 +6,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
<div class="oe_demo oe_picture oe_screenshot">
|
<div class="oe_demo oe_picture oe_screenshot">
|
||||||
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=website_hr">
|
|
||||||
<img src="jobs.png">
|
<img src="jobs.png">
|
||||||
</a>
|
|
||||||
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_span6">
|
<div class="oe_span6">
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
from openerp import SUPERUSER_ID
|
||||||
from openerp.tools import html2plaintext
|
from openerp.tools import html2plaintext
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
from openerp.osv import osv, fields
|
from openerp.osv import osv, fields, expression
|
||||||
|
|
||||||
|
|
||||||
class MailMessage(osv.Model):
|
class MailMessage(osv.Model):
|
||||||
_inherit = 'mail.message'
|
_inherit = 'mail.message'
|
||||||
|
@ -63,10 +63,11 @@ class MailMessage(osv.Model):
|
||||||
context=None, count=False, access_rights_uid=None):
|
context=None, count=False, access_rights_uid=None):
|
||||||
""" Override that adds specific access rights of mail.message, to restrict
|
""" Override that adds specific access rights of mail.message, to restrict
|
||||||
messages to published messages for public users. """
|
messages to published messages for public users. """
|
||||||
|
if uid != SUPERUSER_ID:
|
||||||
group_ids = self.pool.get('res.users').browse(cr, uid, uid, context=context).groups_id
|
group_ids = self.pool.get('res.users').browse(cr, uid, uid, context=context).groups_id
|
||||||
group_user_id = self.pool.get("ir.model.data").get_object_reference(cr, uid, 'base', 'group_public')[1]
|
group_user_id = self.pool.get("ir.model.data").get_object_reference(cr, uid, 'base', 'group_public')[1]
|
||||||
if group_user_id in [group.id for group in group_ids]:
|
if group_user_id in [group.id for group in group_ids]:
|
||||||
args = ['&', ('website_published', '=', True)] + list(args)
|
args = expression.AND([[('website_published', '=', True)], list(args)])
|
||||||
|
|
||||||
return super(MailMessage, self)._search(cr, uid, args, offset=offset, limit=limit, order=order,
|
return super(MailMessage, self)._search(cr, uid, args, offset=offset, limit=limit, order=order,
|
||||||
context=context, count=count, access_rights_uid=access_rights_uid)
|
context=context, count=count, access_rights_uid=access_rights_uid)
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
from openerp.osv import osv, fields
|
from openerp.osv import osv, fields
|
||||||
|
|
||||||
|
# TODO for trunk, remove me
|
||||||
class MailThread(osv.Model):
|
class MailThread(osv.Model):
|
||||||
_inherit = 'mail.thread'
|
_inherit = 'mail.thread'
|
||||||
|
|
||||||
|
@ -35,3 +35,7 @@ class MailThread(osv.Model):
|
||||||
help="Website communication history",
|
help="Website communication history",
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def copy(self, cr, uid, id, default=None, context=None):
|
||||||
|
default['website_message_ids'] = []
|
||||||
|
return super(MailThread, self).copy(cr, uid, id, default=default, context=context)
|
|
@ -131,6 +131,8 @@ class sale_order(osv.osv):
|
||||||
}
|
}
|
||||||
|
|
||||||
def onchange_template_id(self, cr, uid, ids, template_id, partner=False, fiscal_position=False, context=None):
|
def onchange_template_id(self, cr, uid, ids, template_id, partner=False, fiscal_position=False, context=None):
|
||||||
|
if not template_id:
|
||||||
|
return True
|
||||||
lines = []
|
lines = []
|
||||||
quote_template = self.pool.get('sale.quote.template').browse(cr, uid, template_id, context=context)
|
quote_template = self.pool.get('sale.quote.template').browse(cr, uid, template_id, context=context)
|
||||||
for line in quote_template.quote_line:
|
for line in quote_template.quote_line:
|
||||||
|
|
|
@ -275,6 +275,7 @@ class Ecommerce(http.Controller):
|
||||||
all_categories.add(parent)
|
all_categories.add(parent)
|
||||||
parent = parent.parent_id
|
parent = parent.parent_id
|
||||||
categories = list(all_categories)
|
categories = list(all_categories)
|
||||||
|
categories.sort(key=lambda x: x.sequence)
|
||||||
|
|
||||||
values = {
|
values = {
|
||||||
'products': products,
|
'products': products,
|
||||||
|
@ -584,6 +585,7 @@ class Ecommerce(http.Controller):
|
||||||
"""
|
"""
|
||||||
cr, uid, context = request.cr, request.uid, request.context
|
cr, uid, context = request.cr, request.uid, request.context
|
||||||
payment_obj = request.registry.get('payment.acquirer')
|
payment_obj = request.registry.get('payment.acquirer')
|
||||||
|
sale_order_obj = request.registry['sale.order']
|
||||||
|
|
||||||
# if no sale order at this stage: back to checkout beginning
|
# if no sale order at this stage: back to checkout beginning
|
||||||
order = self.get_order()
|
order = self.get_order()
|
||||||
|
@ -602,11 +604,12 @@ class Ecommerce(http.Controller):
|
||||||
else:
|
else:
|
||||||
shipping_partner_id = order.partner_invoice_id.id
|
shipping_partner_id = order.partner_invoice_id.id
|
||||||
|
|
||||||
values = {
|
values = {}
|
||||||
'order': request.registry['sale.order'].browse(cr, SUPERUSER_ID, order.id, context=context)
|
values['website_sale_order'] = values['order'] = sale_order_obj.browse(cr, SUPERUSER_ID, order.id, context=context)
|
||||||
}
|
values['errors'] = sale_order_obj._get_errors(cr, uid, order, context=context)
|
||||||
values.update(request.registry.get('sale.order')._get_website_data(cr, uid, order, context))
|
values.update(sale_order_obj._get_website_data(cr, uid, order, context=context))
|
||||||
|
|
||||||
|
if not values['errors']:
|
||||||
# fetch all registered payment means
|
# fetch all registered payment means
|
||||||
if tx:
|
if tx:
|
||||||
acquirer_ids = [tx.acquirer_id.id]
|
acquirer_ids = [tx.acquirer_id.id]
|
||||||
|
|
|
@ -16,6 +16,9 @@ class SaleOrder(osv.Model):
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _get_errors(self, cr, uid, order, context=None):
|
||||||
|
return []
|
||||||
|
|
||||||
def _get_website_data(self, cr, uid, order, context):
|
def _get_website_data(self, cr, uid, order, context):
|
||||||
return {
|
return {
|
||||||
'partner': order.partner_id.id,
|
'partner': order.partner_id.id,
|
||||||
|
|
|
@ -443,14 +443,20 @@
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="css_editable_mode_hidden">
|
<div class="css_editable_mode_hidden">
|
||||||
|
<t groups="base.group_public">
|
||||||
|
<a class="btn btn-primary mt8" t-attf-href="/web/login?redirect=/shop/product/#{product.id}%23comment">Log in </a> <span>to post comments</span>
|
||||||
|
</t>
|
||||||
|
<t groups="base.group_user,base.group_portal">
|
||||||
<form id="comment" t-attf-action="/shop/product/#{product.id}/comment"
|
<form id="comment" t-attf-action="/shop/product/#{product.id}/comment"
|
||||||
method="POST">
|
method="POST">
|
||||||
<img class="img pull-left img-rounded" t-att-src="'/website/image?model=res.partner&field=image_small&id='+str(user_id.partner_id.id)" style="width: 50px; margin-right: 10px;"/>
|
<img class="img pull-left img-rounded" t-att-src="'/website/image?model=res.partner&field=image_small&id='+str(user_id.partner_id.id)" style="width: 50px; margin-right: 10px;"/>
|
||||||
<div class="pull-left mb32" style="width: 75%%">
|
<div class="pull-left mb32" style="width: 75%%">
|
||||||
|
|
||||||
<textarea rows="3" name="comment" class="form-control" placeholder="Write a comment..."></textarea>
|
<textarea rows="3" name="comment" class="form-control" placeholder="Write a comment..."></textarea>
|
||||||
<a class="btn btn-primary mt8 a-submit">Post</a>
|
<a class="btn btn-primary mt8 a-submit">Post</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
</t>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
@ -886,6 +892,12 @@
|
||||||
<li class="text-muted">Confirmation<span class="chevron"></span></li>
|
<li class="text-muted">Confirmation<span class="chevron"></span></li>
|
||||||
</ul>
|
</ul>
|
||||||
<h1 class="mb32">Validate Order</h1>
|
<h1 class="mb32">Validate Order</h1>
|
||||||
|
<t t-foreach="errors" t-as="error">
|
||||||
|
<div class="alert alert-danger" t-if="error">
|
||||||
|
<h4><t t-esc="error[0]"/></h4>
|
||||||
|
<t t-esc="error[1]"/>
|
||||||
|
</div>
|
||||||
|
</t>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-8 col-sm-9 oe_mycart">
|
<div class="col-lg-8 col-sm-9 oe_mycart">
|
||||||
<table class='table table-striped table-condensed' id="mycart_products" t-if="website_sale_order and website_sale_order.website_order_line">
|
<table class='table table-striped table-condensed' id="mycart_products" t-if="website_sale_order and website_sale_order.website_order_line">
|
||||||
|
@ -973,7 +985,7 @@
|
||||||
</t>
|
</t>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="js_payment mb64 row" t-if="not website_sale_order.amount_total" id="payment_method">
|
<div class="js_payment mb64 row" t-if="not website_sale_order.amount_total and not errors" id="payment_method">
|
||||||
<div class="col-lg-8 col-sm-8">
|
<div class="col-lg-8 col-sm-8">
|
||||||
<form target="_self" action="/shop/payment/validate" method="post" class="pull-right">
|
<form target="_self" action="/shop/payment/validate" method="post" class="pull-right">
|
||||||
<a style="width:100px;" class="btn btn-primary a-submit">
|
<a style="width:100px;" class="btn btn-primary a-submit">
|
||||||
|
|
|
@ -12,10 +12,11 @@ class Ecommerce(Ecommerce):
|
||||||
cr, uid, context = request.cr, request.uid, request.context
|
cr, uid, context = request.cr, request.uid, request.context
|
||||||
order = self.get_order()
|
order = self.get_order()
|
||||||
carrier_id = post.get('carrier_id')
|
carrier_id = post.get('carrier_id')
|
||||||
|
if carrier_id:
|
||||||
if order and carrier_id:
|
carrier_id = int(carrier_id)
|
||||||
# recompute delivery costs
|
if order:
|
||||||
request.registry['website']._check_carrier_quotation(cr,uid,order,carrier_id,context=context)
|
request.registry['sale.order']._check_carrier_quotation(cr, uid, order, force_carrier_id=carrier_id, context=context)
|
||||||
|
if carrier_id:
|
||||||
return request.redirect("/shop/payment")
|
return request.redirect("/shop/payment")
|
||||||
|
|
||||||
res = super(Ecommerce, self).payment(**post)
|
res = super(Ecommerce, self).payment(**post)
|
||||||
|
|
|
@ -56,6 +56,57 @@ class SaleOrder(orm.Model):
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _check_carrier_quotation(self, cr, uid, order, force_carrier_id=None, context=None):
|
||||||
|
carrier_obj = self.pool.get('delivery.carrier')
|
||||||
|
|
||||||
|
# check to add or remove carrier_id
|
||||||
|
if not order:
|
||||||
|
return False
|
||||||
|
if all(line.product_id.type == "service" for line in order.website_order_line):
|
||||||
|
order.write({'carrier_id': None}, context=context)
|
||||||
|
self.pool['sale.order']._delivery_unset(cr, SUPERUSER_ID, [order.id], context=context)
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
carrier_id = force_carrier_id or order.carrier_id.id
|
||||||
|
carrier_ids = self._get_delivery_methods(cr, uid, order, context=context)
|
||||||
|
if carrier_id:
|
||||||
|
if carrier_id not in carrier_ids:
|
||||||
|
carrier_id = False
|
||||||
|
else:
|
||||||
|
carrier_ids.remove(carrier_id)
|
||||||
|
carrier_ids.insert(0, carrier_id)
|
||||||
|
if force_carrier_id or not carrier_id or not carrier_id in carrier_ids:
|
||||||
|
for delivery_id in carrier_ids:
|
||||||
|
grid_id = carrier_obj.grid_get(cr, SUPERUSER_ID, [delivery_id], order.partner_shipping_id.id)
|
||||||
|
if grid_id:
|
||||||
|
carrier_id = delivery_id
|
||||||
|
break
|
||||||
|
order.write({'carrier_id': carrier_id}, context=context)
|
||||||
|
if carrier_id:
|
||||||
|
order.delivery_set(context=context)
|
||||||
|
else:
|
||||||
|
order._delivery_unset(context=context)
|
||||||
|
|
||||||
|
return bool(carrier_id)
|
||||||
|
|
||||||
|
def _get_delivery_methods(self, cr, uid, order, context=None):
|
||||||
|
carrier_obj = self.pool.get('delivery.carrier')
|
||||||
|
delivery_ids = carrier_obj.search(cr, uid, [('website_published','=',True)], context=context)
|
||||||
|
# Following loop is done to avoid displaying delivery methods who are not available for this order
|
||||||
|
# This can surely be done in a more efficient way, but at the moment, it mimics the way it's
|
||||||
|
# done in delivery_set method of sale.py, from delivery module
|
||||||
|
for delivery_id in list(delivery_ids):
|
||||||
|
grid_id = carrier_obj.grid_get(cr, SUPERUSER_ID, [delivery_id], order.partner_shipping_id.id)
|
||||||
|
if not grid_id:
|
||||||
|
delivery_ids.remove(delivery_id)
|
||||||
|
return delivery_ids
|
||||||
|
|
||||||
|
def _get_errors(self, cr, uid, order, context=None):
|
||||||
|
errors = super(SaleOrder, self)._get_errors(cr, uid, order, context=context)
|
||||||
|
if not self._get_delivery_methods(cr, uid, order, context=context):
|
||||||
|
errors.append(('No delivery method available', 'There is no available delivery method for your order'))
|
||||||
|
return errors
|
||||||
|
|
||||||
def _get_website_data(self, cr, uid, order, context=None):
|
def _get_website_data(self, cr, uid, order, context=None):
|
||||||
""" Override to add delivery-related website data. """
|
""" Override to add delivery-related website data. """
|
||||||
values = super(SaleOrder, self)._get_website_data(cr, uid, order, context=context)
|
values = super(SaleOrder, self)._get_website_data(cr, uid, order, context=context)
|
||||||
|
@ -69,6 +120,7 @@ class SaleOrder(orm.Model):
|
||||||
|
|
||||||
delivery_ctx = dict(context, order_id=order.id)
|
delivery_ctx = dict(context, order_id=order.id)
|
||||||
DeliveryCarrier = self.pool.get('delivery.carrier')
|
DeliveryCarrier = self.pool.get('delivery.carrier')
|
||||||
delivery_ids = DeliveryCarrier.search(cr, uid, [('website_published','=',True)], context=context)
|
delivery_ids = self._get_delivery_methods(cr, uid, order, context=context)
|
||||||
|
|
||||||
values['deliveries'] = DeliveryCarrier.browse(cr, SUPERUSER_ID, delivery_ids, context=delivery_ctx)
|
values['deliveries'] = DeliveryCarrier.browse(cr, SUPERUSER_ID, delivery_ids, context=delivery_ctx)
|
||||||
return values
|
return values
|
||||||
|
|
|
@ -9,7 +9,7 @@ class Website(orm.Model):
|
||||||
def _ecommerce_create_quotation(self, cr, uid, context=None):
|
def _ecommerce_create_quotation(self, cr, uid, context=None):
|
||||||
order_id = super(Website, self)._ecommerce_create_quotation(cr, uid, context=context)
|
order_id = super(Website, self)._ecommerce_create_quotation(cr, uid, context=context)
|
||||||
order = self.pool['sale.order'].browse(cr, SUPERUSER_ID, order_id, context=context)
|
order = self.pool['sale.order'].browse(cr, SUPERUSER_ID, order_id, context=context)
|
||||||
self._check_carrier_quotation(cr, uid, order, force_carrier_id=None, context=context)
|
self.pool['sale.order']._check_carrier_quotation(cr, uid, order, force_carrier_id=None, context=context)
|
||||||
return order_id
|
return order_id
|
||||||
|
|
||||||
def _ecommerce_add_product_to_cart(self, cr, uid, product_id=0, order_line_id=0, number=1, set_number=-1, context=None):
|
def _ecommerce_add_product_to_cart(self, cr, uid, product_id=0, order_line_id=0, number=1, set_number=-1, context=None):
|
||||||
|
@ -17,31 +17,4 @@ class Website(orm.Model):
|
||||||
product_id=product_id, order_line_id=order_line_id, number=number, set_number=set_number,
|
product_id=product_id, order_line_id=order_line_id, number=number, set_number=set_number,
|
||||||
context=context)
|
context=context)
|
||||||
order = self.ecommerce_get_current_order(cr, uid, context=context)
|
order = self.ecommerce_get_current_order(cr, uid, context=context)
|
||||||
return self._check_carrier_quotation(cr, uid, order, force_carrier_id=None, context=context) and quantity or None
|
return self.pool['sale.order']._check_carrier_quotation(cr, uid, order, force_carrier_id=None, context=context) and quantity or None
|
||||||
|
|
||||||
def _check_carrier_quotation(self, cr, uid, order, force_carrier_id=None, context=None):
|
|
||||||
# check to add or remove carrier_id
|
|
||||||
carrier_id = False
|
|
||||||
for line in order.website_order_line:
|
|
||||||
if line.product_id.type != "service":
|
|
||||||
carrier_id = True
|
|
||||||
break
|
|
||||||
|
|
||||||
if not carrier_id:
|
|
||||||
order.write({'carrier_id': None}, context=context)
|
|
||||||
self.pool['sale.order']._delivery_unset(cr, SUPERUSER_ID, order, context=context)
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
if order.carrier_id:
|
|
||||||
self.pool['sale.order']._delivery_unset(cr, SUPERUSER_ID, order, context=context)
|
|
||||||
|
|
||||||
carrier_ids = self.pool.get('delivery.carrier').search(cr, uid, [('website_published','=',True)], context=context)
|
|
||||||
carrier_id = force_carrier_id or (carrier_ids and carrier_ids[0])
|
|
||||||
order.write({'carrier_id': carrier_id}, context=context)
|
|
||||||
#If carrier_id have no grid, we don't have delivery !
|
|
||||||
if carrier_id:
|
|
||||||
order.delivery_set(context=context)
|
|
||||||
else:
|
|
||||||
self.pool['sale.order']._delivery_unset(cr, SUPERUSER_ID, order, context=context)
|
|
||||||
|
|
||||||
return bool(carrier_id)
|
|
||||||
|
|
Loading…
Reference in New Issue