From f17e9058b3eb14809ac645a85c29905e7668bd12 Mon Sep 17 00:00:00 2001 From: joan Date: Mon, 28 Sep 2020 13:54:02 +0200 Subject: [PATCH] Refactor --- print/core/component.js | 3 +- print/core/database.js | 30 +------- print/core/mixins/db-helper.js | 74 +++++++++++++++++++ print/core/mixins/index.js | 1 + .../email/client-welcome/client-welcome.js | 3 +- .../letter-debtor-nd/letter-debtor-nd.js | 3 +- .../letter-debtor-st/letter-debtor-st.js | 2 +- .../email/payment-update/payment-update.js | 3 +- .../email/printer-setup/printer-setup.js | 3 +- .../campaign-metrics/campaign-metrics.js | 5 +- .../claim-pickup-order/claim-pickup-order.js | 5 +- .../reports/delivery-note/delivery-note.js | 17 ++--- .../sql/{getAddress.sql => address.sql} | 0 .../sql/{getClient.sql => client.sql} | 0 .../sql/{getPackagings.sql => packagings.sql} | 0 .../sql/{getSales.sql => sales.sql} | 0 .../sql/{getServices.sql => services.sql} | 0 .../sql/{getSignature.sql => signature.sql} | 0 .../sql/{getTaxes.sql => taxes.sql} | 0 .../sql/{getTicket.sql => ticket.sql} | 0 .../reports/driver-route/driver-route.js | 5 +- .../reports/entry-order/entry-order.js | 7 +- .../reports/item-label/item-label.js | 5 +- .../reports/letter-debtor/letter-debtor.js | 7 +- print/templates/reports/receipt/receipt.js | 5 +- .../templates/reports/sepa-core/sepa-core.js | 5 +- .../reports/zone/assets/css/style.css | 5 +- print/templates/reports/zone/options.json | 4 + print/templates/reports/zone/zone.js | 4 +- 29 files changed, 118 insertions(+), 78 deletions(-) create mode 100644 print/core/mixins/db-helper.js rename print/templates/reports/delivery-note/sql/{getAddress.sql => address.sql} (100%) rename print/templates/reports/delivery-note/sql/{getClient.sql => client.sql} (100%) rename print/templates/reports/delivery-note/sql/{getPackagings.sql => packagings.sql} (100%) rename print/templates/reports/delivery-note/sql/{getSales.sql => sales.sql} (100%) rename print/templates/reports/delivery-note/sql/{getServices.sql => services.sql} (100%) rename print/templates/reports/delivery-note/sql/{getSignature.sql => signature.sql} (100%) rename print/templates/reports/delivery-note/sql/{getTaxes.sql => taxes.sql} (100%) rename print/templates/reports/delivery-note/sql/{getTicket.sql => ticket.sql} (100%) create mode 100644 print/templates/reports/zone/options.json diff --git a/print/core/component.js b/print/core/component.js index 4f439f1a92..4985cd061f 100644 --- a/print/core/component.js +++ b/print/core/component.js @@ -93,10 +93,11 @@ class Component { const component = this.build(); const i18n = new VueI18n(config.i18n); + const props = {tplPath: this.path, ...this.args}; this._component = new Vue({ i18n: i18n, render: h => h(component, { - props: this.args + props: props }) }); diff --git a/print/core/database.js b/print/core/database.js index 578ae86d60..f8bd098228 100644 --- a/print/core/database.js +++ b/print/core/database.js @@ -1,7 +1,6 @@ const mysql = require('mysql2/promise'); const config = require('./config.js'); const fs = require('fs-extra'); -const path = require('path'); module.exports = { init() { @@ -34,9 +33,8 @@ module.exports = { * * @return {Object} - Result promise */ - rawSqlFromDef(queryName, params, dirname = '.') { - const sqlPath = path.join(dirname, 'sql', `${queryName}.sql`); - const query = fs.readFileSync(sqlPath, 'utf8'); + rawSqlFromDef(queryName, params) { + const query = fs.readFileSync(`${queryName}.sql`, 'utf8'); return this.rawSql(query, params); }, @@ -90,29 +88,5 @@ module.exports = { return this.findOneFromDef(queryName, params, dirname).then(row => { return Object.values(row)[0]; }); - }, - - getCaller() { - let originalFunc = Error.prepareStackTrace; - let callerfile; - try { - const err = new Error(); - - Error.prepareStackTrace = function(err, stack) { - return stack; - }; - - const currentfile = err.stack.shift().getFileName(); - - while (err.stack.length) { - callerfile = err.stack.shift().getFileName(); - - if (currentfile !== callerfile) break; - } - } catch (e) {} - - Error.prepareStackTrace = originalFunc; - - return path.dirname(callerfile); } }; diff --git a/print/core/mixins/db-helper.js b/print/core/mixins/db-helper.js new file mode 100644 index 0000000000..06f4e196d0 --- /dev/null +++ b/print/core/mixins/db-helper.js @@ -0,0 +1,74 @@ +const Vue = require('vue'); +const path = require('path'); +const db = require('../database'); + +const dbHelper = { + methods: { + /** + * Makes a query from a raw sql + * @param {String} query - The raw SQL query + * @param {Object} params - Parameterized values + * + * @return {Object} - Result promise + */ + rawSql: db.rawSql, + + /** + * Makes a query from a SQL file + * @param {String} queryName - The SQL file name + * @param {Object} params - Parameterized values + * + * @return {Object} - Result promise + */ + rawSqlFromDef(queryName, params) { + const absolutePath = path.join(__dirname, '../', this.tplPath, 'sql', queryName); + return db.rawSqlFromDef(absolutePath, params); + }, + + /** + * Returns the first row from a given raw sql + * @param {String} query - The raw SQL query + * @param {Object} params - Parameterized values + * + * @return {Object} - Result promise + */ + findOne: db.findOne, + + /** + * Returns the first row from a given SQL file + * @param {String} queryName - The SQL file name + * @param {Object} params - Parameterized values + * + * @return {Object} - Result promise + */ + findOneFromDef(queryName, params) { + return this.rawSqlFromDef(queryName, params) + .then(([row]) => row); + }, + + /** + * Returns the first property from a given raw sql + * @param {String} query - The raw SQL query + * @param {Object} params - Parameterized values + * + * @return {Object} - Result promise + */ + findValue: db.findValue, + + /** + * Returns the first property from a given SQL file + * @param {String} queryName - The SQL file name + * @param {Object} params - Parameterized values + * + * @return {Object} - Result promise + */ + findValueFromDef(queryName, params) { + return this.findOneFromDef(queryName, params).then(row => { + return Object.values(row)[0]; + }); + } + }, + props: ['tplPath'] +}; + +Vue.mixin(dbHelper); diff --git a/print/core/mixins/index.js b/print/core/mixins/index.js index ea8205d750..ba9975a37b 100644 --- a/print/core/mixins/index.js +++ b/print/core/mixins/index.js @@ -2,3 +2,4 @@ require('./image-src'); require('./user-locale'); require('./prop-validator'); +require('./db-helper'); diff --git a/print/templates/email/client-welcome/client-welcome.js b/print/templates/email/client-welcome/client-welcome.js index 1a0624548e..f562339ccb 100755 --- a/print/templates/email/client-welcome/client-welcome.js +++ b/print/templates/email/client-welcome/client-welcome.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const emailHeader = new Component('email-header'); const emailFooter = new Component('email-footer'); @@ -10,7 +9,7 @@ module.exports = { }, methods: { fetchClient(clientId) { - return db.findOneFromDef('client', [clientId], __dirname); + return this.findOneFromDef('client', [clientId]); }, }, components: { diff --git a/print/templates/email/letter-debtor-nd/letter-debtor-nd.js b/print/templates/email/letter-debtor-nd/letter-debtor-nd.js index fa10eaaafe..ba9f7957d0 100755 --- a/print/templates/email/letter-debtor-nd/letter-debtor-nd.js +++ b/print/templates/email/letter-debtor-nd/letter-debtor-nd.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const emailHeader = new Component('email-header'); const emailFooter = new Component('email-footer'); const attachment = new Component('attachment'); @@ -18,7 +17,7 @@ module.exports = { }, methods: { fetchDebtor(clientId, companyId) { - return db.findOneFromDef('client', [clientId, companyId], __dirname); + return this.findOneFromDef('client', [clientId, companyId]); } }, components: { diff --git a/print/templates/email/letter-debtor-st/letter-debtor-st.js b/print/templates/email/letter-debtor-st/letter-debtor-st.js index 3f9039d176..56fc7c8a81 100755 --- a/print/templates/email/letter-debtor-st/letter-debtor-st.js +++ b/print/templates/email/letter-debtor-st/letter-debtor-st.js @@ -18,7 +18,7 @@ module.exports = { }, methods: { fetchDebtor(clientId, companyId) { - return db.findOneFromDef('client', [clientId, companyId], __dirname); + return this.findOneFromDef('client', [clientId, companyId]); } }, components: { diff --git a/print/templates/email/payment-update/payment-update.js b/print/templates/email/payment-update/payment-update.js index 249fb917f3..a411d78c82 100755 --- a/print/templates/email/payment-update/payment-update.js +++ b/print/templates/email/payment-update/payment-update.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const emailHeader = new Component('email-header'); const emailFooter = new Component('email-footer'); @@ -18,7 +17,7 @@ module.exports = { }, methods: { fetchPayMethod(clientId) { - return db.findOneFromDef('payMethod', {clientId: clientId}, __dirname); + return this.findOneFromDef('payMethod', {clientId: clientId}); } }, components: { diff --git a/print/templates/email/printer-setup/printer-setup.js b/print/templates/email/printer-setup/printer-setup.js index b15e144741..f6f168163d 100755 --- a/print/templates/email/printer-setup/printer-setup.js +++ b/print/templates/email/printer-setup/printer-setup.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const emailHeader = new Component('email-header'); const emailFooter = new Component('email-footer'); const attachment = new Component('attachment'); @@ -15,7 +14,7 @@ module.exports = { }, methods: { fetchClient(clientId) { - return db.findOneFromDef('client', [clientId], __dirname); + return this.findOneFromDef('client', [clientId]); } }, components: { diff --git a/print/templates/reports/campaign-metrics/campaign-metrics.js b/print/templates/reports/campaign-metrics/campaign-metrics.js index e8bd317e81..07d261a617 100755 --- a/print/templates/reports/campaign-metrics/campaign-metrics.js +++ b/print/templates/reports/campaign-metrics/campaign-metrics.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); @@ -14,10 +13,10 @@ module.exports = { }, methods: { fetchClient(clientId) { - return db.findOneFromDef('client', [clientId], __dirname); + return this.findOneFromDef('client', [clientId]); }, fetchSales(clientId, from, to) { - return db.rawSqlFromDef('sales', [clientId, from, to], __dirname); + return this.rawSqlFromDef('sales', [clientId, from, to]); }, }, components: { diff --git a/print/templates/reports/claim-pickup-order/claim-pickup-order.js b/print/templates/reports/claim-pickup-order/claim-pickup-order.js index fc25db35f9..0d1228a4e0 100755 --- a/print/templates/reports/claim-pickup-order/claim-pickup-order.js +++ b/print/templates/reports/claim-pickup-order/claim-pickup-order.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); @@ -21,10 +20,10 @@ module.exports = { }, methods: { fetchClient(claimId) { - return db.findOneFromDef('client', [claimId], __dirname); + return this.findOneFromDef('client', [claimId]); }, fetchSales(claimId) { - return db.rawSqlFromDef('sales', [claimId], __dirname); + return this.rawSqlFromDef('sales', [claimId]); }, }, components: { diff --git a/print/templates/reports/delivery-note/delivery-note.js b/print/templates/reports/delivery-note/delivery-note.js index e4ef9e26e5..22b0a7cf68 100755 --- a/print/templates/reports/delivery-note/delivery-note.js +++ b/print/templates/reports/delivery-note/delivery-note.js @@ -1,5 +1,4 @@ const config = require(`${appPath}/core/config`); -const db = require(`${appPath}/core/database`); const Component = require(`${appPath}/core/component`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); @@ -42,28 +41,28 @@ module.exports = { }, methods: { fetchClient(ticketId) { - return db.findOneFromDef('getClient', [ticketId], __dirname); + return this.findOneFromDef('client', [ticketId]); }, fetchTicket(ticketId) { - return db.findOneFromDef('getTicket', [ticketId], __dirname); + return this.findOneFromDef('ticket', [ticketId]); }, fetchAddress(ticketId) { - return db.findOneFromDef(`getAddress`, [ticketId], __dirname); + return this.findOneFromDef(`address`, [ticketId]); }, fetchSignature(ticketId) { - return db.findOneFromDef('getSignature', [ticketId], __dirname); + return this.findOneFromDef('signature', [ticketId]); }, fetchTaxes(ticketId) { - return db.findOneFromDef(`getTaxes`, [ticketId], __dirname); + return this.findOneFromDef(`taxes`, [ticketId]); }, fetchSales(ticketId) { - return db.rawSqlFromDef('getSales', [ticketId], __dirname); + return this.rawSqlFromDef('sales', [ticketId]); }, fetchPackagings(ticketId) { - return db.rawSqlFromDef('getPackagings', [ticketId], __dirname); + return this.rawSqlFromDef('packagings', [ticketId]); }, fetchServices(ticketId) { - return db.rawSqlFromDef('getServices', [ticketId], __dirname); + return this.rawSqlFromDef('services', [ticketId]); }, getSubTotal() { diff --git a/print/templates/reports/delivery-note/sql/getAddress.sql b/print/templates/reports/delivery-note/sql/address.sql similarity index 100% rename from print/templates/reports/delivery-note/sql/getAddress.sql rename to print/templates/reports/delivery-note/sql/address.sql diff --git a/print/templates/reports/delivery-note/sql/getClient.sql b/print/templates/reports/delivery-note/sql/client.sql similarity index 100% rename from print/templates/reports/delivery-note/sql/getClient.sql rename to print/templates/reports/delivery-note/sql/client.sql diff --git a/print/templates/reports/delivery-note/sql/getPackagings.sql b/print/templates/reports/delivery-note/sql/packagings.sql similarity index 100% rename from print/templates/reports/delivery-note/sql/getPackagings.sql rename to print/templates/reports/delivery-note/sql/packagings.sql diff --git a/print/templates/reports/delivery-note/sql/getSales.sql b/print/templates/reports/delivery-note/sql/sales.sql similarity index 100% rename from print/templates/reports/delivery-note/sql/getSales.sql rename to print/templates/reports/delivery-note/sql/sales.sql diff --git a/print/templates/reports/delivery-note/sql/getServices.sql b/print/templates/reports/delivery-note/sql/services.sql similarity index 100% rename from print/templates/reports/delivery-note/sql/getServices.sql rename to print/templates/reports/delivery-note/sql/services.sql diff --git a/print/templates/reports/delivery-note/sql/getSignature.sql b/print/templates/reports/delivery-note/sql/signature.sql similarity index 100% rename from print/templates/reports/delivery-note/sql/getSignature.sql rename to print/templates/reports/delivery-note/sql/signature.sql diff --git a/print/templates/reports/delivery-note/sql/getTaxes.sql b/print/templates/reports/delivery-note/sql/taxes.sql similarity index 100% rename from print/templates/reports/delivery-note/sql/getTaxes.sql rename to print/templates/reports/delivery-note/sql/taxes.sql diff --git a/print/templates/reports/delivery-note/sql/getTicket.sql b/print/templates/reports/delivery-note/sql/ticket.sql similarity index 100% rename from print/templates/reports/delivery-note/sql/getTicket.sql rename to print/templates/reports/delivery-note/sql/ticket.sql diff --git a/print/templates/reports/driver-route/driver-route.js b/print/templates/reports/driver-route/driver-route.js index a3f906864b..a93ad2a98c 100755 --- a/print/templates/reports/driver-route/driver-route.js +++ b/print/templates/reports/driver-route/driver-route.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); @@ -28,10 +27,10 @@ module.exports = { }, methods: { fetchRoutes(routesId) { - return db.rawSqlFromDef('routes', {routesId}, __dirname); + return this.rawSqlFromDef('routes', {routesId}); }, fetchTickets(routesId) { - return db.rawSqlFromDef('tickets', {routesId}, __dirname); + return this.rawSqlFromDef('tickets', {routesId}); } }, components: { diff --git a/print/templates/reports/entry-order/entry-order.js b/print/templates/reports/entry-order/entry-order.js index 654ba3460f..de396df2cb 100755 --- a/print/templates/reports/entry-order/entry-order.js +++ b/print/templates/reports/entry-order/entry-order.js @@ -1,4 +1,3 @@ -const db = require(`${appPath}/core/database`); const Component = require(`${appPath}/core/component`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); @@ -18,13 +17,13 @@ module.exports = { }, methods: { fetchSupplier(entryId) { - return db.findOneFromDef('supplier', [entryId], __dirname); + return this.findOneFromDef('supplier', [entryId]); }, fetchEntry(entryId) { - return db.findOneFromDef('entry', [entryId], __dirname); + return this.findOneFromDef('entry', [entryId]); }, fetchBuys(entryId) { - return db.rawSqlFromDef('buys', [entryId], __dirname); + return this.rawSqlFromDef('buys', [entryId]); }, getTotal() { let total = 0.00; diff --git a/print/templates/reports/item-label/item-label.js b/print/templates/reports/item-label/item-label.js index 111d5a4a03..730d8ad99d 100755 --- a/print/templates/reports/item-label/item-label.js +++ b/print/templates/reports/item-label/item-label.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); const qrcode = require('qrcode'); @@ -30,10 +29,10 @@ module.exports = { }, methods: { fetchItem(id, warehouseId) { - return db.findOneFromDef('item', [id, warehouseId], __dirname); + return this.findOneFromDef('item', [id, warehouseId]); }, fetchItemTags(itemId) { - return db.rawSqlFromDef('itemTags', [itemId], __dirname).then(rows => { + return this.rawSqlFromDef('itemTags', [itemId]).then(rows => { const tags = {}; rows.forEach(row => tags[row.code] = row.value); diff --git a/print/templates/reports/letter-debtor/letter-debtor.js b/print/templates/reports/letter-debtor/letter-debtor.js index 2afc96b467..f6285a6a14 100755 --- a/print/templates/reports/letter-debtor/letter-debtor.js +++ b/print/templates/reports/letter-debtor/letter-debtor.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); @@ -24,13 +23,13 @@ module.exports = { }, methods: { fetchClient(clientId) { - return db.findOneFromDef('client', [clientId], __dirname); + return this.findOneFromDef('client', [clientId]); }, fetchSales(clientId, companyId) { - return db.findOneFromDef('sales', { + return this.findOneFromDef('sales', { clientId: clientId, companyId: companyId, - }, __dirname); + }); }, getBalance(sale) { if (sale.debtOut) diff --git a/print/templates/reports/receipt/receipt.js b/print/templates/reports/receipt/receipt.js index 7ba7f5afea..d34735bb78 100755 --- a/print/templates/reports/receipt/receipt.js +++ b/print/templates/reports/receipt/receipt.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); @@ -14,10 +13,10 @@ module.exports = { }, methods: { fetchClient(receiptId) { - return db.findOneFromDef('client', [receiptId], __dirname); + return this.findOneFromDef('client', [receiptId]); }, fetchReceipt(receiptId) { - return db.findOneFromDef('receipt', [receiptId], __dirname); + return this.findOneFromDef('receipt', [receiptId]); } }, components: { diff --git a/print/templates/reports/sepa-core/sepa-core.js b/print/templates/reports/sepa-core/sepa-core.js index f315397c26..953af9c6f4 100755 --- a/print/templates/reports/sepa-core/sepa-core.js +++ b/print/templates/reports/sepa-core/sepa-core.js @@ -1,5 +1,4 @@ const Component = require(`${appPath}/core/component`); -const db = require(`${appPath}/core/database`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); @@ -21,10 +20,10 @@ const rptSepaCore = { }, methods: { fetchClient(clientId, companyId) { - return db.findOneFromDef('client', {companyId, clientId}, __dirname); + return this.findOneFromDef('client', {companyId, clientId}); }, fetchSupplier(clientId, companyId) { - return db.findOneFromDef('supplier', {companyId, clientId}, __dirname); + return this.findOneFromDef('supplier', {companyId, clientId}); } }, components: { diff --git a/print/templates/reports/zone/assets/css/style.css b/print/templates/reports/zone/assets/css/style.css index 50d5518f58..da9e0e4d43 100644 --- a/print/templates/reports/zone/assets/css/style.css +++ b/print/templates/reports/zone/assets/css/style.css @@ -2,8 +2,9 @@ div.text { font-family: Tahoma; font-weight: bold; color: white; - font-size: 7.5em; + font-size: 12em; text-align: center; background-color: black; - margin-bottom: 0.2em + margin: 0.30em; + padding: 30px 0 } \ No newline at end of file diff --git a/print/templates/reports/zone/options.json b/print/templates/reports/zone/options.json new file mode 100644 index 0000000000..faf1781b55 --- /dev/null +++ b/print/templates/reports/zone/options.json @@ -0,0 +1,4 @@ +{ + "landscape": true, + "format": "A4" +} \ No newline at end of file diff --git a/print/templates/reports/zone/zone.js b/print/templates/reports/zone/zone.js index 3bd0c473aa..0b8f10bdff 100755 --- a/print/templates/reports/zone/zone.js +++ b/print/templates/reports/zone/zone.js @@ -1,5 +1,3 @@ -const db = require(`${appPath}/core/database`); - module.exports = { name: 'zone', async serverPrefetch() { @@ -10,7 +8,7 @@ module.exports = { }, methods: { fetchZone(routeId) { - return db.findOneFromDef('zone', {routeId}, __dirname); + return this.findOneFromDef('zone', {routeId}); } }, props: {