Merge branch 'dev' of https://git.verdnatura.es/salix into dev

* 'dev' of https://git.verdnatura.es/salix:
  mailer localDB
  setup-printer translation, added client-welcome report
This commit is contained in:
Carlos 2017-10-23 10:48:30 +02:00
commit 5e3d61d1f1
11 changed files with 279 additions and 43 deletions

View File

@ -1,7 +1,7 @@
{
"host": "localhost",
"port": 3306,
"user": "rot",
"user": "root",
"password": "",
"database": "vn"
}

View File

@ -33,4 +33,14 @@ router.get('/printer-setup/:clientId', function(request, response, next) {
});
});
// Client welcome
router.post('/client-welcome/:clientId', function(request, response, next) {
mail.sendWithTemplate('client-welcome', {recipient: request.params.clientId}, error => {
if (error)
return response.status(400).json({message: error.message});
return response.json();
});
});
module.exports = router;

View File

@ -0,0 +1,44 @@
var path = require('path');
var database = require(path.join(__dirname, '../../database.js'));
var format = require(path.join(__dirname, '../../util/format.js'));
module.exports = class ClientWelcome {
getData(params, cb) {
let query = `SELECT
CONCAT(w.name, ' ', w.firstName) name,
w.phone AS phone,
CONCAT(wu.name, '@verdnatura.es') AS email,
u.name AS userName,
LOWER(ct.code) countryCode,
c.email recipient
FROM client c
JOIN account.user u ON u.id = c.id
LEFT JOIN worker w ON w.id = c.workerFk
LEFT JOIN account.user wu ON wu.id = w.userFk
JOIN country ct ON ct.id = c.countryFk
WHERE c.id = ?`;
database.pool.query(query, [params.recipient], (error, result) => {
if (error || result.length == 0)
return cb(new Error('No template data found'));
Object.assign(this, result[0]);
cb();
});
}
get salesPersonName() {
if (this.name)
return `<div>${this._.salesPersonNameText}: <strong style="font-size: 20px">${this.name}</strong></div>`;
}
get salesPersonPhone() {
if (this.phone)
return `<div>${this._.salesPersonPhoneText}: <strong style="font-size: 20px">${format.phone(this.phone)}</strong></div>`;
}
get salesPersonEmail() {
if (this.email)
return `<div>${this._.salesPersonEmailText}: ` +
`<strong><a href="mailto:${this.email}" target="_blank" style="color:#8dba25">${this.email}</strong></div>`;
}
};

View File

