propel:

  traza:
    id: ~
    especialista_id: { type: integer, foreignTable: especialista, foreignReference: id, required: true, onDelete: cascade }
    accion: { type: longvarchar}
    fecha: { type: DATE }
    created_at: ~
    updated_at: ~
    
  setup:
    id: ~
    nombre: { type: CHAR, size: 20 }
    id_item: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 50 }
    valor: { type: CHAR, size: 200 }
    tipo_valor_id: { type: integer, foreignTable: tipo_valor, foreignReference: id, required: true }
    valor_inicial: { type: CHAR, size: 200 }
    maximo: { type: CHAR, size: 200 }
    minimo: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

  equipo:
    id: ~
    modelo_id: { type: INTEGER, foreignTable: modelo, foreignReference: id, onDelete: setnull }
    nombre: { type: VARCHAR, size: '20' }
    numero_telefonico: { type: VARCHAR, size: '30' }
    numero_serie: { type: VARCHAR, size: '20' }
    created_at: ~
    updated_at: ~
    
  tipo_valor:
    id: ~
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

  periodo_contable:
    id: ~
    fecha_inicial: { type: DATE }
    fecha_final: { type: DATE }
    descripcion: { type: CHAR, size: 200 }
    cerrado: { type: TINYINT, size: 1, default: 0} #1 - Cerrado
    activo: { type: TINYINT, size: 1, default: 0} #1 - Activo. Solo puede existir uno y solo un periodo activo
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true }
    created_at: ~
    updated_at: ~

  extraccion_caja:
    id: ~
    #periodo_contable_id: ~
    fecha: { type: DATE }
    monto: { type: DOUBLE }
    created_at: ~
    updated_at: ~

  cuadre_caja:
    id: ~
    periodo_contable_id: ~
    especialista_id: ~
    empresa_id: ~
    dia: { type: TINYINT, size: 1 }
    monto_sistema: { type: DOUBLE }
    monto_caja: { type: DOUBLE }
    created_at: ~
    updated_at: ~

  tipo_gasto:
    id: ~
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true }
    fijo: { type: TINYINT, size: 1, default: 0 } #0 - Verdadero, 1 - Falso
    neutro: { type: TINYINT, size: 1, default: 0 } #0 - NO, 1 - SI
    created_at: ~
    updated_at: ~

  gasto_departamento:
    id: ~
    tipo_gasto_id: { type: integer, foreignTable: tipo_gasto, foreignReference: id, required: true }
    especialista_id: { type: integer, foreignTable: especialista, foreignReference: id, required: true }
    tasa_cambio: { type: DOUBLE }
    tasa_cambio_usd: { type: DOUBLE }
    descripcion: { type: CHAR, size: 255 }
    cantidad: { type: DOUBLE }
    valor: { type: DOUBLE }
    fecha: { type: DATE }
    periodo_contable_id: { type: integer, foreignTable: periodo_contable, foreignReference: id, required: true }
    created_at: ~
    updated_at: ~

  moneda:
    id: ~
    nombre: { type: CHAR, size: 20 }
    alias: { type: CHAR, size: 5 }
    descripcion: { type: CHAR, size: 20 }
    tasa_cambio: { type: DOUBLE }
    created_at: ~
    updated_at: ~

  empresa:
    id: ~
    alias: { type: CHAR, size: 50 }
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    url: { type: CHAR, size: 200, default: 'cliente_servicio' }
    gastos_fijos: { type: TINYINT, size: 1, default: 0 }
    servicio_manual: { type: TINYINT, size: 1, default: 0 }
    venta_dinamica: { type: TINYINT, size: 1, default: 0 }
    created_at: ~
    updated_at: ~

  descuento_especialista:
    id: ~
    especialista_id: ~
    periodo_contable_id: { type: integer, foreignTable: periodo_contable, foreignReference: id, required: true }
    cantidad: { type: DOUBLE }
    descripcion: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

