Files
bigcapital/packages/server/src/interfaces/Project.ts
2023-02-03 11:57:50 +02:00

161 lines
3.3 KiB
TypeScript

import { Knex } from 'knex';
export interface IProjectCommonDTO {
contactId: number;
name: string;
deadline: Date;
costEstimate: number;
}
export interface IProject {
id?: number;
name: string;
contactId: number;
deadline: number;
costEstimate: number;
status: string;
}
export interface IProjectCreateDTO extends IProjectCommonDTO {}
export interface IProjectEditDTO extends IProjectCommonDTO {}
export interface IProjectCreatePOJO extends IProject {}
export interface IProjectEditPOJO extends IProject {}
export interface IProjectGetPOJO {
costEstimate: number;
costEstimateFormatted: string;
deadlineFormatted: string;
contactDisplayName: string;
statusFormatted: string;
totalActualHours: number;
totalEstimateHours: number;
totalInvoicedHours: number;
totalBillableHours: number;
totalActualHoursAmount: number;
totalActualHoursAmountFormatted: string;
totalEstimateHoursAmount: number;
totalEstimateHoursAmountFormatted: string;
totalInvoicedHoursAmount: number;
totalInvoicedHoursAmountFormatted: string;
totalBillableHoursAmount: number;
totalBillableHoursAmountFormatted: string;
totalExpenses: number;
totalExpensesFormatted: string;
totalInvoicedExpenses: number;
totalInvoicedExpensesFormatted: string;
totalBillableExpenses: number;
totalBillableExpensesFormatted: string;
totalInvoiced: number;
totalInvoicedFormatted: string;
totalBillable: number;
totalBillableFormatted: string;
}
export interface IProjectCreateEventPayload {
tenantId: number;
projectDTO: IProjectCreateDTO;
}
export interface IProjectCreatedEventPayload {
tenantId: number;
projectDTO: IProjectCreateDTO;
project: IProject;
trx: Knex.Transaction;
}
export interface IProjectCreatingEventPayload {
tenantId: number;
projectDTO: IProjectCreateDTO;
trx: Knex.Transaction;
}
export interface IProjectDeleteEventPayload {
tenantId: number;
projectId: number;
}
export interface IProjectDeletingEventPayload {
tenantId: number;
oldProject: IProject;
trx: Knex.Transaction;
}
export interface IProjectDeletedEventPayload
extends IProjectDeletingEventPayload {}
export interface IProjectEditEventPayload {
tenantId: number;
oldProject: IProject;
projectDTO: IProjectEditDTO;
}
export interface IProjectEditingEventPayload {
tenantId: number;
oldProject: IProject;
projectDTO: IProjectEditDTO;
trx: Knex.Transaction;
}
export interface IProjectEditedEventPayload {
tenantId: number;
project: IProject;
oldProject: IProject;
projectDTO: IProjectEditDTO;
trx: Knex.Transaction;
}
export enum IProjectStatus {
Closed = 'Closed',
InProgress = 'InProgress',
}
export interface ProjectBillableEntriesQuery {
toDate?: Date;
billableType?: ProjectBillableType[];
}
export interface ProjectBillableEntry {
billableType: string;
billableId: number;
billableAmount: number;
billableCurrency: string;
billableTransactionNo: string;
}
export enum ProjectBillableType {
Task = 'Task',
Expense = 'Expense',
Bill = 'Bill',
}
export enum ProjectAction {
CREATE = 'Create',
EDIT = 'Edit',
DELETE = 'Delete',
VIEW = 'View',
}
export enum ProjectTaskAction {
CREATE = 'Create',
EDIT = 'Edit',
DELETE = 'Delete',
VIEW = 'View',
}
export enum ProjectTimeAction {
CREATE = 'Create',
EDIT = 'Edit',
DELETE = 'Delete',
VIEW = 'View',
}