@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="es">
<head>
<title>{{_.subject}}</title>
<meta charset="utf8"/>
</head>
<body>
<div class="wrapper">
<div class="container">
<!-- Banner block -->
<div class="banner">
<a href="https://www.verdnatura.es"/><img src="cid:header.png" alt="VerdNatura"/></a>
</div>
<!-- Banner block end -->
<!-- Title block -->
<div class="title">
<h1>{{_.title}}</h1>
</div>
<!-- Title block end -->
<!-- Mail body block -->
<div class="body">
<p style="text-align: justify">{{_.dear}},</p>
<p style="text-align: justify">{{_.bodyDescription}}</p>
<p style="text-align: justify">
Sus datos para poder comprar en la web de verdnatura (<a href="https://www.verdnatura.es" title="Visitar Verdnatura" target="_blank" style="color:#8dba25">https://www.verdnatura.es</a>)
o en nuestras aplicaciones para iOS (<a href="https://goo.gl/3hC2mG" title="App Store" target="_blank" style="color:#8dba25">https://goo.gl/3hC2mG</a>) y Android (<a href="https://goo.gl/8obvLc" title="Google Play" target="_blank" style="color:#8dba25">https://goo.gl/8obvLc</a>), son:
</p>
<p>
<div>Usuario: <strong>{{userName}}</strong></div>
<div>Contraseña: <strong>********</strong> (Va a recibir un correo para establecer la contraseña)</div>
</p>
<h1 style="color:#999">Cómo hacer un pedido</h1>
<p style="text-align: justify">Para realizar un pedido en nuestra web, debe configurarlo indicando:</p>
<ol>
<li>Si quiere recibir el pedido (por agencia o por nuestro propio reparto) o si lo prefiere recoger en alguno de nuestros almacenes.</li>
<li>La fecha en la que quiera recibir el pedido (se preparará el día anterior).</li>
<li>La dirección de entrega o el almacén donde quiera recoger el pedido.</li>
</ol>
<p style="text-align: justify">En nuestra web y aplicaciones puedes visualizar el stock disponible de flor cortada, verdes, plantas, complementos y artificial.
Tenga en cuenta que dicho stock puede variar en función de la fecha seleccionada al configurar el pedido. Es importante CONFIRMAR los pedidos para que la mercancía quede reservada.</p>
<p style="text-align: justify">El reparto se realiza de lunes a sábado según la zona en la que se encuentre. Por regla general, los pedidos que se entregan por agencia, deben estar confirmados y pagados antes de las 17h
del día en que se preparan (el día anterior a recibirlos), aunque esto puede variar si el pedido se envía a través de nuestro reparto y según la zona. </p>
<h1 style="color:#999">Cómo pagar</h1>
<p style="text-align: justify">Las formas de pago admitidas en Verdnatura son</p>
<ul>
<li>Con <strong>tarjeta</strong> a través de nuestra plataforma web (al confirmar el pedido).</li>
<li>Mediante <strong>giro bancario mensual</strong>, modalidad que hay que solicitar y tramitar.</li>
</ul>
<h1 style="color:#999">Cosas a tener en cuenta</h1>
<p style="text-align: justify">Verdnatura vende EXCLUSIVAMENTE a profesionales, por lo que debe remitirnos el Modelo 036 ó 037,
para comprobar que está dado/a de alta en el epígrafe correspondiente al comercio de flores.</p>
<h3 style="font-size:16px">POLÍTICA DE RECLAMACIONES</h3>
<p style="text-align: justify">Verdnatura aceptará las reclamaciones que se realicen dentro de los dos días naturales
siguientes a la recepción del pedido (incluyendo el mismo día de la recepción). Pasado este plazo no se aceptará ninguna reclamación.</p>
<p style="text-align: justify">Cualquier duda que le surja, no dude en consultarla, <strong>¡estamos para atenderle!</strong></p>
<p>
{{{salesPersonName}}}
{{{salesPersonPhone}}}
{{{salesPersonEmail}}}
</p>
</div>
<!-- Mail body block end -->
<!-- Action button block -->
<div class="buttons">
<a href="https://www.verdnatura.es" target="_blank"><div class="btn">
<span class="text">{{_.actionButton}}</span>
<span class="icon"><img src="cid:action.png"/></span>
</div></a><a href="https://goo.gl/forms/j8WSL151ZW6QtlT72" target="_blank"><div class="btn">
<span class="text">{{_.infoButton}}</span>
<span class="icon"><img src="cid:info.png"/></span>
</div></a>
</div>
<!-- Action button block -->
<!-- Networks block -->
<div class="footer">
<a href="https://www.facebook.com/Verdnatura" target="_blank">
<img src="cid:facebook.png" alt="Facebook"/>
</a>
<a href="https://www.twitter.com/Verdnatura" target="_blank">
<img src="cid:twitter.png" alt="Twitter"/>
</a>
<a href="https://www.youtube.com/Verdnatura" target="_blank">
<img src="cid:youtube.png" alt="Youtube"/>
</a>
<a href="https://www.pinterest.com/Verdnatura" target="_blank">
<img src="cid:pinterest.png" alt="Pinterest"/>
</a>
<a href="https://www.instagram.com/Verdnatura" target="_blank">
<img src="cid:instagram.png" alt="Instagram"/>
</a>
<a href="https://www.linkedin.com/company/verdnatura" target="_blank">
<img src="cid:linkedin.png" alt="Linkedin"/>
</a>
</div>
<!-- Networks block end -->
<!-- Privacy block -->
<div class="privacy">
<p style="text-align: justify">{{_.fiscalAddress}}</p>
<p style="text-align: justify">{{_.privacy}}</p>
<p style="text-align: justify">{{_.privacyLaw}}</p>
</div>
<!-- Privacy block end -->
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,14 @@
{
"subject": "¡Le damos la bienvenida!",
"title": "¡LE DAMOS LA BIENVENIDA!",
"dear": "Estimado cliente",
"bodyDescription": "Siga las intrucciones especificadas en este correo para llevar a cabo la instalación de la impresora.",
"salesPersonNameText": "Soy tu comercial y mi nombre es",
"salesPersonPhoneText": "Teléfono y whatsapp",
"salesPersonEmailText": "Dirección de e-mail",
"actionButton": "Visita nuestra Web",
"infoButton": "Ayúdanos a mejorar",
"fiscalAddress": "VERDNATURA LEVANTE SL, B97367486 Avda. Espioca, 100, 46460 Silla _ www.verdnatura.es _ clientes@verdnatura.es",
"privacy": "- AVISO - Este mensaje es privado y confidencial, y debe ser utilizado exclusivamente por la persona destinataria del mismo. Si usted ha recibido este mensaje por error, le rogamos lo comunique al remitente y borre dicho mensaje y cualquier documento adjunto que pudiera contener. Verdnatura Levante SL no renuncia a la confidencialidad ni a ningún privilegio por causa de transmisión errónea o mal funcionamiento. Igualmente no se hace responsable de los cambios, alteraciones, errores u omisiones que pudieran hacerse al mensaje una vez enviado.",
"privacyLaw": "En cumplimiento de lo dispuesto en la Ley Orgánica 15/1999, de Protección de Datos de Carácter Personal, le comunicamos que los datos personales que facilite se incluirán en ficheros automatizados de VERDNATURA LEVANTE S.L., pudiendo en todo momento ejercitar los derechos de acceso, rectificación, cancelación y oposición, comunicándolo por escrito al domicilio social de la entidad. La finalidad del fichero es la gestión administrativa, contabilidad, y facturación."
}

View File

@ -25,17 +25,16 @@ module.exports = class PaymentUpdate {
}
get paymentDay() {
if (this.payMethodFk != 5) {
if (this.payMethodFk != 5)
return `<div>${this._.paymentDay}: <strong style="font-size: 16px">${this.dueDay} ${this._.everyMonth}</strong></div>`;
}
}
get paymentAdvice() {
switch (this.payMethodFk) {
case 4:
return `${this._.accountPaymentAdviceBefore} ${format.partialAccountAddress(this.iban)} ${this._.accountPaymentAdviceAfter}`;
case 5:
return this._.cardPaymentAdvice;
case 4:
return `${this._.accountPaymentAdviceBefore} ${format.partialAccountAddress(this.iban)} ${this._.accountPaymentAdviceAfter}`;
case 5:
return this._.cardPaymentAdvice;
}
}
};

View File

@ -23,49 +23,40 @@
<div class="body">
<p style="text-align: justify">{{_.dear}},</p>
<p style="text-align: justify">{{_.bodyDescription}}</p>
<p style="text-align: justify">
Puede utilizar como guía, el video del montaje del ribon y la cinta <a href="https://www.youtube.com/watch?v=qhb0kgQF3o8" title="Youtube" target="_blank" style="color:#8dba25">https://www.youtube.com/watch?v=qhb0kgQF3o8</a>.
También necesitará el QLabel, el programa para imprimir las cintas.</p>
<p>Puede descargarlo desde este enlace <a href="http://www.godexintl.com/en/product/type/Download/2967" title="Descargar QLabel" target="_blank" style="color:#8dba25">http://www.godexintl.com/en/product/type/Download/2967</a></p>
<p style="text-align: justify">{{{_.followGuide}}}</p>
<p>{{{_.downloadFrom}}}</p>
<h1 style="color:#999">Utilización de QLabel</h1>
<h1 style="color:#999">{{_.sectionQLabelTitle}}</h1>
<p style="text-align: justify">Para utilizar el programa de impresión de cintas siga estos pasos:</p>
<p style="text-align: justify">{{_.sectionQLabelDescription}}</p>
<ol>
<li>Abra el programa QLabel.</li>
<li>Haga click en el icono de la carpeta.</li>
<li>Seleccione el archivo plantilla llamado "MODEL.ezp".</li>
<li>Haga click ENCIMA DEL TEXTO con el boton secundario del ratÓn.</li>
<li>Elija la primera opcion "SETUP".</li>
<li>Cambie el texto para imprimir.</li>
<li>Haga click en el boton OK.</li>
<li>Desplácese con el raton para ver la medida máxima.</li>
<li>Haga click ENCIMA DEL TEXTO con el boton secundario del raton.</li>
<li>Elija la primera opcion "SETUP PRINTER".</li>
<li>Haga click en la primera pestalla "Label Setup".</li>
<li>Y modifique la propidad "Paper Height".</li>
<li>Haga click en el boton OK.</li>
<li>Haga click sobre el icono de la impresora.</li>
<li>Haga click en "Print".</li>
<li>{{_.sectionQLabelStep1}}</li>
<li>{{_.sectionQLabelStep2}}</li>
<li>{{_.sectionQLabelStep3}}</li>
<li>{{{_.sectionQLabelStep4}}}</li>
<li>{{_.sectionQLabelStep5}}</li>
<li>{{_.sectionQLabelStep6}}</li>
<li>{{_.sectionQLabelStep7}}</li>
<li>{{_.sectionQLabelStep8}}</li>
<li>{{{_.sectionQLabelStep9}}}</li>
<li>{{_.sectionQLabelStep10}}</li>
<li>{{_.sectionQLabelStep11}}</li>
<li>{{_.sectionQLabelStep12}}</li>
<li>{{_.sectionQLabelStep13}}</li>
<li>{{_.sectionQLabelStep14}}</li>
<li>{{_.sectionQLabelStep15}}</li>
</ol>
<h1 style="color:#999">¿Necesita ayuda?</h1>
<p style="text-align: justify">Si necesita ayuda, descárguese nuestro programa de soporte para poder conectarnos remotamente a su pc y hacerle la instalación.
Proporciónenos un horario de contacto para atenderle, y contactaremos con usted.</p>
<p>Puede descargarse el programa desde este enlace <a href="http://soporte.verdnatura.es" title="Soporte Verdnatura" target="_blank" style="color:#8dba25">http://soporte.verdnatura.es</a></p>
<h1 style="color:#999">{{_.sectionHelpTitle}}</h1>
<p style="text-align: justify">{{_.sectionHelpDescription}}</p>
<p>{{{_.sectionHelpDownloadRemoteSupport}}}</p>
<p>
<div>Soy tu comercial y mi nombre es: <strong style="font-size: 20px">{{_.salesPersonName}}</strong></div>
<div>Teléfono y whatsapp: <strong style="font-size: 20px">{salesMan_phone}</strong></div>
<div>Email: <strong><a href="mailto:{salesMan_mail}" target="_blank" style="color:#8dba25;font-size: 20px">{salesMan_mail}</a></strong></div>
{{{salesPersonName}}}
{{{salesPersonPhone}}}
{{{salesPersonEmail}}}
</p>
</div>
<!-- Mail body block end -->

View File

@ -3,6 +3,31 @@
"title": "¡GRACIAS POR SU CONFIANZA!",
"dear": "Estimado cliente",
"bodyDescription": "Siga las intrucciones especificadas en este correo para llevar a cabo la instalación de la impresora.",
"followGuide": "Puede utilizar como guía, el video del montaje del ribon y la cinta <a href=\"https:\//www.youtube.com/watch?v=qhb0kgQF3o8\" title=\"Youtube\" target=\"_blank\" style=\"color:#8dba25\">https://www.youtube.com/watch?v=qhb0kgQF3o8</a>. También necesitará el QLabel, el programa para imprimir las cintas.",
"downloadFrom": "Puede descargarlo desde este enlace <a href=\"http://www.godexintl.com/en/product/type/Download/2967\" title=\"Descargar QLabel\" target=\"_blank\" style=\"color:#8dba25\">http://www.godexintl.com/en/product/type/Download/2967</a>",
"sectionQLabelTitle": "Utilización de QLabel",
"sectionQLabelDescription": "Para utilizar el programa de impresión de cintas siga estos pasos:",
"sectionQLabelStep1": "Abra el programa QLabel.",
"sectionQLabelStep2": "Haga clic en el icono de la barra superior superior de la \"carpeta\".",
"sectionQLabelStep3": "Seleccione el archivo plantilla llamado \"model.ezp\".",
"sectionQLabelStep4": "Haga clic <strong>encima del texto</strong> con el boton secundario del ratón.",
"sectionQLabelStep5": "Elija la primera opcion \"setup\".",
"sectionQLabelStep6": "Cambie el texto para imprimir.",
"sectionQLabelStep7": "Haga clic en el boton \"Ok\".",
"sectionQLabelStep8": "Desplácese con el raton para ver la medida máxima.",
"sectionQLabelStep9": "Haga clic <strong>encima del texto</strong> con el botón secundario del ratón.",
"sectionQLabelStep10": "Elija la primera opcion \"Setup printer\".",
"sectionQLabelStep11": "Haga clic en la primera pestalla \"Label Setup\".",
"sectionQLabelStep12": "Modifique la propidad \"Paper Height\".",
"sectionQLabelStep13": "Haga clic en el boton \"Ok\".",
"sectionQLabelStep14": "Haga clic sobre el icono de la impresora.",
"sectionQLabelStep15": "Haga clic en \"Print\".",
"sectionHelpTitle": "¿Necesita ayuda?",
"sectionHelpDescription": "Si necesita ayuda, descárguese nuestro programa de soporte para poder conectarnos remotamente a su equipo y hacerle la instalación. Proporciónenos un horario de contacto para atenderle, y contactaremos con usted.",
"sectionHelpDownloadRemoteSupport": "Puede descargarse el programa desde este enlace <a href=\"http://soporte.verdnatura.es\" title=\"Soporte Verdnatura\" target=\"_blank\" style=\"color:#8dba25\">http://soporte.verdnatura.es</a>.",
"salesPersonNameText": "Soy su comercial y mi nombre es",
"salesPersonPhoneText": "Teléfono y whatsapp",
"salesPersonEmailText": "Dirección de e-mail",
"actionButton": "Visita nuestra Web",
"infoButton": "Ayúdanos a mejorar",
"fiscalAddress": "VERDNATURA LEVANTE SL, B97367486 Avda. Espioca, 100, 46460 Silla _ www.verdnatura.es _ clientes@verdnatura.es",

View File

@ -2,14 +2,17 @@ var path = require('path');
var database = require(path.join(__dirname, '../../database.js'));
var format = require(path.join(__dirname, '../../util/format.js'));
module.exports = class PaymentUpdate {
module.exports = class PrinterSetup {
getData(params, cb) {
let query = `SELECT
CONCAT(w.name, ' ', w.firstName) salesPersonName,
CONCAT(w.name, ' ', w.firstName) name,
w.phone AS phone,
CONCAT(u.name, '@verdnatura.es') AS email,
LOWER(ct.code) countryCode,
c.email recipient
FROM client c
LEFT JOIN worker w ON w.id = c.workerFk
LEFT JOIN account.user u ON u.id = w.userFk
JOIN country ct ON ct.id = c.countryFk
WHERE c.id = ?`;
database.pool.query(query, [params.recipient], (error, result) => {
@ -20,4 +23,20 @@ module.exports = class PaymentUpdate {
cb();
});
}
get salesPersonName() {
if (this.name)
return `<div>${this._.salesPersonNameText}: <strong>${this.name}</strong></div>`;
}
get salesPersonPhone() {
if (this.phone)
return `<div>${this._.salesPersonPhoneText}: <strong>${format.phone(this.phone)}</strong></div>`;
}
get salesPersonEmail() {
if (this.email)
return `<div>${this._.salesPersonEmailText}: ` +
`<strong><a href="mailto:${this.email}" target="_blank" style="color:#8dba25">${this.email}</strong></div>`;
}
};

View File

@ -31,5 +31,9 @@ module.exports = {
partialAccountAddress: function(addressNumber) {
let address = this.accountAddress(addressNumber);
return address.substring(0, 19).replace(/[0-9]/g, 'X') + address.substring(19, 24);
},
phone: function(number) {
return number;
}
};