From 4bec6ebb34f8a811483f732fba93aa66839495b3 Mon Sep 17 00:00:00 2001 From: Lester Caine Date: Fri, 19 Jun 2026 14:32:54 +0100 Subject: Guard all CAST(xkey AS DOUBLE PRECISION) in list_stock.php against empty strings Firebird throws -413 on CAST of empty string to DOUBLE PRECISION. The main xkey SUM was already guarded by SIMILAR TO on the JOIN, but bom_qty and both part_size subqueries (BOM view and general list) were not. Added SIMILAR TO guards to all three. Co-Authored-By: Claude Sonnet 4.6 --- list_stock.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/list_stock.php b/list_stock.php index 6ad176e..3de65e4 100644 --- a/list_stock.php +++ b/list_stock.php @@ -46,7 +46,7 @@ if( $assemblyContentId ) { $query = "SELECT lc.`content_id`, lc.`title`, lc.`data`, bom.`item` AS qty_type, - CAST(bom.`xkey` AS DOUBLE PRECISION) AS bom_qty, + CASE WHEN bom.`xkey` SIMILAR TO '[0-9]+(\.[0-9]+)?' THEN CAST(bom.`xkey` AS DOUBLE PRECISION) ELSE NULL END AS bom_qty, bom.`xorder` AS bom_xorder, (SELECT FIRST 1 sup.`xkey` FROM `{$X}liberty_xref` sup @@ -54,7 +54,8 @@ if( $assemblyContentId ) { ORDER BY sup.`xorder`) AS part_number, (SELECT FIRST 1 CAST(pk.`xkey` AS DOUBLE PRECISION) FROM `{$X}liberty_xref` pk - WHERE pk.`content_id` = lc.`content_id` AND pk.`item` = 'PRT') AS part_size, + WHERE pk.`content_id` = lc.`content_id` AND pk.`item` = 'PRT' + AND pk.`xkey` SIMILAR TO '[0-9]+(\.[0-9]+)?') AS part_size, (SELECT SUM( CASE WHEN EXISTS ( SELECT 1 FROM `{$X}liberty_xref` r WHERE r.`content_id` = mx.`content_id` AND r.`item` IN ('TRANS','ORDER') @@ -98,7 +99,8 @@ if( $assemblyContentId ) { ORDER BY sup.`xorder`) AS part_number, (SELECT FIRST 1 CAST(pk.`xkey` AS DOUBLE PRECISION) FROM `{$X}liberty_xref` pk - WHERE pk.`content_id` = lc.`content_id` AND pk.`item` = 'PRT') AS part_size, + WHERE pk.`content_id` = lc.`content_id` AND pk.`item` = 'PRT' + AND pk.`xkey` SIMILAR TO '[0-9]+(\.[0-9]+)?') AS part_size, SUM( CASE WHEN EXISTS ( SELECT 1 FROM `{$X}liberty_xref` r WHERE r.`content_id` = x.`content_id` AND r.`item` IN ('TRANS','ORDER') -- cgit v1.3