Error al Tratar de Anular un Acta Abierta Migrada

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!


AnularActaErrorG315.PNG

AnularActaErrorG315.PNG_thumb.png

Quizas lo correcto sea que en la migracion no se cargue la tabla sga_actas_folios de las actas abiertas.
¿Cuantos casos de estos tienen? ¿Alguno tiene registrado el dato del “folio fisico” ?

SELECT *  FROM sga_actas WHERE estado = 'A' AND EXISTS (SELECT 1 FROM sga_actas_folios as af WHERE af.id_acta = sga_actas.id_acta);

Deberían borrar los folios de ese acta abierta:

DELETE FROM sga_actas_folios WHERE id_acta = 110395;

Seguramente uds tienen configurado el parámetro para que los folios fisicos se generen al momento de cierre del acta o posterior al cierre, por eso cuando se anula el acta se pasan los datos de los alumnos de la tabla temporal a la tabla real y se intenta generar los folios del acta.

Los casos eran de todas las actas abiertas que fueron migradas; el dato de folio fisico estaba registrado desde g2.

La moficacion del parametro exa_forma_asignacion_folio_fisico fue la solucion al problema, el valor que se le seteo fue el de Impresion.

Muchisimas Gracias!