app-paqueteria-nest/src/modules/paquete/entities/paquete.entity.ts
2026-09-18 20:22:24 -04:00

108 lines
2 KiB
TypeScript

import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm';
@Entity()
export class Paquete {
@PrimaryGeneratedColumn('uuid')
idPaquete: string;
@Column()
idSucursal: string;
@Column({ nullable: true })
idLote: string;
@Column({ nullable: true })
idCategoria: string;
@Column({ nullable: true })
idZonaAlmacenamiento: string;
@Column({ nullable: true })
idEmprendimiento: string;
// Datos del cliente (receptor)
@Column()
nombreCliente: string;
@Column()
codigoPaisCliente: string;
@Column()
whatsappCliente: string;
// Campos de identificación
@Column()
prefijoSucursal: string;
@Column({ type: 'int' })
numeroCorrelativo: number;
@Column()
letraCorrelativo: string;
@Column()
color: string;
@Column()
codigoCompleto: string;
// Imágenes
@Column()
fotoUrl: string;
@Column({ unique: true })
tokenRetiro: string;
@Column()
urlQR: string;
// Estado
@Column({
type: 'enum',
enum: ['RECIBIDO', 'ALMACENADO', 'ENTREGADO', 'DEVUELTO'],
default: 'RECIBIDO',
})
estado: string;
// Recepción
@CreateDateColumn()
fechaRecepcion: Date;
@Column({ type: 'timestamp' })
fechaLimite: Date;
@Column()
idUsuarioRecepcion: string;
// Pago
@Column({ default: false })
paquetePagado: boolean;
// Cobro Paquetería
@Column({ type: 'int', default: 0 })
diasAdicionales: number;
@Column({ type: 'decimal', precision: 10, scale: 2, default: 0 })
montoCalculadoPaquete: number;
@Column({ type: 'decimal', precision: 10, scale: 2, default: 0 })
montoCobrarPaquete: number;
// Saldo del Paquete
@Column({ default: false })
saldo: boolean;
@Column({ type: 'decimal', precision: 10, scale: 2, default: 0 })
saldoPendiente: number;
// Total
@Column({ type: 'decimal', precision: 10, scale: 2 })
montoFinal: number;
// Entrega
@Column({ type: 'timestamp', nullable: true })
fechaEntrega: Date;
@Column({ nullable: true })
idUsuarioEntrega: string;
}