56 lines
1.7 KiB
PHP
56 lines
1.7 KiB
PHP
<?php
|
|
require 'db.php';
|
|
|
|
$data = json_decode(file_get_contents("php://input"), true);
|
|
|
|
$fecha = $data["fecha"];
|
|
$total = $data["total"];
|
|
$metodo = $data["metodo_pago"];
|
|
$productos = $data["productos"];
|
|
|
|
$pdo->beginTransaction();
|
|
|
|
try {
|
|
$stmt = $pdo->prepare("INSERT INTO tickets (fecha, total, metodo_pago) VALUES (?, ?, ?)");
|
|
$stmt->execute([$fecha, $total, $metodo]);
|
|
$ticketId = $pdo->lastInsertId();
|
|
|
|
foreach ($productos as $producto) {
|
|
// Buscar o crear producto
|
|
$nombre = strtoupper(trim($producto["nombre"]));
|
|
$stmt = $pdo->prepare("SELECT id FROM productos WHERE nombre = ?");
|
|
$stmt->execute([$nombre]);
|
|
$prod = $stmt->fetch();
|
|
|
|
if ($prod) {
|
|
$productoId = $prod["id"];
|
|
} else {
|
|
$stmt = $pdo->prepare("INSERT INTO productos (nombre, ultima_compra) VALUES (?, ?)");
|
|
$stmt->execute([$nombre, $fecha]);
|
|
$productoId = $pdo->lastInsertId();
|
|
}
|
|
|
|
// Insertar línea de ticket
|
|
$stmt = $pdo->prepare("INSERT INTO lineas_ticket (ticket_id, producto_id, cantidad, precio_unitario, precio_total)
|
|
VALUES (?, ?, ?, ?, ?)");
|
|
$stmt->execute([
|
|
$ticketId,
|
|
$productoId,
|
|
$producto["cantidad"],
|
|
$producto["precio_unitario"],
|
|
$producto["precio_total"]
|
|
]);
|
|
|
|
// Actualizar última compra
|
|
$stmt = $pdo->prepare("UPDATE productos SET ultima_compra = ? WHERE id = ?");
|
|
$stmt->execute([$fecha, $productoId]);
|
|
}
|
|
|
|
$pdo->commit();
|
|
echo json_encode(["status" => "ok"]);
|
|
|
|
} catch (Exception $e) {
|
|
$pdo->rollBack();
|
|
echo json_encode(["status" => "error", "message" => $e->getMessage()]);
|
|
}
|