autocompra/servidor/subir_ticket.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()]);
}