
/* !!! This is code generated by Prisma. Do not edit directly. !!!
/* eslint-disable */
// biome-ignore-all lint: generated file

Object.defineProperty(exports, "__esModule", { value: true });

const {
  PrismaClientKnownRequestError,
  PrismaClientUnknownRequestError,
  PrismaClientRustPanicError,
  PrismaClientInitializationError,
  PrismaClientValidationError,
  getPrismaClient,
  sqltag,
  empty,
  join,
  raw,
  skip,
  Decimal,
  Debug,
  objectEnumValues,
  makeStrictEnum,
  Extensions,
  warnOnce,
  defineDmmfProperty,
  Public,
  getRuntime,
  createParam,
} = require('@prisma/client/runtime/wasm-engine-edge.js')


const Prisma = {}

exports.Prisma = Prisma
exports.$Enums = {}

/**
 * Prisma Client JS version: 6.19.0
 * Query Engine version: 2ba551f319ab1df4bc874a89965d8b3641056773
 */
Prisma.prismaVersion = {
  client: "6.19.0",
  engine: "2ba551f319ab1df4bc874a89965d8b3641056773"
}

Prisma.PrismaClientKnownRequestError = PrismaClientKnownRequestError;
Prisma.PrismaClientUnknownRequestError = PrismaClientUnknownRequestError
Prisma.PrismaClientRustPanicError = PrismaClientRustPanicError
Prisma.PrismaClientInitializationError = PrismaClientInitializationError
Prisma.PrismaClientValidationError = PrismaClientValidationError
Prisma.Decimal = Decimal

/**
 * Re-export of sql-template-tag
 */
Prisma.sql = sqltag
Prisma.empty = empty
Prisma.join = join
Prisma.raw = raw
Prisma.validator = Public.validator

/**
* Extensions
*/
Prisma.getExtensionContext = Extensions.getExtensionContext
Prisma.defineExtension = Extensions.defineExtension

/**
 * Shorthand utilities for JSON filtering
 */
Prisma.DbNull = objectEnumValues.instances.DbNull
Prisma.JsonNull = objectEnumValues.instances.JsonNull
Prisma.AnyNull = objectEnumValues.instances.AnyNull

Prisma.NullTypes = {
  DbNull: objectEnumValues.classes.DbNull,
  JsonNull: objectEnumValues.classes.JsonNull,
  AnyNull: objectEnumValues.classes.AnyNull
}





/**
 * Enums
 */
exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
  ReadUncommitted: 'ReadUncommitted',
  ReadCommitted: 'ReadCommitted',
  RepeatableRead: 'RepeatableRead',
  Serializable: 'Serializable'
});

exports.Prisma.AuditoriaScalarFieldEnum = {
  id: 'id',
  tabla: 'tabla',
  registro_id: 'registro_id',
  accion: 'accion',
  usuario_id: 'usuario_id',
  datos_anteriores: 'datos_anteriores',
  datos_nuevos: 'datos_nuevos',
  ip_address: 'ip_address',
  user_agent: 'user_agent',
  fecha: 'fecha'
};

exports.Prisma.CategoriasScalarFieldEnum = {
  id: 'id',
  nombre: 'nombre',
  descripcion: 'descripcion',
  icono: 'icono',
  color: 'color',
  created_at: 'created_at'
};

exports.Prisma.ClientesScalarFieldEnum = {
  id: 'id',
  tipo_cliente: 'tipo_cliente',
  tipo_documento: 'tipo_documento',
  numero_documento: 'numero_documento',
  nombre: 'nombre',
  apellido: 'apellido',
  email: 'email',
  telefono: 'telefono',
  direccion: 'direccion',
  ciudad: 'ciudad',
  es_institucional: 'es_institucional',
  dependencia: 'dependencia',
  total_compras: 'total_compras',
  ultima_compra: 'ultima_compra',
  activo: 'activo',
  created_at: 'created_at',
  updated_at: 'updated_at'
};

exports.Prisma.ConfiguracionScalarFieldEnum = {
  id: 'id',
  clave: 'clave',
  valor: 'valor',
  tipo: 'tipo',
  descripcion: 'descripcion',
  updated_at: 'updated_at'
};

exports.Prisma.Costos_produccionScalarFieldEnum = {
  id: 'id',
  producto_id: 'producto_id',
  lote_id: 'lote_id',
  costo_materia_prima: 'costo_materia_prima',
  costo_mano_obra: 'costo_mano_obra',
  costo_insumos: 'costo_insumos',
  costo_energia: 'costo_energia',
  otros_costos: 'otros_costos',
  costo_total: 'costo_total',
  cantidad_producida: 'cantidad_producida',
  costo_unitario: 'costo_unitario',
  fecha_registro: 'fecha_registro',
  observaciones: 'observaciones',
  created_at: 'created_at'
};

exports.Prisma.DescuentosScalarFieldEnum = {
  id: 'id',
  codigo: 'codigo',
  nombre: 'nombre',
  descripcion: 'descripcion',
  tipo: 'tipo',
  valor: 'valor',
  minimo_compra: 'minimo_compra',
  maximo_descuento: 'maximo_descuento',
  aplica_a: 'aplica_a',
  categoria_id: 'categoria_id',
  producto_id: 'producto_id',
  usos_maximos: 'usos_maximos',
  usos_actuales: 'usos_actuales',
  fecha_inicio: 'fecha_inicio',
  fecha_fin: 'fecha_fin',
  solo_aprendices: 'solo_aprendices',
  solo_empleados: 'solo_empleados',
  solo_institucional: 'solo_institucional',
  activo: 'activo',
  created_at: 'created_at'
};

exports.Prisma.Descuentos_aplicadosScalarFieldEnum = {
  id: 'id',
  venta_id: 'venta_id',
  descuento_id: 'descuento_id',
  monto_descuento: 'monto_descuento',
  aplicado_por: 'aplicado_por',
  fecha_aplicacion: 'fecha_aplicacion'
};

exports.Prisma.Detalle_movimientosScalarFieldEnum = {
  id: 'id',
  movimiento_id: 'movimiento_id',
  producto_id: 'producto_id',
  lote_id: 'lote_id',
  cantidad: 'cantidad',
  unidad: 'unidad'
};

exports.Prisma.Detalle_solicitudesScalarFieldEnum = {
  id: 'id',
  solicitud_id: 'solicitud_id',
  producto_id: 'producto_id',
  cantidad_solicitada: 'cantidad_solicitada',
  cantidad_aprobada: 'cantidad_aprobada',
  observaciones: 'observaciones'
};

exports.Prisma.Detalle_ventasScalarFieldEnum = {
  id: 'id',
  venta_id: 'venta_id',
  producto_id: 'producto_id',
  lote_id: 'lote_id',
  cantidad: 'cantidad',
  precio_unitario: 'precio_unitario',
  subtotal: 'subtotal',
  observaciones: 'observaciones',
  costo_unitario: 'costo_unitario'
};

exports.Prisma.Historial_inventarioScalarFieldEnum = {
  id: 'id',
  producto_id: 'producto_id',
  tipo_movimiento: 'tipo_movimiento',
  cantidad_anterior: 'cantidad_anterior',
  cantidad_movimiento: 'cantidad_movimiento',
  cantidad_nueva: 'cantidad_nueva',
  usuario_id: 'usuario_id',
  referencia_id: 'referencia_id',
  referencia_tipo: 'referencia_tipo',
  observaciones: 'observaciones',
  fecha_movimiento: 'fecha_movimiento'
};

exports.Prisma.Lotes_productosScalarFieldEnum = {
  id: 'id',
  producto_id: 'producto_id',
  codigo_lote: 'codigo_lote',
  cantidad: 'cantidad',
  fecha_produccion: 'fecha_produccion',
  fecha_vencimiento: 'fecha_vencimiento',
  unidad_productiva_id: 'unidad_productiva_id',
  estado: 'estado',
  created_at: 'created_at',
  usuario_id: 'usuario_id'
};

exports.Prisma.Metodos_pagoScalarFieldEnum = {
  id: 'id',
  nombre: 'nombre',
  descripcion: 'descripcion',
  activo: 'activo',
  icono: 'icono',
  created_at: 'created_at'
};

exports.Prisma.Movimientos_unidadesScalarFieldEnum = {
  id: 'id',
  codigo_movimiento: 'codigo_movimiento',
  unidad_origen_id: 'unidad_origen_id',
  unidad_destino_id: 'unidad_destino_id',
  usuario_id: 'usuario_id',
  fecha_movimiento: 'fecha_movimiento',
  motivo: 'motivo',
  estado: 'estado',
  observaciones: 'observaciones',
  created_at: 'created_at'
};

exports.Prisma.NotificacionesScalarFieldEnum = {
  id: 'id',
  tipo: 'tipo',
  titulo: 'titulo',
  mensaje: 'mensaje',
  prioridad: 'prioridad',
  leida: 'leida',
  usuario_id: 'usuario_id',
  referencia_id: 'referencia_id',
  referencia_tipo: 'referencia_tipo',
  created_at: 'created_at'
};

exports.Prisma.Pagos_ventaScalarFieldEnum = {
  id: 'id',
  venta_id: 'venta_id',
  metodo_pago_id: 'metodo_pago_id',
  monto: 'monto',
  referencia: 'referencia',
  fecha_pago: 'fecha_pago'
};

exports.Prisma.CajasScalarFieldEnum = {
  id: 'id',
  codigo: 'codigo',
  nombre: 'nombre',
  ubicacion: 'ubicacion',
  tipo: 'tipo',
  activa: 'activa',
  created_at: 'created_at',
  updated_at: 'updated_at'
};

