Last fixes & tests passed
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
parent
6a8e1bf6b5
commit
6c14743017
|
@ -5,11 +5,11 @@ export default {
|
|||
userMenuButton: '#user',
|
||||
logoutButton: '#logout',
|
||||
applicationsMenuVisible: '.modules-menu',
|
||||
clientsButton: '.modules-menu > li[ui-sref="client.index"]',
|
||||
itemsButton: '.modules-menu > li[ui-sref="item.index"]',
|
||||
ticketsButton: '.modules-menu > li[ui-sref="ticket.index"]',
|
||||
invoiceOutButton: '.modules-menu > li[ui-sref="invoiceOut.index"]',
|
||||
claimsButton: '.modules-menu > li[ui-sref="claim.index"]',
|
||||
clientsButton: '.modules-menu [ui-sref="client.index"]',
|
||||
itemsButton: '.modules-menu [ui-sref="item.index"]',
|
||||
ticketsButton: '.modules-menu [ui-sref="ticket.index"]',
|
||||
invoiceOutButton: '.modules-menu [ui-sref="invoiceOut.index"]',
|
||||
claimsButton: '.modules-menu [ui-sref="claim.index"]',
|
||||
returnToModuleIndexButton: 'a[ui-sref="order.index"]',
|
||||
homeButton: 'vn-topbar > div.side.start > a',
|
||||
userLocalWarehouse: '.user-popover vn-autocomplete[ng-model="$ctrl.localWarehouseFk"]',
|
||||
|
@ -56,8 +56,8 @@ export default {
|
|||
cancelButton: 'vn-button[href="#!/client/index"]'
|
||||
},
|
||||
clientDescriptor: {
|
||||
moreMenu: 'vn-client-descriptor vn-icon-menu[icon=more_vert]',
|
||||
simpleTicketButton: '.vn-drop-down.shown li[name="Simple ticket"]'
|
||||
moreMenu: 'vn-client-descriptor vn-icon-button[icon=more_vert]',
|
||||
simpleTicketButton: '.vn-menu [name="simpleTicket"]'
|
||||
},
|
||||
clientBasicData: {
|
||||
basicDataButton: 'vn-left-menu a[ui-sref="client.card.basicData"]',
|
||||
|
@ -241,14 +241,14 @@ export default {
|
|||
},
|
||||
itemDescriptor: {
|
||||
goBackToModuleIndexButton: 'vn-item-descriptor a[href="#!/item/index"]',
|
||||
moreMenu: 'vn-item-descriptor vn-icon-menu[icon=more_vert]',
|
||||
moreMenuRegularizeButton: '.vn-drop-down.shown li[name="Regularize stock"]',
|
||||
moreMenu: 'vn-item-descriptor vn-icon-button[icon=more_vert]',
|
||||
moreMenuRegularizeButton: '.vn-menu [name="regularizeStock"]',
|
||||
regularizeQuantity: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.quantity"]',
|
||||
regularizeWarehouse: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.warehouseFk"]',
|
||||
editButton: 'vn-item-descriptor vn-float-button[icon="edit"]',
|
||||
regularizeSaveButton: '.vn-dialog.shown tpl-buttons > button',
|
||||
inactiveIcon: 'vn-item-descriptor vn-icon[icon="icon-unavailable"]',
|
||||
navigateBackToIndex: 'vn-item-descriptor vn-icon[icon="chevron_left"]'
|
||||
navigateBackToIndex: 'vn-item-descriptor [name="goToModuleIndex"]'
|
||||
},
|
||||
itemRequest: {
|
||||
firstRequestItemID: 'vn-item-request vn-tbody > vn-tr:nth-child(1) > vn-td-editable:nth-child(7)',
|
||||
|
@ -378,7 +378,7 @@ export default {
|
|||
topbarSearch: 'vn-searchbar',
|
||||
advancedSearchButton: 'vn-ticket-search-panel button[type=submit]',
|
||||
searchButton: 'vn-searchbar vn-icon[icon="search"]',
|
||||
moreMenu: 'vn-ticket-index vn-icon-menu[icon=more_vert]',
|
||||
moreMenu: 'vn-ticket-index vn-icon-button[icon=more_vert]',
|
||||
sixthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tr:nth-child(6)',
|
||||
weeklyTicket: 'vn-ticket-weekly-index vn-table > div > vn-tbody > vn-tr',
|
||||
firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]',
|
||||
|
@ -397,13 +397,13 @@ export default {
|
|||
idLabelValue: 'vn-ticket-descriptor vn-label-value[label="Id"]',
|
||||
stateLabelValue: 'vn-ticket-descriptor vn-label-value[label="State"]',
|
||||
goBackToModuleIndexButton: 'vn-ticket-descriptor a[ui-sref="ticket.index"]',
|
||||
moreMenu: 'vn-ticket-descriptor vn-icon-menu[icon=more_vert]',
|
||||
moreMenuAddStowaway: '.vn-drop-down.shown li[name="Add stowaway"]',
|
||||
moreMenuDeleteStowawayButton: '.vn-drop-down.shown li[name="Delete stowaway"]',
|
||||
moreMenuAddToTurn: '.vn-drop-down.shown li[name="Add turn"]',
|
||||
moreMenuDeleteTicket: '.vn-drop-down.shown li[name="Delete ticket"]',
|
||||
moreMenuMakeInvoice: '.vn-drop-down.shown li[name="Make invoice"]',
|
||||
moreMenuChangeShippedHour: '.vn-drop-down.shown li[name="Change shipped hour"]',
|
||||
moreMenu: 'vn-ticket-descriptor vn-icon-button[icon=more_vert]',
|
||||
moreMenuAddStowaway: '.vn-menu [name="addStowaway"]',
|
||||
moreMenuDeleteStowawayButton: '.vn-menu [name="deleteStowaway"]',
|
||||
moreMenuAddToTurn: '.vn-menu [name="addTurn"]',
|
||||
moreMenuDeleteTicket: '.vn-menu [name="deleteTicket"]',
|
||||
moreMenuMakeInvoice: '.vn-menu [name="makeInvoice"]',
|
||||
moreMenuChangeShippedHour: '.vn-menu [name="changeShipped"]',
|
||||
changeShippedHourDialog: '.vn-dialog.shown',
|
||||
changeShippedHour: '.vn-dialog.shown vn-input-time[ng-model="$ctrl.newShipped"]',
|
||||
addStowawayDialogFirstTicket: '.vn-dialog.shown vn-table vn-tbody vn-tr',
|
||||
|
@ -412,7 +412,7 @@ export default {
|
|||
saturdayButton: '.vn-popup.shown vn-tool-bar > vn-button:nth-child(6)',
|
||||
acceptDeleteButton: '.vn-dialog.shown button[response="accept"]',
|
||||
acceptChangeHourButton: '.vn-dialog.shown button[response="accept"]',
|
||||
descriptorDeliveryDate: 'vn-ticket-descriptor > div > div.body > div.attributes > vn-label-value:nth-child(6) > section > span',
|
||||
descriptorDeliveryDate: 'vn-ticket-descriptor slot-body > .attributes > vn-label-value:nth-child(3) > section > span',
|
||||
acceptInvoiceOutButton: '.vn-confirm.shown button[response="accept"]',
|
||||
acceptDeleteStowawayButton: '.vn-dialog.shown button[response="accept"]'
|
||||
},
|
||||
|
@ -444,7 +444,7 @@ export default {
|
|||
saleDescriptorPopoverSummaryButton: '.vn-popover.shown vn-item-descriptor a[ui-sref="item.card.summary({id: $ctrl.item.id})"]',
|
||||
descriptorItemDiaryButton: 'vn-item-descriptor .quicklinks.ng-scope > vn-horizontal > a > vn-icon > i',
|
||||
newItemFromCatalogButton: 'vn-ticket-sale vn-float-button[icon="add"]',
|
||||
newItemButton: 'vn-ticket-sale > vn-vertical > vn-card > vn-vertical > vn-one > vn-icon-button > button > vn-icon > i',
|
||||
newItemButton: 'vn-ticket-sale vn-card vn-icon-button[icon="add_circle"]',
|
||||
moreMenu: 'vn-ticket-sale vn-tool-bar > vn-button-menu[vn-id="more-button"] > div > button',
|
||||
moreMenuCreateClaim: '.vn-drop-down.shown li[name="Add claim"]',
|
||||
moreMenuReserve: '.vn-drop-down.shown li[name="Mark as reserved"]',
|
||||
|
@ -558,8 +558,8 @@ export default {
|
|||
searchButton: 'vn-searchbar vn-icon[icon="search"]'
|
||||
},
|
||||
claimDescriptor: {
|
||||
moreMenu: 'vn-claim-descriptor vn-icon-menu[icon=more_vert]',
|
||||
moreMenuDeleteClaim: '.vn-drop-down.shown li[name="Delete claim"]',
|
||||
moreMenu: 'vn-claim-descriptor vn-icon-button[icon=more_vert]',
|
||||
moreMenuDeleteClaim: '.vn-menu [name="deleteClaim"]',
|
||||
acceptDeleteClaim: '.vn-confirm.shown button[response="accept"]'
|
||||
},
|
||||
claimSummary: {
|
||||
|
@ -571,7 +571,7 @@ export default {
|
|||
itemDescriptorPopover: '.vn-popover.shown vn-item-descriptor',
|
||||
itemDescriptorPopoverItemDiaryButton: '.vn-popover.shown vn-item-descriptor a[href="#!/item/2/diary"]',
|
||||
firstDevelopmentWorker: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(5) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(4) > span',
|
||||
firstDevelopmentWorkerGoToClientButton: '.vn-popover.shown vn-worker-descriptor vn-quick-links > a[href="#!/client/21/summary"]',
|
||||
firstDevelopmentWorkerGoToClientButton: '.vn-popover.shown vn-worker-descriptor .quicklinks a[href="#!/client/21/summary"]',
|
||||
firstActionTicketId: 'vn-claim-summary > vn-card > vn-horizontal > vn-auto:nth-child(6) vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span',
|
||||
firstActionTicketDescriptor: '.vn-popover.shown vn-ticket-descriptor'
|
||||
},
|
||||
|
@ -782,7 +782,7 @@ export default {
|
|||
weekWorkedHours: 'vn-worker-time-control vn-side-menu vn-label-value > section > span',
|
||||
nextMonthButton: 'vn-worker-time-control vn-side-menu vn-calendar vn-button[icon=keyboard_arrow_right]',
|
||||
secondWeekDay: 'vn-worker-time-control vn-side-menu vn-calendar .day:nth-child(8) > .day-number',
|
||||
navigateBackToIndex: 'vn-worker-descriptor vn-icon[icon="chevron_left"]',
|
||||
navigateBackToIndex: 'vn-worker-descriptor [name="goToModuleIndex"]',
|
||||
acceptDeleteDialog: '.vn-confirm.shown button[response="accept"]'
|
||||
},
|
||||
invoiceOutIndex: {
|
||||
|
@ -791,10 +791,10 @@ export default {
|
|||
searchResult: 'vn-invoice-out-index vn-card > vn-table > div > vn-tbody > a.vn-tr',
|
||||
},
|
||||
invoiceOutDescriptor: {
|
||||
moreMenu: 'vn-invoice-out-descriptor vn-icon-menu[icon=more_vert]',
|
||||
moreMenuDeleteInvoiceOut: '.vn-drop-down.shown li[name="Delete Invoice"]',
|
||||
moreMenuBookInvoiceOut: '.vn-drop-down.shown li[name="Book invoice"]',
|
||||
moreMenuShowInvoiceOutPdf: '.vn-drop-down.shown li[name="Show invoice PDF"]',
|
||||
moreMenu: 'vn-invoice-out-descriptor vn-icon-button[icon=more_vert]',
|
||||
moreMenuDeleteInvoiceOut: '.vn-menu [name="deleteInvoice"]',
|
||||
moreMenuBookInvoiceOut: '.vn-menu [name="bookInvoice"]',
|
||||
moreMenuShowInvoiceOutPdf: '.vn-menu [name="showInvoicePdf"]',
|
||||
acceptDeleteButton: '.vn-confirm.shown button[response="accept"]',
|
||||
acceptBookingButton: '.vn-confirm.shown button[response="accept"]'
|
||||
},
|
||||
|
@ -846,8 +846,8 @@ export default {
|
|||
confirmed: 'vn-entry-summary vn-check[label="Confirmed"]',
|
||||
},
|
||||
entryDescriptor: {
|
||||
agency: 'vn-entry-descriptor div.body vn-label-value:nth-child(3) span',
|
||||
travelsQuicklink: 'vn-entry-descriptor vn-quick-links > a:nth-child(1)',
|
||||
entriesQuicklink: 'vn-entry-descriptor vn-quick-links > a:nth-child(2)'
|
||||
agency: 'vn-entry-descriptor div.body vn-label-value:nth-child(2) span',
|
||||
travelsQuicklink: 'vn-entry-descriptor .quicklinks > :nth-child(1) a',
|
||||
entriesQuicklink: 'vn-entry-descriptor .quicklinks > :nth-child(2) a'
|
||||
}
|
||||
};
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
<tpl-title translate>
|
||||
{{::$ctrl.message}}
|
||||
</tpl-title>
|
||||
<tpl-body translate>
|
||||
{{::$ctrl.question}}
|
||||
</tpl-body>
|
||||
|
|
|
@ -8,7 +8,6 @@ ngModule.vnComponent('vnConfirm', {
|
|||
slotTemplate: require('./confirm.html'),
|
||||
controller: Confirm,
|
||||
bindings: {
|
||||
question: '@',
|
||||
message: '@?'
|
||||
question: '@'
|
||||
}
|
||||
});
|
||||
|
|
|
@ -12,8 +12,11 @@
|
|||
</vn-button>
|
||||
<form>
|
||||
<h6
|
||||
ng-if="::$ctrl.$transclude.isSlotFilled('title')"
|
||||
ng-if="::$ctrl.message || $ctrl.$transclude.isSlotFilled('title')"
|
||||
ng-transclude="title">
|
||||
<tpl-title translate>
|
||||
{{$ctrl.message}}
|
||||
</tpl-title>
|
||||
</h6>
|
||||
<div
|
||||
class="body"
|
||||
|
|
|
@ -140,6 +140,7 @@ ngModule.vnComponent('vnDialog', {
|
|||
buttons: '?tplButtons'
|
||||
},
|
||||
bindings: {
|
||||
message: '@?',
|
||||
onResponse: '&?',
|
||||
onAccept: '&?'
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ vn-icon {
|
|||
& > i,
|
||||
& > i.material-icons {
|
||||
display: block;
|
||||
}
|
||||
& > i.material-icons {
|
||||
font-size: inherit;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,27 +1,11 @@
|
|||
@import "./effects";
|
||||
/*
|
||||
ul.menu {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
padding-top: $spacing-md;
|
||||
margin: 0;
|
||||
font-size: inherit;
|
||||
|
||||
& > li > a {
|
||||
@extend %clickable;
|
||||
display: block;
|
||||
color: inherit;
|
||||
padding: 9px 32px;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
vn-list,
|
||||
.vn-list {
|
||||
display: block;
|
||||
max-width: $width-sm;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
padding: $spacing-sm 0;
|
||||
list-style-type: none;
|
||||
|
||||
vn-list,
|
||||
|
@ -32,6 +16,8 @@ vn-list,
|
|||
}
|
||||
}
|
||||
&.separated {
|
||||
padding: 0;
|
||||
|
||||
vn-item,
|
||||
.vn-item {
|
||||
border-bottom: $border-thin-light;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import ngModule from '../../module';
|
||||
import Popup from '../popup';
|
||||
import template from './index.html';
|
||||
import isMobile from '../../lib/is-mobile';
|
||||
import './style.scss';
|
||||
|
||||
|
@ -17,7 +16,6 @@ export default class Popover extends Popup {
|
|||
constructor(...args) {
|
||||
super(...args);
|
||||
this.displayMode = isMobile ? 'centered' : 'relative';
|
||||
this.template = template;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -48,7 +46,6 @@ export default class Popover extends Popup {
|
|||
// Bug #2147 Popover loses parent location
|
||||
set parent(value) {
|
||||
this.__parent = value;
|
||||
|
||||
if (!value) return;
|
||||
|
||||
const parentRect = value.getBoundingClientRect();
|
||||
|
@ -119,3 +116,7 @@ export default class Popover extends Popup {
|
|||
ngModule.vnComponent('vnPopover', {
|
||||
controller: Popover
|
||||
});
|
||||
|
||||
ngModule.run(['$compile', function($compile) {
|
||||
Popover.prototype.contentLinkFn = $compile(require('./index.html'));
|
||||
}]);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import ngModule from '../../module';
|
||||
import Component from '../../lib/component';
|
||||
import template from './index.html';
|
||||
import './style.scss';
|
||||
|
||||
/**
|
||||
|
@ -11,7 +10,6 @@ export default class Popup extends Component {
|
|||
super(...args);
|
||||
this._shown = false;
|
||||
this.displayMode = 'centered';
|
||||
this.template = template;
|
||||
}
|
||||
|
||||
$onDestroy() {
|
||||
|
@ -45,11 +43,11 @@ export default class Popup extends Component {
|
|||
}
|
||||
|
||||
this.$contentScope = this.$.$new();
|
||||
|
||||
let linkFn = this.$compile(this.template);
|
||||
this.popup = linkFn(this.$contentScope, null,
|
||||
this.contentLinkFn(
|
||||
this.$contentScope,
|
||||
element => this.popup = element[0],
|
||||
{parentBoundTranscludeFn: this.$transclude}
|
||||
)[0];
|
||||
);
|
||||
|
||||
this.windowEl = this.popup.querySelector('.window');
|
||||
this.windowEl.focus();
|
||||
|
@ -131,3 +129,7 @@ ngModule.vnComponent('vnPopup', {
|
|||
},
|
||||
installClasses: false
|
||||
});
|
||||
|
||||
ngModule.run(['$compile', function($compile) {
|
||||
Popup.prototype.contentLinkFn = $compile(require('./index.html'));
|
||||
}]);
|
||||
|
|
|
@ -5,6 +5,7 @@ vn-spinner {
|
|||
min-height: 28px;
|
||||
min-width: 28px;
|
||||
color: $color-main;
|
||||
overflow: hidden;
|
||||
|
||||
& > .loader {
|
||||
position: relative;
|
||||
|
|
|
@ -9,12 +9,12 @@ function vnAcl(aclService) {
|
|||
priority: -1,
|
||||
link: function(_, $element, $attrs) {
|
||||
acls = $attrs.vnAcl.split(',').map(i => i.trim());
|
||||
|
||||
if (acls[0] == '') return;
|
||||
|
||||
let action = $attrs.vnAclAction || 'disable';
|
||||
|
||||
if (aclService.hasAny(acls)) return;
|
||||
console.log('acls', acls, action);
|
||||
|
||||
if (action === 'disable') {
|
||||
let element = $element[0];
|
||||
|
|
|
@ -6,11 +6,9 @@
|
|||
</vn-icon-button>
|
||||
<vn-dialog
|
||||
class="modal-form"
|
||||
vn-id="uvc">
|
||||
vn-id="uvc"
|
||||
message="Fields to show">
|
||||
<tpl-body>
|
||||
<vn-horizontal class="vn-pa-md header">
|
||||
<h5><span translate>Fields to show</span></h5>
|
||||
</vn-horizontal>
|
||||
<div class="vn-pa-md">
|
||||
<vn-horizontal ng-repeat="field in fields">
|
||||
<vn-check
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
import ngModule from '../module';
|
||||
|
||||
/**
|
||||
* Formats the value as id.
|
||||
*
|
||||
* @return {String} The formated value
|
||||
*/
|
||||
export default function id() {
|
||||
return function(value) {
|
||||
if (value == null || value === '')
|
||||
return '';
|
||||
return `#${value}`;
|
||||
};
|
||||
}
|
||||
ngModule.filter('id', id);
|
|
@ -4,3 +4,4 @@ import './dash-if-empty';
|
|||
import './percentage';
|
||||
import './currency';
|
||||
import './zero-fill';
|
||||
import './id';
|
||||
|
|
|
@ -87,7 +87,7 @@ export default class Component extends EventEmitter {
|
|||
* Fills a named transclude slot.
|
||||
*
|
||||
* @param {String} slot The trasnclude slot name
|
||||
* @param {JQElement|String} template The slot name
|
||||
* @param {JQElement|String} template The slot template
|
||||
*/
|
||||
fillSlot(slot, template) {
|
||||
const linkFn = this.$compile(template);
|
||||
|
@ -196,6 +196,7 @@ runFn.$inject = [
|
|||
'vnApp',
|
||||
'vnToken',
|
||||
'vnConfig',
|
||||
'vnModules',
|
||||
'aclService'
|
||||
];
|
||||
|
||||
|
|
|
@ -10,15 +10,10 @@ export default class Modules {
|
|||
});
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.modules = null;
|
||||
}
|
||||
|
||||
get() {
|
||||
if (this.modules)
|
||||
return this.modules;
|
||||
|
||||
fetch() {
|
||||
const map = {};
|
||||
const modules = [];
|
||||
|
||||
for (let mod of this.$window.routes) {
|
||||
if (!mod || !mod.routes) continue;
|
||||
|
||||
|
@ -32,12 +27,15 @@ export default class Modules {
|
|||
if (res) keyBind = res.key.toUpperCase();
|
||||
}
|
||||
|
||||
modules.push({
|
||||
const module = {
|
||||
name: mod.name || mod.module,
|
||||
icon: mod.icon || null,
|
||||
route,
|
||||
keyBind
|
||||
});
|
||||
};
|
||||
|
||||
modules.push(module);
|
||||
map[mod.module] = mod;
|
||||
}
|
||||
|
||||
const sortedModules = modules.sort((a, b) => {
|
||||
|
@ -46,9 +44,23 @@ export default class Modules {
|
|||
return translatedNameA.localeCompare(translatedNameB);
|
||||
});
|
||||
this.modules = sortedModules;
|
||||
this.map = map;
|
||||
}
|
||||
|
||||
reset() {
|
||||
this.modules = null;
|
||||
this.map = null;
|
||||
}
|
||||
|
||||
get() {
|
||||
if (!this.modules) this.fetch();
|
||||
return this.modules;
|
||||
}
|
||||
|
||||
getMap() {
|
||||
if (!this.map) this.fetch();
|
||||
return this.map;
|
||||
}
|
||||
}
|
||||
Modules.$inject = ['aclService', '$window', '$translate'];
|
||||
|
||||
|
|
|
@ -39,3 +39,8 @@
|
|||
/* Support for IE. */
|
||||
font-feature-settings: 'liga';
|
||||
}
|
||||
|
||||
[class^="icon-"] {
|
||||
padding: .1em;
|
||||
font-size: .833em;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ html [vn-auto], vn-auto, .vn-auto {
|
|||
flex: initial;
|
||||
}
|
||||
html [vn-none], vn-none, .vn-none {
|
||||
flex: none 0 1px;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
html [vn-one], vn-one, .vn-one {
|
||||
flex: 1;
|
||||
|
|
|
@ -6,21 +6,22 @@ export default class DescriptorPopover extends Popover {
|
|||
show(parent, id) {
|
||||
super.show(parent);
|
||||
|
||||
const descriptor = this.content.querySelector('.vn-descriptor');
|
||||
descriptor.$ctrl.load(id)
|
||||
.then(() => {
|
||||
this.$.$applyAsync(() => this.relocate());
|
||||
});
|
||||
this.id = id;
|
||||
this.descriptor = this.content.querySelector('.vn-descriptor').$ctrl;
|
||||
this.descriptor.load(id)
|
||||
.then(() => this.$.$applyAsync(() => this.relocate()));
|
||||
}
|
||||
|
||||
hide() {
|
||||
super.hide();
|
||||
this.id = null;
|
||||
this.descriptor = null;
|
||||
}
|
||||
}
|
||||
|
||||
ngModule.vnComponent('vnDescriptorPopover', {
|
||||
slotTemplate: require('./index.html'),
|
||||
controller: DescriptorPopover,
|
||||
bindings: {
|
||||
id: '<?',
|
||||
entity: '<?',
|
||||
},
|
||||
transclude: {
|
||||
descriptor: '?slotDescriptor'
|
||||
}
|
||||
|
|
|
@ -1,16 +1,11 @@
|
|||
@import "variables";
|
||||
|
||||
.vn-descriptor-popover {
|
||||
.content > vn-spinner {
|
||||
padding: $spacing-md;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
height: 45px;
|
||||
}
|
||||
.descriptor-wrapper {
|
||||
vn-descriptor-content > .descriptor {
|
||||
width: 260px;
|
||||
}
|
||||
.vn-descriptor > .header > a:first-child {
|
||||
|
||||
& > .header > a:first-child {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,12 +2,15 @@
|
|||
ng-if="$ctrl.descriptor.canceler"
|
||||
enable="true">
|
||||
</vn-spinner>
|
||||
<div ng-if="$ctrl.descriptor.entity">
|
||||
<div
|
||||
ng-if="!$ctrl.descriptor.canceler"
|
||||
class="descriptor">
|
||||
<div class="header">
|
||||
<a
|
||||
translate-attr="{title: 'Return to module index'}"
|
||||
ui-sref="{{::$ctrl.module}}.index">
|
||||
<vn-icon icon="chevron_left"></vn-icon>
|
||||
translate-attr="{title: 'Go to module index'}"
|
||||
ui-sref="{{::$ctrl.module}}.index"
|
||||
name="goToModuleIndex">
|
||||
<vn-icon icon="{{$ctrl.moduleMap[$ctrl.module].icon}}"></vn-icon>
|
||||
</a>
|
||||
<a
|
||||
translate-attr="{title: 'Preview'}"
|
||||
|
@ -15,12 +18,23 @@
|
|||
<vn-icon icon="desktop_windows"></vn-icon>
|
||||
</a>
|
||||
<vn-icon-button
|
||||
ng-class="::{invisible: !$ctrl.$transclude.isSlotFilled('menu')}"
|
||||
icon="more_vert"
|
||||
vn-popover="menu">
|
||||
</vn-icon-button>
|
||||
</div>
|
||||
<vn-menu vn-id="menu">
|
||||
<div ng-transclude="menu"></div>
|
||||
<vn-list ng-transclude="menu"></vn-list>
|
||||
</vn-menu>
|
||||
<div ng-transclude="before"></div>
|
||||
<div class="body">
|
||||
<div class="top">
|
||||
<h5>{{$ctrl.description}}</h5>
|
||||
<div class="text-secondary">
|
||||
{{$ctrl.descriptor.id | id}}
|
||||
</div>
|
||||
</div>
|
||||
<div ng-transclude="body"></div>
|
||||
</div>
|
||||
<div ng-transclude="after"></div>
|
||||
</div>
|
|
@ -3,16 +3,18 @@ import Component from 'core/lib/component';
|
|||
import './style.scss';
|
||||
import './quick-link';
|
||||
|
||||
/**
|
||||
* Small card with basing entity information and actions.
|
||||
*/
|
||||
export default class Descriptor extends Component {
|
||||
$postLink() {
|
||||
const content = this.element.querySelector('vn-descriptor-content');
|
||||
if (!content) throw new Error('Directive vnDescriptorContent not found');
|
||||
|
||||
if (content) {
|
||||
angular.element(content)
|
||||
.controller('vnDescriptorContent')
|
||||
.descriptor = this;
|
||||
}
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this._id;
|
||||
|
@ -114,13 +116,26 @@ ngModule.vnComponent('vnDescriptor', {
|
|||
}
|
||||
});
|
||||
|
||||
export class DescriptorContent {
|
||||
constructor($transclude, vnModules) {
|
||||
this.$transclude = $transclude;
|
||||
this.moduleMap = vnModules.getMap();
|
||||
}
|
||||
}
|
||||
DescriptorContent.$inject = ['$transclude', 'vnModules'];
|
||||
|
||||
ngModule.component('vnDescriptorContent', {
|
||||
template: require('./index.html'),
|
||||
controller: DescriptorContent,
|
||||
bindings: {
|
||||
module: '@'
|
||||
module: '@',
|
||||
description: '<',
|
||||
descriptor: '<?'
|
||||
},
|
||||
transclude: {
|
||||
body: 'slotBody',
|
||||
before: '?slotBefore',
|
||||
after: '?slotAfter',
|
||||
menu: '?slotMenu'
|
||||
}
|
||||
});
|
||||
|
|
|
@ -2,7 +2,14 @@
|
|||
@import "./effects";
|
||||
@import "./variables";
|
||||
|
||||
.vn-descriptor > vn-descriptor-content {
|
||||
vn-descriptor-content {
|
||||
display: block;
|
||||
|
||||
& > vn-spinner {
|
||||
display: block;
|
||||
height: 40px;
|
||||
padding: $spacing-md;
|
||||
}
|
||||
& > div {
|
||||
display: block;
|
||||
box-shadow: 0 1px 3px $color-shadow;
|
||||
|
@ -15,13 +22,16 @@
|
|||
color: $color-font-dark;
|
||||
|
||||
& > * {
|
||||
@extend %clickable;
|
||||
display: flex;
|
||||
min-width: 45px;
|
||||
height: 45px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
& > a,
|
||||
& > vn-icon-button {
|
||||
@extend %clickable;
|
||||
color: inherit;
|
||||
|
||||
& > vn-icon {
|
||||
|
@ -32,27 +42,34 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
& > div > slot-body {
|
||||
& > .body {
|
||||
display: block;
|
||||
padding: $spacing-sm;
|
||||
padding: $spacing-md;
|
||||
|
||||
& > .top {
|
||||
padding-bottom: $spacing-sm;
|
||||
|
||||
& > * {
|
||||
padding: $spacing-sm;
|
||||
}
|
||||
& > .attributes > h5 {
|
||||
padding-bottom: $spacing-sm;
|
||||
margin-bottom: 0;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
& > div > slot-body {
|
||||
& > * {
|
||||
padding-bottom: $spacing-md;
|
||||
}
|
||||
& > :last-child {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
& > .icons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0;
|
||||
|
||||
& > vn-icon {
|
||||
padding: $spacing-sm;
|
||||
padding: $spacing-xs $spacing-sm;
|
||||
color: $color-marginal;
|
||||
font-size: 1.5rem;
|
||||
|
||||
|
@ -83,3 +100,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,18 +39,26 @@
|
|||
</vn-icon-button>
|
||||
</div>
|
||||
<vn-menu vn-id="apps-menu">
|
||||
<ul class="modules-menu vn-pa-sm">
|
||||
<li ui-sref="home">
|
||||
<vn-list class="modules-menu">
|
||||
<a class="vn-item" ui-sref="home">
|
||||
<vn-item-section avatar>
|
||||
<vn-icon icon="home"></vn-icon>
|
||||
<span translate>Home</span>
|
||||
</li>
|
||||
<li
|
||||
</vn-item-section>
|
||||
<vn-item-section translate>
|
||||
Home
|
||||
</vn-item-section>
|
||||
</a>
|
||||
<a class="vn-item"
|
||||
ng-repeat="mod in ::$ctrl.modules"
|
||||
ui-sref="{{::mod.route.state}}">
|
||||
<vn-item-section avatar>
|
||||
<vn-icon icon="{{::mod.icon || 'photo'}}"></vn-icon>
|
||||
<span translate>{{::mod.name}}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item-section>
|
||||
<vn-item-section translate>
|
||||
{{::mod.name}}
|
||||
</vn-item-section>
|
||||
</a>
|
||||
</vn-list>
|
||||
</vn-menu>
|
||||
<vn-user-popover
|
||||
vn-id="user-popover">
|
||||
|
|
|
@ -142,29 +142,6 @@ vn-layout {
|
|||
}
|
||||
}
|
||||
}
|
||||
.vn-popover .modules-menu {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
color: $color-font-dark;
|
||||
|
||||
& > li {
|
||||
@extend %clickable-light;
|
||||
background-color: $color-main;
|
||||
margin-bottom: 9px;
|
||||
padding: 12px;
|
||||
border-radius: 1px;
|
||||
min-width: 128px;
|
||||
white-space: nowrap;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
& > vn-icon {
|
||||
padding-right: 4px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
#user {
|
||||
font-size: 1.5rem;
|
||||
height: auto;
|
||||
|
|
|
@ -3,10 +3,7 @@
|
|||
@import "variables";
|
||||
|
||||
vn-left-menu {
|
||||
& > .vn-list {
|
||||
padding: $spacing-md 0;
|
||||
|
||||
& > li > .vn-item {
|
||||
& > .vn-list > li > .vn-item {
|
||||
& > [side] > vn-icon[icon="keyboard_arrow_down"] {
|
||||
transition: transform 200ms;
|
||||
}
|
||||
|
@ -15,4 +12,3 @@ vn-left-menu {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ Name: Nombre
|
|||
Preview: Vista previa
|
||||
Profile: Perfil
|
||||
Push on applications menu: Para abrir un módulo pulsa en el menú de aplicaciones
|
||||
Return to module index: Volver a la página principal del módulo
|
||||
Go to module index: Ir al índice del módulo
|
||||
What is new: Novedades de la versión
|
||||
Settings: Ajustes
|
||||
|
||||
|
|
|
@ -130,5 +130,6 @@
|
|||
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
|
||||
"Distance must be lesser than 1000": "La distancia debe ser inferior a 1000",
|
||||
"This ticket is deleted": "Este ticket está eliminado",
|
||||
"A travel with this data already exists": "Ya existe un travel con estos datos"
|
||||
"A travel with this data already exists": "Ya existe un travel con estos datos",
|
||||
"AMOUNT_NOT_MATCH_GROUPING": "AMOUNT_NOT_MATCH_GROUPING"
|
||||
}
|
|
@ -1,36 +1,28 @@
|
|||
<vn-descriptor-content module="claim">
|
||||
<vn-descriptor-content
|
||||
module="claim"
|
||||
description="$ctrl.claim.client.name">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li>
|
||||
<a class="vn-item"
|
||||
ui-sref="ticket.create({clientFk: $ctrl.client.id})"
|
||||
translate>
|
||||
Show Pickup order
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
<vn-item
|
||||
ng-click="confirmPickupOrder.show()"
|
||||
translate>
|
||||
Send Pickup order
|
||||
</div>
|
||||
</li>
|
||||
<li vn-acl="salesAssistant">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
vn-acl="salesAssistant"
|
||||
vn-acl-action="remove"
|
||||
ng-click="confirmDeleteClaim.show()"
|
||||
name="deleteClaim"
|
||||
translate>
|
||||
Delete claim
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<h5>{{$ctrl.claim.id}}</h5>
|
||||
<vn-label-value
|
||||
label="Client"
|
||||
value="{{::$ctrl.claim.client.name}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="State"
|
||||
value="{{$ctrl.claim.claimState.description}}">
|
||||
|
@ -76,15 +68,14 @@
|
|||
</slot-body>
|
||||
</vn-descriptor-content>
|
||||
<vn-confirm
|
||||
vn-id="confirm-pickup-order"
|
||||
vn-id="confirmPickupOrder"
|
||||
on-accept="$ctrl.sendPickupOrder()"
|
||||
question="Send Pickup order"
|
||||
message="Are you sure you want to send it?">
|
||||
</vn-confirm>
|
||||
<vn-confirm
|
||||
vn-id="confirm-delete-claim"
|
||||
vn-id="confirmDeleteClaim"
|
||||
on-accept="$ctrl.deleteClaim()"
|
||||
question="Delete claim"
|
||||
message="Are you sure you want to delete this claim?">
|
||||
</vn-confirm>
|
||||
|
||||
|
|
|
@ -81,10 +81,10 @@
|
|||
</a>
|
||||
<!-- Add Lines Dialog -->
|
||||
<vn-dialog vn-id="add-sales" class="modal-form">
|
||||
<tpl-title>
|
||||
<span translate>Claimable sales from ticket</span> {{$ctrl.claim.ticketFk}}
|
||||
</tpl-title>
|
||||
<tpl-body>
|
||||
<vn-horizontal class="header vn-pa-md">
|
||||
<h5><span translate>Claimable sales from ticket</span> {{$ctrl.claim.ticketFk}}</h5>
|
||||
</vn-horizontal>
|
||||
<vn-horizontal class="vn-pa-md">
|
||||
<vn-table>
|
||||
<vn-thead>
|
||||
|
|
|
@ -150,9 +150,9 @@
|
|||
<!-- Create custom agent dialog -->
|
||||
<vn-dialog class="edit"
|
||||
vn-id="customAgent"
|
||||
on-accept="$ctrl.onCustomAgentAccept()">
|
||||
on-accept="$ctrl.onCustomAgentAccept()"
|
||||
message="New customs agent">
|
||||
<tpl-body>
|
||||
<h5 class="vn-py-sm" translate>New customs agent</h5>
|
||||
<vn-horizontal>
|
||||
<vn-textfield vn-one vn-focus
|
||||
label="NIF"
|
||||
|
|
|
@ -198,9 +198,9 @@
|
|||
<!-- Create custom agent dialog -->
|
||||
<vn-dialog class="edit"
|
||||
vn-id="customAgent"
|
||||
on-accept="$ctrl.onCustomAgentAccept()">
|
||||
on-accept="$ctrl.onCustomAgentAccept()"
|
||||
message="New customs agent">
|
||||
<tpl-body>
|
||||
<h5 class="vn-py-sm" translate>New customs agent</h5>
|
||||
<vn-horizontal>
|
||||
<vn-textfield vn-one vn-focus
|
||||
label="NIF"
|
||||
|
|
|
@ -98,9 +98,9 @@
|
|||
<!-- Create bank entity dialog -->
|
||||
<vn-dialog class="edit"
|
||||
vn-id="bankEntityDialog"
|
||||
on-accept="$ctrl.onBankEntityAccept()">
|
||||
on-accept="$ctrl.onBankEntityAccept()"
|
||||
message="New bank entity">
|
||||
<tpl-body>
|
||||
<h5 class="vn-py-sm" translate>New bank entity</h5>
|
||||
<vn-horizontal>
|
||||
<vn-textfield
|
||||
vn-one
|
||||
|
|
|
@ -1,36 +1,26 @@
|
|||
<vn-descriptor-content module="client">
|
||||
<vn-descriptor-content
|
||||
module="client"
|
||||
description="$ctrl.client.name">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li>
|
||||
<a class="vn-item"
|
||||
ui-sref="ticket.create({clientFk: $ctrl.client.id})"
|
||||
name="simpleTicket"
|
||||
translate>
|
||||
Simple ticket
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
<vn-item
|
||||
ng-click="$ctrl.showSMSDialog()"
|
||||
translate>
|
||||
Send SMS
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="consumerReportDialog.show()"
|
||||
translate>
|
||||
Send consumer report
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<h5>{{$ctrl.client.name}}</h5>
|
||||
<vn-label-value
|
||||
label="Id"
|
||||
value="{{$ctrl.client.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Phone"
|
||||
value="{{$ctrl.client.phone | phone}}">
|
||||
|
@ -101,12 +91,9 @@
|
|||
</vn-client-sms>
|
||||
<vn-dialog
|
||||
vn-id="consumerReportDialog"
|
||||
on-accept="$ctrl.onConsumerReportAccept()">
|
||||
on-accept="$ctrl.onConsumerReportAccept()"
|
||||
message="Send consumer report">
|
||||
<tpl-body>
|
||||
<div>
|
||||
<h5 style="text-align: center">
|
||||
<span translate>Send consumer report</span>
|
||||
</h5>
|
||||
<vn-date-picker
|
||||
vn-id="from"
|
||||
vn-one
|
||||
|
@ -120,7 +107,6 @@
|
|||
ng-model="$ctrl.to"
|
||||
label="To date">
|
||||
</vn-date-picker>
|
||||
</div>
|
||||
</tpl-body>
|
||||
<tpl-buttons>
|
||||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<vn-dialog class="edit"
|
||||
vn-id="postcodeDialog"
|
||||
on-open="$ctrl.onOpen()"
|
||||
on-accept="$ctrl.onAccept()">
|
||||
on-accept="$ctrl.onAccept()"
|
||||
message="New postcode">
|
||||
<tpl-body>
|
||||
<h5 class="vn-py-sm" translate>New postcode</h5>
|
||||
<p translate>Please, ensure you put the correct data!</p>
|
||||
<vn-horizontal>
|
||||
<vn-textfield
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"module": "client",
|
||||
"name": "Clients",
|
||||
"icon": "icon-person",
|
||||
"icon": "person",
|
||||
"validations" : true,
|
||||
"dependencies": ["worker", "invoiceOut"],
|
||||
"menus": {
|
||||
"main": [
|
||||
{"state": "client.index", "icon": "icon-person"}
|
||||
{"state": "client.index", "icon": "person"}
|
||||
],
|
||||
"card": [
|
||||
{"state": "client.card.basicData", "icon": "settings"},
|
||||
|
|
|
@ -1,23 +1,18 @@
|
|||
<vn-descriptor-content module="entry">
|
||||
<vn-descriptor-content
|
||||
module="entry"
|
||||
description="$ctrl.entry.supplier.nickname">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
<vn-item
|
||||
ng-click="$ctrl.showEntryReport()"
|
||||
translate>
|
||||
Show entry report
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<vn-label-value label="Id"
|
||||
value="{{$ctrl.entry.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value label="Supplier"
|
||||
value="{{$ctrl.entry.supplier.nickname}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value label="Agency "
|
||||
value="{{$ctrl.entry.travel.agency.name}}">
|
||||
</vn-label-value>
|
||||
|
|
|
@ -11,10 +11,14 @@ class Controller extends Descriptor {
|
|||
}
|
||||
|
||||
get travelFilter() {
|
||||
return JSON.stringify({agencyFk: this.entry.travel.agencyFk});
|
||||
return this.entry && JSON.stringify({
|
||||
agencyFk: this.entry.travel.agencyFk
|
||||
});
|
||||
}
|
||||
|
||||
get entryFilter() {
|
||||
if (!this.entry) return null;
|
||||
|
||||
const date = new Date(this.entry.travel.landed);
|
||||
date.setHours(0, 0, 0, 0);
|
||||
|
||||
|
@ -25,7 +29,7 @@ class Controller extends Descriptor {
|
|||
to.setDate(to.getDate() + 10);
|
||||
|
||||
return JSON.stringify({
|
||||
supplierFk: this.entry.travel.supplierFk,
|
||||
supplierFk: this.entry.supplierFk,
|
||||
from,
|
||||
to
|
||||
});
|
||||
|
|
|
@ -58,7 +58,8 @@
|
|||
<vn-icon
|
||||
ng-if="entry.notes.length"
|
||||
vn-tooltip="{{::entry.notes}}"
|
||||
icon="insert_drive_file">
|
||||
icon="insert_drive_file"
|
||||
class="bright">
|
||||
</vn-icon>
|
||||
</vn-td>
|
||||
</a>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import ngModule from '../module';
|
||||
import Section from 'salix/components/section';
|
||||
import './style.scss';
|
||||
|
||||
export default class Controller extends Section {}
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
@import "variables";
|
||||
|
||||
vn-icon[icon=insert_drive_file] {
|
||||
color: $color-font-secondary;
|
||||
}
|
|
@ -3,8 +3,4 @@
|
|||
|
||||
vn-entry-summary .summary {
|
||||
max-width: $width-lg;
|
||||
|
||||
vn-icon[icon=insert_drive_file]{
|
||||
color: $color-font-secondary;
|
||||
}
|
||||
}
|
|
@ -1,33 +1,33 @@
|
|||
<vn-descriptor-content module="invoiceOut">
|
||||
<vn-descriptor-content
|
||||
module="invoiceOut"
|
||||
description="$ctrl.invoiceOut.ref">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li>
|
||||
<a class="vn-item"
|
||||
href="api/InvoiceOuts/{{$ctrl.id}}/download?access_token={{$ctrl.vnToken.token}}"
|
||||
target="_blank"
|
||||
name="showInvoicePdf"
|
||||
translate>
|
||||
Show invoice PDF
|
||||
</a>
|
||||
</li>
|
||||
<li vn-acl="invoicing">
|
||||
<div class="vn-item"
|
||||
<vn-item
|
||||
ng-click="deleteConfirmation.show()"
|
||||
vn-acl="invoicing"
|
||||
vn-acl-action="remove"
|
||||
name="deleteInvoice"
|
||||
translate>
|
||||
Delete Invoice
|
||||
</div>
|
||||
</li>
|
||||
<li vn-acl="invoicing">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="bookConfirmation.show()"
|
||||
vn-acl="invoicing"
|
||||
vn-acl-action="remove"
|
||||
name="bookInvoice"
|
||||
translate>
|
||||
Book invoice
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<h5>{{$ctrl.invoiceOut.ref}}</h5>
|
||||
<vn-label-value
|
||||
label="Date"
|
||||
value="{{$ctrl.invoiceOut.issued | date: 'dd/MM/yyyy'}}">
|
||||
|
|
|
@ -3,8 +3,4 @@
|
|||
|
||||
vn-invoice-out-summary .summary {
|
||||
max-width: $width-lg;
|
||||
|
||||
vn-icon[icon=insert_drive_file]{
|
||||
color: $color-font-secondary;
|
||||
}
|
||||
}
|
|
@ -145,9 +145,9 @@
|
|||
<!-- Create custom agent dialog -->
|
||||
<vn-dialog class="edit"
|
||||
vn-id="intrastat"
|
||||
on-accept="$ctrl.onIntrastatAccept()">
|
||||
on-accept="$ctrl.onIntrastatAccept()"
|
||||
message="New intrastat">
|
||||
<tpl-body>
|
||||
<h5 class="vn-py-sm" translate>New intrastat</h5>
|
||||
<vn-horizontal>
|
||||
<vn-input-number vn-one vn-focus
|
||||
label="Identifier"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<btn-three>
|
||||
<vn-quick-link
|
||||
tooltip="Item diary"
|
||||
state="['item.card.diary']"
|
||||
state="['item.card.diary', {id: $ctrl.id, warehouseFk: $ctrl.warehouseFk, ticketFk: $ctrl.ticketFk}]"
|
||||
icon="icon-transaction">
|
||||
</vn-quick-link>
|
||||
</btn-three>
|
||||
|
|
|
@ -1,15 +1,7 @@
|
|||
import ngModule from '../module';
|
||||
import DescriptorPopover from 'salix/components/descriptor-popover';
|
||||
|
||||
class Controller extends DescriptorPopover {
|
||||
get diaryParams() {
|
||||
return {
|
||||
id: this.descriptor && this.descriptor.id,
|
||||
warehouseFk: this.warehouseFk,
|
||||
ticketFk: this.ticketFk
|
||||
};
|
||||
}
|
||||
}
|
||||
class Controller extends DescriptorPopover {}
|
||||
|
||||
ngModule.vnComponent('vnItemDescriptorPopover', {
|
||||
slotTemplate: require('./index.html'),
|
||||
|
|
|
@ -1,17 +1,15 @@
|
|||
<vn-descriptor-content module="item">
|
||||
<vn-descriptor-content
|
||||
module="item"
|
||||
description="$ctrl.item.name">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
<vn-item
|
||||
ng-click="regularize.show()"
|
||||
name="regularizeStock"
|
||||
translate>
|
||||
Regularize stock
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div>
|
||||
<slot-before>
|
||||
<div style="position: relative" text-center>
|
||||
<img
|
||||
ng-src="{{::$root.imagePath}}/catalog/200x200/{{$ctrl.item.image}}"
|
||||
|
@ -36,13 +34,9 @@
|
|||
<p>{{$ctrl.available | dashIfEmpty}}</p>
|
||||
</vn-one>
|
||||
</vn-horizontal>
|
||||
</div>
|
||||
</slot-before>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<h5>{{$ctrl.item.id}}</h5>
|
||||
<vn-label-value
|
||||
label="Name"
|
||||
value="{{$ctrl.item.name}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Buyer"
|
||||
value="{{$ctrl.item.itemType.worker.user.nickname}}">
|
||||
|
@ -71,10 +65,8 @@
|
|||
vn-id="regularize"
|
||||
on-open="$ctrl.warehouseFk = $ctrl.vnConfig.warehouseFk"
|
||||
on-close="$ctrl.clearRegularizeDialog()"
|
||||
on-accept="$ctrl.saveRegularize()">
|
||||
<tpl-title translate>
|
||||
Regularize stock
|
||||
</tpl-title>
|
||||
on-accept="$ctrl.saveRegularize()"
|
||||
message="Regularize stock">
|
||||
<tpl-body>
|
||||
<vn-textfield
|
||||
label="Type the visible quantity"
|
||||
|
|
|
@ -1,16 +1,9 @@
|
|||
|
||||
vn-item-descriptor {
|
||||
display: block;
|
||||
|
||||
img[ng-src] {
|
||||
min-height: 16em;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
vn-dialog[vn-id=regularize]{
|
||||
.vn-textfield{
|
||||
width: 100%
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -86,7 +86,8 @@
|
|||
<vn-icon
|
||||
ng-if="request.response.length"
|
||||
translate-attr="{title: request.response}"
|
||||
icon="insert_drive_file">
|
||||
icon="insert_drive_file"
|
||||
class="bright">
|
||||
</vn-icon>
|
||||
<vn-icon-button
|
||||
ng-if="request.isOk != 0"
|
||||
|
@ -113,10 +114,8 @@
|
|||
<vn-dialog
|
||||
vn-id="denyDialog"
|
||||
on-accept="$ctrl.onDenyAccept($data)"
|
||||
on-close="$ctrl.denyObservation = null">
|
||||
<tpl-title translate>
|
||||
Specify the reasons to deny this request
|
||||
</tpl-title>
|
||||
on-close="$ctrl.denyObservation = null"
|
||||
message="Specify the reasons to deny this request">
|
||||
<tpl-body>
|
||||
<vn-textarea
|
||||
ng-model="$ctrl.denyObservation"
|
||||
|
|
|
@ -12,7 +12,4 @@ vn-item-request {
|
|||
width: 100%
|
||||
}
|
||||
}
|
||||
vn-icon[icon=insert_drive_file]{
|
||||
color: $color-font-secondary;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
<vn-crud-model
|
||||
url="ItemCategories"
|
||||
data="categories"
|
||||
|
@ -18,8 +17,8 @@
|
|||
on-search="$ctrl.onSearch($params)">
|
||||
</vn-searchbar>
|
||||
</vn-portal>
|
||||
|
||||
<vn-order-catalog-view model="model"
|
||||
<vn-order-catalog-view
|
||||
model="model"
|
||||
order="$ctrl.order">
|
||||
</vn-order-catalog-view>
|
||||
<vn-side-menu side="right">
|
||||
|
|
|
@ -1,25 +1,15 @@
|
|||
<vn-descriptor-content module="order">
|
||||
<vn-descriptor-content
|
||||
module="order"
|
||||
description="$ctrl.order.client.name">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
<vn-item
|
||||
ng-click="deleteOrderConfirmation.show()"
|
||||
translate>
|
||||
Delete order
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<vn-label-value
|
||||
label="ID"
|
||||
value="{{$ctrl.order.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Client"
|
||||
value="{{$ctrl.order.client.name}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="State"
|
||||
value="{{$ctrl.$t($ctrl.order.isConfirmed ? 'Confirmed' : 'Not confirmed')}}">
|
||||
|
|
|
@ -1,19 +1,11 @@
|
|||
<vn-popover vn-id="popover" on-close="$ctrl.clear()">
|
||||
<div class="vn-descriptor vn-order-prices-popover">
|
||||
<div class="header">
|
||||
<span></span>
|
||||
<a translate-attr="{title: 'Preview'}" ui-sref="item.card.summary({id: $ctrl.item.id})">
|
||||
<vn-icon icon="desktop_windows"></vn-icon>
|
||||
</a>
|
||||
<span></span>
|
||||
</div>
|
||||
<div class="body vn-pa-md">
|
||||
<default>
|
||||
<vn-descriptor-content
|
||||
module="item"
|
||||
description="$ctrl.item.name"
|
||||
descriptor="$ctrl"
|
||||
class="vn-order-prices-popover">
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<h5>{{$ctrl.item.name}}</h5>
|
||||
<vn-label-value
|
||||
label="Id"
|
||||
value="{{$ctrl.item.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Buyer"
|
||||
value="{{$ctrl.item.firstName}} {{$ctrl.item.lastName}}">
|
||||
|
@ -24,10 +16,15 @@
|
|||
value="{{::tag.value}}">
|
||||
</vn-label-value>
|
||||
</div>
|
||||
<vn-quick-links
|
||||
links="$ctrl.quicklinks">
|
||||
</vn-quick-links>
|
||||
<div class="quicklinks">
|
||||
<vn-quick-link
|
||||
tooltip="Diary"
|
||||
state="['item.card.diary', {id: $ctrl.id}]"
|
||||
icon="icon-transaction">
|
||||
</vn-quick-link>
|
||||
</div>
|
||||
</slot-body>
|
||||
<slot-after>
|
||||
<form name="form" class="prices">
|
||||
<vn-table>
|
||||
<vn-tbody>
|
||||
|
@ -43,9 +40,7 @@
|
|||
<div>
|
||||
<span
|
||||
ng-click="$ctrl.addQuantity(price)"
|
||||
class="link unselectable">
|
||||
{{::price.grouping}}
|
||||
</span>
|
||||
class="link unselectable">{{::price.grouping}}</span>
|
||||
<span> x {{::price.price | currency: 'EUR': 2}}</span>
|
||||
</div>
|
||||
<div class="price-kg" ng-show="::price.priceKg">
|
||||
|
@ -75,5 +70,6 @@
|
|||
</vn-submit>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</vn-popover>
|
||||
</slot-after>
|
||||
</vn-descriptor-content>
|
||||
</default>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
import ngModule from '../module';
|
||||
import Component from 'core/lib/component';
|
||||
import Popover from 'core/components/popover';
|
||||
import './style.scss';
|
||||
|
||||
class Controller extends Component {
|
||||
constructor($element, $) {
|
||||
super($element, $);
|
||||
class Controller extends Popover {
|
||||
constructor(...args) {
|
||||
super(...args);
|
||||
this.totalBasquet = 0;
|
||||
}
|
||||
|
||||
|
@ -19,37 +19,32 @@ class Controller extends Component {
|
|||
}
|
||||
|
||||
getTags() {
|
||||
let filter = {
|
||||
where: {itemFk: this.item.id,
|
||||
priority: {gte: 4}},
|
||||
const filter = {
|
||||
where: {
|
||||
itemFk: this.id,
|
||||
priority: {gte: 4}
|
||||
},
|
||||
order: 'priority ASC',
|
||||
include: {relation: 'tag'}
|
||||
};
|
||||
this.quicklinks = {
|
||||
btnOne: {
|
||||
icon: 'icon-transaction',
|
||||
state: `item.card.diary({id: ${this.item.id}})`,
|
||||
tooltip: 'Diary'
|
||||
}
|
||||
};
|
||||
this.$http.get(`ItemTags?filter=${JSON.stringify(filter)}`).then(response => {
|
||||
this.tags = response.data;
|
||||
this.$.$applyAsync(() => {
|
||||
this.$.popover.relocate();
|
||||
});
|
||||
this.$http.get(`ItemTags`, {filter})
|
||||
.then(res => {
|
||||
this.tags = res.data;
|
||||
this.$.$applyAsync(() => this.relocate());
|
||||
});
|
||||
}
|
||||
|
||||
show(event, item) {
|
||||
show(parent, item) {
|
||||
this.item = JSON.parse(JSON.stringify(item));
|
||||
this.id = item.id;
|
||||
this.prices = this.item.prices;
|
||||
this.getTags();
|
||||
this.$.popover.parent = event.target;
|
||||
this.$.popover.show();
|
||||
this.$.popover.relocate();
|
||||
super.show(parent);
|
||||
}
|
||||
|
||||
clear() {
|
||||
hide() {
|
||||
super.hide();
|
||||
this.id = null;
|
||||
this.item = {};
|
||||
this.tags = {};
|
||||
this._prices = {};
|
||||
|
@ -76,7 +71,7 @@ class Controller extends Component {
|
|||
}
|
||||
|
||||
getFilledLines() {
|
||||
let filledLines = [];
|
||||
const filledLines = [];
|
||||
let match;
|
||||
this.prices.forEach(price => {
|
||||
if (price.quantity && price.quantity > 0) {
|
||||
|
@ -96,30 +91,28 @@ class Controller extends Component {
|
|||
|
||||
submit() {
|
||||
this.calculateTotal();
|
||||
let filledLines = this.getFilledLines();
|
||||
const filledLines = this.getFilledLines();
|
||||
|
||||
if (filledLines.length <= 0) {
|
||||
this.vnApp.showError(this.$translate.instant('First you must add some quantity'));
|
||||
this.vnApp.showError(this.$t('First you must add some quantity'));
|
||||
return;
|
||||
}
|
||||
|
||||
let params = {
|
||||
const params = {
|
||||
orderFk: this.order.id,
|
||||
items: filledLines
|
||||
};
|
||||
|
||||
this.$http.post(`OrderRows/addToOrder`, params).then(res => {
|
||||
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
|
||||
this.$.popover.hide();
|
||||
|
||||
if (this.card)
|
||||
this.card.reload();
|
||||
this.$http.post(`OrderRows/addToOrder`, params)
|
||||
.then(() => {
|
||||
this.vnApp.showSuccess(this.$t('Data saved!'));
|
||||
this.hide();
|
||||
if (this.card) this.card.reload();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
ngModule.component('vnOrderPricesPopover', {
|
||||
template: require('./index.html'),
|
||||
ngModule.vnComponent('vnOrderPricesPopover', {
|
||||
slotTemplate: require('./index.html'),
|
||||
controller: Controller,
|
||||
bindings: {
|
||||
order: '<'
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
@import "variables";
|
||||
|
||||
.vn-order-prices-popover {
|
||||
display: block;
|
||||
max-width: 350px;
|
||||
|
||||
.header > a:first-child {
|
||||
visibility: hidden;
|
||||
}
|
||||
img[ng-src] {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<btn-three>
|
||||
<vn-quick-link
|
||||
tooltip="Route summary"
|
||||
state="['route.card.summary', {id: $ctrl.descriptor.id}]"
|
||||
state="['route.card.summary', {id: $ctrl.id}]"
|
||||
icon="icon-delivery">
|
||||
</vn-quick-link>
|
||||
</btn-three>
|
||||
|
|
|
@ -1,36 +1,27 @@
|
|||
<vn-descriptor-content module="route">
|
||||
<vn-descriptor-content
|
||||
module="route"
|
||||
description="$ctrl.route.name">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
<vn-item
|
||||
ng-click="$ctrl.showRouteReport()"
|
||||
translate>
|
||||
Show route report
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="$ctrl.sendRouteReport()"
|
||||
translate>
|
||||
Send route report
|
||||
</div>
|
||||
</li>
|
||||
<li vn-acl="deliveryBoss">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="updateVolumeConfirmation.show()"
|
||||
vn-acl="deliveryBoss"
|
||||
vn-acl-action="remove"
|
||||
translate>
|
||||
Update volume
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<h5>{{$ctrl.route.name}}</h5>
|
||||
<vn-label-value
|
||||
label="Id"
|
||||
value="{{$ctrl.route.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Date"
|
||||
value="{{$ctrl.route.created | date: 'dd/MM/yyyy'}}">
|
||||
|
|
|
@ -90,7 +90,8 @@
|
|||
<vn-icon
|
||||
ng-if="ticket.notes.length"
|
||||
vn-tooltip="{{ticket.notes[0].description}}"
|
||||
icon="insert_drive_file">
|
||||
icon="insert_drive_file"
|
||||
class="bright">
|
||||
</vn-icon>
|
||||
</vn-td>
|
||||
</vn-tr>
|
||||
|
|
|
@ -3,8 +3,4 @@
|
|||
|
||||
vn-route-summary .summary {
|
||||
max-width: $width-lg;
|
||||
|
||||
vn-icon[icon=insert_drive_file]{
|
||||
color: $color-font-secondary;
|
||||
}
|
||||
}
|
|
@ -78,11 +78,12 @@
|
|||
<vn-td>{{ticket.address.postalCode}}</vn-td>
|
||||
<vn-td expand title="{{ticket.address.street}}">{{ticket.address.street}}</vn-td>
|
||||
<vn-td shrink>
|
||||
<vn-icon-button
|
||||
<vn-icon
|
||||
ng-if="ticket.notes.length"
|
||||
title="::{{ticket.notes[0].description}}"
|
||||
icon="insert_drive_file">
|
||||
</vn-icon-button>
|
||||
icon="insert_drive_file"
|
||||
class="bright">
|
||||
</vn-icon>
|
||||
</vn-td>
|
||||
<vn-td>
|
||||
<vn-icon-button
|
||||
|
@ -117,10 +118,8 @@
|
|||
</vn-crud-model>
|
||||
<vn-dialog
|
||||
vn-id="possibleTicketsDialog"
|
||||
on-response="$ctrl.setTicketsRoute($response)">
|
||||
<tpl-title translate>
|
||||
Tickets to add
|
||||
</tpl-title>
|
||||
on-response="$ctrl.setTicketsRoute($response)"
|
||||
message="Tickets to add">
|
||||
<tpl-body>
|
||||
<vn-data-viewer class="vn-pa-md" model="possibleTicketsModel">
|
||||
<vn-table model="possibleTicketsModel" auto-load="false">
|
||||
|
|
|
@ -5,11 +5,9 @@
|
|||
<vn-dialog
|
||||
vn-id="dialog"
|
||||
class="modal-form"
|
||||
on-open="model.refresh()">
|
||||
on-open="model.refresh()"
|
||||
message="Stowaways to add">
|
||||
<tpl-body>
|
||||
<section class="add-stowaway header vn-pa-md">
|
||||
<h5><span translate>Stowaways to add</span></h5>
|
||||
</section>
|
||||
<vn-horizontal class="add-stowaway vn-pa-md">
|
||||
<vn-data-viewer model="model">
|
||||
<vn-table model="model" auto-load="false">
|
||||
|
|
|
@ -1,103 +1,89 @@
|
|||
<vn-descriptor-content module="ticket">
|
||||
<vn-descriptor-content
|
||||
module="ticket"
|
||||
description="$ctrl.ticket.client.name">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li vn-acl="buyer">
|
||||
<div class="vn-item"
|
||||
<vn-item
|
||||
ng-click="addTurn.show()"
|
||||
vn-acl="buyer"
|
||||
vn-acl-action="remove"
|
||||
name="addTurn"
|
||||
translate>
|
||||
Add turn
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="$ctrl.showDeliveryNote()"
|
||||
translate>
|
||||
Show Delivery Note
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="confirmDeliveryNote.show()"
|
||||
translate>
|
||||
Send Delivery Note
|
||||
</div>
|
||||
</li>
|
||||
<li ng-show="$ctrl.isEditable">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="deleteConfirmation.show()"
|
||||
ng-show="$ctrl.isEditable"
|
||||
name="deleteTicket"
|
||||
translate>
|
||||
Delete ticket
|
||||
</div>
|
||||
</li>
|
||||
<li ng-show="$ctrl.isEditable">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="$ctrl.showChangeShipped()"
|
||||
ng-show="$ctrl.isEditable"
|
||||
name="changeShipped"
|
||||
translate>
|
||||
Change shipped hour
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="$ctrl.sendPaymentSms()"
|
||||
translate>
|
||||
SMS Pending payment
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="$ctrl.sendImportSms()"
|
||||
translate>
|
||||
SMS Minimum import
|
||||
</div>
|
||||
</li>
|
||||
<li ng-show="$ctrl.canShowStowaway">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="addStowaway.show()"
|
||||
ng-show="$ctrl.canShowStowaway"
|
||||
name="addStowaway"
|
||||
translate>
|
||||
Add stowaway
|
||||
</div>
|
||||
</li>
|
||||
<li ng-show="$ctrl.shouldShowDeleteStowaway">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="deleteStowaway.show()"
|
||||
ng-show="$ctrl.shouldShowDeleteStowaway"
|
||||
name="deleteStowaway"
|
||||
translate>
|
||||
Delete stowaway
|
||||
</div>
|
||||
</li>
|
||||
<li ng-show="!$ctrl.isInvoiced" vn-acl="invoicing">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="makeInvoiceConfirmation.show()"
|
||||
ng-show="!$ctrl.isInvoiced"
|
||||
vn-acl="invoicing"
|
||||
vn-acl-action="remove"
|
||||
name="makeInvoice"
|
||||
translate>
|
||||
Make invoice
|
||||
</div>
|
||||
</li>
|
||||
<li ng-show="$ctrl.isInvoiced" vn-acl="invoicing">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="regenerateInvoiceConfirmation.show()"
|
||||
ng-show="$ctrl.isInvoiced"
|
||||
vn-acl="invoicing"
|
||||
vn-acl-action="remove"
|
||||
translate>
|
||||
Regenerate invoice
|
||||
</div>
|
||||
</li>
|
||||
<li ng-show="$ctrl.isEditable">
|
||||
<div class="vn-item"
|
||||
</vn-item>
|
||||
<vn-item
|
||||
ng-click="recalculateComponentsConfirmation.show()"
|
||||
ng-show="$ctrl.isEditable"
|
||||
translate>
|
||||
Recalculate components
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<h5>{{::$ctrl.client.name}}</h5>
|
||||
<vn-label-value
|
||||
label="Id"
|
||||
value="{{$ctrl.ticket.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Client"
|
||||
value="{{$ctrl.ticket.client.name}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="State"
|
||||
value="{{$ctrl.ticket.state.state.name}}">
|
||||
|
@ -281,9 +267,9 @@
|
|||
</vn-add-stowaway>
|
||||
<vn-dialog
|
||||
vn-id="changeShippedDialog"
|
||||
on-accept="$ctrl.changeShipped()">
|
||||
on-accept="$ctrl.changeShipped()"
|
||||
message="Change shipped hour">
|
||||
<tpl-body>
|
||||
<h6 translate>Change shipped hour</h6>
|
||||
<vn-input-time
|
||||
ng-model="$ctrl.newShipped"
|
||||
label="Shipped hour"
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
vn-id="watcher"
|
||||
data="$ctrl.sales">
|
||||
</vn-watcher>
|
||||
<vn-vertical class="vn-w-xl">
|
||||
<div class="vn-w-xl">
|
||||
<vn-card class="vn-pa-lg">
|
||||
<vn-horizontal class="header">
|
||||
<vn-tool-bar class="vn-mb-md">
|
||||
|
@ -180,17 +180,18 @@
|
|||
</vn-tr>
|
||||
</vn-tbody>
|
||||
</vn-table>
|
||||
<vn-one>
|
||||
<vn-icon-button vn-none
|
||||
<div>
|
||||
<vn-icon-button
|
||||
vn-none
|
||||
vn-tooltip="Add item"
|
||||
vn-bind="+"
|
||||
icon="add_circle"
|
||||
ng-click="$ctrl.add()"
|
||||
disabled="!$ctrl.isEditable">
|
||||
</vn-icon-button>
|
||||
</vn-one>
|
||||
</div>
|
||||
</vn-card>
|
||||
</vn-vertical>
|
||||
</div>
|
||||
<vn-float-button
|
||||
ng-show="$ctrl.isEditable"
|
||||
ng-click="$ctrl.newOrderFromTicket()"
|
||||
|
|
|
@ -74,9 +74,9 @@
|
|||
<vn-dialog class="edit"
|
||||
vn-id="newServiceTypeDialog"
|
||||
on-accept="$ctrl.onNewServiceTypeAccept($data)"
|
||||
on-close="newServiceType = null">
|
||||
on-close="newServiceType = null"
|
||||
message="New service type">
|
||||
<tpl-body>
|
||||
<h5 class="vn-py-sm" translate>New service type</h5>
|
||||
<vn-horizontal>
|
||||
<vn-textfield
|
||||
vn-one
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<vn-dialog
|
||||
vn-id="SMSDialog"
|
||||
on-response="$ctrl.onResponse($response)">
|
||||
on-response="$ctrl.onResponse($response)"
|
||||
message="Send SMS">
|
||||
<tpl-body>
|
||||
<section class="SMSDialog">
|
||||
<h5 class="vn-py-sm" translate>Send SMS</h5>
|
||||
<vn-horizontal>
|
||||
<vn-textfield
|
||||
vn-one
|
||||
|
|
|
@ -1,14 +1,8 @@
|
|||
<vn-descriptor-content module="travel">
|
||||
<vn-descriptor-content
|
||||
module="travel"
|
||||
description="$ctrl.travel.ref">
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<vn-label-value
|
||||
label="Id"
|
||||
value="{{$ctrl.travel.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Reference"
|
||||
value="{{$ctrl.travel.ref}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Wh. In"
|
||||
value="{{$ctrl.travel.warehouseOut.name}}">
|
||||
|
|
|
@ -88,12 +88,14 @@
|
|||
<vn-icon
|
||||
ng-if="entry.notes.length"
|
||||
vn-tooltip="{{entry.notes}}"
|
||||
icon="insert_drive_file">
|
||||
icon="insert_drive_file"
|
||||
class="bright">
|
||||
</vn-icon>
|
||||
<vn-icon
|
||||
ng-if="entry.observation.length"
|
||||
vn-tooltip="{{entry.observation}}"
|
||||
icon="insert_drive_file">
|
||||
icon="insert_drive_file"
|
||||
class="bright">
|
||||
</vn-icon>
|
||||
</vn-td>
|
||||
</vn-tr>
|
||||
|
|
|
@ -3,8 +3,4 @@
|
|||
|
||||
vn-travel-summary .summary {
|
||||
max-width: $width-lg;
|
||||
|
||||
vn-icon[icon=insert_drive_file]{
|
||||
color: $color-font-secondary;
|
||||
}
|
||||
}
|
|
@ -27,17 +27,15 @@
|
|||
<vn-dialog
|
||||
vn-id="createNode"
|
||||
on-open="$ctrl.onCreateDialogOpen()"
|
||||
on-response="$ctrl.onCreateResponse($response)">
|
||||
on-response="$ctrl.onCreateResponse($response)"
|
||||
message="New department">
|
||||
<tpl-body>
|
||||
<h5 class="vn-py-sm" translate>New department</h5>
|
||||
<vn-horizontal>
|
||||
<vn-textfield
|
||||
vn-one
|
||||
label="Name"
|
||||
ng-model="$ctrl.newChild.name"
|
||||
vn-focus>
|
||||
</vn-textfield>
|
||||
</vn-horizontal>
|
||||
</tpl-body>
|
||||
<tpl-buttons>
|
||||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||
|
|
|
@ -1,17 +1,11 @@
|
|||
<vn-descriptor-content module="worker">
|
||||
<vn-descriptor-content
|
||||
module="worker"
|
||||
description="$ctrl.worker.firstName +' '+ $ctrl.worker.lastName">
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<h5 title="{{$ctrl.worker.firstName}} {{$ctrl.worker.lastName}}">
|
||||
{{$ctrl.worker.firstName}} {{$ctrl.worker.lastName}}
|
||||
</h5>
|
||||
<vn-label-value
|
||||
label="Id"
|
||||
value="{{$ctrl.worker.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="User"
|
||||
value="{{$ctrl.worker.user.name}}"
|
||||
title="{{$ctrl.worker.firstName}} {{$ctrl.worker.lastName}}">
|
||||
value="{{$ctrl.worker.user.name}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Email"
|
||||
|
|
|
@ -92,19 +92,15 @@
|
|||
</vn-side-menu>
|
||||
<vn-dialog
|
||||
vn-id="addTimeDialog"
|
||||
on-response="$ctrl.addTime($response)">
|
||||
on-response="$ctrl.addTime($response)"
|
||||
message="Add time">
|
||||
<tpl-body>
|
||||
<div>
|
||||
<h5 style="text-align: center">
|
||||
<span translate>Add time</span>
|
||||
</h5>
|
||||
<vn-input-time
|
||||
vn-one
|
||||
ng-model="$ctrl.newTime"
|
||||
label="Hour"
|
||||
vn-focus>
|
||||
</vn-input-time>
|
||||
</div>
|
||||
</tpl-body>
|
||||
<tpl-buttons>
|
||||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||
|
|
|
@ -1,25 +1,15 @@
|
|||
<vn-descriptor-content module="zone">
|
||||
<vn-descriptor-content
|
||||
module="zone"
|
||||
description="$ctrl.zone.name">
|
||||
<slot-menu>
|
||||
<ul class="vn-list">
|
||||
<li>
|
||||
<div class="vn-item"
|
||||
<vn-item class="vn-item"
|
||||
ng-click="deleteZone.show()"
|
||||
translate>
|
||||
Delete
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</vn-item>
|
||||
</slot-menu>
|
||||
<slot-body>
|
||||
<div class="attributes">
|
||||
<vn-label-value
|
||||
label="Id"
|
||||
value="{{$ctrl.zone.id}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Name"
|
||||
value="{{$ctrl.zone.name}}">
|
||||
</vn-label-value>
|
||||
<vn-label-value
|
||||
label="Warehouse"
|
||||
value="{{$ctrl.zone.warehouse.name}}">
|
||||
|
|
|
@ -30,7 +30,6 @@
|
|||
vn-id="dialog"
|
||||
on-response="$ctrl.onSave($response)">
|
||||
<tpl-body>
|
||||
<vn-vertical>
|
||||
<vn-autocomplete
|
||||
ng-model="$ctrl.selected.warehouseFk"
|
||||
url="Warehouses"
|
||||
|
@ -38,7 +37,6 @@
|
|||
value-field="id"
|
||||
label="Warehouse">
|
||||
</vn-autocomplete>
|
||||
</vn-vertical>
|
||||
</tpl-body>
|
||||
<tpl-buttons>
|
||||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||
|
|
Loading…
Reference in New Issue