salix/modules/claim/front/action/index.js

234 lines
6.7 KiB
JavaScript
Raw Normal View History

2018-09-05 09:34:23 +00:00
import ngModule from '../module';
2020-03-16 10:58:14 +00:00
import Section from 'salix/components/section';
2018-09-05 09:34:23 +00:00
import './style.scss';
2020-03-16 10:58:14 +00:00
export default class Controller extends Section {
constructor($element, $) {
super($element, $);
this.newDestination;
2018-09-05 09:34:23 +00:00
this.filter = {
include: [
{relation: 'sale',
scope: {
2018-11-21 12:29:46 +00:00
fields: ['concept', 'ticketFk', 'price', 'quantity', 'discount', 'itemFk'],
2018-09-05 09:34:23 +00:00
include: {
relation: 'ticket'
}
}
},
2019-10-21 11:43:17 +00:00
{relation: 'claimBeggining'},
{relation: 'claimDestination'}
2018-09-05 09:34:23 +00:00
]
};
2020-05-15 12:47:19 +00:00
this.getResolvedState();
2019-04-16 06:09:16 +00:00
this.maxResponsibility = 5;
this.smartTableOptions = {
activeButtons: {
search: true
},
columns: [
{
field: 'claimDestinationFk',
autocomplete: {
url: 'ClaimDestinations',
showField: 'description',
valueField: 'id'
}
2022-04-12 08:09:00 +00:00
},
{
field: 'landed',
searchable: false
}
]
};
}
exprBuilder(param, value) {
switch (param) {
case 'itemFk':
case 'ticketFk':
case 'claimDestinationFk':
case 'quantity':
case 'price':
case 'discount':
case 'total':
return {[param]: value};
2022-04-12 08:09:00 +00:00
case 'concept':
return {[param]: {like: `%${value}%`}};
case 'landed':
return {[param]: {between: this.dateRange(value)}};
}
}
2022-04-12 08:09:00 +00:00
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];
}
get checked() {
const salesClaimed = this.$.model.data || [];
const checkedSalesClaimed = [];
for (let saleClaimed of salesClaimed) {
if (saleClaimed.$checked)
checkedSalesClaimed.push(saleClaimed);
}
return checkedSalesClaimed;
2018-09-05 09:34:23 +00:00
}
2022-04-12 08:09:00 +00:00
updateDestination(saleClaimed, claimDestinationFk) {
const data = {rows: [saleClaimed], claimDestinationFk: claimDestinationFk};
this.$http.post(`Claims/updateClaimDestination`, data).then(() => {
this.vnApp.showSuccess(this.$t('Data saved!'));
}).catch(e => {
this.$.model.refresh();
throw e;
});
}
removeSales(saleClaimed) {
const params = {sales: [saleClaimed]};
this.$http.post(`ClaimEnds/deleteSalesClaimed`, params).then(() => {
this.$.model.refresh();
this.vnApp.showSuccess(this.$t('Data saved!'));
});
}
2020-05-15 12:47:19 +00:00
getResolvedState() {
const query = `ClaimStates/findOne`;
const params = {
filter: {
where: {
code: 'resolved'
}
}
};
this.$http.get(query, params).then(res =>
this.resolvedStateId = res.data.id
);
2018-09-05 09:34:23 +00:00
}
importToNewRefundTicket() {
2020-03-16 10:58:14 +00:00
let query = `ClaimBeginnings/${this.$params.id}/importToNewRefundTicket`;
2019-06-20 11:50:58 +00:00
return this.$http.post(query).then(() => {
this.$.model.refresh();
this.vnApp.showSuccess(this.$t('Data saved!'));
});
}
2018-09-05 09:34:23 +00:00
focusLastInput() {
2018-11-21 12:29:46 +00:00
let inputs = document.querySelectorAll('#claimDestinationFk');
inputs[inputs.length - 1].querySelector('input').focus();
2018-09-05 09:34:23 +00:00
this.calculateTotals();
}
calculateTotals() {
this.claimedTotal = 0;
this.salesClaimed.forEach(sale => {
2022-04-12 08:09:00 +00:00
const price = sale.quantity * sale.price;
const discount = (sale.discount * (sale.quantity * sale.price)) / 100;
2020-05-15 12:47:19 +00:00
this.claimedTotal += price - discount;
2018-09-05 09:34:23 +00:00
});
}
2018-10-08 05:31:55 +00:00
regularize() {
2020-05-14 12:01:34 +00:00
const query = `Claims/${this.$params.id}/regularizeClaim`;
return this.$http.post(query).then(() => {
2019-04-16 06:09:16 +00:00
if (this.claim.responsibility >= Math.ceil(this.maxResponsibility) / 2)
this.$.updateGreuge.show();
2019-12-19 10:37:53 +00:00
else
this.vnApp.showSuccess(this.$t('Data saved!'));
2019-12-19 10:37:53 +00:00
this.card.reload();
2018-10-08 05:31:55 +00:00
});
}
2018-11-21 12:29:46 +00:00
2019-12-19 10:37:53 +00:00
getGreugeTypeId() {
const params = {filter: {where: {code: 'freightPickUp'}}};
2020-03-16 10:58:14 +00:00
const query = `GreugeTypes/findOne`;
return this.$http.get(query, {params}).then(res => {
2019-12-19 10:37:53 +00:00
this.greugeTypeFreightId = res.data.id;
2019-12-20 08:30:35 +00:00
return res;
2019-12-19 10:37:53 +00:00
});
}
2019-04-16 06:09:16 +00:00
2019-12-19 10:37:53 +00:00
getGreugeConfig() {
const query = `GreugeConfigs/findOne`;
return this.$http.get(query).then(res => {
this.freightPickUpPrice = res.data.freightPickUpPrice;
2019-12-20 08:30:35 +00:00
return res;
2019-04-16 06:09:16 +00:00
});
}
2019-12-19 10:37:53 +00:00
2020-05-19 08:51:50 +00:00
onUpdateGreugeAccept() {
const promises = [];
promises.push(this.getGreugeTypeId());
promises.push(this.getGreugeConfig());
return Promise.all(promises).then(() => {
2020-10-06 12:32:24 +00:00
return this.updateGreuge({
2020-05-19 08:51:50 +00:00
clientFk: this.claim.clientFk,
description: this.$t('ClaimGreugeDescription', {
claimId: this.claim.id
}).toUpperCase(),
amount: this.freightPickUpPrice,
greugeTypeFk: this.greugeTypeFreightId,
ticketFk: this.claim.ticketFk
2019-12-19 10:37:53 +00:00
});
2020-05-19 08:51:50 +00:00
});
}
2019-12-19 10:37:53 +00:00
2020-10-06 12:32:24 +00:00
updateGreuge(data) {
return this.$http.post(`Greuges`, data).then(() => {
this.vnApp.showSuccess(this.$t('Data saved!'));
this.vnApp.showMessage(this.$t('Greuge added'));
});
}
2020-05-13 13:04:57 +00:00
save(data) {
const query = `Claims/${this.$params.id}/updateClaimAction`;
this.$http.patch(query, data)
.then(() => this.vnApp.showSuccess(this.$t('Data saved!')));
}
2020-02-07 06:47:11 +00:00
onSave() {
this.vnApp.showSuccess(this.$t('Data saved!'));
2020-02-07 06:47:11 +00:00
}
onResponse() {
const rowsToEdit = [];
for (let row of this.checked)
rowsToEdit.push({id: row.id});
const data = {
rows: rowsToEdit,
claimDestinationFk: this.newDestination
};
const query = `Claims/updateClaimDestination`;
this.$http.post(query, data)
.then(() => {
this.$.model.refresh();
this.vnApp.showSuccess(this.$t('Data saved!'));
});
}
2018-09-05 09:34:23 +00:00
}
ngModule.vnComponent('vnClaimAction', {
2018-09-05 09:34:23 +00:00
template: require('./index.html'),
controller: Controller,
bindings: {
claim: '<'
2018-10-08 05:31:55 +00:00
},
require: {
card: '^vnClaimCard'
2018-09-05 09:34:23 +00:00
}
});