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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
| <?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
// Connexion a la base de données ---------------------------------------------------------------------------------------------
$bdd = new PDO('mysql:host=127.0.0.1;dbname=db', 'user', 'password');
// Création des tables pour l'import ------------------------------------------------------------------------------------------
$bdd->exec("DROP TABLE IF EXISTS `stock_im`");
$bdd->exec("DROP TABLE IF EXISTS `stock_etc`");
$bdd->exec("DROP TABLE IF EXISTS `stock`");
$bdd->exec('CREATE TABLE IF NOT EXISTS `stock_im` (
`sku_im` varchar(18) NOT NULL,
`reference_im` varchar(32) NOT NULL,
`dispo_im` int(11) NOT NULL,
`commended_im` int(11) NOT NULL,
`eta_im` varchar(18) NOT NULL)') ;
$bdd->exec('CREATE TABLE IF NOT EXISTS `stock_etc` (
`sku_etc` varchar(18) NOT NULL,
`dispo_etc` int(11) NOT NULL,
`commended_etc` int(11) NOT NULL,
`reference_etc` varchar(32) NOT NULL,
`eta_etc` varchar(32) NOT NULL,
`eta_etcs` varchar(32) NOT NULL)') ;
$bdd->exec('CREATE TABLE IF NOT EXISTS `stock` (
`reference` varchar(18) NOT NULL,
`dispo_im` int(11) NOT NULL,
`dispo_etc` int(11) NOT NULL,
`dispo` int(11) NOT NULL)') ;
// Téléchargement du fichier depuis le FTP du fournisseur 1 ---------------------------------------------------------------------
$source = "/fusion/FR/avail/stockim.ZIP";
$target = fopen("stockim.ZIP", "w");
$conn = ftp_connect("ftp1") or die("Could not connect");
ftp_login($conn,"user","pass");
ftp_fget($conn,$target,$source,FTP_BINARY);
$zip = new ZipArchive;
if ($zip->open('stockim.ZIP') === TRUE) {
$zip->extractTo('./');
$zip->close();
} else {
exit;
}
// Téléchargement du fichier depuis le FTP du fournisseur 2 ---------------------------------------------------------------------
$source1 = "/stocksETC.txt";
$target1 = fopen("stocksETC.txt", "w");
$conn1 = ftp_connect("ftp2") or die("Could not connect");
ftp_login($conn1,"user","pass");
ftp_fget($conn1,$target1,$source1,FTP_BINARY,0);
// Vérification du fichier 1 ---------------------------------------------------------------------------------------------------
$csvfile = "stockim.TXT";
if(!file_exists($csvfile)) {
exit;
}
$file = fopen($csvfile,"r");
if(!$file) {
exit;
}
$size = filesize($csvfile);
if(!$size) {
exit;
}
fclose($file);
// Vérification du fichier 2 --------------------------------------------------------------------------------------------------
$csvfile1 = "stocksETC.txt";
if(!file_exists($csvfile1)) {
exit;
}
$file1 = fopen($csvfile1,"r");
if(!$file1) {
exit;
}
$size1 = filesize($csvfile1);
if(!$size1) {
exit;
}
fclose($file1);
// Import du 1er fichier dans la table stock_im ----------------------------------------------------------------------------------
$bdd->exec("LOAD DATA LOCAL INFILE 'stockim.TXT' INTO TABLE stock_im FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'");
// Import du 2eme fichier dans la table stock_etc --------------------------------------------------------------------------------
$bdd->exec("LOAD DATA LOCAL INFILE 'stocksETC.txt' INTO TABLE stock_etc FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n'");
// Rendre le champs "reference" de la table stock unique -------------------------------------------------------------------------
$bdd->exec('ALTER IGNORE TABLE stock ADD UNIQUE INDEX(reference);');
// Lecture et insertion des valeurs reference_im et dispo_im depuis la table stock_im dans stock ------------------------------------
$stock_im = $bdd->query('SELECT * FROM stock_im');
while ($s_im = $stock_im->fetch())
{
$req_im = $bdd->prepare('INSERT INTO stock(reference,dispo_im) VALUES(:reference,:dispo_im)');
$req_im->execute(array('reference' => $s_im['reference_im'],
'dispo_im' => $s_im['dispo_im']));
}
// Lecture et insertion des valeurs reference_etc et dispo_etc depuis la table stock_etc dans stock avec mise à jour ----------------
$stock_etc = $bdd->query('SELECT * FROM stock_etc');
while ($s_etc = $stock_etc->fetch())
{
$req_etc = $bdd->prepare('INSERT INTO stock(reference,dispo_etc) VALUES(:reference,:dispo_etc) ON DUPLICATE KEY UPDATE dispo_etc = :dispo_etc');
$req_etc->execute(array('reference' => $s_etc['reference_etc'],
'dispo_etc' => $s_etc['dispo_etc']));
}
// Addition des stocks des deux fournisseurs ----------------------------------------------------------------------------------------
$bdd->exec("UPDATE stock SET dispo = dispo_im + dispo_etc");
// Synchronisation du stock de la boutique avec celui des fournisseurs --------------------------------------------------------------
$bdd->exec('UPDATE product,stock SET product.quantity = stock.dispo WHERE product.reference = stock.reference');
//---------------------------------------------------------------------------------------------
$stock_im->closeCursor();
$stock_etc->closeCursor();
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?> |
Partager