import ngModule from '../../module'; import './style.scss'; class Controller { constructor($stateParams, $translate, $scope, vnToken, $http) { this.$http = $http; this.$ = $scope; this.$stateParams = $stateParams; this.$translate = $translate; this.accessToken = vnToken.token; this.companyFk = window.localStorage.defaultCompanyFk; this.filter = { include: { relation: 'company', scope: { fields: ['code'], }, }, where: { clientFk: $stateParams.id, companyFk: this.companyFk }, }; this.params = { params: { clientFk: this.$stateParams.id, companyFk: this.companyFk, }, }; } setOrder(value) { this.params.params.companyFk = value; this.filter.where.companyFk = value; } refresh() { this.$.model.refresh(); this.$.riskModel.refresh(); } set balances(value) { this._balances = value; if (!value) return; const params = {filter: this.filter}; this.$http.get(`/client/api/ClientRisks`, {params}).then(response => { if (response.data) { this.clientRisks = response.data; this.getBalances(); } }); } get balances() { return this._balances; } getCurrentBalance() { const selectedCompany = this.$.company.selection; const currentBalance = this.clientRisks.find(balance => { return balance.companyFk === selectedCompany.id; }); return currentBalance.amount; } getBalances() { this.balances.forEach((balance, index) => { if (index === 0) balance.balance = this.getCurrentBalance(); if (index > 0) { let previousBalance = this.balances[index - 1]; balance.balance = previousBalance.balance - (previousBalance.debit - previousBalance.credit); } }); } openCreateDialog() { this.$.balanceCreateDialog.companyFk = this.companyFk; this.$.balanceCreateDialog.onResponse = () => { this.refresh(); }; this.$.balanceCreateDialog.show(); } showWorkerDescriptor(event, workerFk) { if (event.defaultPrevented) return; event.preventDefault(); event.stopPropagation(); this.selectedWorker = workerFk; this.$.workerDescriptor.parent = event.target; this.$.workerDescriptor.show(); } showInvoiceOutDescriptor(event, balance) { if (!balance.isInvoice) return; if (event.defaultPrevented) return; event.preventDefault(); event.stopPropagation(); this.selectedInvoiceOut = balance.id; this.$.invoiceOutDescriptor.parent = event.target; this.$.invoiceOutDescriptor.show(); } } Controller.$inject = ['$stateParams', '$translate', '$scope', 'vnToken', '$http']; ngModule.component('vnClientBalanceIndex', { template: require('./index.html'), controller: Controller, });