<?php
namespace App\Controller;
use ZipArchive;
use App\Entity\Tva;
use App\Entity\User;
use App\Entity\Gamme;
use App\Entity\Media;
use App\Entity\Poids;
use App\Entity\Stock;
use App\Entity\Client;
use App\Entity\Famille;
use App\Entity\Produit;
use App\Entity\Commande;
use App\Entity\Catalogue;
use App\Entity\Reglement;
use App\Entity\Expedition;
use App\Entity\Pmarketing;
use App\Entity\StockPerso;
use App\Entity\UniteVente;
use App\Entity\Nomenclature;
use App\Entity\WebCatalogue;
use App\Entity\CategorieTarif;
use App\Entity\Caracteristique;
use App\Entity\AdresseLivraison;
use Symfony\Component\Mime\Email;
use Twig\Loader\FilesystemLoader;
use App\Entity\AdresseFacturation;
use App\Entity\CategorieTarifClient;
use Symfony\Component\Mailer\Mailer;
use App\Entity\CaracteristiqueLibelle;
use App\Service\PanierService;
use Symfony\Component\Mailer\Transport;
use Symfony\Bridge\Twig\Mime\BodyRenderer;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Constraints\Date;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\Mailer\EventListener\MessageListener;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Twig\Environment as TwigEnvironment;
class DefaultController extends AbstractController
{
private $panierService;
private $mailer;
public function __construct(PanierService $panierService, MailerInterface $mailer)
{
$this->panierService = $panierService;
// 1
// $this->mailer = $mailer;
// 2
// $transport = Transport::fromDsn('sendmail://default');
// $this->mailer = new Mailer($transport);
// 3
$loader = new FilesystemLoader('../templates');
// $twig = new TwigEnvironment();
$twig = new TwigEnvironment($loader);
$messageListener = new MessageListener(null, new BodyRenderer($twig));
$eventDispatcher = new EventDispatcher();
$eventDispatcher->addSubscriber($messageListener);
// $transport = Transport::fromDsn('smtp://localhost', $eventDispatcher);
// $mailer = new Mailer($transport, null, $eventDispatcher);
$transport = Transport::fromDsn('sendmail://default', $eventDispatcher);
$this->mailer = new Mailer($transport, null, $eventDispatcher);
}
/**
* @Route("/", name="default")
*/
public function index(): Response
{
if (! $this->isGranted('ROLE_FILIALE')) {
return $this->redirectToRoute("login");
}
if ($this->isGranted('ROLE_SUPER_ADMIN')) {
return $this->redirectToRoute("maisons_mere_index");
}
if ($this->isGranted('ROLE_MAISON')) {
return $this->redirectToRoute("client_show_filiale_for_maisonmere");
}
return $this->redirectToRoute("produit_show_mercuriale");
}
/**
* @Route("/import/crypt", name="import_crypt")
*/
public function importCrypt(): Response
{
echo "<pre>";
$key = "Multypack2021";
$md5 = md5($key);
$iv = substr($md5, 0, 16);
var_dump($md5);
$base64 = "plpAj6EwTJ4u9CYKrX5TfUt/R7Otoy3zNNQ8uDCrn0xmbs6UQlV6MnVH+8y/2pZF";
// var_dump(bin2hex($base64));
$aes128 = base64_decode($base64);
// var_dump(bin2hex($aes128));
$decrypte = openssl_decrypt($base64, "aes-128-cbc", $md5,OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING , $iv);
var_dump($decrypte);
$decrypte = openssl_decrypt($aes128, "aes-128-cbc", $md5,OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING , $iv);
var_dump($decrypte);
var_dump("-------------------------------------------------------");
// $method = "aes128";
// $iv = substr($aes128, 0, 16);
// var_dump($iv);
// $hash = substr($aes128, 16, 32);
// var_dump($hash);
// $ciphertext = substr($aes128, 48);
// var_dump($ciphertext);
// $open = openssl_decrypt($ciphertext, $method, $key, OPENSSL_RAW_DATA, $iv);
// var_dump($open);
$cipher = "aes-256-cbc";
// Clef de cryptage
$encryption_key = "Multypack2021";
// Récupère la longueur cipher du vecteur d'initialisation.
$iv_size = openssl_cipher_iv_length($cipher);
// Génère une chaine pseudo-aléatoire d'octets
$iv = openssl_random_pseudo_bytes($iv_size);
// Data to encrypt
$data = "Projet Multypack";
$encrypted_data = openssl_encrypt($data, $cipher, $encryption_key, 0, $iv);
echo "Texte crypté : " . $encrypted_data."<br>";
$encrypted_data = base64_encode($encrypted_data);
$encrypted_data = base64_decode($encrypted_data);
//Decrypt data
$decrypted_data = openssl_decrypt($encrypted_data, $cipher, $encryption_key, 0, $iv);
echo "Texte décrypté: " . $decrypted_data;
echo "</pre>";
exit;
}
/**
* @Route("/import/clients", name="import_clients")
*/
public function importClients(): Response
{
$entityManager = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("clients"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
$arrayFilialesSansMere = [];
// Les references SAGE qui sont dans le fichier Excel
$ref_fichier = [];
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
if($ligne != 0){
$tab = array_map("utf8_encode", $tab); //added
if ($tab[0] != "" ){
$client = $entityManager->getRepository(Client::class)->findOneByReferenceSage($tab[0]);
//New ou edit client
if($client == null){
$client = new Client($tab[0], $tab[1],$tab[5]);
}else{
$client->setReferenceSage($tab[0]); // Pas besoin ?
$client->setRegroupement($tab[5]);
$client->setNom(trim($tab[1]));
}
$client->setActif(true);
$entityManager->persist($client);
$entityManager->flush();
//Si 0 != 2 alors c'est une filiale
if( $tab[0] != $tab[2]){
$maisonMere = $entityManager->getRepository(Client::class)->findOneBy(array("referenceSage"=>$tab[2],"maisonMere"=>null));
//Si mere existe on ajoute
if($maisonMere != null){
$maisonMere->addFiliale($client);
$maisonMere->setCodeCentral($tab[2]);
$entityManager->persist($client);
$entityManager->persist($maisonMere);
$entityManager->flush();
//Sinon on met l'id dans un tableau en attendant
}else{
$arrayFilialesSansMere[$tab[2]][] = $tab[0];
}
}
array_push($ref_fichier, $client->getReferenceSage());
}
}
$ligne++;
}
fclose($fic);
//Parcours des filiales ajoutées avant leurs maison mere
foreach ($arrayFilialesSansMere as $refMere => $sousTab) {
$maisonMere = $entityManager->getRepository(Client::class)->findOneBy(array("referenceSage"=>$refMere,"maisonMere"=>null));
if($maisonMere != null){
foreach ($sousTab as $refFiliale) {
$filiale = $entityManager->getRepository(Client::class)->findOneBy(array("referenceSage"=>$refFiliale));
if($filiale != null){
$maisonMere->addFiliale($filiale);
$entityManager->persist($maisonMere);
$entityManager->persist($filiale);
$entityManager->flush();
}
}
}
}
$all_items = $entityManager->getRepository(Client::class)->findAll();
foreach ($all_items as $item) {
if ( ! in_array($item->getReferenceSage(), $ref_fichier) ) {
// $entityManager->remove($item);
$item->setActif(false);
$entityManager->persist($item);
$entityManager->flush();
}
}
return new Response('Ok ' . $local_file);
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/adr", name="import_adresses")
*/
public function importAdresses(): Response
{
$entityManager = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("adresses"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
// Les references SAGE qui sont dans le fichier Excel
$ref_fichier = [];
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
if($ligne != 0){
$tab = array_map("utf8_encode", $tab); //added
if ($tab[1] != "" ){
$client = $entityManager->getRepository(Client::class)->findOneByReferenceSage($tab[1]);
if($tab[2] =="L"){
$livraison = $entityManager->getRepository(AdresseLivraison::class)->findOneByReferenceSage($tab[0]);
// On évite de créer 2 fois la même adresse pour le client
if ($livraison == null){
$livraison = new AdresseLivraison();
$livraison->setReferenceSage($tab[0]);
$livraison->setClient($client);
}
$livraison->setRue($tab[4]);
$livraison->setComplement($tab[5]);
$livraison->setCodePostal($tab[6]);
$livraison->setVille($tab[7]);
$livraison->setActif(true);
$entityManager->persist($livraison);
$entityManager->persist($client);
$entityManager->flush();
array_push($ref_fichier, $livraison->getReferenceSage());
}
if($tab[2] =="F" || $tab[2] == "L" ){
$facturation = $entityManager->getRepository(AdresseFacturation::class)->findOneByReferenceSage($tab[0]);
if ($facturation == null){
$facturation = new AdresseFacturation();
$facturation->setReferenceSage($tab[0]);
$facturation->setClient($client);
}
$facturation->setRue($tab[4]);
$facturation->setComplement($tab[5]);
$facturation->setCodePostal($tab[6]);
$facturation->setVille($tab[7]);
$facturation->setActif(true);
$entityManager->persist($facturation);
$entityManager->persist($client);
$entityManager->flush();
array_push($ref_fichier, $facturation->getReferenceSage());
}
}
}
$ligne++;
}
fclose($fic);
$all_livraison = $entityManager->getRepository(AdresseLivraison::class)->findAll();
$all_facturation = $entityManager->getRepository(AdresseFacturation::class)->findAll();
$all_items = array_merge($all_livraison, $all_facturation);
foreach ($all_items as $item) {
if ( ! in_array( $item->getReferenceSage(), $ref_fichier ) ) {
$item->setActif(false);
$entityManager->persist($item);
$entityManager->flush();
}
}
return new Response('Ok');
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/libelles", name="import_libelles")
*/
public function importLibelles(): Response
{
$entityManager = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("LIBELLES"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$entityManager = $this->getDoctrine()->getManager();
$ligne = 0;
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
if($ligne != 0){
$tab = array_map("utf8_encode", $tab); //added
$table =$tab[0];
$idSage =$tab[1];
$libelle =$tab[2];
$info =$tab[3];
if ($table != "" ){
if($table == "CARACTERISTIQUE"){
if($idSage != ""){
$unit = $entityManager->getRepository(Caracteristique::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Caracteristique();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "CATALOGUE"){
if($idSage != ""){
$unit = $entityManager->getRepository(Catalogue::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Catalogue();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "CATEGORIETARIF"){
if($idSage != ""){
$unit = $entityManager->getRepository(CategorieTarif::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new CategorieTarif();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "EXPEDITION"){
if($idSage != ""){
$unit = $entityManager->getRepository(Expedition::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Expedition();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "FAMILLE"){
if($idSage != ""){
$unit = $entityManager->getRepository(Famille::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Famille();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "GAMME"){
if($idSage != ""){
$unit = $entityManager->getRepository(Gamme::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Gamme();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "MEDIA"){
if($idSage != ""){
$unit = $entityManager->getRepository(Media::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Media();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "NOMENCLATURE"){
if($idSage != ""){
$unit = $entityManager->getRepository(Nomenclature::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Nomenclature();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "PMARKETING"){
if($idSage != ""){
$unit = $entityManager->getRepository(Pmarketing::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Pmarketing();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "POIDS"){
if($idSage != ""){
$unit = $entityManager->getRepository(Poids::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Poids();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "REGLEMENT"){
if($idSage != ""){
$unit = $entityManager->getRepository(Reglement::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Reglement();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "STOCK"){
if($idSage != ""){
$unit = $entityManager->getRepository(Stock::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Stock();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "TVA"){
if($idSage != ""){
$unit = $entityManager->getRepository(Tva::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new Tva();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "UNITEVENTE"){
if($idSage != ""){
$unit = $entityManager->getRepository(UniteVente::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new UniteVente();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
if($table == "WEBCATALOGUE"){
if($idSage != ""){
$unit = $entityManager->getRepository(WebCatalogue::class)->findOneByIdMulty($idSage);
if($unit != null){
$unit->setNom($libelle);
$unit->setInfo($info);
}else{
$unit = new WebCatalogue();
$unit->setNom($libelle);
$unit->setIdMulty($idSage);
$unit->setInfo($info);
}
$entityManager->persist($unit);
}
}
}
$entityManager->flush();
}
$ligne++;
}
fclose($fic);
return new Response('Ok');
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/produits", name="import_produits")
*/
public function importProduit(): Response
{
$entityManager = $this->getDoctrine()->getManager();
/**
* On copie le dernier fichier correspond au type entre parenthèses à partir du serveur dans un dossier local de /public/
* On récupère le nom du dernier fichier
*/
$local_file = $this->getDernierFichier("ARTICLES"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
$arrayFilialesSansMere = [];
// Les references SAGE qui sont dans le fichier Excel
$ref_fichier = [];
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
$tab = array_map("utf8_encode", $tab);
if($ligne != 0){
$produit = $entityManager->getRepository(Produit::class)->findOneByReferenceSage($tab[0]);
if($produit == null){
$produit = new Produit();
$produit->setReferenceSage($tab[0]);
}
$produit->setNom($tab[2]);
$produit->setDescri($tab[3]);
$produit->setDescription($tab[4]);
$entityManager->persist($produit);
$entityManager->flush();
//Famille
if($tab[9] != ""){
$codeFamille = $entityManager->getRepository(Famille::class)->findOneByIdMulty(trim($tab[9]));
if($codeFamille != null){
$codeFamille->addProduit($produit);
$entityManager->persist($produit);
$entityManager->persist($codeFamille);
}
}
//Catalogue
if($tab[10] != ""){
$packaging = $entityManager->getRepository(Catalogue::class)->findOneByIdMulty($tab[10]);
if($packaging != null){
$packaging->addProduitPackaging($produit);
$entityManager->persist($produit);
$entityManager->persist($packaging);
}
}
if($tab[11] != ""){
$matiere = $entityManager->getRepository(Catalogue::class)->findOneByIdMulty($tab[11]);
if($matiere != null){
$matiere->addProduitMatiere($produit);
$entityManager->persist($produit);
$entityManager->persist($matiere);
}
}
if($tab[12] != ""){
$type = $entityManager->getRepository(Catalogue::class)->findOneByIdMulty($tab[12]);
if($type != null){
$type->addProduitType($produit);
$entityManager->persist($produit);
$entityManager->persist($type);
}
}
if($tab[13] != ""){
$couleur = $entityManager->getRepository(Catalogue::class)->findOneByIdMulty($tab[13]);
if($couleur != null){
$couleur->addProduitCouleur($produit);
$entityManager->persist($produit);
$entityManager->persist($couleur);
}
}
//Nomenclature
if($tab[14] != ""){
$nomenclature = $entityManager->getRepository(Nomenclature::class)->findOneByIdMulty($tab[14]);
if($nomenclature != null){
$nomenclature->addProduit($produit);
$entityManager->persist($produit);
$entityManager->persist($nomenclature);
}
}
//Gamme
if($tab[15] != ""){
$gamme = $entityManager->getRepository(Gamme::class)->findOneByIdMulty(trim($tab[15]));
if($gamme != null){
$gamme->addProduit($produit);
$entityManager->persist($produit);
$entityManager->persist($gamme);
}
}
//Prix unitaire
$produit->setPrixUnitaireHT($tab[16]);
$prixVenteC = $tab[16];
$uniteVenteC = null;
//UniteVente
if($tab[17] != ""){
$uniteVente = $entityManager->getRepository(UniteVente::class)->findOneByIdMulty($tab[17]);
if($uniteVente != null){
$uniteVente->addProduit($produit);
$entityManager->persist($produit);
$entityManager->persist($uniteVente);
}
$uniteVenteC = $uniteVente->getIdMulty();
}
//Poids
$produit->setPoids($tab[19]);
$poidsNetC = $tab[19];
$unitePoidsC = null;
//Poids unite
if($tab[20] != ""){
$poids = $entityManager->getRepository(Poids::class)->findOneByIdMulty($tab[20]);
if($poids != null){
$poids->addProduit($produit);
$entityManager->persist($produit);
$entityManager->persist($poids);
}
$unitePoidsC = $poids->getNom();
}
//Stock
if($tab[21] != ""){
$stock = $entityManager->getRepository(Stock::class)->findOneByIdMulty($tab[21]);
if($stock != null){
$stock->addProduit($produit);
$entityManager->persist($produit);
$entityManager->persist($stock);
}
}
//WebCatalogue
if($tab[23] != ""){
$webPackaging = $entityManager->getRepository(WebCatalogue::class)->findOneByIdMulty($tab[23]);
if($webPackaging != null){
$webPackaging->addProduitWebPackaging($produit);
$entityManager->persist($produit);
$entityManager->persist($webPackaging);
}
}
if($tab[24] != ""){
$webMatiere = $entityManager->getRepository(WebCatalogue::class)->findOneByIdMulty($tab[24]);
if($webMatiere != null){
$webMatiere->addProduitWebMatiere($produit);
$entityManager->persist($produit);
$entityManager->persist($webMatiere);
}
}
if($tab[25] != ""){
$webCouleur = $entityManager->getRepository(WebCatalogue::class)->findOneByIdMulty($tab[25]);
if($webCouleur != null){
$webCouleur->addProduitWebCouleur($produit);
$entityManager->persist($produit);
$entityManager->persist($webCouleur);
}
}
//TVA
$produit->setTva($tab[51]);
//Quantite colis
$produit->setQuantite($tab[56]);
$quantiteCartonC = $tab[56];
if($tab[57] != ""){
$maisonMeres = $entityManager->getRepository(Client::class)->findBy(array("maisonMere"=>null , "regroupement"=>trim($tab[57])));
if($maisonMeres != null){
foreach($maisonMeres as $maisonMere){
if(!$maisonMere->getCatalogue()->contains($produit)){
$maisonMere->addCatalogue($produit);
$entityManager->persist($produit);
$entityManager->persist($maisonMere);
}
}
}
}
$refsFichier = [];
if($tab[41] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[41]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
if($tab[42] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[42]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
if($tab[43] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[43]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
if($tab[44] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[44]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
if($tab[45] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[45]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
if($tab[46] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[46]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
if($tab[47] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[47]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
if($tab[48] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[48]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
if($tab[49] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[49]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
if($tab[50] != ""){
$lie = $entityManager->getRepository(Produit::class)->findOneBy(array(
"referenceSage" => $tab[50]
));
if($lie != null){
$produit->addProduit($lie);
$refsFichier[] = $lie->getReferenceSage();
$entityManager->persist($produit);
$entityManager->flush();
}
}
}
foreach ($produit->getProduits() as $prd) {
if(!in_array($prd->getReferenceSage(), $refsFichier)){
$produit->removeProduit($prd);
$entityManager->flush();
}
}
$prixParColis = $this->calculPrixColis($prixVenteC, $uniteVenteC, $poidsNetC, $unitePoidsC, $quantiteCartonC);
$produit->setPrixUnitaireColisHT($prixParColis);
$produit->setActif(true);
array_push($ref_fichier, $produit->getReferenceSage());
}
$ligne++;
}
fclose($fic);
$entityManager->persist($produit);
$entityManager->flush();
$all_items = $entityManager->getRepository(Produit::class)->findAll();
foreach ($all_items as $item) {
if ( ! in_array($item->getReferenceSage(), $ref_fichier) ) {
// $entityManager->remove($item);
$item->setActif(false);
$entityManager->persist($item);
$entityManager->flush();
}
}
return new Response("Ok");
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/stocks_general", name="import_stocks_general")
*/
public function importProduitStockGeneral(): Response
{
$entityManager = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("stocks"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
$arrayFilialesSansMere = [];
$refsFichier = [];
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
$tab = array_map("utf8_encode", $tab);
if($ligne != 0){
$produit = $entityManager->getRepository(Produit::class)->findOneByReferenceSage($tab[0]);
if($produit == null){
$produit = new Produit();
$produit->setReferenceSage($tab[0]);
}
if($tab[2] == 1){
if($tab[1] != ""){
$produit->setStockGeneral($tab[1]);
}
}
if($tab[2] == 3){
$client = null;
if($produit->getClients() != null && !$produit->getClients()->isEmpty()){
$client = $produit->getClients();
$stockPerso = $entityManager->getRepository(StockPerso::class)->findOneByClientProduitForImport( $client->first()->getId(), $produit->getId());
}else{
$client = null;
$stockPerso = $entityManager->getRepository(StockPerso::class)->findOneByClientProduitForImport( $client, $produit->getId());
}
if($stockPerso == null){
$stockPerso = new StockPerso();
$stockPerso->setProduits($produit);
if($client != null){
$stockPerso->setClients($client->first());
}
}
$stockPerso->setStock($tab[1]);
if ($produit->getQuantite() != null) {
$stockPerso->setStock( ($tab[1] * 1000) / $produit->getQuantite() );
}
$entityManager->persist($stockPerso);
if($client != null){
$refsFichier[] = [$produit->getId(), $client->first()->getId()];
}
}
$entityManager->persist($produit);
$entityManager->flush();
}
$ligne++;
}
fclose($fic);
/* Pas besoin de ces 2 lignes ? */
$entityManager->persist($produit);
$entityManager->flush();
if($refsFichier != []){
$stockPersos = $entityManager->getRepository(StockPerso::class)->findAll();
foreach ($stockPersos as $sp) {
$suppr = 1;
foreach ($refsFichier as $ref) {
if($sp->getProduits()->getId() == $ref[0] && $sp->getClients()->getId() == $ref[1]){
$suppr = 0;
}
}
if($suppr){
// var_dump($sp->getId());
$entityManager->remove($sp);
$entityManager->flush();
}
}
}
return new Response("Ok");
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/medias", name="import_medias")
*/
public function importMedia(): Response
{
$entityManager = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("medias"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
// Connexion au serveur FTP
$serveur_ftp = "79.99.165.90";
$login_ftp = "setg@multypack.net";
$mdp_ftp = "9QGawg9HTF2g";
$ftp = ftp_connect($serveur_ftp, 21, 120) or die("Could not connect to $serveur_ftp");
$login = ftp_login($ftp, $login_ftp, $mdp_ftp);
ftp_pasv($ftp, true);
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
$tab = array_map("utf8_encode", $tab);
if($ligne != 0){
$produit = $entityManager->getRepository(Produit::class)->findOneByReferenceSage($tab[0]);
if($produit == null){
$produit = new Produit();
$produit->setReferenceSage($tab[0]);
}
// $tab[4] => nom de l'image du produit // ME_FICHIER
if ($tab[4] != ""){
// Si le fichier n'existe pas déjà en local
if ( ! file_exists("./uploadHfLr7KCq/produits/$tab[4]")) {
// Si le fichier existe sur le serveur
if ( ftp_size($ftp, "/IN/images/$tab[4]") != -1 ) {
ftp_get($ftp, "./uploadHfLr7KCq/produits/$tab[4]", "/IN/images/$tab[4]", FTP_BINARY);
$produit->setImage($tab[4]);
}
}
else {
$produit->setImage($tab[4]);
}
}
$entityManager->persist($produit);
$entityManager->flush();
}
$ligne++;
}
fclose($fic);
return new Response("Ok");
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/conditionnements", name="import_conditionnements")
*/
public function importConditionnements(): Response
{
$em = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("CONDITIONNEMENTS"); // Nom du dernier fichier
if (\file_exists($local_file)) {
//On reset les conditionnements de tous les produits concernés
$allProduits = $em->getRepository(Produit::class)->findAllConditionnementNotNull();
foreach ($allProduits as $key => $singleProduit) {
$singleProduit->setPrixPalette(NULL);
$singleProduit->setQuantiteColisParPalette(NULL);
$singleProduit->setIdFichierConditionnementPalette(NULL);
$em->persist($singleProduit);
$em->flush();
}
//Puis on modifie les produits concernés par le fichier uniquement
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
//NB : Si une référence est présente plusieurs fois, on ne gardera que la dernière ligne qui la mentionne dans le fichier
// → pas de gestion de plusieurs conditionnements par palette
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
$tab = array_map("utf8_encode", $tab);
if($ligne != 0){
$idFichierConditionnementPalette = $tab[0];
$ref = $tab[1];
$conditionnement = $tab[2];
$quantiteProduitsParPalette = $tab[3];
if (str_contains(strtolower($conditionnement), 'palette')) {
$produit = $em->getRepository(Produit::class)->findOneByReferenceSage($ref);
if ($produit != null) {
$quantiteParColis = $produit->getQuantite();
$quantiteColisParPalette = $quantiteProduitsParPalette / $quantiteParColis;
$prixPalette = $produit->getPrixUnitaireColisHT() * $quantiteColisParPalette;
$produit->setPrixPalette($prixPalette);
$produit->setQuantiteColisParPalette($quantiteColisParPalette);
$produit->setIdFichierConditionnementPalette($idFichierConditionnementPalette);
$em->persist($produit);
$em->flush();
}
}
}
$ligne++;
}
fclose($fic);
return new Response("Ok");
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/cate_tarif_palettes", name="import_cate_tarif_palettes")
*/
public function importCatTarifPalettesClient(): Response
{
$em = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("CONDITIONNEMENTTARIFS"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
$tab = array_map("utf8_encode", $tab);
if($ligne != 0){
$produit = $em->getRepository(Produit::class)->findOneBy( array(
"idFichierConditionnementPalette" => $tab[2],
"referenceSage" => $tab[4]
));
$client = $em->getRepository(Client::class)->findOneBy(array(
"codeCentral" => $tab[3],
"maisonMere" => null
));
// Pour qu'on puisse faire une remise il faut que produit ET client ne soient pas nuls
if ($produit != null && $client != null) {
// Pas besoin de rechercher les éventuelles remises pour le client, les remises palettes ont été remises à zéro
$type = $tab[1];
$remise = $tab[6];
$prixPaletteFichier = $tab[5];
$catTarifClient = new CategorieTarifClient();
$catTarifClient->setClient($client);
$catTarifClient->setProduit($produit);
$catTarifClient->setRemise($remise); //Toujours à 0 selon le fichier "Structure fichiers.csv" fourni par le client
$catTarifClient->setPrixSeul($prixPaletteFichier);
$catTarifClient->setType($type);
$catTarifClient->setPrix($prixPaletteFichier);
$em->persist($catTarifClient);
$em->persist($client);
$em->persist($produit);
$em->flush();
}
}
$ligne++;
}
fclose($fic);
return new Response("Ok");
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/cate_tarif", name="import_cate_tarif")
*/
public function importCatTarifClient(): Response
{
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Vider la table entière (categorie_tarif_client) et remplir de nouveau avec le fichier excel
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$em = $this->getDoctrine()->getManager();
$allCatTarifClient = $em->getRepository(CategorieTarifClient::class)->findAll();
$local_file = $this->getDernierFichier("CATTARIFAIRES"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(200);
$tab = array_map("utf8_encode", $tab);
if($ligne != 0){
$produit = $em->getRepository(Produit::class)->findOneByReferenceSage($tab[4]);
$client = $em->getRepository(Client::class)->findOneBy(array(
"codeCentral" => $tab[3],
"maisonMere" => null
));
// Pour qu'on puisse faire une remise il faut que produit ET client ne soient pas nuls
if ($produit != null && $client != null) {
// Il est possible qu'une remise soit déjà attribué à un client pour un produit
$catTarifClientExists = $em->getRepository(CategorieTarifClient::class)->findOneBy(array(
"produit" => $produit,
"client" => $client
));
$type = $tab[1];
$remise = $tab[6];
$prix_public_fichier = $tab[5];
$prix_public = $produit->getPrixUnitaireColisHT();
// Cas 1 : Aucune remise n'a été attribué au client pour ce produit
if ($catTarifClientExists == null)
{
$catTarifClient = new CategorieTarifClient();
$catTarifClient->setClient($client);
$catTarifClient->setProduit($produit);
$catTarifClient->setRemise($remise);
$catTarifClient->setPrixSeul($prix_public_fichier);
$catTarifClient->setType($type);
if ($remise != 0) {
// $catTarifClient->setPrix( $prix_public - ( $prix_public * ($remise / 100) ) );
$catTarifClient->setPrix(
$this->calculPrixColis(
( $prix_public - ( $prix_public * ($remise / 100) ) ),
// $prix_public,
// $produit->getUniteVente(),
$produit->getUniteVente()->getId(),
$produit->getPoids(),
$produit->getUnitePoids(),
$produit->getQuantite()
)
);
}
else{
$catTarifClient->setPrix(
$this->calculPrixColis(
$prix_public_fichier,
$produit->getUniteVente()->getId(),
$produit->getPoids(),
$produit->getUnitePoids(),
$produit->getQuantite()
)
);
}
$em->persist($catTarifClient);
$em->persist($client);
$em->persist($produit);
$catTarifClientExists = $catTarifClient;
}
// Cas 2 : Une remise a été attribué au client pour ce produit
else {
// Si l'ancien type est inférieur à l'actuel ( ex : ancien type : 2, nouveau type : 3 )
if ($catTarifClientExists->getType() < $type) {
$catTarifClientExists->setRemise($remise);
$catTarifClientExists->setType($type);
$catTarifClientExists->setPrixSeul($prix_public_fichier);
if ($remise != 0) {
$catTarifClient->setPrix(
$this->calculPrixColis(
( $prix_public - ( $prix_public * ($remise / 100) ) ),
// $prix_public,
$produit->getUniteVente(),
$produit->getPoids(),
$produit->getUnitePoids(),
$produit->getQuantite()
)
);
}
else{
$catTarifClient->setPrix(
$this->calculPrixColis(
$prix_public_fichier,
$produit->getUniteVente()->getId(),
$produit->getPoids(),
$produit->getUnitePoids(),
$produit->getQuantite()
)
);
}
}
$em->persist($catTarifClientExists);
}
$aGarde[]= $catTarifClientExists->getId();
$em->flush();
}
}
$ligne++;
}
fclose($fic);
foreach ($allCatTarifClient as $catTarifClient) {
if(!in_array($catTarifClient->getId(), $aGarde)){
$em->remove($catTarifClient);
$em->flush();
}
}
return new Response("Ok");
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/cat_libelle", name="import_cat_libelle")
*/
public function importCategorieLibelle(): Response
{
$entityManager = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("CARACTERISTIQUES"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$ligne = 0;
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
$produit = null;
$caracteristique = null;
if($ligne != 0){
$tab = array_map("utf8_encode", $tab); //added
if ($tab[0] != "" ){
$produit = $entityManager->getRepository(Produit::class)->findOneByReferenceSage($tab[0]);
}
if($tab[1] != ""){
$caracteristique = $entityManager->getRepository(Caracteristique::class)->findOneByIdMulty($tab[1]);
}
if ($produit != null && $caracteristique != null) {
$caract_libelle = new CaracteristiqueLibelle();
$caract_libelle->setProduit($produit);
$caract_libelle->setCaracteristique($caracteristique);
if ($tab[2] != ""){
$caract_libelle->setLibelle($tab[2]);
}
}
$entityManager->persist($caract_libelle);
$entityManager->persist($produit);
$entityManager->persist($caracteristique);
$entityManager->flush();
}
$ligne++;
}
fclose($fic);
return new Response('Ok ' . $local_file);
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/import/contacts", name="import_contacts")
*/
public function importContact(UserPasswordHasherInterface $userPasswordHasher): Response
{
$entityManager = $this->getDoctrine()->getManager();
$local_file = $this->getDernierFichier("contacts"); // Nom du dernier fichier
if (\file_exists($local_file)) {
ini_set('auto_detect_line_endings',TRUE);
$fic = fopen($local_file, "r+");
$myfile = fopen("uploadHfLr7KCq/users.txt", "a+") or die("Unable to open file!");
$ligne = 0;
// Les references SAGE des utilisateurs qui sont dans le fichier Excel
$users_fichier = [];
while($tab=fgetcsv($fic,10000,';')){
set_time_limit(20);
$user = null;
if($ligne != 0){
$tab = array_map("utf8_encode", $tab); //added
if ($tab[1] != "" && $tab[5] != "commercial@multypack.fr" ){
$client = $entityManager->getRepository(Client::class)->findOneByReferenceSage($tab[1]);
if ($client != null) {
$user = null;
$newUser = false;
if ($tab[0] != "" && $tab[5] != "") {
$username = explode("@",$tab[5]);
$username = $username[0];
$user = $entityManager->getRepository(User::class)->findOneBy( array(
"referenceSage" => $tab[0],
// "email" => $tab[5]
"email" => $tab[5]
));
if ($user == null) {
$newUser = true;
$user = new User();
$user->setReferenceSage($tab[0]);
// $email = $this->uniqueEmail($tab[5]);
$email = $tab[5];
$password = $this->randomPassword();
$usernameExist = $entityManager->getRepository(User::class)->findOneBy( array(
"username" => $username
));
if($usernameExist){
$username = uniqid($username.'.');
}
$user->setUsername($username);
// $user->setEmail($tab[5]);
$user->setEmail($email);
$user->setPassword(
$userPasswordHasher->hashPassword(
$user,
$password
)
);
$text = $email . "\n" . $password . "\n\n";
fwrite($myfile, $text);
}
if ($tab[2] != "") {
switch ($tab[2]) {
case "0" :
$user->setCivilite("autre"); // Madame, Monsieur
break;
case "1" :
$user->setCivilite("m"); // Monsieur
break;
case "2" :
$user->setCivilite("mme"); // Madame
break;
case "3" :
$user->setCivilite("mlle"); // Mademoiselle
break;
default:
$user->setCivilite("autre"); // Madame, Monsieur
break;
}
}
if ($tab[3] != "") {
$user->setNom($tab[3]);
}
if ($tab[4] != "") {
$user->setPrenom($tab[4]);
}
/*
if ($tab[5] != "") {
// On ne peut pas encore affecter le champs email pour les contacts
// => il faut que les emails soient UNIQUES
$user->setEmail($tab[5]);
}
*/
/*
if ($tab[7] != "") {
$array_nom_role = explode("-", $tab[7]);
switch ( strtolower( $array_nom_role[1] ) ) {
case 'administrateur':
$user->setRole(["ROLE_ADMIN"]);
break;
case 'utilisateur':
$user->setRole(["ROLE_USER"]);
break;
default:
$user->setRole(["ROLE_USER"]);
break;
}
}
*/
if ( $client->getMaisonMere() == null ) {
$user->setRoles(["ROLE_MAISON"]);
}
else{
$user->setRoles(["ROLE_FILIALE"]);
}
$client->addUser($user);
$clientNom = $client->getNom();
$entityManager->persist($user);
$entityManager->flush();
$entityManager->persist($client);
$entityManager->flush();
if($newUser){
$emailTemplate = (new TemplatedEmail())
->from('noreply@multypack.fr')
// ->to('tmarco@bleu-digital.fr')
->to('fdieu@bleu-digital.fr')
->subject('Nouveau compte MULTYPACK')
->htmlTemplate('mpck_emails/nouveau_compte.html.twig')
// // ->embedFromPath('images/SVG/Multypack_logo.svg', 'logo')
->context([
"emailUser" => $email,
"username" => $username,
"clientNom" => $clientNom,
"mdp" => $password,
"logo" => "images/PNG/MP_Multypack(vert).png",
"header" => "images/PNG/header_nouveau_compte.png",
])
;
$this->mailer->send($emailTemplate);
}
array_push($users_fichier, $user->getReferenceSage());
}
}
}
}
$ligne++;
}
fclose($fic);
fclose($myfile);
$all_users = $entityManager->getRepository(User::class)->findAll();
foreach ($all_users as $user) {
if ( $user->getReferenceSage() == null || in_array('ROLE_ADMIN', $user->getRoles()) || in_array('ROLE_SUPER_ADMIN', $user->getRoles()) ) {
// Si la reference SAGE est null OU que le user est un ADMIN
// do nothing
}
else{
if ( ! in_array($user->getReferenceSage(), $users_fichier) ) {
$entityManager->remove($user);
$entityManager->flush();
}
}
}
return new Response('Ok ' . $local_file);
}
return new Response('Erreur ' . $local_file . ' : fichier non trouvé.');
}
/**
* @Route("/mentions", name="mentions")
*/
public function mentions(): Response
{
$user = $this->getUser();
$client = null;
$maison_mere = null;
$infosPanier = null;
$totalPanier = null;
$quantitePanier = null;
if ($user) {
$client = $user->getClients();
$maison_mere = ($client->getMaisonMere() == null) ? $client : $client->getMaisonMere();
$infosPanier = $this->panierService->panier();
$totalPanier = $infosPanier['totalPanier'];
$quantitePanier = $infosPanier['quantitePanier'];
}
return $this->renderForm('mentions.html.twig', [
"client" => $client,
"maisoMere" => $maison_mere,
"totalPanier" => $totalPanier,
"quantitePanier" => $quantitePanier,
]);
}
/**
* @Route("/erreur", name="erreur")
*/
public function erreur(): Response
{
return $this->renderForm('bundles/TwigBundle/Exception/error.html.twig', [
// "client" => $client,
// "maisoMere" => $maison_mere,
// "totalPanier" => $infosPanier['totalPanier'],
// "quantitePanier" => $infosPanier['quantitePanier'],
]);
}
/**
* @Route("/erreur404", name="erreur404")
*/
public function erreur404(): Response
{
return $this->renderForm('bundles/TwigBundle/Exception/error404.html.twig', [
// "client" => $client,
// "maisoMere" => $maison_mere,
// "totalPanier" => $infosPanier['totalPanier'],
// "quantitePanier" => $infosPanier['quantitePanier'],
]);
}
/**
* @Route("/cgv", name="cgv")
*/
public function cgv(): Response
{
$user = $this->getUser();
$client = $user->getClients();
$maison_mere = ($client->getMaisonMere() == null) ? $client : $client->getMaisonMere();
return $this->renderForm('cgv.html.twig', [
"client" => $client,
"maisoMere" => $maison_mere
]);
}
/**
* @Route("/nddEz2JG7dAseggeuaCHmXMb", name="import_all_scripts", methods={"GET", "POST"})
*/
public function importAllScripts(Request $request, UserPasswordHasherInterface $userPasswordHasher): Response
{
if(!$request->query->get('p3qWKjZD8HW2hfpV') || $request->query->get('p3qWKjZD8HW2hfpV') == "null"){
die();
}
if($request->query->get('p3qWKjZD8HW2hfpV') != "66KEAmE4LrXegMU5"){
die();
}
ini_set('memory_limit', '2G');
// $this->importClients();
// $this->importAdresses();
// $this->importLibelles();
// $this->importProduit();
// $this->importProduitStockGeneral();
// $this->importMedia();
// $this->importConditionnements();
$this->importCatTarifClient();
// $this->importCatTarifPalettesClient();
// $this->importCategorieLibelle();
// $this->importContact($userPasswordHasher);
if ($this->isGranted('ROLE_SUPER_ADMIN')) {
return $this->redirectToRoute("maisons_mere_index");
}
return new Response();
}
function calculPrixColis($prixVente, $uniteVente, $poidsNet, $unitePoids, $quantiteCarton){
$prixParColis = null;
/* switch ($uniteVente) {
case "1":
// Le mille
$coefMultiplicateur = $quantiteCarton/1000;
$prixParColis=$prixVente * $coefMultiplicateur;
break;
case "2":
// Pièce
$prixParColis = $prixVente * $quantiteCarton;
break;
case "3":
// Kilos
$prixParColis = $prixVente * $quantiteCarton;
break;
case "4":
// Rame, je suppose que c'est comme "Pièce"
$prixParColis = $prixVente * $quantiteCarton;
break;
case "5":
// Rame, je suppose que c'est comme "Pièce"
$prixParColis = $prixVente * $quantiteCarton;
break;
default:
# code...
break;
} */
$prixParColis = $prixVente * $quantiteCarton;
if($uniteVente == 1) { // Le mille
$coefMultiplicateur = $quantiteCarton/1000;
$prixParColis=$prixVente * $coefMultiplicateur;
}
return $prixParColis;
}
/**
* It connects to an FTP server, checks if a file exists.
* If the file exists on the server, download it. If it doesn't, download the most recent file to a local directory.
*
* @param type_fichier The type of file you want to download.
*
* @return The path to the file that was just copied locally.
*/
function getDernierFichier($type_fichier){
$type = strtoupper($type_fichier);
if($_ENV['APP_ENV'] == "dev") {
//On récupère les derniers fichiers en local dans csv/IN/
$jourAvant = 0;
$nom_fichier_csv = "csv/IN/EMULTYPACK-" . $type . "_" . date('Ymd',strtotime("-$jourAvant days")) . ".csv";
while(! \file_exists($nom_fichier_csv)) {
set_time_limit(20);
$jourAvant++;
$nom_fichier_csv = "csv/IN/EMULTYPACK-" . $type . "_" . date('Ymd',strtotime("-$jourAvant days")) . ".csv";
}
return $nom_fichier_csv;
}
else {
// Connexion au serveur FTP
$serveur_ftp = "79.99.165.90";
$login_ftp = "setg@multypack.net";
$mdp_ftp = "9QGawg9HTF2g";
$nom_fichier_csv = "EMULTYPACK-" . $type . "_" . date("Ymd") . ".csv";
$jourAvant = 1;
// $isFichierTrouve = false;
// ftp_connect(string $hostname, int $port = 21, int $timeout = 90) // Default
$ftp = ftp_connect($serveur_ftp, 21, 120) or die("Could not connect to $serveur_ftp");
$login = ftp_login($ftp, $login_ftp, $mdp_ftp);
ftp_pasv($ftp, true);
$server_file = "/DEV/IN/" . $nom_fichier_csv;
$file_size = ftp_size($ftp, $server_file); // On vérifie si le fichier existe sur le serveur FTP
if ($file_size == -1) { // Si le fichier d'aujourd'hui n'existe pas => on prend le dernier sur le serveur
// Tant que le fichier n'est pas trouvé
while( $file_size == -1 ) {
set_time_limit(20);
// On cherche le fichier d'un jour avant
$nom_fichier_csv = "EMULTYPACK-" . $type . "_" . date('Ymd',strtotime("-$jourAvant days")) . ".csv";
// On vérifie que le fichier existe sur le serveur
$server_file = "/DEV/IN/" . $nom_fichier_csv;
$file_size = ftp_size($ftp, $server_file);
// if ($file_size == -1) {
// // Si le fichier d'un jour avant n'existe pas, on recule d'un jour
// $jourAvant = $jourAvant + 1;
// }
// else{
// // Sinon, on sort de la boucle
// $isFichierTrouve = true;
// }
$jourAvant = $jourAvant + 1;
}
}
$local_file = "./csv/IN/" . $nom_fichier_csv;
$server_file = "/DEV/IN/" . $nom_fichier_csv;
// if (ftp_get($ftp, $local_file, $server_file, FTP_ASCII)) {
// echo "Successfully written to $local_file.";
// }
// else {
// echo "Error downloading $local_file.";
// }
ftp_get($ftp, $local_file, $server_file, FTP_ASCII);
// close connection
ftp_close($ftp);
}
return $local_file; // On retourne le chemin du fichier qu'on vient de copier en local
}
function uniqueEmail($email) {
$array_email = explode("@", $email);
$uniq = uniqid();
$unique_email = $array_email[0] . $uniq . '@' . $array_email[1];
return $unique_email;
}
function randomPassword(){
$alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
$pass = array();
$alphaLength = strlen($alphabet) - 1; // taille de la chaine de caracteres
for ($i = 0; $i < 12; $i++) { // 12 lettres
$n = rand(0, $alphaLength); // n -> allant de 0 à la fin de la chaine
$pass[] = $alphabet[$n];
}
return implode($pass); // turn the array into a string
}
}