import ngModule from '../module'; import Section from 'salix/components/section'; import './style.scss'; export default class Controller extends Section { constructor($element, $) { super($element, $); this.filter = { include: [ {relation: 'sale', scope: { fields: ['concept', 'ticketFk', 'price', 'quantity', 'discount', 'itemFk'], include: { relation: 'ticket' } } }, {relation: 'claimBeggining'}, {relation: 'claimDestination'} ] }; this.getResolvedState(); this.maxResponsibility = 5; } getResolvedState() { const query = `ClaimStates/findOne`; const params = { filter: { where: { code: 'resolved' } } }; this.$http.get(query, params).then(res => this.resolvedStateId = res.data.id ); } importToNewRefundTicket() { let query = `ClaimBeginnings/${this.$params.id}/importToNewRefundTicket`; return this.$http.post(query).then(() => { this.$.model.refresh(); this.vnApp.showSuccess(this.$t('Data saved!')); }); } focusLastInput() { let inputs = document.querySelectorAll('#claimDestinationFk'); inputs[inputs.length - 1].querySelector('input').focus(); this.calculateTotals(); } calculateTotals() { this.claimedTotal = 0; this.salesClaimed.forEach(sale => { const price = sale.sale.quantity * sale.sale.price; const discount = (sale.sale.discount * (sale.sale.quantity * sale.sale.price)) / 100; this.claimedTotal += price - discount; }); } showLastTickets(event) { let pastWeek = new Date(); pastWeek.setDate(-7); let filter = { include: [ {relation: 'agencyMode', fields: ['name']}, {relation: 'warehouse', fields: ['name']} ], where: { created: {gt: pastWeek}, clientFk: this.claim.clientFk } }; this.$.lastTicketsModel.filter = filter; this.$.lastTicketsModel.refresh(); this.$.lastTicketsPopover.show(event); } importTicketLines(ticketFk) { let data = {claimFk: this.$params.id, ticketFk: ticketFk}; let query = `ClaimEnds/importTicketSales`; this.$http.post(query, data).then(() => { this.vnApp.showSuccess(this.$t('Data saved!')); this.$.lastTicketsPopover.hide(); this.$.model.refresh(); }); } regularize() { const query = `Claims/${this.$params.id}/regularizeClaim`; return this.$http.post(query).then(() => { if (this.claim.responsibility >= Math.ceil(this.maxResponsibility) / 2) this.$.updateGreuge.show(); else this.vnApp.showSuccess(this.$t('Data saved!')); this.card.reload(); }); } getGreugeTypeId() { const params = {filter: {where: {code: 'freightPickUp'}}}; const query = `GreugeTypes/findOne`; return this.$http.get(query, {params}).then(res => { this.greugeTypeFreightId = res.data.id; return res; }); } getGreugeConfig() { const query = `GreugeConfigs/findOne`; return this.$http.get(query).then(res => { this.freightPickUpPrice = res.data.freightPickUpPrice; return res; }); } onUpdateGreugeAccept() { const promises = []; promises.push(this.getGreugeTypeId()); promises.push(this.getGreugeConfig()); return Promise.all(promises).then(() => { return this.updateGreuge({ clientFk: this.claim.clientFk, description: this.$t('ClaimGreugeDescription', { claimId: this.claim.id }).toUpperCase(), amount: this.freightPickUpPrice, greugeTypeFk: this.greugeTypeFreightId, ticketFk: this.claim.ticketFk }); }); } updateGreuge(data) { return this.$http.post(`Greuges`, data).then(() => { this.vnApp.showSuccess(this.$t('Data saved!')); this.vnApp.showMessage(this.$t('Greuge added')); }); } save(data) { const query = `Claims/${this.$params.id}/updateClaimAction`; this.$http.patch(query, data) .then(() => this.vnApp.showSuccess(this.$t('Data saved!'))); } onSave() { this.vnApp.showSuccess(this.$t('Data saved!')); } } ngModule.vnComponent('vnClaimAction', { template: require('./index.html'), controller: Controller, bindings: { claim: '<' }, require: { card: '^vnClaimCard' } });