error porque no me libera el albarán al borrar una factura

28 views
Skip to first unread message

Miguel J

unread,
Mar 6, 2017, 12:59:50 PM3/6/17
to Eneboo
Hola,

Hace días que voy detrás de este error, a ver si a alguien se le ocurre algo...:

Al borrar una factura, lo hace todo bien excepto que no me libera el albarán...

El error que manda el botón de borrar de Facturas clientes es este:

QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_recibossegsocial
QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_retenciones
QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_nominas
QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_recibossegsocial
QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_retenciones
QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_nominas
QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_recibossegsocial
QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_retenciones
QGDict::hashKeyString: Invalid null key
FLUtil : Se ha intentado cargar un fichero XML vacío
FLManager : Error al cargar los metadatos para la tabla rh_nominas
FLDataTable::paintCell() : Posición no válida 10 facturascli
FLDataTable::paintCell() : Posición no válida 10 facturascli
FLDataTable::paintCell() : Posición no válida 10 facturascli
FLDataTable::paintCell() : Posición no válida 10 facturascli
FLDataTable::paintCell() : Posición no válida 10 facturascli
FLDataTable::paintCell() : Posición no válida 10 facturascli
FLDataTable::paintCell() : Posición no válida 10 facturascli
FLDataTable::paintCell() : Posición no válida 10 facturascli


Podría ser un error de claves externas o índices?
eneboo claves albarancli.jpg

mfdezp

unread,
Mar 6, 2017, 1:29:14 PM3/6/17
to Eneboo
Entiendo que has seguido el código del script de flfacturac.qs, en el afterCommit de la tabla facturascli:

