import ngModule from '../module'; import './style.scss'; class Controller { constructor($state, $scope, $http, $translate, vnApp) { this.$state = $state; this.$ = $scope; this.$http = $http; this.$translate = $translate; this.vnApp = vnApp; this.filter = { where: {claimFk: $state.params.id}, include: [ { relation: 'sale', scope: { fields: ['concept', 'ticketFk', 'price', 'quantity', 'discount', 'itemFk'], include: { relation: 'ticket' } } } ] }; } set salesClaimed(value) { this._salesClaimed = value; if (value) this.calculateTotals(); } get salesClaimed() { return this._salesClaimed; } openAddSalesDialog() { this.getClaimableFromTicket(); this.$.addSales.show(); } getClaimableFromTicket() { let config = {params: {ticketFk: this.claim.ticketFk}}; let query = `/api/Sales/getClaimableFromTicket`; this.$http.get(query, config).then(res => { if (res.data) this.salesToClaim = res.data; }); } addClaimedSale(index) { let sale = this.salesToClaim[index]; let saleToAdd = {saleFk: sale.saleFk, claimFk: this.claim.id, quantity: 0}; let query = `claim/api/ClaimBeginnings/`; this.$http.post(query, saleToAdd).then(() => { this.$.addSales.hide(); this.$.model.refresh(); this.vnApp.showSuccess(this.$translate.instant('Data saved!')); }); } deleteClaimedSale(index) { let sale = this.salesClaimed[index]; let query = `claim/api/ClaimBeginnings/${sale.id}`; this.$http.delete(query).then(() => { this.vnApp.showSuccess(this.$translate.instant('Data saved!')); this.$.model.remove(index); this.calculateTotals(); }); } setClaimedQuantity(id, claimedQuantity) { let params = {id: id, quantity: claimedQuantity}; let query = `claim/api/ClaimBeginnings/`; this.$http.patch(query, params).then(() => { this.vnApp.showSuccess(this.$translate.instant('Data saved!')); this.calculateTotals(); }); } calculateTotals() { this.paidTotal = 0.0; this.claimedTotal = 0.0; if (!this._salesClaimed) return; this._salesClaimed.forEach(sale => { let orgSale = sale.sale; this.paidTotal += this.getSaleTotal(orgSale); this.claimedTotal += sale.quantity * orgSale.price - ((orgSale.discount * (sale.quantity * orgSale.price)) / 100); }); } getSaleTotal(sale) { let total = 0.0; total += sale.quantity * sale.price - ((sale.discount * (sale.quantity * sale.price)) / 100); return total; } // Item Descriptor showDescriptor(event, itemFk) { this.quicklinks = { btnThree: { icon: 'icon-transaction', state: `item.card.diary({ id: ${itemFk} })`, tooltip: 'Item diary' } }; this.$.descriptor.itemFk = itemFk; this.$.descriptor.parent = event.target; this.$.descriptor.show(); } } Controller.$inject = ['$state', '$scope', '$http', '$translate', 'vnApp']; ngModule.component('vnClaimDetail', { template: require('./index.html'), controller: Controller, bindings: { claim: '<' } });