finance cpv

This commit is contained in:
fro1991
2026-01-18 21:43:30 +07:00
parent b935087cfb
commit 8328590513
2 changed files with 155 additions and 0 deletions

View File

@ -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;
}

View File

@ -5,3 +5,38 @@ export enum FinancePurchaseRequestStatusType {
approve = "approve", approve = "approve",
reject = "reject", 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",
}