diff --git a/back/model-config.json b/back/model-config.json
index 7a7b7af56..0a0772b04 100644
--- a/back/model-config.json
+++ b/back/model-config.json
@@ -38,7 +38,7 @@
"Vehicle": {
"dataSource": "vn"
},
- "UserTableConfiguration": {
+ "UserConfigView": {
"dataSource": "vn"
}
}
diff --git a/back/models/user-table-configuration.json b/back/models/user-config-view.json
similarity index 71%
rename from back/models/user-table-configuration.json
rename to back/models/user-config-view.json
index 084d64e27..1cb933079 100644
--- a/back/models/user-table-configuration.json
+++ b/back/models/user-config-view.json
@@ -1,9 +1,9 @@
{
- "name": "UserTableConfiguration",
+ "name": "UserConfigView",
"base": "VnModel",
"options": {
"mysql": {
- "table": "salix.userTableConfiguration"
+ "table": "salix.userConfigView"
}
},
"properties": {
@@ -21,10 +21,10 @@
}
},
"relations": {
- "worker": {
+ "user": {
"type": "belongsTo",
- "model": "Worker",
- "foreignKey": "workerFk"
+ "model": "Account",
+ "foreignKey": "userFk"
}
}
}
diff --git a/e2e/helpers/extensions.js b/e2e/helpers/extensions.js
index a41b5855c..b635de9de 100644
--- a/e2e/helpers/extensions.js
+++ b/e2e/helpers/extensions.js
@@ -190,6 +190,19 @@ let actions = {
}, done, selector);
},
+ clickIfVisible: function(selector, done) {
+ this.wait(selector)
+ .isVisible(selector)
+ .then(visible => {
+ if (visible)
+ return this.click(selector);
+
+ throw new Error(`invisible selector: ${selector}`);
+ })
+ .then(done)
+ .catch(done);
+ },
+
countElement: function(selector, done) {
this.evaluate_now(selector => {
return document.querySelectorAll(selector).length;
diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js
index 42d05aafa..bc0135e40 100644
--- a/e2e/helpers/selectors.js
+++ b/e2e/helpers/selectors.js
@@ -164,7 +164,7 @@ export default {
newPaymentButton: `${components.vnFloatButton}`,
newPaymentBankInut: `vn-client-risk-create vn-textfield[field="$ctrl.receipt.bankFk"] input`,
newPaymentAmountInput: `vn-client-risk-create vn-textfield[field="$ctrl.receipt.amountPaid"] input`,
- saveButton: `${components.vnSubmit}`,
+ saveButton: `vn-client-risk-create vn-button[label="Save"]`,
firstRiskLineBalance: 'vn-client-risk-index vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(8)'
},
@@ -191,7 +191,8 @@ export default {
moreMenu: `vn-item-descriptor vn-icon-menu > div > vn-icon`,
moreMenuRegularizeButton: `vn-item-descriptor vn-icon-menu > div > vn-drop-down > vn-popover ul > li:nth-child(1)`,
regularizeQuantityInput: `vn-item-descriptor > vn-dialog > div > form > div.body > tpl-body > div > vn-textfield > div > div > div.infix > input`,
- regularizeWarehouseAutocomplete: 'vn-item-descriptor > vn-dialog vn-autocomplete[field="$ctrl.warehouseFk"]',
+ regularizeWarehouseAutocomplete: 'vn-item-descriptor vn-dialog vn-autocomplete[field="$ctrl.warehouseFk"]',
+ editButton: 'vn-item-card vn-item-descriptor vn-float-button[icon="edit"]',
regularizeSaveButton: `vn-item-descriptor > vn-dialog > div > form > div.buttons > tpl-buttons > button`
},
itemBasicData: {
@@ -335,7 +336,7 @@ export default {
descriptorItemDiaryButton: `vn-item-descriptor .quicklinks.ng-scope > vn-horizontal > a > vn-icon > i`,
newItemButton: 'vn-float-button[icon="add"]',
firstSaleText: `vn-table div > vn-tbody > vn-tr:nth-child(1)`,
- firstSaleThumbnailImage: 'vn-ticket-sale:nth-child(1) vn-td:nth-child(3) > img',
+ firstSaleThumbnailImage: 'vn-ticket-sale:nth-child(1) vn-tr:nth-child(1) vn-td:nth-child(3) > img',
firstSaleZoomedImage: 'body > div > div > img',
firstSaleQuantity: `vn-textfield[model="sale.quantity"]:nth-child(1) input`,
firstSaleQuantityClearInput: `vn-textfield[model="sale.quantity"] div.suffix > i`,
diff --git a/e2e/paths/item-module/01_item_summary.spec.js b/e2e/paths/item-module/01_item_summary.spec.js
index ee6fd8785..1364aa00a 100644
--- a/e2e/paths/item-module/01_item_summary.spec.js
+++ b/e2e/paths/item-module/01_item_summary.spec.js
@@ -163,6 +163,13 @@ describe('Item summary path', () => {
expect(url.hash).toContain('summary');
});
+ it(`should check the descritor edit button is not visible for employee`, async() => {
+ const visibleButton = await nightmare
+ .isVisible(selectors.itemDescriptor.editButton);
+
+ expect(visibleButton).toBeFalsy();
+ });
+
it(`should check the item summary shows fields from basic data section`, async() => {
const result = await nightmare
.waitForTextInElement(selectors.itemSummary.basicData, 'Object2 Gem2 3')
diff --git a/e2e/paths/item-module/02_edit_item_basic_data.spec.js b/e2e/paths/item-module/02_edit_item_basic_data.spec.js
index 56bdf6647..3a06a2a77 100644
--- a/e2e/paths/item-module/02_edit_item_basic_data.spec.js
+++ b/e2e/paths/item-module/02_edit_item_basic_data.spec.js
@@ -11,6 +11,13 @@ describe('Item Edit basic data path', () => {
.accessToSection('item.card.data');
});
+ it(`should check the descritor edit button is visible for buyer`, async() => {
+ const visibleButton = await nightmare
+ .isVisible(selectors.itemDescriptor.editButton);
+
+ expect(visibleButton).toBeTruthy();
+ });
+
it(`should edit the item basic data`, async() => {
const result = await nightmare
.clearInput(selectors.itemBasicData.nameInput)
diff --git a/e2e/paths/ticket-module/05_create_new_tracking_state.spec.js b/e2e/paths/ticket-module/05_create_new_tracking_state.spec.js
index af2fd8a31..787809a86 100644
--- a/e2e/paths/ticket-module/05_create_new_tracking_state.spec.js
+++ b/e2e/paths/ticket-module/05_create_new_tracking_state.spec.js
@@ -14,10 +14,11 @@ describe('Ticket Create new tracking state path', () => {
it('should access to the create state view by clicking the create floating button', async() => {
let url = await nightmare
- .waitToClick(selectors.ticketTracking.createStateButton)
+ .clickIfVisible(selectors.ticketTracking.createStateButton)
.wait(selectors.createStateView.stateAutocomplete)
.parsedUrl();
+
expect(url.hash).toContain('tracking/edit');
});
diff --git a/e2e/paths/ticket-module/07_edit_sale.spec.js b/e2e/paths/ticket-module/07_edit_sale.spec.js
index 1e1302ab8..bc7889be0 100644
--- a/e2e/paths/ticket-module/07_edit_sale.spec.js
+++ b/e2e/paths/ticket-module/07_edit_sale.spec.js
@@ -62,7 +62,7 @@ describe('Ticket Edit sale path', () => {
it(`should click on the thumbnail image of the 1st sale and see the zoomed image`, async() => {
const result = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleThumbnailImage)
+ .clickIfVisible(selectors.ticketSales.firstSaleThumbnailImage)
.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(1);
@@ -70,7 +70,8 @@ describe('Ticket Edit sale path', () => {
it(`should click on the zoomed image to close it`, async() => {
const result = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleZoomedImage)
+ .wait(1000)
+ .clickIfVisible(selectors.ticketSales.firstSaleZoomedImage)
.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(0);
@@ -94,15 +95,15 @@ describe('Ticket Edit sale path', () => {
it(`should click on the descriptor image of the 1st sale and see the zoomed image`, async() => {
const result = await nightmare
- .waitToClick('vn-item-descriptor img')
+ .clickIfVisible('vn-item-descriptor img')
.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(1);
});
- it(`should click on the zoomed image to close it`, async() => {
+ it(`should now click on the zoomed image to close it`, async() => {
const result = await nightmare
- .waitToClick(selectors.ticketSales.firstSaleZoomedImage)
+ .clickIfVisible(selectors.ticketSales.firstSaleZoomedImage)
.countElement(selectors.ticketSales.firstSaleZoomedImage);
expect(result).toEqual(0);
diff --git a/e2e/paths/ticket-module/12_delete_ticket_from_descriptor.spec.js b/e2e/paths/ticket-module/12_delete_ticket_from_descriptor.spec.js
index 5dc2903e9..865c36c5f 100644
--- a/e2e/paths/ticket-module/12_delete_ticket_from_descriptor.spec.js
+++ b/e2e/paths/ticket-module/12_delete_ticket_from_descriptor.spec.js
@@ -1,7 +1,8 @@
import selectors from '../../helpers/selectors.js';
import createNightmare from '../../helpers/nightmare';
-describe('Ticket descriptor path', () => {
+// #1051 Traducciones que fallan
+xdescribe('Ticket descriptor path', () => {
const nightmare = createNightmare();
beforeAll(() => {
diff --git a/front/Dockerfile b/front/Dockerfile
index 0bbf71f40..d6fe5d4f8 100644
--- a/front/Dockerfile
+++ b/front/Dockerfile
@@ -13,6 +13,5 @@ COPY front/nginx.conf sites-available/salix
RUN rm sites-enabled/default && ln -s ../sites-available/salix sites-enabled/salix
COPY dist /salix/dist
-COPY front/salix/manifest.json /salix/dist/
CMD ["nginx", "-g", "daemon off;"]
diff --git a/front/core/components/dialog/dialog.js b/front/core/components/dialog/dialog.js
index fb904f2f0..7ea588a27 100644
--- a/front/core/components/dialog/dialog.js
+++ b/front/core/components/dialog/dialog.js
@@ -47,9 +47,6 @@ export default class Dialog extends Component {
if (this.onOpen)
this.onOpen();
-
- let firstFocusable = this.element.querySelector('input, textarea');
- if (firstFocusable) firstFocusable.focus();
}
/**
diff --git a/front/core/components/treeview/child.html b/front/core/components/treeview/child.html
index 437e7ca7d..af5fe128b 100644
--- a/front/core/components/treeview/child.html
+++ b/front/core/components/treeview/child.html
@@ -5,7 +5,7 @@
-
diff --git a/front/core/components/treeview/index.js b/front/core/components/treeview/index.js
index 6449ec450..e732d4347 100644
--- a/front/core/components/treeview/index.js
+++ b/front/core/components/treeview/index.js
@@ -20,6 +20,7 @@ export default class Treeview extends Component {
refresh() {
this.model.refresh().then(() => {
this.data = this.model.data;
+ console.log(this.data);
this.repaintAll();
});
}
diff --git a/front/core/locale/es.yml b/front/core/locale/es.yml
index 10d172444..3cd6428f3 100644
--- a/front/core/locale/es.yml
+++ b/front/core/locale/es.yml
@@ -37,4 +37,5 @@ September: Septiembre
October: Octubre
November: Noviembre
December: Diciembre
-Has delivery: Hay reparto
\ No newline at end of file
+Has delivery: Hay reparto
+Loading: Cargando
\ No newline at end of file
diff --git a/front/salix/components/app/app.html b/front/salix/components/app/app.html
index 922b48ce8..c69d07375 100644
--- a/front/salix/components/app/app.html
+++ b/front/salix/components/app/app.html
@@ -3,10 +3,10 @@
{{$ctrl.$state.current.description}}
@@ -14,20 +14,15 @@
+ ng-class="{padding: $ctrl.showTopbar}">
-
-
\ No newline at end of file
diff --git a/front/salix/components/app/app.js b/front/salix/components/app/app.js
index 6a8ecb247..edf482712 100644
--- a/front/salix/components/app/app.js
+++ b/front/salix/components/app/app.js
@@ -1,19 +1,18 @@
import ngModule from '../../module';
import './style.scss';
+/**
+ * The main graphical application component.
+ *
+ * @property {SideMenu} leftMenu The left menu, if it's present
+ * @property {SideMenu} rightMenu The left menu, if it's present
+ */
export default class App {
- constructor($, $element, vnApp, $state, $transitions) {
+ constructor($, $state, vnApp) {
Object.assign(this, {
$,
- $element,
- vnApp,
- $state
- });
-
- $transitions.onStart({}, transition => {
- let state = transition.targetState().name();
- this.showLeftMenuButton = state.split('.').length >= 3;
- this.hideMenus();
+ $state,
+ vnApp
});
}
@@ -30,33 +29,6 @@ export default class App {
return state && state != 'login';
}
- get leftMenu() {
- return this.$element[0].querySelector('.left-menu');
- }
-
- showLeftMenu() {
- if (!this.leftMenu) return;
- this.leftMenu.classList.add('shown');
- this.leftMenuShown = true;
- }
-
- showRightMenu() {
- if (!this.rightMenu) return;
- this.rightMenu.classList.add('shown');
- this.rightMenuShown = true;
- }
-
- hideMenus() {
- if (this.leftMenuShown) {
- this.leftMenu.classList.remove('shown');
- this.leftMenuShown = false;
- }
- if (this.rightMenuShown) {
- this.rightMenu.classList.remove('shown');
- this.rightMenuShown = false;
- }
- }
-
showMessage(message) {
this.$.snackbar.show({message: message});
}
@@ -69,7 +41,7 @@ export default class App {
this.$.snackbar.showError({message: message});
}
}
-App.$inject = ['$scope', '$element', 'vnApp', '$state', '$transitions'];
+App.$inject = ['$scope', '$state', 'vnApp'];
ngModule.component('vnApp', {
template: require('./app.html'),
diff --git a/front/salix/components/app/style.scss b/front/salix/components/app/style.scss
index 2103c4251..6cb07e4aa 100644
--- a/front/salix/components/app/style.scss
+++ b/front/salix/components/app/style.scss
@@ -1,9 +1,6 @@
@import "background";
@import "margin";
-
-$menu-width: 16em;
-$topbar-height: 4em;
-$mobile-width: 800px;
+@import "variables";
body {
@extend .bg-content;
@@ -72,27 +69,6 @@ vn-app {
margin: 0 auto;
padding-left: $menu-width;
- %side-menu {
- display: block;
- position: fixed;
- z-index: 5;
- bottom: 0;
- width: $menu-width;
- min-width: $menu-width;
- background-color: white;
- box-shadow: 0 .1em .2em rgba(1, 1, 1, .2);
- overflow: auto;
- }
- .left-menu {
- @extend %side-menu;
- top: $topbar-height;
- left: 0;
- }
- .right-menu {
- @extend %side-menu;
- top: $topbar-height;
- right: 0;
- }
}
.main-with-right-menu {
padding-right: $menu-width;
@@ -102,18 +78,6 @@ vn-app {
}
}
}
- & > .background {
- display: none;
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: black;
- z-index: 14;
- opacity: 0;
- transition: opacity 200ms ease-out;
- }
@media screen and (max-width: $mobile-width) {
& > vn-topbar > header {
@@ -135,32 +99,10 @@ vn-app {
}
vn-main-block {
padding-left: 0;
-
- %side-menu-mobile {
- top: 0;
- transition: transform 200ms ease-out;
- z-index: 15;
-
- &.shown {
- transform: translateZ(0) translateX(0);
- }
- }
- .left-menu {
- @extend %side-menu-mobile;
- transform: translateZ(0) translateX(-$menu-width);
- }
- .right-menu {
- @extend %side-menu-mobile;
- transform: translateZ(0) translateX($menu-width);
- }
}
.main-with-right-menu {
padding-right: 0;
}
}
- & > .background.shown {
- display: block;
- opacity: .3;
- }
}
}
diff --git a/front/salix/components/background/background.js b/front/salix/components/background/background.js
new file mode 100644
index 000000000..423b033ce
--- /dev/null
+++ b/front/salix/components/background/background.js
@@ -0,0 +1 @@
+import './style.scss';
diff --git a/front/salix/components/background/style.scss b/front/salix/components/background/style.scss
new file mode 100644
index 000000000..c75b69c52
--- /dev/null
+++ b/front/salix/components/background/style.scss
@@ -0,0 +1,26 @@
+@import "variables";
+
+@keyframes fadein {
+ from {
+ opacity: 0;
+ }
+}
+
+vn-background {
+ display: none;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: black;
+ z-index: 14;
+
+ @media screen and (max-width: $mobile-width) {
+ &.shown {
+ display: block;
+ opacity: .3;
+ animation: 500ms ease-out fadein;
+ }
+ }
+}
diff --git a/front/salix/components/index.js b/front/salix/components/index.js
index b90b221a4..a5ce18e4c 100644
--- a/front/salix/components/index.js
+++ b/front/salix/components/index.js
@@ -2,6 +2,8 @@ import './app/app';
import './login/login';
import './home/home';
import './main-menu/main-menu';
+import './background/background';
+import './side-menu/side-menu';
import './left-menu/left-menu';
import './topbar/topbar';
import './user-configuration-popover';
diff --git a/front/salix/components/main-menu/main-menu.html b/front/salix/components/main-menu/main-menu.html
index b607450b8..188f854eb 100644
--- a/front/salix/components/main-menu/main-menu.html
+++ b/front/salix/components/main-menu/main-menu.html
@@ -5,26 +5,31 @@
class="unselectable">
{{currentUserName}}
-
-
-
-
-
-
-
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/front/salix/components/main-menu/main-menu.js b/front/salix/components/main-menu/main-menu.js
index 684f63aab..287c89d97 100644
--- a/front/salix/components/main-menu/main-menu.js
+++ b/front/salix/components/main-menu/main-menu.js
@@ -2,13 +2,13 @@ import ngModule from '../../module';
import './style.scss';
export default class MainMenu {
- constructor($translate, $scope, $http, $window, vnModules, vnAuth) {
- this.$ = $scope;
- this.$http = $http;
- this.$translate = $translate;
- this.$window = $window;
- this.modules = vnModules.get();
- this.vnAuth = vnAuth;
+ constructor($, $http, vnAuth, vnModules) {
+ Object.assign(this, {
+ $,
+ $http,
+ vnAuth,
+ modules: vnModules.get()
+ });
}
$onInit() {
@@ -30,7 +30,7 @@ export default class MainMenu {
this.vnAuth.logout();
}
}
-MainMenu.$inject = ['$translate', '$scope', '$http', '$window', 'vnModules', 'vnAuth'];
+MainMenu.$inject = ['$scope', '$http', 'vnAuth', 'vnModules'];
ngModule.component('vnMainMenu', {
template: require('./main-menu.html'),
diff --git a/front/salix/components/main-menu/style.scss b/front/salix/components/main-menu/style.scss
index 24ca495ea..87cd78557 100644
--- a/front/salix/components/main-menu/style.scss
+++ b/front/salix/components/main-menu/style.scss
@@ -12,7 +12,7 @@ vn-main-menu {
& > * {
cursor: pointer;
- padding-left: .3em;
+ padding-left: .6em;
&:hover {
color: $main-01;
@@ -21,10 +21,9 @@ vn-main-menu {
& > #user {
vertical-align: middle;
font-weight: bold;
- padding-right: .4em;
+ margin-right: .2em;
}
- & > vn-icon,
- & > a > vn-icon {
+ & > div > vn-icon {
display: block;
font-size: 2.1em;
}
diff --git a/front/salix/components/side-menu/side-menu.html b/front/salix/components/side-menu/side-menu.html
new file mode 100644
index 000000000..b56d3cece
--- /dev/null
+++ b/front/salix/components/side-menu/side-menu.html
@@ -0,0 +1,9 @@
+
+
+
diff --git a/front/salix/components/side-menu/side-menu.js b/front/salix/components/side-menu/side-menu.js
new file mode 100644
index 000000000..14220c4a3
--- /dev/null
+++ b/front/salix/components/side-menu/side-menu.js
@@ -0,0 +1,78 @@
+import ngModule from '../../module';
+import './style.scss';
+
+/**
+ * A side menu.
+ *
+ * @property {String} side [left|right] The side where the menu is displayed
+ * @property {Boolean} shown Whether the menu it's currently displayed (Only for small viewports)
+ */
+export default class SideMenu {
+ constructor($, $element, $window, $transitions) {
+ Object.assign(this, {
+ $,
+ $element,
+ $window,
+ $transitions,
+ side: 'left'
+ });
+ }
+
+ $onInit() {
+ this.menu = this.$element[0].querySelector('.menu');
+
+ if (this.side == 'right') {
+ this.menu.classList.add('right');
+ this.app.rightMenu = this;
+ } else {
+ this.menu.classList.add('left');
+ this.app.leftMenu = this;
+ }
+ }
+
+ $onDestroy() {
+ if (this.side == 'right')
+ this.app.rightMenu = null;
+ else
+ this.app.leftMenu = null;
+ }
+
+ onEscape(event) {
+ if (!event.defaultPrevented && event.key == 'Escape') {
+ event.preventDefault();
+ this.hide();
+ this.$.$digest();
+ }
+ }
+
+ onTransition(transition) {
+ if (transition.from().name !== transition.to().name)
+ this.hide();
+ }
+
+ show() {
+ this.shown = true;
+ this.handler = e => this.onEscape(e);
+ this.$window.addEventListener('keydown', this.handler);
+ this.stateHandler = this.$transitions.onStart({}, t => this.onTransition(t));
+ }
+
+ hide() {
+ this.$window.removeEventListener('keydown', this.handler);
+ this.stateHandler();
+ this.shown = false;
+ }
+}
+SideMenu.$inject = ['$scope', '$element', '$window', '$transitions'];
+
+ngModule.component('vnSideMenu', {
+ template: require('./side-menu.html'),
+ controller: SideMenu,
+ transclude: true,
+ bindings: {
+ side: '@?'
+ },
+ require: {
+ app: '^vnApp'
+ }
+});
diff --git a/front/salix/components/side-menu/style.scss b/front/salix/components/side-menu/style.scss
new file mode 100644
index 000000000..98084022d
--- /dev/null
+++ b/front/salix/components/side-menu/style.scss
@@ -0,0 +1,37 @@
+@import "variables";
+
+vn-side-menu > .menu {
+ display: block;
+ position: fixed;
+ z-index: 5;
+ bottom: 0;
+ width: $menu-width;
+ min-width: $menu-width;
+ background-color: white;
+ box-shadow: 0 .1em .2em rgba(1, 1, 1, .2);
+ overflow: auto;
+ top: $topbar-height;
+
+ &.left {
+ left: 0;
+ }
+ &.right {
+ right: 0;
+ }
+
+ @media screen and (max-width: $mobile-width) {
+ top: 0;
+ transition: transform 200ms ease-out;
+ z-index: 15;
+
+ &.left {
+ transform: translateZ(0) translateX(-$menu-width);
+ }
+ &.right {
+ transform: translateZ(0) translateX($menu-width);
+ }
+ &.shown {
+ transform: translateZ(0) translateX(0);
+ }
+ }
+}
diff --git a/front/salix/index.ejs b/front/salix/index.ejs
index 9f4535540..3aed9d9a6 100644
--- a/front/salix/index.ejs
+++ b/front/salix/index.ejs
@@ -4,7 +4,7 @@
-
+
diff --git a/front/salix/manifest.json b/front/salix/manifest.json
index bf7e237fb..29deedbcd 100644
--- a/front/salix/manifest.json
+++ b/front/salix/manifest.json
@@ -1,12 +1,12 @@
{
"name": "Salix",
+ "start_url": "index.html",
+ "display": "standalone",
+ "theme_color": "#3d3d3d",
"icons": [
{
"src": "favicon.ico",
"sizes": "512x512"
}
- ],
- "start_url": "index.html",
- "display": "standalone",
- "theme_color": "#3d3d3d"
+ ]
}
diff --git a/front/salix/styles/descriptor.scss b/front/salix/styles/descriptor.scss
index 7837a8326..ddd4ea73e 100644
--- a/front/salix/styles/descriptor.scss
+++ b/front/salix/styles/descriptor.scss
@@ -77,4 +77,9 @@
}
}
}
+}
+vn-popover {
+ .vn-descriptor > .header > a:first-child {
+ visibility: hidden;
+ }
}
\ No newline at end of file
diff --git a/front/salix/styles/index.js b/front/salix/styles/index.js
index 6149668b8..7f919436a 100644
--- a/front/salix/styles/index.js
+++ b/front/salix/styles/index.js
@@ -13,3 +13,4 @@ import './effects.scss';
import './order-product.scss';
import './summary.scss';
import './descriptor.scss';
+import './modal-form.scss';
diff --git a/front/salix/styles/modal-form.scss b/front/salix/styles/modal-form.scss
new file mode 100644
index 000000000..e353833e6
--- /dev/null
+++ b/front/salix/styles/modal-form.scss
@@ -0,0 +1,38 @@
+@import 'colors';
+@import "./padding";
+
+vn-dialog.modal-form {
+ vn-horizontal.header{
+ @extend .pad-small;
+ background-color: $main-01;
+ h5{
+ color: white;
+ margin: 0 auto;
+ }
+ }
+ tpl-body {
+ width: 100%;
+ }
+ table {
+ width: 100%
+ }
+ & > div{
+ padding: 0!important;
+ }
+ vn-textfield {
+ width: 100%;
+ }
+ .buttons{
+ margin-top: 0!important;
+ }
+
+ p{
+ display: none;
+ }
+ button.close > vn-icon{
+ color: white!important;
+ }
+ vn-ticket-sale-edit-discount > div {
+ padding-bottom: 0!important;
+ }
+}
\ No newline at end of file
diff --git a/front/salix/styles/variables.scss b/front/salix/styles/variables.scss
new file mode 100644
index 000000000..cadbe1fa4
--- /dev/null
+++ b/front/salix/styles/variables.scss
@@ -0,0 +1,4 @@
+
+$menu-width: 16em;
+$topbar-height: 4em;
+$mobile-width: 800px;
\ No newline at end of file
diff --git a/loopback/locale/es.json b/loopback/locale/es.json
index 648989cb6..da4100a5a 100644
--- a/loopback/locale/es.json
+++ b/loopback/locale/es.json
@@ -65,5 +65,6 @@
"INVALID_USER_NAME": "El nombre de usuario solo debe contener letras minúsculas o, a partir del segundo carácter, números o subguiones, no esta permitido el uso de la letra ñ",
"You can't create a ticket for a frozen client": "No puedes crear un ticket para un cliente congelado",
"You can't create a ticket for a inactive client": "No puedes crear un ticket para un cliente inactivo",
- "Tag value cannot be blank": "El valor del tag no puede quedar en blanco"
+ "Tag value cannot be blank": "El valor del tag no puede quedar en blanco",
+ "ORDER_EMPTY": "Cesta vacía"
}
\ No newline at end of file
diff --git a/modules/agency/front/calendar/index.js b/modules/agency/front/calendar/index.js
index a26b705a8..f08a47601 100644
--- a/modules/agency/front/calendar/index.js
+++ b/modules/agency/front/calendar/index.js
@@ -17,14 +17,6 @@ class Controller {
this.ndMonth = this.$scope.ndMonth;
}
- $onInit() {
- this.app.rightMenu = this.$element[0];
- }
-
- $onDestroy() {
- this.app.rightMenu = null;
- }
-
get zone() {
return this._zone;
}
@@ -152,9 +144,6 @@ Controller.$inject = ['$element', '$scope', '$stateParams', '$http'];
ngModule.component('vnZoneCalendar', {
template: require('./index.html'),
controller: Controller,
- require: {
- app: '^vnApp'
- },
bindings: {
zone: '<'
}
diff --git a/modules/agency/front/card/index.html b/modules/agency/front/card/index.html
index 2b981bf29..db5881e42 100644
--- a/modules/agency/front/card/index.html
+++ b/modules/agency/front/card/index.html
@@ -1,7 +1,7 @@
-
+
diff --git a/modules/agency/front/index/index.js b/modules/agency/front/index/index.js
index 6c2d250c5..0958059af 100644
--- a/modules/agency/front/index/index.js
+++ b/modules/agency/front/index/index.js
@@ -16,7 +16,7 @@ export default class Controller {
case 'search':
return /^\d+$/.test(value)
? {id: value}
- : {name: {regexp: value}};
+ : {name: {like: `%${value}%`}};
case 'warehouseFk':
case 'agencyModeFk':
return {[param]: value};
diff --git a/modules/agency/front/location/index.html b/modules/agency/front/location/index.html
index 1e2983284..27de3bc1f 100644
--- a/modules/agency/front/location/index.html
+++ b/modules/agency/front/location/index.html
@@ -16,8 +16,7 @@
on-selection="$ctrl.onSelection(item)">
-
+
+
+
\ No newline at end of file
diff --git a/modules/claim/front/card/index.html b/modules/claim/front/card/index.html
index 82ce962cb..3a445f0b1 100644
--- a/modules/claim/front/card/index.html
+++ b/modules/claim/front/card/index.html
@@ -1,7 +1,7 @@
-
+
diff --git a/modules/client/front/card/index.html b/modules/client/front/card/index.html
index 5c8b6f334..3732e0d07 100644
--- a/modules/client/front/card/index.html
+++ b/modules/client/front/card/index.html
@@ -1,7 +1,7 @@
-
+
diff --git a/modules/client/front/descriptor-popover/style.scss b/modules/client/front/descriptor-popover/style.scss
index 84938dc9c..0262c4ac0 100644
--- a/modules/client/front/descriptor-popover/style.scss
+++ b/modules/client/front/descriptor-popover/style.scss
@@ -5,8 +5,5 @@ vn-client-descriptor-popover {
& > vn-card{
margin: 0!important;
}
- .header > a:first-child {
- display: none
- }
}
-}
\ No newline at end of file
+}
diff --git a/modules/client/front/risk/create/index.html b/modules/client/front/risk/create/index.html
index 095d16986..950d54a52 100644
--- a/modules/client/front/risk/create/index.html
+++ b/modules/client/front/risk/create/index.html
@@ -1,44 +1,45 @@
-
-
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/modules/client/front/risk/create/index.js b/modules/client/front/risk/create/index.js
index a828d7264..11e701791 100644
--- a/modules/client/front/risk/create/index.js
+++ b/modules/client/front/risk/create/index.js
@@ -1,11 +1,13 @@
import ngModule from '../../module';
+import './style.scss';
class Controller {
- constructor($scope, $state, $http, $stateParams) {
+ constructor($scope, $state, $http, vnApp, $translate) {
this.$http = $http;
this.$ = $scope;
this.$state = $state;
- this.$stateParams = $stateParams;
+ this.vnApp = vnApp;
+ this.$translate = $translate;
this.receipt = {
payed: new Date(),
@@ -13,21 +15,26 @@ class Controller {
companyFk: window.localStorage.defaultCompanyFk,
bankFk: window.localStorage.defaultBankFk
};
-
- if (this.$stateParams.payed)
- this.receipt.payed = this.$stateParams.payed;
-
- if (this.$stateParams.bankFk)
- this.receipt.bankFk = this.$stateParams.bankFk;
-
- if (this.$stateParams.amountPaid)
- this.receipt.amountPaid = this.$stateParams.amountPaid;
-
- if (this.$stateParams.companyFk)
- this.receipt.companyFk = this.$stateParams.companyFk;
}
- $onInit() {
+ set payed(value) {
+ this.receipt.payed = value;
+ }
+
+ set bankFk(value) {
+ this.receipt.bankFk = value;
+ }
+
+ set amountPaid(value) {
+ this.receipt.amountPaid = value;
+ }
+
+ set companyFk(value) {
+ this.receipt.companyFk = value;
+ this.getAmountPaid();
+ }
+
+ getAmountPaid() {
let filter = {
where: {
clientFk: this.$state.params.id,
@@ -41,25 +48,34 @@ class Controller {
});
}
- cancel() {
- this.goToIndex();
+ show() {
+ this.$.dialog.show();
}
- goToIndex() {
- this.$state.go('client.card.risk.index');
+ hide() {
+ this.$.dialog.hide();
}
- onSubmit() {
- this.$.watcher.submit().then(
- () => {
- this.goToIndex();
- }
- );
+ save() {
+ let query = `/client/api/receipts`;
+ this.$http.post(query, this.receipt).then(() => {
+ this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
+ this.hide();
+ if (this.onResponse)
+ this.onResponse();
+ });
}
}
-Controller.$inject = ['$scope', '$state', '$http', '$stateParams'];
+Controller.$inject = ['$scope', '$state', '$http', 'vnApp', '$translate'];
ngModule.component('vnClientRiskCreate', {
template: require('./index.html'),
- controller: Controller
+ controller: Controller,
+ bindings: {
+ payed: '',
+ bankFk: '',
+ amountPaid: '',
+ onResponse: '&?',
+ companyFk: ''
+ }
});
diff --git a/modules/client/front/risk/create/style.scss b/modules/client/front/risk/create/style.scss
new file mode 100644
index 000000000..710de47b9
--- /dev/null
+++ b/modules/client/front/risk/create/style.scss
@@ -0,0 +1,3 @@
+vn-horizontal.buttons-bar{
+ text-align: center;
+}
\ No newline at end of file
diff --git a/modules/client/front/risk/index/index.html b/modules/client/front/risk/index/index.html
index e63a616b5..43718bf35 100644
--- a/modules/client/front/risk/index/index.html
+++ b/modules/client/front/risk/index/index.html
@@ -94,13 +94,16 @@
-
-
-
-
+ fixed-bottom-right
+ ng-click="$ctrl.openCreateDialog()">
+
+
+
+
\ No newline at end of file
diff --git a/modules/client/front/risk/index/index.js b/modules/client/front/risk/index/index.js
index 14c1be3b7..6feea8b96 100644
--- a/modules/client/front/risk/index/index.js
+++ b/modules/client/front/risk/index/index.js
@@ -31,6 +31,9 @@ class Controller {
setOrder(value) {
this.params.params.companyFk = value;
this.filter.where.companyFk = value;
+ }
+
+ refresh() {
this.$.model.refresh();
this.$.riskModel.refresh();
}
@@ -55,6 +58,14 @@ class Controller {
return this._risks;
}
+ openCreateDialog() {
+ this.$.riskCreateDialog.companyFk = this.companyFk;
+ this.$.riskCreateDialog.onResponse = () => {
+ this.refresh();
+ };
+ this.$.riskCreateDialog.show();
+ }
+
onDownload() {
alert('Not implemented yet');
}
diff --git a/modules/client/front/search-panel/index.html b/modules/client/front/search-panel/index.html
index a5553fcbf..9fb1aaf3e 100644
--- a/modules/client/front/search-panel/index.html
+++ b/modules/client/front/search-panel/index.html
@@ -1,75 +1,75 @@
-
+
diff --git a/modules/item/front/card/index.html b/modules/item/front/card/index.html
index d4cf5ad43..aa84532d1 100644
--- a/modules/item/front/card/index.html
+++ b/modules/item/front/card/index.html
@@ -1,7 +1,7 @@
-
+
diff --git a/modules/item/front/descriptor-popover/style.scss b/modules/item/front/descriptor-popover/style.scss
index 839fc992f..dfc11ab9d 100644
--- a/modules/item/front/descriptor-popover/style.scss
+++ b/modules/item/front/descriptor-popover/style.scss
@@ -3,9 +3,5 @@ vn-item-descriptor-popover {
display: block;
width: 16em;
min-height: 28em;
-
- .header > a:first-child {
- display: none
- }
}
}
\ No newline at end of file
diff --git a/modules/item/front/diary/index.js b/modules/item/front/diary/index.js
index 09d3383fd..6745ad94c 100644
--- a/modules/item/front/diary/index.js
+++ b/modules/item/front/diary/index.js
@@ -147,8 +147,8 @@ class Controller {
this.$scope.descriptor.ticketFk = sale.origin;
this.$scope.descriptor.parent = event.target;
this.$scope.descriptor.show();
+
event.preventDefault();
- event.stopImmediatePropagation();
}
showClientDescriptor(event, sale) {
@@ -157,8 +157,8 @@ class Controller {
this.$scope.clientDescriptor.clientFk = sale.clientFk;
this.$scope.clientDescriptor.parent = event.target;
this.$scope.clientDescriptor.show();
+
event.preventDefault();
- event.stopImmediatePropagation();
}
onDescriptorLoad() {
diff --git a/modules/item/front/last-entries/index.html b/modules/item/front/last-entries/index.html
index 210bb88b1..bca5b8177 100644
--- a/modules/item/front/last-entries/index.html
+++ b/modules/item/front/last-entries/index.html
@@ -39,7 +39,7 @@
diff --git a/modules/item/front/ticket-descriptor-popover/style.scss b/modules/item/front/ticket-descriptor-popover/style.scss
index d41d28a87..58e65d320 100644
--- a/modules/item/front/ticket-descriptor-popover/style.scss
+++ b/modules/item/front/ticket-descriptor-popover/style.scss
@@ -4,12 +4,8 @@ vn-ticket-descriptor-popover {
width: 16em;
max-height: 28em;
- &>vn-card {
+ & > vn-card {
margin: 0!important;
}
-
- .header > a:first-child {
- display: none
- }
}
}
\ No newline at end of file
diff --git a/modules/item/front/ticket-descriptor/addStowaway.js b/modules/item/front/ticket-descriptor/addStowaway.js
index b1e530850..514d46503 100644
--- a/modules/item/front/ticket-descriptor/addStowaway.js
+++ b/modules/item/front/ticket-descriptor/addStowaway.js
@@ -20,7 +20,7 @@ class Controller {
let params = {id: this.possibleStowaways[index].id, shipFk: this.ticket.id};
this.$http.post(`/api/Stowaways/`, params)
.then(() => {
- this.card.reload();
+ this.cardReload();
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
});
}
@@ -40,9 +40,7 @@ ngModule.component('vnAddStowaway', {
template: require('./addStowaway.html'),
controller: Controller,
bindings: {
- ticket: '<'
- },
- require: {
- card: '^vnTicketCard'
+ ticket: '<',
+ cardReload: '&?'
}
});
diff --git a/modules/item/front/ticket-descriptor/index.html b/modules/item/front/ticket-descriptor/index.html
index 1dd69d7b8..3e23a2175 100644
--- a/modules/item/front/ticket-descriptor/index.html
+++ b/modules/item/front/ticket-descriptor/index.html
@@ -100,6 +100,7 @@
show-field="id"
value-field="id"
vn-tooltip="Ship stowaways"
+ tooltip-position="up"
data="$ctrl.ticket.ship"
on-change="$ctrl.goToTicket(value)">
@@ -152,5 +153,5 @@
question="You are going to delete this ticket"
message="Continue anyway?">
-
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/modules/item/front/ticket-descriptor/index.js b/modules/item/front/ticket-descriptor/index.js
index 91e323ff8..53f13eb1a 100644
--- a/modules/item/front/ticket-descriptor/index.js
+++ b/modules/item/front/ticket-descriptor/index.js
@@ -1,5 +1,4 @@
import ngModule from '../module';
-import './style.scss';
class Controller {
constructor($state, $scope, $http, vnApp, $translate) {
@@ -11,7 +10,7 @@ class Controller {
this.moreOptions = [
{callback: this.showAddTurnDialog, name: 'Add turn', show: true},
{callback: this.showDeleteTicketDialog, name: 'Delete ticket', show: true},
- {callback: this.showAddStowaway, name: 'Add stowaway', show: true},
+ {callback: this.showAddStowaway, name: 'Add stowaway', show: () => this.isTicketModule()},
{callback: this.showRemoveStowaway, name: 'Remove stowaway', show: () => this.shouldShowRemoveStowaway()},
/* callback: this.showChangeShipped, name: 'Change shipped hour', show: true} */
];
@@ -37,8 +36,16 @@ class Controller {
}
}
+ isTicketModule() {
+ let path = this.$state.getCurrentPath();
+ if (path[1].state.name === 'ticket')
+ return true;
+
+ return false;
+ }
+
shouldShowRemoveStowaway() {
- if (!this._ticket)
+ if (!this._ticket || !this.isTicketModule())
return false;
return (this._ticket.stowaway || (this._ticket.ship && this._ticket.ship.length > 0));
@@ -157,7 +164,8 @@ Controller.$inject = ['$state', '$scope', '$http', 'vnApp', '$translate'];
ngModule.component('vnTicketDescriptor', {
template: require('./index.html'),
bindings: {
- ticket: '<'
+ ticket: '<',
+ cardReload: '&'
},
controller: Controller
});
diff --git a/modules/item/front/ticket-descriptor/removeStowaway.js b/modules/item/front/ticket-descriptor/removeStowaway.js
index 6d4e966bf..9553a8a66 100644
--- a/modules/item/front/ticket-descriptor/removeStowaway.js
+++ b/modules/item/front/ticket-descriptor/removeStowaway.js
@@ -46,7 +46,7 @@ class Controller {
deleteStowaway(response) {
if (response === 'ACCEPT') {
this.$http.delete(`/api/Stowaways/${this.stowawayToDelete.id}`).then(res => {
- this.card.reload();
+ this.cardReload();
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
});
}
@@ -72,9 +72,7 @@ ngModule.component('vnRemoveStowaway', {
template: require('./removeStowaway.html'),
controller: Controller,
bindings: {
- ticket: '<'
- },
- require: {
- card: '^vnTicketCard'
+ ticket: '<',
+ cardReload: '&?'
}
});
diff --git a/modules/order/back/methods/order/catalogFilter.js b/modules/order/back/methods/order/catalogFilter.js
index 519c96267..7c609ec8d 100644
--- a/modules/order/back/methods/order/catalogFilter.js
+++ b/modules/order/back/methods/order/catalogFilter.js
@@ -37,7 +37,7 @@ module.exports = Self => {
},
});
- Self.catalogFilter = async (orderFk, orderBy, filter, tags) => {
+ Self.catalogFilter = async(orderFk, orderBy, filter, tags) => {
let conn = Self.dataSource.connector;
const stmts = [];
let stmt;
diff --git a/modules/order/front/card/index.html b/modules/order/front/card/index.html
index b0874ec48..96aa94f6c 100644
--- a/modules/order/front/card/index.html
+++ b/modules/order/front/card/index.html
@@ -1,7 +1,7 @@
-
+
diff --git a/modules/order/front/catalog/index.html b/modules/order/front/catalog/index.html
index 8de456b93..819afca79 100644
--- a/modules/order/front/catalog/index.html
+++ b/modules/order/front/catalog/index.html
@@ -97,10 +97,9 @@
-
+
+
+
diff --git a/modules/order/front/filter/index.html b/modules/order/front/filter/index.html
index f4949c88a..f4c1c6390 100644
--- a/modules/order/front/filter/index.html
+++ b/modules/order/front/filter/index.html
@@ -19,9 +19,7 @@
-
diff --git a/modules/order/front/line/index.js b/modules/order/front/line/index.js
index e25d50532..84067b5ec 100644
--- a/modules/order/front/line/index.js
+++ b/modules/order/front/line/index.js
@@ -92,6 +92,7 @@ class Controller {
this.$http.post(query).then(() => {
this.vnApp.showSuccess(this.$translate.instant('Order confirmed'));
+ this.$state.go(`ticket.index`, {clientFk: this.order.clientFk});
});
}
}
diff --git a/modules/order/front/line/locale/es.yml b/modules/order/front/line/locale/es.yml
index ba3a3fee6..688778561 100644
--- a/modules/order/front/line/locale/es.yml
+++ b/modules/order/front/line/locale/es.yml
@@ -1,2 +1,3 @@
-Remove item: Eliminar articulo
-Order confirmed: Pedido confirmado
\ No newline at end of file
+Delete row: Eliminar linea
+Order confirmed: Pedido confirmado
+Are you sure you want to delete this row?: ¿Estas seguro de que quieres borrar esta línea?
\ No newline at end of file
diff --git a/modules/ticket/back/methods/ticket/getPossibleStowaways.js b/modules/ticket/back/methods/ticket/getPossibleStowaways.js
index 4ff5fa9d5..581a0a9c3 100644
--- a/modules/ticket/back/methods/ticket/getPossibleStowaways.js
+++ b/modules/ticket/back/methods/ticket/getPossibleStowaways.js
@@ -20,6 +20,10 @@ module.exports = Self => {
Self.getPossibleStowaways = async ticketFk => {
let ship = await Self.app.models.Ticket.findById(ticketFk);
+
+ if (!ship || !ship.shipped)
+ return [];
+
let lowestDate = new Date(ship.shipped.getTime());
lowestDate.setHours(0, 0, -1, 0);
diff --git a/modules/ticket/front/card/index.html b/modules/ticket/front/card/index.html
index ca8c7d88b..c55064ce6 100644
--- a/modules/ticket/front/card/index.html
+++ b/modules/ticket/front/card/index.html
@@ -1,7 +1,7 @@
-
+
diff --git a/modules/ticket/front/data/step-one/index.html b/modules/ticket/front/data/step-one/index.html
index de054ed46..20ddc1a69 100644
--- a/modules/ticket/front/data/step-one/index.html
+++ b/modules/ticket/front/data/step-one/index.html
@@ -16,8 +16,10 @@
label="Address"
show-field="nickname"
value-field="id"
- field="$ctrl.ticket.addressFk">
- {{::nickname}}
+ field="$ctrl.ticket.addressFk"
+ order="isActive DESC">
+
+ {{::isActive ? '' : 'INACTIVE'}} {{::nickname}}
- {{::street}} - {{::city}} - {{::province.name}} - {{::agencyMode.name}}
diff --git a/modules/ticket/front/data/step-one/index.js b/modules/ticket/front/data/step-one/index.js
index 69d4f25c5..f3e8bf300 100644
--- a/modules/ticket/front/data/step-one/index.js
+++ b/modules/ticket/front/data/step-one/index.js
@@ -1,5 +1,6 @@
import ngModule from '../../module';
import {toJsonDate} from 'core/lib/date';
+import './style.scss';
class Controller {
constructor($scope, $http, $translate, vnApp) {
diff --git a/modules/ticket/front/data/step-one/style.scss b/modules/ticket/front/data/step-one/style.scss
new file mode 100644
index 000000000..30c25c46a
--- /dev/null
+++ b/modules/ticket/front/data/step-one/style.scss
@@ -0,0 +1,13 @@
+@import 'colors';
+
+tpl-item{
+ &.notActive {
+ background-color: $main-bg;
+ color: $secondary-font-color;
+ width: 100%;
+ }
+
+ & > .inactive {
+ text-transform: uppercase;
+ }
+}
diff --git a/modules/ticket/front/tracking/index/index.html b/modules/ticket/front/tracking/index/index.html
index 21ef5c176..c5a8c993b 100644
--- a/modules/ticket/front/tracking/index/index.html
+++ b/modules/ticket/front/tracking/index/index.html
@@ -34,6 +34,6 @@
-
+
\ No newline at end of file
diff --git a/modules/worker/front/card/index.html b/modules/worker/front/card/index.html
index 79d4c7511..80f1f7a61 100644
--- a/modules/worker/front/card/index.html
+++ b/modules/worker/front/card/index.html
@@ -1,7 +1,7 @@
-
+
diff --git a/print/common/css/layout.css b/print/common/css/layout.css
index 2f2a4f7c9..216d9fcae 100644
--- a/print/common/css/layout.css
+++ b/print/common/css/layout.css
@@ -1,5 +1,5 @@
.container {
- font-family: verdana, sans-serif;
+ font-family: arial, sans-serif;
font-size: 16px;
zoom: 0.55
}
@@ -33,9 +33,18 @@
float: left
}
+.clearfix {
+ overflow: hidden;
+ display: block;
+ clear: both
+}
+
.row {
- white-space: nowrap;
- margin-bottom: 15px
+ margin-bottom: 15px;
+ overflow: hidden;
+ display: block;
+ clear: both;
+ width: 100%
}
.row.small {
@@ -52,13 +61,36 @@
box-sizing: border-box
}
+.row:last-child {
+ margin-bottom: 0
+}
+
+.row.inline .text {
+ display: table-cell;
+ margin-bottom: 0;
+ width: 30%
+}
+
+.row.inline .control {
+ display: table-cell;
+ padding-left: 20px;
+ font-weight: bold;
+ color: #000;
+ width: 70%
+}
+
+.row.inline .description {
+ position: static;
+ overflow: visible
+}
+
.row .description {
position: relative;
padding-top: 2px;
- overflow: hidden;
font-size: 9px;
+ overflow: hidden;
display: block;
- color: #999
+ clear: both
}
.row .line {
@@ -78,42 +110,17 @@
float: left
}
-.row:last-child {
- margin-bottom: 0
-}
-
-.row.inline .text {
- display: inline-block;
- margin-bottom: 0;
- width: 40%;
-
-}
-
-.row.inline .control {
- display: inline-block;
- font-weight: bold;
- padding-left: 20px;
- color: #000;
- width: 60%
-}
-
-.row.inline .description {
- position: static;
- overflow: visible
-}
-
.panel {
position: relative
}
.panel .header {
background-color: #FFF;
- position:absolute;
- left: 17.5px;
- top: -12px;
padding: 2.5px 5px;
-
+ position: absolute;
font-weight: bold;
+ left: 17.5px;
+ top: -12px
}
.panel .body {
@@ -127,22 +134,27 @@
margin-top: 0
}
-.box {
- border-top: 1px solid #CCC;
- border-right: 1px solid #CCC;
+.field {
border-bottom: 1px solid #CCC;
- font-weight: bold;
- text-align: center;
- padding-top: 4px;
- width: 25px;
- height: 21px;
- color: #000;
+ border-left: 1px solid #CCC;
+ border-top: 1px solid #CCC;
float: left
}
-.box.crossed {
- font-weight: 100;
- font-size: 16px
+.field span {
+ border-right: 1px solid #CCC;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: table-cell;
+ vertical-align: middle;
+ text-align: center;
+ font-weight: bold
+}
+
+.field.square span {
+ height: 35.4px;
+ width: 35.4px
}
.pull-left {
@@ -153,53 +165,89 @@
float: right
}
-.verticalText {
+.vertical-text {
-moz-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
position: absolute;
text-align: center;
font-size: .65em;
+ right: -108px;
width: 200px;
- border: 2px solid #000;
- right: -110px;
top: 50%
}
-vn-table {
+table {
border-collapse: collapse;
- margin: 20px 0;
- display: table;
- width: 100%;
+ border-spacing: 0;
}
-vn-thead {
+.row-oriented, .column-oriented {
+ text-align: left;
+ width: 100%
+}
+
+.row-oriented .description,
+.column-oriented .description {
+ font-size: 0.6em;
+ color: #888;
+ padding: 0 !important
+}
+
+.row-oriented .description .line,
+.column-oriented .description .line {
+ border-bottom: 1px solid #DDD;
+ border-right: 1px solid #DDD;
+ border-left: 1px solid #DDD;
+ margin-top: 10px;
+ color: #999;
+ padding: 5px
+}
+
+.row-oriented .description span,
+.column-oriented .description span {
+ background-color: #FFF;
+ margin: -5px 0 0 50px;
+ display: block;
+ padding: 5px;
+ float: left
+}
+
+.column-oriented {
+ margin: 20px 0
+}
+
+.column-oriented tfoot {
+ border-top: 1px solid #808080;
+}
+
+.column-oriented td, .column-oriented th {
+ padding: 5px 10px
+}
+
+.column-oriented thead {
+ background-color: #c0c0c0
+}
+
+.column-oriented thead tr {
border-bottom: 1px solid #808080;
border-top: 1px solid #808080;
- display: table-header-group
+ background-color: #c0c0c0
}
-vn-tbody {
- border-top: 3px solid #888888;
- display: table-row-group
+.column-oriented tfoot tr:first-child td {
+ padding-top: 20px !important;
}
-vn-tfoot {
- border-top: 1px solid #808080;
- display: table-footer-group
+.panel .row-oriented td, .panel .row-oriented th {
+ padding: 10px 0
}
-vn-tr {
- display: table-row
-}
-
-vn-th {
- font-weight: bold
+.row-oriented > tbody > tr > td {
+ width: 30%
}
-vn-td, vn-th {
- vertical-align: middle;
- display: table-cell;
- text-align: left;
- padding: 5px 0
-}
+.row-oriented > tbody > tr > th {
+ padding-left: 30px;
+ width: 70%
+}
\ No newline at end of file
diff --git a/print/common/css/misc.css b/print/common/css/misc.css
index d1e7edf27..91af817b1 100644
--- a/print/common/css/misc.css
+++ b/print/common/css/misc.css
@@ -10,6 +10,14 @@
text-align: right
}
-.gray {
+.font.gray {
color: #555
+}
+
+.font.light-gray {
+ color: #888
+}
+
+.font.small {
+ font-size: 0.65em
}
\ No newline at end of file
diff --git a/print/config/routes.json b/print/config/routes.json
index 242557e51..4fa82eea3 100644
--- a/print/config/routes.json
+++ b/print/config/routes.json
@@ -5,8 +5,9 @@
{"type": "email", "name": "letter-debtor-st"},
{"type": "email", "name": "letter-debtor-nd"},
{"type": "email", "name": "claim-pickup-order"},
- {"type": "report", "name": "delivery-note"},
- {"type": "report", "name": "invoice"},
+ {"type": "email", "name": "sepa-core"},
+ {"type": "report", "name": "rpt-delivery-note"},
+ {"type": "report", "name": "rpt-invoice"},
{"type": "report", "name": "rpt-claim-pickup-order"},
{"type": "report", "name": "rpt-letter-debtor"},
{"type": "report", "name": "rpt-sepa-core"},
diff --git a/print/lib/reportEngine.js b/print/lib/reportEngine.js
index 899893b7f..0bdef6aa9 100644
--- a/print/lib/reportEngine.js
+++ b/print/lib/reportEngine.js
@@ -107,7 +107,7 @@ module.exports = {
format: 'A4',
border: '1.5cm',
footer: {
- height: '80px',
+ height: '60px',
}
};
diff --git a/print/report/claim-pickup-order/index.html b/print/report/claim-pickup-order/index.html
index d598d3261..4790693f5 100644
--- a/print/report/claim-pickup-order/index.html
+++ b/print/report/claim-pickup-order/index.html
@@ -26,7 +26,7 @@
{{$t('sections.howToBuy.stock')}}
{{$t('sections.howToBuy.delivery')}}
-->
-
+