exports.Prisma.Sesiones_cajaScalarFieldEnum = {
  id: 'id',
  codigo_sesion: 'codigo_sesion',
  caja_id: 'caja_id',
  cajero_id: 'cajero_id',
  fecha_apertura: 'fecha_apertura',
  fondo_inicial: 'fondo_inicial',
  observaciones_apertura: 'observaciones_apertura',
  fecha_cierre: 'fecha_cierre',
  estado: 'estado',
  observaciones_cierre: 'observaciones_cierre',
  total_ventas_efectivo: 'total_ventas_efectivo',
  total_ventas_nequi: 'total_ventas_nequi',
  total_ventas_tarjeta: 'total_ventas_tarjeta',
  total_ventas_transferencia: 'total_ventas_transferencia',
  total_ingresos_adicionales: 'total_ingresos_adicionales',
  total_retiros: 'total_retiros',
  total_gastos: 'total_gastos',
  efectivo_esperado: 'efectivo_esperado',
  efectivo_contado: 'efectivo_contado',
  diferencia: 'diferencia',
  desglose_efectivo: 'desglose_efectivo',
  cuadrada: 'cuadrada',
  created_at: 'created_at'
};

exports.Prisma.Movimientos_cajaScalarFieldEnum = {
  id: 'id',
  sesion_caja_id: 'sesion_caja_id',
  venta_id: 'venta_id',
  tipo_movimiento: 'tipo_movimiento',
  metodo_pago: 'metodo_pago',
  monto: 'monto',
  descripcion: 'descripcion',
  usuario_id: 'usuario_id',
  requiere_autorizacion: 'requiere_autorizacion',
  autorizado_por: 'autorizado_por',
  fecha_movimiento: 'fecha_movimiento',
  monto_recibido: 'monto_recibido',
  monto_cambio: 'monto_cambio',
  turno_caja_id: 'turno_caja_id'
};

exports.Prisma.Retiros_cajaScalarFieldEnum = {
  id: 'id',
  sesion_caja_id: 'sesion_caja_id',
  monto: 'monto',
  motivo: 'motivo',
  solicitado_por: 'solicitado_por',
  autorizado_por: 'autorizado_por',
  estado: 'estado',
  fecha_solicitud: 'fecha_solicitud',
  fecha_respuesta: 'fecha_respuesta',
  observaciones: 'observaciones',
  recibo_url: 'recibo_url',
  destino_fondos: 'destino_fondos',
  turno_caja_id: 'turno_caja_id'
};

exports.Prisma.Gastos_cajaScalarFieldEnum = {
  id: 'id',
  sesion_caja_id: 'sesion_caja_id',
  monto: 'monto',
  categoria_gasto: 'categoria_gasto',
  descripcion: 'descripcion',
  beneficiario: 'beneficiario',
  comprobante_url: 'comprobante_url',
  numero_factura: 'numero_factura',
  autorizado_por: 'autorizado_por',
  fecha_gasto: 'fecha_gasto',
  observaciones: 'observaciones',
  metodo_pago: 'metodo_pago',
  turno_caja_id: 'turno_caja_id'
};

exports.Prisma.Arqueos_cajaScalarFieldEnum = {
  id: 'id',
  sesion_caja_id: 'sesion_caja_id',
  tipo_arqueo: 'tipo_arqueo',
  realizado_por: 'realizado_por',
  fecha_arqueo: 'fecha_arqueo',
  billetes_100000: 'billetes_100000',
  billetes_50000: 'billetes_50000',
  billetes_20000: 'billetes_20000',
  billetes_10000: 'billetes_10000',
  billetes_5000: 'billetes_5000',
  billetes_2000: 'billetes_2000',
  billetes_1000: 'billetes_1000',
  monedas_1000: 'monedas_1000',
  monedas_500: 'monedas_500',
  monedas_200: 'monedas_200',
  monedas_100: 'monedas_100',
  monedas_50: 'monedas_50',
  total_contado: 'total_contado',
  total_esperado: 'total_esperado',
  diferencia: 'diferencia',
  observaciones: 'observaciones'
};

exports.Prisma.Turnos_cajaScalarFieldEnum = {
  id: 'id',
  sesion_caja_id: 'sesion_caja_id',
  cajero_id: 'cajero_id',
  caja_id: 'caja_id',
  tipo_relevo: 'tipo_relevo',
  fecha_inicio: 'fecha_inicio',
  fecha_fin: 'fecha_fin',
  monto_inicial: 'monto_inicial',
  monto_final: 'monto_final',
  diferencia: 'diferencia',
  duracion_minutos: 'duracion_minutos',
  estado: 'estado',
  motivo_suspension: 'motivo_suspension',
  observaciones: 'observaciones',
  created_at: 'created_at',
  efectivo_inicial: 'efectivo_inicial',
  efectivo_final: 'efectivo_final',
  observaciones_cierre: 'observaciones_cierre',
  desglose_efectivo: 'desglose_efectivo',
  turno_anterior_id: 'turno_anterior_id',
  autorizado_por: 'autorizado_por'
};

exports.Prisma.ProductosScalarFieldEnum = {
  id: 'id',
  codigo: 'codigo',
  nombre: 'nombre',
  descripcion: 'descripcion',
  categoria_id: 'categoria_id',
  unidad_productiva_id: 'unidad_productiva_id',
  tipo_medida: 'tipo_medida',
  unidad: 'unidad',
  precio_unitario: 'precio_unitario',
  precio_mayorista: 'precio_mayorista',
  stock_actual: 'stock_actual',
  stock_minimo: 'stock_minimo',
  stock_maximo: 'stock_maximo',
  es_perecedero: 'es_perecedero',
  dias_vencimiento: 'dias_vencimiento',
  imagen_url: 'imagen_url',
  activo: 'activo',
  created_at: 'created_at',
  updated_at: 'updated_at',
  proveedor_id: 'proveedor_id',
  es_produccion_propia: 'es_produccion_propia'
};

exports.Prisma.ProveedoresScalarFieldEnum = {
  id: 'id',
  codigo: 'codigo',
  nombre: 'nombre',
  nit: 'nit',
  contacto_nombre: 'contacto_nombre',
  contacto_email: 'contacto_email',
  contacto_telefono: 'contacto_telefono',
  direccion: 'direccion',
  ciudad: 'ciudad',
  tipo_productos: 'tipo_productos',
  activo: 'activo',
  created_at: 'created_at',
  updated_at: 'updated_at'
};

exports.Prisma.RolesScalarFieldEnum = {
  id: 'id',
  nombre: 'nombre',
  descripcion: 'descripcion',
  permisos: 'permisos',
  created_at: 'created_at',
  updated_at: 'updated_at'
};

exports.Prisma.Solicitudes_transferenciaScalarFieldEnum = {
  id: 'id',
  codigo_solicitud: 'codigo_solicitud',
  unidad_solicitante_id: 'unidad_solicitante_id',
  unidad_proveedora_id: 'unidad_proveedora_id',
  usuario_solicitante_id: 'usuario_solicitante_id',
  estado: 'estado',
  fecha_solicitud: 'fecha_solicitud',
  fecha_respuesta: 'fecha_respuesta',
  usuario_respuesta_id: 'usuario_respuesta_id',
  observaciones: 'observaciones',
  motivo_rechazo: 'motivo_rechazo'
};

exports.Prisma.TurnosScalarFieldEnum = {
  id: 'id',
  numero_turno: 'numero_turno',
  cliente_nombre: 'cliente_nombre',
  cliente_id: 'cliente_id',
  estado: 'estado',
  cajero_id: 'cajero_id',
  fecha: 'fecha',
  hora_creacion: 'hora_creacion',
  hora_atencion: 'hora_atencion',
  hora_finalizacion: 'hora_finalizacion'
};

exports.Prisma.Unidades_productivasScalarFieldEnum = {
  id: 'id',
  codigo: 'codigo',
  nombre: 'nombre',
  descripcion: 'descripcion',
  tipo: 'tipo',
  responsable_id: 'responsable_id',
  ubicacion: 'ubicacion',
  activa: 'activa',
  created_at: 'created_at',
  updated_at: 'updated_at'
};

exports.Prisma.UsuariosScalarFieldEnum = {
  id: 'id',
  nombre: 'nombre',
  apellido: 'apellido',
  email: 'email',
  password_hash: 'password_hash',
  rol_id: 'rol_id',
  activo: 'activo',
  ultimo_acceso: 'ultimo_acceso',
  created_at: 'created_at',
  updated_at: 'updated_at'
};

exports.Prisma.VentasScalarFieldEnum = {
  id: 'id',
  codigo_venta: 'codigo_venta',
  usuario_id: 'usuario_id',
  fecha_venta: 'fecha_venta',
  subtotal: 'subtotal',
  impuesto: 'impuesto',
  descuento: 'descuento',
  total: 'total',
  cliente_nombre: 'cliente_nombre',
  cliente_email: 'cliente_email',
  cliente_telefono: 'cliente_telefono',
  estado: 'estado',
  requiere_factura: 'requiere_factura',
  factura_generada: 'factura_generada',
  factura_url: 'factura_url',
  observaciones: 'observaciones',
  created_at: 'created_at',
  cliente_id: 'cliente_id',
  deleted_at: 'deleted_at',
  turno_caja_id: 'turno_caja_id'
};

exports.Prisma.Metas_ventasScalarFieldEnum = {
  id: 'id',
  nombre: 'nombre',
  monto_objetivo: 'monto_objetivo',
  anio: 'anio',
  activa: 'activa',
  created_at: 'created_at',
  updated_at: 'updated_at'
};

exports.Prisma.SortOrder = {
  asc: 'asc',
  desc: 'desc'
};

exports.Prisma.NullableJsonNullValueInput = {
  DbNull: Prisma.DbNull,
  JsonNull: Prisma.JsonNull
};

exports.Prisma.QueryMode = {
  default: 'default',
  insensitive: 'insensitive'
};

exports.Prisma.JsonNullValueFilter = {
  DbNull: Prisma.DbNull,
  JsonNull: Prisma.JsonNull,
  AnyNull: Prisma.AnyNull
};

exports.Prisma.NullsOrder = {
  first: 'first',
  last: 'last'
};