#  :
#    id: ~
#    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
#    : { type:  }
#    descripcion: { type: CHAR, size: 200 }
#    created_at: ~
#    updated_at: ~

  servicio:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    cliente_id: { type: integer, foreignTable: cliente, foreignReference: id, required: true, onDelete: cascade }
    especialista_id: { type: integer, foreignTable: especialista, foreignReference: id, required: true, onDelete: cascade } #secretaria
    mecanico_id: { type: integer, foreignTable: especialista, foreignReference: id, onDelete: cascade } #mecanico
    diagnostico_id: { type: integer, foreignTable: diagnostico, foreignReference: id, required: true }
    modelo_equipo_id: { type: integer, foreignTable: modelo, foreignReference: id, required: true }
    periodo_contable_id: { type: integer, foreignTable: periodo_contable, foreignReference: id, required: true }
    inventario_id: { type: INTEGER, default: 0 }
    promotor: { type: VARCHAR, size: 200, default: '' } #promotor
    fecha: { type: DATE }
    tipo: { type: TINYINT, size: 0 }
    descripcion: { type: VARCHAR, size: 200 }
    es_merma: { type: TINYINT, size: 1, default: 0 }
    merma_recogida: { type: TINYINT, size: 1, default: 0 }
    fecha_recogida: { type: DATE }
    al_por_mayor: { type: TINYINT, size: 0, default: 0 }
    borrado: { type: TINYINT, size: 1, default: 0 }
    mano_obra: { type: TINYINT, size: 1 }
    garantia: { type: TINYINT, size: 2 }
    precio_manual: { type: TINYINT, size: 3 }
    porciento_pago: {type: TINYINT, default: 10}
    porciento_pago_mecanico: {type: TINYINT, default: 10}
    porciento_pago_promotor: {type: TINYINT, default: 10}
    pago_secretaria: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo
    pago_promotor: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo
    pago_mecanico: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo
    pagado: { type: TINYINT, size: 1 }
    observaciones: { type: VARCHAR, size: 255, default: '' }
    created_at: ~
    updated_at: ~
    contador_update: { type: INTEGER, default: 0}

  devolucion_merma:
    id: ~
    modelo_id: { type: integer, foreignTable: modelo, foreignReference: id, required: true, onDelete: cascade }
    costo: { type: DOUBLE, default: 0 }
    venta: { type: DOUBLE, default: 0 }
    cantidad: { type: DOUBLE, default: 0 }
    fecha: { type: DATE }
    created_at: ~
    updated_at: ~

  opciones_servicio_manual:
    id: ~
    servicio_id: { type: integer, foreignTable: servicio, foreignReference: id, required: true }
    value: { type: VARCHAR, size: 50 }
    venta: { type: DOUBLE }
    garantia: { type: TINYINT, size: 1, default: 0 } ####Tabla setup variable: garantia -|- valor: 0|1|3|7|15|21|30|60|90
    moneda: { type: TINYINT, size: 1, default: 0 } ###0 - CUC || 1 - MN
    
  devolucion_servicio_periodo:
    id: ~
    periodo_contable_id: { type: integer, foreignTable: periodo_contable, foreignReference: id, required: true }
    servicio_id: { type: integer, foreignTable: servicio, foreignReference: id, required: true }
    especialista_id: { type: integer, foreignTable: especialista, foreignReference: id, required: true, onDelete: cascade }
    gasto_id: { type: integer, foreignTable: gasto_departamento, foreignReference: id, required: true, onDelete: cascade }
    parcial: { type: TINYINT, size: 1 } ###1 - NO || -1 - SI
    descripcion: { type: CHAR, size: 200 }
    fecha: { type: DATE }
    created_at: ~
    updated_at: ~

  modelo_servicio:
    id: ~
    servicio_id: { type: integer, foreignTable: servicio, foreignReference: id, required: true, onDelete: cascade }
    modelo_id: { type: integer, foreignTable: modelo, foreignReference: id, required: true, onDelete: cascade }
    otros_datos: { type: CHAR, size: 200 }
    costo_de: { type: TINYINT, size: 0, default: 0 } ### 0 - Sistema, 1 - Especialista
    costo: { type: DOUBLE }
    venta: { type: DOUBLE }
    pago: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo vendido
    moneda: { type: TINYINT, size: 1, default: 1 } ###0 - MN || 1 - USD
    tasa_cambio: { type: DOUBLE, default: 1 }
    tasa_cambio_usd: { type: DOUBLE }
    descuento: { type: DOUBLE }
    plus: { type: DOUBLE }
    cantidad: { type: DOUBLE, default: 0 }
    pago_secretaria: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo
    pago_promotor: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo
    pago_mecanico: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo
    mp_id: { type: CHAR, size: 50 }
    devolucion: { type: TINYINT, size: 1 } ###1 - NO || -1 - SI
    es_merma: { type: TINYINT, size: 1, default: 0 } ###1 - NO || 1 - SI
    costo_producto: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 1 si es, 0 NO es
    created_at: ~
    updated_at: ~

  concepto:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

  diagnostico:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

  concepto_gasto:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

  gasto:
    cuenta_id: { type: integer, foreignTable: cuenta, foreignReference: id, required: true }
    especialista_id: { type: integer, foreignTable: especialista, foreignReference: id, required: true }
    concepto_gasto_id: { type: integer, foreignTable: concepto_gasto, foreignReference: id, required: true }
    fecha: {type: DATE}
    valor: {type: DOUBLE}

  ingreso:
    cuenta_id: { type: integer, foreignTable: cuenta, foreignReference: id, required: true }
    servicio_id: { type: integer, foreignTable: servicio, foreignReference: id, required: true }
    fecha: {type: DATE}
    valor: {type: DOUBLE}

  cuenta:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true }
    concepto_id: { type: integer, foreignTable: concepto, foreignReference: id, required: true }
    moneda_id: { type: integer, foreignTable: moneda, foreignReference: id, required: true }
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

  estado_cuenta:
    id: ~
    cuenta_id: { type: integer, foreignTable: cuenta, foreignReference: id, required: true, onDelete: cascade }
    valor_inicial: { type: DOUBLE }
    valor_final: { type: DOUBLE }
    descripcion: { type: CHAR, size: 200 }
    fecha: { type: DATE }
    created_at: ~
    updated_at: ~

  tipo_especialista:
    id: ~
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

  especialista:
    id: ~
    user_id: { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade }
    tipo_especialista_id: { type: integer, foreignTable: tipo_especialista, foreignReference: id, required: true }
    plantilla_gastos_fijos: {type: TINYINT, default: 0} ###Valor Entre 0 y 4
    nombre: {type: VARCHAR, size: '255', required: true, default: ''}
    apellidos: {type: VARCHAR, size: '255', required: true, default: ''}
    porciento_pago: {type: TINYINT, default: 0} ###El valor de este campo estara entre 0 y 100
    escala_pago: {type: TINYINT, default: 0} ### Si el valor es distinto de 0 se aplica la escala de pago correspondiente
    porciento_pago_accesorio: {type: TINYINT, default: 0} ###El valor de este campo estara entre 0 y 100
    no_licencia: {type: VARCHAR, size: '50', required: true, default: ''}
    documento: {type: VARCHAR, size: '50', required: true, default: ''}
    no_ci: {type: VARCHAR, size: '50', required: true, default: ''}
    created_at: ~
    updated_at: ~

  especialista_empresa:
    _attributes: { phpName: EspecialistaEmpresa }
    id: ~
    especialista_id: { type: integer, foreignTable: especialista, foreignReference: id, required: true, onDelete: cascade }
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    porciento_pago: {type: DOUBLE, default: 0} ###El valor de este campo estara entre 0 y 100
    escala_pago: {type: TINYINT, default: 0} ### Si el valor es distinto de 0 se aplica la escala de pago correspondiente
    created_at: ~
    updated_at: ~
    
  deuda_trabajador:
    id: ~
    especialista_id: { type: integer, foreignTable: especialista, foreignReference: id, required: true, onDelete: cascade }
    descripcion: { type: VARCHAR, size: '255' }
    valor: { type: DOUBLE }
    fecha: { type: DATE }
    pagada: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-pendiente 1-pagada
    moneda: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-usd 1-cup
    created_at: ~
    updated_at: ~
    
  pago_trabajador:
    id: ~
    deuda_trabajador_id: { type: integer, foreignTable: deuda_trabajador, foreignReference: id, required: true, onDelete: cascade }
    descripcion: { type: VARCHAR, size: '255' }
    valor: { type: DOUBLE }
    fecha: { type: DATE }
    moneda: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-usd 1-cup
    created_at: ~
    updated_at: ~
    
  deuda_cliente:
    id: ~
    cliente_id: { type: integer, foreignTable: cliente, foreignReference: id, required: true, onDelete: cascade }
    descripcion: { type: VARCHAR, size: '255' }
    valor: { type: DOUBLE }
    fecha: { type: DATE }
    pagada: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-pendiente 1-pagada
    moneda: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-usd 1-cup
    created_at: ~
    updated_at: ~
    
  pago_cliente:
    id: ~
    deuda_cliente_id: { type: integer, foreignTable: deuda_cliente, foreignReference: id, required: true, onDelete: cascade }
    descripcion: { type: VARCHAR, size: '255' }
    valor: { type: DOUBLE }
    fecha: { type: DATE }
    moneda: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-usd 1-cup
    created_at: ~
    updated_at: ~
    
  escala_pago:
    id: ~
    minimo: { type: DOUBLE }
    maximo: { type: DOUBLE }
    porciento_pago: {type: TINYINT, default: 0} ###El valor de este campo estara entre 0 y 100

  equipo:
    id: ~
    modelo_id: { type: INTEGER, foreignTable: modelo, foreignReference: id, onDelete: setnull }
    nombre: { type: VARCHAR, size: '20' }
    numero_telefonico: { type: VARCHAR, size: '30' }
    numero_serie: { type: VARCHAR, size: '20' }
    created_at: ~
    updated_at: ~

  tipo_cliente:
    id: ~
    nombre: { type: CHAR, size: 50 }
    descripcion: { type: CHAR, size: 200 }
    created_at: ~
    updated_at: ~

  cliente:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    tipo_cliente_id: { type: integer, foreignTable: tipo_cliente, foreignReference: id, required: true }
    numero: { type: INTEGER }
    nombre: { type: VARCHAR, size: '60' }
    c_i: { type: VARCHAR, size: '11' }
    email: { type: VARCHAR, size: '50' }
    telefono_contacto1: { type: VARCHAR, size: '20' }
    telefono_contacto2: { type: VARCHAR, size: '20' }
    telefono_contacto3: { type: VARCHAR, size: '20' }
    equipo: { type: VARCHAR, size: 50 }
    modelo: { type: VARCHAR, size: 50 }
    imei: { type: VARCHAR, size: 20 }
    imei_etiqueta: { type: VARCHAR, size: 20 }
    valor: { type: DOUBLE }
    garantia_desde: { type: DATE }
    garantia_hasta: { type: DATE }
    created_at: ~
    updated_at: ~
    
  cliente_cuenta:
    id: ~
    cliente_id: { type: integer, foreignTable: cliente, foreignReference: id, required: true, onDelete: cascade }
    servicio_id: { type: integer, foreignTable: servicio, foreignReference: id, required: false, onDelete: cascade }
    modelo_id: { type: integer, foreignTable: modelo, foreignReference: id, required: false }
    descripcion: { type: VARCHAR, size: '255', default: '' }
    valor: { type: DOUBLE }
    fecha: { type: DATE }
    telefono: { type: VARCHAR, size: '20', required: true }
    entrada_salida: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-entrada 1-salida
    concepto: {type: TINYINT, size: 1, default: 1} ###El valor de este campo es 1-credito 2-debito 3-reserva
    moneda: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-usd 1-cup
    created_at: ~
    updated_at: ~

  tipo_modelo:
    id: ~
    nombre: { type: VARCHAR, size: '20', required: true, index: unique }
    created_at: ~
    updated_at: ~

  marca:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true }
    nombre: { type: VARCHAR, size: '20' }
    orden_visual: { type: INTEGER }
    deleted_at: { type: TINYINT, size: 1, default: 0 } #1: Eliminado
    tipo: { type: TINYINT, size: 1, default: 0 } #0: Inventario, 1: fuera de inventario(Servicio)
    porciento_pago: {type: TINYINT, size: 1, default: 0} ###El valor de este campo estara entre 0 y 100
    created_at: ~
    updated_at: ~

  producto:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true }
    nombre: { type: VARCHAR, size: '20' }
    code_bar: { type: VARCHAR, size: '7', index: 'index' }
    estilo: { type: VARCHAR, size: '10' }
    orden_visual: { type: INTEGER }
    deleted_at: { type: TINYINT, size: 1, default: 0 } #1: Eliminado
    porciento_pago: {type: TINYINT, size: 1, default: 0} ###El valor de este campo estara entre 0 y 100
    es_accesorio: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 1 si es, 0 NO es
    tipo: { type: TINYINT, size: 1, default: 0 } #0: Inventario, 1: fuera de inventario(Servicio)
    descuento_al_por_mayor: { type: DOUBLE, default: 0 }
    otros_datos: { type: TINYINT, size: 1, default: 0 } #0: NO, 1: SI
    created_at: ~
    updated_at: ~

  modelo:
    id: ~
    marca_id: { type: INTEGER, foreignTable: marca, foreignReference: id, onDelete: cascade }
    producto_id: { type: INTEGER, foreignTable: producto, foreignReference: id, onDelete: cascade }
    tipo_modelo_id: { type: INTEGER, foreignTable: tipo_modelo, foreignReference: id, onDelete: setnull }
    nombre: { type: VARCHAR, size: '200' }
    code_bar: { type: VARCHAR, size: '7', index: 'index' }
    punto_pedido: { type: INTEGER }
    precio: { type: DOUBLE, default: 0 }
    precio_publico: { type: DOUBLE, default: 0 }   
    precio_publico_almacen: { type: DOUBLE, default: 0 }   
    moneda: { type: TINYINT, size: 1, default: 1 } ###0 - MN || 1 - USD
    moneda_publico: { type: TINYINT, size: 1, default: 1 } ###0 - MN || 1 - USD
    moneda_publico_almacen: { type: TINYINT, size: 1, default: 1 } ###0 - MN || 1 - USD
    compatible_con: { type: LONGVARCHAR }
    favorito: { type: TINYINT, size: 1, default: 0 } #0: NO, 1: SI
    en_falta: { type: TINYINT, size: 1, default: 0 } #0: En existencia, 1: Falta
    lista_top: { type: TINYINT, size: 1, default: 0 } #Distinto de cero da el orden de la lista TOP 
    deleted_at: { type: TINYINT, size: 1, default: 0 } #1: Eliminado
    porciento_pago: {type: TINYINT, size: 1, default: 0} ###El valor de este campo estara entre 0 y 100
    pago: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo vendido
    pago_mecanico: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo vendido
    pago_promotor: {type: DOUBLE, default: 0} ###Monto que se paga por cada articulo vendido
    formato_pago: {type: TINYINT, size: 1, default: 0} ###El valor de este campo es 0-valor(campo-pago), 1-valor(campo-porciento_pago)
    mano_obra: {type: TINYINT, size: 1, default: 0} ###El valor de este campo estara entre 0 y 100
    pantalla: { type: VARCHAR, size: '40' }
    flash: { type: VARCHAR, size: '40' }
    camaraf: { type: VARCHAR, size: '40' }
    camarat: { type: VARCHAR, size: '40' }
    huella: { type: VARCHAR, size: '40' }
    facial: { type: VARCHAR, size: '40' }
    dialsim: { type: VARCHAR, size: '40' }
    micro: { type: VARCHAR, size: '40' }
    memoria: { type: VARCHAR, size: '40' }
    capacidad: { type: VARCHAR, size: '40' }
    tarjeta: { type: VARCHAR, size: '40' }
    tipo: { type: TINYINT, size: 1, default: 0 } #0: Inventario, 1: fuera de inventario(Servicio)
    marca_custom: { type: VARCHAR, size: '150' }
    modelo: { type: VARCHAR, size: '150' }
    caracteristicas: { type: VARCHAR, size: '255' }
    imei: { type: VARCHAR, size: '150' }
    created_at: ~
    updated_at: ~

  inventario_chequeado:
    id: ~
    modelo_id: { type: INTEGER, foreignTable: modelo, foreignReference: id, onDelete: cascade }
    chequeado: { type: TINYINT, size: 1, default: 0 } #0: NO, 1: SI
    destino: { type: TINYINT, size: 1, default: 0 } #0: NO, 1: SI
    fecha: { type: DATE }
    created_at: ~
    updated_at: ~
    
  foto_modelo:
    id: ~
    nombre: { type: VARCHAR, size: '200' }
    equipo: { type: VARCHAR, size: '200' }
    modelo_id: { type: INTEGER, foreignTable: modelo, foreignReference: id, onDelete: cascade }
    created_at: ~
    updated_at: ~

  compatibilidad:
    id: ~
    nodo_id: { type: INTEGER }
    modelo_id: { type: INTEGER }
    created_at: ~
    updated_at: ~
    
  modelo_temp:
    id: ~
    marca_id: { type: INTEGER, foreignTable: marca, foreignReference: id, onDelete: cascade }
    producto_id: { type: INTEGER, foreignTable: producto, foreignReference: id, onDelete: cascade }
    nombre: { type: VARCHAR, size: '20' }
    precio: { type: DOUBLE }
    created_at: ~
    updated_at: ~
    
  cartera_servicio_manual:
    id: ~
    empresa_id: { type: INTEGER, foreignTable: empresa, foreignReference: id}
    nombre: { type: VARCHAR, size: '100' }
    valor: { type: DOUBLE }
    garantia: { type: TINYINT, size: 2 }
    moneda: { type: TINYINT, size: 1, default: 0 } ###0 - MN || 1 - CUC
    created_at: ~
    updated_at: ~

  inventario:
    id: ~
    especialista_id: { type: integer, foreignTable: especialista, foreignReference: id, required: true, onDelete: setnull }
    concepto: { type: TINYINT, size: 1, default: 1 } #1: entrada, 2: reparacion, 3: venta
    pendiente: { type: TINYINT, size: 1, default: 1 } #1: sin asignar
    tipo: { type: TINYINT, size: 1, default: 1 } #1: entrada, -1: salida
    es_merma: { type: TINYINT, size: 1, default: 0 } #0: NO, 1: SI
    baja_por_merma: { type: TINYINT, size: 1, default: 0 } #0: NO, 1: SI
    fecha: { type: DATE }
    fecha_baja_merma: { type: DATE }
    descripcion: { type: VARCHAR, size: '255' }
    created_at: ~
    updated_at: ~

  movimiento_inventario:
    id: ~
    inventario_id: { type: INTEGER, foreignTable: inventario, foreignReference: id, onDelete: cascade}
    modelo_id: { type: INTEGER, foreignTable: modelo, foreignReference: id, required: false}
    precio: { type: DOUBLE }
    costo: { type: DOUBLE }
    cantidad: { type: INTEGER }
    origen: { type: INTEGER }
    destino: { type: INTEGER }
    es_merma: { type: TINYINT, size: 1, default: 0 } #0: NO, 1: SI
    baja_por_merma: { type: TINYINT, size: 1, default: 0 } #0: NO, 1: SI
    fecha_baja_merma: { type: DATE }
    created_at: ~
    updated_at: ~

  compra:
    id: ~
    concepto: { type: TINYINT, size: 1, default: 1 } #1: entrada, 2: reparacion, 3: venta
    pendiente: { type: TINYINT, size: 1, default: 1 } #1: sin asignar
    tipo: { type: TINYINT, size: 1, default: 1 } #1: entrada, -1: salida
    fecha: { type: DATE }
    descripcion: { type: VARCHAR, size: '255' }
    created_at: ~
    updated_at: ~

  modelo_compra:
    id: ~
    compra_id: { type: INTEGER, foreignTable: compra, foreignReference: id, onDelete: cascade}
    modelo_id: { type: INTEGER, foreignTable: modelo, foreignReference: id, required: false}
    precio: { type: DOUBLE }
    costo: { type: DOUBLE }
    cantidad: { type: INTEGER }
    origen: { type: TINYINT, size: 1, default: 4 }
    destino: { type: TINYINT, size: 1, default: 1 }
    created_at: ~
    updated_at: ~

  entrada:
    id: ~
    cliente_id: { type: INTEGER, foreignTable: cliente, foreignReference: id, onDelete: setnull }
    equipo_id: { type: INTEGER, foreignTable: equipo, foreignReference: id, onDelete: setnull }
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    fecha: { type: DATE }
    defectacion: { type: LONGVARCHAR }
    despachado: { type: TINYINT, default: 0 }
    devolucion: { type: TINYINT, default: 0 }
    created_at: ~
    updated_at: ~

  salida:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    entrada_id: { type: INTEGER, foreignTable: entrada, foreignReference: id, onDelete: setnull }
    fecha: { type: DATE }
    fecha_solucion: { type: DATE }
    motivo_no_solucion: { type: LONGVARCHAR }
    precio: { type: DOUBLE }
    garantia: { type: INTEGER }
    created_at: ~
    updated_at: ~

  devolucion:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    entrada_id: { type: INTEGER, foreignTable: entrada, foreignReference: id, onDelete: setnull }
    fecha: { type: DATE }
    defectacion: { type: LONGVARCHAR }

  salida_devolucion:
    id: ~
    empresa_id: { type: integer, foreignTable: empresa, foreignReference: id, required: true, onDelete: cascade }
    devolucion_id: { type: INTEGER, foreignTable: devolucion, foreignReference: id, onDelete: setnull }
    fecha: { type: DATE }
    fecha_solucion: { type: DATE }
    motivo_no_solucion: { type: LONGVARCHAR }
    precio: { type: DOUBLE }
    garantia: { type: INTEGER }
    created_at: ~
    updated_at: ~