From c42c6c19d6aba15f54322ea1f4ba211935fa3439 Mon Sep 17 00:00:00 2001 From: Bernat Exposito Domenech Date: Thu, 2 Jul 2020 07:46:55 +0200 Subject: [PATCH] changes in order index --- .../00-zoneEstimatedDelivery.sql | 47 +++++++++++++ db/changes/12200-Normalidad/01-zoneETD.sql | 16 +++++ db/dump/fixtures.sql | 39 ++++++++--- e2e/paths/07-order/01_summary.spec.js | 1 + modules/order/back/methods/order/filter.js | 10 ++- modules/order/front/index/index.html | 6 +- modules/order/front/index/index.js | 1 - modules/order/front/index/index.spec.js | 67 +++++++++++++++++++ modules/zone/back/model-config.json | 3 + .../back/models/zone-estimated-delivery.json | 44 ++++++++++++ 10 files changed, 219 insertions(+), 15 deletions(-) create mode 100644 db/changes/12200-Normalidad/00-zoneEstimatedDelivery.sql create mode 100644 db/changes/12200-Normalidad/01-zoneETD.sql create mode 100644 modules/order/front/index/index.spec.js create mode 100644 modules/zone/back/models/zone-estimated-delivery.json diff --git a/db/changes/12200-Normalidad/00-zoneEstimatedDelivery.sql b/db/changes/12200-Normalidad/00-zoneEstimatedDelivery.sql new file mode 100644 index 000000000..8cf30796e --- /dev/null +++ b/db/changes/12200-Normalidad/00-zoneEstimatedDelivery.sql @@ -0,0 +1,47 @@ +USE `vn`; +CREATE + OR REPLACE ALGORITHM = UNDEFINED + DEFINER = `root`@`%` + SQL SECURITY DEFINER +VIEW `vn`.`zoneEstimatedDelivery` AS + SELECT + `t`.`zoneFk` AS `zoneFk`, + CAST((CURDATE() + INTERVAL ((HOUR(`zc`.`hour`) * 60) + MINUTE(`zc`.`hour`)) MINUTE) + AS TIME) AS `hourTheoretical`, + CAST(SUM(`sv`.`volume`) AS DECIMAL (5 , 1 )) AS `totalVolume`, + CAST(SUM(IF((`s`.`alertLevel` < 2), + `sv`.`volume`, + 0)) + AS DECIMAL (5 , 1 )) AS `remainingVolume`, + GREATEST(IFNULL(`lhp`.`m3`, 0), + IFNULL(`dl`.`minSpeed`, 0)) AS `speed`, + CAST((`zc`.`hour` + INTERVAL ((-(SUM(IF((`s`.`alertLevel` < 2), + `sv`.`volume`, + 0))) * 60) / GREATEST(IFNULL(`lhp`.`m3`, 0), + IFNULL(`dl`.`minSpeed`, 0))) MINUTE) + AS TIME) AS `hourEffective`, + FLOOR(((-(SUM(IF((`s`.`alertLevel` < 2), + `sv`.`volume`, + 0))) * 60) / GREATEST(IFNULL(`lhp`.`m3`, 0), + IFNULL(`dl`.`minSpeed`, 0)))) AS `minutesLess`, + CAST((`zc`.`hour` + INTERVAL ((-(SUM(IF((`s`.`alertLevel` < 2), + `sv`.`volume`, + 0))) * 60) / GREATEST(IFNULL(`lhp`.`m3`, 0), + IFNULL(`dl`.`minSpeed`, 0))) MINUTE) + AS TIME) AS `etc` + FROM + ((((((((`ticket` `t` + JOIN `ticketStateToday` `tst` ON ((`tst`.`ticket` = `t`.`id`))) + JOIN `state` `s` ON ((`s`.`id` = `tst`.`state`))) + JOIN `saleVolume` `sv` ON ((`sv`.`ticketFk` = `t`.`id`))) + LEFT JOIN `lastHourProduction` `lhp` ON ((`lhp`.`warehouseFk` = `t`.`warehouseFk`))) + JOIN `warehouse` `w` ON ((`w`.`id` = `t`.`warehouseFk`))) + JOIN `warehouseAlias` `wa` ON ((`wa`.`id` = `w`.`aliasFk`))) + LEFT JOIN `zoneClosure` `zc` ON (((`zc`.`zoneFk` = `t`.`zoneFk`) + AND (`zc`.`dated` = CURDATE())))) + LEFT JOIN `cache`.`departure_limit` `dl` ON (((`dl`.`warehouse_id` = `t`.`warehouseFk`) + AND (`dl`.`fecha` = CURDATE())))) + WHERE + ((`wa`.`name` = 'Silla') + AND (CAST(`t`.`shipped` AS DATE) = CURDATE())) + GROUP BY `t`.`zoneFk`; \ No newline at end of file diff --git a/db/changes/12200-Normalidad/01-zoneETD.sql b/db/changes/12200-Normalidad/01-zoneETD.sql new file mode 100644 index 000000000..e4cf48548 --- /dev/null +++ b/db/changes/12200-Normalidad/01-zoneETD.sql @@ -0,0 +1,16 @@ +CREATE + OR REPLACE ALGORITHM = UNDEFINED + DEFINER = `root`@`%` + SQL SECURITY DEFINER +VIEW `vn`.`zone_ETD` AS + SELECT + `zed`.`zoneFk` AS `zoneFk`, + `zed`.`hourTheoretical` AS `HoraTeórica`, + `zed`.`totalVolume` AS `volumenTotal`, + `zed`.`remainingVolume` AS `volumenPendiente`, + `zed`.`speed` AS `velocidad`, + `zed`.`hourEffective` AS `HoraPráctica`, + `zed`.`minutesLess` AS `minutesLess`, + `zed`.`etc` AS `etc` + FROM + `vn`.`zoneEstimatedDelivery` `zed` \ No newline at end of file diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql index e48a20ec6..ed2ee8a8f 100644 --- a/db/dump/fixtures.sql +++ b/db/dump/fixtures.sql @@ -88,13 +88,18 @@ INSERT INTO `vn`.`country`(`id`, `country`, `isUeeMember`, `code`, `currencyFk`, (19,'Francia', 1, 'FR', 1, 27), (30,'Canarias', 1, 'IC', 1, 24); -INSERT INTO `vn`.`warehouse`(`id`, `name`, `isComparative`, `isInventory`, `hasAvailable`, `isManaged`, `hasStowaway`, `hasDms`, `hasComission`) +INSERT INTO `vn`.`warehouseAlias`(`id`, `name`) VALUES - (1, 'Warehouse One', 1, 1, 1, 1, 1, 1, 1), - (2, 'Warehouse Two', 1, 1, 1, 1, 0, 0, 1), - (3, 'Warehouse Three', 1, 1, 1, 1, 0, 0, 0), - (4, 'Warehouse Four', 1, 1, 1, 1, 0, 0, 0), - (5, 'Warehouse Five', 1, 1, 1, 1, 0, 0, 0); + (1, 'Main Warehouse'), + (2, 'Silla'); + +INSERT INTO `vn`.`warehouse`(`id`, `name`, `isComparative`, `isInventory`, `hasAvailable`, `isManaged`, `hasStowaway`, `hasDms`, `hasComission`, `aliasFk`) + VALUES + (1, 'Warehouse One', 1, 1, 1, 1, 1, 1, 1, 2), + (2, 'Warehouse Two', 1, 1, 1, 1, 0, 0, 1, 2), + (3, 'Warehouse Three', 1, 1, 1, 1, 0, 0, 0, 2), + (4, 'Warehouse Four', 1, 1, 1, 1, 0, 0, 0, 2), + (5, 'Warehouse Five', 1, 1, 1, 1, 0, 0, 0, 2); INSERT INTO `vn`.`sector`(`id`, `description`, `warehouseFk`, `isPreviousPreparedByPacking`, `code`, `pickingPlacement`, `path`) VALUES @@ -111,10 +116,6 @@ INSERT INTO `vn`.`shelving` (`code`, `parkingFk`, `isPrinted`, `priority`, `park ('GVC', '1', '0', '1', '0', '106'), ('HEJ', '2', '0', '1', '0', '106'); -INSERT INTO `vn`.`warehouseAlias`(`id`, `name`) - VALUES - (1, 'Main Warehouse'); - INSERT INTO `vn`.`accountingType`(`id`, `description`) VALUES (1, 'Digital money'), @@ -510,7 +511,23 @@ INSERT INTO `vn`.`zoneWarehouse` (`id`, `zoneFk`, `warehouseFk`) (11, 11, 5), (12, 12, 4), (13, 13, 5); - + +INSERT INTO `vn`.`zoneClosure` (`zoneFk`, `dated`, `hour`) + VALUES + (1, CURDATE(), '23:59'), + (2, CURDATE(), '23:59'), + (3, CURDATE(), '23:59'), + (4, CURDATE(), '23:59'), + (5, CURDATE(), '23:59'), + (6, CURDATE(), '23:59'), + (7, CURDATE(), '23:59'), + (8, CURDATE(), '23:59'), + (9, CURDATE(), '23:59'), + (10, CURDATE(), '23:59'), + (11, CURDATE(), '23:59'), + (12, CURDATE(), '23:59'), + (13, CURDATE(), '23:59'); + INSERT INTO `vn`.`zoneConfig` (`scope`) VALUES ('1'); INSERT INTO `vn`.`route`(`id`, `time`, `workerFk`, `created`, `vehicleFk`, `agencyModeFk`, `description`, `m3`, `cost`, `started`, `finished`, `zoneFk`) diff --git a/e2e/paths/07-order/01_summary.spec.js b/e2e/paths/07-order/01_summary.spec.js index f4bc44827..d170f290e 100644 --- a/e2e/paths/07-order/01_summary.spec.js +++ b/e2e/paths/07-order/01_summary.spec.js @@ -8,6 +8,7 @@ describe('Order summary path', () => { browser = await getBrowser(); page = browser.page; await page.loginAndModule('employee', 'order'); + await page.waitFor(2000); await page.accessToSearchResult('16'); }); diff --git a/modules/order/back/methods/order/filter.js b/modules/order/back/methods/order/filter.js index cdd54859f..7f45904eb 100644 --- a/modules/order/back/methods/order/filter.js +++ b/modules/order/back/methods/order/filter.js @@ -157,14 +157,20 @@ module.exports = Self => { c.salesPersonFk, u.nickname workerNickname, u.name name, - co.code companyCode + co.code companyCode, + zed.zoneFk, + zed.hourTheoretical, + zed.hourEffective FROM hedera.order o LEFT JOIN address a ON a.id = o.address_id LEFT JOIN agencyMode am ON am.id = o.agency_id LEFT JOIN client c ON c.id = o.customer_id LEFT JOIN worker wk ON wk.id = c.salesPersonFk LEFT JOIN account.user u ON u.id = wk.userFk - LEFT JOIN company co ON co.id = o.company_id`); + LEFT JOIN company co ON co.id = o.company_id + LEFT JOIN orderTicket ot ON ot.orderFk = o.id + LEFT JOIN ticket t ON t.id = ot.ticketFk + LEFT JOIN zoneEstimatedDelivery zed ON zed.zoneFk = t.zoneFk`); if (args && args.ticketFk) { stmt.merge({ diff --git a/modules/order/front/index/index.html b/modules/order/front/index/index.html index 0d299a5b1..8e64b4b0c 100644 --- a/modules/order/front/index/index.html +++ b/modules/order/front/index/index.html @@ -15,6 +15,8 @@ Confirmed Created Landed + T. Hour + Real hour Total @@ -38,7 +40,7 @@ {{::order.clientName}} - + @@ -50,6 +52,8 @@ {{::order.landed | date:'dd/MM/yyyy'}} + {{::order.hourTheoretical | date: 'HH:mm'}} + {{::ticket.hourEffective | date: 'HH:mm'}} {{::order.total | currency: 'EUR': 2 | dashIfEmpty}} { + let controller; + let $window; + let orders = [{ + id: 1, + clientFk: 1, + isConfirmed: false + }, { + id: 2, + clientFk: 1, + isConfirmed: false + }, { + id: 3, + clientFk: 1, + isConfirmed: true + }]; + + beforeEach(ngModule('order')); + + beforeEach(inject(($componentController, _$window_,) => { + $window = _$window_; + const $element = angular.element(''); + controller = $componentController('vnOrderIndex', {$element}); + })); + + describe('compareDate()', () => { + it('should return warning when the date is the present', () => { + let curDate = new Date(); + let result = controller.compareDate(curDate); + + expect(result).toEqual('warning'); + }); + + it('should return sucess when the date is in the future', () => { + let futureDate = new Date(); + futureDate = futureDate.setDate(futureDate.getDate() + 10); + let result = controller.compareDate(futureDate); + + expect(result).toEqual('success'); + }); + + it('should return undefined when the date is in the past', () => { + let pastDate = new Date(); + pastDate = pastDate.setDate(pastDate.getDate() - 10); + let result = controller.compareDate(pastDate); + + expect(result).toEqual(undefined); + }); + }); + + describe('preview()', () => { + it('should show the dialog summary', () => { + controller.$.summary = {show: () => {}}; + jest.spyOn(controller.$.summary, 'show'); + + let event = new MouseEvent('click', { + view: $window, + bubbles: true, + cancelable: true + }); + controller.preview(event, orders[0]); + + expect(controller.$.summary.show).toHaveBeenCalledWith(); + }); + }); +}); diff --git a/modules/zone/back/model-config.json b/modules/zone/back/model-config.json index 7638e3f6c..f353be088 100644 --- a/modules/zone/back/model-config.json +++ b/modules/zone/back/model-config.json @@ -28,5 +28,8 @@ }, "ZoneWarehouse": { "dataSource": "vn" + }, + "ZoneEstimatedDelivery": { + "dataSource": "vn" } } diff --git a/modules/zone/back/models/zone-estimated-delivery.json b/modules/zone/back/models/zone-estimated-delivery.json new file mode 100644 index 000000000..d65cee3b5 --- /dev/null +++ b/modules/zone/back/models/zone-estimated-delivery.json @@ -0,0 +1,44 @@ +{ + "name": "ZoneEstimatedDelivery", + "base": "VnModel", + "options": { + "mysql": { + "table": "zoneEstimatedDelivery" + } + }, + "properties": { + "zoneFk": { + "id": true, + "type": "Number" + }, + "hourTheoretical": { + "type": "date" + }, + "totalVolume": { + "type": "Number" + }, + "remainingVolume": { + "type": "Number" + }, + "speed": { + "type": "Number" + }, + "hourEffective": { + "type": "Date" + }, + "minutesLess": { + "type": "Date" + }, + "etc": { + "type": "Date" + } + + }, + "relations": { + "zone": { + "type": "belongsTo", + "model": "Zone", + "foreignKey": "zoneFk" + } + } +} \ No newline at end of file