Merge branch 'dev' of https://gitea.verdnatura.es/verdnatura/salix into dev
This commit is contained in:
commit
f21b88840c
|
@ -32,9 +32,6 @@
|
||||||
"Sip": {
|
"Sip": {
|
||||||
"dataSource": "vn"
|
"dataSource": "vn"
|
||||||
},
|
},
|
||||||
"Route": {
|
|
||||||
"dataSource": "vn"
|
|
||||||
},
|
|
||||||
"Vehicle": {
|
"Vehicle": {
|
||||||
"dataSource": "vn"
|
"dataSource": "vn"
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
"name": "Route",
|
|
||||||
"base": "VnModel",
|
|
||||||
"options": {
|
|
||||||
"mysql": {
|
|
||||||
"table": "route"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"properties": {
|
|
||||||
"id": {
|
|
||||||
"type": "Number",
|
|
||||||
"id": true,
|
|
||||||
"description": "Identifier"
|
|
||||||
},
|
|
||||||
"date": {
|
|
||||||
"type": "date"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -490,6 +490,7 @@ export default {
|
||||||
orderBasicData: {
|
orderBasicData: {
|
||||||
clientAutocomplete: `vn-autocomplete[label="Client"]`,
|
clientAutocomplete: `vn-autocomplete[label="Client"]`,
|
||||||
addressAutocomplete: `vn-autocomplete[label="Address"]`,
|
addressAutocomplete: `vn-autocomplete[label="Address"]`,
|
||||||
|
agencyAutocomplete: `vn-autocomplete[label="Agency"]`,
|
||||||
observationInput: `vn-textarea[label="Observation"] textarea`,
|
observationInput: `vn-textarea[label="Observation"] textarea`,
|
||||||
saveButton: `${components.vnSubmit}`
|
saveButton: `${components.vnSubmit}`
|
||||||
},
|
},
|
||||||
|
|
|
@ -64,6 +64,7 @@ describe('Order edit basic data path', () => {
|
||||||
const result = await nightmare
|
const result = await nightmare
|
||||||
.autocompleteSearch(selectors.orderBasicData.clientAutocomplete, 'Tony Stark')
|
.autocompleteSearch(selectors.orderBasicData.clientAutocomplete, 'Tony Stark')
|
||||||
.autocompleteSearch(selectors.orderBasicData.addressAutocomplete, 'Tony Stark')
|
.autocompleteSearch(selectors.orderBasicData.addressAutocomplete, 'Tony Stark')
|
||||||
|
.autocompleteSearch(selectors.orderBasicData.agencyAutocomplete, 'Silla247')
|
||||||
.clearInput(selectors.orderBasicData.observationInput)
|
.clearInput(selectors.orderBasicData.observationInput)
|
||||||
.write(selectors.orderBasicData.observationInput, 'Observation modified')
|
.write(selectors.orderBasicData.observationInput, 'Observation modified')
|
||||||
.waitToClick(selectors.orderBasicData.saveButton)
|
.waitToClick(selectors.orderBasicData.saveButton)
|
||||||
|
@ -80,6 +81,13 @@ describe('Order edit basic data path', () => {
|
||||||
expect(result).toEqual('104: Tony Stark');
|
expect(result).toEqual('104: Tony Stark');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should now confirm the agency have been edited', async() => {
|
||||||
|
const result = await nightmare
|
||||||
|
.waitToGetProperty(`${selectors.orderBasicData.agencyAutocomplete} input`, 'value');
|
||||||
|
|
||||||
|
expect(result).toEqual('7: Silla247');
|
||||||
|
});
|
||||||
|
|
||||||
it('should now confirm the observations have been edited', async() => {
|
it('should now confirm the observations have been edited', async() => {
|
||||||
const result = await nightmare
|
const result = await nightmare
|
||||||
.waitToGetProperty(selectors.orderBasicData.observationInput, 'value');
|
.waitToGetProperty(selectors.orderBasicData.observationInput, 'value');
|
||||||
|
|
|
@ -18,4 +18,8 @@ vn-check {
|
||||||
md-checkbox {
|
md-checkbox {
|
||||||
margin-bottom: 0
|
margin-bottom: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
md-checkbox .md-label {
|
||||||
|
margin-bottom: .5em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-one>{{::$ctrl.title}}</vn-one>
|
<vn-one
|
||||||
|
title="{{::$ctrl.title}}">
|
||||||
|
{{::$ctrl.title}}
|
||||||
|
</vn-one>
|
||||||
<vn-auto>
|
<vn-auto>
|
||||||
<section
|
<section
|
||||||
class="inline-tag ellipsize"
|
class="inline-tag ellipsize"
|
||||||
|
|
|
@ -26,7 +26,7 @@ class Icon {
|
||||||
Icon.$inject = ['$attrs'];
|
Icon.$inject = ['$attrs'];
|
||||||
|
|
||||||
ngModule.component('vnIcon', {
|
ngModule.component('vnIcon', {
|
||||||
template: '<i class="{{::$ctrl.iconClass}}">{{::$ctrl.iconContent}}</i>',
|
template: '<i class="{{::$ctrl.iconClass}} unselectable">{{::$ctrl.iconContent}}</i>',
|
||||||
controller: Icon,
|
controller: Icon,
|
||||||
bindings: {
|
bindings: {
|
||||||
icon: '@'
|
icon: '@'
|
||||||
|
|
|
@ -2,6 +2,7 @@ vn-icon {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 18pt;
|
font-size: 18pt;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
outline: 0;
|
||||||
|
|
||||||
& > i,
|
& > i,
|
||||||
& > i.material-icons {
|
& > i.material-icons {
|
||||||
|
|
|
@ -23,28 +23,6 @@ export default class Treeview extends Component {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* hasCheckedChilds(node) {
|
|
||||||
if (!node.childs) return false;
|
|
||||||
|
|
||||||
const childs = node.childs;
|
|
||||||
for (let i = 0; i < childs.length; i++) {
|
|
||||||
if (childs[i].selected || this.hasCheckedChilds(childs[i]))
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
hasCheckedParents(node) {
|
|
||||||
if (!node.parent) return false;
|
|
||||||
|
|
||||||
const parent = node.parent;
|
|
||||||
if (parent.selected || this.hasCheckedParents(parent))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
} */
|
|
||||||
|
|
||||||
onSelection(item, value) {
|
onSelection(item, value) {
|
||||||
this.emit('selection', {item, value});
|
this.emit('selection', {item, value});
|
||||||
}
|
}
|
||||||
|
@ -67,12 +45,15 @@ export default class Treeview extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
item.childs = newData.sort((a, b) => {
|
item.childs = newData.sort((a, b) => {
|
||||||
let priority = (b.isIncluded - a.isIncluded) - 1;
|
if (b.isIncluded !== a.isIncluded) {
|
||||||
|
if (a.isIncluded == null)
|
||||||
|
return 1;
|
||||||
|
if (b.isIncluded == null)
|
||||||
|
return -1;
|
||||||
|
return b.isIncluded - a.isIncluded;
|
||||||
|
}
|
||||||
|
|
||||||
if (b.name > a.name)
|
return a.name.localeCompare(b.name);
|
||||||
priority++;
|
|
||||||
|
|
||||||
return priority;
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,16 +116,7 @@ module.exports = Self => {
|
||||||
const parentNodes = nodes.filter(element => {
|
const parentNodes = nodes.filter(element => {
|
||||||
return element.depth === minorDepth;
|
return element.depth === minorDepth;
|
||||||
});
|
});
|
||||||
|
const leaves = Object.assign([], sortNodes(parentNodes));
|
||||||
const sortedLeaves = parentNodes.sort((a, b) => {
|
|
||||||
let priority = (b.isIncluded - a.isIncluded) - 1;
|
|
||||||
|
|
||||||
if (b.name > a.name)
|
|
||||||
priority++;
|
|
||||||
|
|
||||||
return priority;
|
|
||||||
});
|
|
||||||
const leaves = Object.assign([], sortedLeaves);
|
|
||||||
|
|
||||||
nestLeaves(leaves);
|
nestLeaves(leaves);
|
||||||
|
|
||||||
|
@ -143,9 +134,23 @@ module.exports = Self => {
|
||||||
&& element.depth === parent.depth + 1;
|
&& element.depth === parent.depth + 1;
|
||||||
});
|
});
|
||||||
|
|
||||||
return elements;
|
return sortNodes(elements);
|
||||||
}
|
}
|
||||||
|
|
||||||
return leaves;
|
return leaves;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function sortNodes(nodes) {
|
||||||
|
return nodes.sort((a, b) => {
|
||||||
|
if (b.isIncluded !== a.isIncluded) {
|
||||||
|
if (a.isIncluded == null)
|
||||||
|
return 1;
|
||||||
|
if (b.isIncluded == null)
|
||||||
|
return -1;
|
||||||
|
return b.isIncluded - a.isIncluded;
|
||||||
|
}
|
||||||
|
|
||||||
|
return a.name.localeCompare(b.name);
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,7 +4,7 @@ Social name: Razón social
|
||||||
Phone: Teléfono
|
Phone: Teléfono
|
||||||
Mobile: Móvil
|
Mobile: Móvil
|
||||||
Fax: Fax
|
Fax: Fax
|
||||||
Email: Correo electrónico
|
Email: E-mail
|
||||||
Salesperson: Comercial
|
Salesperson: Comercial
|
||||||
Channel: Canal
|
Channel: Canal
|
||||||
You can save multiple emails: >-
|
You can save multiple emails: >-
|
||||||
|
|
|
@ -2,7 +2,7 @@ Name: Nombre
|
||||||
Tax number: NIF/CIF
|
Tax number: NIF/CIF
|
||||||
Business name: Razón social
|
Business name: Razón social
|
||||||
Web user: Usuario Web
|
Web user: Usuario Web
|
||||||
Email: Correo electrónico
|
Email: E-mail
|
||||||
Create and edit: Crear y editar
|
Create and edit: Crear y editar
|
||||||
You can save multiple emails: >-
|
You can save multiple emails: >-
|
||||||
Puede guardar varios correos electrónicos encadenándolos mediante comas
|
Puede guardar varios correos electrónicos encadenándolos mediante comas
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
Client id: Id cliente
|
Client id: Id cliente
|
||||||
Phone: Teléfono
|
Phone: Teléfono
|
||||||
Town/City: Ciudad
|
Town/City: Ciudad
|
||||||
Email: Correo electrónico
|
Email: E-mail
|
||||||
View client: Ver cliente
|
View client: Ver cliente
|
|
@ -4,5 +4,5 @@ Name: Nombre
|
||||||
Social name: Razon social
|
Social name: Razon social
|
||||||
Town/City: Ciudad
|
Town/City: Ciudad
|
||||||
Postcode: Código postal
|
Postcode: Código postal
|
||||||
Email: Correo electrónico
|
Email: E-mail
|
||||||
Phone: Teléfono
|
Phone: Teléfono
|
|
@ -23,11 +23,11 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.getVisibleAvailable = async(itemFk, warehouseFk) => {
|
Self.getVisibleAvailable = async(id, warehouseFk) => {
|
||||||
let query = `
|
let query = `
|
||||||
CALL vn.getItemVisibleAvailable(?,curdate(),?,?)`;
|
CALL vn.getItemVisibleAvailable(?,curdate(),?,?)`;
|
||||||
|
|
||||||
let options = [itemFk, warehouseFk, false];
|
let options = [id, warehouseFk, false];
|
||||||
[res] = await Self.rawSql(query, options);
|
[res] = await Self.rawSql(query, options);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -34,20 +34,21 @@ class Controller {
|
||||||
|
|
||||||
set item(value) {
|
set item(value) {
|
||||||
this._item = value;
|
this._item = value;
|
||||||
this.updateStock();
|
if (value && value.itemType && value.itemType.warehouseFk)
|
||||||
|
this.updateStock(value.itemType.warehouseFk);
|
||||||
}
|
}
|
||||||
|
|
||||||
get item() {
|
get item() {
|
||||||
return this._item;
|
return this._item;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateStock() {
|
updateStock(warehouseFk) {
|
||||||
this.available = null;
|
this.available = null;
|
||||||
this.visible = null;
|
this.visible = null;
|
||||||
if (this._item && this._item.id) {
|
if (this._item && this._item.id) {
|
||||||
let options = {
|
let options = {
|
||||||
params: {
|
params: {
|
||||||
warehouseFk: this._warehouseFk
|
warehouseFk: warehouseFk
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.$http.get(`/item/api/Items/${this._item.id}/getVisibleAvailable`, options).then(response => {
|
this.$http.get(`/item/api/Items/${this._item.id}/getVisibleAvailable`, options).then(response => {
|
||||||
|
@ -81,7 +82,7 @@ class Controller {
|
||||||
warehouseFk: this.warehouseFk
|
warehouseFk: this.warehouseFk
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
|
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
|
||||||
this.updateStock();
|
this.updateStock(this.item.itemType.warehouseFk);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,6 @@
|
||||||
{{::item.userNickname}}
|
{{::item.userNickname}}
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td>{{::item.density}}</vn-td>
|
|
||||||
<vn-td number>{{::item.density}}</vn-td>
|
<vn-td number>{{::item.density}}</vn-td>
|
||||||
<vn-td>{{::item.taxClass}}</vn-td>
|
<vn-td>{{::item.taxClass}}</vn-td>
|
||||||
<vn-td>
|
<vn-td>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import ngModule from '../module';
|
import ngModule from '../module';
|
||||||
import './product';
|
|
||||||
import './style.scss';
|
import './style.scss';
|
||||||
|
|
||||||
class Controller {
|
class Controller {
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
<a
|
|
||||||
ui-sref="item.card.summary({id: $ctrl.item.id})"
|
|
||||||
translate-attr="{title: 'View item'}"
|
|
||||||
class="vn-list-item">
|
|
||||||
<vn-horizontal ng-click="$ctrl.onClick($event)">
|
|
||||||
|
|
||||||
<vn-auto margin-medium-right>
|
|
||||||
<vn-one>
|
|
||||||
<img
|
|
||||||
class="image"
|
|
||||||
ng-src="//verdnatura.es/vn-image-data/catalog/200x200/{{::$ctrl.item.image}}"
|
|
||||||
zoom-image="//verdnatura.es/vn-image-data/catalog/1600x900/{{::$ctrl.item.image}}" on-error-src/>
|
|
||||||
</vn-one>
|
|
||||||
</vn-auto>
|
|
||||||
<vn-one>
|
|
||||||
<h6>{{::$ctrl.item.id}} - {{::$ctrl.item.name}}</h6>
|
|
||||||
<vn-label-value label="Type"
|
|
||||||
value="{{::$ctrl.item.type}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value label="Buyer"
|
|
||||||
value="{{::$ctrl.item.userNickname}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-fetched-tags max-length="4" item="$ctrl.item" class="noTitle"/>
|
|
||||||
</vn-one>
|
|
||||||
<vn-horizontal class="buttons">
|
|
||||||
<vn-icon
|
|
||||||
ng-click="$ctrl.clone($event)"
|
|
||||||
vn-tooltip="Clone"
|
|
||||||
icon="icon-clone">
|
|
||||||
</vn-icon>
|
|
||||||
<vn-icon
|
|
||||||
ng-click="$ctrl.preview($event)"
|
|
||||||
vn-tooltip="Preview"
|
|
||||||
icon="desktop_windows">
|
|
||||||
</vn-icon>
|
|
||||||
</vn-horizontal>
|
|
||||||
</vn-horizontal>
|
|
||||||
</a>
|
|
|
@ -1,49 +0,0 @@
|
||||||
import ngModule from '../module';
|
|
||||||
|
|
||||||
class ItemProduct {
|
|
||||||
onClick(event) {
|
|
||||||
if (event.defaultPrevented)
|
|
||||||
event.stopImmediatePropagation();
|
|
||||||
}
|
|
||||||
|
|
||||||
set item(value) {
|
|
||||||
if (value) {
|
|
||||||
let tags = [];
|
|
||||||
for (let i = 5; i < 9; i++) {
|
|
||||||
if (value['tag' + i]) {
|
|
||||||
let tagValue = value['value' + i];
|
|
||||||
let tagKey = value['tag' + i];
|
|
||||||
tags.push({tag: {name: tagKey}, value: tagValue});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
value.tags = tags;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._item = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
get item() {
|
|
||||||
return this._item;
|
|
||||||
}
|
|
||||||
|
|
||||||
clone(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
this.index.cloneItem(this.item);
|
|
||||||
}
|
|
||||||
|
|
||||||
preview(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
this.index.showItemPreview(this.item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ngModule.component('vnItemProduct', {
|
|
||||||
template: require('./product.html'),
|
|
||||||
bindings: {
|
|
||||||
item: '<'
|
|
||||||
},
|
|
||||||
controller: ItemProduct,
|
|
||||||
require: {
|
|
||||||
index: '^vnItemIndex'
|
|
||||||
}
|
|
||||||
});
|
|
|
@ -1,31 +1,5 @@
|
||||||
@import "variables";
|
@import "variables";
|
||||||
|
|
||||||
vn-item-product {
|
|
||||||
display: block;
|
|
||||||
|
|
||||||
.id {
|
|
||||||
background-color: $color-main;
|
|
||||||
color: $color-font-dark;
|
|
||||||
margin-bottom: 0em;
|
|
||||||
}
|
|
||||||
.image {
|
|
||||||
height: 7em;
|
|
||||||
width: 7em;
|
|
||||||
|
|
||||||
& > img {
|
|
||||||
max-height: 100%;
|
|
||||||
max-width: 100%;
|
|
||||||
border-radius: .2em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
vn-label-value:first-of-type section{
|
|
||||||
margin-top: 0.6em;
|
|
||||||
}
|
|
||||||
vn-fetched-tags vn-horizontal{
|
|
||||||
margin-top: 0.9em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vn-table {
|
vn-table {
|
||||||
img {
|
img {
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
|
|
@ -36,15 +36,21 @@
|
||||||
<vn-td number>
|
<vn-td number>
|
||||||
<span ng-click="$ctrl.showDescriptor($event, row.itemFk)"
|
<span ng-click="$ctrl.showDescriptor($event, row.itemFk)"
|
||||||
class="link">
|
class="link">
|
||||||
{{row.itemFk | zeroFill:6}}
|
{{::row.itemFk | zeroFill:6}}
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td expand><vn-fetched-tags max-length="6" item="row.item"/></vn-td>
|
<vn-td expand>
|
||||||
<vn-td>{{row.warehouse.name}}</vn-td>
|
<vn-fetched-tags
|
||||||
<vn-td>{{row.shipped | date: 'dd/MM/yyyy'}}</vn-td>
|
max-length="6"
|
||||||
<vn-td number>{{row.quantity}}</vn-td>
|
item="::row.item"
|
||||||
|
title="::row.item.name">
|
||||||
|
</vn-fetched-tags>
|
||||||
|
</vn-td>
|
||||||
|
<vn-td>{{::row.warehouse.name}}</vn-td>
|
||||||
|
<vn-td>{{::row.shipped | date: 'dd/MM/yyyy'}}</vn-td>
|
||||||
|
<vn-td number>{{::row.quantity}}</vn-td>
|
||||||
<vn-td number>
|
<vn-td number>
|
||||||
{{row.price | currency: 'EUR':2}}
|
{{::row.price | currency: 'EUR':2}}
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td shrink ng-if="!$ctrl.order.isConfirmed">
|
<vn-td shrink ng-if="!$ctrl.order.isConfirmed">
|
||||||
<vn-icon-button
|
<vn-icon-button
|
||||||
|
|
|
@ -65,10 +65,16 @@
|
||||||
<span
|
<span
|
||||||
ng-click="$ctrl.showDescriptor($event, row.itemFk)"
|
ng-click="$ctrl.showDescriptor($event, row.itemFk)"
|
||||||
class="link">
|
class="link">
|
||||||
{{row.itemFk | zeroFill:6}}
|
{{::row.itemFk | zeroFill:6}}
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td expand><vn-fetched-tags max-length="6" item="row.item"/></vn-td>
|
<vn-td expand>
|
||||||
|
<vn-fetched-tags
|
||||||
|
max-length="6"
|
||||||
|
item="::row.item"
|
||||||
|
title="::row.item.name">
|
||||||
|
</vn-fetched-tags>
|
||||||
|
</vn-td>
|
||||||
<vn-td number>{{::row.quantity}}</vn-td>
|
<vn-td number>{{::row.quantity}}</vn-td>
|
||||||
<vn-td number>{{::row.price | currency: 'EUR':2}}</vn-td>
|
<vn-td number>{{::row.price | currency: 'EUR':2}}</vn-td>
|
||||||
<vn-td number>{{::row.quantity * row.price | currency: 'EUR':2}}</vn-td>
|
<vn-td number>{{::row.quantity * row.price | currency: 'EUR':2}}</vn-td>
|
||||||
|
|
|
@ -38,7 +38,13 @@
|
||||||
{{::row.itemFk}}
|
{{::row.itemFk}}
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td><vn-fetched-tags max-length="6" item="row.item"/></vn-td>
|
<vn-td expand>
|
||||||
|
<vn-fetched-tags
|
||||||
|
max-length="6"
|
||||||
|
item="::row.item"
|
||||||
|
title="::row.item.name">
|
||||||
|
</vn-fetched-tags>
|
||||||
|
</vn-td>
|
||||||
<vn-td number>{{::row.quantity}}</vn-td>
|
<vn-td number>{{::row.quantity}}</vn-td>
|
||||||
<vn-td number>{{::row.volume | number:3}}</vn-td>
|
<vn-td number>{{::row.volume | number:3}}</vn-td>
|
||||||
</vn-tr>
|
</vn-tr>
|
||||||
|
|
|
@ -48,7 +48,11 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td rowspan="{{::sale.components.length + 1}}">
|
<td rowspan="{{::sale.components.length + 1}}">
|
||||||
<vn-fetched-tags max-length="6" item="sale.item"/>
|
<vn-fetched-tags
|
||||||
|
max-length="6"
|
||||||
|
item="::sale.item"
|
||||||
|
title="::sale.concept">
|
||||||
|
</vn-fetched-tags>
|
||||||
</td>
|
</td>
|
||||||
<td rowspan="{{::sale.components.length + 1}}" number>
|
<td rowspan="{{::sale.components.length + 1}}" number>
|
||||||
{{::sale.quantity}}
|
{{::sale.quantity}}
|
||||||
|
|
|
@ -15,7 +15,13 @@
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr ng-repeat="sale in $ctrl.ticket.sale.items track by sale.id">
|
<tr ng-repeat="sale in $ctrl.ticket.sale.items track by sale.id">
|
||||||
<td number>{{("000000"+sale.itemFk).slice(-6)}}</td>
|
<td number>{{("000000"+sale.itemFk).slice(-6)}}</td>
|
||||||
<td><vn-fetched-tags max-length="6" item="sale.item"/></td>
|
<td expand>
|
||||||
|
<vn-fetched-tags
|
||||||
|
max-length="6"
|
||||||
|
item="::sale.item"
|
||||||
|
title="::sale.concept">
|
||||||
|
</vn-fetched-tags>
|
||||||
|
</td>
|
||||||
<td number>{{::sale.quantity}}</td>
|
<td number>{{::sale.quantity}}</td>
|
||||||
<td number>{{::sale.price | currency: 'EUR': 2}}</td>
|
<td number>{{::sale.price | currency: 'EUR': 2}}</td>
|
||||||
<td number>{{::sale.component.newPrice | currency: 'EUR': 2}}</td>
|
<td number>{{::sale.component.newPrice | currency: 'EUR': 2}}</td>
|
||||||
|
|
|
@ -30,10 +30,16 @@
|
||||||
<span
|
<span
|
||||||
ng-click="$ctrl.showDescriptor($event, sale.itemFk)"
|
ng-click="$ctrl.showDescriptor($event, sale.itemFk)"
|
||||||
class="link">
|
class="link">
|
||||||
{{sale.itemFk | zeroFill:6}}
|
{{::sale.itemFk | zeroFill:6}}
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td><vn-fetched-tags max-length="6" item="sale.item"/></vn-td>
|
<vn-td expand>
|
||||||
|
<vn-fetched-tags
|
||||||
|
max-length="6"
|
||||||
|
item="::sale.item"
|
||||||
|
title="::sale.concept">
|
||||||
|
</vn-fetched-tags>
|
||||||
|
</vn-td>
|
||||||
<vn-td number>{{::sale.quantity}}</vn-td>
|
<vn-td number>{{::sale.quantity}}</vn-td>
|
||||||
</vn-tr>
|
</vn-tr>
|
||||||
</vn-tbody>
|
</vn-tbody>
|
||||||
|
|
|
@ -37,7 +37,13 @@
|
||||||
{{sale.itemFk | zeroFill:6}}
|
{{sale.itemFk | zeroFill:6}}
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td><vn-fetched-tags max-length="6" item="sale.item"/></vn-td>
|
<vn-td expand>
|
||||||
|
<vn-fetched-tags
|
||||||
|
max-length="6"
|
||||||
|
item="::sale.item"
|
||||||
|
title="::sale.concept">
|
||||||
|
</vn-fetched-tags>
|
||||||
|
</vn-td>
|
||||||
<vn-td>{{::sale.quantity}}</vn-td>
|
<vn-td>{{::sale.quantity}}</vn-td>
|
||||||
<vn-td>{{::sale.originalQuantity}}</vn-td>
|
<vn-td>{{::sale.originalQuantity}}</vn-td>
|
||||||
<vn-td expand>
|
<vn-td expand>
|
||||||
|
|
|
@ -108,7 +108,11 @@
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td expand>
|
<vn-td expand>
|
||||||
<vn-fetched-tags max-length="6" item="sale.tags" title="sale.concept"/>
|
<vn-fetched-tags
|
||||||
|
max-length="6"
|
||||||
|
item="::sale.tags"
|
||||||
|
title="::sale.concept">
|
||||||
|
</vn-fetched-tags>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td ng-if="!$ctrl.isEditable" number>{{sale.quantity}}</vn-td>
|
<vn-td ng-if="!$ctrl.isEditable" number>{{sale.quantity}}</vn-td>
|
||||||
<vn-td ng-if="$ctrl.isEditable" number>
|
<vn-td ng-if="$ctrl.isEditable" number>
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
{{sale.itemFk | zeroFill:6}}
|
{{sale.itemFk | zeroFill:6}}
|
||||||
</span>
|
</span>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td expand><vn-fetched-tags max-length="6" item="sale.item"/></vn-td>
|
<vn-td expand><vn-fetched-tags max-length="6" item="::sale.item" title="::sale.concept"/></vn-td>
|
||||||
<vn-td number>{{::sale.quantity}}</vn-td>
|
<vn-td number>{{::sale.quantity}}</vn-td>
|
||||||
<vn-td number>{{::sale.volume.m3 | number:3}}</vn-td>
|
<vn-td number>{{::sale.volume.m3 | number:3}}</vn-td>
|
||||||
</vn-tr>
|
</vn-tr>
|
||||||
|
|
|
@ -19,10 +19,8 @@ class Controller {
|
||||||
{
|
{
|
||||||
relation: 'user',
|
relation: 'user',
|
||||||
scope: {fields: ['name', 'email']}
|
scope: {fields: ['name', 'email']}
|
||||||
}, {
|
},
|
||||||
relation: 'client',
|
{
|
||||||
scope: {fields: ['fi']}
|
|
||||||
}, {
|
|
||||||
relation: 'sip',
|
relation: 'sip',
|
||||||
scope: {fields: ['extension']}
|
scope: {fields: ['extension']}
|
||||||
}, {
|
}, {
|
||||||
|
|
|
@ -23,9 +23,6 @@
|
||||||
<vn-label-value label="Email"
|
<vn-label-value label="Email"
|
||||||
value="{{$ctrl.worker.user.email}}">
|
value="{{$ctrl.worker.user.email}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
<vn-label-value label="Fiscal identifier"
|
|
||||||
value="{{$ctrl.worker.client.fi}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value label="Department"
|
<vn-label-value label="Department"
|
||||||
value="{{$ctrl.worker.department.department.name}}">
|
value="{{$ctrl.worker.department.department.name}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
|
|
|
@ -17,8 +17,7 @@
|
||||||
"url": "/index?q",
|
"url": "/index?q",
|
||||||
"state": "worker.index",
|
"state": "worker.index",
|
||||||
"component": "vn-worker-index",
|
"component": "vn-worker-index",
|
||||||
"description": "Workers",
|
"description": "Workers"
|
||||||
"acl": ["developer"]
|
|
||||||
}, {
|
}, {
|
||||||
"url" : "/summary",
|
"url" : "/summary",
|
||||||
"state": "worker.card.summary",
|
"state": "worker.card.summary",
|
||||||
|
@ -40,7 +39,8 @@
|
||||||
"description": "Basic data",
|
"description": "Basic data",
|
||||||
"params": {
|
"params": {
|
||||||
"worker": "$ctrl.worker"
|
"worker": "$ctrl.worker"
|
||||||
}
|
},
|
||||||
|
"acl": ["developer"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
|
@ -6,9 +6,6 @@
|
||||||
<vn-label-value label="Id"
|
<vn-label-value label="Id"
|
||||||
value="{{worker.id}}">
|
value="{{worker.id}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
<vn-label-value label="Fiscal identifier"
|
|
||||||
value="{{worker.client.fi}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value label="Email"
|
<vn-label-value label="Email"
|
||||||
value="{{worker.user.email}}">
|
value="{{worker.user.email}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
|
|
|
@ -107,7 +107,7 @@ module.exports = {
|
||||||
format: 'A4',
|
format: 'A4',
|
||||||
border: '1.5cm',
|
border: '1.5cm',
|
||||||
footer: {
|
footer: {
|
||||||
height: '60px',
|
height: '55px',
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
module.exports = {
|
module.exports = {
|
||||||
messages: {
|
messages: {
|
||||||
es: {clientName: 'Nombre cliente'},
|
es: {},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- Title block end -->
|
<!-- Title block end -->
|
||||||
|
|
||||||
<h1>{{ $t('sections.introduction.title') }},</h1>
|
<p>{{ $t('sections.introduction.title') }},</p>
|
||||||
<p>{{ $t('sections.introduction.description') }}</p>
|
<p>{{ $t('sections.introduction.description') }}</p>
|
||||||
<p>{{ $t('sections.introduction.terms') }}</p>
|
<p>{{ $t('sections.introduction.terms') }}</p>
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- Title block end -->
|
<!-- Title block end -->
|
||||||
|
|
||||||
<h1>{{ $t('sections.introduction.title') }},</h1>
|
<p>{{ $t('sections.introduction.title') }},</p>
|
||||||
<p>{{ $t('sections.introduction.description') }}</p>
|
<p>{{ $t('sections.introduction.description') }}</p>
|
||||||
|
|
||||||
<p>{{ $t('checkExtract') }}</p>
|
<p>{{ $t('checkExtract') }}</p>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- Title block end -->
|
<!-- Title block end -->
|
||||||
|
|
||||||
<h1>{{ $t('sections.introduction.title') }},</h1>
|
<p>{{ $t('sections.introduction.title') }},</p>
|
||||||
<p v-html="`${$t('sections.introduction.description')}:`"></p>
|
<p v-html="`${$t('sections.introduction.description')}:`"></p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
|
@ -24,7 +24,10 @@ module.exports = {
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
files: ['/assets/files/model.ezp'],
|
files: [
|
||||||
|
'/assets/files/model.ezp',
|
||||||
|
'/assets/files/port.png'
|
||||||
|
],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
@ -30,6 +30,9 @@ module.exports = {
|
||||||
'Elige la primera opcion "Setup printer"',
|
'Elige la primera opcion "Setup printer"',
|
||||||
'Haz clic en la primera pestalla "Label Setup"',
|
'Haz clic en la primera pestalla "Label Setup"',
|
||||||
'Modifica la propidad "Paper Height"',
|
'Modifica la propidad "Paper Height"',
|
||||||
|
`Comprueba el puerto de la impresora, botón de le la derecha
|
||||||
|
"SETUP PRINTER" y en la parte derecha, igual como la imagen
|
||||||
|
que adjuntamos, seleccionar la que ponga "USB00x: GODEX"`,
|
||||||
'Haz clic en el boton "Ok"',
|
'Haz clic en el boton "Ok"',
|
||||||
'Haz clic sobre el icono de la impresora',
|
'Haz clic sobre el icono de la impresora',
|
||||||
'Haz clic en "Print"',
|
'Haz clic en "Print"',
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<!-- Header component -->
|
<!-- Header component -->
|
||||||
<report-header :locale="ticket.locale"></report-header>
|
<report-header :locale="ticket.locale"></report-header>
|
||||||
<!-- End header component -->
|
<!-- End header component -->
|
||||||
<section class="main" style="margin-bottom:100px">
|
<section class="main">
|
||||||
<section class="columns">
|
<section class="columns">
|
||||||
<section class="size50">
|
<section class="size50">
|
||||||
<section class="size75">
|
<section class="size75">
|
||||||
|
@ -185,7 +185,6 @@
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
<!-- Footer component -->
|
<!-- Footer component -->
|
||||||
<report-footer id="pageFooter"
|
<report-footer id="pageFooter"
|
||||||
|
|
Loading…
Reference in New Issue