exports.Prisma.ModelName = {
  auditoria: 'auditoria',
  categorias: 'categorias',
  clientes: 'clientes',
  configuracion: 'configuracion',
  costos_produccion: 'costos_produccion',
  descuentos: 'descuentos',
  descuentos_aplicados: 'descuentos_aplicados',
  detalle_movimientos: 'detalle_movimientos',
  detalle_solicitudes: 'detalle_solicitudes',
  detalle_ventas: 'detalle_ventas',
  historial_inventario: 'historial_inventario',
  lotes_productos: 'lotes_productos',
  metodos_pago: 'metodos_pago',
  movimientos_unidades: 'movimientos_unidades',
  notificaciones: 'notificaciones',
  pagos_venta: 'pagos_venta',
  cajas: 'cajas',
  sesiones_caja: 'sesiones_caja',
  movimientos_caja: 'movimientos_caja',
  retiros_caja: 'retiros_caja',
  gastos_caja: 'gastos_caja',
  arqueos_caja: 'arqueos_caja',
  turnos_caja: 'turnos_caja',
  productos: 'productos',
  proveedores: 'proveedores',
  roles: 'roles',
  solicitudes_transferencia: 'solicitudes_transferencia',
  turnos: 'turnos',
  unidades_productivas: 'unidades_productivas',
  usuarios: 'usuarios',
  ventas: 'ventas',
  metas_ventas: 'metas_ventas'
};
/**
 * Create the Client
 */
