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 |