Feature: Tax Regimes are added so that different bills with different series can be printed for Different regimes such as VAT and GST
Chore: Model relationships updated to make them simpler Chore: Bill printing majorly refactored for it Due to the sheer depth of the changes. There can be showstoppers. Please test it carefully
This commit is contained in:
@ -2,12 +2,11 @@
|
||||
<form [formGroup]="form">
|
||||
<div class="flex flex-row justify-around content-start items-start sm:max-lg:flex-col">
|
||||
<mat-form-field class="flex-auto basis-[15%] mr-5">
|
||||
<mat-select formControlName="billType">
|
||||
<mat-option value="0">KOT</mat-option>
|
||||
<mat-option value="1">Regular Bill</mat-option>
|
||||
<mat-option value="4">Staff</mat-option>
|
||||
<mat-option value="2">No Charge</mat-option>
|
||||
<mat-option value="8">Void</mat-option>
|
||||
<mat-label>Regime</mat-label>
|
||||
<mat-select formControlName="regime">
|
||||
<mat-option *ngFor="let r of regimes" [value]="r">
|
||||
{{ r.name }}
|
||||
</mat-option>
|
||||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field class="flex-auto">
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
|
||||
import { MatDialogRef } from '@angular/material/dialog';
|
||||
import { Component, Inject, OnInit } from '@angular/core';
|
||||
import { FormControl, FormGroup } from '@angular/forms';
|
||||
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
|
||||
import { Regime } from 'src/app/core/regime';
|
||||
|
||||
@Component({
|
||||
selector: 'app-bill-number',
|
||||
@ -8,50 +9,40 @@ import { MatDialogRef } from '@angular/material/dialog';
|
||||
styleUrls: ['./bill-number.component.css'],
|
||||
})
|
||||
export class BillNumberComponent implements OnInit {
|
||||
form: UntypedFormGroup;
|
||||
form: FormGroup<{
|
||||
regime: FormControl<Regime | null>;
|
||||
billNumber: FormControl<number>;
|
||||
}>;
|
||||
|
||||
constructor(public dialogRef: MatDialogRef<BillNumberComponent>, private fb: UntypedFormBuilder) {
|
||||
regimes: Regime[] = [];
|
||||
|
||||
constructor(
|
||||
public dialogRef: MatDialogRef<BillNumberComponent>,
|
||||
@Inject(MAT_DIALOG_DATA)
|
||||
public data: Regime[],
|
||||
) {
|
||||
this.regimes = data;
|
||||
// Create form
|
||||
this.form = this.fb.group({
|
||||
billType: '',
|
||||
billNumber: '',
|
||||
this.form = new FormGroup({
|
||||
regime: new FormControl<Regime | null>(null),
|
||||
billNumber: new FormControl<number>(0, { nonNullable: true }),
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.form.setValue({
|
||||
billType: '1',
|
||||
billNumber: '',
|
||||
regime: null,
|
||||
billNumber: 0,
|
||||
});
|
||||
}
|
||||
|
||||
accept(): void {
|
||||
const formValue = this.form.value;
|
||||
const billNumber = parseInt(formValue.billNumber.replace('-', ''), 10);
|
||||
if (isNaN(billNumber)) {
|
||||
const billNumber = formValue.billNumber ?? 0;
|
||||
const regime = formValue.regime ?? null;
|
||||
if (regime == null) {
|
||||
this.dialogRef.close(undefined);
|
||||
} else {
|
||||
let billId: string;
|
||||
switch (formValue.billType) {
|
||||
case '0': // KOT
|
||||
billId = 'K-' + billNumber;
|
||||
break;
|
||||
case '1': // Regular Bill
|
||||
billId = Math.floor(billNumber / 10000) + '-' + (billNumber % 10000);
|
||||
break;
|
||||
case '4': // Staff
|
||||
billId = 'ST-' + billNumber;
|
||||
break;
|
||||
case '2': // No Charge
|
||||
billId = 'NC-' + billNumber;
|
||||
break;
|
||||
case '8': // Void
|
||||
billId = 'V-' + billNumber;
|
||||
break;
|
||||
default:
|
||||
throw new Error('Unknown Bill Type');
|
||||
}
|
||||
this.dialogRef.close(billId);
|
||||
}
|
||||
this.dialogRef.close(`${regime?.prefix}-${billNumber}`);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user