Tag: v7.0.2

Fix: Attendance Type and Account Type objects were borking as their convenience methods were not returning anything
Fix: Employee Benefits and Incentive post voucher did not reload the page
Fix: For all vouchers, to prevent double data loading on save / update either reload data or navigate, don't reload data and then navigate so that the data appears once and then disappears
This commit is contained in:
2020-06-02 08:35:36 +05:30
parent b7a1c5b816
commit 6ccb3634be
11 changed files with 99 additions and 63 deletions

View File

@ -1,6 +1,6 @@
{
"name": "overlord",
"version": "7.0.1",
"version": "7.0.2",
"scripts": {
"ng": "ng",
"start": "ng serve",

View File

@ -52,17 +52,7 @@ export class EmployeeBenefitsComponent implements OnInit, AfterViewInit {
ngOnInit() {
this.route.data
.subscribe((data: { voucher: Voucher }) => {
this.voucher = data.voucher;
this.form.setValue({
date: moment(this.voucher.date, 'DD-MMM-YYYY').toDate(),
addRow: {
employee: '1',
grossSalary: '',
daysWorked: ''
}
});
this.dataSource = new EmployeeBenefitsDataSource(this.benefitsObservable);
this.benefitsObservable.next(this.voucher.employeeBenefits);
this.loadVoucher(data.voucher);
});
}
@ -72,6 +62,20 @@ export class EmployeeBenefitsComponent implements OnInit, AfterViewInit {
}, 0);
}
loadVoucher(voucher) {
this.voucher = voucher;
this.form.setValue({
date: moment(this.voucher.date, 'DD-MMM-YYYY').toDate(),
addRow: {
employee: '1',
grossSalary: '',
daysWorked: ''
}
});
this.dataSource = new EmployeeBenefitsDataSource(this.benefitsObservable);
this.benefitsObservable.next(this.voucher.employeeBenefits);
}
createForm() {
this.form = this.fb.group({
date: '',
@ -181,6 +185,7 @@ export class EmployeeBenefitsComponent implements OnInit, AfterViewInit {
this.ser.post(this.voucher.id)
.subscribe(
(result) => {
this.loadVoucher(result);
this.toaster.show('Success', 'Voucher Posted');
},
(error) => {
@ -190,11 +195,16 @@ export class EmployeeBenefitsComponent implements OnInit, AfterViewInit {
}
save() {
this.ser.saveOrUpdate(this.getVoucher())
const voucher: Voucher = this.getVoucher();
this.ser.saveOrUpdate(voucher)
.subscribe(
(result) => {
this.toaster.show('Success', '');
if (voucher.id === result.id) {
this.loadVoucher(result);
} else {
this.router.navigate(['/employee-benefits', result.id]);
}
},
(error) => {
this.toaster.show('Danger', error);

View File

@ -46,20 +46,24 @@ export class IncentiveComponent implements OnInit {
ngOnInit() {
this.route.data
.subscribe((data: { voucher: Voucher }) => {
this.voucher = data.voucher;
this.form.get('date').setValue(moment(this.voucher.date, 'DD-MMM-YYYY').toDate());
this.form.setControl('incentives', this.fb.array(
this.voucher.incentives.map(
x => this.fb.group({
points: x.points
})
)
));
this.dataSource = new IncentiveDataSource(this.incentiveObservable);
this.incentiveObservable.next(this.voucher.incentives);
this.loadVoucher(data.voucher);
});
}
loadVoucher(voucher) {
this.voucher = voucher;
this.form.get('date').setValue(moment(this.voucher.date, 'DD-MMM-YYYY').toDate());
this.form.setControl('incentives', this.fb.array(
this.voucher.incentives.map(
x => this.fb.group({
points: x.points
})
)
));
this.dataSource = new IncentiveDataSource(this.incentiveObservable);
this.incentiveObservable.next(this.voucher.incentives);
}
createForm() {
this.form = this.fb.group({
date: '',
@ -74,17 +78,7 @@ export class IncentiveComponent implements OnInit {
if (x !== this.voucher.date && !this.voucher.id) {
return this.ser.getIncentive(x)
.subscribe((voucher: Voucher) => {
this.voucher = voucher;
this.form.get('date').setValue(moment(this.voucher.date, 'DD-MMM-YYYY').toDate());
this.form.setControl('incentives', this.fb.array(
this.voucher.incentives.map(
i => this.fb.group({
points: i.points
})
)
));
this.dataSource = new IncentiveDataSource(this.incentiveObservable);
this.incentiveObservable.next(this.voucher.incentives);
this.loadVoucher(voucher);
});
}
});
@ -137,6 +131,7 @@ export class IncentiveComponent implements OnInit {
this.ser.post(this.voucher.id)
.subscribe(
(result) => {
this.loadVoucher(result);
this.toaster.show('Success', 'Voucher Posted');
},
(error) => {
@ -146,11 +141,15 @@ export class IncentiveComponent implements OnInit {
}
save() {
this.ser.saveOrUpdate(this.getVoucher())
const voucher: Voucher = this.getVoucher();
this.ser.saveOrUpdate(voucher)
.subscribe(
(result) => {
this.toaster.show('Success', '');
if (voucher.id === result.id) {
this.loadVoucher(result);
} else {
this.router.navigate(['/incentive', result.id]);
}
},
(error) => {
this.toaster.show('Danger', error);

View File

@ -215,12 +215,16 @@ export class IssueComponent implements OnInit, AfterViewInit, OnDestroy {
}
save() {
this.ser.saveOrUpdate(this.getVoucher())
const voucher: Voucher = this.getVoucher();
this.ser.saveOrUpdate(voucher)
.subscribe(
(result) => {
this.loadVoucher(result);
this.toaster.show('Success', '');
if (voucher.id === result.id) {
this.loadVoucher(result);
} else {
this.router.navigate(['/issue', result.id]);
}
},
(error) => {
this.toaster.show('Danger', error);

View File

@ -17,7 +17,7 @@ import {ToasterService} from '../core/toaster.service';
import {debounceTime, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';
import {JournalDialogComponent} from './journal-dialog.component';
import {ImageDialogComponent} from '../shared/image-dialog/image-dialog.component';
import {Hotkey, HotkeysService} from "angular2-hotkeys";
import {Hotkey, HotkeysService} from 'angular2-hotkeys';
@Component({
selector: 'app-journal',
@ -66,13 +66,15 @@ export class JournalComponent implements OnInit, AfterViewInit, OnDestroy {
return false; // Prevent bubbling
}, ['INPUT', 'SELECT', 'TEXTAREA']));
this.hotkeys.add(new Hotkey('ctrl+s', (event: KeyboardEvent): boolean => {
if (this.canSave())
if (this.canSave()) {
this.save();
}
return false; // Prevent bubbling
}, ['INPUT', 'SELECT', 'TEXTAREA']));
this.hotkeys.add(new Hotkey('ctrl+p', (event: KeyboardEvent): boolean => {
if (this.voucher.id && !this.voucher.posted && this.auth.user.perms.indexOf('post-vouchers') !== -1)
if (this.voucher.id && !this.voucher.posted && this.auth.user.perms.indexOf('post-vouchers') !== -1) {
this.post();
}
return false; // Prevent bubbling
}, ['INPUT', 'SELECT', 'TEXTAREA']));
}
@ -225,12 +227,16 @@ export class JournalComponent implements OnInit, AfterViewInit, OnDestroy {
}
save() {
this.ser.saveOrUpdate(this.getVoucher())
const voucher: Voucher = this.getVoucher();
this.ser.saveOrUpdate(voucher)
.subscribe(
(result) => {
this.loadVoucher(result);
this.toaster.show('Success', '');
if (voucher.id === result.id) {
this.loadVoucher(result);
} else {
this.router.navigate(['/journal', result.id]);
}
},
(error) => {
this.toaster.show('Danger', error);

View File

@ -17,7 +17,7 @@ import {ToasterService} from '../core/toaster.service';
import {debounceTime, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';
import {PaymentDialogComponent} from './payment-dialog.component';
import {ImageDialogComponent} from '../shared/image-dialog/image-dialog.component';
import {Hotkey, HotkeysService} from "angular2-hotkeys";
import {Hotkey, HotkeysService} from 'angular2-hotkeys';
@Component({
selector: 'app-payment',
@ -229,12 +229,16 @@ export class PaymentComponent implements OnInit, AfterViewInit, OnDestroy {
}
save() {
this.ser.saveOrUpdate(this.getVoucher())
const voucher: Voucher = this.getVoucher();
this.ser.saveOrUpdate(voucher)
.subscribe(
(result) => {
this.loadVoucher(result);
this.toaster.show('Success', '');
if (voucher.id === result.id) {
this.loadVoucher(result);
} else {
this.router.navigate(['/payment', result.id]);
}
},
(error) => {
this.toaster.show('Danger', error);

View File

@ -215,12 +215,16 @@ export class PurchaseReturnComponent implements OnInit, AfterViewInit, OnDestroy
}
save() {
this.ser.saveOrUpdate(this.getVoucher())
const voucher: Voucher = this.getVoucher();
this.ser.saveOrUpdate(voucher)
.subscribe(
(result) => {
this.loadVoucher(result);
this.toaster.show('Success', '');
if (voucher.id === result.id) {
this.loadVoucher(result);
} else {
this.router.navigate(['/purchase-return', result.id]);
}
},
(error) => {
this.toaster.show('Danger', error);

View File

@ -228,12 +228,16 @@ export class PurchaseComponent implements OnInit, AfterViewInit, OnDestroy {
}
save() {
this.ser.saveOrUpdate(this.getVoucher())
const voucher: Voucher = this.getVoucher();
this.ser.saveOrUpdate(voucher)
.subscribe(
(result) => {
this.loadVoucher(result);
this.toaster.show('Success', '');
if (voucher.id === result.id) {
this.loadVoucher(result);
} else {
this.router.navigate(['/purchase', result.id]);
}
},
(error) => {
this.toaster.show('Danger', error);

View File

@ -17,7 +17,7 @@ import {ToasterService} from '../core/toaster.service';
import {debounceTime, distinctUntilChanged, map, startWith, switchMap} from 'rxjs/operators';
import {ReceiptDialogComponent} from './receipt-dialog.component';
import {ImageDialogComponent} from '../shared/image-dialog/image-dialog.component';
import {Hotkey, HotkeysService} from "angular2-hotkeys";
import {Hotkey, HotkeysService} from 'angular2-hotkeys';
@Component({
selector: 'app-receipt',
@ -70,13 +70,15 @@ export class ReceiptComponent implements OnInit, AfterViewInit, OnDestroy {
return false; // Prevent bubbling
}, ['INPUT', 'SELECT', 'TEXTAREA']));
this.hotkeys.add(new Hotkey('ctrl+s', (event: KeyboardEvent): boolean => {
if (this.canSave())
if (this.canSave()) {
this.save();
}
return false; // Prevent bubbling
}, ['INPUT', 'SELECT', 'TEXTAREA']));
this.hotkeys.add(new Hotkey('ctrl+p', (event: KeyboardEvent): boolean => {
if (this.voucher.id && !this.voucher.posted && this.auth.user.perms.indexOf('post-vouchers') !== -1)
if (this.voucher.id && !this.voucher.posted && this.auth.user.perms.indexOf('post-vouchers') !== -1) {
this.post();
}
return false; // Prevent bubbling
}, ['INPUT', 'SELECT', 'TEXTAREA']));
}
@ -228,12 +230,16 @@ export class ReceiptComponent implements OnInit, AfterViewInit, OnDestroy {
}
save() {
this.ser.saveOrUpdate(this.getVoucher())
const voucher: Voucher = this.getVoucher();
this.ser.saveOrUpdate(voucher)
.subscribe(
(result) => {
this.loadVoucher(result);
this.toaster.show('Success', '');
if (voucher.id === result.id) {
this.loadVoucher(result);
} else {
this.router.navigate(['/receipt', result.id]);
}
},
(error) => {
this.toaster.show('Danger', error);