Support date query param for journal / payment / reciept voucher

This commit is contained in:
2025-07-15 17:46:39 +00:00
parent e35db8144b
commit efd9d1da7a
17 changed files with 264 additions and 448 deletions
+25 -64
View File
@@ -1,37 +1,19 @@
import { AsyncPipe, CurrencyPipe, DecimalPipe } from '@angular/common';
import { AfterViewInit, Component, ElementRef, HostListener, inject, OnInit, ViewChild } from '@angular/core';
import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { MatButton, MatIconButton } from '@angular/material/button';
import {
MatCard,
MatCardActions,
MatCardContent,
MatCardFooter,
MatCardHeader,
MatCardTitle,
} from '@angular/material/card';
import { MatOption } from '@angular/material/core';
import { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';
import { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatOptionModule } from '@angular/material/core';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatDialog } from '@angular/material/dialog';
import { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';
import { MatIcon } from '@angular/material/icon';
import { MatInput } from '@angular/material/input';
import { MatSelect } from '@angular/material/select';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatIconModule } from '@angular/material/icon';
import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import { MatSnackBar } from '@angular/material/snack-bar';
import { MatSort } from '@angular/material/sort';
import {
MatCell,
MatCellDef,
MatColumnDef,
MatHeaderCell,
MatHeaderCellDef,
MatHeaderRow,
MatHeaderRowDef,
MatRow,
MatRowDef,
MatTable,
} from '@angular/material/table';
import { MatSortModule } from '@angular/material/sort';
import { MatTableModule } from '@angular/material/table';
import { ActivatedRoute, Router } from '@angular/router';
import { round } from 'mathjs';
import moment from 'moment';
@@ -60,39 +42,18 @@ import { IssueGridService } from './issue-grid.service';
templateUrl: './issue.component.html',
styleUrls: ['./issue.component.css'],
imports: [
MatCard,
MatCardHeader,
MatCardTitle,
MatCardContent,
MatCardModule,
ReactiveFormsModule,
MatFormField,
MatLabel,
MatInput,
MatDatepickerInput,
MatDatepickerToggle,
MatSuffix,
MatDatepicker,
MatSelect,
MatOption,
MatPrefix,
MatAutocompleteTrigger,
MatAutocomplete,
MatButton,
MatTable,
MatSort,
MatColumnDef,
MatHeaderCellDef,
MatHeaderCell,
MatCellDef,
MatCell,
MatIconButton,
MatIcon,
MatHeaderRowDef,
MatHeaderRow,
MatRowDef,
MatRow,
MatCardActions,
MatCardFooter,
MatFormFieldModule,
MatInputModule,
MatDatepickerModule,
MatSelectModule,
MatOptionModule,
MatAutocompleteModule,
MatIconModule,
MatButtonModule,
MatTableModule,
MatSortModule,
AsyncPipe,
DecimalPipe,
CurrencyPipe,
@@ -133,7 +94,7 @@ export class IssueComponent implements OnInit, AfterViewInit {
dataSource: IssueDataSource = new IssueDataSource(this.inventoryObservable);
gridDataSource: IssueGridDataSource = new IssueGridDataSource(this.gridObservable);
form: FormGroup<{
date: FormControl<Date>;
date: FormControl<moment.Moment>;
source: FormControl<string | null>;
destination: FormControl<string | null>;
amount: FormControl<number>;
@@ -155,7 +116,7 @@ export class IssueComponent implements OnInit, AfterViewInit {
constructor() {
this.form = new FormGroup({
date: new FormControl(new Date(), { nonNullable: true }),
date: new FormControl(moment(new Date()), { nonNullable: true }),
source: new FormControl<string | null>(null),
destination: new FormControl<string | null>(null),
amount: new FormControl({ value: 0, disabled: true }, { nonNullable: true }),
@@ -198,7 +159,7 @@ export class IssueComponent implements OnInit, AfterViewInit {
loadVoucher(voucher: Voucher) {
this.voucher = voucher;
this.form.setValue({
date: moment(this.voucher.date, 'DD-MMM-YYYY').toDate(),
date: moment(this.voucher.date, 'DD-MMM-YYYY'),
source: (this.voucher.source as CostCentre).id ?? '',
destination: (this.voucher.destination as CostCentre).id ?? '',
amount: Math.abs(this.voucher.inventories.map((x) => x.amount).reduce((p, c) => p + c, 0)),