summaryrefslogtreecommitdiff
path: root/bin/livre_recettes.php
blob: 9e39f3929df16e7dfd20a7f9d9499a3e49eef1aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env php
<?php
// bin/livre_recettes.php
//
// pour l'obtenir:
// php bin/livre_recettes.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
}