// Start the clock for the page parse time log
define('PAGE_PARSE_START_TIME', microtime());
// Set the level of error reporting
error_reporting(E_ALL & ~E_NOTICE);
//error_reporting(~E_ALL);
// Codigo de barras
require("codigoBarras/php-barcode.php");
function getvar($name){
global $_GET, $_POST;
if (isset($_GET[$name])) return $_GET[$name];
else if (isset($_POST[$name])) return $_POST[$name];
else return false;
}
if (get_magic_quotes_gpc()){
$code=stripslashes(getvar('code'));
} else {
$code=getvar('code');
}
//if (!$code) $code='123456789012';
// Fin c?digo de barras
// set php_self in the local scope
$PHP_SELF = (isset($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : $HTTP_SERVER_VARS['SCRIPT_NAME']);
// customization for the design layout
define('BOX_WIDTH', 125); // how wide the boxes should be in pixels (default: 125)
include('includes/configure.php');
function productosVendidos($idProduct) {
$texto_query = "SELECT ifnull(SUM(unidades),0) AS total_unidades
FROM (
SELECT od.product_quantity AS unidades
FROM ps_order_detail od
JOIN ps_orders o ON o.id_order = od.id_order
join ps_cart dd on (dd.id_cart=o.id_cart)
WHERE date(dd.tramo_date) between date(DATE_ADD(CURDATE(), INTERVAL 1 DAY)) and date(DATE_ADD(CURDATE(), INTERVAL 4 DAY))
AND od.product_id = ".$idProduct."
and o.current_state in (2,3,4,5,14,16)
UNION ALL
SELECT od.product_quantity * pp.quantity AS unidades
FROM ps_order_detail od
JOIN ps_orders o ON o.id_order = od.id_order
JOIN ps_pack pp ON pp.id_product_pack = od.product_id
join ps_cart dd on (dd.id_cart=o.id_cart)
WHERE date(dd.tramo_date) between date(DATE_ADD(CURDATE(), INTERVAL 1 DAY)) and date(DATE_ADD(CURDATE(), INTERVAL 4 DAY))
AND pp.id_product_item = ".$idProduct."
and o.current_state in (2,3,4,5,14,16)
) AS ventas;
";
//echo $texto_query;
$status_query = tep_db_query($texto_query);
$status_values = tep_db_fetch_array($status_query);
return($status_values['total_unidades']);
}
if (strlen($_POST['tupperAnadido'])==12) {
//Para el caso de a?adir un tupper al stock con c?digo de barras
$_POST['codProducto']= substr($_POST['tupperAnadido'], 0, 5);
$fechaLote='20'.substr($_POST['tupperAnadido'],6,1).substr($_POST['tupperAnadido'],5,1).substr($_POST['tupperAnadido'],8,1).substr($_POST['tupperAnadido'],7,1).substr($_POST['tupperAnadido'],10,1).substr($_POST['tupperAnadido'],9,1);
}
//nombre del producto seleccionado
$texto_query = "select name products_name " .
"from ps_product_lang ".
"where id_product = '".$_POST['codProducto']."' ";
$status_query = tep_db_query($texto_query);
$status_values = tep_db_fetch_array($status_query);
$nombrePr = $status_values['products_name'];
$grabaReg = true;
if (strlen($_POST['codProducto'])>0 ) {
$tituloPagina=$status_values['products_name'];
} else {
$tituloPagina='Etiquetas';
}
if ($_POST['cantidadGr']<>0 or $_POST['cantidadGrUrg']<>0) {
/* Busco el c?digo de producto para Grande*/
/* $texto_query = "select id_product products_id " .
"from ps_product_lang ".
"where name like '".$nombrePr."%' ".
"and name like '%GRANDE%' ";
$status_query = tep_db_query($texto_query);
if (tep_db_num_rows($status_query)>0) {
$status_values = tep_db_fetch_array($status_query);
$prGR = $status_values['products_id'];
} else {
$grabaReg = false;
}
*/
$texto_query = "select id_product products_id
from ps_product_lang
where name like '".$nombrePr."%'
and name like '%GRANDE%' ";
// 1. Ejecutar la consulta
$status_query = tep_db_query($texto_query);
// 2. ? VERIFICACI?N CR?TICA: Asegurarse de que la consulta fue exitosa
if ($status_query !== false && $status_query !== null) {
// Si la consulta fue exitosa, podemos contar las filas sin error.
if (tep_db_num_rows($status_query) > 0) {
$status_values = tep_db_fetch_array($status_query);
$prGR = $status_values['products_id'];
} else {
// No se encontraron resultados
$grabaReg = false;
}
} else {
// La consulta SQL fall? (causa del Warning en error_log)
$grabaReg = false;
// Opcional y Recomendado: Registrar el error real de MySQL para depuraci?n
// La forma de obtener el error depende de c?mo tep_db_query maneja la conexi?n.
// Si tu antigua funci?n ten?a una forma de obtener el error (ej: tep_db_error()):
error_log("Fallo de SQL en ps_product_lang. Error: " . tep_db_error());
// Si est?s usando mysqli directamente, usa:
error_log("Fallo de SQL. Consulta: " . $texto_query);
}
}
if ($_POST['cantidadFam']<>0 or $_POST['cantidadFamUrg']<>0) {
/* Busco el c?digo de producto para Grande*/
/* $texto_query = "select id_product products_id " .
"from ps_product_lang ".
"where name like '".$nombrePr."%' ".
"and name like '%FAMILIAR%' ";
//echo $texto_query;
$status_query = tep_db_query($texto_query);
if (tep_db_num_rows($status_query)>0) {
$status_values = tep_db_fetch_array($status_query);
$prFAM = $status_values['products_id'];
} else {
$grabaReg = false;
}
*/
$texto_query = "select id_product products_id " .
"from ps_product_lang ".
"where name like '".$nombrePr."%' ".
"and name like '%FAMILIAR%' ";
// Ejecutar la consulta
$status_query = tep_db_query($texto_query);
// ? VERIFICACI?N CR?TICA: Comprobar que la consulta se ejecut? sin errores
// Si $status_query es FALSE o NULL, la consulta fall?.
if ($status_query !== false && $status_query !== null) {
// La consulta fue exitosa. Ahora podemos contar las filas.
if (tep_db_num_rows($status_query) > 0) {
$status_values = tep_db_fetch_array($status_query);
$prFAM = $status_values['products_id'];
} else {
// No se encontraron resultados
$grabaReg = false;
}
} else {
// La consulta fall? (error de sintaxis SQL, tabla no existe, etc.).
$grabaReg = false;
// RECOMENDADO: Registrar el error real de MySQL en el log
error_log("Fallo de SQL buscando producto FAMILIAR. Consulta: " . $texto_query);
}
}
if (strlen($_GET['products_id'])>0 and $_GET['borrar']) {
/* $_POST['codProducto']=$_GET['products_id'];
$_POST['fecha']=$_GET['fecha'];
$_POST['idEmpleado']=$_GET['idEmpleado'];
*/
$texto_query = "select s.cantidad " .
"from ps_stock_web s join ps_osc_products_fabricado pf on (s.products_id=pf.products_id and s.fechaLote=pf.fecha) ".
"where s.products_id =".$_GET['products_id']." ".
"and s.fechaLote='".$_GET['fechaLote']."'";
$status_query = tep_db_query($texto_query);
if (tep_db_num_rows($status_query)>0) {
tep_db_query("update ps_stock_web set cantidad=cantidad-".$_GET['cantidad']." where products_id=".$_GET['products_id']." and fechaLote='".$_GET['fechaLote']."'");
//Lo voy a dejar para que se quede el rastro en esta tabla
tep_db_query("delete from ps_osc_products_fabricado where id='".$_GET['id']."' LIMIT 1");
tep_db_query("update ps_stock_web_foto set cantidad=cantidad-".$_GET['cantidad']." where fechaFoto = curdate() and products_id=".$_GET['products_id']." and fechaLote='".$_GET['fechaLote']."'");
tep_db_query("update ps_stock_available sa join (select products_id,sum(cantidad) cantidad from ps_stock_web_foto where fechaFoto=curdate() group by products_id) as sw on (sa.id_product=sw.products_id) set sa.quantity = sw.cantidad-".$_GET['cantidad']."-".productosVendidos($_GET['products_id'])." where sa.id_product=".$_GET['products_id']);
}
echo "Registro Borrado
";
}elseif (strlen($_POST['tupperAnadido'])==12) {
tep_db_query("insert into ps_stock_web(products_id,fechaLote,cantidad) values('".$_POST['codProducto']."','".$fechaLote."',1) ".
"on duplicate key update cantidad=cantidad+1");
tep_db_query("insert into ps_osc_products_fabricado(products_id,fecha,cantidad,quien,observaciones) values('".$_POST['codProducto']."','".$fechaLote."','1','19','".$_POST['observaciones']."')");
echo 'TUPPER AGREGADO: '.$nombrePr.' con Fecha de Lote: '.$fechaLote;
}elseif ($_POST['idEmpleado']<>0) {
if ($grabaReg) { //si existen versiones en grande y familiar para lo tecleado grabamos, sin? mostramos error
if ($_POST['cantidad']<>0) {
/* tep_db_query("insert into ps_stock_web(products_id,fechaLote,cantidad) values('".$_POST['codProducto']."','".$_POST['fecha']."',".$_POST['cantidad'].") ".
"on duplicate key update cantidad=cantidad+".$_POST['cantidad']);
tep_db_query("insert into ps_osc_products_fabricado(products_id,fecha,cantidad,quien,observaciones) values('".$_POST['codProducto']."','".$_POST['fecha']."','".$_POST['cantidad']."','".$_POST['idEmpleado']."','".$_POST['observaciones']."')");
//Se modifica tambi?n ps_stock_web_foto porque esta tabla refleja lo que hay en el stock sin tener en cuenta lo descontado desde el programa de pick to light
tep_db_query("insert into ps_stock_web_foto(fechaFoto,products_id,fechaLote,cantidad) values(curdate(),'".$_POST['codProducto']."','".$_POST['fecha']."',".$_POST['cantidad'].") ".
"on duplicate key update cantidad=cantidad+".$_POST['cantidad']);
//cojo lo que hab?a en la foto del stock, le sumo lo fabricado hoy y le resto las ventas desde ma?ana
tep_db_query("update ps_stock_available sa join (select products_id,sum(cantidad) cantidad from ps_stock_web_foto where fechaFoto=curdate() group by products_id) as sw on (sa.id_product=sw.products_id) set sa.quantity = sw.cantidad+".$_POST['cantidad']."-".productosVendidos($_POST['codProducto'])." where sa.id_product=".$_POST['codProducto']);
*/
// 1. Iniciar la conexi?n a la base de datos
$conn = new mysqli(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
// Verificar la conexi?n
if ($conn->connect_error) {
die("? Error de conexi?n a la base de datos: " . $conn->connect_error);
}
// ----------------------------------------------------------------------
$error = false; // Variable para rastrear si ocurri? un error
// **Nota:** Se asume que la funci?n productosVendidos($_POST['codProducto']) existe y devuelve un valor num?rico.
// ?Esta funci?n debe ser adaptada para usar la conexi?n $conn y ser segura, incluso en este c?digo!
// Para este ejemplo, la llamamos aqu?:
$productos_vendidos = productosVendidos($_POST['codProducto']);
// --- INICIO DE LA TRANSACCI?N ---
// Desactivar el autocommit e iniciar la transacci?n
if (!$conn->begin_transaction()) {
$error = true;
}
// 1? Operaci?n: Actualizaci?n/Inserci?n de stock en ps_stock_web
// NOTA: Concatenaci?n directa de $_POST (INSEGURO)
$query1 = "
INSERT INTO ps_stock_web(products_id, fechaLote, cantidad)
VALUES ('".$_POST['codProducto']."', '".$_POST['fecha']."', ".$_POST['cantidad'].")
ON DUPLICATE KEY UPDATE cantidad = cantidad + ".$_POST['cantidad']
;
if (!$error && !$conn->query($query1)) {
$error = true;
}
// 2? Operaci?n: Registro de la fabricaci?n en ps_osc_products_fabricado
// NOTA: Concatenaci?n directa de $_POST (INSEGURO)
$query2 = "
INSERT INTO ps_osc_products_fabricado(products_id, fecha, cantidad, quien, observaciones)
VALUES ('".$_POST['codProducto']."', '".$_POST['fecha']."', '".$_POST['cantidad']."', '".$_POST['idEmpleado']."', '".$_POST['observaciones']."')
";
if (!$error && !$conn->query($query2)) {
$error = true;
}
// 3? Operaci?n: Actualizaci?n/Inserci?n de la 'foto' de stock en ps_stock_web_foto
// NOTA: Concatenaci?n directa de $_POST (INSEGURO)
$query3 = "
INSERT INTO ps_stock_web_foto(fechaFoto, products_id, fechaLote, cantidad)
VALUES (CURDATE(), '".$_POST['codProducto']."', '".$_POST['fecha']."', ".$_POST['cantidad'].")
ON DUPLICATE KEY UPDATE cantidad = cantidad + ".$_POST['cantidad']
;
if (!$error && !$conn->query($query3)) {
$error = true;
}
// 4? Operaci?n: Actualizaci?n del stock disponible en ps_stock_available
// NOTA: Concatenaci?n directa de $_POST y resultado de la funci?n (INSEGURO)
$query4 = "
UPDATE ps_stock_available sa
JOIN (
SELECT products_id, SUM(cantidad) cantidad
FROM ps_stock_web_foto
WHERE fechaFoto = CURDATE()
GROUP BY products_id
) AS sw ON (sa.id_product = sw.products_id)
SET sa.quantity = sw.cantidad + ".$_POST['cantidad']." - ".$productos_vendidos."
WHERE sa.id_product = ".$_POST['codProducto']
;
if (!$error && !$conn->query($query4)) {
$error = true;
}
// --- CIERRE DE LA TRANSACCI?N ---
if ($error) {
// Si $error es true, revertir todos los cambios realizados
$conn->rollback();
// Mostrar el aviso
echo "? **?ERROR!** Algo ha ido mal. La operaci?n no se ha realizado. Todos los cambios han sido revertidos. Detalles del error: " . $conn->error;
// Opcional: registrar el error detallado para la depuraci?n
error_log("Error en la transacci?n de fabricaci?n para producto: ".$_POST['codProducto']);
} else {
// Si $error es false, confirmar todos los cambios de forma permanente
$conn->commit();
}
// Cerrar la conexi?n
$conn->close();
}
if ($_POST['cantidadGr']<>0) {
/* tep_db_query("insert into ps_stock_web(products_id,fechaLote,cantidad) values('".$prGR."','".$_POST['fecha']."',".$_POST['cantidadGr'].") ".
"on duplicate key update cantidad=cantidad+".$_POST['cantidadGr']);
tep_db_query("insert into ps_osc_products_fabricado(products_id,fecha,cantidad,quien,observaciones) values('".$prGR."','".$_POST['fecha']."','".$_POST['cantidadGr']."','".$_POST['idEmpleado']."','".$_POST['observaciones']."')");
//Se modifica tambi?n ps_stock_web_foto porque esta tabla refleja lo que hay en el stock sin tener en cuenta lo descontado desde el programa de pick to light
tep_db_query("insert into ps_stock_web_foto(fechaFoto,products_id,fechaLote,cantidad) values(curdate(),'".$prGR."','".$_POST['fecha']."',".$_POST['cantidadGr'].") ".
"on duplicate key update cantidad=cantidad+".$_POST['cantidadGr']);
//cojo lo que hab?a en la foto del stock, le sumo lo fabricado hoy y le resto las ventas desde ma?ana
tep_db_query("update ps_stock_available sa join (select products_id,sum(cantidad) cantidad from ps_stock_web_foto where fechaFoto=curdate() group by products_id) as sw on (sa.id_product=sw.products_id) set sa.quantity = sw.cantidad+".$_POST['cantidadGr']."-".productosVendidos($prGR)." where sa.id_product=".$prGR);
*/
// 1. Iniciar la conexi?n a la base de datos
// Se utiliza el modo orientado a objetos (new mysqli)
$conn = new mysqli(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
// Verificar la conexi?n
if ($conn->connect_error) {
die("? Error de conexi?n a la base de datos: " . $conn->connect_error);
}
// ----------------------------------------------------------------------
$error = false; // Variable para rastrear si ocurri? un error
// **Nota:** Se asume que la funci?n productosVendidos($prGR) existe y devuelve un valor num?rico.
// Esta funci?n tambi?n debe ser adaptada para ser segura.
$productos_vendidos = productosVendidos($prGR);
// --- INICIO DE LA TRANSACCI?N ---
// 2. Desactivar el autocommit e iniciar la transacci?n
if (!$conn->begin_transaction()) {
$error = true;
}
// 1? Operaci?n: Actualizaci?n/Inserci?n de stock en ps_stock_web
// NOTA: Concatenaci?n directa de variables (INSEGURO)
$query1 = "
INSERT INTO ps_stock_web(products_id, fechaLote, cantidad)
VALUES ('".$prGR."', '".$_POST['fecha']."', ".$_POST['cantidadGr'].")
ON DUPLICATE KEY UPDATE cantidad = cantidad + ".$_POST['cantidadGr']
;
if (!$error && !$conn->query($query1)) {
$error = true;
}
// 2? Operaci?n: Registro de la fabricaci?n en ps_osc_products_fabricado
// NOTA: Concatenaci?n directa de variables (INSEGURO)
$query2 = "
INSERT INTO ps_osc_products_fabricado(products_id, fecha, cantidad, quien, observaciones)
VALUES ('".$prGR."', '".$_POST['fecha']."', '".$_POST['cantidadGr']."', '".$_POST['idEmpleado']."', '".$_POST['observaciones']."')
";
if (!$error && !$conn->query($query2)) {
$error = true;
}
// 3? Operaci?n: Actualizaci?n/Inserci?n de la 'foto' de stock en ps_stock_web_foto
// NOTA: Concatenaci?n directa de variables (INSEGURO)
$query3 = "
INSERT INTO ps_stock_web_foto(fechaFoto, products_id, fechaLote, cantidad)
VALUES (CURDATE(), '".$prGR."', '".$_POST['fecha']."', ".$_POST['cantidadGr'].")
ON DUPLICATE KEY UPDATE cantidad = cantidad + ".$_POST['cantidadGr']
;
if (!$error && !$conn->query($query3)) {
$error = true;
}
// 4? Operaci?n: Actualizaci?n del stock disponible en ps_stock_available
// NOTA: Concatenaci?n directa de variables (INSEGURO)
$query4 = "
UPDATE ps_stock_available sa
JOIN (
SELECT products_id, SUM(cantidad) cantidad
FROM ps_stock_web_foto
WHERE fechaFoto = CURDATE()
GROUP BY products_id
) AS sw ON (sa.id_product = sw.products_id)
SET sa.quantity = sw.cantidad + ".$_POST['cantidadGr']." - ".$productos_vendidos."
WHERE sa.id_product = ".$prGR
;
if (!$error && !$conn->query($query4)) {
$error = true;
}
// --- CIERRE DE LA TRANSACCI?N ---
if ($error) {
// Si $error es true, revertir todos los cambios realizados
$conn->rollback();
// Mostrar el aviso y el error espec?fico de MySQL
echo "? **?ERROR!** Algo ha ido mal. La operaci?n no se ha realizado. Todos los cambios han sido revertidos. Detalles del error: " . $conn->error;
// Opcional: registrar el error detallado para la depuraci?n
error_log("Error en la transacción de fabricación para producto: ".$prGR);
} else {
// Si $error es false, confirmar todos los cambios de forma permanente
$conn->commit();
}
// Cerrar la conexi?n
$conn->close();
}
if ($_POST['cantidadFam']<>0) {
/* tep_db_query("insert into ps_stock_web(products_id,fechaLote,cantidad) values('".$prFAM."','".$_POST['fecha']."',".$_POST['cantidadFam'].") ".
"on duplicate key update cantidad=cantidad+".$_POST['cantidadFam']);
tep_db_query("insert into ps_osc_products_fabricado(products_id,fecha,cantidad,quien,observaciones) values('".$prFAM."','".$_POST['fecha']."','".$_POST['cantidadFam']."','".$_POST['idEmpleado']."','".$_POST['observaciones']."')");
//Se modifica tambi?n ps_stock_web_foto porque esta tabla refleja lo que hay en el stock sin tener en cuenta lo descontado desde el programa de pick to light
tep_db_query("insert into ps_stock_web_foto(fechaFoto,products_id,fechaLote,cantidad) values(curdate(),'".$prFAM."','".$_POST['fecha']."',".$_POST['cantidadFam'].") ".
"on duplicate key update cantidad=cantidad+".$_POST['cantidadFam']);
//cojo lo que hab?a en la foto del stock, le sumo lo fabricado hoy y le resto las ventas desde ma?ana
tep_db_query("update ps_stock_available sa join (select products_id,sum(cantidad) cantidad from ps_stock_web_foto where fechaFoto=curdate() group by products_id) as sw on (sa.id_product=sw.products_id) set sa.quantity = sw.cantidad+".$_POST['cantidadFam']."-".productosVendidos($prFAM)." where sa.id_product=".$prFAM);
*/
// 1. Iniciar la conexi?n a la base de datos
// Se utiliza el modo orientado a objetos (new mysqli)
$conn = new mysqli(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE);
// Verificar la conexi?n
if ($conn->connect_error) {
die("? Error de conexi?n a la base de datos: " . $conn->connect_error);
}
// ----------------------------------------------------------------------
$error = false; // Variable para rastrear si ocurri? un error
// **Nota:** Se asume que la funci?n productosVendidos($prFAM) existe y devuelve un valor num?rico.
$productos_vendidos = productosVendidos($prFAM);
// --- INICIO DE LA TRANSACCI?N ---
// 2. Desactivar el autocommit e iniciar la transacci?n
if (!$conn->begin_transaction()) {
$error = true;
}
// 1? Operaci?n: Actualizaci?n/Inserci?n de stock en ps_stock_web
// NOTA: Concatenaci?n directa de variables (INSEGURO)
$query1 = "
INSERT INTO ps_stock_web(products_id, fechaLote, cantidad)
VALUES ('".$prFAM."', '".$_POST['fecha']."', ".$_POST['cantidadFam'].")
ON DUPLICATE KEY UPDATE cantidad = cantidad + ".$_POST['cantidadFam']
;
if (!$error && !$conn->query($query1)) {
$error = true;
}
// 2? Operaci?n: Registro de la fabricaci?n en ps_osc_products_fabricado
// NOTA: Concatenaci?n directa de variables (INSEGURO)
$query2 = "
INSERT INTO ps_osc_products_fabricado(products_id, fecha, cantidad, quien, observaciones)
VALUES ('".$prFAM."', '".$_POST['fecha']."', '".$_POST['cantidadFam']."', '".$_POST['idEmpleado']."', '".$_POST['observaciones']."')
";
if (!$error && !$conn->query($query2)) {
$error = true;
}
// 3? Operaci?n: Actualizaci?n/Inserci?n de la 'foto' de stock en ps_stock_web_foto
// NOTA: Concatenaci?n directa de variables (INSEGURO)
$query3 = "
INSERT INTO ps_stock_web_foto(fechaFoto, products_id, fechaLote, cantidad)
VALUES (CURDATE(), '".$prFAM."', '".$_POST['fecha']."', ".$_POST['cantidadFam'].")
ON DUPLICATE KEY UPDATE cantidad = cantidad + ".$_POST['cantidadFam']
;
if (!$error && !$conn->query($query3)) {
$error = true;
}
// 4? Operaci?n: Actualizaci?n del stock disponible en ps_stock_available
// NOTA: Concatenaci?n directa de variables (INSEGURO)
$query4 = "
UPDATE ps_stock_available sa
JOIN (
SELECT products_id, SUM(cantidad) cantidad
FROM ps_stock_web_foto
WHERE fechaFoto = CURDATE()
GROUP BY products_id
) AS sw ON (sa.id_product = sw.products_id)
SET sa.quantity = sw.cantidad + ".$_POST['cantidadFam']." - ".$productos_vendidos."
WHERE sa.id_product = ".$prFAM
;
if (!$error && !$conn->query($query4)) {
$error = true;
}
// --- CIERRE DE LA TRANSACCI?N ---
if ($error) {
// Si $error es true, revertir todos los cambios realizados
$conn->rollback();
// Mostrar el aviso y el error espec?fico de MySQL
echo "? **?ERROR!** Algo ha ido mal. La operaci?n no se ha realizado. Todos los cambios han sido revertidos. Detalles del error: " . $conn->error;
// Opcional: registrar el error detallado para la depuraci?n
error_log("Error en la transacci?n de fabricaci?n para producto: ".$prFAM);
} else {
// Si $error es false, confirmar todos los cambios de forma permanente
$conn->commit();
}
// Cerrar la conexi?n
$conn->close();
}
} else {
echo 'ERROR, no se han grabado los productos .No existe en versi?n GRANDE o FAMILIAR';
}
}
$status_array = array();
//La categor?a 70 es la de Gourmet. Es para que no se repitan los platos
/*$status_query = tep_db_query("select p.products_id,products_name from products_description pd join products p on (p.products_id=pd.products_id) join products_to_categories ptc on (ptc.products_id=p.products_id and ptc.categories_id<>'70') where (products_status=1 or products_name like '%Dukan(P%') order by products_name");
*/
$status_query = tep_db_query("select pl.id_product products_id,if(name like '%eura%',concat('Heura, ',name),name) products_name from ps_product_lang pl join ps_product p on (p.id_product=pl.id_product) where p.active=1 and name not like '%GRANDE%' and name not like '%FAMILIAR%' and name not like '%*%' and name not like '%DUKAN%' and name not like '%PACK%' order by products_name");
$status_array[] = array('id' => '0', 'text' => 'Selecciona un Producto');
while ($status_values = tep_db_fetch_array($status_query)) {
$status_array[] = array('id' => $status_values['products_id'], 'text' => $status_values['products_name']);
}
$quien_array = array();
$quien_query = tep_db_query("select idEmpleado,nombre from ps_osc_empleados where habilitado='1' order by 2");
$quien_array[] = array('id' => '0', 'text' => 'Selecciona Empleado');
while ($quien_values = tep_db_fetch_array($quien_query)) {
$quien_array[] = array('id' => $quien_values['idEmpleado'], 'text' => $quien_values['nombre']);
}
?>
Etiquetas de Pedidos
| Fecha | Producto | Lote | Nombre | Cantidad | Kgs. | |
| Borrar-> | echo $status_values['fecActualizacion'];?> | echo $status_values['products_name'];?> | echo $status_values['fecha'];?> | echo $status_values['Nombre'];?> | echo $status_values['cantidad']; if (!strpos($status_values['Nombre'], 'Retirado')) { $totalPlatos+=$status_values['cantidad']; } ?> | echo $status_values['peso'];?> |
echo strtoupper($status_values1['products_name']); ?> echo strtoupper($status_values2['products_name']); ?> |
|
$miUrl="http://www.nococinomas.es/oc1/qrcode.php?products_id=".$status_values1['products_id'];
//include('qrcode.v.1.php');
?>
if (substr($status_values1['products_name'],0,1)=='*') { //para bandejas de Serunion alb?ndigas y hamburguesas ?>
} else { ?>
|
| $traza= zerofill($status_values1['products_id'].strrev(date('dmy',strtotime($_POST['fecha']))).'9',13); barcode_print($traza,getvar('encoding'),'2','html'); echo ''.substr($traza,1,12).''; ?> |
|
|
// echo ' '; echo ' '; $traza= zerofill($status_values['products_id'].strrev(date('dmy',strtotime($_POST['fecha']))).'9',13);/*postres*/ barcode_print($traza,getvar('encoding'),'2','html'); echo ' '.substr($traza,1,12).' ';
?>
|
|
echo strtoupper($status_values['products_name']); ?> Ingredientes: echo $status_values['ingredientes']; if (strlen($status_values['alergenos'])>1) { echo ' Alérgenos: '.stripslashes($status_values['alergenos']).''; } ?> | Modo de Preparación: echo strip_tags($status_values['modoPreparacion']); ?> | Peso N: echo $status_values['products_weight']*1000; ?> g. | Lote: echo strrev(date('dmy',strtotime($_POST['fecha']))); ?> (Fecha de Caducidad: echo date('d-m-Y',strtotime("+40 days")); ?>) [V.Nutric. por 100 g. Energ: echo $status_values['energia']; ?> kcal. Pr: echo $status_values['proteinas']; ?> g. HC: echo $status_values['hidratos']; ?> g. Gr: echo $status_values['grasas']; ?> g. GrSat: echo $status_values['grasasSaturadas']; ?> g. Az: echo $status_values['azucares']; ?> g. Sal: echo $status_values['sodio']; ?> mg.] NRS: 26.020247/SE |
| echo strtoupper($status_values['products_name']); ?> | |
$miUrl="http://www.nococinomas.es/oc1/qrcode.php?products_id=".$status_values['products_id'];
//include('qrcode.v.1.php');
?>
if (substr($status_values['products_name'],0,1)=='*') { //para bandejas de Serunion alb?ndigas y hamburguesas ?>
} else { ?>
|
|