Fix: Bill Deactivate guard was running when printing kots / bills when items were added to new kot.
This commit is contained in:
parent
1287d8f7ac
commit
17702a433b
@ -74,8 +74,6 @@ def settlements(s: date, f: date, db: Session) -> List[BillSettlementItem]:
|
||||
amount=round(so.amount, 2),
|
||||
)
|
||||
)
|
||||
for i in report:
|
||||
print(i.json())
|
||||
return report
|
||||
|
||||
|
||||
|
@ -34,6 +34,7 @@ export class BillService {
|
||||
public selection = new SelectionModel<string>(true, []);
|
||||
private amountBs: BehaviorSubject<number>;
|
||||
private updateTable: boolean;
|
||||
private allowDeactivate: boolean; // To disable Deactivate Guard on navigation after printing bill or kot.
|
||||
|
||||
constructor(
|
||||
private dialog: MatDialog,
|
||||
@ -49,17 +50,19 @@ export class BillService {
|
||||
this.amountBs = new BehaviorSubject(0);
|
||||
this.amountVal = 0;
|
||||
this.updateTable = true;
|
||||
this.allowDeactivate = false;
|
||||
this.amount = this.amountBs.pipe(tap((x) => (this.amountVal = x)));
|
||||
}
|
||||
|
||||
displayBill(): void {
|
||||
this.allowDeactivate = false;
|
||||
const data = this.transformBillToView(this.bill);
|
||||
this.dataObs.next(data);
|
||||
this.updateAmounts();
|
||||
}
|
||||
|
||||
transformBillToView(bill: Bill): BillViewItem[] {
|
||||
const view: BillViewItem[] = bill.kots
|
||||
return bill.kots
|
||||
.map((k: Kot) => [
|
||||
new BillViewItem({
|
||||
kotId: k.id,
|
||||
@ -85,7 +88,6 @@ export class BillService {
|
||||
),
|
||||
])
|
||||
.reduce((a, c) => a.concat(c), []);
|
||||
return view;
|
||||
}
|
||||
|
||||
loadData(bill: Bill, updateTable: boolean): void {
|
||||
@ -241,7 +243,9 @@ export class BillService {
|
||||
if (!this.happyHourItemsBalanced() || this.happyHourItemsMoreThanRegular()) {
|
||||
return throwError('Happy hour products are not balanced.');
|
||||
}
|
||||
return this.ser.saveOrUpdate(item, VoucherType.Kot, guestBookId, this.updateTable);
|
||||
return this.ser
|
||||
.saveOrUpdate(item, VoucherType.Kot, guestBookId, this.updateTable)
|
||||
.pipe(tap(() => (this.allowDeactivate = true)));
|
||||
}
|
||||
|
||||
printBill(guest_book_id: string | null, voucherType: VoucherType): Observable<boolean> {
|
||||
@ -253,7 +257,9 @@ export class BillService {
|
||||
if (!this.happyHourItemsBalanced() || this.happyHourItemsMoreThanRegular()) {
|
||||
return throwError('Happy hour products are not balanced.');
|
||||
}
|
||||
return this.ser.saveOrUpdate(item, voucherType, guest_book_id, this.updateTable);
|
||||
return this.ser
|
||||
.saveOrUpdate(item, voucherType, guest_book_id, this.updateTable)
|
||||
.pipe(tap(() => (this.allowDeactivate = true)));
|
||||
}
|
||||
|
||||
receivePayment(value: { choices: ReceivePaymentItem[]; reason: string }): Observable<boolean> {
|
||||
@ -397,8 +403,11 @@ export class BillService {
|
||||
return false;
|
||||
}
|
||||
|
||||
public isDirty(): boolean {
|
||||
public canDeactivate(): boolean {
|
||||
if (this.allowDeactivate) {
|
||||
return true;
|
||||
}
|
||||
const newKot = this.bill.kots.find((k) => k.id === undefined) as Kot;
|
||||
return newKot.inventories.length !== 0;
|
||||
return newKot.inventories.length === 0;
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import { BillsComponent } from './bills/bills.component';
|
||||
export class CanDeactivateBillGuard implements CanDeactivate<BillsComponent> {
|
||||
constructor(private dialog: MatDialog) {}
|
||||
canDeactivate(component: BillsComponent): Observable<boolean> | boolean {
|
||||
if (!component.bs.isDirty()) {
|
||||
if (component.bs.canDeactivate()) {
|
||||
return observableOf(true);
|
||||
}
|
||||
const dialogRef = this.dialog.open(ConfirmDialogComponent, {
|
||||
|
Loading…
Reference in New Issue
Block a user