diff --git a/src/entity/finance/finance_cpvs.ts b/src/entity/finance/finance_cpvs.ts new file mode 100644 index 0000000..1b9252d --- /dev/null +++ b/src/entity/finance/finance_cpvs.ts @@ -0,0 +1,120 @@ +import { Column, CreateDateColumn, DeleteDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; +import { HrmsEmployee } from "../hrms/hrms_employee"; +import { FinanceAtividade } from "./finance_atividade"; +import { FinanceLocalizacao } from "./finance_localizacao"; +import { FinanceSubBudgetLine } from "./fincance_sub_budget_lines"; +import { FinanceCpvPaymentMethodType, FinanceCpvPaymentModelType, FinanceCpvPaymentStageType, FinanceCpvStatusType, FinanceCpvType, FinancePurchaseRequestStatusType } from "../../types/finance"; +import { FinanceAgencia } from "./finance_agencia"; +import { FinanceFundingSource } from "./finance_funding_sources"; +import { FinanceCompany } from "./finance_company"; + +@Entity("finance_cpvs", { schema: "finances" }) +export class FinanceCpv { + @PrimaryGeneratedColumn("uuid") + id: string; + + @ManyToOne(() => FinanceFundingSource, { onDelete: "NO ACTION", nullable: true }) + @JoinColumn() + funding_source: FinanceFundingSource; + + @ManyToOne(() => FinanceAgencia, { onDelete: "NO ACTION", nullable: true }) + @JoinColumn() + agencia: FinanceAgencia; + + @ManyToOne(() => FinanceAtividade, { onDelete: "NO ACTION", nullable: true }) + @JoinColumn() + atividade: FinanceAtividade; + + @ManyToOne(() => FinanceSubBudgetLine, { onDelete: "NO ACTION", nullable: true }) + @JoinColumn() + sub_budget_line: FinanceSubBudgetLine; + + @ManyToOne(() => FinanceLocalizacao, { onDelete: "NO ACTION", nullable: true }) + @JoinColumn() + localizacao: FinanceLocalizacao; + + @Column({ + nullable: false, + length: 128, + }) + type: FinanceCpvType; + + @Column({ + unique: true, + length: 128, + }) + code: string; + + @Column({ + nullable: false, + }) + cpv_at: Date; + + @Column({ + nullable: false, + length: 128, + }) + payment_model: FinanceCpvPaymentModelType; + + @Column({ + nullable: false, + length: 128, + }) + payment_stage: FinanceCpvPaymentStageType; + + @Column({ + nullable: true, + type: "float8", + }) + amount: number; + + @Column({ + type: "text", + nullable: true, + }) + amount_words: String; + + @ManyToOne(() => FinanceCompany, { onDelete: "NO ACTION", nullable: true }) + @JoinColumn() + company: FinanceCompany; + + @Column({ + type: "text", + nullable: true, + }) + description_item: String; + + @Column({ + nullable: false, + length: 128, + }) + payment_method: FinanceCpvPaymentMethodType; + + @Column({ + nullable: false, + default: FinanceCpvStatusType.draft, + length: 128, + }) + status: FinanceCpvStatusType; + + @Column() + @CreateDateColumn() + created_at: Date; + + @Column({ nullable: true, length: 256 }) + created_by: string; + + @Column({ nullable: true }) + @UpdateDateColumn() + updated_at: Date; + + @Column({ nullable: true, length: 256 }) + updated_by: string; + + @Column({ nullable: true }) + @DeleteDateColumn() + deleted_at: Date; + + @Column({ nullable: true, length: 256 }) + deleted_by: string; +} diff --git a/src/types/finance.ts b/src/types/finance.ts index 3ae3ccd..4746e43 100644 --- a/src/types/finance.ts +++ b/src/types/finance.ts @@ -5,3 +5,38 @@ export enum FinancePurchaseRequestStatusType { approve = "approve", reject = "reject", } + +export enum FinanceCpvType { + buying_service = "buying_service", + capital_minor = "capital_minor", +} + +export enum FinanceCpvPaymentModelType { + pagamento_directo = "pagamento_directo", + aprovisionamento_centralizado = "aprovisionamento_centralizado", + aprovisionamento_adn = "aprovisionamento_adn", +} + +export enum FinanceCpvPaymentStageType { + adiantamento = "adiantamento", + parcial = "parcial", + final = "final", + adicional = "adicional", +} + +export enum FinanceCpvPaymentMethodType { + cash = "cash", + transfer = "transfer", + cheque = "cheque", +} + +export enum FinanceCpvStatusType { + draft = "draft", + pending_finance = "pending_finance", + pending_agency = "pending_agency", + pending_pagemento = "pending_pagemento", + pending_treasury = "pending_treasury", + pending_president = "pending_president", + approve = "approve", + reject = "reject", +}