import { Column, Entity, JoinColumn, ManyToOne, OneToMany, PrimaryGeneratedColumn, } from "typeorm"; import { Local } from "./Local"; import { Partner } from "./Partner"; import { RequestInvoiceCategory } from "./RequestInvoiceCategory"; @Entity({ comment: "Facturas que se agregan para imprimir en los pedidos.", name: "request_invoice", }) export class RequestInvoice { @PrimaryGeneratedColumn({ type: "int", comment: "Id único de cada registro.", }) id: number; @Column({ length: 10, unique: true, type: "varchar", comment: "Código único de cada registro.", }) code: string; @ManyToOne(() => Local, (local) => local.request_invoices, { onDelete: "CASCADE", onUpdate: "NO ACTION", }) @JoinColumn({ name: "local" }) local: Local; @Column({ length: 50, type: "varchar", comment: "Nombre del registro." }) name: string; @Column({ length: 300, nullable: true, default: null, type: "varchar", comment: "Nombre del registro.", }) description: string | null; @Column({ length: 100, type: "varchar", unique: true, comment: "Atajo de teclado para cada registro, cada atajo de teclado debe ser único.", }) keyboard_shortcut: string; @Column({ length: 20, type: "varchar", comment: "Estados donde se va a mostrar la factura, esto se guarda como una cadena de números (estado) separado por , '1,3,5,6'.", }) request_status: string; @Column({ default: 1, type: "int", width: 1, comment: "Tipos de impresión:\r\n1. Factura general del pedido: Esta factura debería mostrar todo lo que tiene el pedido, productos, fecha, orden, usuario si lo hay...\r\n2. Factura tipo comanda: Acá sólo se muestra la información de la mesa, quién es el mesero (Si el mesero atendió) y los productos con sus comentarios.", }) print_type: number; @Column({ default: 1, type: "int", comment: "Cantidad de veces qué se va a imprimir cada registro, por defecto es 1.", }) print_quantity: number; @Column({ type: "datetime", default: () => "CURRENT_TIMESTAMP", comment: "Fecha de creación del registro.", }) created: Date; @Column({ type: "datetime", onUpdate: "CURRENT_TIMESTAMP", nullable: true, default: null, comment: "Fecha de actualización del registro.", }) updated: Date | null; @ManyToOne(() => Partner, (partner) => partner.request_invoices, { onDelete: "RESTRICT", onUpdate: "NO ACTION", nullable: true, }) @JoinColumn({ name: "updated_by" }) updated_by: Partner | null; @Column({ default: 1, type: "int", width: 1, comment: "Estado del registro, es decir:\r\n0: Inactivo.\r\n1: Activo.", }) status: number; @OneToMany( () => RequestInvoiceCategory, (requestInvoiceCategory) => requestInvoiceCategory.request_invoice, ) request_invoice_categories: RequestInvoiceCategory[]; }