diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js
index fe93e8b411..c1e13d8891 100644
--- a/e2e/helpers/selectors.js
+++ b/e2e/helpers/selectors.js
@@ -909,5 +909,12 @@ export default {
newValueInput: 'vn-textfield[ng-model="$ctrl.editedColumn.newValue"]',
latestBuysSectionButton: 'a[ui-sref="entry.latestBuys"]',
acceptEditBuysDialog: 'button[response="accept"]'
+ },
+ entryIndex: {
+ createEntryButton: 'vn-entry-index vn-button[icon="add"]',
+ newEntrySupplier: 'vn-entry-create vn-autocomplete[ng-model="$ctrl.entry.supplierFk"]',
+ newEntryTravel: 'vn-entry-create vn-autocomplete[ng-model="$ctrl.entry.travelFk"]',
+ newEntryCompany: 'vn-entry-create vn-autocomplete[ng-model="$ctrl.entry.companyFk"]',
+ saveNewEntry: 'vn-entry-create button[type="submit"]'
}
};
diff --git a/e2e/paths/12-entry/04_create.spec.js b/e2e/paths/12-entry/04_create.spec.js
new file mode 100644
index 0000000000..90dac618ae
--- /dev/null
+++ b/e2e/paths/12-entry/04_create.spec.js
@@ -0,0 +1,33 @@
+import selectors from '../../helpers/selectors.js';
+import getBrowser from '../../helpers/puppeteer';
+
+describe('Entry create path', () => {
+ let browser;
+ let page;
+
+ beforeAll(async() => {
+ browser = await getBrowser();
+ page = browser.page;
+ await page.loginAndModule('buyer', 'entry');
+ });
+
+ afterAll(async() => {
+ await browser.close();
+ });
+
+ it('should click the create entry button to open the form', async() => {
+ await page.waitToClick(selectors.entryIndex.createEntryButton);
+ await page.waitForState('entry.create');
+ });
+
+ it('should fill the form to create a valid entry', async() => {
+ await page.autocompleteSearch(selectors.entryIndex.newEntrySupplier, '2');
+ await page.autocompleteSearch(selectors.entryIndex.newEntryTravel, 'Warehouse Three');
+ await page.autocompleteSearch(selectors.entryIndex.newEntryCompany, 'ORN');
+ await page.waitToClick(selectors.entryIndex.saveNewEntry);
+ });
+
+ it('should be redirected to entry basic data', async() => {
+ await page.waitForState('entry.card.basicData');
+ });
+});
diff --git a/modules/entry/back/models/entry.json b/modules/entry/back/models/entry.json
index d3f149680f..a67641b0c5 100644
--- a/modules/entry/back/models/entry.json
+++ b/modules/entry/back/models/entry.json
@@ -1,6 +1,6 @@
{
"name": "Entry",
- "base": "VnModel",
+ "base": "Loggable",
"log": {
"model":"EntryLog"
},
@@ -62,6 +62,18 @@
},
"loadPriority": {
"type": "number"
+ },
+ "supplierFk": {
+ "type": "number",
+ "required": true
+ },
+ "travelFk": {
+ "type": "number",
+ "required": true
+ },
+ "companyFk": {
+ "type": "number",
+ "required": true
}
},
"relations": {
diff --git a/modules/entry/front/basic-data/index.html b/modules/entry/front/basic-data/index.html
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/modules/entry/front/basic-data/index.js b/modules/entry/front/basic-data/index.js
new file mode 100644
index 0000000000..141a365fa3
--- /dev/null
+++ b/modules/entry/front/basic-data/index.js
@@ -0,0 +1,10 @@
+import ngModule from '../module';
+import Section from 'salix/components/section';
+
+ngModule.vnComponent('vnEntryBasicData', {
+ template: require('./index.html'),
+ controller: Section,
+ bindings: {
+ entry: '<'
+ }
+});
diff --git a/modules/entry/front/create/index.html b/modules/entry/front/create/index.html
new file mode 100644
index 0000000000..7b5dfc928d
--- /dev/null
+++ b/modules/entry/front/create/index.html
@@ -0,0 +1,61 @@
+
+
+
+
diff --git a/modules/entry/front/create/index.js b/modules/entry/front/create/index.js
new file mode 100644
index 0000000000..5c61730f97
--- /dev/null
+++ b/modules/entry/front/create/index.js
@@ -0,0 +1,43 @@
+import ngModule from '../module';
+import Section from 'salix/components/section';
+import './style.scss';
+
+export default class Controller extends Section {
+ constructor($element, $) {
+ super($element, $);
+
+ this.entry = {
+ companyFk: this.vnConfig.companyFk
+ };
+
+ if (this.$params && this.$params.supplierFk)
+ this.entry.supplierFk = parseInt(this.$params.supplierFk);
+ if (this.$params && this.$params.travelFk)
+ this.entry.travelFk = parseInt(this.$params.travelFk);
+ if (this.$params && this.$params.companyFk)
+ this.entry.companyFk = parseInt(this.$params.companyFk);
+ }
+
+ onSubmit() {
+ this.$.watcher.submit().then(
+ res => this.$state.go('entry.card.basicData', {id: res.data.id})
+ );
+ }
+
+ searchFunction($search) {
+ return {or: [
+ {'agencyModeName': {like: `%${$search}%`}},
+ {'warehouseInName': {like: `%${$search}%`}},
+ {'warehouseOutName': {like: `%${$search}%`}},
+ {'shipped': new Date($search)},
+ {'landed': new Date($search)}
+ ]};
+ }
+}
+
+Controller.$inject = ['$element', '$scope'];
+
+ngModule.vnComponent('vnEntryCreate', {
+ template: require('./index.html'),
+ controller: Controller
+});
diff --git a/modules/entry/front/create/locale/es.yml b/modules/entry/front/create/locale/es.yml
new file mode 100644
index 0000000000..aa269ed151
--- /dev/null
+++ b/modules/entry/front/create/locale/es.yml
@@ -0,0 +1,2 @@
+New entry: Nueva entrada
+Required fields (*): Campos requeridos (*)
\ No newline at end of file
diff --git a/modules/entry/front/create/style.scss b/modules/entry/front/create/style.scss
new file mode 100644
index 0000000000..2dc52b1ff3
--- /dev/null
+++ b/modules/entry/front/create/style.scss
@@ -0,0 +1,10 @@
+vn-entry-create {
+ vn-card {
+ position: relative
+ }
+ vn-icon[icon="info"] {
+ position: absolute;
+ top: 16px;
+ right: 16px
+ }
+}
\ No newline at end of file
diff --git a/modules/entry/front/index.js b/modules/entry/front/index.js
index fc24e3efb7..484d8f718f 100644
--- a/modules/entry/front/index.js
+++ b/modules/entry/front/index.js
@@ -2,6 +2,7 @@ export * from './module';
import './main';
import './index/';
+import './create';
import './latest-buys';
import './search-panel';
import './latest-buys-search-panel';
diff --git a/modules/entry/front/index/index.html b/modules/entry/front/index/index.html
index e3d174cbfe..8a28888b09 100644
--- a/modules/entry/front/index/index.html
+++ b/modules/entry/front/index/index.html
@@ -69,4 +69,16 @@
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/modules/entry/front/routes.json b/modules/entry/front/routes.json
index cdaaebc7db..a430a95fa7 100644
--- a/modules/entry/front/routes.json
+++ b/modules/entry/front/routes.json
@@ -10,6 +10,7 @@
{"state": "entry.latestBuys", "icon": "icon-latestBuys"}
],
"card": [
+ {"state": "entry.card.basicData", "icon": "settings"},
{"state": "entry.card.buy", "icon": "icon-lines"},
{"state": "entry.card.log", "icon": "history"}
]
@@ -33,6 +34,12 @@
"component": "vn-entry-latest-buys",
"description": "Latest buys",
"acl": ["buyer"]
+ }, {
+ "url": "/create?supplierFk&travelFk&companyFk",
+ "state": "entry.create",
+ "component": "vn-entry-create",
+ "description": "New entry",
+ "acl": ["buyer"]
}, {
"url": "/:id",
"state": "entry.card",
@@ -46,6 +53,14 @@
"params": {
"entry": "$ctrl.entry"
}
+ }, {
+ "url": "/basic-data",
+ "state": "entry.card.basicData",
+ "component": "vn-entry-basic-data",
+ "description": "Basic data",
+ "params": {
+ "entry": "$ctrl.entry"
+ }
}, {
"url" : "/log",
"state": "entry.card.log",
diff --git a/modules/item/back/models/supplier.json b/modules/item/back/models/supplier.json
index bc13e79b95..41fc9c45cc 100644
--- a/modules/item/back/models/supplier.json
+++ b/modules/item/back/models/supplier.json
@@ -33,13 +33,13 @@
"retAccount": {
"type": "Number"
},
- "commision": {
+ "commission": {
"type": "Boolean"
},
"created": {
"type": "Date"
},
- "poscodeFk": {
+ "postcodeFk": {
"type": "Number"
},
"isActive": {
diff --git a/modules/route/front/index/index.html b/modules/route/front/index/index.html
index 7258018f10..76938d9cf9 100644
--- a/modules/route/front/index/index.html
+++ b/modules/route/front/index/index.html
@@ -79,10 +79,9 @@
tooltip-position="left">
-
+
diff --git a/modules/ticket/front/index/index.html b/modules/ticket/front/index/index.html
index b0aff5b911..2c598ca031 100644
--- a/modules/ticket/front/index/index.html
+++ b/modules/ticket/front/index/index.html
@@ -143,10 +143,9 @@
vn-tooltip="Payment on account..."
tooltip-position="left">
-
+
diff --git a/modules/travel/back/methods/travel/filter.js b/modules/travel/back/methods/travel/filter.js
index 0cfafd7bac..024448bfe4 100644
--- a/modules/travel/back/methods/travel/filter.js
+++ b/modules/travel/back/methods/travel/filter.js
@@ -112,7 +112,8 @@ module.exports = Self => {
let stmts = [];
let stmt;
stmt = new ParameterizedSQL(
- `SELECT
+ `SELECT * FROM
+ (SELECT
t.id,
t.shipped,
t.landed,
@@ -132,7 +133,7 @@ module.exports = Self => {
FROM vn.travel t
JOIN vn.agencyMode am ON am.id = t.agencyFk
JOIN vn.warehouse win ON win.id = t.warehouseInFk
- JOIN vn.warehouse wout ON wout.id = t.warehouseOutFk`
+ JOIN vn.warehouse wout ON wout.id = t.warehouseOutFk) AS t`
);
stmt.merge(conn.makeSuffix(filter));