Hola buenas noches, estamos migrando de G2 a G3 utilizando los migradores 3.15
Realizando testeo de operaciones al intentar anular un acta abierta migrada, nos devuelve el siguiente error:
Error Al anular un acta abierta que fue migrada
ERROR: llave duplicada viola restricción de unicidad «pk_sga_actas_folios»\nDETAIL:
Ya existe la llave (id_acta, folio)=(110395, 1).\nCONTEXT: sentencia SQL: «INSERT INTO sga_actas_folios (id_acta, folio)
VALUES (pActa, i)»\nfunción PL/pgSQL f_generar_folio_fisico_acta(integer) en la línea 21 en sentencia SQL
El registro (id_acta, folio)=(110395, 1) fue insertado al correr el trabajo 55_Actas → 06sga_actas_folios.sql
Al Anular el acta hace llamado a la funcion f_generar_folio_fisico_acta y el numero de folio lo obtiene de la tabla sga_actas_detalle, que en esta tabla no se encuentra actas abiertas.
En el script 06sga_actas_folios.sql se migra como clave primaria el par (id_Acta,folio) si al intentar anular un acta abierta migrada esta operación intentara insertar un nuevo registro con los mismos datos violando la clave primaria, es correcto?
Un acta en sus diferentes estados (anulada,rectificada,cerrada,etc) puede tener los mismos folios?
Si no lo permite, entonces una de las claves debe variar, id acta no deberia varia por que es un estado diferente de la misma acta, dejando a ‘folio’ que varie.
El numero de folio lo saca de la funcion f_generar_folio_fisico_acta en donde esta NO contempla
las actas abiertas por lo que solo hace referencia a la tabla sga_actas_detalle; y en la tabla que contempla las actas abierta NO posee un campo folio.
Por lo tanto la función sql devolverá el valor de folio = 1 para todas aquellas actas que no posean
registros en la tabla sga_actas_detalle, que seria todo el conjunto de actas abiertas.
Entonces, es correcto decir que un acta abierta no deberia tener folio?
Que el folio se asigna cuando pasa a un ultimo estado (Anulada, Cerrada, Rectificada)?
Si es asi la tabla sga_actas_folios no deberia contener actas de examenes abiertas, debiendo modificar el archivo 55_Actas → 06sga_actas_folios.sql
Como seria?
Si Genero un acta nueva en G3 y la anulo no me sale el error. Ya que al generar un acta no me inserta registros en la tabla sga_actas_folios.
Se adjunta captura del error.
Muchas Gracias!