+ Thank you for your payment.
+ Here is your payment receipt ${(object.name or '').replace('/','-')} amounting
+ to ${format_amount(object.amount, object.currency_id)} from ${object.company_id.name}.
+
+ Do not hesitate to contact us if you have any question.
+
+ Best regards,
+ % if user and user.signature:
+ ${user.signature | safe}
+ % endif
+
+
+${(object.name or '').replace('/','-')}${object.partner_id.lang}
-
-
Dear ${object.partner_id.name},
-
Thank you for your payment. Here is your payment receipt ${(object.name or '').replace('/','-')} amounting to ${format_amount(object.amount, object.currency_id)} from ${object.company_id.name}.
-
If you have any questions, please do not hesitate to contact us.
-
Best regards,
-% if user and user.signature:
-${user.signature | safe}
-% endif
-
+ A password reset was requested for the Odoo account linked to this email.
+ You may change your password by following this link which will remain valid during 24 hours:
+
- Never heard of Odoo? It’s a all-in-one business software loved by 3+ million users. It will considerably improve your experience at work and increase your productivity.
-
-
- Have a look at the Odoo Tour to discover the tool.
-
+ % set website_url = object.env['ir.config_parameter'].sudo().get_param('web.base.url')
+ Your Odoo domain is: ${website_url}
+ Your sign in email is: ${object.email}
+ Never heard of Odoo? It’s a all-in-one business software loved by 3+ million users. It will considerably improve your experience at work and increase your productivity.
+
+ Have a look at the Odoo Tour to discover the tool.
+
+ Enjoy Odoo!
+ -- The ${object.company_id.name} Team
+
- Dear ${object.common_name},
- ${object.event_id.user_id.partner_id.name} invited you for the ${object.event_id.name} meeting of ${object.event_id.user_id.company_id.name}.
-
-
-
- ${object.event_id.get_interval('dayname', tz=object.partner_id.tz if not object.event_id.allday else None)}
-
-
- ${object.event_id.get_interval('day', tz=object.partner_id.tz if not object.event_id.allday else None)}
-
-
${object.event_id.get_interval('month', tz=object.partner_id.tz if not object.event_id.allday else None)}
-
${not object.event_id.allday and object.event_id.get_interval('time', tz=object.partner_id.tz) or ''}
- % for attendee in object.event_id.attendee_ids:
-
-
- % if attendee.common_name != object.common_name:
- ${attendee.common_name}
- % else:
- You
- % endif
-
- % endfor
-
-
-
-
-
-
-
-
]]>
-
-
-
- Calendar: Date updated
- ${object.event_id.user_id.email or ''}
- ${object.event_id.name}: Date updated
-
- ${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}
- ${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }
-
-
-% set colors = {'needsAction': 'grey', 'accepted': 'green', 'tentative': '#FFFF00', 'declined': 'red'}
-
- Dear ${object.common_name},
- The date of the meeting has been upated. The meeting ${object.event_id.name} created by ${object.event_id.user_id.partner_id.name} is now scheduled for ${object.event_id.get_display_time_tz(tz=object.partner_id.tz)}.
-
-
-
-
- ${object.event_id.get_interval('dayname', tz=object.partner_id.tz if not object.event_id.allday else None)}
-
-
- ${object.event_id.get_interval('day', tz=object.partner_id.tz if not object.event_id.allday else None)}
-
-
${object.event_id.get_interval('month', tz=object.partner_id.tz if not object.event_id.allday else None)}
-
${not object.event_id.allday and object.event_id.get_interval('time', tz=object.partner_id.tz) or ''}
- % for attendee in object.event_id.attendee_ids:
-
-
- % if attendee.common_name != object.common_name:
- ${attendee.common_name}
- % else:
- You
- % endif
-
- % endfor
-
-
-
-
-
-
-
-
]]>
-
-
+
\ No newline at end of file
diff --git a/addons/calendar/data/mail_data.xml b/addons/calendar/data/mail_data.xml
new file mode 100644
index 00000000000..a4e2fa46907
--- /dev/null
+++ b/addons/calendar/data/mail_data.xml
@@ -0,0 +1,253 @@
+
+
+
+
+ Calendar: Meeting Invitation
+
+ Invitation to ${object.event_id.name}
+ ${object.event_id.user_id.email or ''}
+ ${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}
+ ${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }
+
+
+ % for attendee in object.event_id.attendee_ids:
+
+
+ % if attendee.common_name != object.common_name:
+ ${attendee.common_name}
+ % else:
+ You
+ % endif
+
+ % endfor
+
+
+
+
+
+ Thank you,
+
+ % if object.event_id.user_id and object.event_id.user_id.signature:
+ ${object.event_id.user_id.signature | safe}
+ % endif
+
+
+
+
+
+
+
+ Calendar: Date updated
+
+ ${object.event_id.name}: Date updated
+ ${object.event_id.user_id.email or ''}
+ ${('' if object.partner_id and object.partner_id.email and object.partner_id.email==object.email else object.email|safe)}
+ ${object.partner_id and object.partner_id.email and object.partner_id.email==object.email and object.partner_id.id or False }
+
+
+ The date of the meeting has been updated. The meeting ${object.event_id.name} created by ${object.event_id.user_id.partner_id.name} is now scheduled for ${object.event_id.get_display_time_tz(tz=object.partner_id.tz)}.
+
Find your delivery order attached for more details.
-
Thank you,
-
+ Delivery: Send by Email
+
+ ${object.company_id.name} Delivery Order (Ref ${object.name or 'n/a' })
+ ${object.partner_id.id}
+
+
+
+ Hello ${object.partner_id.name},
+ We are glad to inform you that your order has been shipped.
+ %if object.carrier_tracking_ref:
+ Your tracking reference is
+
+ %if object.carrier_tracking_url:
+ ${object.carrier_tracking_ref}.
+ %else:
+ ${object.carrier_tracking_ref}.
+ %endif
+
+ %endif
+
+ Please find your delivery order attached for more details.
+ Thank you,
+ % if user and user.signature:
+ ${user.signature | safe}
+ % endif
+
+
+
+
+ ${(object.name or '').replace('/','_')}
+ ${object.partner_id.lang}
+
+
-
+
diff --git a/addons/delivery/models/stock_picking.py b/addons/delivery/models/stock_picking.py
index 7eddcc52d04..ca8d41cca67 100644
--- a/addons/delivery/models/stock_picking.py
+++ b/addons/delivery/models/stock_picking.py
@@ -141,7 +141,7 @@ class StockPicking(models.Model):
default_model='stock.picking',
default_use_template=bool(delivery_template_id),
default_template_id=delivery_template_id,
- custom_layout='mail.mail_notification_borders'
+ custom_layout='mail.mail_notification_light'
)
return {
'type': 'ir.actions.act_window',
diff --git a/addons/hr/data/hr_data.xml b/addons/hr/data/hr_data.xml
index 8ce5b78ec72..58afb0ede52 100644
--- a/addons/hr/data/hr_data.xml
+++ b/addons/hr/data/hr_data.xml
@@ -19,14 +19,42 @@
- HR: unknown employee bounce
+ HR: mailgateway unknown employee bounce
+ Your document has not been created${user.email}${ctx['email_to']|safe}
+
+
+
+
+
+
+
+
+
+ Hi,
+ Your document has not been created because your email address is not recognized. Please send emails with the email address recorded on your employee information, or contact your HR manager.
+
- % if 'website_url' in object.job_id and object.job_id.website_url:
- Job Description
- % endif
-
-
-
-
-
-
-
-
- Hi,
-
- Thank you for your interest in joining the
- ${object.company_id.name} team. We wanted to
- let you know that, although your resume is competitive,
- our hiring team reviewed your application and did not
- select it for further consideration.
-
- Please note that recruiting is hard, and we can do
- mistake. Do not hesitate to reply to this email if you
- think we did a mistake, or if you want more information
- about our decision.
-
- We will, however, keep your resume on record and get in
- touch with you about future opportunities that may be a
- better fit for your skills and experience.
-
-
- We wish you all the best in your job search and hope we
- will have the chance to consider you for another role
- in the future.
-
-
- Regards,
-
-
-
--
+
+
+
+
+
+ Hello,
+ Thank you for your interest in joining the
+ ${object.company_id.name} team. We wanted to
+ let you know that, although your resume is competitive,
+ our hiring team reviewed your application and did not
+ select it for further consideration.
+
+ Please note that recruiting is hard, and we can do
+ mistake. Do not hesitate to reply to this email if you
+ think we did a mistake, or if you want more information
+ about our decision.
+
+ We will, however, keep your resume on record and get in
+ touch with you about future opportunities that may be a
+ better fit for your skills and experience.
+
+ We wish you all the best in your job search and hope we
+ will have the chance to consider you for another role
+ in the future.
+
+ Thank you,
+
% if object.user_id:
+ -- ${object.user_id.name}
Email: ${object.user_id.email or ''}
Phone: ${object.user_id.phone or ''}
% else:
+ --
${object.company_id.name}
The HR Team
% endif
-
-
-
-
-
-
-
-
-
-
Sent by ${object.company_id.name}
- % if 'website_url' in object.job_id and object.job_id.website_url:
-
- % if 'website_url' in object.job_id and object.job_id.website_url:
- Job Description
- % endif
-
-
-
-
-
-
-
-
-
Congratulations!
-
Your resume has been positively reviewed.
-
-
-
-
- We just reviewed your resume, and it caught our
- attention. As we think you might be great for the
- position, your application has been short listed for a
- call or an interview.
-
-
- % if object.user_id:
-
- You will soon be contacted by:
-
-
-
-
-
-
- ${object.user_id.name}
- Email: ${object.user_id.email or ''}
- Phone: ${object.user_id.phone or ''}
-
-
-
- % endif
-
- See you soon,
-
- --
- Odoo HR Team
-
-
-
-
What is the next step?
-
- We usually answer applications within 3 days.
- The next step is either a call or a meeting in our offices.
-
- Feel free to contact us if you want a faster
- feedback or if you don't get news from us
- quickly enough (just reply to this email).
-
+ We just reviewed your resume, and it caught our
+ attention. As we think you might be great for the
+ position, your application has been short listed for a
+ call or an interview.
+
+ % if 'website_url' in object.job_id and object.job_id.website_url:
+
+ % endif
+ % if object.user_id:
+ You will soon be contacted by:
+
+
+
+
+
+
+ ${object.user_id.name}
+ Email: ${object.user_id.email or ''}
+ Phone: ${object.user_id.phone or ''}
+
+
+
+
+ % endif
+ See you soon,
+
+ --
+ Odoo HR Team
+ % if 'website_url' in object.job_id and object.job_id.website_url
+ Discover all our jobs.
+ % endif
+
-
- ]]>
+
+
What is the next step?
+ We usually answer applications within 3 days.
+
+ The next step is either a call or a meeting in our offices.
+
+ Feel free to contact us if you want a faster
+ feedback or if you don't get news from us
+ quickly enough (just reply to this email).
+
+
+
+
+
+
+ ${object.partner_id.lang or ''}
-
- Applicant: Welcome new employee
- Welcome ${object.name}
-
- Dear all,
-
I’m very pleased to announce that ${object.name} will be
-joining us as a ${object.job_id.name}
-%if object.department_id:
- in ${object.department_id.name}.
-%endif
-.
-
Please welcome him/her and help him/her finding his/her marks.
]]>
-
-
-
-
Graduate1
diff --git a/addons/hr_recruitment/models/hr_employee.py b/addons/hr_recruitment/models/hr_employee.py
index 5c88db5efa0..73104b1a31f 100644
--- a/addons/hr_recruitment/models/hr_employee.py
+++ b/addons/hr_recruitment/models/hr_employee.py
@@ -21,19 +21,3 @@ class HrEmployee(models.Model):
def _search_newly_hired_employee(self, operator, value):
applicants = self.env['hr.applicant'].search([('job_id.state', '=', 'recruit')])
return [('id', 'in', applicants.ids)]
-
- @api.multi
- def _broadcast_welcome(self):
- """ Broadcast the welcome message to all users in the employee company. """
- self.ensure_one()
- IrModelData = self.env['ir.model.data']
- channel_all_employees = IrModelData.xmlid_to_object('mail.channel_all_employees')
- template_new_employee = IrModelData.xmlid_to_object('hr_recruitment.email_template_data_applicant_employee')
- if template_new_employee:
- MailTemplate = self.env['mail.template']
- body_html = MailTemplate.render_template(template_new_employee.body_html, 'hr.employee', self.id)
- subject = MailTemplate.render_template(template_new_employee.subject, 'hr.employee', self.id)
- channel_all_employees.message_post(
- body=body_html, subject=subject,
- subtype='mail.mt_comment')
- return True
diff --git a/addons/hr_recruitment/models/hr_recruitment.py b/addons/hr_recruitment/models/hr_recruitment.py
index 898a5234939..67ca1548bfd 100644
--- a/addons/hr_recruitment/models/hr_recruitment.py
+++ b/addons/hr_recruitment/models/hr_recruitment.py
@@ -338,7 +338,11 @@ class Applicant(models.Model):
applicant = self[0]
changes, dummy = tracking[applicant.id]
if 'stage_id' in changes and applicant.stage_id.template_id:
- res['stage_id'] = (applicant.stage_id.template_id, {'composition_mode': 'mass_mail'})
+ res['stage_id'] = (applicant.stage_id.template_id, {
+ 'auto_delete_message': True,
+ 'subtype_id': self.env['ir.model.data'].xmlid_to_res_id('mail.mt_note'),
+ 'notif_layout': 'mail.mail_notification_light'
+ })
return res
@api.multi
@@ -445,7 +449,6 @@ class Applicant(models.Model):
applicant.job_id.message_post(
body=_('New Employee %s Hired') % applicant.partner_name if applicant.partner_name else applicant.name,
subtype="hr_recruitment.mt_job_applicant_hired")
- employee._broadcast_welcome()
else:
raise UserError(_('You must define an Applied Job and a Contact Name for this applicant.'))
diff --git a/addons/l10n_be_invoice_bba/data/mail_template_data.xml b/addons/l10n_be_invoice_bba/data/mail_template_data.xml
index b7110f157e7..e12f7745b91 100644
--- a/addons/l10n_be_invoice_bba/data/mail_template_data.xml
+++ b/addons/l10n_be_invoice_bba/data/mail_template_data.xml
@@ -2,47 +2,37 @@
- Dear ${object.partner_id.name}
-% set access_action = object.with_context(force_website=True).get_access_action()
-% set is_online = access_action and access_action['type'] == 'ir.actions.act_url'
-% set access_url = is_online and object.get_mail_url() or '/report/pdf/account.report_invoice/' + str(object.id)
-
-% if object.partner_id.parent_id:
- (${object.partner_id.parent_id.name})
-% endif
-,
-
Here is your
-% if object.number:
-invoice ${object.number}
-% else:
-pro-forma invoice
-% endif
-% if object.origin:
-(with reference: ${object.origin} )
-% endif
-amounting in ${format_amount(object.amount_total, object.currency_id)}
-from ${object.company_id.name}.
-
+ Here is, in attachment, your
+ % if object.number:
+ invoice ${object.number}
+ % else:
+ invoice
+ %endif
+ % if object.origin:
+ (with reference: ${object.origin} )
+ % endif
+ amounting in ${format_amount(object.amount_total, object.currency_id)}
+ from ${object.company_id.name}.
+ % if object.state=='paid':
+ This invoice is already paid.
+ % else:
+ Please remit payment at your earliest convenience.
+ % if object.reference_type == 'bba' and object.reference:
+ Please use the following communication for your payment: ${object.reference}.
+ % endif
+
+ Do not hesitate to contact us if you have any question.
+
diff --git a/addons/mail/models/mail_template.py b/addons/mail/models/mail_template.py
index 211368f0f24..ec27b66e08f 100644
--- a/addons/mail/models/mail_template.py
+++ b/addons/mail/models/mail_template.py
@@ -405,7 +405,6 @@ class MailTemplate(models.Model):
"""Generates an email from the template for given the given model based on
records given by res_ids.
- :param template_id: id of the template to render.
:param res_id: id of the record to use for rendering the template (model
is taken from template definition)
:returns: a dict containing all relevant fields for creating a new
@@ -487,19 +486,18 @@ class MailTemplate(models.Model):
return multi_mode and results or results[res_ids[0]]
@api.multi
- def send_mail(self, res_id, force_send=False, raise_exception=False, email_values=None):
- """Generates a new mail message for the given template and record,
- and schedules it for delivery through the ``mail`` module's scheduler.
+ def send_mail(self, res_id, force_send=False, raise_exception=False, email_values=None, notif_layout=False):
+ """ Generates a new mail.mail. Template is rendered on record given by
+ res_id and model coming from template.
- :param int res_id: id of the record to render the template with
- (model is taken from the template)
- :param bool force_send: if True, the generated mail.message is
- immediately sent after being created, as if the scheduler
- was executed for this message only.
- :param dict email_values: if set, the generated mail.message is
- updated with given values dict
- :returns: id of the mail.message that was created
- """
+ :param int res_id: id of the record to render the template
+ :param bool force_send: send email immediately; otherwise use the mail
+ queue (recommended);
+ :param dict email_values: update generated mail with those values to further
+ customize the mail;
+ :param str notif_layout: optional notification layout to encapsulate the
+ generated email;
+ :returns: id of the mail.mail that was created """
self.ensure_one()
Mail = self.env['mail.mail']
Attachment = self.env['ir.attachment'] # TDE FIXME: should remove dfeault_type from context
@@ -513,6 +511,21 @@ class MailTemplate(models.Model):
# add a protection against void email_from
if 'email_from' in values and not values.get('email_from'):
values.pop('email_from')
+ # encapsulate body
+ if notif_layout and values['body_html']:
+ try:
+ template = self.env.ref(notif_layout, raise_if_not_found=True)
+ except ValueError:
+ _logger.warning('QWeb template %s not found when sending template %s. Sending without layouting.' % (notif_layout, self.name))
+ else:
+ record = self.env[self.model].browse(res_id)
+ template_ctx = {
+ 'message': self.env['mail.message'].sudo().new(dict(body=values['body_html'], record_name=record.display_name)),
+ 'model_description': self.env['ir.model']._get(record._name).display_name,
+ 'company': 'company_id' in record and record['company_id'] or self.env.user.company_id,
+ }
+ body = template.render(template_ctx, engine='ir.qweb', minimal_qcontext=True)
+ values['body_html'] = self.env['mail.thread']._replace_local_links(body)
mail = Mail.create(values)
# manage attachments
diff --git a/addons/mail/wizard/mail_compose_message_view.xml b/addons/mail/wizard/mail_compose_message_view.xml
index 9c349c36bc2..9995bc15f04 100644
--- a/addons/mail/wizard/mail_compose_message_view.xml
+++ b/addons/mail/wizard/mail_compose_message_view.xml
@@ -94,20 +94,5 @@
formnew
-
-
-
diff --git a/addons/portal/data/portal_data.xml b/addons/portal/data/portal_data.xml
index 6539d154080..0cab34b3c01 100644
--- a/addons/portal/data/portal_data.xml
+++ b/addons/portal/data/portal_data.xml
@@ -5,34 +5,94 @@
Portal: new user
- ${object.partner_id.email}
- Your Odoo account at ${user.company_id.name}
+ Your Odoo account at ${object.user_id.company_id.name}
+ ${object.user_id.email_formatted | safe}
+
+
+
+
+
+
+
+
+
+ Your Account
+
+ ${object.user_id.name}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dear ${object.user_id.name or ''},
+ You have been given access to ${object.user_id.company_id.name}'s portal.
+ Your login account data is:
+
+
diff --git a/addons/portal/wizard/portal_wizard.py b/addons/portal/wizard/portal_wizard.py
index 6fa550a184f..ee5b82eecda 100644
--- a/addons/portal/wizard/portal_wizard.py
+++ b/addons/portal/wizard/portal_wizard.py
@@ -143,7 +143,7 @@ class PortalWizardUser(models.TransientModel):
wizard_user.user_id.write({'active': True, 'groups_id': [(4, group_portal.id)]})
# prepare for the signup process
wizard_user.user_id.partner_id.signup_prepare()
- wizard_user.with_context(active_test=True)._send_email()
+ wizard_user.with_context(active_test=True)._send_email()
wizard_user.refresh()
else:
# remove the user (if it exists) from the portal group
diff --git a/addons/purchase/data/mail_template_data.xml b/addons/purchase/data/mail_template_data.xml
index 16fa3861f1d..b5f7fb33024 100644
--- a/addons/purchase/data/mail_template_data.xml
+++ b/addons/purchase/data/mail_template_data.xml
@@ -4,8 +4,8 @@
Purchase Order: Send RFQ
- ${object.create_uid.email_formatted | safe}${object.company_id.name} Order (Ref ${object.name or 'n/a' })
+ ${object.create_uid.email_formatted | safe}${object.partner_id.id}
@@ -40,8 +40,8 @@
Purchase Order: Send PO
- ${object.create_uid.email_formatted | safe}${object.company_id.name} Order (Ref ${object.name or 'n/a' })
+ ${object.create_uid.email_formatted | safe}${object.partner_id.id}
@@ -62,6 +62,8 @@
from ${object.company_id.name}.
Do not hesitate to contact us if you have any question.
+
+ Best regards,
diff --git a/addons/repair/data/repair_data.xml b/addons/repair/data/repair_data.xml
index 4b62c7aacb9..136a20d0c82 100644
--- a/addons/repair/data/repair_data.xml
+++ b/addons/repair/data/repair_data.xml
@@ -1,31 +1,35 @@
-
-
- Repair Quotation - Send by Email
- ${(object.create_uid.email and '%s <%s>' % (object.create_uid.name, object.create_uid.email) or '')|safe}
- ${object.partner_id.name} Repair Orders (Ref ${object.name or 'n/a' })
- ${object.partner_id.id}
+ Repair Quotation: Send by email
+ ${object.partner_id.name} Repair Orders (Ref ${object.name or 'n/a' })
+ ${(object.create_uid.email and '%s <%s>' % (object.create_uid.name, object.create_uid.email) or '')|safe}
+ ${object.partner_id.id}
+
+
+
+ Hello ${object.partner_id.name},
+ Here is your repair order ${doc_name} ${object.name}
+ % if object.origin:
+ (with reference: ${object.origin} )
+ % endif
+ % if object.invoice_method != 'none':
+ amounting in ${format_amount(object.amount_total, object.pricelist_id.currency_id)}.
+ % else:
+ .
+ % endif
+ You can reply to this email if you have any questions.
+
+ Thank you,
+
+
${(object.name or '').replace('/','_')}${object.partner_id.lang}
-
-
Dear ${object.partner_id.name}
-
- Here is your repair order ${doc_name} ${object.name}
- % if object.origin:
- (with reference: ${object.origin} )
- % endif
- % if object.invoice_method != 'none':
- amounting in ${format_amount(object.amount_total, object.pricelist_id.currency_id)}.
- % endif
-
-
You can reply to this email if you have any questions.
-
Thank you,
-
+
+
diff --git a/addons/repair/models/repair.py b/addons/repair/models/repair.py
index 95581a5e990..b0f188fd920 100644
--- a/addons/repair/models/repair.py
+++ b/addons/repair/models/repair.py
@@ -256,7 +256,8 @@ class Repair(models.Model):
'default_res_id': self.id,
'default_use_template': bool(template_id),
'default_template_id': template_id,
- 'default_composition_mode': 'comment'
+ 'default_composition_mode': 'comment',
+ 'custom_layout': 'mail.mail_notification_light',
}
return {
'type': 'ir.actions.act_window',
diff --git a/addons/survey/__manifest__.py b/addons/survey/__manifest__.py
index 78290313cbf..179041a01a9 100644
--- a/addons/survey/__manifest__.py
+++ b/addons/survey/__manifest__.py
@@ -25,6 +25,7 @@ sent mails with personal token for the invitation of the survey.
'views/survey_templates.xml',
'views/survey_result.xml',
'views/res_users_views.xml',
+ 'data/mail_template_data.xml',
'wizard/survey_email_compose_message.xml',
'data/survey_stages.xml',
],
diff --git a/addons/survey/data/mail_template_data.xml b/addons/survey/data/mail_template_data.xml
new file mode 100644
index 00000000000..08b6d4403c4
--- /dev/null
+++ b/addons/survey/data/mail_template_data.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ Survey: Send by email
+
+ ${object.title}: Survey
+
+
+
+ Hello
+ We are conducting a survey, and your response would be appreciated.
+