Error en el alta de empleado desde Mapuche (SOLUCIONADO)

Hola, buen día!!
Estamos probando el alta de empleados desde Mapuche y detectamos un error en el comando sql de insert ya que intenta insertar en la tabla diaguita.dh01 el campo legajo cuando debe ser nro_legaj.
Tenemos Diaguita 3.0.1 y Mapuche 3.16.0 sobre Linux Debian 9, Postgresql 11.
Extracto del sistema.log:


-o-o-o-o-o-^M
Fecha: 06-12-2021 14:49:22^M
Operacion: Empleados^M
Usuario: asegade^M
Version-PHP: 7.1.33-25+0~20210112.45+debian9~1.gbp1a89bf^M
Servidor: diaguita.unlc.edu.ar^M
URI: /diaguita/aplicacion.php?ah=st61ae4d1a23b994.00205034&ai=diaguita%7C%7C100000206^M
Referrer: https://diaguita.unlc.edu.ar/diaguita/aplicacion.php?ah=st61ae4d0e7532d4.78772539&ai=diaguita||100000206^M
Host: 201.251.72.250^M
==========^M
[INFO][diaguita] PUNTO MONTAJE: se carg� la clase extension_toba/diaguita_pers_sesion.php del punto de montaje personalizacion. El path del mismo es /usr/local/siu/SIU-Diaguita-3.0.1/personalizacion/php
[INFO][diaguita] PUNTO MONTAJE: se carg� la clase extension_toba/diaguita_pers_usuario.php del punto de montaje personalizacion. El path del mismo es /usr/local/siu/SIU-Diaguita-3.0.1/personalizacion/php
[INFO][diaguita] PUNTO MONTAJE: se carg� la clase administracion/usuarios/ci_empleados.php del punto de montaje proyecto. El path del mismo es /usr/local/siu/SIU-Diaguita-3.0.1/php
[INFO][diaguita] PUNTO MONTAJE: se carg� la clase administracion/usuarios/cn_empleados.php del punto de montaje proyecto. El path del mismo es /usr/local/siu/SIU-Diaguita-3.0.1/php
[WARNING][diaguita] componente(108000383): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo ‘nro_cuil0’ no forma parte de la DEFINICION.
[ERROR][toba] toba_error_db:

SQLSTATE: db_23505

CODIGO: 7

MENSAJE: SQLSTATE[23505]: Unique violation: 7 ERROR: llave duplicada viola restricci�n de unicidad �dh01_pkey�
DETAIL: Ya existe la llave (nro_legaj)=(22).

SQL: INSERT INTO dh01 ( legajo, desc_appat, desc_nombr, desc_apmat, desc_apcas, nro_tabla, tipo_docum, nro_docum, nro_cuil1, nro_cuil, nro_cuil2, tipo_sexo, fec_nacim, tipo_facto, tipo_rh, nro_ficha, tipo_estad, nombrelugarnac, periodoalta, anioalta, periodoactualizacion, anioactualizacion, pcia_nacim, pais_nacim )
VALUES (‘160’, ‘xxxxxx’, ‘xxxxxx’, DEFAULT, DEFAULT, DEFAULT, ‘DNI’, ‘99999999’, ‘20’, ‘99999999’, ‘0’, ‘M’, ‘1977-07-19’, DEFAULT, DEFAULT, DEFAULT, ‘A’, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT); – toba_log: 2736205


[TRAZA]

  • toba_db->sentencia_ejecutar
    Archivo: /usr/local/siu/SIU-Diaguita-3.0.1/vendor/siu-toba/framework/php/lib/db/toba_db.php, l�nea 646

  • toba_ap_tabla_db->ejecutar_sql
    Archivo: /usr/local/siu/SIU-Diaguita-3.0.1/vendor/siu-toba/framework/php/nucleo/componentes/persistencia/toba_ap_tabla_db.php, l�nea 977

  • toba_ap_tabla_db->ejecutar_sql_insert Archivo: /usr/local/siu/SIU-Diaguita-3.0.1/vendor/siu-toba/framework/php/nucleo/componentes/persistencia/toba_ap_tabla_db.php, l�nea 551
  • toba_ap_tabla_db->insertar_registro_db Archivo: /usr/local/siu/SIU-Diaguita-3.0.1/vendor/siu-toba/framework/php/nucleo/componentes/persistencia/toba_ap_tabla_db.php, l�nea 503
  • toba_ap_tabla_db->sincronizar_insertados Archivo: /usr/local/siu/SIU-Diaguita-3.0.1/vendor/siu-toba/framework/php/nucleo/componentes/persistencia/toba_ap_relacion_db.php, l�nea 265
  • toba_ap_relacion_db->proceso_sincronizacion Archivo: /usr/local/siu/SIU-Diaguita-3.0.1/vendor/siu-toba/framework/php/nucleo/componentes/persistencia/toba_ap_relacion_db.php, l�nea 189
  • toba_ap_relacion_db->sincronizar Archivo: /usr/local/siu/SIU-Diaguita-3.0.1/vendor/siu-toba/framework/php/nucleo/componentes/persistencia/toba_datos_relacion.php, l�nea 565
  • toba_datos_relacion->sincronizar Archivo: /usr/local/siu/SIU-Diaguita-3.0.1/php/administracion/usuarios/cn_empleados.php, l�nea 32
  • @ -------------------------------------------------------------

    El comando correcto sería:

    INSERT INTO diaguita.dh01 ( nro_legaj, desc_appat, desc_nombr, desc_apmat, desc_apcas, nro_tabla, tipo_docum, nro_docum, nro_cuil1, nro_cuil, nro_cuil2, tipo_sexo, fec_nacim, tipo_facto, tipo_rh, nro_ficha, tipo_estad, nombrelugarnac, periodoalta, anioalta, periodoactualizacion, anioactualizacion, pcia_nacim, pais_nacim )
    VALUES (160, ‘xxxxxx’, ‘xxxxxx’, DEFAULT, DEFAULT, DEFAULT, ‘DNI’, ‘99999999’, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, ‘A’, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT);

Hola Alberto,

Te comento que el problema que estás teniendo es que la secuencia de la tabla dh01 está desfazada. Lo que tenés que hacer, es ejecutar el siguiente sql desde la bd de diaguita para actualizarla:


SELECT setval('diaguita.sq_dh01', (SELECT  nro_legaj+1 as valor_secuencia FROM diaguita.dh01 ORDER BY 1 DESC LIMIT 1), true);

Luego de esto, van a poder insertar el empleado correctamente.

Saludos,
Fernando.

Hola Fernando, muchas gracias!!
Saludos