Files
ventas_php/crons/reporte-inventario2.php
nickpons666 ab6480f379 FASE 3 COMPLETADA: Módulos actualizados sin hardcodeos
ACTUALIZACIONES REALIZADAS:
 Eliminados hardcodeos en 13 archivos crons/
 Actualizado ajax/facturas.php para uso dinámico
 Implementada lógica predeterminada para crons (empresaId=1)
 Sistema respeta sesión de usuario dinámica
 Compatible con funcionamiento independiente de crons

VERIFICACIONES:
 No quedan hardcodeos 'empresaId = 15'
 Base de datos dinámica: 1→ventas_nm, >1→ventas_nm{id}
 Crons usan predeterminado si no hay sesión
 AJAX hereda empresaId del login

ARCHIVOS MODIFICADOS:
- crons/*.php (13 archivos actualizados)
- ajax/facturas.php (eliminado hardcodeo)
- test_fase3.php (verificación de funcionamiento)
- md/plan-accion-multi-empresa.md (actualizado)

PRÓXIMO: Fase 4 - Pruebas y validación final
2026-01-07 19:09:26 -06:00

127 lines
3.6 KiB
PHP
Executable File

<?php
include_once('/home/novomoda/public_html/sistema/init.php');
include_once('/home/novomoda/public_html/sistema/config.php');
include_once(DOC_ROOT.'/libraries.php');
if(!isset($_SESSION))
session_start();
// CAMBIO CRÍTICO: Eliminar hardcodeo - usar valor dinámico o predeterminado
// Los crons ahora deben recibir empresaId como parámetro o usar predeterminado
if(!isset($_SESSION['empresaId']) || empty($_SESSION['empresaId'])) {
$_SESSION['empresaId'] = 1; // Valor predeterminado para crons
}
$start = microtime(true);
$reportes->setIdSuc(0);
$resSuc = $reportes->EnumSucursales();
$sql = 'SELECT proveedorId FROM proveedor
ORDER BY proveedorId ASC
LIMIT 40,40';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$proveedores = $util->DBSelect($_SESSION['empresaId'])->GetResult();
foreach($proveedores as $prov){
$proveedorId = $prov['proveedorId'];
$sqlFilter = ' AND p.proveedorId = '.$proveedorId;
$dispGral = 0;
$totalGral = 0;
$totalGralPV = 0;
$sucursales = array();
foreach($resSuc as $res){
$sql = 'SELECT prov.nombre, p.productoId, p.costo, p.codigoBarra, p.modelo, p.precioVentaIva,
p.prodCatId, p.prodSubcatId,
SUM( i.cantidad ) AS disponible, (SUM( i.cantidad ) * p.costo) AS total,
(SUM( i.cantidad ) * p.precioVentaIva) AS totalPV,
prov.nombre AS proveedor
FROM producto p, inventario i, proveedor prov
WHERE p.productoId = i.productoId
AND p.proveedorId = prov.proveedorId
AND i.sucursalId = '.$res['sucursalId'].'
'.$sqlFilter.'
AND i.status = "Disponible"
GROUP BY i.productoId
ORDER BY p.codigoBarra ASC';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$resProductos = $util->DBSelect($_SESSION['empresaId'])->GetResult();
$totalSinDesc = 0;
$productos = array();
foreach($resProductos as $prod){
$prod['nombre'] = utf8_encode($prod['nombre']);
$prod['modelo'] = utf8_encode($prod['modelo']);
$inventario->setSucursalId($res['sucursalId']);
$inventario->setProductoId($prod['productoId']);
$vtasSinDesc = $inventario->VentasDescontadas();
$totalSinDesc += $vtasSinDesc;
$prod['disponible'] -= $vtasSinDesc;
$productos[] = $prod;
}
$res['productos'] = $productos;
//Obtenemos los Totales
$sql = 'SELECT SUM(i.cantidad) AS disponible, SUM(i.cantidad * p.costo) AS total,
SUM(i.cantidad * p.precioVentaIva) AS totalPV
FROM producto p, inventario i, proveedor prov
WHERE p.productoId = i.productoId
AND p.proveedorId = prov.proveedorId
AND i.sucursalId = '.$res['sucursalId'].'
'.$sqlFilter.'
AND i.status = "Disponible"';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$row = $util->DBSelect($_SESSION['empresaId'])->GetRow();
$row['disponible'] -= $totalSinDesc;
$res['disponible'] = $row['disponible'];
$res['total'] = $row['total'];
$res['totalPV'] = $row['totalPV'];
$dispGral += $row['disponible'];
$totalGral += $row['total'];
$totalGralPV += $row['totalPV'];
$sucursales[] = $res;
}//foreach
$serialize = urlencode(serialize($sucursales));
$sql = "REPLACE INTO `reporteInvBest` (
`proveedorId` ,
`fecha` ,
`reporte` ,
`sucursal`
)
VALUES (
'".$proveedorId."',
'".date("Y-m-d H:i:s")."',
'".$serialize."',
'')"
;
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$util->DBSelect($_SESSION['empresaId'])->InsertData();
}//foreach
echo 'Done';
$end = microtime(true);
echo "Tiempo de Ejecucion: ";
echo $time = number_format(($end - $start), 2);
exit;
?>