152 lines
4.2 KiB
JavaScript
152 lines
4.2 KiB
JavaScript
import ngModule from '../module';
|
|
import Section from 'salix/components/section';
|
|
import './style.scss';
|
|
|
|
export default class Controller extends Section {
|
|
constructor($element, $) {
|
|
super($element, $);
|
|
|
|
this.smartTableOptions = {
|
|
activeButtons: {
|
|
search: true
|
|
},
|
|
defaultSearch: true,
|
|
columns: [
|
|
{
|
|
field: 'warehouseFk',
|
|
autocomplete: {
|
|
url: 'Warehouses',
|
|
showField: 'name',
|
|
valueField: 'id',
|
|
}
|
|
},
|
|
{
|
|
field: 'started',
|
|
searchable: false
|
|
},
|
|
{
|
|
field: 'ended',
|
|
searchable: false
|
|
}
|
|
]
|
|
};
|
|
}
|
|
|
|
isBigger(date) {
|
|
let today = Date.vnNew();
|
|
today.setHours(0, 0, 0, 0);
|
|
|
|
date = new Date(date);
|
|
date.setHours(0, 0, 0, 0);
|
|
|
|
const timeDifference = today - date;
|
|
if (timeDifference < 0) return 'warning';
|
|
}
|
|
|
|
isLower(date) {
|
|
let today = Date.vnNew();
|
|
today.setHours(0, 0, 0, 0);
|
|
|
|
date = new Date(date);
|
|
date.setHours(0, 0, 0, 0);
|
|
|
|
const timeDifference = today - date;
|
|
if (timeDifference > 0) return 'warning';
|
|
}
|
|
|
|
add() {
|
|
if (!this.$.model.data || this.$.model.data.length == 0) {
|
|
this.$.model.data = [];
|
|
this.$.model.proxiedData = [];
|
|
|
|
const today = Date.vnNew();
|
|
|
|
const millisecsInDay = 86400000;
|
|
const daysInWeek = 7;
|
|
const nextWeek = new Date(today.getTime() + daysInWeek * millisecsInDay);
|
|
|
|
this.$.model.insert({
|
|
started: today,
|
|
ended: nextWeek
|
|
});
|
|
return;
|
|
}
|
|
|
|
const lastIndex = this.$.model.data.length - 1;
|
|
const lastItem = this.$.model.data[lastIndex];
|
|
this.$.model.insert({
|
|
itemFk: lastItem.itemFk,
|
|
name: lastItem.name,
|
|
subName: lastItem.subName,
|
|
value5: lastItem.value5,
|
|
value6: lastItem.value6,
|
|
value7: lastItem.value7,
|
|
value8: lastItem.value8,
|
|
value9: lastItem.value9,
|
|
value10: lastItem.value10,
|
|
warehouseFk: lastItem.warehouseFk,
|
|
rate2: lastItem.rate2,
|
|
rate3: lastItem.rate3,
|
|
hasMinPrice: lastItem.hasMinPrice,
|
|
minPrice: lastItem.minPrice,
|
|
started: lastItem.started,
|
|
ended: lastItem.ended,
|
|
});
|
|
}
|
|
|
|
upsertPrice(price, resetMinPrice) {
|
|
if (resetMinPrice)
|
|
delete price['minPrice'];
|
|
|
|
let requiredFields = ['itemFk', 'started', 'ended', 'rate2', 'rate3'];
|
|
for (let field of requiredFields)
|
|
if (price[field] == undefined) return;
|
|
|
|
const query = 'FixedPrices/upsertFixedPrice';
|
|
this.$http.patch(query, price)
|
|
.then(res => {
|
|
this.vnApp.showSuccess(this.$t('Data saved!'));
|
|
Object.assign(price, res.data);
|
|
});
|
|
}
|
|
|
|
removePrice($index) {
|
|
const price = this.$.model.data[$index];
|
|
if (price.id) {
|
|
this.$http.delete(`FixedPrices/${price.id}`)
|
|
.then(() => {
|
|
this.$.model.remove($index);
|
|
this.vnApp.showSuccess(this.$t('Data saved!'));
|
|
});
|
|
} else
|
|
this.$.model.remove($index);
|
|
}
|
|
|
|
itemSearchFunc($search) {
|
|
return /^\d+$/.test($search)
|
|
? {id: $search}
|
|
: {name: {like: '%' + $search + '%'}};
|
|
}
|
|
|
|
exprBuilder(param, value) {
|
|
switch (param) {
|
|
case 'name':
|
|
return {'i.name': {like: `%${value}%`}};
|
|
case 'itemFk':
|
|
case 'warehouseFk':
|
|
case 'rate2':
|
|
case 'rate3':
|
|
param = `fp.${param}`;
|
|
return {[param]: value};
|
|
case 'minPrice':
|
|
param = `i.${param}`;
|
|
return {[param]: value};
|
|
}
|
|
}
|
|
}
|
|
|
|
ngModule.vnComponent('vnFixedPrice', {
|
|
template: require('./index.html'),
|
|
controller: Controller
|
|
});
|