Lieferung Distanz
Die Problemstellung ist folgende, nicht alle User sollen z.B. nahe Zustellung auswählen dürfen wenn sie zu weit vom Verteilpunkt entfernt sind. D.h. die Funktion GetDeliveryProduct kann auch mit SET json_return = CONCAT('{"status":"OK","delivery_cdp_seq_id":',delivery_cdp_seq_id,'}'); ein anderes Produkt - wenn vorhanden - als weiter entferntes Zustellprodukt liefern. Wir müssen hier aber die Kommunikation zum Besteller verbessern und ihm anzeigen dass eine nahe Zustellung hier nicht möglich ist, kann ich auch als Parameter (wie hättest es gerne?) zurückliefern
DROP procedure IF EXISTS `GetDeliveryProduct`;
DELIMITER $$
USE `azeero`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetDeliveryProduct`(json MEDIUMTEXT,OUT json_return MEDIUMTEXT)
ThisSP:BEGIN
DECLARE delivery_cdp_seq_id INT DEFAULT NULL;
DECLARE exit handler for sqlexception, sqlwarning
BEGIN
GET DIAGNOSTICS CONDITION 1 @error = MESSAGE_TEXT;
SET json_return = CONCAT('{"error":"',@error,' json=',json,'"}');
CALL DO_ROLLBACK();
END;
SET @seq_id = (SELECT CONVERT(JSON_EXTRACT(json, "$.cd_seq_id"),UNSIGNED));
SET @type = (SELECT JSON_UNQUOTE(JSON_EXTRACT(json, "$.type")));
SET @userid = (SELECT CONVERT(JSON_EXTRACT(json, "$.userid"),SIGNED));
#
SELECT IF(@type = 'NEAR',fdelivery_near_cdp_seq_id,
IF(@type = 'REGI',fdelivery_regi_cdp_seq_id,
IF(@type = 'NATI',fdelivery_nati_cdp_seq_id,
IF(@type = 'INTE',fdelivery_inte_cdp_seq_id,-1))))
INTO delivery_cdp_seq_id
FROM collective_distribution
WHERE seq_id = @seq_id
;
SET json_return = CONCAT('{"status":"OK","delivery_cdp_seq_id":',delivery_cdp_seq_id,'}');
END$$
DELIMITER ;