Add payments email
This commit is contained in:
parent
ae920fa216
commit
0f2ded09f4
10
booking.py
10
booking.py
|
@ -568,6 +568,7 @@ class Booking(Workflow, ModelSQL, ModelView):
|
||||||
_set_paid_charges(folio)
|
_set_paid_charges(folio)
|
||||||
|
|
||||||
record.save()
|
record.save()
|
||||||
|
cls.send_email_payments([booking])
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ModelView.button
|
@ModelView.button
|
||||||
|
@ -1244,8 +1245,10 @@ class Booking(Workflow, ModelSQL, ModelView):
|
||||||
return
|
return
|
||||||
email = self.party.email
|
email = self.party.email
|
||||||
template = getattr(config, name)
|
template = getattr(config, name)
|
||||||
|
print("enviando el correo....", name)
|
||||||
if not template:
|
if not template:
|
||||||
return
|
return
|
||||||
|
print("enviando el correo12....", name)
|
||||||
template.subject = f'{template.subject} No. {self.number}'
|
template.subject = f'{template.subject} No. {self.number}'
|
||||||
if email:
|
if email:
|
||||||
Template.send(template, self, email, attach=True)
|
Template.send(template, self, email, attach=True)
|
||||||
|
@ -1276,6 +1279,13 @@ class Booking(Workflow, ModelSQL, ModelView):
|
||||||
if booking.state == 'confirmed':
|
if booking.state == 'confirmed':
|
||||||
booking.send_email('customer_experience')
|
booking.send_email('customer_experience')
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
@ModelView.button
|
||||||
|
def send_email_payments(cls, records):
|
||||||
|
print("> > > ", records)
|
||||||
|
for booking in records:
|
||||||
|
booking.send_email('payments_email')
|
||||||
|
|
||||||
|
|
||||||
class BookingReport(Report):
|
class BookingReport(Report):
|
||||||
__name__ = 'hotel.booking'
|
__name__ = 'hotel.booking'
|
||||||
|
|
|
@ -97,6 +97,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
|
|
||||||
<record model="ir.model.button" id="booking_cancel_button">
|
<record model="ir.model.button" id="booking_cancel_button">
|
||||||
<field name="name">cancel</field>
|
<field name="name">cancel</field>
|
||||||
|
<field name="string">Cancel</field>
|
||||||
|
<field name="confirm">Are you sure you want to cancel the booking?</field>
|
||||||
<field name="model" search="[('model', '=', 'hotel.booking')]"/>
|
<field name="model" search="[('model', '=', 'hotel.booking')]"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.model.button-res.group" id="booking_cancel_button_group_hotel">
|
<record model="ir.model.button-res.group" id="booking_cancel_button_group_hotel">
|
||||||
|
@ -123,6 +125,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
|
|
||||||
<record model="ir.model.button" id="booking_no_show_button">
|
<record model="ir.model.button" id="booking_no_show_button">
|
||||||
<field name="name">no_show</field>
|
<field name="name">no_show</field>
|
||||||
|
<field name="string">No Show</field>
|
||||||
|
<field name="confirm">Are you sure you want to change to "Not Show" the booking?</field>
|
||||||
<field name="model" search="[('model', '=', 'hotel.booking')]"/>
|
<field name="model" search="[('model', '=', 'hotel.booking')]"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="ir.model.button-res.group" id="booking_no_show_button_group_hotel">
|
<record model="ir.model.button-res.group" id="booking_no_show_button_group_hotel">
|
||||||
|
@ -385,5 +389,6 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="model">hotel.booking,-1</field>
|
<field name="model">hotel.booking,-1</field>
|
||||||
<field name="action" ref="wizard_booking_update_taxes"/>
|
<field name="action" ref="wizard_booking_update_taxes"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</tryton>
|
</tryton>
|
||||||
|
|
|
@ -25,7 +25,7 @@ class Configuration(ModelSQL, ModelView):
|
||||||
('sequence_type', '=',
|
('sequence_type', '=',
|
||||||
Id('hotel',
|
Id('hotel',
|
||||||
'sequence_type_hotel')),
|
'sequence_type_hotel')),
|
||||||
], required=True)
|
])
|
||||||
hotel_service_sequence = fields.Many2One('ir.sequence', 'Service Sequence',
|
hotel_service_sequence = fields.Many2One('ir.sequence', 'Service Sequence',
|
||||||
domain=[
|
domain=[
|
||||||
('company', 'in',
|
('company', 'in',
|
||||||
|
@ -71,6 +71,7 @@ class Configuration(ModelSQL, ModelView):
|
||||||
help='In days')
|
help='In days')
|
||||||
booking_email = fields.Many2One('email.template', 'Booking Email')
|
booking_email = fields.Many2One('email.template', 'Booking Email')
|
||||||
check_in_email = fields.Many2One('email.template', 'Check-In Email')
|
check_in_email = fields.Many2One('email.template', 'Check-In Email')
|
||||||
|
payments_email = fields.Many2One('email.template', 'Payments Email')
|
||||||
customer_experience_email = fields.Many2One('email.template',
|
customer_experience_email = fields.Many2One('email.template',
|
||||||
'Customer Experience Email')
|
'Customer Experience Email')
|
||||||
storage_by_default = fields.Many2One('stock.location', 'Storage By Default',
|
storage_by_default = fields.Many2One('stock.location', 'Storage By Default',
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: Helvetica, sans-serif;
|
||||||
|
padding-right: 30px;
|
||||||
|
padding-left: 30px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-top: 5px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div style="text-align: center;">
|
||||||
|
<img alt="image_logo" src="{{record.company.logo_link}}" />
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<p>Estimado cliente</p>
|
||||||
|
<p><b>{{record.party.rec_name}}</b></p>
|
||||||
|
<br />
|
||||||
|
<p>
|
||||||
|
Nuestro hotel {{record.company.party.name}} ha recibido un nuevo pago! a
|
||||||
|
continuación encontrará el detalle de la transacción:
|
||||||
|
</p>
|
||||||
|
<br />
|
||||||
|
<table class="default">
|
||||||
|
<tr>
|
||||||
|
<td style="background-color: black; height: 20px; min-width: 150px;" />
|
||||||
|
<td style="background-color: black; height: 20px; min-width: 150px;" />
|
||||||
|
</tr>
|
||||||
|
{% for pay in record.payments %}
|
||||||
|
<tr>
|
||||||
|
<td style="padding-left: 3px;">Fecha:</td>
|
||||||
|
<td style="text-align: right; padding-right: 3px;">{{pay.date}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding-left: 3px;">Medio de Pago:</td>
|
||||||
|
<td style="text-align: right; padding-right: 3px;">
|
||||||
|
{{pay.statement.journal.name}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding-left: 3px;">Valor del Pago:</td>
|
||||||
|
<td style="text-align: right; padding-right: 3px;">
|
||||||
|
{{ "{:,.2f}".format(pay.amount)}}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding-left: 3px;">No. Voucher:</td>
|
||||||
|
<td style="text-align: right; padding-right: 3px;">{{pay.number}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color: darkseagreen; height: 10px;" />
|
||||||
|
<td style="background-color: darkseagreen; height: 10px;" />
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
<br />
|
||||||
|
<p><b>Información Relevante / Relevant Information</b></p>
|
||||||
|
<p>
|
||||||
|
{{record.company.party.commercial_name}} tiene aprobados los protocolos de
|
||||||
|
bioseguridad por la autoridad local.
|
||||||
|
</p>
|
||||||
|
<br />
|
||||||
|
<p>Atentamente / Best regards,</p>
|
||||||
|
<p>
|
||||||
|
<b
|
||||||
|
>Servicio al Cliente / Service Customer |
|
||||||
|
{{record.company.party.commercial_name}}</b
|
||||||
|
>
|
||||||
|
</p>
|
||||||
|
<p />
|
||||||
|
|
||||||
|
<p>{{record.company.party.addresses[0].street}}</p>
|
||||||
|
<p>{{record.company.party.city_name}}</p>
|
||||||
|
<p>Teléfono {{record.company.party.phone}}</p>
|
||||||
|
<p>Cel. {{record.company.party.mobile}}</p>
|
||||||
|
<p>
|
||||||
|
<a href="{{record.company.party.website}}">
|
||||||
|
{{record.company.party.website}}
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
<div style="margin-top: 30px; margin-bottom: 10px;">
|
||||||
|
<img
|
||||||
|
alt="Software for hotels"
|
||||||
|
src="https://res.cloudinary.com/presik-com/image/upload/v1661200297/banner_emails_jumq4s.png"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<p style="text-align: center;">
|
||||||
|
<a href="https://www.presik.com" style="color: #554400ff;">
|
||||||
|
Powered by presik.com
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
1
siat.py
1
siat.py
|
@ -1,5 +1,4 @@
|
||||||
import requests
|
import requests
|
||||||
import json
|
|
||||||
|
|
||||||
from trytond.pool import Pool
|
from trytond.pool import Pool
|
||||||
from trytond.model import ModelView, fields
|
from trytond.model import ModelView, fields
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
[tryton]
|
[tryton]
|
||||||
version=6.0.111
|
version=6.0.112
|
||||||
depends:
|
depends:
|
||||||
party
|
party
|
||||||
company
|
company
|
||||||
|
|
|
@ -34,6 +34,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="booking_email"/>
|
<field name="booking_email"/>
|
||||||
<label name="check_in_email"/>
|
<label name="check_in_email"/>
|
||||||
<field name="check_in_email"/>
|
<field name="check_in_email"/>
|
||||||
|
<label name="payments_email"/>
|
||||||
|
<field name="payments_email"/>
|
||||||
<label name="customer_experience_email"/>
|
<label name="customer_experience_email"/>
|
||||||
<field name="customer_experience_email"/>
|
<field name="customer_experience_email"/>
|
||||||
<label name="accounting_revenue"/>
|
<label name="accounting_revenue"/>
|
||||||
|
@ -44,8 +46,8 @@ this repository contains the full copyright notices and license terms. -->
|
||||||
<field name="space_booking"/>
|
<field name="space_booking"/>
|
||||||
<label name="charge_sequence"/>
|
<label name="charge_sequence"/>
|
||||||
<field name="charge_sequence"/>
|
<field name="charge_sequence"/>
|
||||||
<label name="token_siat"/>
|
|
||||||
<field name="token_siat"/>
|
|
||||||
<field name="default_charges" colspan="2"/>
|
<field name="default_charges" colspan="2"/>
|
||||||
<field name="children_policies" colspan="2"/>
|
<field name="children_policies" colspan="2"/>
|
||||||
|
<label name="token_siat"/>
|
||||||
|
<field name="token_siat"/>
|
||||||
</form>
|
</form>
|
||||||
|
|
Loading…
Reference in New Issue