feat(web): add Form990Report permission and expense functional-class/line fields
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,7 @@ export const PermissionModules = {
|
|||||||
OfferingSessions: 'OfferingSessions',
|
OfferingSessions: 'OfferingSessions',
|
||||||
Ministries: 'Ministries',
|
Ministries: 'Ministries',
|
||||||
FinanceDashboard: 'FinanceDashboard',
|
FinanceDashboard: 'FinanceDashboard',
|
||||||
|
Form990Report: 'Form990Report',
|
||||||
MonthlyStatements: 'MonthlyStatements',
|
MonthlyStatements: 'MonthlyStatements',
|
||||||
ChurchProfile: 'ChurchProfile',
|
ChurchProfile: 'ChurchProfile',
|
||||||
Disbursements: 'Disbursements',
|
Disbursements: 'Disbursements',
|
||||||
|
|||||||
+1
@@ -146,6 +146,7 @@ export class ExpenseFormDialogComponent implements OnInit {
|
|||||||
checkNumber: this.mode === 'vendor' ? (this.form.checkNumber || null) : null,
|
checkNumber: this.mode === 'vendor' ? (this.form.checkNumber || null) : null,
|
||||||
expenseDate,
|
expenseDate,
|
||||||
notes: null,
|
notes: null,
|
||||||
|
functionalClass: null,
|
||||||
};
|
};
|
||||||
// The request and receipt are snapshotted here, so resetting the form right
|
// The request and receipt are snapshotted here, so resetting the form right
|
||||||
// after emitting is safe even though the parent saves asynchronously.
|
// after emitting is safe even though the parent saves asynchronously.
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
export type ExpenseType = 'VendorPayment' | 'StaffReimbursement';
|
export type ExpenseType = 'VendorPayment' | 'StaffReimbursement';
|
||||||
export type ExpenseStatus = 'Draft' | 'PendingApproval' | 'Approved' | 'Paid' | 'Rejected';
|
export type ExpenseStatus = 'Draft' | 'PendingApproval' | 'Approved' | 'Paid' | 'Rejected';
|
||||||
|
export type FunctionalClass = 'Program' | 'ManagementGeneral' | 'Fundraising';
|
||||||
|
|
||||||
export interface PagedResult<T> {
|
export interface PagedResult<T> {
|
||||||
items: T[]; totalCount: number; page: number; pageSize: number; totalPages: number;
|
items: T[]; totalCount: number; page: number; pageSize: number; totalPages: number;
|
||||||
@@ -7,8 +8,8 @@ export interface PagedResult<T> {
|
|||||||
|
|
||||||
export interface MinistryDto { id: number; name_en: string; name_zh: string | null; sortOrder: number; isActive: boolean; label?: string; }
|
export interface MinistryDto { id: number; name_en: string; name_zh: string | null; sortOrder: number; isActive: boolean; label?: string; }
|
||||||
|
|
||||||
export interface ExpenseSubCategoryDto { id: number; groupId: number; name_en: string; name_zh: string | null; sortOrder: number; isActive: boolean; label?: string; }
|
export interface ExpenseSubCategoryDto { id: number; groupId: number; name_en: string; name_zh: string | null; sortOrder: number; isActive: boolean; label?: string; form990LineId: number | null; form990LineCode: string | null; }
|
||||||
export interface ExpenseCategoryGroupDto { id: number; name_en: string; name_zh: string | null; sortOrder: number; isActive: boolean; subCategories: ExpenseSubCategoryDto[]; label?: string; }
|
export interface ExpenseCategoryGroupDto { id: number; name_en: string; name_zh: string | null; sortOrder: number; isActive: boolean; subCategories: ExpenseSubCategoryDto[]; label?: string; form990LineId: number | null; form990LineCode: string | null; }
|
||||||
export interface CreateExpenseGroupRequest { name_en: string; name_zh: string | null; sortOrder: number; }
|
export interface CreateExpenseGroupRequest { name_en: string; name_zh: string | null; sortOrder: number; }
|
||||||
export interface UpdateExpenseGroupRequest extends CreateExpenseGroupRequest { isActive: boolean; }
|
export interface UpdateExpenseGroupRequest extends CreateExpenseGroupRequest { isActive: boolean; }
|
||||||
export interface CreateExpenseSubCategoryRequest { groupId: number; name_en: string; name_zh: string | null; sortOrder: number; }
|
export interface CreateExpenseSubCategoryRequest { groupId: number; name_en: string; name_zh: string | null; sortOrder: number; }
|
||||||
@@ -19,7 +20,7 @@ export interface ExpenseListItemDto {
|
|||||||
ministryId: number; ministryName: string; categoryGroupId: number; categoryGroupName: string;
|
ministryId: number; ministryName: string; categoryGroupId: number; categoryGroupName: string;
|
||||||
subCategoryId: number; subCategoryName: string; vendorName: string | null;
|
subCategoryId: number; subCategoryName: string; vendorName: string | null;
|
||||||
memberId: number | null; memberName: string | null; expenseDate: string; hasReceipt: boolean;
|
memberId: number | null; memberName: string | null; expenseDate: string; hasReceipt: boolean;
|
||||||
checkNumber: string | null;
|
checkNumber: string | null; functionalClass: FunctionalClass | null;
|
||||||
}
|
}
|
||||||
export interface ExpenseDto extends ExpenseListItemDto {
|
export interface ExpenseDto extends ExpenseListItemDto {
|
||||||
notes: string | null; reviewNotes: string | null;
|
notes: string | null; reviewNotes: string | null;
|
||||||
@@ -28,7 +29,7 @@ export interface ExpenseDto extends ExpenseListItemDto {
|
|||||||
export interface CreateExpenseRequest {
|
export interface CreateExpenseRequest {
|
||||||
type: ExpenseType; ministryId: number; categoryGroupId: number; subCategoryId: number;
|
type: ExpenseType; ministryId: number; categoryGroupId: number; subCategoryId: number;
|
||||||
amount: number; description: string; vendorName: string | null; memberId: number | null;
|
amount: number; description: string; vendorName: string | null; memberId: number | null;
|
||||||
checkNumber: string | null; expenseDate: string; notes: string | null;
|
checkNumber: string | null; expenseDate: string; notes: string | null; functionalClass: FunctionalClass | null;
|
||||||
}
|
}
|
||||||
export type UpdateExpenseRequest = CreateExpenseRequest;
|
export type UpdateExpenseRequest = CreateExpenseRequest;
|
||||||
export interface RejectExpenseRequest { reviewNotes: string | null; }
|
export interface RejectExpenseRequest { reviewNotes: string | null; }
|
||||||
|
|||||||
Reference in New Issue
Block a user