Send delivery note to client #1332
This commit is contained in:
parent
178dc6f2e8
commit
7fad401624
|
@ -68,9 +68,6 @@ class Controller {
|
||||||
this.$scope.confirmPickupOrder.show();
|
this.$scope.confirmPickupOrder.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
confirmDeleteClaim() {
|
|
||||||
this.$scope.confirmDeleteClaim.show();
|
|
||||||
}
|
|
||||||
sendPickupOrder(response) {
|
sendPickupOrder(response) {
|
||||||
if (response === 'ACCEPT') {
|
if (response === 'ACCEPT') {
|
||||||
this.$http.post(`/api/email/claim-pickup-order`, {claimFk: this.claim.id}).then(
|
this.$http.post(`/api/email/claim-pickup-order`, {claimFk: this.claim.id}).then(
|
||||||
|
@ -78,6 +75,11 @@ class Controller {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
confirmDeleteClaim() {
|
||||||
|
this.$scope.confirmDeleteClaim.show();
|
||||||
|
}
|
||||||
|
|
||||||
deleteClaim(response) {
|
deleteClaim(response) {
|
||||||
if (response === 'ACCEPT') {
|
if (response === 'ACCEPT') {
|
||||||
this.$http.delete(`/claim/api/Claims/${this.claim.id}`).then(() => {
|
this.$http.delete(`/claim/api/Claims/${this.claim.id}`).then(() => {
|
||||||
|
|
|
@ -203,4 +203,11 @@
|
||||||
|
|
||||||
<!-- SMS Dialog -->
|
<!-- SMS Dialog -->
|
||||||
<vn-client-sms vn-id="sms" sms="$ctrl.newSMS"></vn-client-sms>
|
<vn-client-sms vn-id="sms" sms="$ctrl.newSMS"></vn-client-sms>
|
||||||
<!-- SMS Dialog -->
|
<!-- SMS Dialog -->
|
||||||
|
|
||||||
|
<vn-confirm
|
||||||
|
vn-id="confirm-delivery-note"
|
||||||
|
on-response="$ctrl.sendDeliveryNote(response)"
|
||||||
|
question="Send Delivery Note"
|
||||||
|
message="Are you sure you want to send it?">
|
||||||
|
</vn-confirm>
|
|
@ -11,6 +11,7 @@ class Controller {
|
||||||
this.moreOptions = [
|
this.moreOptions = [
|
||||||
{name: 'Add turn', callback: this.showAddTurnDialog},
|
{name: 'Add turn', callback: this.showAddTurnDialog},
|
||||||
{name: 'Show Delivery Note', callback: this.showDeliveryNote},
|
{name: 'Show Delivery Note', callback: this.showDeliveryNote},
|
||||||
|
{name: 'Send Delivery Note', callback: this.confirmDeliveryNote},
|
||||||
{name: 'Delete ticket', callback: this.showDeleteTicketDialog},
|
{name: 'Delete ticket', callback: this.showDeleteTicketDialog},
|
||||||
{name: 'Change shipped hour', callback: this.showChangeShipped},
|
{name: 'Change shipped hour', callback: this.showChangeShipped},
|
||||||
{name: 'Send SMS', callback: this.showSMSDialog},
|
{name: 'Send SMS', callback: this.showSMSDialog},
|
||||||
|
@ -262,6 +263,18 @@ class Controller {
|
||||||
hasInvoice() {
|
hasInvoice() {
|
||||||
return this.ticket.refFk !== null;
|
return this.ticket.refFk !== null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
confirmDeliveryNote() {
|
||||||
|
this.$scope.confirmDeliveryNote.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
sendDeliveryNote(response) {
|
||||||
|
if (response === 'ACCEPT') {
|
||||||
|
this.$http.post(`/api/email/delivery-note`, {ticketFk: this.ticket.id}).then(
|
||||||
|
() => this.vnApp.showMessage(this.$translate.instant('Notification sent!'))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Controller.$inject = ['$state', '$scope', '$http', 'vnApp', '$translate', 'aclService'];
|
Controller.$inject = ['$state', '$scope', '$http', 'vnApp', '$translate', 'aclService'];
|
||||||
|
|
|
@ -7,7 +7,9 @@ Stowaways of the ticket: Polizones del ticket
|
||||||
Add stowaway: Añadir polizón
|
Add stowaway: Añadir polizón
|
||||||
Remove stowaway: Borrar polizón
|
Remove stowaway: Borrar polizón
|
||||||
Are you sure you want to delete this stowaway?: ¿Seguro que quieres borrar este polizón?
|
Are you sure you want to delete this stowaway?: ¿Seguro que quieres borrar este polizón?
|
||||||
|
Are you sure you want to send it?: ¿Seguro que quieres enviarlo?
|
||||||
Show Delivery Note: Ver albarán
|
Show Delivery Note: Ver albarán
|
||||||
|
Send Delivery Note: Enviar albarán
|
||||||
Show pallet report: Ver hoja de pallet
|
Show pallet report: Ver hoja de pallet
|
||||||
Change shipped hour: Cambiar hora de envío
|
Change shipped hour: Cambiar hora de envío
|
||||||
Shipped hour: Hora de envío
|
Shipped hour: Hora de envío
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
{"type": "email", "name": "sepa-core"},
|
{"type": "email", "name": "sepa-core"},
|
||||||
{"type": "email", "name": "client-lcr"},
|
{"type": "email", "name": "client-lcr"},
|
||||||
{"type": "email", "name": "driver-route"},
|
{"type": "email", "name": "driver-route"},
|
||||||
|
{"type": "email", "name": "delivery-note"},
|
||||||
{"type": "report", "name": "rpt-delivery-note"},
|
{"type": "report", "name": "rpt-delivery-note"},
|
||||||
{"type": "report", "name": "rpt-claim-pickup-order"},
|
{"type": "report", "name": "rpt-claim-pickup-order"},
|
||||||
{"type": "report", "name": "rpt-letter-debtor"},
|
{"type": "report", "name": "rpt-letter-debtor"},
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
const CssReader = require(`${appPath}/lib/cssReader`);
|
||||||
|
|
||||||
|
module.exports = new CssReader([
|
||||||
|
`${appPath}/common/css/layout.css`,
|
||||||
|
`${appPath}/common/css/email.css`,
|
||||||
|
`${appPath}/common/css/misc.css`])
|
||||||
|
.mergeStyles();
|
|
@ -0,0 +1,27 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="es">
|
||||||
|
<head>
|
||||||
|
<title>{{ $t('subject') }}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<section class="container">
|
||||||
|
<!-- Header component -->
|
||||||
|
<email-header></email-header>
|
||||||
|
<!-- End header component -->
|
||||||
|
<section class="main">
|
||||||
|
<!-- Title block -->
|
||||||
|
<div class="title">
|
||||||
|
<h1>{{ $t('title') }}</h1>
|
||||||
|
</div>
|
||||||
|
<!-- Title block end -->
|
||||||
|
|
||||||
|
<p>{{$t('dearClient')}},</p>
|
||||||
|
<p v-html="$t('clientData')"></p>
|
||||||
|
<p v-html="$t('help')"></p>
|
||||||
|
</section>
|
||||||
|
<!-- Footer component -->
|
||||||
|
<email-footer :locale="locale"></email-footer>
|
||||||
|
<!-- End footer component -->
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,50 @@
|
||||||
|
const database = require(`${appPath}/lib/database`);
|
||||||
|
const reportEngine = require(`${appPath}/lib/reportEngine.js`);
|
||||||
|
const UserException = require(`${appPath}/lib/exceptions/userException`);
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'delivery-note',
|
||||||
|
async asyncData(ctx, params) {
|
||||||
|
const promises = [];
|
||||||
|
const data = {
|
||||||
|
isPreview: ctx.method === 'GET',
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!params.ticketFk)
|
||||||
|
throw new UserException('No ticket id specified');
|
||||||
|
|
||||||
|
promises.push(reportEngine.toPdf('rpt-delivery-note', ctx));
|
||||||
|
promises.push(this.methods.fetchTicket(params.ticketFk));
|
||||||
|
|
||||||
|
return Promise.all(promises).then(result => {
|
||||||
|
const stream = result[0];
|
||||||
|
const [[ticket]] = result[1];
|
||||||
|
|
||||||
|
Object.assign(data, ticket);
|
||||||
|
Object.assign(data, {attachments: [{filename: 'rpt-delivery-note.pdf', content: stream}]});
|
||||||
|
|
||||||
|
return data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (this.locale)
|
||||||
|
this.$i18n.locale = this.locale;
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetchTicket(ticketFk) {
|
||||||
|
return database.pool.query(`
|
||||||
|
SELECT
|
||||||
|
t.id,
|
||||||
|
u.lang locale,
|
||||||
|
c.email recipient
|
||||||
|
FROM ticket t
|
||||||
|
JOIN client c ON c.id = t.clientFk
|
||||||
|
JOIN account.user u ON u.id = c.id
|
||||||
|
WHERE t.id = ?`, [ticketFk]);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
'email-header': require('../email-header'),
|
||||||
|
'email-footer': require('../email-footer'),
|
||||||
|
},
|
||||||
|
};
|
|
@ -0,0 +1,11 @@
|
||||||
|
module.exports = {
|
||||||
|
messages: {
|
||||||
|
es: {
|
||||||
|
subject: 'Aquí tienes tu albarán',
|
||||||
|
title: '¡Este es tu albarán!',
|
||||||
|
dearClient: 'Estimado cliente',
|
||||||
|
clientData: `A continuación adjuntamos tu albarán.`,
|
||||||
|
help: 'Cualquier duda que te surja, no dudes en consultarla, <strong>¡estamos para atenderte!</strong>'
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
|
@ -6,16 +6,16 @@ module.exports = {
|
||||||
sections: {
|
sections: {
|
||||||
introduction: {
|
introduction: {
|
||||||
title: 'Estimado cliente',
|
title: 'Estimado cliente',
|
||||||
description: `Le informamos que han cambiado las condiciones de pago de su cuenta.
|
description: `Te informamos que han cambiado las condiciones de pago de tu cuenta.
|
||||||
<br/>A continuación le indicamos las nuevas condiciones`,
|
<br/>A continuación te indicamos las nuevas condiciones`,
|
||||||
},
|
},
|
||||||
pay: {
|
pay: {
|
||||||
method: 'Método de pago',
|
method: 'Método de pago',
|
||||||
day: 'Día de pago',
|
day: 'Día de pago',
|
||||||
dueDay: '{0} de cada mes',
|
dueDay: '{0} de cada mes',
|
||||||
cardImplicates: `Su modo de pago actual implica que deberá abonar el
|
cardImplicates: `Tu modo de pago actual implica que deberás abonar el
|
||||||
importe de los pedidos realizados en el mismo día para que se puedan enviar.`,
|
importe de los pedidos realizados en el mismo día para que se puedan enviar.`,
|
||||||
accountImplicates: `Su modo de pago actual implica que se le pasará un cargo a la
|
accountImplicates: `Tu modo de pago actual implica que se te pasará un cargo a la
|
||||||
cuenta terminada en <strong>"{0}"</strong> por el importe pendiente, al vencimiento establecido en las condiciones.`,
|
cuenta terminada en <strong>"{0}"</strong> por el importe pendiente, al vencimiento establecido en las condiciones.`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue