| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/ventaEnCapturaAgrega.php"; |
| 4 | |
| 5 | class Bd |
| 6 | { |
| 7 | |
| 8 | private static ?PDO $pdo = null; |
| 9 | |
| 10 | public static function pdo(): PDO |
| 11 | { |
| 12 | if (self::$pdo === null) { |
| 13 | self::$pdo = new PDO( |
| 14 | // cadena de conexión |
| 15 | "sqlite:srvcompras.db", |
| 16 | // usuario |
| 17 | null, |
| 18 | // contraseña |
| 19 | null, |
| 20 | // Opciones: pdos no persistentes y lanza excepciones. |
| 21 | [PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION] |
| 22 | ); |
| 23 | |
| 24 | self::$pdo->exec( |
| 25 | 'CREATE TABLE IF NOT EXISTS VENTA ( |
| 26 | VENT_ID INTEGER, |
| 27 | VENT_EN_CAPTURA INTEGER NOT NULL, |
| 28 | CONSTRAINT VENT_PK |
| 29 | PRIMARY KEY(VENT_ID) |
| 30 | )' |
| 31 | ); |
| 32 | self::$pdo->exec( |
| 33 | 'CREATE TABLE IF NOT EXISTS PRODUCTO ( |
| 34 | PROD_ID INTEGER, |
| 35 | PROD_NOMBRE TEXT NOT NULL, |
| 36 | PROD_EXISTENCIAS REAL NOT NULL, |
| 37 | PROD_PRECIO REAL NOT NULL, |
| 38 | CONSTRAINT PROD_PK |
| 39 | PRIMARY KEY(PROD_ID), |
| 40 | CONSTRAINT PROD_NOM_UNQ |
| 41 | UNIQUE(PROD_NOMBRE), |
| 42 | CONSTRAINT PROD_NOM_NV |
| 43 | CHECK(LENGTH(PROD_NOMBRE) > 0) |
| 44 | )' |
| 45 | ); |
| 46 | self::$pdo->exec( |
| 47 | 'CREATE TABLE IF NOT EXISTS DET_VENTA ( |
| 48 | VENT_ID INTEGER NOT NULL, |
| 49 | PROD_ID INTEGER NOT NULL, |
| 50 | DTV_CANTIDAD REAL NOT NULL, |
| 51 | DTV_PRECIO REAL NOT NULL, |
| 52 | CONSTRAINT DTV_PK |
| 53 | PRIMARY KEY (VENT_ID, PROD_ID), |
| 54 | CONSTRAINT DTV_VENT_FK |
| 55 | FOREIGN KEY (VENT_ID) REFERENCES VENTA(VENT_ID), |
| 56 | CONSTRAINT DTV_PROD_FK |
| 57 | FOREIGN KEY (PROD_ID) REFERENCES PRODUCTO(PROD_ID) |
| 58 | )' |
| 59 | ); |
| 60 | |
| 61 | $cantidadDeProductos = |
| 62 | self::$pdo->query("SELECT COUNT(PROD_ID) FROM PRODUCTO")->fetchColumn(); |
| 63 | |
| 64 | if ($cantidadDeProductos === 0) { |
| 65 | self::$pdo->exec( |
| 66 | "INSERT INTO PRODUCTO |
| 67 | (PROD_NOMBRE, PROD_EXISTENCIAS, PROD_PRECIO) |
| 68 | VALUES |
| 69 | ('Sandwich', 50, 15), |
| 70 | ('Hot dog', 40, 30), |
| 71 | ('Hamburguesa', 30, 40)" |
| 72 | ); |
| 73 | } |
| 74 | |
| 75 | $cantidadDeVentas = |
| 76 | self::$pdo->query("SELECT COUNT(VENT_ID) FROM VENTA")->fetchColumn(); |
| 77 | |
| 78 | if ($cantidadDeVentas === 0) { |
| 79 | ventaEnCapturaAgrega(self::$pdo); |
| 80 | } |
| 81 | } |
| 82 | |
| 83 | return self::$pdo; |
| 84 | } |
| 85 | } |
| 86 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; |
| 4 | require_once __DIR__ . "/../lib/php/recuperaIdEntero.php"; |
| 5 | require_once __DIR__ . "/../lib/php/recuperaDecimal.php"; |
| 6 | require_once __DIR__ . "/../lib/php/insert.php"; |
| 7 | require_once __DIR__ . "/../lib/php/devuelveCreated.php"; |
| 8 | require_once __DIR__ . "/Bd.php"; |
| 9 | require_once __DIR__ . "/TABLA_VENTA.php"; |
| 10 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; |
| 11 | require_once __DIR__ . "/TABLA_DET_VENTA.php"; |
| 12 | require_once __DIR__ . "/validaCantidad.php"; |
| 13 | require_once __DIR__ . "/productoBusca.php"; |
| 14 | require_once __DIR__ . "/validaProducto.php"; |
| 15 | require_once __DIR__ . "/ventaEnCapturaBusca.php"; |
| 16 | require_once __DIR__ . "/validaVenta.php"; |
| 17 | |
| 18 | ejecutaServicio(function () { |
| 19 | |
| 20 | $prodId = recuperaIdEntero("id"); |
| 21 | $cantidad = recuperaDecimal("cantidad"); |
| 22 | |
| 23 | $cantidad = validaCantidad($cantidad); |
| 24 | |
| 25 | $pdo = Bd::pdo(); |
| 26 | |
| 27 | $producto = productoBusca($pdo, $prodId); |
| 28 | validaProducto($producto, $prodId); |
| 29 | |
| 30 | $venta = ventaEnCapturaBusca($pdo); |
| 31 | validaVenta($venta); |
| 32 | |
| 33 | insert( |
| 34 | pdo: Bd::pdo(), |
| 35 | into: DET_VENTA, |
| 36 | values: [ |
| 37 | VENT_ID => $venta[VENT_ID], |
| 38 | PROD_ID => $prodId, |
| 39 | DTV_CANTIDAD => $cantidad, |
| 40 | DTV_PRECIO => $producto[PROD_PRECIO], |
| 41 | ] |
| 42 | ); |
| 43 | |
| 44 | $encodeProdId = urlencode($prodId); |
| 45 | devuelveCreated("/srv/det-venta.php?id=$encodeProdId", [ |
| 46 | "prodId" => ["value" => $prodId], |
| 47 | "prodNombre" => ["value" => $producto[PROD_NOMBRE]], |
| 48 | "precio" => ["value" => "$" . number_format($producto[PROD_PRECIO], 2)], |
| 49 | "cantidad" => ["valueAsNumber" => $cantidad], |
| 50 | ]); |
| 51 | }); |
| 52 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; |
| 4 | require_once __DIR__ . "/../lib/php/recuperaIdEntero.php"; |
| 5 | require_once __DIR__ . "/../lib/php/devuelveNoContent.php"; |
| 6 | require_once __DIR__ . "/../lib/php/delete.php"; |
| 7 | require_once __DIR__ . "/Bd.php"; |
| 8 | require_once __DIR__ . "/TABLA_VENTA.php"; |
| 9 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; |
| 10 | require_once __DIR__ . "/TABLA_DET_VENTA.php"; |
| 11 | require_once __DIR__ . "/ventaEnCapturaBusca.php"; |
| 12 | |
| 13 | ejecutaServicio(function () { |
| 14 | |
| 15 | $prodId = recuperaIdEntero("prodId"); |
| 16 | |
| 17 | $pdo = Bd::pdo(); |
| 18 | |
| 19 | $venta = ventaEnCapturaBusca($pdo); |
| 20 | if ($venta !== false) { |
| 21 | delete( |
| 22 | pdo: $pdo, |
| 23 | from: DET_VENTA, |
| 24 | where: [VENT_ID => $venta[VENT_ID], PROD_ID => $prodId] |
| 25 | ); |
| 26 | } |
| 27 | devuelveNoContent(); |
| 28 | }); |
| 29 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; |
| 4 | require_once __DIR__ . "/../lib/php/recuperaIdEntero.php"; |
| 5 | require_once __DIR__ . "/../lib/php/recuperaDecimal.php"; |
| 6 | require_once __DIR__ . "/../lib/php/update.php"; |
| 7 | require_once __DIR__ . "/../lib/php/devuelveJson.php"; |
| 8 | require_once __DIR__ . "/Bd.php"; |
| 9 | require_once __DIR__ . "/TABLA_VENTA.php"; |
| 10 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; |
| 11 | require_once __DIR__ . "/TABLA_DET_VENTA.php"; |
| 12 | require_once __DIR__ . "/validaCantidad.php"; |
| 13 | require_once __DIR__ . "/productoBusca.php"; |
| 14 | require_once __DIR__ . "/validaProducto.php"; |
| 15 | require_once __DIR__ . "/ventaEnCapturaBusca.php"; |
| 16 | require_once __DIR__ . "/validaVenta.php"; |
| 17 | |
| 18 | ejecutaServicio(function () { |
| 19 | |
| 20 | $prodId = recuperaIdEntero("prodId"); |
| 21 | $cantidad = recuperaDecimal("cantidad"); |
| 22 | |
| 23 | $cantidad = validaCantidad($cantidad); |
| 24 | |
| 25 | $pdo = Bd::pdo(); |
| 26 | |
| 27 | $producto = productoBusca($pdo, $prodId); |
| 28 | validaProducto($producto, $prodId); |
| 29 | |
| 30 | $venta = ventaEnCapturaBusca($pdo); |
| 31 | validaVenta($venta); |
| 32 | |
| 33 | update( |
| 34 | pdo: Bd::pdo(), |
| 35 | table: DET_VENTA, |
| 36 | set: [DTV_CANTIDAD => $cantidad, DTV_PRECIO => $producto[PROD_PRECIO]], |
| 37 | where: [VENT_ID => $venta[VENT_ID], PROD_ID => $prodId] |
| 38 | ); |
| 39 | |
| 40 | devuelveJson([ |
| 41 | "prodId" => ["value" => $prodId], |
| 42 | "prodNombre" => ["value" => $producto[PROD_NOMBRE]], |
| 43 | "precio" => ["value" => "$" . number_format($producto[PROD_PRECIO], 2)], |
| 44 | "cantidad" => ["valueAsNumber" => $cantidad], |
| 45 | ]); |
| 46 | }); |
| 47 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/NOT_FOUND.php"; |
| 4 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; |
| 5 | require_once __DIR__ . "/../lib/php/recuperaIdEntero.php"; |
| 6 | require_once __DIR__ . "/../lib/php/selectFirst.php"; |
| 7 | require_once __DIR__ . "/../lib/php/devuelveJson.php"; |
| 8 | require_once __DIR__ . "/../lib/php/ProblemDetails.php"; |
| 9 | require_once __DIR__ . "/Bd.php"; |
| 10 | require_once __DIR__ . "/TABLA_VENTA.php"; |
| 11 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; |
| 12 | require_once __DIR__ . "/TABLA_DET_VENTA.php"; |
| 13 | require_once __DIR__ . "/productoBusca.php"; |
| 14 | require_once __DIR__ . "/validaProducto.php"; |
| 15 | require_once __DIR__ . "/ventaEnCapturaBusca.php"; |
| 16 | require_once __DIR__ . "/validaVenta.php"; |
| 17 | |
| 18 | ejecutaServicio(function () { |
| 19 | |
| 20 | $prodId = recuperaIdEntero("prodId"); |
| 21 | |
| 22 | $pdo = Bd::pdo(); |
| 23 | |
| 24 | $venta = ventaEnCapturaBusca($pdo); |
| 25 | validaVenta($venta); |
| 26 | |
| 27 | $producto = productoBusca($pdo, $prodId); |
| 28 | validaProducto($producto, $prodId); |
| 29 | |
| 30 | $detVenta = selectFirst( |
| 31 | pdo: $pdo, |
| 32 | from: DET_VENTA, |
| 33 | where: [ |
| 34 | VENT_ID => $venta[VENT_ID], |
| 35 | PROD_ID => $prodId |
| 36 | ] |
| 37 | ); |
| 38 | |
| 39 | if ($detVenta === false) { |
| 40 | $htmlId = htmlentities($prodId); |
| 41 | throw new ProblemDetails( |
| 42 | status: NOT_FOUND, |
| 43 | type: "/error/detalledeventanoencontrado.html", |
| 44 | title: "Detalle de venta no encontrado.", |
| 45 | detail: "No se encontró ningún detalle de venta con el id de producto " |
| 46 | . $htmlId . ".", |
| 47 | ); |
| 48 | } |
| 49 | |
| 50 | devuelveJson([ |
| 51 | "prodId" => ["value" => $prodId], |
| 52 | "prodNombre" => ["value" => $producto[PROD_NOMBRE]], |
| 53 | "precio" => ["value" => "$" . number_format($detVenta[DTV_PRECIO], 2)], |
| 54 | "cantidad" => ["valueAsNumber" => $detVenta[DTV_CANTIDAD]], |
| 55 | ]); |
| 56 | }); |
| 57 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/fetchAll.php"; |
| 4 | |
| 5 | function detVentaConsulta(PDO $pdo, int $ventaId) |
| 6 | { |
| 7 | return fetchAll( |
| 8 | $pdo->query( |
| 9 | "SELECT |
| 10 | DV.PROD_ID, |
| 11 | P.PROD_NOMBRE, |
| 12 | P.PROD_EXISTENCIAS, |
| 13 | P.PROD_PRECIO, |
| 14 | DV.DTV_CANTIDAD, |
| 15 | DV.DTV_PRECIO |
| 16 | FROM DET_VENTA DV, PRODUCTO P |
| 17 | WHERE |
| 18 | DV.PROD_ID = P.PROD_ID |
| 19 | AND DV.VENT_ID = :VENT_ID |
| 20 | ORDER BY P.PROD_NOMBRE" |
| 21 | ), |
| 22 | [":VENT_ID" => $ventaId] |
| 23 | ); |
| 24 | } |
| 25 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; |
| 4 | require_once __DIR__ . "/../lib/php/recuperaIdEntero.php"; |
| 5 | require_once __DIR__ . "/../lib/php/devuelveJson.php"; |
| 6 | require_once __DIR__ . "/Bd.php"; |
| 7 | require_once __DIR__ . "/productoBusca.php"; |
| 8 | require_once __DIR__ . "/validaProducto.php"; |
| 9 | |
| 10 | ejecutaServicio(function () { |
| 11 | |
| 12 | $id = recuperaIdEntero("id"); |
| 13 | |
| 14 | $producto = productoBusca(Bd::pdo(), $id); |
| 15 | validaProducto($producto, $id); |
| 16 | |
| 17 | devuelveJson([ |
| 18 | "id" => ["value" => $id], |
| 19 | "producto" => ["value" => $producto[PROD_NOMBRE]], |
| 20 | "precio" => ["value" => "$" . number_format($producto[PROD_PRECIO], 2)], |
| 21 | ]); |
| 22 | }); |
| 23 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/selectFirst.php"; |
| 4 | require_once __DIR__ . "/Bd.php"; |
| 5 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; |
| 6 | |
| 7 | function productoBusca(PDO $pdo, int $id) |
| 8 | { |
| 9 | return selectFirst(pdo: $pdo, from: PRODUCTO, where: [PROD_ID => $id]); |
| 10 | } |
| 11 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; |
| 4 | require_once __DIR__ . "/../lib/php/select.php"; |
| 5 | require_once __DIR__ . "/../lib/php/devuelveJson.php"; |
| 6 | require_once __DIR__ . "/Bd.php"; |
| 7 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; |
| 8 | |
| 9 | ejecutaServicio(function () { |
| 10 | |
| 11 | $pdo = Bd::pdo(); |
| 12 | |
| 13 | $lista = select(pdo: $pdo, from: PRODUCTO, orderBy: PROD_NOMBRE); |
| 14 | |
| 15 | $render = ""; |
| 16 | foreach ($lista as $modelo) { |
| 17 | $encodeId = urlencode($modelo[PROD_ID]); |
| 18 | $id = htmlentities($encodeId); |
| 19 | $nombre = htmlentities($modelo[PROD_NOMBRE]); |
| 20 | $precio = htmlentities("$" . number_format($modelo[PROD_PRECIO], 2)); |
| 21 | $existencias = htmlentities(number_format($modelo[PROD_EXISTENCIAS], 2)); |
| 22 | $render .= |
| 23 | "<dt>$nombre</dt> |
| 24 | <dd> |
| 25 | <a href='agrega.html?id=$id'>Agregar al carrito</a> |
| 26 | </dd> |
| 27 | <dd> |
| 28 | <dl> |
| 29 | <dt>Precio</dt> |
| 30 | <dd>$precio</dd> |
| 31 | <dt>Existencias</dt> |
| 32 | <dd>$existencias</dd> |
| 33 | </dl> |
| 34 | </dd>"; |
| 35 | } |
| 36 | devuelveJson(["lista" => ["innerHTML" => $render]]); |
| 37 | }); |
| 38 |
| 1 | <?php |
| 2 | |
| 3 | const DET_VENTA = "DET_VENTA"; |
| 4 | const DTV_CANTIDAD = "DTV_CANTIDAD"; |
| 5 | const DTV_PRECIO = "DTV_PRECIO"; |
| 6 |
| 1 | <?php |
| 2 | |
| 3 | const PRODUCTO = "PRODUCTO"; |
| 4 | const PROD_ID = "PROD_ID"; |
| 5 | const PROD_NOMBRE = "PROD_NOMBRE"; |
| 6 | const PROD_EXISTENCIAS = "PROD_EXISTENCIAS"; |
| 7 | const PROD_PRECIO = "PROD_PRECIO"; |
| 8 |
| 1 | <?php |
| 2 | |
| 3 | const VENTA = "VENTA"; |
| 4 | const VENT_ID = "VENT_ID"; |
| 5 | const VENT_EN_CAPTURA = "VENT_EN_CAPTURA"; |
| 6 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/BAD_REQUEST.php"; |
| 4 | require_once __DIR__ . "/../lib/php/ProblemDetails.php"; |
| 5 | |
| 6 | function validaCantidad(false|null|float $cantidad) |
| 7 | { |
| 8 | if ($cantidad === false) |
| 9 | throw new ProblemDetails( |
| 10 | status: BAD_REQUEST, |
| 11 | title: "Falta la cantidad.", |
| 12 | type: "/error/faltacantidad.html", |
| 13 | detail: "La solicitud no tiene el valor de cantidad." |
| 14 | ); |
| 15 | |
| 16 | if ($cantidad === null) |
| 17 | throw new ProblemDetails( |
| 18 | status: BAD_REQUEST, |
| 19 | title: "Falta la cantidad.", |
| 20 | type: "/error/cantidadenblanco.html", |
| 21 | detail: "Pon un número en el campo cantidad." |
| 22 | ); |
| 23 | |
| 24 | return $cantidad; |
| 25 | } |
| 26 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/NOT_FOUND.php"; |
| 4 | |
| 5 | function validaProducto($producto, $prodId) |
| 6 | { |
| 7 | if ($producto === false) { |
| 8 | $htmlId = htmlentities($prodId); |
| 9 | throw new ProblemDetails( |
| 10 | status: NOT_FOUND, |
| 11 | title: "Producto no encontrado.", |
| 12 | type: "/error/productonoencontrado.html", |
| 13 | detail: "No se encontró ningún producto con el id $htmlId.", |
| 14 | ); |
| 15 | } |
| 16 | } |
| 17 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/BAD_REQUEST.php"; |
| 4 | |
| 5 | function validaVenta($venta) |
| 6 | { |
| 7 | if ($venta === false) |
| 8 | throw new ProblemDetails( |
| 9 | status: BAD_REQUEST, |
| 10 | title: "Venta en captura no encontrada.", |
| 11 | type: "/error/ventaencapturanoencontrada.html", |
| 12 | detail: "No se encontró ninguna venta en captura.", |
| 13 | ); |
| 14 | } |
| 15 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; |
| 4 | require_once __DIR__ . "/../lib/php/devuelveCreated.php"; |
| 5 | require_once __DIR__ . "/../lib/php/update.php"; |
| 6 | require_once __DIR__ . "/Bd.php"; |
| 7 | require_once __DIR__ . "/TABLA_VENTA.php"; |
| 8 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; |
| 9 | require_once __DIR__ . "/TABLA_DET_VENTA.php"; |
| 10 | require_once __DIR__ . "/ventaEnCapturaBusca.php"; |
| 11 | require_once __DIR__ . "/validaVenta.php"; |
| 12 | require_once __DIR__ . "/detVentaConsulta.php"; |
| 13 | require_once __DIR__ . "/ventaEnCapturaAgrega.php"; |
| 14 | |
| 15 | ejecutaServicio(function () { |
| 16 | |
| 17 | $pdo = Bd::pdo(); |
| 18 | $pdo->beginTransaction(); |
| 19 | |
| 20 | $venta = ventaEnCapturaBusca($pdo); |
| 21 | validaVenta($venta); |
| 22 | |
| 23 | $detalles = detVentaConsulta($pdo, $venta[VENT_ID]); |
| 24 | |
| 25 | // Actualiza las existencias de los productos vendidos. |
| 26 | $update = $pdo->prepare( |
| 27 | "UPDATE PRODUCTO |
| 28 | SET PROD_EXISTENCIAS = :PROD_EXISTENCIAS |
| 29 | WHERE PROD_ID = :PROD_ID" |
| 30 | ); |
| 31 | foreach ($detalles as $detVenta) { |
| 32 | $update->execute([ |
| 33 | ":PROD_ID" => $detVenta[PROD_ID], |
| 34 | ":PROD_EXISTENCIAS" => $detVenta[PROD_EXISTENCIAS] - $detVenta[DTV_CANTIDAD] |
| 35 | ]); |
| 36 | } |
| 37 | |
| 38 | update( |
| 39 | pdo: $pdo, |
| 40 | table: VENTA, |
| 41 | set: [VENT_EN_CAPTURA => 0], |
| 42 | where: [VENT_ID => $venta[VENT_ID]] |
| 43 | ); |
| 44 | |
| 45 | ventaEnCapturaAgrega($pdo); |
| 46 | $folio = $pdo->lastInsertId(); |
| 47 | |
| 48 | $pdo->commit(); |
| 49 | |
| 50 | devuelveCreated("/srv/venta-en-captura.php", [ |
| 51 | "folio" => ["value" => $folio], |
| 52 | "detalles" => ["innerHTML" => ""] |
| 53 | ]); |
| 54 | }); |
| 55 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/ejecutaServicio.php"; |
| 4 | require_once __DIR__ . "/../lib/php/fetchAll.php"; |
| 5 | require_once __DIR__ . "/../lib/php/devuelveJson.php"; |
| 6 | require_once __DIR__ . "/Bd.php"; |
| 7 | require_once __DIR__ . "/TABLA_VENTA.php"; |
| 8 | require_once __DIR__ . "/TABLA_PRODUCTO.php"; |
| 9 | require_once __DIR__ . "/TABLA_DET_VENTA.php"; |
| 10 | require_once __DIR__ . "/ventaEnCapturaBusca.php"; |
| 11 | require_once __DIR__ . "/validaVenta.php"; |
| 12 | require_once __DIR__ . "/detVentaConsulta.php"; |
| 13 | require_once __DIR__ . "/Bd.php"; |
| 14 | |
| 15 | ejecutaServicio(function () { |
| 16 | |
| 17 | $pdo = Bd::pdo(); |
| 18 | |
| 19 | $venta = ventaEnCapturaBusca($pdo); |
| 20 | validaVenta($venta); |
| 21 | |
| 22 | $detalles = detVentaConsulta($pdo, $venta[VENT_ID]); |
| 23 | |
| 24 | $renderDetalles = ""; |
| 25 | foreach ($detalles as $detVenta) { |
| 26 | $encodeProdId = urlencode($detVenta[PROD_ID]); |
| 27 | $prodId = htmlentities($encodeProdId); |
| 28 | $prodNombre = htmlentities($detVenta[PROD_NOMBRE]); |
| 29 | $precio = htmlentities("$" . number_format($detVenta[PROD_PRECIO], 2)); |
| 30 | $cantidad = htmlentities(number_format($detVenta[DTV_CANTIDAD], 2)); |
| 31 | $renderDetalles .= |
| 32 | "<dt>$prodNombre</dt> |
| 33 | <dd> |
| 34 | <a href= 'modifica.html?prodId=$prodId'>Modificar o eliminar</a> |
| 35 | </dd> |
| 36 | <dd> |
| 37 | <dl> |
| 38 | <dt>Cantidad</dt> |
| 39 | <dd>$cantidad</dd> |
| 40 | <dt>Precio</dt> |
| 41 | <dd>$precio</dd> |
| 42 | </dl> |
| 43 | </dd>"; |
| 44 | } |
| 45 | |
| 46 | devuelveJson([ |
| 47 | "folio" => ["value" => $venta[VENT_ID]], |
| 48 | "detalles" => ["innerHTML" => $renderDetalles] |
| 49 | ]); |
| 50 | }); |
| 51 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/selectFirst.php"; |
| 4 | |
| 5 | function ventaEnCapturaAgrega(PDO $pdo) |
| 6 | { |
| 7 | $pdo->exec("INSERT INTO VENTA (VENT_EN_CAPTURA) VALUES (1)"); |
| 8 | } |
| 9 |
| 1 | <?php |
| 2 | |
| 3 | require_once __DIR__ . "/../lib/php/fetch.php"; |
| 4 | |
| 5 | function ventaEnCapturaBusca(PDO $pdo) |
| 6 | { |
| 7 | return fetch($pdo->query("SELECT * FROM VENTA WHERE VENT_EN_CAPTURA = 1")); |
| 8 | } |
| 9 |