setIdSuc(0); $resSuc = $reportes->EnumSucursales(); $sql = 'SELECT proveedorId FROM proveedor ORDER BY proveedorId ASC LIMIT 0,40'; $util->DBSelect($_SESSION['empresaId'])->setQuery($sql); $proveedores = $util->DBSelect($_SESSION['empresaId'])->GetResult(); $porcentajes = array(); $totalPorcentajes = array(); foreach($proveedores as $res){ unset($_SESSION['array']); $sql = "SELECT COUNT(*) FROM producto WHERE proveedorId = '".$res['proveedorId']."'"; $util->DBSelect($_SESSION['empresaId'])->setQuery($sql); $total = $util->DBSelect($_SESSION['empresaId'])->GetSingle(); $sql = "SELECT COUNT(*) FROM inventario WHERE proveedorId = '".$res['proveedorId']."' AND status = 'activo'"; $util->DBSelect($_SESSION['empresaId'])->setQuery($sql); $totalActivos = $util->DBSelect($_SESSION['empresaId'])->GetSingle(); $sql = "SELECT COUNT(*) FROM inventario WHERE proveedorId = '".$res['proveedorId']."' AND status = 'activo'"; $util->DBSelect($_SESSION['empresaId'])->setQuery($sql); $totalActivos = $util->DBSelect($_SESSION['empresaId'])->GetSingle(); $sql = "SELECT p.productoId, p.nombre FROM producto p LEFT JOIN inventario i ON p.productoId = i.productoId WHERE p.proveedorId = '".$res['proveedorId']."' AND i.status = 'activo'"; $util->DBSelect($_SESSION['empresaId'])->setQuery($sql); $productos = $util->DBSelect($_SESSION['empresaId'])->GetResult(); $totalExistencia = 0; foreach($productos as $producto) { $_SESSION['array'][] = array( 'productoId' => $producto['productoId'], 'existencia' => 0, 'nombre' => $producto['nombre'], 'provedor' => $producto['productoId'] ); } $sql = 'SELECT productoId, SUM(existencia) as total FROM inventario WHERE proveedorId = "'.$res['proveedorId'].'" AND status = "activo" GROUP BY productoId'; $util->DBSelect($_SESSION['empresaId'])->setQuery($sql); $existencias = $util->DBSelect($_SESSION['empresaId'])->GetResult(); $i = 0; $totalInventario = 0; $index = 0; foreach($existencias as $exis){ foreach($_SESSION['array'] as $key => $val){ if($exis['productoId'] == $_SESSION['array'][$key]['productoId']){ $_SESSION['array'][$key]['existencia'] = $exis['total']; break; } } $totalInventario = $totalInventario + $exis['total']; $i++; } $porcentaje = ($totalActivos > 0) ? (($totalInventario > 0) ? round((($totalActivos/$totalInventario)*100),0) : 0) : 0; $totalPorcentajes[] = array('porcentaje' => $porcentaje, 'totalProductos' => $totalActivos, 'totalInventario' => $totalInventario); $porcentajes[$res['proveedorId']] = array( 'porcentaje' => $porcentaje, 'totalProductos' => $totalActivos, 'totalInventario' => $totalInventario, 'proveedorId' => $res['proveedorId'] ); //imprimir $util->DBSelect($_SESSION['empresaId'])->setQuery("SELECT rfc FROM rfc LIMIT 1"); $rfc = $util->DBSelect($_SESSION['empresaId'])->GetSingle(); $pdf = new PDF_MC_Table('L','mm','Letter'); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('Helvetica','',8); $pdf->SetMargins(10,10,10); $pdf->SetAutoPageBreak(TRUE,5); $pdf->Image('../images/logo.png',10,10,20); $pdf->SetFont('Helvetica','',8); $pdf->SetXY(170,10); $pdf->Cell(40,5,'Fecha: '.date('d/m/Y'),0,1,'R'); $pdf->SetXY(170,15); $pdf->Cell(40,5,'Hora: '.date('H:i:s'),0,1,'R'); $pdf->SetFont('Helvetica','B',12); $pdf->SetXY(10,30); $pdf->Cell(190,6,'Reporte de Inventario por Proveedor',0,1,'C'); $pdf->SetFont('Helvetica','',8); $pdf->SetXY(10,36); $pdf->Cell(190,6,utf8_decode('RFC: '.$rfc),0,1,'L'); $sql = 'SELECT nombre FROM proveedor WHERE proveedorId = '.$res['proveedorId']; $util->DBSelect($_SESSION['empresaId'])->setQuery($sql); $nombreProveedor = $util->DBSelect($_SESSION['empresaId'])->GetSingle(); $pdf->SetXY(10,42); $pdf->Cell(190,6,utf8_decode('Proveedor: '.$nombreProveedor),0,1,'L'); $pdf->SetXY(10,48); $pdf->Cell(190,6,utf8_decode('Porcentaje de productos con existencia: '.$porcentaje.'%'),0,1,'L'); $pdf->SetXY(10,54); $pdf->Cell(190,6,utf8_decode('Total de productos: '.$totalActivos),0,1,'L'); $pdf->SetXY(10,60); $pdf->Cell(190,6,utf8_decode('Total de existencia: '.$totalInventario),0,1,'L'); $pdf->Ln(10); $pdf->AddCol(15,'C','Clave'); $pdf->AddCol(90,'L','Producto'); $pdf->AddCol(15,'R','Existencia'); $pdf->AddCol(25,'L','Sucursal'); $pdf->AddCol(15,'R','Costo'); $pdf->AddCol(15,'R','Costo Total'); $pdf->AddCol(20,'L','Fech. Registro'); $pdf->AddCol(15,'R','Status'); $pdf->AddCol(20,'L','Estatus'); $pdf->AddCol(10,'C','Foto'); $pdf->TableHeader($_SESSION['array']); $pdf->TableContent($_SESSION['array']); $pdf->Output("../reportes/pdf/reporte-inventario-".$nombreProveedor.".pdf","F"); unset($_SESSION['array']); } $tiempo = round((microtime(true) - $start),2); $pdf = new PDF_MC_Table('L','mm','Letter'); $pdf->Open(); $pdf->AddPage(); $pdf->SetFont('Helvetica','',8); $pdf->SetMargins(10,10,10); $pdf->SetAutoPageBreak(TRUE,5); $pdf->Image('../images/logo.png',10,10,20); $pdf->SetFont('Helvetica','',8); $pdf->SetXY(170,10); $pdf->Cell(40,5,'Fecha: '.date('d/m/Y'),0,1,'R'); $pdf->SetXY(170,15); $pdf->Cell(40,5,'Hora: '.date('H:i:s'),0,1,'R'); $pdf->SetFont('Helvetica','B',12); $pdf->SetXY(10,30); $pdf->Cell(190,6,'Resumen de Inventario por Proveedor',0,1,'C'); $pdf->SetFont('Helvetica','',8); $pdf->SetXY(10,36); $pdf->Cell(190,6,utf8_decode('RFC: '.$rfc),0,1,'L'); $pdf->Ln(10); $pdf->AddCol(15,'C','Proveedor'); $pdf->AddCol(90,'L','Nombre'); $pdf->AddCol(25,'R','% con existencia'); $pdf->AddCol(15,'R','Productos'); $pdf->AddCol(15,'R','Inventario'); $pdf->AddCol(25,'L','Status'); $pdf->AddCol(15,'R','Costo Total'); $pdf->AddCol(15,'R','Utilidad'); $pdf->AddCol(15,'R','Precio Vta'); $pdf->AddCol(15,'R','% Utilidad'); $pdf->TableHeader($totalPorcentajes); $pdf->TableContent($totalPorcentajes); $pdf->Output("../reportes/pdf/reporte-inventario-resumen.pdf","F"); //enviar correo $util->DBSelect($_SESSION['empresaId'])->setQuery("SELECT * FROM rfc LIMIT 1"); $rfc = $util->DBSelect($_SESSION['empresaId'])->GetSingle(); $util->DBSelect($_SESSION['empresaId'])->setQuery("SELECT email FROM rfc LIMIT 1"); $email = $util->DBSelect($_SESSION['empresaId'])->GetSingle(); $subject = "Reporte de Inventario por Proveedor - ".$rfc; $body = "Reporte de Inventario por Proveedor generado automaticamente\n"; $body .= "Fecha: ".date('d/m/Y H:i:s')."\n"; $body .= "Tiempo de ejecución: ".$tiempo." segundos\n"; $body .= "Total de proveedores: ".count($proveedores)."\n"; $body .= "Total de productos: ".array_sum(array_column($totalPorcentajes,'totalProductos'))."\n"; $body .= "Total de existencia: ".array_sum(array_column($totalPorcentajes,'totalInventario'))."\n"; $mail = new PHPMailer(true); try { $mail->SMTPDebug = 0; $mail->isSMTP(); $mail->Host = SMTP_HOST; $mail->SMTPAuth = true; $mail->Username = SMTP_USER; $mail->Password = SMTP_PASS; $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = SMTP_PORT; $mail->setFrom(SMTP_USER, 'Reportes Automáticos'); $mail->addAddress($email, 'Reportes'); $mail->isHTML(false); $mail->Subject = $subject; $mail->Body = $body; $mail->addAttachment("../reportes/pdf/reporte-inventario-resumen.pdf"); $mail->send(); } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; } ?>