Jump to content

Lenteur enregistrement commande avec génération de fichier csv


Recommended Posts

Bonjour à tous,

 

Nous avons mis une fonction de génération de fichier csv lors de l'enregistrement de commande sur prestahop.

J'ai ajouté une fonction qui génère le fichier dans \controllers\front\OrderConfirmationController.php, le fichier est bien généré lorsque le client envoi sa commande sur prestashop mais il y a une lenteur lors de l'enregistrement. 

Je souhaiterais savoir si le souci c'est ma fonction, je ne l'ai pas mis au bon endroit ? 

Je suis sur prestashop 1.7.8.7 actuellement.

Voici la fonction

 

 

<?
public function createCsvFile($array_info) {
    $Object = new DateTime();  
    $Date = $Object->format("d-m-Y"); 
    $email = $array_info['email'];

    // Connexion à la base de données
    $conn = new mysqli("localhost", "root", "", "ps_db");
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    $stmt = $conn->prepare("SELECT type_livraison FROM ps_customer WHERE email = ?");
    $stmt->bind_param("s", $email);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows > 0) {
        $row = $result->fetch_assoc();
        $type_livraison = $row["type_livraison"];

        $this->context->smarty->assign([
            'type_livraison' => $type_livraison,
        ]);
    } else {
        echo "no results";
        return;
    }
    $stmt->close();
    $conn->close();

    $path = str_replace(["\\", "//"], "/", getcwd()) . "/export/commande";
    if (!is_dir($path)) {
        mkdir($path, 0777, true); // Crée le répertoire si nécessaire
    }

    $nomFich = "$path/Export_" . $array_info['reference'] . "_$Date.csv";

    // Supprimer le fichier existant, si nécessaire
    if (is_file($nomFich)) {
        unlink($nomFich);
    }

    $tab = [
        ['E', $array_info['reference'], $Date, $code, $array_info['firstname'] . ' ' . $array_info['lastname'], $array_info['email'], $array_info['id']]
    ];

    foreach ($array_info['products'] as $product) {
        $tab[] = [
            'L',
            $product['name'],
            $product['reference'],
            $product['cart_quantity'],
            $product['price']
        ];
    }

    $file = fopen($nomFich, "w");
    if ($file) {
        fprintf($file, chr(0xEF) . chr(0xBB) . chr(0xBF)); 
        foreach ($tab as $ligne) {
            fputcsv($file, $ligne, ";");
        }
        fclose($file);
        return 'fichier créé';
    } else {
        return 'erreur';
    }
}

Si quelqu'un a une idée s'il vous plaît? 

Merci d'avance :)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...