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:
2023-03-05 23:50:41 +05:30
parent 802eded568
commit e46fe7f90e
141 changed files with 2197 additions and 892 deletions

View File

@ -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">

View File

@ -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}`);
}
}