#!/usr/bin/env php bin/livre_recettes.csv // // en ouvrant le CSV, choisir le pipe | comme séparateur // chemins des dossiers et nom de la base require('src/files.php'); require('src/Config.php'); // lit le config.ini et gère certaines erreurs (exemple les / aux chemins manquants) Config::readFile('config/config.ini'); Config::hydrate(); // créer les dossiers si nécéssaire makeFolder(Config::$db_path); makeFolder(Config::$latex_path); makeFolder(Config::$pdf_path); //require 'src/model/doctrine-bootstrap.php'; require __DIR__ . '/../src/model/doctrine-bootstrap.php'; // chemin absolu // année en paramètre $years = []; try{ if($argc === 1){ $years[0] = new DateTime()->format('Y'); } elseif($argc > 1){ for($i = 0; $i < $argc - 1; $i++){ $year = filter_var($argv[$i + 1], FILTER_VALIDATE_INT); if($year === false){ throw new InvalidArgumentException("Année invalide: saisir un ou plusieurs nombres entiers ou aucun\n"); } $years[$i] = (string)$year; } } else{ throw new LogicException('Erreur de logique: $argc ne peut être inférieur à 1' . "\n"); } } catch(Exception $e){ echo $e->getMessage(); die; } // requête foreach($years as $year){ $date_debut = $year . '-01-01'; $date_fin = $year . '-12-31'; $debut = new DateTime($date_debut, new DateTimeZone('Europe/Paris')); $fin = new DateTime($date_fin, new DateTimeZone('Europe/Paris'));; $fin->setTime(23, 59, 59); $dql = 'SELECT n FROM Prestation n WHERE n.date >= :debut AND n.date <= :fin'; $bulk_data = $entityManager ->createQuery($dql) ->setParameter('debut', $debut->getTimestamp()) ->setParameter('fin', $fin->getTimestamp()) ->getResult(); // affichage $result = "client|date|type|mode paiement|débours|total HT|salaire CESU|code presta\n"; foreach($bulk_data as $presta){ if($presta->getTypePresta() !== 'devis' && $presta->getTypePresta() !== 'non_vendue'){ $date = new DateTime()->setTimestamp($presta->getDate()); $result .= $presta->getClient()->getPrenomNom() . '|' . $date->format('d/m/Y') . '|' . $presta->getTypePresta() . '|' . $presta->getModePaiement() . '|'; if($presta->getTypePresta() === 'facture'){ $result .= $presta->getFacture()->getTotalPieces() . '|'; $result .= $presta->getFacture()->getTotalHT() . '||'; } elseif($presta->getTypePresta() === 'cesu'){ $result .= '||' . $presta->getCESU()->getSalaire() . '|'; } elseif($presta->getTypePresta() === 'location'){ $result .= '|' . (string)($presta->getLocation()->getLoyer() * (float)$presta->getLocation()->getLoyersPayes()) . '||'; } $result .= $presta->getCodePresta() . "\n"; } } file_put_contents('data/livre_recettes_' . $year . '.csv', $result); // sortie fichier echo $result . "\n"; // sortie console }