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

198 lines
6.2 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, $);
2018-09-05 09:34:23 +00:00
this.filter = {
2020-03-16 10:58:14 +00:00
where: {claimFk: this.$params.id},
2018-09-05 09:34:23 +00:00
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
]
};
2018-10-08 05:31:55 +00:00
this.resolvedState = 3;
2019-04-16 06:09:16 +00:00
this.maxResponsibility = 5;
2018-09-05 09:34:23 +00:00
}
openAddSalesDialog() {
this.getClaimedSales();
this.$.addSales.show();
}
getClaimedSales() {
2020-03-16 10:58:14 +00:00
let query = `ClaimBeginnings/${this.claim.id}`;
2018-09-05 09:34:23 +00:00
this.$http.get(query).then(res => {
2018-11-21 12:29:46 +00:00
if (res.data)
2018-09-05 09:34:23 +00:00
this.claimedSales = res.data;
});
}
addClaimedSale(saleFk) {
let saleToAdd = {saleFk: saleFk, claimFk: this.claim.id, workerFk: this.claim.workerFk, claimDestinationFk: 1};
let query = `ClaimEnds/`;
2018-09-05 09:34:23 +00:00
this.$http.post(query, saleToAdd).then(() => {
this.$.model.refresh();
this.$.addSales.hide();
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
});
}
deleteClaimedSale(id) {
2020-03-16 10:58:14 +00:00
let query = `ClaimEnds/${id}`;
2018-09-05 09:34:23 +00:00
this.$http.delete(query).then(() => {
this.$.model.refresh();
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
});
}
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.$translate.instant('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 => {
this.claimedTotal += (sale.sale.quantity * sale.sale.price) - ((sale.sale.discount * (sale.sale.quantity * sale.sale.price)) / 100);
});
}
showLastTickets(event) {
let pastWeek = new Date();
pastWeek.setDate(-7);
let filter = {
include: [
{relation: 'agencyMode', fields: ['name']},
{relation: 'warehouse', fields: ['name']}
],
where: {
created: {gt: pastWeek},
2018-12-04 09:11:02 +00:00
clientFk: this.claim.clientFk
}
};
this.$.lastTicketsModel.filter = filter;
this.$.lastTicketsModel.refresh();
this.$.lastTicketsPopover.parent = event.target;
this.$.lastTicketsPopover.show();
}
importTicketLines(ticketFk) {
2020-03-16 10:58:14 +00:00
let data = {claimFk: this.$params.id, ticketFk: ticketFk};
let query = `ClaimEnds/importTicketSales`;
this.$http.post(query, data).then(() => {
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
this.$.lastTicketsPopover.hide();
this.$.model.refresh();
});
}
2018-10-08 05:31:55 +00:00
regularize() {
2020-03-16 10:58:14 +00:00
let data = {claimFk: this.$params.id};
let query = `Claims/regularizeClaim`;
2019-06-20 11:50:58 +00:00
return this.$http.post(query, data).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.$translate.instant('Data saved!'));
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
onUpdateGreugeResponse(response) {
if (response == 'accept') {
const promises = [];
promises.push(this.getGreugeTypeId());
promises.push(this.getGreugeConfig());
2019-12-20 08:30:35 +00:00
return Promise.all(promises).then(() => {
2019-12-19 10:37:53 +00:00
const data = {
clientFk: this.claim.clientFk,
description: this.$translate.instant('ClaimGreugeDescription', {
claimId: this.claim.id
}).toUpperCase(),
amount: this.freightPickUpPrice,
greugeTypeFk: this.greugeTypeFreightId,
ticketFk: this.claim.ticketFk
};
2019-12-20 08:30:35 +00:00
return this.$http.post(`Greuges/`, data).then(() => {
2019-12-19 10:37:53 +00:00
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
this.vnApp.showMessage(this.$translate.instant('Greuge inserted'));
});
});
} else
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
}
2019-01-15 11:06:19 +00:00
saveResponsibility(value) {
2020-03-16 10:58:14 +00:00
let query = `Claims/${this.$params.id}/updateClaimAction`;
2019-01-15 11:06:19 +00:00
this.$http.post(query, {responsibility: value}).then(() => {
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
});
}
2019-12-19 10:37:53 +00:00
saveMana(value) {
2020-03-16 10:58:14 +00:00
let query = `Claims/${this.$params.id}/updateClaimAction`;
this.$http.post(query, {isChargedToMana: value}).then(() => {
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
});
}
2020-02-07 06:47:11 +00:00
onSave() {
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
}
2018-09-05 09:34:23 +00:00
}
ngModule.component('vnClaimAction', {
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
}
});