const config = {
  "generator": {
    "name": "client",
    "provider": {
      "fromEnvVar": null,
      "value": "prisma-client-js"
    },
    "output": {
      "value": "C:\\Users\\santi\\OneDrive\\Documentos\\GitHub\\AgroShpV1\\node_modules\\@prisma\\client",
      "fromEnvVar": null
    },
    "config": {
      "engineType": "library"
    },
    "binaryTargets": [
      {
        "fromEnvVar": null,
        "value": "windows",
        "native": true
      },
      {
        "fromEnvVar": null,
        "value": "debian-openssl-1.0.x"
      }
    ],
    "previewFeatures": [],
    "sourceFilePath": "C:\\Users\\santi\\OneDrive\\Documentos\\GitHub\\AgroShpV1\\prisma\\schema.prisma"
  },
  "relativeEnvPaths": {
    "rootEnvPath": null,
    "schemaEnvPath": "../../../.env"
  },
  "relativePath": "../../../prisma",
  "clientVersion": "6.19.0",
  "engineVersion": "2ba551f319ab1df4bc874a89965d8b3641056773",
  "datasourceNames": [
    "db"
  ],
  "activeProvider": "postgresql",
  "postinstall": false,
  "inlineDatasources": {
    "db": {
      "url": {
        "fromEnvVar": "DATABASE_URL",
        "value": null
      }
    }
  },
  "inlineSchema": "generator client {\n  provider      = \"prisma-client-js\"\n  binaryTargets = [\"native\", \"debian-openssl-1.0.x\"]\n}\n\ndatasource db {\n  provider = \"postgresql\"\n  url      = env(\"DATABASE_URL\")\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel auditoria {\n  id               Int       @id @default(autoincrement())\n  tabla            String    @db.VarChar(50)\n  registro_id      Int\n  accion           String    @db.VarChar(20)\n  usuario_id       Int?\n  datos_anteriores Json?\n  datos_nuevos     Json?\n  ip_address       String?   @db.VarChar(50)\n  user_agent       String?\n  fecha            DateTime? @default(now()) @db.Timestamptz(6)\n\n  @@index([tabla, registro_id], map: \"idx_auditoria_tabla_registro\")\n  @@index([usuario_id], map: \"idx_auditoria_usuario\")\n}\n\nmodel categorias {\n  id          Int         @id @default(autoincrement())\n  nombre      String      @unique @db.VarChar(100)\n  descripcion String?\n  icono       String?     @db.VarChar(50)\n  color       String?     @db.VarChar(20)\n  created_at  DateTime?   @default(now()) @db.Timestamp(6)\n  productos   productos[]\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel clientes {\n  id               Int       @id @default(autoincrement())\n  tipo_cliente     String?   @default(\"ocasional\") @db.VarChar(20)\n  tipo_documento   String?   @db.VarChar(20)\n  numero_documento String?   @db.VarChar(50)\n  nombre           String    @db.VarChar(150)\n  apellido         String?   @db.VarChar(150)\n  email            String?   @db.VarChar(150)\n  telefono         String?   @db.VarChar(20)\n  direccion        String?\n  ciudad           String?   @db.VarChar(100)\n  es_institucional Boolean?  @default(false)\n  dependencia      String?   @db.VarChar(200)\n  total_compras    Decimal?  @default(0) @db.Decimal(10, 2)\n  ultima_compra    DateTime? @db.Timestamp(6)\n  activo           Boolean?  @default(true)\n  created_at       DateTime? @default(now()) @db.Timestamp(6)\n  updated_at       DateTime? @default(now()) @db.Timestamp(6)\n  turnos           turnos[]\n  ventas           ventas[]\n\n  @@index([numero_documento], map: \"idx_clientes_documento\")\n  @@index([email], map: \"idx_clientes_email\")\n  @@index([tipo_cliente], map: \"idx_clientes_tipo\")\n}\n\nmodel configuracion {\n  id          Int       @id @default(autoincrement())\n  clave       String    @unique @db.VarChar(100)\n  valor       String?\n  tipo        String?   @db.VarChar(20)\n  descripcion String?\n  updated_at  DateTime? @default(now()) @db.Timestamp(6)\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel costos_produccion {\n  id                  Int              @id @default(autoincrement())\n  producto_id         Int?\n  lote_id             Int?\n  costo_materia_prima Decimal?         @default(0) @db.Decimal(10, 2)\n  costo_mano_obra     Decimal?         @default(0) @db.Decimal(10, 2)\n  costo_insumos       Decimal?         @default(0) @db.Decimal(10, 2)\n  costo_energia       Decimal?         @default(0) @db.Decimal(10, 2)\n  otros_costos        Decimal?         @default(0) @db.Decimal(10, 2)\n  costo_total         Decimal?         @db.Decimal(10, 2)\n  cantidad_producida  Decimal          @db.Decimal(10, 2)\n  costo_unitario      Decimal?         @db.Decimal(10, 2)\n  fecha_registro      DateTime?        @default(now()) @db.Date\n  observaciones       String?\n  created_at          DateTime?        @default(now()) @db.Timestamp(6)\n  lote                lotes_productos? @relation(fields: [lote_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  producto            productos?       @relation(fields: [producto_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([producto_id], map: \"idx_costos_producto\")\n  @@index([lote_id], map: \"idx_costos_lote\")\n  @@index([fecha_registro], map: \"idx_costos_fecha\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel descuentos {\n  id                   Int                    @id @default(autoincrement())\n  codigo               String                 @unique @db.VarChar(50)\n  nombre               String                 @db.VarChar(100)\n  descripcion          String?\n  tipo                 String                 @db.VarChar(20)\n  valor                Decimal                @db.Decimal(10, 2)\n  minimo_compra        Decimal?               @db.Decimal(10, 2)\n  maximo_descuento     Decimal?               @db.Decimal(10, 2)\n  aplica_a             String?                @db.VarChar(20)\n  categoria_id         Int?\n  producto_id          Int?\n  usos_maximos         Int?\n  usos_actuales        Int?                   @default(0)\n  fecha_inicio         DateTime?              @db.Date\n  fecha_fin            DateTime?              @db.Date\n  solo_aprendices      Boolean?               @default(false)\n  solo_empleados       Boolean?               @default(false)\n  solo_institucional   Boolean?               @default(false)\n  activo               Boolean?               @default(true)\n  created_at           DateTime?              @default(now()) @db.Timestamp(6)\n  producto             productos?             @relation(fields: [producto_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  descuentos_aplicados descuentos_aplicados[]\n\n  @@index([codigo], map: \"idx_descuentos_codigo\")\n  @@index([activo], map: \"idx_descuentos_activo\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\nmodel descuentos_aplicados {\n  id               Int         @id @default(autoincrement())\n  venta_id         Int?\n  descuento_id     Int?\n  monto_descuento  Decimal     @db.Decimal(10, 2)\n  aplicado_por     Int?\n  fecha_aplicacion DateTime?   @default(now()) @db.Timestamp(6)\n  descuento        descuentos? @relation(fields: [descuento_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  venta            ventas?     @relation(fields: [venta_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([venta_id], map: \"idx_descuentos_aplicados_venta\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\nmodel detalle_movimientos {\n  id            Int                   @id @default(autoincrement())\n  movimiento_id Int?\n  producto_id   Int?\n  lote_id       Int?\n  cantidad      Decimal               @db.Decimal(10, 2)\n  unidad        String?               @db.VarChar(20)\n  lote          lotes_productos?      @relation(fields: [lote_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  movimiento    movimientos_unidades? @relation(fields: [movimiento_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  producto      productos?            @relation(fields: [producto_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\nmodel detalle_solicitudes {\n  id                  Int                        @id @default(autoincrement())\n  solicitud_id        Int?\n  producto_id         Int?\n  cantidad_solicitada Decimal                    @db.Decimal(10, 2)\n  cantidad_aprobada   Decimal?                   @db.Decimal(10, 2)\n  observaciones       String?\n  producto            productos?                 @relation(fields: [producto_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  solicitud           solicitudes_transferencia? @relation(fields: [solicitud_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\nmodel detalle_ventas {\n  id              Int              @id @default(autoincrement())\n  venta_id        Int?\n  producto_id     Int?\n  lote_id         Int?\n  cantidad        Decimal          @db.Decimal(10, 2)\n  precio_unitario Decimal          @db.Decimal(10, 2)\n  subtotal        Decimal          @db.Decimal(10, 2)\n  observaciones   String?          @db.VarChar(500)\n  costo_unitario  Decimal?         @db.Decimal(10, 2)\n  lote            lotes_productos? @relation(fields: [lote_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  producto        productos?       @relation(fields: [producto_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  venta           ventas?          @relation(fields: [venta_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([venta_id], map: \"idx_detalle_ventas_venta\")\n  @@index([producto_id, lote_id], map: \"idx_detalle_ventas_producto_lote\")\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel historial_inventario {\n  id                  Int        @id @default(autoincrement())\n  producto_id         Int?\n  tipo_movimiento     String     @db.VarChar(30)\n  cantidad_anterior   Decimal?   @db.Decimal(10, 2)\n  cantidad_movimiento Decimal    @db.Decimal(10, 2)\n  cantidad_nueva      Decimal?   @db.Decimal(10, 2)\n  usuario_id          Int?\n  referencia_id       Int?\n  referencia_tipo     String?    @db.VarChar(30)\n  observaciones       String?\n  fecha_movimiento    DateTime?  @default(now()) @db.Timestamptz(6)\n  productos           productos? @relation(fields: [producto_id], references: [id], onUpdate: NoAction)\n\n  @@index([fecha_movimiento], map: \"idx_historial_fecha\")\n  @@index([producto_id], map: \"idx_historial_producto\")\n  @@index([tipo_movimiento], map: \"idx_historial_tipo\")\n  @@index([referencia_tipo, referencia_id], map: \"idx_historial_referencia\")\n  @@index([usuario_id], map: \"idx_historial_usuario\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\nmodel lotes_productos {\n  id                   Int                   @id @default(autoincrement())\n  producto_id          Int?\n  codigo_lote          String                @unique @db.VarChar(50)\n  cantidad             Decimal               @db.Decimal(10, 2)\n  fecha_produccion     DateTime              @db.Timestamptz(6)\n  fecha_vencimiento    DateTime?             @db.Timestamptz(6)\n  unidad_productiva_id Int?\n  estado               String?               @default(\"disponible\") @db.VarChar(20)\n  created_at           DateTime?             @default(now()) @db.Timestamp(6)\n  usuario_id           Int?\n  costos_produccion    costos_produccion[]\n  detalle_movimientos  detalle_movimientos[]\n  detalle_ventas       detalle_ventas[]\n  usuario              usuarios?             @relation(fields: [usuario_id], references: [id], map: \"fk_lotes_usuario\")\n  producto             productos?            @relation(fields: [producto_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  unidad_productiva    unidades_productivas? @relation(fields: [unidad_productiva_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([estado], map: \"idx_lotes_estado\")\n  @@index([producto_id], map: \"idx_lotes_producto\")\n  @@index([fecha_vencimiento], map: \"idx_lotes_vencimiento\")\n  @@index([usuario_id], map: \"idx_lotes_usuario\")\n}\n\nmodel metodos_pago {\n  id          Int           @id @default(autoincrement())\n  nombre      String        @db.VarChar(50)\n  descripcion String?\n  activo      Boolean?      @default(true)\n  icono       String?       @db.VarChar(50)\n  created_at  DateTime?     @default(now()) @db.Timestamp(6)\n  pagos_venta pagos_venta[]\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel movimientos_unidades {\n  id                  Int                   @id @default(autoincrement())\n  codigo_movimiento   String                @unique @db.VarChar(50)\n  unidad_origen_id    Int?\n  unidad_destino_id   Int?\n  usuario_id          Int?\n  fecha_movimiento    DateTime?             @default(now()) @db.Timestamptz(6)\n  motivo              String?\n  estado              String?               @default(\"completado\") @db.VarChar(20)\n  observaciones       String?\n  created_at          DateTime?             @default(now()) @db.Timestamptz(6)\n  detalle_movimientos detalle_movimientos[]\n  unidad_destino      unidades_productivas? @relation(\"movimientos_destino\", fields: [unidad_destino_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  unidad_origen       unidades_productivas? @relation(\"movimientos_origen\", fields: [unidad_origen_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  usuario             usuarios?             @relation(fields: [usuario_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([unidad_destino_id], map: \"idx_movimientos_destino\")\n  @@index([fecha_movimiento], map: \"idx_movimientos_fecha\")\n  @@index([unidad_origen_id], map: \"idx_movimientos_origen\")\n}\n\nmodel notificaciones {\n  id              Int       @id @default(autoincrement())\n  tipo            String    @db.VarChar(30)\n  titulo          String    @db.VarChar(200)\n  mensaje         String\n  prioridad       String?   @default(\"normal\") @db.VarChar(20)\n  leida           Boolean?  @default(false)\n  usuario_id      Int?\n  referencia_id   Int?\n  referencia_tipo String?   @db.VarChar(30)\n  created_at      DateTime? @default(now()) @db.Timestamp(6)\n\n  @@index([created_at], map: \"idx_notificaciones_fecha\")\n  @@index([leida], map: \"idx_notificaciones_leida\")\n  @@index([usuario_id], map: \"idx_notificaciones_usuario\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\nmodel pagos_venta {\n  id             Int           @id @default(autoincrement())\n  venta_id       Int?\n  metodo_pago_id Int?\n  monto          Decimal       @db.Decimal(10, 2)\n  referencia     String?       @db.VarChar(100)\n  fecha_pago     DateTime?     @default(now()) @db.Timestamptz(6)\n  metodo_pago    metodos_pago? @relation(fields: [metodo_pago_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  venta          ventas?       @relation(fields: [venta_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([metodo_pago_id], map: \"idx_pagos_metodo\")\n  @@index([venta_id], map: \"idx_pagos_venta\")\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel cajas {\n  id            Int             @id @default(autoincrement())\n  codigo        String          @unique @db.VarChar(20)\n  nombre        String          @db.VarChar(100)\n  ubicacion     String?         @db.VarChar(200)\n  tipo          String?         @default(\"principal\") @db.VarChar(20)\n  activa        Boolean?        @default(true)\n  created_at    DateTime?       @default(now()) @db.Timestamp(6)\n  updated_at    DateTime?       @default(now()) @db.Timestamp(6)\n  sesiones_caja sesiones_caja[]\n  turnos_caja   turnos_caja[]\n\n  @@index([activa], map: \"idx_cajas_activa\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel sesiones_caja {\n  id                         Int                @id @default(autoincrement())\n  codigo_sesion              String             @unique @db.VarChar(50)\n  caja_id                    Int\n  cajero_id                  Int\n  fecha_apertura             DateTime           @default(now()) @db.Timestamp(6)\n  fondo_inicial              Decimal            @default(0) @db.Decimal(10, 2)\n  observaciones_apertura     String?\n  fecha_cierre               DateTime?          @db.Timestamp(6)\n  estado                     String?            @default(\"abierta\") @db.VarChar(20)\n  observaciones_cierre       String?\n  total_ventas_efectivo      Decimal?           @default(0) @db.Decimal(10, 2)\n  total_ventas_nequi         Decimal?           @default(0) @db.Decimal(10, 2)\n  total_ventas_tarjeta       Decimal?           @default(0) @db.Decimal(10, 2)\n  total_ventas_transferencia Decimal?           @default(0) @db.Decimal(10, 2)\n  total_ingresos_adicionales Decimal?           @default(0) @db.Decimal(10, 2)\n  total_retiros              Decimal?           @default(0) @db.Decimal(10, 2)\n  total_gastos               Decimal?           @default(0) @db.Decimal(10, 2)\n  efectivo_esperado          Decimal?           @db.Decimal(10, 2)\n  efectivo_contado           Decimal?           @db.Decimal(10, 2)\n  diferencia                 Decimal?           @db.Decimal(10, 2)\n  desglose_efectivo          Json?\n  cuadrada                   Boolean?           @default(false)\n  created_at                 DateTime?          @default(now()) @db.Timestamp(6)\n  arqueos_caja               arqueos_caja[]\n  gastos_caja                gastos_caja[]\n  movimientos_caja           movimientos_caja[]\n  retiros_caja               retiros_caja[]\n  caja                       cajas              @relation(fields: [caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  cajero                     usuarios           @relation(fields: [cajero_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  turnos_caja                turnos_caja[]\n\n  @@index([caja_id], map: \"idx_sesiones_caja\")\n  @@index([cajero_id], map: \"idx_sesiones_cajero\")\n  @@index([fecha_apertura], map: \"idx_sesiones_fecha\")\n  @@index([estado], map: \"idx_sesiones_estado\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel movimientos_caja {\n  id                    Int           @id @default(autoincrement())\n  sesion_caja_id        Int\n  venta_id              Int?\n  tipo_movimiento       String        @db.VarChar(20)\n  metodo_pago           String?       @db.VarChar(20)\n  monto                 Decimal       @db.Decimal(10, 2)\n  descripcion           String?\n  usuario_id            Int?\n  requiere_autorizacion Boolean?      @default(false)\n  autorizado_por        Int?\n  fecha_movimiento      DateTime?     @default(now()) @db.Timestamp(6)\n  monto_recibido        Decimal?      @db.Decimal(10, 2)\n  monto_cambio          Decimal?      @db.Decimal(10, 2)\n  turno_caja_id         Int?\n  autorizador           usuarios?     @relation(\"movimientos_caja_autorizador\", fields: [autorizado_por], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  sesion_caja           sesiones_caja @relation(fields: [sesion_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  turno_caja            turnos_caja?  @relation(fields: [turno_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  usuario               usuarios?     @relation(\"movimientos_caja_usuario\", fields: [usuario_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  venta                 ventas?       @relation(fields: [venta_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([sesion_caja_id], map: \"idx_movimientos_caja_sesion\")\n  @@index([tipo_movimiento], map: \"idx_movimientos_caja_tipo\")\n  @@index([fecha_movimiento], map: \"idx_movimientos_caja_fecha\")\n  @@index([venta_id], map: \"idx_movimientos_caja_venta\")\n  @@index([turno_caja_id], map: \"idx_movimientos_caja_turno\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel retiros_caja {\n  id              Int           @id @default(autoincrement())\n  sesion_caja_id  Int\n  monto           Decimal       @db.Decimal(10, 2)\n  motivo          String        @db.VarChar(200)\n  solicitado_por  Int\n  autorizado_por  Int?\n  estado          String?       @default(\"pendiente\") @db.VarChar(20)\n  fecha_solicitud DateTime?     @default(now()) @db.Timestamp(6)\n  fecha_respuesta DateTime?     @db.Timestamp(6)\n  observaciones   String?\n  recibo_url      String?       @db.VarChar(500)\n  destino_fondos  String?       @db.VarChar(200)\n  turno_caja_id   Int?\n  autorizador     usuarios?     @relation(\"retiros_caja_autorizador\", fields: [autorizado_por], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  sesion_caja     sesiones_caja @relation(fields: [sesion_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  solicitante     usuarios      @relation(\"retiros_caja_solicitante\", fields: [solicitado_por], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  turno_caja      turnos_caja?  @relation(fields: [turno_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([sesion_caja_id], map: \"idx_retiros_sesion\")\n  @@index([estado], map: \"idx_retiros_estado\")\n  @@index([fecha_solicitud], map: \"idx_retiros_fecha\")\n  @@index([turno_caja_id], map: \"idx_retiros_turno\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel gastos_caja {\n  id              Int           @id @default(autoincrement())\n  sesion_caja_id  Int\n  monto           Decimal       @db.Decimal(10, 2)\n  categoria_gasto String        @db.VarChar(100)\n  descripcion     String\n  beneficiario    String?       @db.VarChar(200)\n  comprobante_url String?       @db.VarChar(500)\n  numero_factura  String?       @db.VarChar(100)\n  autorizado_por  Int?\n  fecha_gasto     DateTime?     @default(now()) @db.Timestamp(6)\n  observaciones   String?\n  metodo_pago     String        @default(\"efectivo\") @db.VarChar(20)\n  turno_caja_id   Int?\n  autorizador     usuarios?     @relation(fields: [autorizado_por], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  sesion_caja     sesiones_caja @relation(fields: [sesion_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  turno_caja      turnos_caja?  @relation(fields: [turno_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([sesion_caja_id], map: \"idx_gastos_sesion\")\n  @@index([categoria_gasto], map: \"idx_gastos_categoria\")\n  @@index([fecha_gasto], map: \"idx_gastos_fecha\")\n  @@index([turno_caja_id], map: \"idx_gastos_turno\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel arqueos_caja {\n  id              Int           @id @default(autoincrement())\n  sesion_caja_id  Int\n  tipo_arqueo     String        @db.VarChar(20)\n  realizado_por   Int\n  fecha_arqueo    DateTime?     @default(now()) @db.Timestamp(6)\n  billetes_100000 Int?          @default(0)\n  billetes_50000  Int?          @default(0)\n  billetes_20000  Int?          @default(0)\n  billetes_10000  Int?          @default(0)\n  billetes_5000   Int?          @default(0)\n  billetes_2000   Int?          @default(0)\n  billetes_1000   Int?          @default(0)\n  monedas_1000    Int?          @default(0)\n  monedas_500     Int?          @default(0)\n  monedas_200     Int?          @default(0)\n  monedas_100     Int?          @default(0)\n  monedas_50      Int?          @default(0)\n  total_contado   Decimal?      @db.Decimal(10, 2)\n  total_esperado  Decimal?      @db.Decimal(10, 2)\n  diferencia      Decimal?      @db.Decimal(10, 2)\n  observaciones   String?\n  realizador      usuarios      @relation(fields: [realizado_por], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  sesion_caja     sesiones_caja @relation(fields: [sesion_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([sesion_caja_id], map: \"idx_arqueos_sesion\")\n  @@index([tipo_arqueo], map: \"idx_arqueos_tipo\")\n  @@index([fecha_arqueo], map: \"idx_arqueos_fecha\")\n}\n\n/// Modelo para gestión de turnos de caja\nmodel turnos_caja {\n  id                   Int                @id @default(autoincrement())\n  sesion_caja_id       Int\n  cajero_id            Int\n  caja_id              Int\n  tipo_relevo          String             @db.VarChar(30)\n  fecha_inicio         DateTime           @default(now()) @db.Timestamp(6)\n  fecha_fin            DateTime?          @db.Timestamp(6)\n  monto_inicial        Decimal            @db.Decimal(10, 2)\n  monto_final          Decimal?           @db.Decimal(10, 2)\n  diferencia           Decimal?           @db.Decimal(10, 2)\n  duracion_minutos     Int?\n  estado               String             @default(\"activo\") @db.VarChar(20)\n  motivo_suspension    String?\n  observaciones        String?\n  created_at           DateTime?          @default(now()) @db.Timestamp(6)\n  efectivo_inicial     Decimal            @db.Decimal(10, 2)\n  efectivo_final       Decimal?           @db.Decimal(10, 2)\n  observaciones_cierre String?\n  desglose_efectivo    Json?\n  turno_anterior_id    Int?\n  autorizado_por       Int?\n  gastos_caja          gastos_caja[]\n  movimientos_caja     movimientos_caja[]\n  retiros_caja         retiros_caja[]\n  autorizador          usuarios?          @relation(\"turnos_autorizador\", fields: [autorizado_por], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  caja                 cajas              @relation(fields: [caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  cajero               usuarios           @relation(\"turnos_cajero\", fields: [cajero_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  sesion_caja          sesiones_caja      @relation(fields: [sesion_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  turno_anterior       turnos_caja?       @relation(\"relevos\", fields: [turno_anterior_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  turnos_siguientes    turnos_caja[]      @relation(\"relevos\")\n  ventas               ventas[]\n\n  @@index([sesion_caja_id], map: \"idx_turnos_caja_sesion\")\n  @@index([cajero_id], map: \"idx_turnos_caja_cajero\")\n  @@index([caja_id], map: \"idx_turnos_caja_id\")\n  @@index([estado], map: \"idx_turnos_caja_estado\")\n  @@index([fecha_inicio], map: \"idx_turnos_caja_fecha\")\n  @@index([sesion_caja_id, estado], map: \"idx_turnos_activos\")\n  @@index([turno_anterior_id], map: \"idx_turnos_anterior\")\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\n/// This model contains an expression index which requires additional setup for migrations. Visit https://pris.ly/d/expression-indexes for more info.\nmodel productos {\n  id                   Int                    @id @default(autoincrement())\n  codigo               String                 @unique @db.VarChar(50)\n  nombre               String                 @db.VarChar(150)\n  descripcion          String?\n  categoria_id         Int?\n  unidad_productiva_id Int?\n  tipo_medida          String                 @db.VarChar(20)\n  unidad               String?                @db.VarChar(20)\n  precio_unitario      Decimal                @db.Decimal(10, 2)\n  precio_mayorista     Decimal?               @db.Decimal(10, 2)\n  stock_actual         Decimal?               @default(0) @db.Decimal(10, 2)\n  stock_minimo         Decimal?               @default(0) @db.Decimal(10, 2)\n  stock_maximo         Decimal?               @db.Decimal(10, 2)\n  es_perecedero        Boolean?               @default(false)\n  dias_vencimiento     Int?\n  imagen_url           String?                @db.VarChar(500)\n  activo               Boolean?               @default(true)\n  created_at           DateTime?              @default(now()) @db.Timestamp(6)\n  updated_at           DateTime?              @default(now()) @db.Timestamp(6)\n  proveedor_id         Int?\n  es_produccion_propia Boolean?               @default(true)\n  costos_produccion    costos_produccion[]\n  descuentos           descuentos[]\n  detalle_movimientos  detalle_movimientos[]\n  detalle_solicitudes  detalle_solicitudes[]\n  detalle_ventas       detalle_ventas[]\n  historial_inventario historial_inventario[]\n  lotes_productos      lotes_productos[]\n  categoria            categorias?            @relation(fields: [categoria_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  proveedor            proveedores?           @relation(fields: [proveedor_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  unidad_productiva    unidades_productivas?  @relation(fields: [unidad_productiva_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([activo], map: \"idx_productos_activo\")\n  @@index([categoria_id], map: \"idx_productos_categoria\")\n  @@index([codigo], map: \"idx_productos_codigo\")\n  @@index([unidad_productiva_id], map: \"idx_productos_unidad\")\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel proveedores {\n  id                Int         @id @default(autoincrement())\n  codigo            String      @unique @db.VarChar(50)\n  nombre            String      @db.VarChar(200)\n  nit               String?     @db.VarChar(50)\n  contacto_nombre   String?     @db.VarChar(150)\n  contacto_email    String?     @db.VarChar(150)\n  contacto_telefono String?     @db.VarChar(20)\n  direccion         String?\n  ciudad            String?     @db.VarChar(100)\n  tipo_productos    String[]\n  activo            Boolean?    @default(true)\n  created_at        DateTime?   @default(now()) @db.Timestamp(6)\n  updated_at        DateTime?   @default(now()) @db.Timestamp(6)\n  productos         productos[]\n\n  @@index([codigo], map: \"idx_proveedores_codigo\")\n  @@index([activo], map: \"idx_proveedores_activo\")\n}\n\nmodel roles {\n  id          Int        @id @default(autoincrement())\n  nombre      String     @unique @db.VarChar(50)\n  descripcion String?\n  permisos    Json?      @default(\"{}\")\n  created_at  DateTime?  @default(now()) @db.Timestamp(6)\n  updated_at  DateTime?  @default(now()) @db.Timestamp(6)\n  usuarios    usuarios[]\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel solicitudes_transferencia {\n  id                     Int                   @id @default(autoincrement())\n  codigo_solicitud       String                @unique @db.VarChar(50)\n  unidad_solicitante_id  Int?\n  unidad_proveedora_id   Int?\n  usuario_solicitante_id Int?\n  estado                 String?               @default(\"pendiente\") @db.VarChar(20)\n  fecha_solicitud        DateTime?             @default(now()) @db.Timestamp(6)\n  fecha_respuesta        DateTime?             @db.Timestamp(6)\n  usuario_respuesta_id   Int?\n  observaciones          String?\n  motivo_rechazo         String?\n  detalle_solicitudes    detalle_solicitudes[]\n  unidad_proveedora      unidades_productivas? @relation(\"solicitudes_proveedora\", fields: [unidad_proveedora_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  unidad_solicitante     unidades_productivas? @relation(\"solicitudes_solicitante\", fields: [unidad_solicitante_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  usuario_respuesta      usuarios?             @relation(\"solicitudes_respuesta\", fields: [usuario_respuesta_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  usuario_solicitante    usuarios?             @relation(\"solicitudes_solicitante\", fields: [usuario_solicitante_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([estado], map: \"idx_solicitudes_estado\")\n  @@index([unidad_solicitante_id], map: \"idx_solicitudes_solicitante\")\n  @@index([unidad_proveedora_id], map: \"idx_solicitudes_proveedora\")\n  @@index([fecha_solicitud], map: \"idx_solicitudes_fecha\")\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel turnos {\n  id                Int       @id @default(autoincrement())\n  numero_turno      Int\n  cliente_nombre    String?   @db.VarChar(150)\n  cliente_id        Int?\n  estado            String?   @default(\"esperando\") @db.VarChar(20)\n  cajero_id         Int?\n  fecha             DateTime? @default(dbgenerated(\"CURRENT_DATE\")) @db.Date\n  hora_creacion     DateTime? @default(now()) @db.Timestamptz(6)\n  hora_atencion     DateTime? @db.Timestamptz(6)\n  hora_finalizacion DateTime? @db.Timestamptz(6)\n  cliente           clientes? @relation(fields: [cliente_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@unique([numero_turno, fecha])\n  @@index([fecha], map: \"idx_turnos_fecha\")\n  @@index([estado], map: \"idx_turnos_estado\")\n  @@index([cajero_id], map: \"idx_turnos_cajero\")\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel unidades_productivas {\n  id                      Int                         @id @default(autoincrement())\n  codigo                  String                      @unique @db.VarChar(20)\n  nombre                  String                      @db.VarChar(100)\n  descripcion             String?\n  tipo                    String?                     @db.VarChar(50)\n  responsable_id          Int?\n  ubicacion               String?                     @db.VarChar(200)\n  activa                  Boolean?                    @default(true)\n  created_at              DateTime?                   @default(now()) @db.Timestamp(6)\n  updated_at              DateTime?                   @default(now()) @db.Timestamp(6)\n  lotes_productos         lotes_productos[]\n  movimientos_destino     movimientos_unidades[]      @relation(\"movimientos_destino\")\n  movimientos_origen      movimientos_unidades[]      @relation(\"movimientos_origen\")\n  productos               productos[]\n  solicitudes_proveedora  solicitudes_transferencia[] @relation(\"solicitudes_proveedora\")\n  solicitudes_solicitante solicitudes_transferencia[] @relation(\"solicitudes_solicitante\")\n  responsable             usuarios?                   @relation(fields: [responsable_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n}\n\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel usuarios {\n  id                                    Int                         @id @default(autoincrement())\n  nombre                                String                      @db.VarChar(100)\n  apellido                              String                      @db.VarChar(100)\n  email                                 String                      @unique @db.VarChar(150)\n  password_hash                         String                      @db.VarChar(255)\n  rol_id                                Int?\n  activo                                Boolean?                    @default(true)\n  ultimo_acceso                         DateTime?                   @db.Timestamp(6)\n  created_at                            DateTime?                   @default(now()) @db.Timestamp(6)\n  updated_at                            DateTime?                   @default(now()) @db.Timestamp(6)\n  arqueos_caja                          arqueos_caja[]\n  gastos_caja                           gastos_caja[]\n  lotes_productos                       lotes_productos[]\n  movimientos_caja_autorizador          movimientos_caja[]          @relation(\"movimientos_caja_autorizador\")\n  movimientos_caja_usuario              movimientos_caja[]          @relation(\"movimientos_caja_usuario\")\n  movimientos_unidades                  movimientos_unidades[]\n  retiros_caja_autorizador              retiros_caja[]              @relation(\"retiros_caja_autorizador\")\n  retiros_caja_solicitante              retiros_caja[]              @relation(\"retiros_caja_solicitante\")\n  sesiones_caja                         sesiones_caja[]\n  solicitudes_transferencia_respuesta   solicitudes_transferencia[] @relation(\"solicitudes_respuesta\")\n  solicitudes_transferencia_solicitante solicitudes_transferencia[] @relation(\"solicitudes_solicitante\")\n  turnos_autorizados                    turnos_caja[]               @relation(\"turnos_autorizador\")\n  turnos_caja                           turnos_caja[]               @relation(\"turnos_cajero\")\n  unidades_productivas                  unidades_productivas[]\n  rol                                   roles?                      @relation(fields: [rol_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  ventas                                ventas[]\n}\n\n/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.\n/// This model or at least one of its fields has comments in the database, and requires an additional setup for migrations: Read more: https://pris.ly/d/database-comments\nmodel ventas {\n  id                   Int                    @id @default(autoincrement())\n  codigo_venta         String                 @unique @db.VarChar(50)\n  usuario_id           Int?\n  fecha_venta          DateTime?              @default(now()) @db.Timestamptz(6)\n  subtotal             Decimal                @db.Decimal(10, 2)\n  impuesto             Decimal?               @default(0) @db.Decimal(10, 2)\n  descuento            Decimal?               @default(0) @db.Decimal(10, 2)\n  total                Decimal                @db.Decimal(10, 2)\n  cliente_nombre       String?                @db.VarChar(150)\n  cliente_email        String?                @db.VarChar(150)\n  cliente_telefono     String?                @db.VarChar(20)\n  estado               String?                @default(\"completada\") @db.VarChar(20)\n  requiere_factura     Boolean?               @default(false)\n  factura_generada     Boolean?               @default(false)\n  factura_url          String?                @db.VarChar(500)\n  observaciones        String?\n  created_at           DateTime?              @default(now()) @db.Timestamptz(6)\n  cliente_id           Int?\n  deleted_at           DateTime?              @db.Timestamptz(6)\n  turno_caja_id        Int?\n  descuentos_aplicados descuentos_aplicados[]\n  detalle_ventas       detalle_ventas[]\n  movimientos_caja     movimientos_caja[]\n  pagos_venta          pagos_venta[]\n  cliente              clientes?              @relation(fields: [cliente_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  turno_caja           turnos_caja?           @relation(fields: [turno_caja_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n  usuario              usuarios?              @relation(fields: [usuario_id], references: [id], onDelete: NoAction, onUpdate: NoAction)\n\n  @@index([estado], map: \"idx_ventas_estado\")\n  @@index([fecha_venta], map: \"idx_ventas_fecha\")\n  @@index([usuario_id], map: \"idx_ventas_usuario\")\n  @@index([fecha_venta, usuario_id], map: \"idx_ventas_fecha_usuario\")\n  @@index([cliente_id], map: \"idx_ventas_cliente\")\n  @@index([turno_caja_id], map: \"idx_ventas_turno\")\n}\n\nmodel metas_ventas {\n  id             Int       @id @default(autoincrement())\n  nombre         String    @db.VarChar(150)\n  monto_objetivo Decimal   @db.Decimal(12, 2)\n  anio           Int\n  activa         Boolean?  @default(true)\n  created_at     DateTime? @default(now()) @db.Timestamp(6)\n  updated_at     DateTime? @default(now()) @db.Timestamp(6)\n\n  @@index([anio], map: \"idx_metas_anio\")\n  @@index([activa], map: \"idx_metas_activa\")\n}\n",
  "inlineSchemaHash": "daae88a8a373d66563ab13ab66717001d5d1cc3a937468c2ad26428652413a87",
  "copyEngine": true
}
config.dirname = '/'

