const Component = require(`${appPath}/core/component`); const db = require(`${appPath}/core/database`); const reportHeader = new Component('report-header'); const reportFooter = new Component('report-footer'); module.exports = { name: 'driver-route', async serverPrefetch() { this.route = await this.fetchRoute(this.routeId); this.tickets = await this.fetchTickets(this.routeId); if (!this.route) throw new Error('Something went wrong'); }, methods: { fetchRoute(id) { return db.findOne( `SELECT r.id, r.m3, r.created, r.time, u.nickName userNickName, v.tradeMark vehicleTradeMark, v.model vehicleModel, v.numberPlate plateNumber, am.name agencyName FROM route r LEFT JOIN vehicle v ON v.id = r.vehicleFk LEFT JOIN worker w ON w.id = r.workerFk LEFT JOIN account.user u ON u.id = w.userFk LEFT JOIN agencyMode am ON am.id = r.agencyModeFk WHERE r.id = :routeId`, {routeId: id}); }, // Redmine #1855 Replace function Averiguar_ComercialCliente_Id() fetchTickets(routeId) { return db.rawSql( `SELECT t.nickname addressName, t.packages, t.priority, t.id, t.clientFk, t.companyFk, if(a.phone, a.phone, c.phone) AS phone, if(a.mobile, a.mobile, c.mobile) AS mobile, wh.name warehouseName, a.city, a.street, a.postalCode, LPAD(a.id, 5, '0') AS addressFk, p.name province, vn.ticketGetTotal(t.id) AS import, am.name ticketAgency, tob.description, s.shipFk, u.nickName salesPersonName FROM route r LEFT JOIN ticket t ON t.routeFk = r.id LEFT JOIN address a ON a.id = t.addressFk LEFT JOIN client c ON c.id = t.clientFk LEFT JOIN worker w ON w.id = client_getSalesPerson(t.clientFk, CURDATE()) LEFT JOIN account.user u ON u.id = w.userFk LEFT JOIN ticketObservation tob ON tob.ticketFk = t.id AND tob.observationTypeFk = 3 LEFT JOIN province p ON a.provinceFk = p.id LEFT JOIN warehouse wh ON wh.id = t.warehouseFk LEFT JOIN agencyMode am ON am.id = t.agencyModeFk LEFT JOIN stowaway s ON s.id = t.id WHERE r.id = ? ORDER BY t.priority, t.id`, [routeId]); } }, components: { 'report-header': reportHeader.build(), 'report-footer': reportFooter.build() }, props: { routeId: { required: true } } };