salix/modules/item/front/last-entries/index.js

106 lines
2.3 KiB
JavaScript

import ngModule from '../module';
import Section from 'salix/components/section';
class Controller extends Section {
constructor($element, $) {
super($element, $);
const from = Date.vnNew();
from.setDate(from.getDate() - 75);
from.setHours(0, 0, 0, 0);
const to = Date.vnNew();
to.setDate(to.getDate() + 10);
to.setHours(23, 59, 59, 59);
this.filter = {
where: {
itemFk: this.$params.id,
landed: {
between: [from, to]
}
}
};
this._dateFrom = from;
this._dateTo = to;
}
set dateFrom(value) {
this._dateFrom = value;
if (!value) return;
const from = new Date(value);
from.setHours(0, 0, 0, 0);
const to = new Date(this._dateTo);
to.setHours(23, 59, 59, 59);
this.filter.where.landed = {
between: [from, to]
};
this.$.model.refresh();
}
set dateTo(value) {
this._dateTo = value;
if (!value) return;
const from = new Date(this._dateFrom);
from.setHours(0, 0, 0, 0);
const to = new Date(value);
to.setHours(23, 59, 59, 59);
this.filter.where.landed = {
between: [from, to]
};
this.$.model.refresh();
}
get dateFrom() {
return this._dateFrom;
}
get dateTo() {
return this._dateTo;
}
exprBuilder(param, value) {
switch (param) {
case 'id':
case 'quantity':
case 'packagingFk':
return {[`b.${param}`]: value};
case 'supplierFk':
return {[`s.id`]: value};
case 'warehouseFk':
return {'tr.warehouseInFk': value};
case 'landed':
return {'tr.landed': {
between: this.dateRange(value)}
};
}
}
dateRange(value) {
const minHour = new Date(value);
minHour.setHours(0, 0, 0, 0);
const maxHour = new Date(value);
maxHour.setHours(23, 59, 59, 59);
return [minHour, maxHour];
}
}
Controller.$inject = ['$element', '$scope'];
ngModule.vnComponent('vnItemLastEntries', {
template: require('./index.html'),
controller: Controller,
bindings: {
item: '<'
}
});