salix/modules/item/front/diary/index.js

169 lines
4.5 KiB
JavaScript
Raw Normal View History

import ngModule from '../module';
2020-03-17 13:43:46 +00:00
import Section from 'salix/components/section';
import './style.scss';
2020-03-17 13:43:46 +00:00
class Controller extends Section {
get item() {
return this._item;
}
set item(value) {
this._item = value;
2018-09-06 13:08:02 +00:00
this.filter = {
2020-03-17 13:43:46 +00:00
where: {itemFk: this.$params.id}
2018-09-06 13:08:02 +00:00
};
2020-03-17 13:43:46 +00:00
this.$.$applyAsync(() => {
if (this.$params.warehouseFk)
this.warehouseFk = this.$params.warehouseFk;
else if (value)
this.warehouseFk = value.itemType.warehouseFk;
2018-10-05 13:53:31 +00:00
2020-03-17 13:43:46 +00:00
if (this.$params.ticketFk)
this.ticketFk = this.$params.ticketFk;
});
}
2018-09-06 13:08:02 +00:00
set warehouseFk(value) {
2018-11-14 10:17:33 +00:00
if (value && value != this._warehouseFk) {
this._warehouseFk = value;
2018-09-06 13:08:02 +00:00
2018-11-14 10:17:33 +00:00
this.$state.go(this.$state.current.name, {
warehouseFk: value
});
2018-11-14 10:17:33 +00:00
this.filter.where.warehouseFk = value;
2020-03-17 13:43:46 +00:00
this.$.model.refresh();
2018-11-14 10:17:33 +00:00
}
}
2018-09-06 13:08:02 +00:00
get warehouseFk() {
return this._warehouseFk;
}
get freeLineIndex() {
2020-03-17 13:43:46 +00:00
let lines = this.$.model.data;
2019-10-21 09:08:41 +00:00
let minDate = new Date();
minDate.setHours(0, 0, 0, 0);
let maxDate = new Date();
maxDate.setHours(23, 59, 59, 59);
for (let i = 0; i < lines.length; i++) {
2019-10-21 09:08:41 +00:00
const dated = new Date(lines[i].date);
2019-10-21 09:08:41 +00:00
let isForFuture = dated > maxDate;
let isForToday = (dated >= minDate && dated <= maxDate);
if (isForFuture || isForToday)
return i;
}
}
get onPreparationLineIndex() {
2020-03-17 13:43:46 +00:00
let lines = this.$.model.data;
2018-11-14 10:17:33 +00:00
for (let i = this.freeLineIndex; i >= 0; i--) {
let line = lines[i];
2019-10-21 09:08:41 +00:00
let currentDate = new Date();
2019-10-21 09:08:41 +00:00
currentDate.setHours(0, 0, 0, 0);
let isPastDate = new Date(lines[i].date) < currentDate;
let isPicked = line.alertLevel == 1 && line.isPicked;
if ((isPicked) || line.alertLevel > 1 || isPastDate)
2018-11-14 10:17:33 +00:00
return i + 1;
}
}
2018-10-05 13:53:31 +00:00
get givenTicketIndex() {
2020-03-17 13:43:46 +00:00
let lines = this.$.model.data;
2018-10-05 13:53:31 +00:00
for (let i = lines.length - 1; i > 0; i--) {
let line = lines[i];
if (line.origin == this.ticketFk)
return i;
}
}
scrollToLine() {
let body = this.$window.document.body;
2018-11-14 10:17:33 +00:00
let selectedTicketLineIndex = this.givenTicketIndex;
let lineIndex = this.onPreparationLineIndex;
2018-10-05 13:53:31 +00:00
let lines = body.querySelector('vn-tbody').children;
2018-11-14 10:17:33 +00:00
if (lineIndex == undefined || !lines.length) return;
let onPreparationLine = lines[lineIndex];
2020-03-17 13:43:46 +00:00
let balance = onPreparationLine.uerySelector('.balanceSpan');
2019-09-12 09:47:56 +00:00
balance.classList.add('message');
2020-03-17 13:43:46 +00:00
balance.title = this.$translate.instant('Visble quantity');
2020-03-17 13:43:46 +00:00
let headerOffset = body.qurySelector('vn-topbar').getBoundingClientRect();
let headerHeight = headerOffset.height;
2018-11-14 10:17:33 +00:00
let offsetTop;
if (this.ticketFk) {
let selectedTicketLine = lines[selectedTicketLineIndex];
2019-09-10 06:47:46 +00:00
let id = selectedTicketLine.querySelector('[name=origin]');
2019-09-12 09:47:56 +00:00
id.classList.add('message');
2018-11-14 10:17:33 +00:00
offsetTop = selectedTicketLine.offsetTop - headerHeight;
} else
offsetTop = onPreparationLine.offsetTop - headerHeight;
this.$window.scrollTo(0, offsetTop);
2018-10-05 13:53:31 +00:00
this.ticketFk = null;
}
2018-11-14 10:17:33 +00:00
/**
* Compares a date with the current one
* @param {Object} date - Date to compare
* @return {Boolean} - Returns true if the two dates equals
*/
isToday(date) {
let today = new Date();
today.setHours(0, 0, 0, 0);
let comparedDate = new Date(date);
comparedDate.setHours(0, 0, 0, 0);
if (!(today - comparedDate))
return true;
}
2018-08-30 09:02:50 +00:00
showDescriptor(event, sale) {
if (!sale.isTicket) return;
2020-03-17 13:43:46 +00:00
this.$.descriptor.ticketFk = sale.origin;
this.$.descriptor.parent = event.target;
this.$.descriptor.show();
2019-02-04 09:10:57 +00:00
2018-08-30 09:02:50 +00:00
event.preventDefault();
}
2018-09-04 09:49:00 +00:00
showClientDescriptor(event, sale) {
if (!sale.isTicket) return;
2020-03-17 13:43:46 +00:00
this.$.clientDescriptor.clientFk = sale.clientFk;
this.$.clientDescriptor.parent = event.target;
this.$.clientDescriptor.show();
2019-02-04 09:10:57 +00:00
2018-09-04 09:49:00 +00:00
event.preventDefault();
}
2018-08-30 09:02:50 +00:00
onDescriptorLoad() {
2020-03-17 13:43:46 +00:00
this.$.popover.relocate();
2018-08-30 09:02:50 +00:00
}
}
ngModule.component('vnItemDiary', {
template: require('./index.html'),
controller: Controller,
bindings: {
item: '<'
}
});