Buenas;
Queremos eliminar varios renglones de los oferentes pero al intentar guardar los cambios nos emite el siguiente error.
El valor de inserción o actualización de una clave externa no es válido.
se adjunta imagen.
Y el error emitido en el log es el siguiente.
Fecha: 28-08-2015 16:06:11
Operacion: Ampliación o reducción
Usuario: toba
Version-PHP: 5.3.2
Servidor: 10.1.0.32
URI: /siu/diaguita/aplicacion.php?ah=st55e0b11b18265&ai=diaguita||109000026
Referrer: http://10.1.0.32/siu/diaguita/aplicacion.php?ah=st55e0b114ed7c8&ai=diaguita||109000026
Host: 10.1.0.31
==========
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase extension_toba/diaguita_pers_sesion.php del punto de montaje personalizacion. El path del mismo es C:\siu\diaguita/aplicacion/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 C:\siu\diaguita/aplicacion/personalizacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase acto_adjudicacion/ci_ampliacion_reduccion_acto_adjudicacion.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase acto_adjudicacion/cn_acto_adjudicacion.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase acto_apertura/cn_acto_apertura.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/agenda/cn_agenda.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase convocatorias/cn_convocatoria.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/agenda/cn_agenda.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase modelo_compras/cn_modelo_compra.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase solicitud_suministro/cn_solicitud_suministro.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase convocatorias/cn_convocatoria.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/agenda/cn_agenda.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase modelo_compras/cn_modelo_compra.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase solicitud_suministro/cn_solicitud_suministro.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/agenda/cn_agenda.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase convocatorias/cn_convocatoria.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/agenda/cn_agenda.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase modelo_compras/cn_modelo_compra.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase solicitud_suministro/cn_solicitud_suministro.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[ERROR][toba] toba_error_db: <p><b>SQLSTATE:</b> db_23503</p><p><b>CODIGO:</b> 7</p><p><b>MENSAJE:</b> SQLSTATE[23503]: Foreign key violation: 7 ERROR: update or delete on table "scp_renglones_oferentes" violates foreign key constraint "scp_adjudicaciones_id_renglon_oferente_fkey" on table "scp_adjudicaciones"
DETAIL: Key (id_renglon_oferente)=(2986) is still referenced from table "scp_adjudicaciones".</p><p><b>SQL:</b> DELETE FROM scp_renglones_oferentes WHERE descripcion = 'Toner para impresora LANIER MPC3002:MAG-841737.' AND id_moneda IS NULL AND importe_unitario_real IS NULL AND id_renglon_oferente = '2986' AND id_oferente = '311' AND id_unidad_medida = '151' AND id_renglon = '1446' AND monto_unitario = '1484.3' AND monto_iva IS NULL AND monto_total = '1484.3' AND observaciones = 'No cotiza.' AND cantidad = '1' AND id_oferta_tipo = 'l'; -- toba_log: 194088 </p>
[TRAZA]exception 'toba_error_db' with message 'El valor de inserción o actualización de una clave externa no es válido.' in C:\siu\diaguita\toba\php\lib\db\toba_db.php:566
Stack trace:
#0 C:\siu\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php(773): toba_db->sentencia_ejecutar(0)
#1 C:\siu\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php(610): toba_ap_tabla_db->ejecutar_sql('DELETE FROM scp...', 11)
#2 C:\siu\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php(478): toba_ap_tabla_db->eliminar_registro_db(11)
#3 C:\siu\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_relacion_db.php(244): toba_ap_tabla_db->sincronizar_eliminados()
#4 C:\siu\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_relacion_db.php(190): toba_ap_relacion_db->proceso_sincronizacion(false, NULL)
#5 C:\siu\diaguita\toba\php\nucleo\componentes\persistencia\toba_datos_relacion.php(567): toba_ap_relacion_db->sincronizar()
#6 C:\siu\diaguita\aplicacion\php\acto_apertura\cn_acto_apertura.php(279): toba_datos_relacion->sincronizar()
#7 C:\siu\diaguita\aplicacion\php\extension_toba\componentes\diaguita_cn.php(11): cn_acto_apertura->grabar(Array)
#8 C:\siu\diaguita\aplicacion\php\acto_adjudicacion\ci_ampliacion_reduccion_acto_adjudicacion.php(219): diaguita_cn->grabar_general(Array)
#9 C:\siu\diaguita\toba\php\nucleo\componentes\interface\toba_ci.php(282): ci_ampliacion_reduccion_acto_adjudicacion->evt__procesar('undefined')
#10 C:\siu\diaguita\toba\php\nucleo\componentes\interface\toba_ci.php(204): toba_ci->disparar_evento_propio()
#11 C:\siu\diaguita\toba\php\nucleo\toba_solicitud_web.php(135): toba_ci->disparar_eventos()
#12 C:\siu\diaguita\toba\php\nucleo\toba_solicitud_web.php(55): toba_solicitud_web->procesar_eventos()
#13 C:\siu\diaguita\toba\php\nucleo\toba_nucleo.php(79): toba_solicitud_web->procesar()
#14 C:\siu\diaguita\aplicacion\www\aplicacion.php(23): toba_nucleo->acceso_web()
#15 {main}
[INFO][toba] componente(109000064): [ callback ] 'conf__pant_edic_oferta' no fue atrapado
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/agenda/cn_agenda.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase convocatorias/cn_convocatoria.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/agenda/cn_agenda.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase modelo_compras/cn_modelo_compra.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase solicitud_suministro/cn_solicitud_suministro.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\diaguita/aplicacion/php
Esperamos sus comentarios
Desde ya muchas gracias.
SQLSTATE[23503]: Foreign key violation: 7 ERROR: update or delete on table "scp_renglones_oferentes" violates foreign key constraint "scp_adjudicaciones_id_renglon_oferente_fkey" on table "scp_adjudicaciones"
...
DETAIL: Key (id_renglon_oferente)=(2986) is still referenced from table "scp_adjudicaciones".
Por lo que puedo ver en el log, lo que están intentando realizar es un borrado de una oferta de ampliación / reducción que todavía se encuentra asociada a una adjudicación rectificada. Tendrían que dirigirse a la operación Rectificar Adjudicación y cambiar esa oferta referenciada, luego si intentar borrar la ampliación/reducción.
Saludos!
PD: anoto el error para agregar un control cruzado al sistema entre esas operaciones.
Buenas tardes Sergio,
Estoy tratando de realizar lo que me comentaste y resulta que el error se repite.
En la operación de “Rectificar adjudicación” cuando intento “Quitar oferente”, en principio te deja realizar la operación pero cuando guardas cambios salta el siguiente error. (Adjunto imagen)
Log
-o-o-o-o-o-
Fecha: 04-09-2015 13:52:50
Operacion: Rectificar adjudicación
Usuario: toba
Version-PHP: 5.3.2
Servidor: 10.1.0.32
URI: /siu/prueba/diaguita/aplicacion.php?ah=st55e9cc1590930&ai=diaguita||100000137
Referrer: http://10.1.0.32/siu/prueba/diaguita/aplicacion.php?ah=st55e9cc01937c9&ai=diaguita||100000137
Host: 10.1.0.31
==========
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase extension_toba/diaguita_pers_sesion.php del punto de montaje personalizacion. El path del mismo es C:\siu\prueba\diaguita/aplicacion/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 C:\siu\prueba\diaguita/aplicacion/personalizacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase acto_adjudicacion/ci_rectificar_adjudicacion.php del punto de montaje proyecto. El path del mismo es C:\siu\prueba\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase acto_adjudicacion/cn_acto_adjudicacion.php del punto de montaje
..........................
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'id_renglon_oferente_original' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'descripcion_original' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'cantidad_adjudicada_original' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'numero_renglon' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'desc_cantidad' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'id_unidad_medida' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'cantidad_ord_compras' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'cantidad_adjudicada' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'id_convocatoria' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'cantidad_bd' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'cantidad_ord_compras_bd' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'id_estado_renglon_original' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'id_renglon_oferente_original' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'descripcion_original' no forma parte de la DEFINICION.
[WARNING][diaguita] componente(101000153): diaguita_pers_datos_tabla El registro tiene una estructura incorrecta: El campo 'cantidad_adjudicada_original' no forma parte de la DEFINICION.
[ERROR][toba] toba_error_db: <p><b>SQLSTATE:</b> db_23503</p><p><b>CODIGO:</b> 7</p><p><b>MENSAJE:</b> SQLSTATE[23503]: Foreign key violation: 7 ERROR: update or delete on table "scp_adjudicaciones" violates foreign key constraint "scp_adjudicaciones_rectificaciones_id_adjudicacion_fkey" on table "scp_adjudicaciones_rectificaciones"
DETAIL: Key (id_adjudicacion)=(944) is still referenced from table "scp_adjudicaciones_rectificaciones".</p><p><b>SQL:</b> DELETE FROM scp_adjudicaciones WHERE descripcion = 'Toner para impresora LANIER MPC3002:MAG-841737.' AND id_adjudicacion = '944' AND id_acto_adjudicacion = '78' AND id_renglon = '1446' AND id_renglon_oferente = '2986' AND id_estado_renglon = '1' AND persona = '9' AND cantidad = '1' AND adjudicacion_tipo = 'o'; -- toba_log: 194982 </p>
[TRAZA]exception 'toba_error_db' with message 'El valor de inserción o actualización de una clave externa no es válido.' in C:\siu\prueba\diaguita\toba\php\lib\db\toba_db.php:566
Stack trace:
#0 C:\siu\prueba\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php(773): toba_db->sentencia_ejecutar(0)
#1 C:\siu\prueba\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php(610): toba_ap_tabla_db->ejecutar_sql('DELETE FROM scp...', 15)
#2 C:\siu\prueba\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_tabla_db.php(478): toba_ap_tabla_db->eliminar_registro_db(15)
#3 C:\siu\prueba\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_relacion_db.php(244): toba_ap_tabla_db->sincronizar_eliminados()
#4 C:\siu\prueba\diaguita\toba\php\nucleo\componentes\persistencia\toba_ap_relacion_db.php(190): toba_ap_relacion_db->proceso_sincronizacion(false, NULL)
#5 C:\siu\prueba\diaguita\toba\php\nucleo\componentes\persistencia\toba_datos_relacion.php(567): toba_ap_relacion_db->sincronizar()
#6 C:\siu\prueba\diaguita\aplicacion\php\acto_adjudicacion\cn_acto_adjudicacion.php(90): toba_datos_relacion->sincronizar()
#7 C:\siu\prueba\diaguita\aplicacion\php\extension_toba\componentes\diaguita_cn.php(11): cn_acto_adjudicacion->grabar(Array)
#8 C:\siu\prueba\diaguita\aplicacion\php\acto_adjudicacion\ci_rectificar_adjudicacion.php(41): diaguita_cn->grabar_general(Array)
#9 C:\siu\prueba\diaguita\toba\php\nucleo\componentes\interface\toba_ci.php(282): ci_rectificar_adjudicacion->evt__procesar('undefined')
#10 C:\siu\prueba\diaguita\toba\php\nucleo\componentes\interface\toba_ci.php(204): toba_ci->disparar_evento_propio()
#11 C:\siu\prueba\diaguita\toba\php\nucleo\toba_solicitud_web.php(135): toba_ci->disparar_eventos()
#12 C:\siu\prueba\diaguita\toba\php\nucleo\toba_solicitud_web.php(55): toba_solicitud_web->procesar_eventos()
#13 C:\siu\prueba\diaguita\toba\php\nucleo\toba_nucleo.php(79): toba_solicitud_web->procesar()
#14 C:\siu\prueba\diaguita\aplicacion\www\aplicacion.php(23): toba_nucleo->acceso_web()
#15 {main}
[INFO][toba] componente(100000477): [ callback ] 'conf__pant_inicial' no fue atrapado
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/agenda/cn_agenda.php del punto de montaje proyecto. El path del mismo es C:\siu\prueba\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\prueba\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase modelo_compras/cn_modelo_compra.php del punto de montaje proyecto. El path del mismo es C:\siu\prueba\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\prueba\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase solicitud_suministro/cn_solicitud_suministro.php del punto de montaje proyecto. El path del mismo es C:\siu\prueba\diaguita/aplicacion/php
[INFO][diaguita] PUNTO MONTAJE: se cargó la clase administracion/autorizaciones/cn_autorizaciones.php del punto de montaje proyecto. El path del mismo es C:\siu\prueba\diaguita/aplicacion/php
En realidad el error no es el mismo, se trata de que falta realizar un borrado en cascada a la tabla que mantiene los cambios de cada renglón adjudicado. Lo agregaremos como extra al control de errores que se va a implementar.
Te pediría que cargues un GDS, indicando primeramente cual es el objetivo que desean lograr (motivo exacto y detallado por el cual utilizaron rectificar adjudicación).
Además, deberán subir la base de datos, indicando la adjudicación con la que están trabajando, detallando los pasos precisos que realizaron para llegar al estado actual (ampliación, agregado de ofertas ampliación/reducción, rectificación, eliminación de oferta de ampliación, etc).