Exakte Menge buchen
Es gibt die Möglichkeit wenn 2 Menschen gleichzeitig buchen bzw. wenn noch nicht alles auf > 'NEU' gesetzt ist dass diese den Lagerstand ins Minus ziehen. Über https://source.azeero.at/Joniras/azeero.group/issues/322 gibt es nun die Möglichkeit dies pro Produkte zuzulassen oder zu vermeiden. D.h.
- Bitte das Attribut im MyShop Produkte pro Verteilpunkt freischalten:
delimiter ;
alter table coll_dist_product add check_exact_stock_kz varchar(1);
alter table coll_dist_product_log add check_exact_stock_kz varchar(1) after is_requestable_kz;
delimiter //
DROP TRIGGER coll_dist_product_u_log
//
CREATE TRIGGER coll_dist_product_u_log BEFORE UPDATE ON coll_dist_product FOR EACH ROW BEGIN INSERT INTO coll_dist_product_log SELECT logtable.*,null,NOW(),USER(),ci.person_id FROM coll_dist_product logtable,connection_info ci WHERE logtable.seq_id = OLD.seq_id; END
//
DROP TRIGGER coll_dist_product_d_log
//
CREATE TRIGGER coll_dist_product_d_log BEFORE DELETE ON coll_dist_product FOR EACH ROW BEGIN INSERT INTO coll_dist_product_log SELECT logtable.*,null,NOW(),USER(),ci.person_id FROM coll_dist_product logtable,connection_info ci WHERE logtable.seq_id = OLD.seq_id; END
//
delimiter ;
mysql> update coll_dist_product set check_exact_stock_kz='Y' where fcoll_dist_seq_id = 104;
Query OK, 52 rows affected (0,13 sec)
Rows matched: 52 Changed: 52 Warnings: 0
mysql>
bei 'Y' ist keine überbestellung möglich.
- orderwish liefert bei Überbuchung einen Fehler (neue Producure in dev). Bitte Fehler abfangen und Kunden die Mengenreduktion vorschlagen. Folgender Return wird geliefert (@Echt & Test aktiv)
SET json_return = concat('{"error":"NO_STOCK","collDistSeqId":',@distributionId,',"productSeqId":',@productId,',"stock":',product_on_stock,'}');
- für Version 1.05:
Was hier noch gebraucht wird ist eine Funktion die den aktuellen Warenkorb des Users auch in der DB speichert (oder wird das schon?). Dann hab ich die exakten Mengen. Die Tabelle shoppingcart wird dann alle 5 min bereinigt, falls der Server etwas über gelassen hat. Über den Browser wird dann, wenn der Kunde die Seite wieder aufmacht, der Warenkorb Inhalt wieder zum Server übertragen und eingetragen, wenn nicht vorhanden.
drop table IF EXISTS shoppingcart;
CREATE TABLE shoppingcart (
fcoll_dist_seq_id INT NOT NULL references collective_distribution(seq_id),
fproduct_seq_id INT NOT NULL references products(seq_id),
fperson_seq_id INT NOT NULL references person(seq_id),
serversessionid VARCHAR(200) NOT NULL,
server VARCHAR(200) NOT NULL,
quantity INT NOT NULL,
lastaction TIMESTAMP NOT NULL
);