diff --git a/db/dump/fixtures.sql b/db/dump/fixtures.sql
index d56176713..f7d5d94f1 100644
--- a/db/dump/fixtures.sql
+++ b/db/dump/fixtures.sql
@@ -1129,17 +1129,19 @@ INSERT INTO `vn`.`travel`(`id`,`shipped`, `landed`, `warehouseInFk`, `warehouseO
(4, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 2, 1, 50.00, 500, 'fourth travel', 0),
(5, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3, 2, 1, 50.00, 500, 'fifth travel', 1),
(6, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 4, 2, 1, 50.00, 500, 'sixth travel', 1),
- (7, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 2, 1, 50.00, 500, 'seventh travel', 1);
+ (7, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 2, 1, 50.00, 500, 'seventh travel', 1),
+ (8, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 2, 1, 50.00, 500, 'eight travel', 1);
-INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `companyFk`, `ref`, `notes`, `evaNotes`)
+INSERT INTO `vn`.`entry`(`id`, `supplierFk`, `created`, `travelFk`, `companyFk`, `ref`,`isInventory`, `isRaid`, `notes`, `evaNotes`)
VALUES
- (1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 442, 'Movement 1', 'this is the note one', 'observation one'),
- (2, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 442, 'Movement 2', 'this is the note two', 'observation two'),
- (3, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3, 442, 'Movement 3', 'this is the note three', 'observation three'),
- (4, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 69, 'Movement 4', 'this is the note four', 'observation four'),
- (5, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 442, 'Movement 5', 'this is the note five', 'observation five'),
- (6, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 6, 442, 'Movement 6', 'this is the note six', 'observation six'),
- (7, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 7, 442, 'Movement 7', 'this is the note seven', 'observation seven');
+ (1, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 1, 442, 'Movement 1', 0, 0, '', ''),
+ (2, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 442, 'Movement 2', 0, 0, 'this is the note two', 'observation two'),
+ (3, 1, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 3, 442, 'Movement 3', 0, 0, 'this is the note three', 'observation three'),
+ (4, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 2, 69, 'Movement 4', 0, 0, 'this is the note four', 'observation four'),
+ (5, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 5, 442, 'Movement 5', 0, 0, 'this is the note five', 'observation five'),
+ (6, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 6, 442, 'Movement 6', 0, 0, 'this is the note six', 'observation six'),
+ (7, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 7, 442, 'Movement 7', 0, 0, 'this is the note seven', 'observation seven'),
+ (8, 2, DATE_ADD(CURDATE(), INTERVAL -1 MONTH), 7, 442, 'Movement 8', 1, 1, '', '');
INSERT INTO `vn`.`claimRatio`(`clientFk`, `yearSale`, `claimAmount`, `claimingRate`, `priceIncreasing`, `packingRate`)
VALUES
diff --git a/modules/entry/back/methods/entry/filter.js b/modules/entry/back/methods/entry/filter.js
index 8cbe5e15e..93e9558a9 100644
--- a/modules/entry/back/methods/entry/filter.js
+++ b/modules/entry/back/methods/entry/filter.js
@@ -127,6 +127,7 @@ module.exports = Self => {
e.companyFk,
e.gestDocFk,
e.invoiceInFk,
+ t.landed,
s.name AS supplierName,
co.code AS companyCode,
cu.code AS currencyCode
diff --git a/modules/entry/back/methods/entry/specs/filter.spec.js b/modules/entry/back/methods/entry/specs/filter.spec.js
index 9b935d831..25d2da0b4 100644
--- a/modules/entry/back/methods/entry/specs/filter.spec.js
+++ b/modules/entry/back/methods/entry/specs/filter.spec.js
@@ -23,7 +23,7 @@ describe('Entry filter()', () => {
let result = await app.models.Entry.filter(ctx);
- expect(result.length).toEqual(7);
+ expect(result.length).toEqual(8);
});
it('should return the entry matching the supplier', async() => {
@@ -35,7 +35,7 @@ describe('Entry filter()', () => {
let result = await app.models.Entry.filter(ctx);
- expect(result.length).toEqual(5);
+ expect(result.length).toEqual(6);
});
it('should return the entry matching the company', async() => {
@@ -47,7 +47,7 @@ describe('Entry filter()', () => {
let result = await app.models.Entry.filter(ctx);
- expect(result.length).toEqual(6);
+ expect(result.length).toEqual(7);
});
it('should return the entries matching isBooked', async() => {
diff --git a/modules/entry/front/index/index.html b/modules/entry/front/index/index.html
index 8ddd4d3a3..f0f540489 100644
--- a/modules/entry/front/index/index.html
+++ b/modules/entry/front/index/index.html
@@ -16,45 +16,68 @@
+
Id
- Created
- Travel
- Notes
+ Landed
Reference
- Booked
- Is inventory
- Confirmed
- Ordered
- Is raid
- Commission
Supplier
Currency
Company
+ Booked
+ Confirmed
+ Ordered
+ Notes
+
+
+
+
+
+
{{::entry.id}}
- {{::entry.created | date:'dd/MM/yyyy'}}
- {{::entry.travelFk}}
- {{::entry.notes}}
+
+
+ {{::entry.landed | date:'dd/MM/yyyy'}}
+
+
{{::entry.ref}}
-
-
-
-
-
- {{::entry.commission}}
{{::entry.supplierName}}
{{::entry.currencyCode}}
{{::entry.companyCode}}
+
+
+
+
+
+
+
+
+
diff --git a/modules/entry/front/index/index.js b/modules/entry/front/index/index.js
index ec78c06df..53d2f45e0 100644
--- a/modules/entry/front/index/index.js
+++ b/modules/entry/front/index/index.js
@@ -1,5 +1,5 @@
import ngModule from '../module';
-
+import './style.scss';
export default class Controller {
constructor($scope) {
this.$ = $scope;
@@ -11,6 +11,16 @@ export default class Controller {
else
this.$.model.clear();
}
+
+ showTravelDescriptor(event, travelFk) {
+ if (event.defaultPrevented) return;
+ event.preventDefault();
+ event.stopPropagation();
+
+ this.selectedTravel = travelFk;
+ this.$.travelDescriptor.parent = event.target;
+ this.$.travelDescriptor.show();
+ }
}
Controller.$inject = ['$scope'];
diff --git a/modules/entry/front/index/locale/es.yml b/modules/entry/front/index/locale/es.yml
new file mode 100644
index 000000000..8ef9b2c7a
--- /dev/null
+++ b/modules/entry/front/index/locale/es.yml
@@ -0,0 +1,15 @@
+Inventory entry: Es inventario
+Virtual entry: Es una redada
+Supplier: Proveedor
+Currency: Moneda
+Company: Empresa
+Confirmed: Confirmada
+Ordered: Pedida
+Is raid: Redada
+Commission: Comisión
+Landed: F. entrega
+Reference: Referencia
+Created: Creado
+Booked: Facturado
+Is inventory: Inventario
+Notes: Notas
\ No newline at end of file
diff --git a/modules/entry/front/index/style.scss b/modules/entry/front/index/style.scss
new file mode 100644
index 000000000..ab759d2cc
--- /dev/null
+++ b/modules/entry/front/index/style.scss
@@ -0,0 +1,5 @@
+@import "variables";
+
+ vn-icon[icon=insert_drive_file]{
+ color: $color-font-secondary;
+ }
diff --git a/modules/entry/front/locale/es.yml b/modules/entry/front/locale/es.yml
index 214be93d4..3de6c59a8 100644
--- a/modules/entry/front/locale/es.yml
+++ b/modules/entry/front/locale/es.yml
@@ -1,15 +1,3 @@
#Ordenar alfabeticamente
-Reference: Referencia
-Created: Creado
-Booked: Facturado
-Is inventory: Inventario
-Notes: Notas
-Travel: Envío
-Supplier: Proveedor
-Currency: Moneda
-Company: Empresa
-Confirmed: Confirmada
-Ordered: Pedida
-Is raid: Redada
-Commission: Comisión
+
# Sections
diff --git a/modules/entry/front/routes.json b/modules/entry/front/routes.json
index f23ff02bf..bd1ace3f2 100644
--- a/modules/entry/front/routes.json
+++ b/modules/entry/front/routes.json
@@ -2,6 +2,7 @@
"module": "entry",
"name": "Entries",
"icon": "icon-entry",
+ "dependencies": ["travel"],
"validations": true,
"menus": {
"main": [
diff --git a/modules/item/back/methods/item/getLastEntries.js b/modules/item/back/methods/item/getLastEntries.js
index bab808cef..a438afcb6 100644
--- a/modules/item/back/methods/item/getLastEntries.js
+++ b/modules/item/back/methods/item/getLastEntries.js
@@ -22,6 +22,7 @@ module.exports = Self => {
let where = filter.where;
let query = `CALL vn.itemLastEntries(?, ?)`;
let [lastEntries] = await Self.rawSql(query, [where.itemFk, where.date]);
+
return lastEntries;
};
};
diff --git a/modules/travel/back/methods/travel/specs/filter.spec.js b/modules/travel/back/methods/travel/specs/filter.spec.js
index f2fe44989..03849f2b0 100644
--- a/modules/travel/back/methods/travel/specs/filter.spec.js
+++ b/modules/travel/back/methods/travel/specs/filter.spec.js
@@ -23,7 +23,7 @@ describe('Travel filter()', () => {
let result = await app.models.Travel.filter(ctx);
- expect(result.length).toEqual(7);
+ expect(result.length).toEqual(8);
});
it('should return the travel matching "total entries"', async() => {
diff --git a/modules/travel/front/descriptor-popover/index.html b/modules/travel/front/descriptor-popover/index.html
new file mode 100644
index 000000000..fc0fb0301
--- /dev/null
+++ b/modules/travel/front/descriptor-popover/index.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/travel/front/descriptor-popover/index.js b/modules/travel/front/descriptor-popover/index.js
new file mode 100644
index 000000000..cb13d7f06
--- /dev/null
+++ b/modules/travel/front/descriptor-popover/index.js
@@ -0,0 +1,88 @@
+import ngModule from '../module';
+import Component from 'core/lib/component';
+
+class Controller extends Component {
+ constructor($element, $scope, $http, $timeout, $q) {
+ super($element, $scope);
+ this.$timeout = $timeout;
+ this.$http = $http;
+ this.$q = $q;
+ this.travel = null;
+ this._quicklinks = {};
+ }
+
+ set travelId(travelId) {
+ if (travelId == this._travelId) return;
+
+ this._travelId = travelId;
+ this.travel = null;
+ this.loadData();
+ }
+
+ get travelId() {
+ return this._travelId;
+ }
+
+ get quicklinks() {
+ return this._quicklinks;
+ }
+
+ set quicklinks(value = {}) {
+ Object.keys(value).forEach(key => {
+ this._quicklinks[key] = value[key];
+ });
+ }
+
+ show() {
+ this.$.popover.parent = this.parent;
+ this.$.popover.show();
+ }
+
+ loadData() {
+ let query = `Travels/findOne`;
+ let filter = {
+ fields: [
+ 'id',
+ 'ref',
+ 'shipped',
+ 'landed',
+ 'totalEntries',
+ 'warehouseInFk',
+ 'warehouseOutFk'
+ ],
+ where: {
+ id: this._travelId
+ },
+ include: [
+ {
+ relation: 'warehouseIn',
+ scope: {
+ fields: ['name']
+ }
+ }, {
+ relation: 'warehouseOut',
+ scope: {
+ fields: ['name']
+ }
+ }
+ ]
+ };
+
+ this.$http.get(query, {params: {filter}}).then(res => {
+ this.travel = res.data;
+ this.$.$applyAsync(() => {
+ this.$.popover.relocate();
+ });
+ });
+ }
+}
+Controller.$inject = ['$element', '$scope', '$http', '$timeout', '$q'];
+
+ngModule.component('vnTravelDescriptorPopover', {
+ template: require('./index.html'),
+ controller: Controller,
+ bindings: {
+ travelId: '<',
+ quicklinks: '<'
+ }
+});
diff --git a/modules/travel/front/descriptor-popover/index.spec.js b/modules/travel/front/descriptor-popover/index.spec.js
new file mode 100644
index 000000000..12ad364bf
--- /dev/null
+++ b/modules/travel/front/descriptor-popover/index.spec.js
@@ -0,0 +1,100 @@
+import './index.js';
+
+describe('travel Component vnTravelDescriptorPopover', () => {
+ let $httpBackend;
+ let $httpParamSerializer;
+ let $scope;
+ let controller;
+ let $element;
+
+ beforeEach(ngModule('travel'));
+
+ beforeEach(angular.mock.inject(($componentController, $rootScope, _$httpBackend_, _$httpParamSerializer_) => {
+ $httpBackend = _$httpBackend_;
+ $httpParamSerializer = _$httpParamSerializer_;
+ $element = angular.element(``);
+ $scope = $rootScope.$new();
+ $scope.popover = {relocate: () => {}, show: () => {}};
+ controller = $componentController('vnTravelDescriptorPopover', {$scope, $element});
+ }));
+
+ describe('travelId()', () => {
+ it(`should not apply any changes if the received id is the same stored in _travelId`, () => {
+ controller.travel = 'I exist!';
+ controller._travelId = 1;
+ spyOn(controller, 'loadData');
+ controller.travelId = 1;
+
+ expect(controller.travel).toEqual('I exist!');
+ expect(controller._travelId).toEqual(1);
+ expect(controller.loadData).not.toHaveBeenCalled();
+ });
+
+ it(`should set the received id into _travelId, set the travel to null and then call loadData()`, () => {
+ controller.travel = `Please don't`;
+ controller._travelId = 1;
+ spyOn(controller, 'loadData');
+ controller.travelId = 999;
+
+ expect(controller.travel).toBeNull();
+ expect(controller._travelId).toEqual(999);
+ expect(controller.loadData).toHaveBeenCalledWith();
+ });
+ });
+
+ describe('show()', () => {
+ it(`should call the show()`, () => {
+ spyOn(controller.$.popover, 'show');
+ controller.show();
+
+ expect(controller.$.popover.show).toHaveBeenCalledWith();
+ });
+ });
+
+ describe('loadData()', () => {
+ it(`should perform a get query to store the worker data into the controller`, () => {
+ controller.travelId = 1;
+ controller.canceler = null;
+ let response = {};
+
+ let config = {
+ filter: {
+ fields: [
+ 'id',
+ 'ref',
+ 'shipped',
+ 'landed',
+ 'totalEntries',
+ 'warehouseInFk',
+ 'warehouseOutFk'
+ ],
+ where: {
+ id: controller.travelId
+ },
+ include: [
+ {
+ relation: 'warehouseIn',
+ scope: {
+ fields: ['name']
+ }
+ }, {
+ relation: 'warehouseOut',
+ scope: {
+ fields: ['name']
+ }
+ }
+ ]
+ }
+ };
+
+ let json = $httpParamSerializer(config);
+
+ $httpBackend.whenGET(`Travels/findOne?${json}`).respond(response);
+ $httpBackend.expectGET(`Travels/findOne?${json}`);
+ controller.loadData();
+ $httpBackend.flush();
+
+ expect(controller.travel).toEqual(response);
+ });
+ });
+});
diff --git a/modules/travel/front/index.js b/modules/travel/front/index.js
index 1f5346e98..b72f9fd51 100644
--- a/modules/travel/front/index.js
+++ b/modules/travel/front/index.js
@@ -11,4 +11,4 @@ import './log';
import './create';
import './thermograph/index/';
import './thermograph/create/';
-
+import './descriptor-popover';
diff --git a/modules/worker/front/descriptor-popover/index.js b/modules/worker/front/descriptor-popover/index.js
index b648e8bd2..55843a67d 100644
--- a/modules/worker/front/descriptor-popover/index.js
+++ b/modules/worker/front/descriptor-popover/index.js
@@ -1,6 +1,5 @@
import ngModule from '../module';
import Component from 'core/lib/component';
-import './style.scss';
class Controller extends Component {
constructor($element, $scope, $http, $timeout, $q) {
diff --git a/modules/worker/front/descriptor-popover/style.scss b/modules/worker/front/descriptor-popover/style.scss
deleted file mode 100644
index 58e65d320..000000000
--- a/modules/worker/front/descriptor-popover/style.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-vn-ticket-descriptor-popover {
- vn-ticket-descriptor {
- display: block;
- width: 16em;
- max-height: 28em;
-
- & > vn-card {
- margin: 0!important;
- }
- }
-}
\ No newline at end of file