config.runtimeDataModel = JSON.parse("{\"models\":{\"auditoria\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tabla\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"registro_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"accion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"usuario_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"datos_anteriores\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"datos_nuevos\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"ip_address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_agent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fecha\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"categorias\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"icono\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"productos\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"categoriasToproductos\"}],\"dbName\":null},\"clientes\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tipo_cliente\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tipo_documento\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"numero_documento\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"apellido\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"telefono\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"direccion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ciudad\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"es_institucional\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"dependencia\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"total_compras\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"ultima_compra\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"activo\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"turnos\",\"kind\":\"object\",\"type\":\"turnos\",\"relationName\":\"clientesToturnos\"},{\"name\":\"ventas\",\"kind\":\"object\",\"type\":\"ventas\",\"relationName\":\"clientesToventas\"}],\"dbName\":null},\"configuracion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"clave\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"valor\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tipo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"costos_produccion\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"producto_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"lote_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"costo_materia_prima\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"costo_mano_obra\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"costo_insumos\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"costo_energia\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"otros_costos\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"costo_total\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"cantidad_producida\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"costo_unitario\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"fecha_registro\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lote\",\"kind\":\"object\",\"type\":\"lotes_productos\",\"relationName\":\"costos_produccionTolotes_productos\"},{\"name\":\"producto\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"costos_produccionToproductos\"}],\"dbName\":null},\"descuentos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tipo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"valor\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"minimo_compra\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"maximo_descuento\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"aplica_a\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"categoria_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"producto_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"usos_maximos\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"usos_actuales\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha_inicio\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"fecha_fin\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"solo_aprendices\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"solo_empleados\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"solo_institucional\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"activo\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"producto\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"descuentosToproductos\"},{\"name\":\"descuentos_aplicados\",\"kind\":\"object\",\"type\":\"descuentos_aplicados\",\"relationName\":\"descuentosTodescuentos_aplicados\"}],\"dbName\":null},\"descuentos_aplicados\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"venta_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"descuento_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monto_descuento\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"aplicado_por\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha_aplicacion\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"descuento\",\"kind\":\"object\",\"type\":\"descuentos\",\"relationName\":\"descuentosTodescuentos_aplicados\"},{\"name\":\"venta\",\"kind\":\"object\",\"type\":\"ventas\",\"relationName\":\"descuentos_aplicadosToventas\"}],\"dbName\":null},\"detalle_movimientos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"movimiento_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"producto_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"lote_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cantidad\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"unidad\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lote\",\"kind\":\"object\",\"type\":\"lotes_productos\",\"relationName\":\"detalle_movimientosTolotes_productos\"},{\"name\":\"movimiento\",\"kind\":\"object\",\"type\":\"movimientos_unidades\",\"relationName\":\"detalle_movimientosTomovimientos_unidades\"},{\"name\":\"producto\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"detalle_movimientosToproductos\"}],\"dbName\":null},\"detalle_solicitudes\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"solicitud_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"producto_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cantidad_solicitada\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"cantidad_aprobada\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"producto\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"detalle_solicitudesToproductos\"},{\"name\":\"solicitud\",\"kind\":\"object\",\"type\":\"solicitudes_transferencia\",\"relationName\":\"detalle_solicitudesTosolicitudes_transferencia\"}],\"dbName\":null},\"detalle_ventas\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"venta_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"producto_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"lote_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cantidad\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"precio_unitario\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"subtotal\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"costo_unitario\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"lote\",\"kind\":\"object\",\"type\":\"lotes_productos\",\"relationName\":\"detalle_ventasTolotes_productos\"},{\"name\":\"producto\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"detalle_ventasToproductos\"},{\"name\":\"venta\",\"kind\":\"object\",\"type\":\"ventas\",\"relationName\":\"detalle_ventasToventas\"}],\"dbName\":null},\"historial_inventario\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"producto_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tipo_movimiento\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cantidad_anterior\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"cantidad_movimiento\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"cantidad_nueva\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"usuario_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"referencia_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"referencia_tipo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fecha_movimiento\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"productos\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"historial_inventarioToproductos\"}],\"dbName\":null},\"lotes_productos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"producto_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo_lote\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cantidad\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"fecha_produccion\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"fecha_vencimiento\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"unidad_productiva_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"estado\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"usuario_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"costos_produccion\",\"kind\":\"object\",\"type\":\"costos_produccion\",\"relationName\":\"costos_produccionTolotes_productos\"},{\"name\":\"detalle_movimientos\",\"kind\":\"object\",\"type\":\"detalle_movimientos\",\"relationName\":\"detalle_movimientosTolotes_productos\"},{\"name\":\"detalle_ventas\",\"kind\":\"object\",\"type\":\"detalle_ventas\",\"relationName\":\"detalle_ventasTolotes_productos\"},{\"name\":\"usuario\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"lotes_productosTousuarios\"},{\"name\":\"producto\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"lotes_productosToproductos\"},{\"name\":\"unidad_productiva\",\"kind\":\"object\",\"type\":\"unidades_productivas\",\"relationName\":\"lotes_productosTounidades_productivas\"}],\"dbName\":null},\"metodos_pago\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activo\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"icono\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"pagos_venta\",\"kind\":\"object\",\"type\":\"pagos_venta\",\"relationName\":\"metodos_pagoTopagos_venta\"}],\"dbName\":null},\"movimientos_unidades\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo_movimiento\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unidad_origen_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"unidad_destino_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"usuario_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha_movimiento\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"motivo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"estado\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"detalle_movimientos\",\"kind\":\"object\",\"type\":\"detalle_movimientos\",\"relationName\":\"detalle_movimientosTomovimientos_unidades\"},{\"name\":\"unidad_destino\",\"kind\":\"object\",\"type\":\"unidades_productivas\",\"relationName\":\"movimientos_destino\"},{\"name\":\"unidad_origen\",\"kind\":\"object\",\"type\":\"unidades_productivas\",\"relationName\":\"movimientos_origen\"},{\"name\":\"usuario\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"movimientos_unidadesTousuarios\"}],\"dbName\":null},\"notificaciones\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tipo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"titulo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mensaje\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"prioridad\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"leida\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"usuario_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"referencia_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"referencia_tipo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"pagos_venta\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"venta_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"metodo_pago_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monto\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"referencia\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fecha_pago\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"metodo_pago\",\"kind\":\"object\",\"type\":\"metodos_pago\",\"relationName\":\"metodos_pagoTopagos_venta\"},{\"name\":\"venta\",\"kind\":\"object\",\"type\":\"ventas\",\"relationName\":\"pagos_ventaToventas\"}],\"dbName\":null},\"cajas\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ubicacion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tipo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activa\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sesiones_caja\",\"kind\":\"object\",\"type\":\"sesiones_caja\",\"relationName\":\"cajasTosesiones_caja\"},{\"name\":\"turnos_caja\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"cajasToturnos_caja\"}],\"dbName\":null},\"sesiones_caja\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo_sesion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cajero_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha_apertura\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"fondo_inicial\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"observaciones_apertura\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fecha_cierre\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"estado\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"observaciones_cierre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"total_ventas_efectivo\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_ventas_nequi\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_ventas_tarjeta\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_ventas_transferencia\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_ingresos_adicionales\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_retiros\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_gastos\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"efectivo_esperado\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"efectivo_contado\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"diferencia\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"desglose_efectivo\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"cuadrada\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"arqueos_caja\",\"kind\":\"object\",\"type\":\"arqueos_caja\",\"relationName\":\"arqueos_cajaTosesiones_caja\"},{\"name\":\"gastos_caja\",\"kind\":\"object\",\"type\":\"gastos_caja\",\"relationName\":\"gastos_cajaTosesiones_caja\"},{\"name\":\"movimientos_caja\",\"kind\":\"object\",\"type\":\"movimientos_caja\",\"relationName\":\"movimientos_cajaTosesiones_caja\"},{\"name\":\"retiros_caja\",\"kind\":\"object\",\"type\":\"retiros_caja\",\"relationName\":\"retiros_cajaTosesiones_caja\"},{\"name\":\"caja\",\"kind\":\"object\",\"type\":\"cajas\",\"relationName\":\"cajasTosesiones_caja\"},{\"name\":\"cajero\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"sesiones_cajaTousuarios\"},{\"name\":\"turnos_caja\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"sesiones_cajaToturnos_caja\"}],\"dbName\":null},\"movimientos_caja\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"sesion_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"venta_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tipo_movimiento\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"metodo_pago\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"monto\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"usuario_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"requiere_autorizacion\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"autorizado_por\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha_movimiento\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"monto_recibido\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"monto_cambio\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"turno_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"autorizador\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"movimientos_caja_autorizador\"},{\"name\":\"sesion_caja\",\"kind\":\"object\",\"type\":\"sesiones_caja\",\"relationName\":\"movimientos_cajaTosesiones_caja\"},{\"name\":\"turno_caja\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"movimientos_cajaToturnos_caja\"},{\"name\":\"usuario\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"movimientos_caja_usuario\"},{\"name\":\"venta\",\"kind\":\"object\",\"type\":\"ventas\",\"relationName\":\"movimientos_cajaToventas\"}],\"dbName\":null},\"retiros_caja\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"sesion_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monto\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"motivo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"solicitado_por\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"autorizado_por\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"estado\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fecha_solicitud\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"fecha_respuesta\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"recibo_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"destino_fondos\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"turno_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"autorizador\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"retiros_caja_autorizador\"},{\"name\":\"sesion_caja\",\"kind\":\"object\",\"type\":\"sesiones_caja\",\"relationName\":\"retiros_cajaTosesiones_caja\"},{\"name\":\"solicitante\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"retiros_caja_solicitante\"},{\"name\":\"turno_caja\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"retiros_cajaToturnos_caja\"}],\"dbName\":null},\"gastos_caja\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"sesion_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monto\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"categoria_gasto\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"beneficiario\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"comprobante_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"numero_factura\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"autorizado_por\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha_gasto\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"metodo_pago\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"turno_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"autorizador\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"gastos_cajaTousuarios\"},{\"name\":\"sesion_caja\",\"kind\":\"object\",\"type\":\"sesiones_caja\",\"relationName\":\"gastos_cajaTosesiones_caja\"},{\"name\":\"turno_caja\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"gastos_cajaToturnos_caja\"}],\"dbName\":null},\"arqueos_caja\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"sesion_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tipo_arqueo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"realizado_por\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha_arqueo\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"billetes_100000\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"billetes_50000\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"billetes_20000\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"billetes_10000\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"billetes_5000\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"billetes_2000\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"billetes_1000\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monedas_1000\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monedas_500\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monedas_200\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monedas_100\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"monedas_50\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"total_contado\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_esperado\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"diferencia\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"realizador\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"arqueos_cajaTousuarios\"},{\"name\":\"sesion_caja\",\"kind\":\"object\",\"type\":\"sesiones_caja\",\"relationName\":\"arqueos_cajaTosesiones_caja\"}],\"dbName\":null},\"turnos_caja\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"sesion_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cajero_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tipo_relevo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fecha_inicio\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"fecha_fin\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"monto_inicial\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"monto_final\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"diferencia\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"duracion_minutos\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"estado\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"motivo_suspension\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"efectivo_inicial\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"efectivo_final\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"observaciones_cierre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"desglose_efectivo\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"turno_anterior_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"autorizado_por\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"gastos_caja\",\"kind\":\"object\",\"type\":\"gastos_caja\",\"relationName\":\"gastos_cajaToturnos_caja\"},{\"name\":\"movimientos_caja\",\"kind\":\"object\",\"type\":\"movimientos_caja\",\"relationName\":\"movimientos_cajaToturnos_caja\"},{\"name\":\"retiros_caja\",\"kind\":\"object\",\"type\":\"retiros_caja\",\"relationName\":\"retiros_cajaToturnos_caja\"},{\"name\":\"autorizador\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"turnos_autorizador\"},{\"name\":\"caja\",\"kind\":\"object\",\"type\":\"cajas\",\"relationName\":\"cajasToturnos_caja\"},{\"name\":\"cajero\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"turnos_cajero\"},{\"name\":\"sesion_caja\",\"kind\":\"object\",\"type\":\"sesiones_caja\",\"relationName\":\"sesiones_cajaToturnos_caja\"},{\"name\":\"turno_anterior\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"relevos\"},{\"name\":\"turnos_siguientes\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"relevos\"},{\"name\":\"ventas\",\"kind\":\"object\",\"type\":\"ventas\",\"relationName\":\"turnos_cajaToventas\"}],\"dbName\":null},\"productos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"categoria_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"unidad_productiva_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tipo_medida\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unidad\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"precio_unitario\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"precio_mayorista\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"stock_actual\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"stock_minimo\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"stock_maximo\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"es_perecedero\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"dias_vencimiento\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"imagen_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activo\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"proveedor_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"es_produccion_propia\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"costos_produccion\",\"kind\":\"object\",\"type\":\"costos_produccion\",\"relationName\":\"costos_produccionToproductos\"},{\"name\":\"descuentos\",\"kind\":\"object\",\"type\":\"descuentos\",\"relationName\":\"descuentosToproductos\"},{\"name\":\"detalle_movimientos\",\"kind\":\"object\",\"type\":\"detalle_movimientos\",\"relationName\":\"detalle_movimientosToproductos\"},{\"name\":\"detalle_solicitudes\",\"kind\":\"object\",\"type\":\"detalle_solicitudes\",\"relationName\":\"detalle_solicitudesToproductos\"},{\"name\":\"detalle_ventas\",\"kind\":\"object\",\"type\":\"detalle_ventas\",\"relationName\":\"detalle_ventasToproductos\"},{\"name\":\"historial_inventario\",\"kind\":\"object\",\"type\":\"historial_inventario\",\"relationName\":\"historial_inventarioToproductos\"},{\"name\":\"lotes_productos\",\"kind\":\"object\",\"type\":\"lotes_productos\",\"relationName\":\"lotes_productosToproductos\"},{\"name\":\"categoria\",\"kind\":\"object\",\"type\":\"categorias\",\"relationName\":\"categoriasToproductos\"},{\"name\":\"proveedor\",\"kind\":\"object\",\"type\":\"proveedores\",\"relationName\":\"productosToproveedores\"},{\"name\":\"unidad_productiva\",\"kind\":\"object\",\"type\":\"unidades_productivas\",\"relationName\":\"productosTounidades_productivas\"}],\"dbName\":null},\"proveedores\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nit\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contacto_nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contacto_email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contacto_telefono\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"direccion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ciudad\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tipo_productos\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activo\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"productos\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"productosToproveedores\"}],\"dbName\":null},\"roles\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permisos\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"usuarios\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"rolesTousuarios\"}],\"dbName\":null},\"solicitudes_transferencia\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo_solicitud\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unidad_solicitante_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"unidad_proveedora_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"usuario_solicitante_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"estado\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fecha_solicitud\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"fecha_respuesta\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"usuario_respuesta_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"motivo_rechazo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"detalle_solicitudes\",\"kind\":\"object\",\"type\":\"detalle_solicitudes\",\"relationName\":\"detalle_solicitudesTosolicitudes_transferencia\"},{\"name\":\"unidad_proveedora\",\"kind\":\"object\",\"type\":\"unidades_productivas\",\"relationName\":\"solicitudes_proveedora\"},{\"name\":\"unidad_solicitante\",\"kind\":\"object\",\"type\":\"unidades_productivas\",\"relationName\":\"solicitudes_solicitante\"},{\"name\":\"usuario_respuesta\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"solicitudes_respuesta\"},{\"name\":\"usuario_solicitante\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"solicitudes_solicitante\"}],\"dbName\":null},\"turnos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"numero_turno\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"cliente_nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cliente_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"estado\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cajero_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"hora_creacion\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"hora_atencion\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"hora_finalizacion\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"cliente\",\"kind\":\"object\",\"type\":\"clientes\",\"relationName\":\"clientesToturnos\"}],\"dbName\":null},\"unidades_productivas\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"descripcion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tipo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"responsable_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ubicacion\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activa\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lotes_productos\",\"kind\":\"object\",\"type\":\"lotes_productos\",\"relationName\":\"lotes_productosTounidades_productivas\"},{\"name\":\"movimientos_destino\",\"kind\":\"object\",\"type\":\"movimientos_unidades\",\"relationName\":\"movimientos_destino\"},{\"name\":\"movimientos_origen\",\"kind\":\"object\",\"type\":\"movimientos_unidades\",\"relationName\":\"movimientos_origen\"},{\"name\":\"productos\",\"kind\":\"object\",\"type\":\"productos\",\"relationName\":\"productosTounidades_productivas\"},{\"name\":\"solicitudes_proveedora\",\"kind\":\"object\",\"type\":\"solicitudes_transferencia\",\"relationName\":\"solicitudes_proveedora\"},{\"name\":\"solicitudes_solicitante\",\"kind\":\"object\",\"type\":\"solicitudes_transferencia\",\"relationName\":\"solicitudes_solicitante\"},{\"name\":\"responsable\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"unidades_productivasTousuarios\"}],\"dbName\":null},\"usuarios\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"apellido\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password_hash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"rol_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"activo\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"ultimo_acceso\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"arqueos_caja\",\"kind\":\"object\",\"type\":\"arqueos_caja\",\"relationName\":\"arqueos_cajaTousuarios\"},{\"name\":\"gastos_caja\",\"kind\":\"object\",\"type\":\"gastos_caja\",\"relationName\":\"gastos_cajaTousuarios\"},{\"name\":\"lotes_productos\",\"kind\":\"object\",\"type\":\"lotes_productos\",\"relationName\":\"lotes_productosTousuarios\"},{\"name\":\"movimientos_caja_autorizador\",\"kind\":\"object\",\"type\":\"movimientos_caja\",\"relationName\":\"movimientos_caja_autorizador\"},{\"name\":\"movimientos_caja_usuario\",\"kind\":\"object\",\"type\":\"movimientos_caja\",\"relationName\":\"movimientos_caja_usuario\"},{\"name\":\"movimientos_unidades\",\"kind\":\"object\",\"type\":\"movimientos_unidades\",\"relationName\":\"movimientos_unidadesTousuarios\"},{\"name\":\"retiros_caja_autorizador\",\"kind\":\"object\",\"type\":\"retiros_caja\",\"relationName\":\"retiros_caja_autorizador\"},{\"name\":\"retiros_caja_solicitante\",\"kind\":\"object\",\"type\":\"retiros_caja\",\"relationName\":\"retiros_caja_solicitante\"},{\"name\":\"sesiones_caja\",\"kind\":\"object\",\"type\":\"sesiones_caja\",\"relationName\":\"sesiones_cajaTousuarios\"},{\"name\":\"solicitudes_transferencia_respuesta\",\"kind\":\"object\",\"type\":\"solicitudes_transferencia\",\"relationName\":\"solicitudes_respuesta\"},{\"name\":\"solicitudes_transferencia_solicitante\",\"kind\":\"object\",\"type\":\"solicitudes_transferencia\",\"relationName\":\"solicitudes_solicitante\"},{\"name\":\"turnos_autorizados\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"turnos_autorizador\"},{\"name\":\"turnos_caja\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"turnos_cajero\"},{\"name\":\"unidades_productivas\",\"kind\":\"object\",\"type\":\"unidades_productivas\",\"relationName\":\"unidades_productivasTousuarios\"},{\"name\":\"rol\",\"kind\":\"object\",\"type\":\"roles\",\"relationName\":\"rolesTousuarios\"},{\"name\":\"ventas\",\"kind\":\"object\",\"type\":\"ventas\",\"relationName\":\"usuariosToventas\"}],\"dbName\":null},\"ventas\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"codigo_venta\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"usuario_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"fecha_venta\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"subtotal\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"impuesto\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"descuento\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"cliente_nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cliente_email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cliente_telefono\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"estado\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"requiere_factura\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"factura_generada\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"factura_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"observaciones\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"cliente_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"turno_caja_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"descuentos_aplicados\",\"kind\":\"object\",\"type\":\"descuentos_aplicados\",\"relationName\":\"descuentos_aplicadosToventas\"},{\"name\":\"detalle_ventas\",\"kind\":\"object\",\"type\":\"detalle_ventas\",\"relationName\":\"detalle_ventasToventas\"},{\"name\":\"movimientos_caja\",\"kind\":\"object\",\"type\":\"movimientos_caja\",\"relationName\":\"movimientos_cajaToventas\"},{\"name\":\"pagos_venta\",\"kind\":\"object\",\"type\":\"pagos_venta\",\"relationName\":\"pagos_ventaToventas\"},{\"name\":\"cliente\",\"kind\":\"object\",\"type\":\"clientes\",\"relationName\":\"clientesToventas\"},{\"name\":\"turno_caja\",\"kind\":\"object\",\"type\":\"turnos_caja\",\"relationName\":\"turnos_cajaToventas\"},{\"name\":\"usuario\",\"kind\":\"object\",\"type\":\"usuarios\",\"relationName\":\"usuariosToventas\"}],\"dbName\":null},\"metas_ventas\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"nombre\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"monto_objetivo\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"anio\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"activa\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}")
defineDmmfProperty(exports.Prisma, config.runtimeDataModel)
config.engineWasm = {
  getRuntime: async () => require('./query_engine_bg.js'),
  getQueryEngineWasmModule: async () => {
    const loader = (await import('#wasm-engine-loader')).default
    const engine = (await loader).default
    return engine
  }
}
config.compilerWasm = undefined

config.injectableEdgeEnv = () => ({
  parsed: {
    DATABASE_URL: typeof globalThis !== 'undefined' && globalThis['DATABASE_URL'] || typeof process !== 'undefined' && process.env && process.env.DATABASE_URL || undefined
  }
})

if (typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined) {
  Debug.enable(typeof globalThis !== 'undefined' && globalThis['DEBUG'] || typeof process !== 'undefined' && process.env && process.env.DEBUG || undefined)
}

const PrismaClient = getPrismaClient(config)
exports.PrismaClient = PrismaClient
Object.assign(exports, Prisma)

