feat(purchases): implement purchase receipt functionality with form and receipt template
- Added `ProductPurchaseComponent` to handle product purchases. - Created `PurchaseReceiptTemplateComponent` for displaying purchase receipt details. - Developed `PurchaseFormComponent` for managing purchase form inputs and submission. - Introduced `ProductChargeRowFormComponent` and `ProductChargeRowFormFieldsComponent` for handling product charge rows in the form. - Implemented `PurchaseReceiptProductRowComponent` for displaying individual product rows in the receipt. - Established API routes for purchase operations in `apiRoutes`. - Integrated suppliers and inventories selection components. - Added utility functions for converting prices to Persian alphabet. - Created a utility for generating full names from name parts. - Enhanced form validation and submission handling in the purchase form. - Updated styles and templates for improved UI/UX.
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { Maybe } from '@/core';
|
||||
import { IProductResponse } from '@/modules/products/models';
|
||||
import { FormArray, FormControl, FormGroup } from '@angular/forms';
|
||||
|
||||
export * from './io';
|
||||
|
||||
export interface IPurchaseItemFormGroup extends FormGroup<{
|
||||
product: FormControl<IProductResponse | null>;
|
||||
count: FormControl<number>;
|
||||
fee: FormControl<number>;
|
||||
description: FormControl<string>;
|
||||
total: FormControl<number>;
|
||||
}> {}
|
||||
|
||||
export interface IPurchaseFormGroup extends FormGroup<{
|
||||
code: FormControl<string>;
|
||||
isSettled: FormControl<boolean>;
|
||||
buyAt: FormControl<string>;
|
||||
description: FormControl<Maybe<string>>;
|
||||
products: FormArray<IPurchaseItemFormGroup>;
|
||||
inventoryId: FormControl<number>;
|
||||
supplierId: FormControl<number>;
|
||||
}> {}
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
import { Maybe } from '@/core';
|
||||
|
||||
export interface IPurchaseRawResponse {
|
||||
id: number;
|
||||
totalAmount: number;
|
||||
inventoryId: number;
|
||||
supplierId: number;
|
||||
code: string;
|
||||
items: IPurchaseItemResponse[];
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
deletedAt?: string;
|
||||
}
|
||||
|
||||
export interface IPurchaseResponse extends IPurchaseRawResponse {}
|
||||
|
||||
export interface IPurchaseItemRawResponse {
|
||||
id: number;
|
||||
count: number;
|
||||
fee: number;
|
||||
total: number;
|
||||
productId: number;
|
||||
}
|
||||
|
||||
export interface IPurchaseRequest {
|
||||
totalAmount: number;
|
||||
inventoryId: number;
|
||||
supplierId: number;
|
||||
code?: string;
|
||||
description?: string;
|
||||
items: IPurchaseItemRequest[];
|
||||
}
|
||||
|
||||
export interface IPurchaseItemRequest {
|
||||
productId: number;
|
||||
count: number;
|
||||
fee: number;
|
||||
total: number;
|
||||
}
|
||||
|
||||
export interface IPurchaseForm {
|
||||
inventory: Maybe<IInventoryResponse>;
|
||||
supplier: Maybe<ISupplierResponse>;
|
||||
code: string;
|
||||
isSettled: boolean;
|
||||
buyAt: Date | string;
|
||||
description: string;
|
||||
totalAmount: number;
|
||||
products: IPurchaseItemForm[];
|
||||
}
|
||||
export interface IPurchaseItemForm {
|
||||
product: Maybe<IProductResponse>;
|
||||
count: number;
|
||||
fee: number;
|
||||
total: number;
|
||||
description?: string;
|
||||
}
|
||||
Reference in New Issue
Block a user