function interna_afterCommit_facturascli(curFactura:FLSqlCursor):Boolean
{
    switch (curFactura.modeAccess()) {
        case curFactura.Del: {
            if (!this.iface.agregarHueco(curFactura.valueBuffer("codserie"), curFactura.valueBuffer("codejercicio"), curFactura.valueBuffer("numero"), "nfacturacli")) {
                return false;
            }
            if (!this.iface.liberarAlbaranesCli(curFactura.valueBuffer("idfactura"))) {
                return false;
            }
            break;
        }
    }

Se me ocurre que le hagas debug a partir de ahí, a ver que está ocurriendo...

Miguel J

unread,
Mar 6, 2017, 1:33:54 PM3/6/17
to Eneboo
Gracias por contestar.

Cuando dices "que le hagas debug a partir de ahí" a qué te refieres?....yo lo único que sé hacer es darle a la mariquita para abrir el QSA Workbench y luego leerme los archivos de texto qs "a pelo"....hay alguna forma más fácil de detectar el error?

Oscar Dominguez

unread,
Mar 7, 2017, 3:22:15 AM3/7/17
to Eneboo
Se refiere a que uses la orden debug()

Miguel J

unread,
Mar 7, 2017, 3:28:09 AM3/7/17
to Eneboo
Oscar: me puedes poner un ejemplo? ...y qué produce esa orden? ...veré algo desde Eneboo? Gracias

Miguel J

unread,
Mar 7, 2017, 3:29:21 AM3/7/17
to Eneboo
Ya lo he solucionado: el problema lo creaba Facturascripts.....

La clave externa de la tabla "albaranescli" que relaciona el campo IDFACTURA con el mismo de la tabla "facturascli" PROVOCA QUE ENEBOO NO FUNCIONE :

ALTER TABLE albaranescli ADD CONSTRAINT ca_albaranescli_facturas FOREIGN KEY (idfactura) REFERENCES facturascli (idfactura) ON DELETE SET NULL ON UPDATE CASCADE

....una vez borrada, vuelve a funcionar todo....en mi caso, no liberaba el albarán al borrar la factura, y creo que era por que Eneboo no permite que esté activada el campo "sin signo"...lo probaré otro dia, ya he perdido demasiado tiempo con esto...

Por lo demás estoy relativamente contento con Facturascripts...


El lunes, 6 de marzo de 2017, 18:59:50 (UTC+1), Miguel J escribió:

José Antonio Cuello

unread,
Mar 7, 2017, 3:43:34 AM3/7/17
to Eneboo Groups
Hola, si la foreing key es en lineas de facturas debería ser ON DELETE CASCADE porque si se borra la cabecera no tiene sentido dejar lineas con el idfactura a nulo

Un saludo

--
Has recibido este mensaje porque estás suscrito al grupo "Eneboo" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a eneboo+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Miguel J

unread,
Mar 7, 2017, 6:13:08 AM3/7/17
to ene...@googlegroups.com
ni loco....con CASCADE me acaba de borrar el albarán.....

Has recibido este mensaje porque estás suscrito a un tema del grupo "Eneboo" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/eneboo/S9r-9hdvzvQ/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a eneboo+unsubscribe@googlegroups.com.

José Antonio Cuello

unread,
Mar 7, 2017, 6:25:15 AM3/7/17
to Eneboo Groups
Ok, disculpa pensé que era entre master y lineas ... no vi lo de albarancli ... tienes razón en ese caso es SET NULL.
Gracias por la corrección.
Un saludo

Oscar Dominguez

unread,
Mar 7, 2017, 6:37:11 AM3/7/17
to Eneboo
Miguel, si ejecutas eneboo desde consola, verás los mensajes de debug

Un ejemplo en el trozo de código que pusisteis antes:

function interna_afterCommit_facturascli(curFactura:FLSqlCursor):Boolean
{
    switch (curFactura.modeAccess()) {
        case curFactura.Del: {
            if (!this.iface.agregarHueco(curFactura.valueBuffer("codserie"), curFactura.valueBuffer("codejercicio"), curFactura.valueBuffer("numero"), "nfacturacli")) {
                return false;
            }
            if (!this.iface.liberarAlbaranesCli(curFactura.valueBuffer("idfactura"))) {
debug("La función liberarAlbaranesCli() devuelve false);
                return false;
            }
            break;
        }
    }


Esto es útil para seguir un error hasta el punto donde falla (pero el ejemplo es una chorrada; no te vale de nada ;)

Como te dicen arriba, liberar un albarán solo es borrar el valor de su campo "idfactura" (o similar, no tengo el código delante ahora)... revisa el código y usa los debug donde quieras ver qué está pasando (p.ej. un mensaje si tal cosa devuelve true y otro mensaje si devuelve false)... puede que no funcione algun setNull()

Por cierto, no dices si esto falla de siempre o antes funcionaba bien. Si es lo segundo, qué hiciste entre medias ?

Saludos

Miguel J

unread,
Mar 7, 2017, 6:59:11 AM3/7/17
to ene...@googlegroups.com
 "si ejecutas eneboo desde consola, .."..te refieres a la interfaz SDI...?.....vi un mensaje sobre un rc8 quick con algo de consola para windows.....podrías poner una captura de pantalla?

lo otro de errores...suelo arreglarlos por x cocina con php-sql....y hasta ahora convivía con los errores de claves de FS....y voy a seguir conviviendo ;-)

--

Oscar Dominguez

unread,
Mar 7, 2017, 7:12:33 AM3/7/17
to Eneboo
no, sdi no. me refiero a la consola; la terminal de sistema (uso linux pero en windows deberías tener algo parecido... cmd o algo parecido me suena, pero no me hagas mucho caso)

lo otro de errores... para ayudarte se necesita que describas bien el error, no la posible solución ;)

falla de siempre o antes funcionaba bien ?? ... Si es lo primero, revisemos esos scripts. Si es lo segundo, ¿ qué hiciste entre medias ? estás tan seguro de que es cosa de facturascript ??

saludos
Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a eneboo+un...@googlegroups.com.

Miguel J

unread,
Mar 7, 2017, 7:22:16 AM3/7/17
to ene...@googlegroups.com
0.- sigo sin entender lo d la consola
1.- antes funcionaba. 
2.- Este error estoy seguro q es x la clave externa de FS.

Lo de arreglar scripts...jejeje...los repos públicos están llenos...., pero entiendo q los programadores los tendrán parcheados con extensiones privadas metidas por Proyectos de Assembler a sus clientes...ya no discuto ese tema.

Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a eneboo+unsubscribe@googlegroups.com.

Oscar Dominguez

unread,
Mar 7, 2017, 7:31:13 AM3/7/17
to Eneboo
0 - Que si ejecutas eneboo desde consola, podrás ver los mensajes de debug (entre otras cosas)

https://es.wikipedia.org/wiki/Terminal_(inform%C3%A1tica)
https://es.wikipedia.org/wiki/Emulador_de_terminal

1 - Si antes funcionaba, pues ya no te lies a ver scripts (si tu les tocaste, deberían funcionar como antes y el problema vendrá de otra cosa)

2 - Entonces es en FS donde mejor te pueden ayudar ;)

3 - Yo tengo los módulos de los repos públicos y la mayoría de cosas funcionan. Lo que no funciona bien o no a mi gusto, se modifica. Esto es software libre !!

Saludos

DeZeta

unread,
Mar 7, 2017, 8:51:09 AM3/7/17
to Eneboo
Sólo un apunte. La única versión del motor de Windows que muestra los mensajes por consola es la que compiló Deavid no hace mucho y que comentó aquí.

Saludos,

David Zafra
KLO

Miguel J

unread,
Mar 7, 2017, 10:16:48 AM3/7/17
to ene...@googlegroups.com
ya veo....pero muestra lo mismo q con la mariquita....me falta probar con eso del debug...

Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a eneboo+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages