import { Column, Entity, JoinColumn, ManyToOne, OneToMany, PrimaryGeneratedColumn, } from "typeorm"; import { AuthenticationCredential, Local } from ".."; import { jsonTransformer } from "../transformers/jsonTransformer"; @Entity({ name: "pos_system", comment: "Tabla creada para almacenar los sistemas POS que se quieran enlazar con nuestro sistema y así tener una integración más completa.", }) export class PosSystem { @PrimaryGeneratedColumn({ type: "int", comment: "Número de identificación (ID) único de cada registro.", }) id: number; @Column({ length: 50, type: "varchar", comment: "Nombre del registro." }) name: string; @Column({ length: 300, type: "varchar", nullable: true, default: null, comment: "Descripción del registro.", }) description: string | null; @Column({ type: "text", transformer: jsonTransformer, comment: 'Esto será un JSON, donde va a tener información de lo que necesita para poder una petición hacia el sistema POS para traer los productos, es decir:\r\n\r\n1. type: Tipo de endpoint que tiene los productos (GET o POST)\r\n\r\n2. endpoint_name: Este es un string que será la url de la solicitud para traerse los productos que hay en el sistema POS.\r\n\r\n3. query_parameters: Este un objeto donde se van a guardar los clave valor de cada item qué necesitemos, es decir:\r\n{"productId": "product_id"...}\r\n{"ProductId: "product_id"...}\r\n{"productid": "product_id"...}\r\n\r\nEntonces, con este elemento se puede saber el parámetro que nosotros (asumano) usamos, y el parámetro que necesita el api (POS).\r\n', }) endpoint_products: any; @Column({ type: "text", transformer: jsonTransformer, comment: 'Esto será un JSON, donde va a tener información de lo que necesita para poder una petición hacia el sistema POS para realizar un pedido, es decir:\r\n\r\n1. type: Tipo de endpoint que tiene los pedidos (GET o POST) (Acá todos los desarrolladores deberían usar POST, ya que es una creación, pero hay casos en que no los usan, toca validar).\r\n\r\n2. endpoint_name: Este es un string que será la url de la solicitud para crear un pedido en el sistema POS.\r\n\r\n3. query_parameters: Este un objeto donde se van a guardar los clave valor de cada item qué necesitemos, es decir:\r\n{"productId": "product_id"...}\r\n{"ProductId: "product_id"...}\r\n{"productid": "product_id"...}\r\n\r\nEntonces, con este elemento se puede saber el parámetro que nosotros (asumano) usamos, y el parámetro que necesita el api (POS) para poder crear el pedido.\r\n', }) endpoint_order: any; @ManyToOne( () => AuthenticationCredential, (authenticationCredential) => authenticationCredential.authenticationCredentials, { onDelete: "RESTRICT", onUpdate: "NO ACTION", nullable: true, }, ) @JoinColumn({ name: "authentication_credentials" }) authentication_credentials: AuthenticationCredential | null; @Column({ type: "mediumtext", transformer: jsonTransformer, nullable: true, default: null, comment: "Configuración adicional que va a tener el sistema POS, si es necesario, este se guarda como JSON.", }) settings: any | null; @Column({ type: "datetime", comment: "Fecha de creación del sistema POS.", default: () => "CURRENT_TIMESTAMP", }) created: Date; @Column({ type: "date", nullable: true, default: null, comment: "Fecha de expiración si es necesaria, si no se necesita se agrega como null.", }) expiration: string | null; @Column({ default: 1, type: "int", width: 1, comment: "Estado del sistema POS de negocio:\n0: Inactivo.\n1: Activo.", }) status: number; @OneToMany(() => Local, (local) => local.pos_system) locals_pos_system: Local[]; }